3. 制造数据流批实时一体存储选型

制造数据流批实时一体架构里,存储选型不是“选一个最强的”,而是“让不同存储承担它最擅长的角色”。设备侧每秒产生的高频测点、产线事件、质量判定结果、批次工单、图像与日志,在写入频率、查询模式、保留周期、一致性要求上差异极大。把全部数据塞进一个系统,通常会在写入吞吐、查询延迟或成本上出现明显短板。因此本节先建立三类核心存储的定位,再给出面向制造场景的组合架构与选型判断方法。

三类存储的本质差异

时序数据库(TSDB)面向带时间戳的数值型测点,典型对象是温度、压力、转速、电流、振动、能耗。它的数据模型是“设备/测点标签 + 时间戳 + 数值”,写入路径为追加写,按时间分区与列式压缩,擅长时间范围聚合、降采样、滑动窗口和最新值查询。制造场景中,一条产线 200 个测点、1 Hz 采样,单线日增约 1728 万点;若压缩后每点 2~4 字节,日增约 35~70 MB,保留 1 年约 13~25 GB,属于可控量级。TSDB 的短板是:不适合存大文本、图像、复杂嵌套结构,也不擅长跨设备任意维度的关联分析。

数据湖面向海量、多样、低成本长期留存的数据,典型对象是原始报文、图像、音频、日志、批次档案、历史全量明细。它以对象存储为底座,配合 Parquet/ORC 列式格式与分区目录(如 dt=2025-06-01/line=L01),支持批式全量扫描、离线特征工程、模型训练与追溯审计。数据湖写入吞吐高、单位存储成本低,但查询延迟通常在秒到分钟级,不适合直接支撑实时看板或毫秒级告警。

消息队列不是长期存储,而是数据流的“传送带与缓冲池”。典型对象是设备上报消息、变更事件、CDC 日志。它提供分区、副本、消费位点与回溯能力,解决生产与消费速率不匹配、多消费者分发、削峰填谷和故障重放问题。消息队列通常只保留数小时到数天,不能替代 TSDB 或数据湖做长期查询。

制造数据流批实时一体存储组合架构 数据源 PLC / SCADA 测点 MES 工单与批次 视觉/日志/报文 QMS 质量判定 消息队列 分区 + 副本 + 位点 削峰 / 分发 / 重放 保留 6h~3d 不承担长期查询 时序数据库 标签 + 时间戳 + 数值 降采样 / 窗口聚合 保留 3~24 个月 实时看板 / 告警 数据湖 Parquet 分区 全量明细 / 图像 保留 3~10 年 训练 / 追溯 / 审计 实时消费 落湖归档 统一查询与计算层 实时看板 / 告警引擎 / 批处理特征 / 追溯查询 / 模型训练 选型判断:按数据特征与访问模式分流 高频数值 · 秒级查询 → 时序数据库 判据:采样频率 ≥ 0.2 Hz 查询延迟要求 < 1 s 事件流 · 多消费者 → 消息队列 判据:需削峰 / 重放 / 分发 保留期 ≤ 数天 全量明细 · 长期留存 → 数据湖 判据:保留 ≥ 1 年 / 非结构化 查询延迟可接受分钟级

组合架构:一条数据流的三次分流

制造场景的推荐组合是“消息队列做入口、时序数据库做实时服务、数据湖做长期底座”。以某汽车零部件产线为例:200 个测点以 1 Hz 上报,视觉工位每件产品产生 1 张约 300 KB 图像,日产量 8000 件。数据先进入消息队列,按 line=L01 分区,副本数 3,保留 24 小时。实时消费链路把测点写入时序数据库,按设备标签建索引,保留 12 个月;另一条消费链路把原始报文与图像批量写入数据湖,按 dt/line 分区,Parquet 压缩后长期保留。

这样分流的收益是:实时看板从 TSDB 读取,P95 查询延迟可控制在 200 ms 内;告警引擎订阅消息队列,避免直接压垮 TSDB;离线训练从数据湖扫描全量历史,不影响在线服务。若把图像直接写入 TSDB,单日 2.4 GB 图像会迅速撑爆时序库;若把高频测点只放数据湖,实时看板将退化为分钟级延迟。

选型判断的四个关键问题

面对一个新数据对象,按以下顺序判断即可:第一,写入频率与单条大小。高频小数值优先 TSDB;大对象或非结构化优先数据湖。第二,查询模式。按时间范围聚合、最新值、降采样,选 TSDB;按批次、设备、任意维度关联扫描,选数据湖;只需顺序消费与分发,选消息队列。第三,保留周期与成本。超过 1 年的全量明细放数据湖,热数据放 TSDB,消息队列只保留缓冲窗口。第四,一致性要求。需要精确一次或可重放,消息队列提供位点与副本;需要强一致点查,TSDB 或关系库更合适。

一个常见误区是“用消息队列当数据库”。消息队列的保留期通常只有数小时到数天,一旦消费位点过期或主题被清理,历史数据不可恢复。它适合做管道,不适合做唯一副本。

参数与容量估算示例

假设某车间 10 条产线,每条 150 个测点,采样 1 Hz,测点平均压缩后 3 字节。日增点数 = 10 × 150 × 86400 = 1.296 亿点;日增存储 ≈ 1.296 亿 × 3 B ≈ 389 MB;保留 12 个月约 142 GB。若副本因子为 2,实际占用约 284 GB。这个量级单节点 TSDB 即可承载,但若采样提升到 10 Hz,日增将放大 10 倍,需要提前做分区与降采样策略。数据湖侧,若每件产品 1 张 300 KB 图像、日产 8 万件,日增约 24 GB,年增约 8.8 TB,必须依赖对象存储的低成本与生命周期策略。

落地时的组合要点

  • 入口统一:所有设备与系统数据先入消息队列,避免多路直连存储造成耦合。
  • 实时与离线分离:TSDB 只保留热数据与聚合结果,数据湖保留全量原始明细。
  • 标签规范:TSDB 的标签(line、station、device、metric)要在入口统一,否则后期查询无法收敛。
  • 分区与生命周期:数据湖按日期与产线分区,设置冷热分层;TSDB 设置降采样与过期策略。
  • 可重放:消息队列保留窗口要覆盖下游故障恢复时间,通常不少于 24 小时。

存储选型的最终目标不是追求单一系统的极致,而是让数据在正确的时间出现在正确的位置:消息队列保证不丢与可重放,时序数据库保证实时可查,数据湖保证长期可溯。三者组合,才能支撑制造数据流批实时一体的完整闭环。