写点什么

IoTDB Timecho 产品负责人赵馨逸《IoTDB 如何赋能工业物联网数据管理》

作者:Apache IoTDB
  • 2023-07-11
    北京
  • 本文字数:7559 字

    阅读完需:约 25 分钟

很高兴能够在这里和各位一起分享一下我们的时序数据库 IoTDB。那 IoTDB 是一款专门面向工业物联网的时序数据库的管理系统,所以今天我们也会主要分享一下它是怎么样在制造场景里面去管理时序数据的。

首先先给大家简单的介绍一下我们公司。公司名称叫天谋科技,然后核心团队来自于清华大学。目前天谋科技我们的英文叫做 Timecho,就是 time 加 echo,就是时间加回声,就代表了我们的愿景是希望能够让时间发声,希望通过我们自己的科研的力量,能够让更多的国内还有国际的企业,用更低的成本去挖掘更大的工业数据的价值。那我们的团队的话,其实最开始始建于 11 年,就从 11 年开始就专注在时序数据的这个领域里面去做研究。然后到 15 年左右,开始集中我们的科研还有研发力量投入到时序数据库的自主的研发过程当中。到 18 年我们进入 Apache,然后 20 年在 Apache 作为一个开源社区的顶级项目毕业。然后 21 年我们成立了公司,也希望能够通过更符合市场的逻辑来推动时序数据库的国产化的落地。

目前的话我们公司在北京、上海还有欧洲都有设立成立公司,那我们的目标就是希望能够服务世界各地的客户,也获得了很多的荣誉。应用场景的话也覆盖到了航天、航空,然后地面,就包括轨道交通、工厂、车联网等等这些场景,以及海洋的场景。现在也跟很多一些大型国际的公司,还有中字头的公司都有很多的合作案例。

那下面的话还是重点给大家介绍一下我们的 IoTDB 这款时序数据库的产品。对于时序数据来说,在座的大家应该都不是特别陌生了,所以这里就简单介绍一下。所谓时序数据是指的按照时间戳去递增排列的一组采集的数据,那通常来讲它都是设备或者传感器这些采集的工况数据,那用表格的形式可能就是大家在现在上面这里看到的,它是由一个一个的时间和数值这样依次按照时间递增,组织起来的一张这种时间和序列的一个表。那如果用可视化的方式来表达的话,它就像下面的这里面,可能是一条曲线,代表了设备运转的一个整体的走势。

那目前 IoTDB 的话,在不同的领域我们都能够为用户带来比较大的助力。那比如说在电力行业里,电力行业有发电、输电、配电这三个领域,然后我们目前在这个发电领域会有比较深入的参与。那举个例子,在发电领域里面,风机投入运行之后,会对它的设备的一个状况进行监控。那其中有一个部件叫做测风仪,这个测风仪主要就是用来去监测这个整个风机的一个偏航的角度,来保证风机以一个合适的迎风角去进行发电。那当这个主控系统投入使用之后,我们会不断的去监控这个测风仪返回的数据,但是随着环境因素,比如说震动或者腐蚀等等一些因素的变化,这个测风仪的数据会随着运行出现一些偏差,就会导致这个迎风角计算的错误,导致我们最终的这个风机的发电效率会有衰减。那在这个场景里面,我们通过存储时序数据,能够帮助用户分析每一个风机的运行状态,及时的发现这个测风仪对冲偏差的角度,对这个测风仪的误差进行一个补偿,所以在矫正之后,可能每台风机每年就可以多发电 3 万多的人民币。按照如果以 1.5 万台的这个风机来计算,这个分析的一项技术就能够给业主每年带来超过 1.5 亿元的一个人民币的经济效益。那第二个我们比较常见的典型的场景就是制造业,那制造业包括装配的设计、制造、运维这三个领域,那其中在装备的制造环节,我们通过对制造产线进行监控,能够发现制造设备的很多质量的问题,从而能够帮助我们对生产出来的产品的质量做出判断,去提升产品整体的一个良品率。第三个比较典型的场景,我们一般会在这个轨道交通的领域,就像车联网、挖掘机这些比较典型的场景。我们之前的客户会把车的轨迹数据采集到 IoTDB 里面,然后通过机器学习去进行数据分析,比如说去分析它的缺失油耗率、瞬时油耗率、累积油耗率等等这些指标,来观测轨迹是否是一个最优轨迹。这样找到一个车辆运行的最佳的路线,来帮助它节省车辆的油耗。所以我们会发现,在刚才我们提到的这些场景里面,时序数据都能够为工业领域的用户,不管是电力的行业、制造的行业还是轨交的行业,都能够带来很大的一个经济上的价值。但是回归到时序数据,这类数据的管理的挑战还是非常大的。那第一个就是测点非常多,我们刚才有提到可能在一个工厂里面,它的这个传感器的数量就能够上亿,那么所以导致我们在这个数据库里面存储的时间序列的数量会非常的多。第二个比较大的难点就是它的采集频率很高,我们有的客户他的采集频率能达到一千赫兹,就是每秒 1000 个点,那么在测点又非常多,采集频率又非常高,这两个如果乘起来,其实就代表的是我们数据库最终落盘的这个存储的数据点的数量,所以它的存储代价是非常大的,可能我们很多客户一个月就能够有 TB 级的这个数据的增长。

也就是在这样的背景下,所以时序数据库的管理系统也是不断的在进行这个技术上的演进。最开始的时候市场上面大多数时序数据的解决方案其实都是用通用型的数据库去管理的,要么就是用这种关系型的数据库,要么就是在关系数据库的基础上去做一些时序数据的逻辑。但总体上它受限于这种行式的存储,会有这个速度慢、压缩比低的问题。那后来的话就有专门的这个时序数据库出现,我们叫它上一代的时序数据库。主流的可能有两个大的类别,一个就是工业领域里面比较常用的 PI 这个系统,它的实时性是比较高的,但是它能够管理的时间的序列数非常的有限,而且也没有扩展性。那另一个比较大的类别就是像 InfluxDB,它可能就是针对互联网监控领域诞生的一个时序数据库,它能够管理的序列数要比 PI 高几个量级,但是它管理的历史数据的能力是比较弱的,一般可能管近期的几个月的数据,但是如果更长时间的数据,它的管理和查询的性能会非常的差。所以总结来说就是,上一代的时序数据库,可能它们要么是管理的时间序列数非常的有限,要么管理时间数据的范围非常有限,所以我们希望能够提供一个更新型的管理系统,我们也叫它物联网时序数据库,也就是 IoTDB。我们希望它能够把这两类系统的优势结合起来,既能够像 InfluxDB 这类系统一样去管理海量的时间序列,也能够像 PI 一样去管理长周期的时间序列。只有这样的形态,我们认为它才能更好的去支撑我们上面说的更长周期、更大范围的工业数据管理,也能够让数据发挥更大的应用价值。目前 IoTDB 其实有两个比较典型的产品的定位。第一个我们叫它厂内的高效时序数据管理,这个实际上就是我们前面提到的这种单点的高效的时序数据,他可能在前面对接的是业务里面的数据采集和传输的模块,能够把数据高通量、低成本的存下来,然后同时也能够提供查询的能力,去支持后面的这种数据处理和分析的业务。所以在这个主要的定位场景里面,对时序数据库来说主要考察的是它本身的存,还有读写的能力。这个是我们 IoTDB 是适配的第一个比较典型的场景。

那第二个典型的架构的话,我们叫它“端边云”的数据平台,可能除了在厂内去用,还会进行一些跨厂或者是跨车间之类的这种应用。比如说我们在钢铁行业里面,它可能最开始会在车间侧去做 IoTDB 的一个存储采集的数据,然后数据再逐层的上传到它的工厂侧和集团侧。那在这个场景里面,除了对我们刚才提到的数据库本身的读写能力的考验之外,还需要有比较强大的数据同步或者叫云边协同的能力,保障它的数据能够逐层汇聚到最终的数据中心。

那基于刚才我们说到的这种产品的定位还有应用场景,我们设计了 IoTDB 的这套产品。那它最底层是我们纯自研的文件系统,叫 TsFile。然后在这个基础上我们又设计了存储、查询和计算三个引擎,面向工业数据的特点去进行写入,还有查询速度的加速以及压缩比上的调优。另外就是我们还会提供系统的管理模块,进行安全的控制以及集群的调度管理,还有权限控制等等的能力。然后在对外的话,其实 IoTDB 还支持更多样的这种数据的接入,比如说支持多种工业的采集协议,支持工业里面的网闸穿透,同时也能够对接各种大数据的生态,比如说 Kafka、Flink、 Spark 这些常用的组件。另外就是我们也可以对上层接触用户的这个层面,我们会提供很多的应用工具,比如说像可视化的控制台,然后系统的监控工具等等。然后再有就是对于大家非常头疼的领域里面会提供一些支持和服务。我们现在的话,开源版是提供一个最基础的时序数据的管理能力。那企业版我们就是会在开源版的基础上,对功能进行诸多的增强,比如说多级存储的这种大的功能,然后逻辑视图的功能、告警的功能等等,以及就是在大家比较头疼的领域里面去进行更强大的一个技术上的支持和服务。

整体来说,其实 IoTDB 目前最大的优势是它的国产自研的属性,也是比较符合现在国产化替代的一个大的优势。然后它也是 Apache 里面目前唯一一个顶级的时序数据库的项目,并且拥有很多的独创技术。那除此之外的话,我们还会有一些独创的“端边云”的协同的架构,以及物联网的场景优化,还有它的极致性能,这些都是我们产品比较大的优势。

接下来就是想给大家再着重的介绍一下,就是 IoTDB 的一些亮点的功能。那我们知道在工业领域里面,其实管理设备的 BOM 的数据是非常难且非常复杂的,如果在关系型数据库里需要通过大量的建表来维护设备的信息,所以它的管理成本会非常高,而且非常复杂,比如说在使用的时候会经常使用到多层嵌套的 SQL。而我们 IoTDB 是希望在这个时序数据的管理上面能够做到对用户更加的友好。那目前我们是时序数据库里面唯一一个用树形模型去存储设备信息的数据库,这个模型它天然就非常符合工业设备的一个 BOM 的管理的模型,它设备的这个层级结构能够直接映射上,对用户来说就是构建起来也会更加的友好。

而且整个的这棵树它也是可以能够灵活的去感知时间序列的创建以及增删的,那当我们增加了一些设备或者传感器的时候,这个模型能够自动的去生长出一些新的分支,而不需要我们过度的依赖人工去手动维护这个模型。所以对于时间序列的元数据,或者说基础数据的一些维护,在我们现在的数据库里面是非常友好的。

同时在这个树形的视图的基础上,我们还提供了逻辑视图的这样一个功能的增强。因为我们知道在工业管理的场景里面可能经常会有很多的视角,比如说像左边就是我们刚才看到的这张图,它是一个采集团队的视角,就是他最关注的是这些设备之间的关联关系和层级结构,所以他关心的是这个设备在哪,在哪个厂、哪个设备之下,这个设备里面有哪些传感器。但是除了采集团队之外,还会有应用团队,就是可能更像右边的这种视角,比如说温度的分析,业务团队他只关心温度相关的传感器,压力分析的业务,他可能只关心压力相关的传感器。那所以说这种就比较像是一个应用分析的视角,那么如果左右两种视角我们只能支持一种的话,对于另一个团队它的使用会非常的不方便。所以 IoTDB 在我们目前的元数据管理模块里面提供了逻辑视图的功能的增强,就很像我们常见的这种文件的快捷方式,能够让大家通过不同的路径最终读取的都是同一个时间序列,这样可以做到业务视角的一个分离,大家不用相互去理解对方的一个命名的方式,学习的成本会极大的降低。那另外就是在这个逻辑视图里面,我们还能支持计算上的增强,比如说我把这个所有温度的平均值单独存为一个时间序列,这样既能够保证应用的时候的方便性,也能够让计算更加的快。

那除了刚才我们说到的是“管的好”,就是我需要把工厂里面的这些传感器也好,设备也好的元信息能够非常方便快捷以及最简单的去存下来,那第二个可能我们比较大的亮点就是“接得住”。刚才可能提到,现在很多传感器它的采集频率是非常高的,而有一些它的传感器能到一千赫兹,那 IoTDB 就能够在毫秒级把这些数据做一个接入,相比竞品来说有十倍的一个性能优势,可以说在高频数据的这个写入里面,IoTDB 是非常擅长的。那另外就是在接入数据的时候还有一个比较大的难点,就是乱序数据的写入。我们大家应该都是工业领域里的一些专家了,大家知道就是工业领域里面的这个弱网环境,所以会因为一些网络的原因,或者设备断电等等这样一些因素,导致数据到达数据库的时间并不是按照它生成的时间顺序来到达的,所以这种会影响到数据库的一个处理的效率。那面对这种问题,我们的技术团队也创新性的提出了一个乱序写入的这样一个算法,也发表了文章,然后我们是目前所有时序数据库里面第一个采用这种方式去解决这个问题的。那在乱序写入的场景里面,我们能够做到写入的性能不会有太大的折损。

那第三个比较大的亮点就是,刚才我们也有提到,时序数据它的存储成本其实是非常高的,所以我们除了能够把它接住然后存下来之外,还需要能够用更少的空间去存更多的数据。那在这里就是我们底层有我们自研的文件存储结构,就是刚才提到的 TsFile,它是类似 Parquet,我们能够通过自研的调优让它做到读写速度比 Parquet 要高 5 倍以上的这样的性能,然后压缩比能够达到 10 倍以上,这样的话我们能够更快的把这个数据存下来,并且利用更少的空间。那同时我们在系统里还有一些其他的优化,能够帮助用户节省这个存储的空间。目前的话就是我们时序数据其实是两种比较典型的存储的场景,一种是时间戳对齐的场景,在这种场景里面可以认为可能一个设备的所有传感器,它都是在同频的采集数据,那这个时候我们可以用左边的图这个样子来存数据。这样的话我们只用存一遍时间戳,然后对于数据进行一个存储,这样的话我们能够节省掉每一个时间序列的这个冗余的时间戳的存储,达到一个空间的优化。那另一种场景就是时间戳非对齐的场景,就是可能每一个传感器它自己在采集数据,它们每一个传感器采集的时间戳都是不一样的,那这种时候我们可能就会用右边的这种方式去存储,那这样的话我们就可以对一些没有产生数据的时间点做一个空值不存,这样的话也能够达到一个空间优化的目标。那目前大多数的时序数据库都只支持其中的一种场景的存储模式,而 IoTDB 是目前所有的时序数据库里面唯一一个同时支持这两种存储场景的一个数据库。这样的话我们能够通过这样的一些存储的优化,能够帮用户节省存储的空间。

然后第四个大的亮点就是我们系统的查询能力。那在查询场景里面,我们针对工业场景也做了很多内置的升级和优化,比如说典型的工业场景里面的查询降频,然后包括 M4 高保真采样,能够去除数据里面不必要的细节来还原数据的基本走势。那再比如说就是我们还能够提供序列的分段查询,我们预设了很多内置的这种数据分段的规则,比如说通过这个数据的绘画窗口去进行分段,或者是通过时间间隔去进行分段,这样的话我们可以通过这些规则把序列分段之后,再对每段数据进行聚合,然后内置的这样的一个聚合的函数会极大的进行一个效率上的提升,我们也能够比竞品支持更多的这种分段的规则。那同时的话我们还会有一个强大的内置的查询的系统,就这个内置的查询系统支持提供 UDF 的框架,就是用户可以用我们提供的接口来自定义函数,这样的话让我们数据库能够处理更多样的数据处理的场景,比如说数据的修复、模式匹配等等很多的算法。而且这些算法我们也在利用我们开源社区的影响力,在不断的往里补充各类的用户自定义函数。

然后再讲一讲,就是 IoTDB 刚才提到的一个比较典型的应用场景,云边协同。就是我们现在是支持两种同步的方式,就第一种方式是实时的同步,它比较适用于这种低网络延迟的场景,但是它的网络的带宽占用会比较高。那第二种是我们的批量同步的方式,它同步的就是我们之前提到的我们独创的这个 TsFile 的文件。因为我们的文件和数据库是一个可插拔的关系,所以我们可以从一个数据库里面把文件卸载出来,然后直接加载到另一个数据库里面去。那这种同步它的吞吐就会比较高,并且占用的带宽又比较少,能够在我们常见的这些云边协同的场景里面发挥比较大的作用。然后最后就是我们产品上面的一些使用上的方便了。刚才有提到我们有对接这种主流的开源的生态,同时我们也会提供很多的配套工具,包括我们的可视化控制台、我们的监控面板以及集群的管理工具。然后我们的性能在国内和国外的竞品的比较上面能够提升 2- 10 倍,在读和写上都有比较大的优势。对于国产的主流的操作系统和 CPU,我们都有兼容性的验证。然后包括国内的龙头的企业,像华为、阿里、用友等等,他们的时序数据库都会首要选择 IoTDB 作为他们的一个底层的基架。

整体来说 IoTDB 其实是一个比较活跃的开源和商业运营的时序数据库的产品,目前它的开源社区也是非常活跃的。就根据 22 年的这个统计,在 Apache 362 个项目里面, IoTDB 活跃度排名是第二,还是一个很高的活跃度。包括我们现在也发了一篇系统的论文,然后中了今年的数据库的顶级会议 SIGMOD 的工业论坛。这个工业论坛的论文和传统的研究型的论坛还不一样,它需要是这个系统本身在具有技术创新性的同时还能够比较成熟,并且在学术界和工业界有比较强的影响力,才能够被这样的会议所接受。所以今年 SIGMOD 的这篇论文对我们来说也是前期工作的综合的认可,无论是在技术的创新度上还是业界的应用上,都能更上一层楼。最后的话,再来给大家讲一讲我们的一些应用的案例。目前我们有服务超过 200 家的客户,包括中字头的企业,然后北京市的龙头企业以及一些其他的企业。然后我们的用户也辐射到了像美国、德国、日本等等全球的各个地方。

然后重点来介绍几个我们之前的一些应用的案例。首先是长安汽车,在这个场景下,我们用一台 IoTDB 的数据库代替了之前它的 25 个 HBase 的节点,一共管理了长安汽车这边 1.5 亿个时间序列。然后能够支持他比如说像单车的这个时间范围的实时查询,然后单车全时间序列的这种最新点的查询等等,这样一些比较典型的场景,并且做到毫秒级的返回,让长安汽车这边在同等的硬件资源条件下,它诊断系统的数据查询效率从原来的分钟级提升到了现在的秒级。宝武钢铁也是我们的一个比较典型的案例。在宝武这边的话,它是非常注重它工厂的安全,所以设备出了问题要及时的告警,他们需要非常高频的数据采集来发现它现场这些钢铁制造的设备的问题。那这种高频数据恰恰是 IoTDB 比较擅长的场景,这个场景下面我们实现了数据从设备再到工厂再到基地、集团级别的这个多个层级的数据部署和同步的架构,实现了整个它现在集团数据的一个一站式的管理。然后中治赛迪的话也是一个我们比较典型的应用客户,他会用 IoTDB 来构造他们现在的一个叫水土云的工业互联网平台,那我们是作为他实际数据库的这个基座,帮助他来实现工厂工业里面的事前的决策、事中的监控和事后的调整的指导服务。

然后最后再介绍一下大唐先一,大唐这边也是用 IoTDB 替换了他原来的 OpenTSDB,目前已经服务了 60 家电厂。相比 OpenTSDB 的这种大数据的生态,还需要部署 Zookeeper 等等这些组件,那 IoTDB 的运维是非常便携的,它可以做到一键的启动,并且不需要做非常多的配置,这样极大的降低了大唐先一这边客户的一个运维的成本,所以他们目前也是在持续稳定的应用 IoTDB 去做他们的一个时序数据的管理。

以上就是我们介绍到了关于 IoTDB 我们一些亮点的产品的功能,以及我们的应用场景,感谢大家。

发布于: 2023-07-11阅读数: 2
用户头像

Apache IoTDB

关注

还未添加个人签名 2021-12-30 加入

海量时序数据管理的解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。

评论

发布
暂无评论
IoTDB Timecho 产品负责人赵馨逸《IoTDB 如何赋能工业物联网数据管理》_IoTDB_Apache IoTDB_InfoQ写作社区