从行业需求入手,分析如何通过新老技术的融合来解决传统技术架构存在的问题,以适应工业互联网新时期的需求;对时序数据库今后的发展趋势进行了研究,并对新技术在工业互联网领域的应用提出一些通用的要求,为后续工业互联网基础技术的应用和发展打下理论基础。
一、引言
互联网的迅速发展带动了一波技术革新,越来越多新的技术被运用到了行业中,以解决实际问题和需求。在工业界,工业互联网、智能制造这些词也随之涌现,人们正在积极探索新技术在工业界的应用。但是否所有的新技术都适合在行业推广应用?例如工业行业,有着更为复杂的环境,对于软件系统有着额外的高要求,特别是系统的实时性、稳定性和安全性。多年来,工业系统一直都较为封闭,使得工业界的软件形成了一套较为独立且成熟的体系。
在工业场景中,80%以上的监测数据都是实时数据,且都是带有时间戳并按顺序产生的数据,这些来源于传感器或监控系统的数据被实时地采集并反馈出系统或作业的状态。在工业上,通常会使用实时/历史数据库作为核心枢纽,对这些数据进行采集、存储以及查询分析。
在工业领域之外,随着移动互联网、物联网、车联网、智能电网等新概念的迅速发展,也形成了对实时数据的分析处理需求,另一种全新架构的解决方案也悄然形成,被称作时序数据库,主要面向互联网场景下海量数据的实时监控和分析需求,它和实时/历史数据库的功能如此相似,就好比是一对双胞胎,被不同的家庭抚养长大却还保持着相同的容貌。相比于传统的工业方案,互联网方案的扩展性更好,又天然能和大数据生态融合,无疑会对原有的技术架构形成挑战。
二、传统工业场景中对实时数据的处理
传统工业控制领域,由于其自身的特殊性,有很多对实时数据处理的要求,特别是流程工业中,对各生产环节的监控要求十分严苛,需要通过监测数据实时反应出系统的状态,所以对于实时数据的处理十分看重,并且经过长时间的积累已经形成了一套独有的成熟的体系。对实时/历史数据库的应用是其中重要的一环,在工控领域已经有很多年的历史,实时数据库主要用于工业过程数据的采集、存储以及查询分析,以实现过程状态的实时监控。工业上的实时数据有这些特征:都带有时间戳,并且是按时间顺序生成的;大多为结构化数据;采集频率高、数据量大等。
工业上对软件的要求从来都是非常严苛的,所以实时数据库在被打磨后,形成了比较明显的特征,如实用、严谨、稳定、高性能、封闭等。
以一个中等规模的工业企业为例,在流程监控的环节中,可能会涉及到5~10万个传感器测点,每天产出的数据量能达到上百GB。在通常情况下,工业企业都会要求数据能够被长时间存储,这样可以随时查询到历史趋势。上述的需求显示出了传统实时数据库需要具备的一些能力,如因为测点多、采集频率高,所以要求非常高的写入能力;因为要求长期存储,所以需要强大的数据压缩能力;因为数据量庞大,所以要求快速的查询响应;同时最重要的是实时分析能力,能快速反映出系统的状态。
表1是传统工业项目中对实时数据库的考核要求。
表1 工业项目中对实时数据库的考核项
对于工业传统的实时/历史数据库,总结特征如下:
(1)高速写入性能:工业实时数据库通常会对数据写入的速度有很高的要求。以流程工业的场景为例,会在每个环节都设置传感器,传感器的数量众多且采集频率都很高,所以数据写入的并发量会特别高,有时甚至会达到每秒上百万的测点。除了对软件的要求之外,也会选择使用一些高性能的服务器来保证数据的写入。
(2)快速的查询响应:查询的需求分为两部分,一是要响应实时的查询请求,用于及时反映系统的状态;二是历史数据要能快速被查询,由于历史数据量非常大,在查询时需要对特定时间段的数据做聚合,需要做到即使是查一整年的数据情况,也能很快地反映出来。
(3)超强的数据压缩能力:之前提到因为数据会被存储很长时间,5年甚至10年都是常有的事,在存储容量有限的情况下,就需要对数据做一定的压缩。通常压缩方式会分成无损压缩和有损压缩,相比而言,有损压缩的压缩比会更大一些,有时会达到1:30~1:40,这就需要设计合理的算法来保留数据中的细节,使数据在还原后仍能保留重要的特征。
(4)积累丰富的工具:传统的实时数据库的解决方案一般是从采集开始到可视化的一整套系统,有多年积累形成的丰富的工具包,比如会积攒上百种的协议,或者各种场景的数据模型,这些都是工业软件的重要竞争力。
(5)追求极致稳定:工业上对软件的稳定性要求特别高,除了使用主备机制来保证高可用外,一般完全由软件的编写质量来保证程序的持续运行。
三、工业互联网时期的变化和问题
随着互联网、物联网、云计算、大数据、人工智能为代表的新一代技术的逐步成熟,一轮新的科技革命和产业变革正在兴起,一系列新的生产方式、组织方式和商业模式开始涌现,工业互联网技术也在日趋成熟。工业互联网是互联网和新一代信息技术与工业系统全方位深度融合所形成的产业和应用生态,是工业智能化发展的关键综合信息基础设施。人们开始尝试使用互联网技术融入设计、生产、管理、服务等工业生产的各个环节,不论是自主探索或者是学习其他行业的成熟经验,不可避免的就是新老技术的对接。
随着物联网技术逐步渗透工业,不断增长的传感器、飙升的数据量以及更高的大数据分析需求对原有的技术架构提出了挑战。几个问题必须直面:
(1)扩展性遇到瓶颈。传统的技术架构虽然能保证单机具备极高的性能,也可以通过增加机器使性能线性扩展,但是不能像分布式系统那样实现动态灵活的扩容和缩容,需要提前进行规划。当业务升级需要系统扩容时,老架构的扩展性就很难满足需求了。
(2)无法和大数据生态对接。数据采集的最终目的是被理解和使用,大数据产业中对于海量数据的存储分析已经有很成熟的方案,不论是Hadoop还是Spark的生态圈,都面临着新老技术的对接。很多工业企业因为想使用新的大数据分析技术,不得不对现有的系统进行升级或是替换。
(3)价格高昂。传统的工业实时数据库解决方案价格都十分昂贵,一般只有大型企业能接受。但是随着新技术、新理念的普及,更多的中小企业也意识到数据的重要性,但考虑到资金投入,会倾向于寻找价格更低廉的方案。
四、从互联网发展而来的时序数据库
4.1 发展历史
在进入互联网飞速发展的时期之后,随着通信技术的革新,数据通信成本的下降,掀起了一波又一波万物互联的热潮。不仅是互联网监控需要采集数据,人们每天接触的手机、智能手环、共享自行车、汽车等,都在源源不断地产生数据。人们实时地收集这些数据并发送到云端,用大数据技术进行分析,对业务进行监控和预测,以数据驱动企业降本增效,提高服务质量。
这些数据其实和工业领域大部分的实时数据有着一些相同的特征:单条数据不会很长,但是数据量很大;都带有时间戳,且按顺序生成;数据大部分都是结构化的,用于描述某个参数在某个时间点的特征;写入的频率会比查询的频率高很多;已存储的数据很少有更新的需求;用户会更关心一段时间的数据特征,而不是某一个时间点;数据的查询分析大多基于某一个时间段或者某个数值范围;需要进行统计和可视化的展示。
这些特征同样可以对应到智能电表、环境监测设备、工业生产线产生的数据。但由于产生的时期和场景不同,工业上的解决方案会和互联网的解决方案存在一定的差异(见表2)。
表2 两种数据库方案的差异
新架构下的时序数据库在处理这些互联网数据时的需求和传统的实时数据库有异曲同工之妙,可以说是同一种功能需求在不同领域的实现形式。互联网新技术在向工业渗透的时候,会反映出一定的优势和劣势,而工业互联网技术的发展也应顺应双方技术的互相渗透融合,互相吸收优点、弥补缺点,共同往更好的方向发展。
4.2 技术趋势
随着工业互联网发展的需求日益清晰,在这两种数据库技术互相渗透的过程中,可以观察到一些技术的发展趋势。
(1)逐步向分布式架构转变:传统的实时数据库多是主备的部署架构,通常要求有较高配置的机器,来追求单机极致的性能;同时,在稳定性方面,会对运行软件的稳定性做极高的要求,完全由高质量的代码来保证运行的稳定;由于存储容量有限,也会要求超高的数据压缩比。但时序数据库的分布式架构,使得系统能够轻松地进行水平扩展,让数据库不再依赖昂贵的硬件和存储设备,以集群天然的优势来实现高可用,不会出现单点的瓶颈或故障,在普通的x86服务器甚至是虚拟机上都可以运行,大大降低了使用成本。
(2)更灵活的数据模型:传统的实时数据库由于工业场景的特殊性,常使用的是单值模型,一个被监控的参数称为一个测点,在写入时会对每一个测点建一个模型,比如一个风机的温度指标算一个测点,10个风机的10个指标就是100个测点,每个测点会附带描述信息(名称、精度、数据类型、开关量/模拟量等),查询的时候就会针对每个测点去查询数值。单值模型的写入效率会很高。
而时序数据库,开始采用多值模型,类似面向对象的处理方式,例如风机是一种数据模型,可以包括温度、压力等多个测量维度,还包括经纬度、编号等标签信息,这样对外提供服务时会更适合分析的场景。当然,单值模型和多值模型是可以互相转换的,很多数据库对外提供的服务为多值模型,但是底层存储还是单值模型。
(3)SQL需求依然存在:目前大部分的时序数据库都选择了扩展性较好的NoSQL数据库作为底层存储,相比于关系型数据库,NoSQL的数据模型更灵活,非常适合时序数据的多值模型;更易扩展,在资源受限或者需要提升性能的时候,可以轻易地增加机器;查询效率高;开源软件成本低。表3为开源时序数据库使用的底层存储模型。
表3 开源时序数据库使用的底层存储模型
使用NoSQL数据库也会丢失一些特性,比如不支持事务,需要通过其他手段来保证数据一致性;比如不支持SQL,SQL作为一种标准查询语句,已经被人们所习惯,是一种学习成本极低的操作,所以现在许多时序数据库的厂家也在尝试集成SQL引擎,降低产品使用的门槛。
(4)查询要求以及表现形式更多样化:在互联网时代,查询的要求已经不仅仅是满足于一些基础的条件查询或是插值查询,随着物联网场景的丰富以及人们对信息全面掌控的需求,基于地图的应用越来越多,查询会由时间的维度逐步扩展到空间的维度,除了保证实时性之外,更丰富的可视化的展现也是一大趋势。
(5)逐步转向云服务:传统的工业场景处理实时数据出于安全和性能等原因都会使用私有化部署。机器、软件以及后续的服务是一笔十分高昂的开销,还需要配备专业的技术人员进行系统的维护。当服务逐步上云后,一方面省去了购置机器的成本,不需要特别安排维护机器和软件系统的工程师,只需要懂得如何开发和维护业务就可以。另外,服务使用多少就购买多少,避免一次性购买服务造成的资源浪费或者资源不足再进行二次建设,可以为企业减少很大一笔开销。随着网络和云计算技术的成熟,相关的性能和安全性也会不断的升级,最终趋近于私有化部署的效果,服务上云已经成为了一个不可阻挡的趋势。
(6)逐步向边缘计算发展:工业领域是IoT的重要试验田,工业互联网的发展势必会带来更多传感器的使用以及更多数据的采集。当数据过于庞大,集中化的处理方式就很难响应实时的数据分析需求,这就带来了数据计算向边缘的发展,需要实时响应的监控就通过边缘设备及时的处理并反馈,需要用于大规模分析的数据再进行集中存储,这种分级的处理方式能够有效地提升时效性数据的价值,同时减轻存储系统的负担,所以许多时序数据库正在研发边缘计算版本,并配合流计算的能力使功能更加丰富。融合了边缘计算的时序数据解决方案会更适合工业互联网的处理场景(见图1)。
图1 使用边缘计算技术实时处理数据的一种方案
五、产品调研
结合调研,总结了互联网行业和工业企业中对实时/时序数据库使用的一些共性要求,列出了33条细则,其中有7项设置为了可选项,不满足不会影响正常的业务要求,满足能为产品加分。
此次测试的目的是为了检验这些软件架构上的不同是否会影响到基础功能服务的提供,并进一步验证数据库应具备的技术要求。对国内7家提供实时/时序数据库服务的厂家进行了一轮测试,参与者包括大型云服务提供商、传统工业信息化解决方案提供商以及一些创业公司;产品覆盖了NoSQL模型和关系模型、B/S架构和C/S架构、开源软件和自主研发的软件;部署模式涵盖了本地化部署和云服务。
测试结果显示,在25项必须具备的能力中,这些不同厂家的产品基本都能满足,仅有一家产品不具备加密通信能力。由于服务的领域和场景不同,对于7个可选项,各家的产品展现出了一定的差异,以满足不同的业务需求(见表4)。
表4 7家企业的测评情况
六、技术要求
在总结了业界的多款产品以及现阶段的一些业务需求之后,总结了时序数据库需要具备的一些技术要求,分为几个层面:一是基础功能,能保证数据库具备可用性的一些最基础的操作;其次是管理能力,决定产品的可管理性和易用性;再就是维护产品稳定运行和持续优化的一些特性,比如兼容能力、容错能力、扩展性、安全性;最后是性能方面的一些考察项。
6.1 基础功能
功能层面的要求决定了时序数据库产品是否满足最基础的一些使用条件:涵盖常用的额数据类型,如int、long、float、string、bool、bytearray等;数据的操作不丢失精度,支持毫秒精度数据读写;支持单域或多域写入,提供单次和批量写入接口;可以增加时间序列;支持单个时间序列和多个时间序列的查询;支持按标签进行过滤,包括精确匹配和模糊匹配;提供插值查询能力,将数据补齐,并支持多种插值算法;支持按数值进行时间序列和数据点过滤;支持获取最新数据点;提供多种维度的聚合查询接口,包括时间窗口聚合、标签分组,以及min、max、avg、count、sum等基本聚合函数;能够实现可编程函数以满足一些定制化的查询要求;在物联网的使用场景下,能进行基于地理位置的聚合查询;支持按时间管理历史数据,提供过期时间设置接口,可以高效清理历史数据。
6.2 管理能力
完整和友好的管理能力可以有效地支撑时序数据库的使用和维护,有助于数据库的使用者和维护团队有更好的使用体验。具体指标包括:具备友好的部署能力或服务开通能力;全局范围内的数据库配置在线管理能力;能够对数据库状态进行实时监控,并具备告警能力;支持用户的新增、删除等管理能力,支持为用户分配不同的权限;数据库具备在线组件升级功能;能够查看时间序列的定义、标签的定义、指标的定义;支持与其他类型数据库间的数据导入和导出。
6.3 兼容能力
指数据库产品能否与主流硬件、软件及大数据生态对接的能力,具体包括:数据库能够在x86/x86-64等主流硬件上正常运行,异构硬件特别是不同CPU型号和主流操作系统能够兼容;建议支持容器部署;能够与Hadoop/Spark等大数据分析平台对接。
6.4 容错能力
时序数据库应该具备一定的容错能力,确保集群在硬件或软件异常的情况下仍能保证数据与服务的完整性,内容包括:在发生硬件故障、操作系统故障或软件服务故障时,运行中的服务不会受到影响;当请求超过集群能承载的压力时,能够通过一定的机制保证系统的可用性;能够支持数据多副本存储,在副本丢失时不影响查询业务。
6.5 扩展性
时序数据库应该具备良好的扩展性,能够根据业务需求随时进行集群的扩展和收缩,并保持数据的均衡:数据库集群具备集群扩展能力,扩展前后保持数据均衡,且性能能够随之提升;数据库集群具备集群缩减能力,缩减前后保持数据均衡。
6.6 安全性
时序数据库应具备安全保障能力,主要包含:能够对接入数据库用户进行身份认证工作;能够对数据库内操作进行审计工作;能够支持客户端与服务器端的加密通信,如HTTPS。
6.7 性能
时序数据库应具备较高的处理性能,需要考察的内容包括:写入吞吐量、写入时延;查询并发度、查询时延;聚合操作时延;数据导入并发度、时延;数据压缩的效率。
七、结束语
本文从几个层面分析了工业中时序数据处理的挑战,描述了工业领域传统的处理方案,以及在互联网领域发展出的新技术架构,并进行了对比。为了解决工业中新涌现的问题,两种实现方案需要各取所长,互为补充,以使互联网技术更好地在工业领域应用。并对产业界时序数据库技术的发展方向进行了分析,通过对需求方和供给侧的研究,总结出了一些在新时期对于时序数据库的技术要求。这项工作对于工业数据应用的后续发展具有很重要的意义,还将继续研究时序数据处理的性能要求,并研发适合工业场景数据特征的测试基准和工具。