TSO DossierTimescaleOps Hồ Sơ Định Cỡ Chuỗi Thời Gian Cảm Biến IoT & Hypertable PostgreSQL
English Dossier (EN)
TS-03 // QUESTDB-ILP // PHÂN VÙNG CỘT SIMD • ASOF JOIN & GIAO THỨC ILP

Hướng Dẫn Định Cỡ QuestDB Giao Thức ILP Cho Luồng Ghi Tốc Độ Cao

Hồ sơ TimescaleOps hướng dẫn định cỡ phân vùng cột QuestDB chuẩn SIMD, cấu hình mmap RAM, nén ZFS zstd-3 và truy vấn ASOF JOIN.

Khi luồng dữ liệu thuần ghi nối tiếp (append-only) vượt ngưỡng 150.000 sự kiện/giây trên một máy đơn lẻ và cần phép nối thời gian ASOF JOIN mà không dùng khóa ngoại quan hệ, kiến trúc phân vùng cột mmap của QuestDB kết hợp nén ZFS là lựa chọn chuyên biệt.

Ma Trận Định Cỡ Phần Cứng Tất Định Trên TimescaleOps: TS-03 // QUESTDB-ILP
Quy Mô Luồng Mẫu Chu Kỳ Chunk / Phân Vùng RAM DDR5 Khuyến Nghị Dung Lượng Ổ Đĩa Ước Tính Cấu Hình Hạ Tầng Tham Chiếu
25K events/s ILP PARTITION BY DAY 16 GB DDR5 384 GB Local NVMe Vultr HF 16GB
150K events/s ILP PARTITION BY DAY / HOUR 32–64 GB DDR5 768 GB Local NVMe Vultr HF 32GB / UltaHost VDS 64GB
500K events/s Firehose PARTITION BY HOUR 128 GB DDR5 4–10 TB ZFS LZ4/ZSTD InterServer Bare-Metal Ryzen 128GB
Multi-Year Cold Replay PARTITION BY DAY + ZFS 64 GB DDR5 12 TB ZFS Pool InterServer Price-Lock Storage
Các mốc dung lượng tính theo phương trình tất định của TimescaleOps; biểu phí công khai đối chiếu ngày 2026-11-12 từ trang thanh toán chính thức của hãng (`https://www.hostinger.com/vps-hosting`, `https://www.vultr.com/pricing/`, `https://ultahost.com/vds-hosting`, `https://www.interserver.net/vps/`, `https://chemicloud.com/wordpress-hosting`) — giá khuyến mãi và gia hạn có thể thay đổi.
QuestDB SQL DDL — Designated Timestamp Partitioning, SYMBOL Capacity & ASOF JOIN
-- Create partitioned columnar table with explicit SYMBOL dictionary capacity
CREATE TABLE l1_quotes (
  ts TIMESTAMP,
  venue SYMBOL CAPACITY 32 CACHE,
  pair SYMBOL CAPACITY 2048 CACHE INDEX,
  bid DOUBLE,
  ask DOUBLE,
  bid_size DOUBLE,
  ask_size DOUBLE
) TIMESTAMP(ts) PARTITION BY DAY WAL DEDUP UPSERT KEYS(ts, venue, pair);

-- Align each event against the most recent prevailing reference quote via ASOF JOIN
SELECT t.ts, t.pair, t.price, q.bid, q.ask, (q.ask - q.bid) AS spread
FROM trades t ASOF JOIN l1_quotes q ON (venue, pair);

1. Phân Bổ Đúng JVM Heap Và Bộ Đệm Mmap Của Nhân Linux Cho QuestDB

Theo tài liệu kiến trúc bộ nhớ của QuestDB, các cột dữ liệu được đọc ghi ngoài vùng nhớ Java qua cơ chế mmap. Chỉ nên giữ JVM -Xmx khoảng 4 GB – 8 GB và dành trên 75% RAM DDR5 cho Linux Page Cache giữ các phân vùng đang mở.

2. Kết Hợp Phân Vùng QuestDB Mã Nguồn Mở Với Nén ZFS zstd-3

QuestDB mã nguồn mở ghi các tệp cột nhị phân theo từng thư mục ngày/giờ. Đặt thư mục dữ liệu trên phân vùng OpenZFS bật compression=zstd-3 và recordsize=128K giúp tiết kiệm đáng kể dung lượng ổ cứng.

3. Khai Báo Chuẩn QuestDB SYMBOL CAPACITY Tránh Dựng Lại Bảng Băm

Chỉ dùng kiểu SYMBOL cho các trường hữu hạn phần tử (mã trạm, loại cảm biến, tên sàn) và khai báo trước tham số CAPACITY cao hơn số lượng khóa thực tế.

Câu Hỏi Kỹ Thuật Về TS-03 // QUESTDB-ILP Trên TimescaleOps

Khi nào nên chọn QuestDB thay vì hypertable của TimescaleDB?

Chọn QuestDB khi luồng dữ liệu thuần ghi nối tiếp tốc độ rất cao và cần ASOF JOIN mà không cần khóa ngoại quan hệ ACID, PostGIS hay cập nhật dòng phức tạp của PostgreSQL.

QuestDB có tự lọc trùng lặp khi bộ thu thập kết nối lại và gửi trùng mẫu không?

Có. Bảng chuẩn WAL của QuestDB hỗ trợ từ khóa DEDUP UPSERT KEYS(ts, symbol) giúp loại bỏ bản ghi trùng ngay trong đường ống ghi.

Cấu hình hệ tệp NVMe và ZFS nào phù hợp cho QuestDB và TimescaleDB trên TimescaleOps?

Dùng XFS/ext4 gắn cờ noatime trên ổ Local NVMe đơn lẻ, hoặc cấu hình ZFS ashift=12, recordsize=128K, compression=zstd-3 cho kho lưu trữ nhiều Terabyte.