制造业是一个古老而悠久的行业,它的起源最早可追溯到石器时代。从新石器时代简单的工具,到今天复杂的智能工厂,制造业历经千年发展,蜕变成了由技术驱动的创新行业,充满各种自动化流程、始终互连的设备和数据丰富的流程。
本文将以数益工联数字化工厂为例,介绍“离散型”制造业面临的数据挑战,以及分布式 HTAP 数据库 TiDB 如何助力工业数据价值的挖掘。
在制造业中,通常有着“流程型”和“离散型”两种区分。“流程型”是指被加工对象不间断地通过生产设备,通过一系列的加工装置使原材料进行化学或物理变化,最终得到产品。典型的流程生产制造业有医药、化工、石油化工、电力、钢铁制造、能源、水泥等领域。“离散型”制造,则是指材料的生产过程通常被分解为多项加工任务。典型的离散制造行业主要包括机械制造、电子电器、航空制造、汽车制造等行业。
在整个离散制造业的现场有着太多的生产、物料、工艺以及人员数据。以前,离散制造业往往只能通过人工上报,手动填单等方式来进行数据收集。对于管理层而言,这些数据往往是不透明的、不准确的,或是滞后延迟的。离散制造企业本身从业务到管理,都亟需通过数字化进行优化和提升。
工业数字化软件供应商数益工联,致力于打造基于“数据流 + 价值流”的离散制造业数字化软件。数益工联团队以 IE+IT 为核心能力,实现产品和技术的双轮驱动,已在十多个行业落成全球领先的数字标杆工厂公司。公司至今已获得华创资本、高瓴创投、元生资本等知名机构的风险投资,累计融资额数亿元,在上海、苏州、广州三地设有子公司,打造跨区域全国服务平台。
数益工联数字工厂系统(DFS,Digital Factory System)应用新一代的物联网技术与丰富的现场交互手段,获取工厂现场最实时、最真实、最有效的数据,不仅包含设备状态、设备异常数据、设备生产数据等设备 IOT 数据,还包含人员的交互使用数据,如计划报工、工艺、仓储物流、质检等核心生产管理业务的数据等。对管理层而言,通过数益工联数字工厂系统,可以直观看到清晰、直接的报表,从中发现数据的价值,继而深入分析并采取行动,优化制造现场。
从架构上看,数益工联数字化工厂主要分为四层:
第一层为物联层,包括硬件和软件两部分。硬件主要为数益工联自研的智能终端,软件包括边缘应用和物联平台。其中应用主要具备设备参数的采集、人脸识别等功能,以上应用均运行于智能终端。物联平台则主要承担设备管理、配置和升级的相关工作。
第二层为应用层,包括 IOT 数据服务、核心服务、低代码平台。IOT 数据服务是接受物联上报数据,计算设备开机率,异常等设备相关的服务,同时也是其他业务的数据源头;核心服务包括了计划报工、质量等数字化工厂服务;低代码平台主要包括了报表的可视化平台、流程编排等功能。
第三层为大数据层,分成了大数据和算法两个部分。大数据应用包括了成本控制、APS、工艺大数据;算法包括了人脸识别、时序分析等算法。
第四层为基础架构层,作为基础设施提供其他业务使用。主要包括了存储、数据库、中间件和云原生等部分。
数字工厂的数据源头主要包括两部分:
第一部分是 IOT 事件,包括了设备的开关机、物联采集、异常等数据,这部分数据通过 mqtt 上传到 IOT 服务进行处理,同时会推送到队列中,方便后续的计算和存储;
另一部分是业务产生的数据,包括了计划报工、上下班等产生业务数据,主要通过 http 进行上传和展示。业务数据会直接存放到数据库中,同时将数据推送到队列中。
数据存储主要采用了 TiDB 和 Starrocks 两个数据库,除了时序相关的数据,业务数据都存放在了 TiDB 中。
随着数益工联业务规模的不断增长,数据量变得愈发庞大,对于数据库的稳定性也提出了更高的要求:
多数业务数据需要支持秒级延时,因此需要数据库具有很高的并发能力;随着业务的增长,数据量也会越来越大,需要数据库具有良好的拓展性;
随着数据量的增大,报表制作成本和难度变大,无法保证实时性。
为解决业务系统的性能瓶颈,提高数据库的性能问题,数益工联选择了 TiDB 这一新型分布式数据库实现重构。
数益工联研发团队在实践过程发现,TiDB 许多优势正好可以满足数益工联的需求:
TiDB 兼容性强,在实践的过程中几乎没有遇到过不兼容的问题,除了少数默认编码的问题。
支持云原生部署,可以通过 Kubernetes Operator 来快速部署 TiDB 集群,具有完善的配套监控功能。
能够实现自动化水平扩容,支持高可用,运维无需手动接入,极大地降低了运维成本。
支持 OLAP,TiDB 支持 TiFlash,降低部署复杂度,TiFlash 在亿级别数据的查询中,通常能达到 5 倍的加速。
那么,数益研发团队是如何使用 TiDB 实现对于工业数据的价值挖掘的?以工厂运转效率的重要指标设备开机率为例,对于工厂而言,设备的开机率与生产效率息息相关,能否实时获取开机率,机器是否实现了高效且合理的运转非常重要。数益工联团队通过 TiDB 实现了以下功能:
开关机记录:一条开机记录表示记录单个设备的一次开机时间和关机时间。这种记录表,由于数据量过大,现在主要放在 ES 中。
开机率:表示在一段时间内的开机时间的占比,延时需要精确到秒级,这种数据现在转换成时序的数据存放在 Starrocks,同时创建物化视图,加速时间跨度大的查询。
但随着时间增长,团队也遇到了以下问题:一是开机记录和开机率数据不同源,导致数据容易不一致;二是 Starrocks 存储量大,占用了大量的计算和存储资源。
因此,数益工联数据团队对于开机率进行了第三次改造:Starrocks 不再保存开机率的时序数据。时序数据量比较大,容易出现异常,导致数据不一致。数益工联一方面将开机记录存放在 TiDB 中;另一方面通过开机记录来计算出开机率。
原先 ES 同步写入容易引发业务写入超时的问题,这次改造解决了 ES 数据写入延时的问题,同时,也减少了 Starrocks 的存储资源的占用。这次改造使得在 100 台设备的应用场景中,一年能减少百 GB 级别的 Starrocks 存储;充分利用了 TiDB 的 HTAP 能力,通过 TiDB 的 HTAP 直接对开机记录进行聚合查询,降低了业务复杂度,给业务开发提供了很大的便利性。目前,TiDB 在线上运行表现十分稳定。
与此同时,数益工联研发团队也在进行一些定制化的改造。由于业务需要支持任意时间段查询开机率的能力,因此需要按天对数据进行预聚合,但 TiDB 不支持物化能力,需要借助业务逻辑来实现,加大了业务实现复杂度。随着业务预聚合的需求越来越多,数益工联研发团队决定对 TiFlash 进行改造,实现 TiDB 物化功能:
根据物化语句生成物化表。
分区为粒度进行聚合,当数据到达一定时间的策略的时候,会把整个分区进行聚合,放到物化表分区中。
擎自动判断是否使用基表分区还是物化分区。
iflash团队的交流中发现,需要解决重复计算的问题,因此数据需要多副本去重计算。
目前,在数益初步的单副本测试中,虽然还存在一些问题需要修复,但能看到 TiFlash 的物化功能展现了很大的潜力,相信将在未来多业务场景下发挥重要作用。
数据库在制造业中扮演着至关重要的角色,它们为工厂提供了强大的信息管理能力,帮助工厂更好地挖掘数据的价值。TiDB 可以帮助制造业处理海量数据,提供高效的查询性能,我们也期待帮助更多制造业用户完成数字化转型,从而提升企业的竞争力与效率。