---
title: '数益工联 x TiDB丨如何运用 HTAP 挖掘工业数据价值？'
date: '2022-12-21T00:00:00+08:00'
status: publish
permalink: /blog/how-to-use-htap-to-mine-industrial-data-value
author:
    - 黄海升
    - PingCAP
excerpt: '本文将以数益工联数字化工厂为例，介绍“离散型”制造业面临的数据挑战，以及分布式 HTAP 数据库 TiDB 如何助力工业数据价值的挖掘。'
type: post
id: 3186
category:
    - 案例实践
tag:
    - HTAP
    - TiDB
post_format: []
profile:
    - PingCAP
algolia_posts_post_records_count:
    - '5'
---
制造业是一个古老而悠久的行业，它的起源最早可追溯到石器时代。从新石器时代简单的工具，到今天复杂的智能工厂，制造业历经千年发展，蜕变成了由技术驱动的创新行业，充满各种自动化流程、始终互连的设备和数据丰富的流程。

本文将以数益工联数字化工厂为例，介绍“离散型”制造业面临的数据挑战，以及分布式 HTAP 数据库 TiDB 如何助力工业数据价值的挖掘。

“离散型”制造业面临数据挑战
--------------

在制造业中，通常有着“流程型”和“离散型”两种区分。“流程型”是指被加工对象不间断地通过生产设备，通过一系列的加工装置使原材料进行化学或物理变化，最终得到产品。典型的流程生产制造业有医药、化工、石油化工、电力、钢铁制造、能源、水泥等领域。“离散型”制造，则是指材料的生产过程通常被分解为多项加工任务。典型的离散制造行业主要包括机械制造、电子电器、航空制造、汽车制造等行业。

在整个离散制造业的现场有着太多的生产、物料、工艺以及人员数据。以前，离散制造业往往只能通过人工上报，手动填单等方式来进行数据收集。对于管理层而言，这些数据往往是不透明的、不准确的，或是滞后延迟的。**离散制造企业本身从业务到管理，都亟需通过数字化进行优化和提升。**

如何解决“离散型”制造业的数据挑战？
------------------

工业数字化软件供应商数益工联，致力于打造基于“数据流 + 价值流”的离散制造业数字化软件。数益工联团队以 IE+IT 为核心能力，实现产品和技术的双轮驱动，已在十多个行业落成全球领先的数字标杆工厂公司。公司至今已获得华创资本、高瓴创投、元生资本等知名机构的风险投资，累计融资额数亿元，在上海、苏州、广州三地设有子公司，打造跨区域全国服务平台。

**数益工联数字工厂系统（DFS，Digital Factory System）应用新一代的物联网技术与丰富的现场交互手段，获取工厂现场最实时、最真实、最有效的数据**，不仅包含设备状态、设备异常数据、设备生产数据等设备 IOT 数据，还包含人员的交互使用数据，如计划报工、工艺、仓储物流、质检等核心生产管理业务的数据等。**对管理层而言，通过数益工联数字工厂系统，可以直观看到清晰、直接的报表，从中发现数据的价值，继而深入分析并采取行动，优化制造现场。**

数益工联数字化工厂架构面临的挑战
----------------

![1.PNG](https://img1.pingcap.com/prod/1_4a088bbed7.PNG)<center>数益工联数字化工厂架构图</center>从架构上看，数益工联数字化工厂主要分为四层：

**第一层为物联层**，包括硬件和软件两部分。硬件主要为数益工联自研的智能终端，软件包括边缘应用和物联平台。其中应用主要具备设备参数的采集、人脸识别等功能，以上应用均运行于智能终端。物联平台则主要承担设备管理、配置和升级的相关工作。

**第二层为应用层**，包括 IOT 数据服务、核心服务、低代码平台。IOT 数据服务是接受物联上报数据，计算设备开机率，异常等设备相关的服务，同时也是其他业务的数据源头；核心服务包括了计划报工、质量等数字化工厂服务；低代码平台主要包括了报表的可视化平台、流程编排等功能。

**第三层为大数据层**，分成了大数据和算法两个部分。大数据应用包括了成本控制、APS、工艺大数据；算法包括了人脸识别、时序分析等算法。

**第四层为基础架构层**，作为基础设施提供其他业务使用。主要包括了存储、数据库、中间件和云原生等部分。

![2.png](https://img1.pingcap.com/prod/2_01ac8f0c08.png)数字工厂的数据源头主要包括两部分：

第一部分是 IOT 事件，包括了设备的开关机、物联采集、异常等数据，这部分数据通过 mqtt 上传到 IOT 服务进行处理，同时会推送到队列中，方便后续的计算和存储；

另一部分是业务产生的数据，包括了计划报工、上下班等产生业务数据，主要通过 http 进行上传和展示。业务数据会直接存放到数据库中，同时将数据推送到队列中。

数据存储主要采用了 TiDB 和 Starrocks 两个数据库，除了时序相关的数据，业务数据都存放在了 TiDB 中。

**随着数益工联业务规模的不断增长，数据量变得愈发庞大，对于数据库的稳定性也提出了更高的要求**：

1. 多数业务数据需要支持秒级延时，因此需要数据库具有很高的并发能力；随着业务的增长，数据量也会越来越大，需要数据库具有良好的拓展性；
2. 随着数据量的增大，报表制作成本和难度变大，无法保证实时性。

为解决业务系统的性能瓶颈，提高数据库的性能问题，数益工联选择了 TiDB 这一新型分布式数据库实现重构。

![3.png](https://img1.pingcap.com/prod/3_e76c3ae7be.png)数益工联研发团队在实践过程发现，TiDB 许多优势正好可以满足数益工联的需求：

- **TiDB 兼容性强**，在实践的过程中几乎没有遇到过不兼容的问题，除了少数默认编码的问题。
- **支持云原生部署**，可以通过 Kubernetes Operator 来快速部署 TiDB 集群，具有完善的配套监控功能。
- **能够实现自动化水平扩容，支持高可用**，运维无需手动接入，极大地降低了运维成本。
- **支持 OLAP**，TiDB 支持 TiFlash，降低部署复杂度，TiFlash 在亿级别数据的查询中，通常能达到 5 倍的加速。

TiDB 如何助力数益工联挖掘价值数据？
--------------------

那么，数益研发团队是如何使用 TiDB 实现对于工业数据的价值挖掘的？以工厂运转效率的重要指标设备开机率为例，对于工厂而言，设备的开机率与生产效率息息相关，能否实时获取开机率，机器是否实现了高效且合理的运转非常重要。数益工联团队通过 TiDB 实现了以下功能：

![4.png](https://img1.pingcap.com/prod/4_63398930cb.png)- **开关机记录**：一条开机记录表示记录单个设备的一次开机时间和关机时间。这种记录表，由于数据量过大，现在主要放在 ES 中。
- **开机率**：表示在一段时间内的开机时间的占比，延时需要精确到秒级，这种数据现在转换成时序的数据存放在 Starrocks，同时创建物化视图，加速时间跨度大的查询。

但随着时间增长，团队也遇到了以下问题：一是开机记录和开机率数据不同源，导致数据容易不一致；二是 Starrocks 存储量大，占用了大量的计算和存储资源。

因此，数益工联数据团队对于开机率进行了第三次改造：Starrocks 不再保存开机率的时序数据。时序数据量比较大，容易出现异常，导致数据不一致。**数益工联一方面将开机记录存放在 TiDB 中；另一方面通过开机记录来计算出开机率。**

原先 ES 同步写入容易引发业务写入超时的问题，这次改造解决了 ES 数据写入延时的问题，同时，也减少了 Starrocks 的存储资源的占用。**这次改造使得在 100 台设备的应用场景中，一年能减少百 GB 级别的 Starrocks 存储；充分利用了 TiDB 的 HTAP 能力，通过 TiDB 的 HTAP 直接对开机记录进行聚合查询，降低了业务复杂度，给业务开发提供了很大的便利性**。目前，TiDB 在线上运行表现十分稳定。

改造 TiFlash，实现 TiDB 物化功能
-----------------------

与此同时，数益工联研发团队也在进行一些定制化的改造。由于业务需要支持任意时间段查询开机率的能力，因此需要按天对数据进行预聚合，但 TiDB 不支持物化能力，需要借助业务逻辑来实现，加大了业务实现复杂度。随**着业务预聚合的需求越来越多，数益工联研发团队决定对 TiFlash 进行改造，实现 TiDB 物化功能：**

1. 根据物化语句生成物化表。
2. 分区为粒度进行聚合，当数据到达一定时间的策略的时候，会把整个分区进行聚合，放到物化表分区中。
3. 擎自动判断是否使用基表分区还是物化分区。
4. iflash团队的交流中发现，需要解决重复计算的问题，因此数据需要多副本去重计算。

![5.png](https://img1.pingcap.com/prod/5_b2f500c6da.png)目前，在数益初步的单副本测试中，虽然还存在一些问题需要修复，但能看到 TiFlash 的物化功能展现了很大的潜力，相信将在未来多业务场景下发挥重要作用。

数据库在制造业中扮演着至关重要的角色，它们为工厂提供了强大的信息管理能力，帮助工厂更好地挖掘数据的价值。TiDB 可以帮助制造业处理海量数据，提供高效的查询性能，我们也期待帮助更多制造业用户完成数字化转型，从而提升企业的竞争力与效率。