NanoTDB: Database chuỗi thời gian siêu nhẹ viết bằng Golang cho thiết bị IoT
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 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:
- 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). - 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.
Bài viết liên quan

Phần mềm
Intel và AMD vá tổng cộng 70 lỗ hổng bảo mật trong Patch Tuesday tháng 5
13 tháng 5, 2026

Phần mềm
Plugin Checkmarx Jenkins bị xâm phạm trong cuộc tấn công chuỗi cung ứng
11 tháng 5, 2026

Công nghệ
Substrate (YC S24) tuyển dụng Technical Success Manager cho nền tảng AI chuyên xử lý thanh toán y tế
13 tháng 5, 2026
