NanoTDB: Database chuỗi thời gian siêu nhẹ viết bằng Golang cho thiết bị IoT

Phần mềm15 tháng 5, 2026·2 phút đọc

NanoTDB là một cơ sở dữ liệu chuỗi thời gian (time-series database) nhỏ gọn, được viết bằng ngôn ngữ Golang và thiết kế để chạy trên các thiết bị có tài nguyên hạn chế như Raspberry Pi hoặc gateway IoT. Hệ thống không có phụ thuộc bên ngoài, lưu trữ dữ liệu vào các file đơn giản và hỗ trợ tính năng ghi trước (WAL) cùng nén dữ liệu hiệu quả.

NanoTDB: Database chuỗi thời gian siêu nhẹ viết bằng Golang cho thiết bị IoT

NanoTDB là một dự án cơ sở dữ liệu chuỗi thời gian (time-series database) mới nổi, được viết hoàn toàn bằng ngôn ngữ lập trình Golang. Điểm đặc biệt của NanoTDB là thiết kế "nhúng" (embedded) và tối ưu hóa cho các thiết bị phần cứng có tài nguyên hạn chế như Raspberry Pi, các nút biên (edge nodes) hoặc cổng IoT.

Kiến trúc và Hoạt động

Hệ thống được xây dựng xung quanh khái niệm "Engine" làm điểm nhập duy nhất, quản lý nhiều cơ sở dữ liệu được đặt tên. Mỗi cơ sở dữ liệu bao gồm ba lớp lưu trữ chính:

  • WAL (Write-Ahead Log): Đảm bảo an toàn dữ liệu bằng cách ghi lại mọi mẫu dữ liệu trước khi chúng vào bộ nhớ trang.
  • Catalog (catalog.json): Ánh xạ tên metric sang ID nhỏ gọn và kiểu dữ liệu.
  • Data files (.dat): Chứa các trang dữ liệu đã nén bất biến (immutable), được xả từ bộ nhớ khi trang đầy.

NanoTDB sử dụng giao thức dòng (line protocol) đơn giản để nhập liệu: DB/metric.name value [ts]. Điều này giúp việc tích hợp vào các hệ thống thu thập dữ liệu cảm biến trở nên dễ dàng.

Hiệu suất và Tối ưu hóa

Một trong những điểm mạnh của NanoTDB là khả năng nén dữ liệu. Dữ liệu trên đĩa được lưu trữ dưới dạng các khung trang (page frames) được nén bằng thuật toán S2, thường đạt tỷ lệ nén 3–4 lần trên dữ liệu cảm biến thực tế.

Định dạng WAL v2 rất nhỏ gọn, chỉ tốn khoảng 11 byte cho một bản ghi nóng (hot path), giúp giảm thiểu chi phí I/O. Timestamps phải tăng đơn điệu (monotonically non-decreasing) để đảm bảo tính toàn vẹn của dữ liệu.

Tính năng và Công cụ

NanoTDB cung cấp hai công cụ chính:

  1. nanotdb (Server): Chạy một máy chủ HTTP nhỏ, tương thích với định dạng truy vấn của VictoriaMetrics (/api/v1/query, /api/v1/import/prometheus).
  2. nanocli (CLI): Công cụ dòng lệnh để thao tác trực tiếp trên thư mục dữ liệu mà không cần máy chủ đang chạy. Nó hỗ trợ kiểm tra, nhập, xuất và truy vấn dữ liệu.

Hệ thống cũng hỗ trợ cấu hình độ bền (durability profiles) khác nhau như strict, balanced, hoặc throughput để cân bằng giữa hiệu suất ghi và an toàn dữ liệu. Ngoài ra, tính năng "Rollups" cho phép tổng hợp dữ liệu tự động (ví dụ: từ dữ liệu thô sang dữ liệu trung bình theo giờ) để lưu trữ lâu dài.

Với thiết kế không phụ thuộc vào thư viện bên ngoài tại thời gian chạy và lưu trữ dữ liệu trong các file văn bản thuần túy, NanoTDB là một lựa chọn hấp dẫn cho các nhà phát triển đang tìm kiếm giải pháp lưu trữ time-series đơn giản nhưng hiệu quả cho môi trường IoT.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗