TSO DossierTimescaleOps Hồ Sơ Định Cỡ Chuỗi Thời Gian Cảm Biến IoT & Hypertable PostgreSQL
English Dossier (EN)
TS-04 // EMQX-IOT // GOM LÔ MQTT QOS 1 • BẢNG CẢM BIẾN HYPERTABLE RỘNG VỪA

Kiến Trúc IoT Công Nghiệp: Định Cỡ Cụm EMQX MQTT + Hypertable TimescaleDB

Hồ sơ TimescaleOps tính chuẩn vCPU, RAM DDR5, giới hạn socket Linux và bộ đệm gom lô cho 10.000 đến 250.000 cảm biến MQTT ghi vào TimescaleDB.

Mở kết nối PostgreSQL riêng cho từng gói tin MQTT từ 50.000 bộ PLC nhà máy sẽ làm cạn kiệt kết nối ngay lập tức. Kết hợp cơ chế gom lô của EMQX với bảng hypertable dạng rộng vừa giúp chuyển hàng nghìn bản tin lẻ thành các lượt ghi tuần tự nhẹ nhàng trên một máy chủ NVMe.

Ma Trận Định Cỡ Phần Cứng Tất Định Trên TimescaleOps: TS-04 // EMQX-IOT
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
2,500 Devices • 1K msg/s 7d 8 GB DDR5 100 GB Gen4 NVMe Hostinger KVM 2 ($5.99/tháng)
25,000 Devices • 10K msg/s 1d 16 GB DDR5 400 GB Gen4 NVMe Hostinger KVM 8 / UltaHost VDS
100,000 Devices • 50K msg/s 6h 32 GB DDR5 2 TB NVMe / ZFS InterServer Ryzen Storage
250,000+ Fleet • 150K msg/s 6h / 1h 64 GB DDR5 6 TB ZFS Vault UltaHost VDS 64GB + InterServer
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.
sysctl.conf + PostgreSQL DDL — Linux 250K MQTT Socket Tuning & Medium-Wide Sensor Hypertable
# /etc/sysctl.d/99-emqx-timescale.conf
fs.file-max = 2097152
net.core.somaxconn = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1

-- Medium-wide IoT telemetry hypertable (10 sensor readings per tuple)
CREATE TABLE iot_sensor_telemetry (
  ts TIMESTAMPTZ NOT NULL,
  site_id SMALLINT NOT NULL,
  device_id INTEGER NOT NULL,
  temp_c REAL,
  vibration_rms REAL,
  voltage_v REAL,
  current_a REAL,
  humidity_pct REAL,
  status_code SMALLINT
);
SELECT create_hypertable('iot_sensor_telemetry', by_range('ts', INTERVAL '1 day'));

1. Vì Sao Bảng Hypertable Rộng Vừa Tiết Kiệm Hơn 75% Đĩa So Với Bảng EAV Hẹp?

Trong PostgreSQL 16, mỗi dòng dữ liệu đều gánh 23 byte tiêu đề HeapTupleHeaderData kèm khóa thời gian và mã thiết bị. Nếu tách 10 thông số cảm biến thành 10 dòng hẹp riêng lẻ, phần tiêu đề lặp lại 10 lần gây lãng phí lớn. Gom 10 cột REAL (4 byte) vào chung một dòng rộng 80 byte giúp tiết kiệm hơn 75% dung lượng heap và chỉ mục RAM.

2. Gom Lô Từ EMQX Vào TimescaleDB Theo Khối 5.000 Dòng Hoặc 500ms

Thiết lập cầu nối từ EMQX (hoặc Telegraf/Vector) gom đủ 5.000 bản ghi hoặc mỗi 500ms mới ghi xuống TimescaleDB một lần, chuyển 10.000 gói tin rời rạc thành 2 giao dịch WAL tuần tự mỗi giây.

3. Giữ Cửa Sổ Nóng TimescaleDB 7 Ngày Đón Dữ Liệu Bù Khi Trạm 4G Mất Sóng

Các bộ thu thập tại tàu biển, trang trại hay hầm mỏ thường lưu tạm 48–96 giờ dữ liệu vào bộ nhớ cục bộ khi mất sóng rồi gửi bù sau. Đặt cửa sổ chưa nén 7 ngày giúp dữ liệu bù ghi thẳng vào chunk nóng.

Câu Hỏi Kỹ Thuật Về TS-04 // EMQX-IOT Trên TimescaleOps

Có thể cài chung EMQX và TimescaleDB trên cùng một VPS 16 GB RAM không?

Hoàn toàn khả thi ở quy mô dưới ~15.000 bản tin/giây khi đã bật gom lô. Hãy giới hạn 2 nhân vCPU cho EMQX trong Docker và dành phần nhân cùng RAM còn lại cho PostgreSQL.

Bảng hypertable cảm biến IoT nên dùng kiểu REAL (4 byte) hay DOUBLE PRECISION (8 byte)?

Nên dùng REAL (float4) cho nhiệt độ, độ ẩm, áp suất, điện áp; chỉ dùng DOUBLE PRECISION (float8) cho đồng hồ điện lũy kế hoặc tọa độ GPS cần độ chính xác cao.

Nếu cảm biến IoT gửi bù dữ liệu rơi vào chunk TimescaleDB đã nén thì xử lý thế nào?

Từ TimescaleDB 2.11+, hệ thống cho phép chèn dữ liệu mới vào chunk đã nén thông qua vùng đệm tạm và tự gộp nền, nhưng giữ cửa sổ nóng 7 ngày vẫn tối ưu I/O ổ đĩa nhất.