数益工联 x TiDB丨如何运用 HTAP 挖掘工业数据价值?

news2024/9/27 15:34:21

制造业是一个古老而悠久的行业,它的起源最早可追溯到石器时代。从新石器时代简单的工具,到今天复杂的智能工厂,制造业历经千年发展,蜕变成了由技术驱动的创新行业,充满各种自动化流程、始终互连的设备和数据丰富的流程。

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

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

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

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

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

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

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

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

1.PNG

数益工联数字化工厂架构图

从架构上看,数益工联数字化工厂主要分为四层:

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

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

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

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

2.png

数字工厂的数据源头主要包括两部分:

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

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

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

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

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

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

3.png

数益工联研发团队在实践过程发现,TiDB 许多优势正好可以满足数益工联的需求:

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

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

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

4.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

目前,在数益初步的单副本测试中,虽然还存在一些问题需要修复,但能看到 TiFlash 的物化功能展现了很大的潜力,相信将在未来多业务场景下发挥重要作用。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/139903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习笔记(一)——什么是神经网络

生物学中的神经元的定义 神经元有很多种类,下图就是其中的一种,锥体神经元。它由三部分组成,分别是树突,胞体和轴突。树突是接受输入,轴突是用于输出的。神经元的树突在接收到特定的输入刺激后,其胞体就会被…

BGP在数据中心的应用5——BGP生命周期管理

注: 本文根据《BGP in the Datacenter》整理,有兴趣和英文阅读能力的朋友可以直接看原文:https://www.oreilly.com/library/view/bgp-in-the/9781491983416/上一部分笔记请参考:https://blog.csdn.net/tushanpeipei/article/deta…

腾讯前端vue面试题合集

能说下 vue-router 中常用的 hash 和 history 路由模式实现原理吗? (1)hash 模式的实现原理 早期的前端路由的实现就是基于 location.hash 来实现的。其实现原理很简单,location.hash 的值就是 URL 中 # 后面的内容。比如下面这…

简单易懂的Spring扩展点详细解析,看不懂你来打我

简单易懂的Spring扩展点原理,看不懂你来打我总览BeanFactoryPostprocessor作用回调时机原理BeanDefinitionRegistryPostProcessor作用例子:Spring对Configuration、ComponentScan、Component、Bean、Import等注解的处理回调时机原理ImportSelector作用例…

vue组件之间的数据传递

目录 组件之间的通信 1、组件之间的关系:父子关系、兄弟关系、跨级关系 2、父子组件之间的通信(数据传递): 3、兄弟组件之间的通信(数据传输): 4、跨级组件之间的通信:provide /…

SparkSQL 入门简介

在安装目录的bin目录打开spark-shell.cmd,输入如下,按tab健,查看可执行数据源 spark.read.在安装目录D:\spark-3.0.0-bin-hadoop3.2\bin\input新建user.json {"username":"chen","age":3} {"username&q…

vue全家桶-vuex(一)

vue全家桶-vuex(一)1.Vuex概述2.Vuex中的核心特性A.State1.this.$store.state.全局数据名称-组件访问State中的数据的第一种方式2.组件访问State中的数据的第二种方式:按需导入B.Mutation1.this.$store.commit是触发Mutation的第一种方式2.触…

java学习day67(乐友商城)商品详情及静态化(Thymeleaf)

1.商品详情 当用户搜索到商品,肯定会点击查看,就会进入商品详情页,接下来我们完成商品详情页的展示, 1.1.Thymeleaf 在商品详情页中,我们会使用到Thymeleaf来渲染页面,所以需要先了解Thymeleaf的语法。 …

简明Java讲义 1:Java环境搭建与入门

目录 1、Java 介绍 2、Java 运行机制 3、Java开发环境搭建 4、Hello World! 1、Java 介绍 Java是Sun微系统公司在1995年推出的,是一门面向对象的编程语言 2006年12月,Sun公司发布了JDK1.6(也称作Java SE 6) 200…

数位DP~

综述 数位DP的应用范围: 在某个区间内有多少个满足一定的性质 数位DP中使用的方法: 类似于前缀和。A到B相当于f[B] - a[A-1] 这一点尤为重要,因为已经弱化了边界,使得考虑的更少分情况讨论 ​ 1081. 度的数量 ​ 输入样例…

BGP综合实验

目录 1.拓扑图 2.实验要求 3.实验思路 4.主要配置 5.测试 6.实验总结 1.拓扑图 2.实验要求 AS1存在两个环回,一个地址为192.168.1.0/24;AS3中存在两个环回,一个为192.168.2.0/24;整个AS2的IP地址为172.16.0.0/16&#xff0c…

k8s之工作机制

写在前面 本文一起看下k8s基本架构。 1:Kubernetes的基本架构 k8s本身也是一种分布式架构,也需要在多台机器(实体机或虚拟机无差别)部署,部署的机器我们叫做节点,其中节点分为Master node即主节点,worke…

java使用反射给对象属性赋值

📢📢📢📣📣📣哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝一位上进心十足的【Java ToB端大厂领…

高频js手写题之实现数组扁平化、深拷贝、总线模式

前言 古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。看懂一道算法题很快,但我们必须将这道题的思路理清、手写出来。 三道js手写题的思路和代码实现 数组扁平化 演示效果 将[1, [1, 2], [1, [2]]] 变成 [1, 1, 2, 1, 2] 第一种&…

抽象类与抽象方法

文章目录一、abstract关键字使用修饰类:抽象类修饰方法:抽象方法注意点抽象类的匿名子类一、abstract关键字使用 abstract:抽象的 可以修饰:类、方法 修饰类:抽象类 1、此类不可进行实例化 2、抽象类中一定有构造器…

报错 cannot import name ‘int‘ from ‘numpy‘

报错详情: 原因是因为np.int在numpy1.20已经被废弃掉了,可以通过 pip show numpy在命令行里查看。 现在使用的是np.int_ 或者 np.int32 或者 np.int64 猜测原因 但这个报错是在我自己的site-packages里的numpy的报错,我怀疑可能是numpy本身…

【linux】crontab

文章目录crontab简介crontab安装语法实例脚本无法执行问题常用的命令展示crontab的注意事项来源crontab简介 crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中&a…

linux系统中CAN驱动的通信方法与原理

大家好,今天主要和大家分享一下,如何使用linux系统下的CAN驱动实验。 目录 第一:CAN通信基本简介 第二:CAN通信的主要特点 第三:CAN通信协议 第四:程序代码的具体实现 第五:使能Linux内核自…

MATLAB-ezplot绘图函数

ezplot 函数与fplot 函数类似,该函数可以绘制显函数图形、隐函数图形和参数方程图形。ezplot函数的调用格式如下。 ezplot(f) ezplot(f, [ min , max ]) ezplot(f.[ xmin , xmax , ymin , ymax]) ezplot(x,y) ezplot(x,y , [tmin , tmax]) ezplot(.. . ,f…

jvm内存管理

参考链接 参考链接 Garbage Collection Concepts garbage collector的作用包括: 分配内存确定活着的对象不被清理回收死了的对象占用的内存 寻找和释放垃圾占用的内存空间的过程称为garbage collection一般情况下,整个堆或堆的一部分被填满时或者达到…