1. 工业时序数据全景认知
工业时序数据库的选型与容量规划,第一步不是比较产品参数,而是把要存的数据本身看清楚。工业现场的数据源种类多、协议杂、节奏差异极大:传感器以毫秒级或秒级持续输出模拟量,PLC 以扫描周期刷新开关量与寄存器,SCADA 汇聚成百上千个测点并附带质量码,DCS 则在过程控制层产生高频回路数据与报警事件。这些数据在写入数据库之前,已经带着各自的采样频率、标签维度、乱序程度和缺失模式。选型时如果只盯着“每秒写入多少点”,往往会忽略标签基数、乱序比例和缺失语义,导致后期查询变慢、存储膨胀或压缩失效。
一、四类典型数据源的特征差异
工业场景中,传感器、PLC、SCADA、DCS 并不是同一种“数据生产者”。传感器通常直接对应物理量,如温度、压力、振动、流量,采样频率从 1 Hz 到 10 kHz 不等,单点数据量小但总量大;PLC 的扫描周期常见为 1~50 ms,产生的是设备状态、联锁信号、计数器值,特点是标签数量有限但变化频繁;SCADA 作为监控层,往往以 1 s 或 5 s 周期采集数千到数万测点,并附带时间戳、质量码和工程单位;DCS 则更接近过程控制核心,回路数据可能以 100 ms~1 s 周期产生,同时伴随报警、操作记录和批次事件。四类数据源在“频率—标签数—值类型—时间精度”四个维度上的分布,直接决定了数据库需要支持怎样的写入模型和压缩策略。
二、采样频率与数据量级:先算清楚再选型
采样频率决定单位时间内的数据点数,而数据量级决定存储和查询压力。以一个中等规模工厂为例:假设有 2000 个传感器测点,平均采样周期 1 s,每个点写入一条记录,则每秒写入 2000 点,每天约 1.728 亿点。若其中 200 个振动测点以 10 kHz 采样,则这 200 个点每秒就产生 200 万点,一天约 1728 亿点。两者相差三个数量级。选型时如果只按“平均频率”估算,就会严重低估高频通道的写入压力。容量规划的第一步,是把测点按频率分档,分别计算每秒点数、每天点数和压缩后存储量,再汇总成总写入吞吐和总存储需求。
实际计算时还要考虑值类型和压缩。布尔量、整型、浮点、字符串的存储开销不同;工业时序数据库通常对浮点采用 Gorilla 类压缩,对布尔和整型采用游程或位图压缩。示例中,若 2000 个 1 s 测点中 70% 为浮点、30% 为布尔,浮点压缩后约 1.5~2 字节/点,布尔压缩后约 0.1~0.3 字节/点,则每天压缩后约 2.5~3.5 亿字节,即 250~350 MB。而 200 个 10 kHz 振动点即使压缩后按 2 字节/点计算,每天也约 34.5 GB。高频通道才是容量规划的真正大头。
三、标签维度:从“点”到“标签集”的建模差异
工业数据不是孤立的数值,每个测点都带有一组标签:设备编号、测点名称、工段、产线、单位、数据类型、质量码等。标签维度决定了数据库的索引结构和查询模式。传统关系库用“一行一测点”建模,标签作为列;时序数据库则普遍采用“标签集 + 时间戳 + 值”的模型,标签集作为索引键。标签基数(不同标签组合的数量)是选型的关键参数:基数低时,索引紧凑、查询快;基数高时,索引膨胀、写入放大。例如,一个 SCADA 系统有 5 万台设备,每台设备 20 个测点,标签组合可能达到百万级。此时如果数据库不支持高基数标签索引,查询“某产线某设备某测点最近一小时数据”就会退化为全表扫描。
四、乱序与缺失:工业现场的真实时间语义
工业数据很少是理想有序的。网络抖动、网关缓存、设备时钟漂移、断点续传都会造成乱序:一条 10:00:05 的数据可能在 10:00:12 才到达。乱序比例从千分之一到百分之几不等,取决于采集链路。数据库如果只支持“追加写”,乱序数据要么被丢弃,要么触发大量合并操作。选型时要关注乱序容忍窗口、是否支持按时间分区自动合并、以及乱序写入对查询一致性的影响。
缺失同样普遍。设备停机、传感器故障、通信中断都会造成数据空洞。缺失模式分为三类:完全无记录、记录存在但值为 NULL、记录存在但质量码标记为坏值。三者在查询和统计中的语义完全不同。容量规划时,不能简单按“满采样”估算,而要根据历史可用率打折。例如,某产线历史可用率 92%,则实际存储量约为满采样的 92%,但查询时仍需处理空洞,因此分区和索引设计要能快速跳过无数据区间。
五、这些特征如何影响选型与容量规划
把上述特征串起来看:高频传感器要求高写入吞吐和高效压缩;PLC 要求低延迟写入和布尔/整型优化;SCADA 要求高基数标签索引和乱序容忍;DCS 要求强时间一致性和事件关联查询。容量规划则要分别计算各数据源的每秒点数、每天原始字节、压缩后字节和保留周期,再叠加副本、索引和 WAL 开销。一个常见的经验比例是:压缩后存储约占原始存储的 10%~20%,索引和元数据约占 5%~15%,副本按实际配置翻倍。只有把这些参数落到具体数字上,选型才不是拍脑袋,容量规划才经得起上线后的真实流量检验。