时序数据有什么特征
物联网数据天然带时间戳:传感器读数、设备状态、GPS 坐标,每条记录都是「时间 + 测点 + 数值」。这类数据只追加、极少更新、按时间查询,用关系型数据库存会既浪费又变慢。
时序数据库为这种模式优化:列式存储、高压缩率、时间分区、降采样聚合。一台设备一天上千条记录,十万台设备就是千万级写入,选对存储是第一步。
时序数据的特点决定了它的存储方式:追加为主,按时间聚合。
- 追加几乎不更新。。
- 时间查询按窗口。。
- 高频批量写入。。
选型:TDengine 与 InfluxDB
TDengine 是国产开源时序库,针对物联网场景做了超级表与标签分离,写入吞吐高、自带降采样;InfluxDB 生态成熟、查询语言友好,适合中小规模快速起步。
选型维度:写入吞吐、查询延迟、集群能力、运维成本、与现有技术栈的契合度。数据量百万级以下两者都轻松,千万级以上优先看 TDengine 或云托管的时序服务。
数据建模与写入
建模核心是「测点表 + 标签表」:设备元信息(位置、型号、固件版本)放标签,随时间变化的读数放测点。查询按标签过滤设备,按时间取窗口数据。
-- TDengine 建表:超级表 + 子表
CREATE STABLE meters (ts TIMESTAMP, val FLOAT)
TAGS (device_id NCHAR(32), site NCHAR(32));
CREATE TABLE meter_001
USING meters TAGS ('d001', '工厂A');写入用批量插入,一次带多条记录;数据通过消息队列进入,保证顺序与背压。高频测点按需降频,原始数据与聚合数据分层存储。
压缩与分区策略
时序库的压缩率通常能达到十几倍:相同测点数值变化小、时间戳规律性强。分区按天或月切分,过期数据直接删分区,不用逐行清理。
保留策略分级:原始数据保留三十天,分钟级聚合保留一年,小时级聚合永久保存。成本与可用性平衡的关键就在保留策略设计。
查询与分析
典型查询:某设备最近一小时温度曲线、某站点设备平均电量、异常波动检测。时序库原生支持时间窗口聚合,查询语句简洁。
-- 最近一小时每五分钟平均温度
SELECT AVG(val) FROM meter_001
WHERE ts >= NOW - 1h
INTERVAL(5m);聚合结果直接喂给可视化看板与告警引擎,趋势图、热力图、异常标注都在查询层完成。
与消息中间件集成
设备数据不直接写库:先到 MQTT Broker,经规则引擎转发到消息队列,再由写入服务批量落库。这条链路解耦了设备、存储与业务,任何一环抖动都能缓冲。
写入服务要处理乱序与重复:消息里带时间戳与序号,落库前去重;按设备哈希分片写入,保证单设备数据有序。失败消息进重试队列,避免数据丢失。
小结与延伸阅读
时序数据库是物联网数据的地基:选型看规模、建模分标签与测点、写入走队列、查询靠聚合。从一天百万条数据开始就能体会它与关系库的差别。把存储层做扎实,后面的可视化、告警、AI 分析才有可靠的数据源。
- 数据可视化读《物联网数据分析与可视化实战》。
- 数据上云读《传感器数据上云实战》。
- 设备影子读《设备影子实战》。