场景特点

制造业 MES 系统的数据类型比一般业务系统更混杂,它同时面对两类截然不同的负载:

  • 高频采集数据:设备状态、工艺参数、产量计数按秒级甚至更短周期上报,单厂区的数据点数量可以达到很高量级;
  • 业务事务数据:工单、物料、批次、质检记录等,属于典型的交易型数据,需要事务保证;
  • 实时看板需求:产线管理人员需要看到当班产量、设备稼动率等指标的实时变化;
  • 追溯查询需求:出现质量问题时,需要按批次反查生产过程中的全部参数记录。

难点在于:采集数据量最大但价值密度低,业务数据量小但要求严格,两者混在一起会让系统两头都做不好。

数据分层的设计思路

把两类数据分开对待,是这类平台的基本设计原则:

  1. 业务事务数据:放入支持事务的关系型存储,保证工单状态流转、批次关联的正确性;
  2. 高频采集数据:采用适合高吞吐写入的路径,写入优先、允许适度聚合;
  3. 实时指标:在看板所需的粒度上做预聚合,避免每次刷新都做全量计算;
  4. 历史明细:按时间归档,仅保留追溯所需的检索能力。

采集写入的优化

采集数据的特点是「点多、频率高、单条小」,直接逐条写入数据库会造成严重的开销浪费:

  • 批量提交:在采集网关侧做缓冲,把短时间内的大量数据点合并成一批写入,显著降低事务次数;
  • 键设计避免热点:以设备编号与时间组合作为键,让写入在多个分片间自然分散;
  • 控制单批规模:批次过大会导致单次事务过重,失败时回滚代价高,需要按实测调整;
  • 允许适度丢弃:对于纯监控类数据,在极端压力下可采样或丢弃,保障业务数据不受影响;
  • 削峰:采集侧加入队列缓冲,避免网络抖动或设备批量重连造成的瞬时冲击。
关键认识:采集数据与业务数据的可用性要求不同。让它们共享同一套资源与写入路径,等于让低价值数据拖累高价值数据。

实时看板的实现

看板类需求如果每次刷新都做全量聚合,成本会随数据增长而上升。更稳妥的做法是分层聚合:

  1. 秒级或分钟级预聚合:在数据写入的同时维护分钟级汇总,看板直接读汇总结果;
  2. 按产线、班次、设备维度预计算:把常用分组维度提前算好,避免查询时现场计算;
  3. 区分实时与准实时:核心产量指标要求实时,趋势分析类可以接受分钟级延迟;
  4. 限制看板查询范围:默认只查当班或当日数据,历史分析走独立通道。

生产追溯的查询设计

追溯查询的模式是「从批次出发,找到相关的全部过程数据」,优化重点是建立正确的检索入口:

  • 批次号作为主要检索键:所有过程数据都带上批次标识,保证能按批次快速定位;
  • 时间范围限定:追溯通常只需批次生产的那段时间,配合时间条件可大幅缩小扫描范围;
  • 避免跨大范围关联:把追溯所需的关键字段适当冗余,减少多表关联带来的开销;
  • 冷热分离:近期批次走高优先级存储,多年前的历史批次走归档,按需恢复。

经验小结

制造业数据平台的复杂度来自数据类型的混杂,而不是单一负载的极端。设计上的核心判断是:把写入压力最大、价值密度最低的采集数据,与要求事务保证的业务数据分开处理,再通过预聚合把看板成本降下来。这样系统才能在数据量持续增长的同时保持稳定。

案例要点速览
行业场景制造业 MES,兼具高频设备采集与工单批次等事务型数据
核心矛盾采集数据量大价值密度低,业务数据量小但要求事务保证
分层设计事务数据独立存储、采集数据走高吞吐路径、指标预聚合、历史明细归档
写入优化采集网关侧缓冲批量提交、复合键避免热点、控制批次规模、队列削峰
追溯查询以批次号为主要检索键,配合时间范围限定与关键字段冗余