1.本发明涉及工业化数据存储技术,尤其涉及一种基于时序数据库的数据读取系统及数据读取方法。
背景技术:2.工业运行设备在生产过程中会产生大量过程数据,这些数据对应的信号值大部分会被实时采集并保存到实时数据库中,且是已文件的格式存储下来,由于存在异构数据,最后产生的数据文件是非常巨大的。当上层软件对这些数据文件进行提取、分析,尤其是时间跨度大或数据量大时,读取性能非常差,而且在提取过程会影响实时数据库服务的稳定性,甚至有导致实时数据库丢点,服务崩溃的风险,进而影响位号写值,这对工业生产过程来说是不能被接受的。
3.另外,工业运行设备在运行或实时在线计算过程中,均会产生大量过程数据,包括输入参数、中间变量、输出参数等,这些数据大都以文件的方式存储到实时数据库,对数据进行较大时间跨度的历史数据的提取时,速度慢,性能差,且有导致实时数据库服务崩溃的风险,进而影响实时数据的采集、存储及写值。现有的技术方案,大都是在实时数据库服务端开放底层接口,外部通过接口调用,但是仅支持实时值,或在有约定限制的分钟时间跨度内进行数据的提取,但这样的时间跨度已不能完全满足现场需求,或只能消耗较长的数据提取等待时间。
技术实现要素:4.(一)要解决的技术问题
5.鉴于现有技术的上述缺点、不足,本发明提供一种基于时序数据库的数据读取系统及数据读取方法。
6.(二)技术方案
7.为了达到上述目的,本发明采用的主要技术方案包括:
8.第一方面,本发明实施例提供一种基于时序数据库的数据读取系统,所述数据读取系统包括:
9.位于服务端设备中的时序数据库和实时数据库;
10.用于接收用户操作指令的多个客户端,所述客户端与所述时序数据库、实时数据库通信连接;
11.所述实时数据需连接多个分布式工业节点,按照预设的采样周期采集每一工业节点的过程数据;
12.所述时序数据库提供所述客户端用于进行数据查询访问的接口;
13.所述时序数据库中按照时间分类保存,每一客户端从实时数据库中订阅的数据。
14.可选地,所述时序数据库为iotdb;
15.所述iotdb提供所述客户端进行数据查询访问的jdbc的api接口;
16.所述iotdb支持异构数据的存储和提取,以及按照预设的数据存储逻辑进行数据的存储。
17.可选地,预设的数据存储逻辑包括:
18.工业节点的标识/工业节点所在回路的标识、各标识绑定的多个位号、每一位号的属性值;所述标识与位号、属性值均存在映射关系;
19.或者,
20.工业节点的标识/工业节点所在回路的标识、各标识绑定的多个位号信息,位号信息的参数信息。
21.可选地,所述客户端包括:apc和/或pid;
22.工业节点包括下述的一种或多种:
23.dcs1、dcsn、plc1、plcn;n取大于等于2的自然数。
24.第二方面,本发明实施例还提供一种基于时序数据库的数据读取方法,所述数据读取方法是基于上述第一方面任一所述的数据读取系统的方法,所述方法包括:
25.客户端与实时数据库连接成功后,客户端接收用户触发的对至少一个工业节点的过程数据的订阅需求;
26.所述客户端响应所述订阅需求,生成用于向实时数据库中获取订阅需求关联的数据的订阅任务;
27.所述客户端中的订阅任务服务基于所述订阅任务从实时数据库中获取订阅需求关联的数据,并将获取的数据按照预设的数据存储逻辑转换并发送时序数据库;
28.所述时序数据库将转换后的数据按照数据中的时间信息进行存储。
29.可选地,所述方法还包括:
30.所述iotdb周期性维护该iotdb内存储的数据,并将超过预设时间段的数据或超过硬盘设定值的数据进行删除。
31.可选地,所述方法还包括:
32.客户端调用时序数据库的jdbc的api接口,读取iotdb中的时序数据。
33.可选地,所述方法还包括:
34.所述客户端中的订阅任务服务按照预设的数据更新周期向实时数据库发送所述订阅任务;所述预设的数据更新周期与所述实时数据库的采样周期相同;
35.所述实时数据库根据订阅任务,采用采样周期作为条件查看是否有更新的数据,若有,则向订阅任务服务发送更新的数据,并使订阅任务服务按照预设的数据存储逻辑转换更新的数据以存储在iotdb中。
36.可选地,所述时序数据库和所述实时数据库位于一台物理设备中。
37.(三)有益效果
38.本发明的方法可以利用时序数据库如iotdb的高性能轻量级,设计针对实时数据库的同步存储策略,在满足性能的情况下,支持按天或较大时间跨度的历史数据的提取,对外通过时序数据库的查询引擎提供jdbc的外部访问api,简单易用,查询性能高;
39.此外,以实时方式按需订阅高频数据并同步到iotdb,同步过程数据量小,数据按时间分类保存,完全避开因大量数据提取过程带来的实时数据库服务的数据采集、存储及参数回写等中断的风险,支持异构数据(浮点型、整型、字符串、布尔型、单值)存储及提取。
附图说明
40.图1为本发明一实施例提供的一种基于时序数据库的数据读取系统的架构图;
41.图2为iotdb的数据存储的逻辑图;
42.图3为iotdb存储结构对应的数据存储的表格展示的示意图;
43.图4和图5均为本发明一实施例提供的一种基于时序数据库的数据读取方法的流程图;
44.图6为根据条件查询结果数据流程图。
具体实施方式
45.为了更好的解释本发明,以便于理解,下面结合附图,通过具体实施方式,对本发明作详细描述。
46.本发明通过利用iotdb高性能轻量级特点,并根据回路/控制器结构特性,实现一套数据预存储方案,即将设备在运行过程中产生的且已存入实时数据库中的数据,根据上层软件(如客户端的软件)的订阅需求将大量高频数据实时同步且按时间分类保存到iotdb,并支持异构数据(浮点型、整型、字符串、布尔型、单值)存储,查询引擎提供jdbc的外部访问api,简单易用,免安装、配置和维护,为下一步进行系统集成数据的读取、分析提供了很好的数据基础,对实时数据库的读取起到冗余、削峰的作用,大幅提升上层软件读取的高效性和稳定性。
47.实施例一
48.如图1所示,本实施例提供一种基于时序数据库的数据读取系统,本实施例的数据读取系统包括:位于服务端设备中的时序数据库和实时数据库;
49.用于接收用户操作指令的多个客户端(如apc/pid),所述客户端与所述时序数据库、实时数据库通信连接;
50.所述实时数据库需连接多个分布式工业节点,按照预设的采样周期采集每一工业节点的过程数据;工业节点包括下述的一种或多种:dcs1、dcsn、plc1、plcn;n取大于等于2的自然数,图1中示出。
51.所述时序数据库提供所述客户端用于进行数据查询访问的接口;
52.所述时序数据库中按照时间分类保存,每一客户端从实时数据库中订阅的数据。
53.本实施例中的时序数据库可为iotdb;该iotdb提供所述客户端进行数据查询访问的jdbc的api接口;同时,iotdb支持异构数据的存储和提取,以及按照预设的数据存储逻辑进行数据的存储。
54.本实施例中的时序数据库和所述实时数据库可位于一台物理设备中,也可位于独立的两台物理设备中,图1中示出的是两台独立的物理设备,本实施例不对其限定,根据实际需要配置。
55.实时数据库中的数据可以在空闲时间段内实现与时序数据库中数据的同步,由此,可以避开高峰时段有效避免实时数据库崩溃的风险。
56.参见图2所示,本实施例中iotdb支持的数据存储逻辑包括:工业节点的标识/工业节点所在回路的标识、各标识绑定的多个位号、每一位号的属性值;所述标识与位号、属性值均存在映射关系。
57.如图3所示,本实施例中iotdb支持的数据存储逻辑包括:工业节点的标识/工业节点所在回路的标识、各标识绑定的多个位号信息,位号信息的参数信息。
58.本实施例中,利用iotdb的高性能轻量级特点,根据回路/控制器特性,通过数据存储逻辑实现了对实时数据库数据的实时同步及转存,同步过程数据量小,完全避开由于高峰读取实时数据库数据可能造成的实时数据库服务崩溃的风险,实现高频数据的高性能读取;
59.iotdb具有高性能的数据读写及丰富的查询能力,对外提供查询引擎,外部系统可以像查询关系数据库一样,查询较大时间跨度的数据,速度块,查询性能好,满足性能要求;
60.相比通过在实时数据库服务端开放对外底层接口,外部直接访问该接口而言,本实施例的数据存储策略实时同步数据到iotdb,同步过程数据量小,且能避开大量取数过程导致实时数据库崩溃的风险;结合iotdb高性能读写及查询能力,外部通过查询引擎提供api,客户端可以查询存储中任意时间段的数据,速度块,性能好。
61.实施例二
62.如图4所示,本实施例提供一种基于时序数据库的数据读取方法,本实施例的数据读取方法为基于上述实施例一的数据读取系统实现的。本实施例方法的执行主体为任一用于客户端,本实施例的方法可包括下述的步骤:
63.401、客户端与实时数据库连接成功后,客户端接收用户触发的对至少一个工业节点的过程数据的订阅需求;
64.402、客户端响应所述订阅需求,生成用于向实时数据库中获取订阅需求关联的数据的订阅任务;
65.403、客户端中的订阅任务服务基于所述订阅任务从实时数据库中获取订阅需求关联的数据,并将获取的数据按照预设的数据存储逻辑转换并发送时序数据库;所述时序数据库将转换后的数据按照数据中的时间信息进行存储。
66.上述的客户端或客户端的订阅任务服务均属于apc/pid应用程序中的服务。
67.进一步地,所述方法还包括图中未示出的步骤404或405:
68.404、iotdb周期性维护该iotdb内存储的数据,并将超过预设时间段的数据或超过硬盘设定值的数据进行删除。
69.405、客户端调用时序数据库的jdbc的api接口,读取iotdb中的时序数据。
70.在实际应用中,所述客户端中的订阅任务服务按照预设的数据更新周期向实时数据库发送所述订阅任务;所述预设的数据更新周期与所述实时数据库的采样周期相同;
71.所述实时数据库根据订阅任务,采用采样周期作为条件查看是否有更新的数据,若有,则向订阅任务服务发送更新的数据,并使订阅任务服务按照预设的数据存储逻辑转换更新的数据以存储在iotdb中。
72.本实施例中,客户端展示一个运行服务的操作界面(即apc/pid应用程序的操作界面),用户根据操作界面的信息设定采样周期将采集到的点位数据实时存入实时数据库;
73.apc/pid应用程序安装在各自的客户端,根据控制器/回路结构特性,在现有的控制器或者回路创建定时订阅任务,客户端中的应用程序根据订阅任务实时将实时数据库的数据转换为iotdb的存储结构存储iotdb数据库。
74.本实施例中,客户端中的应用程序可根据订阅任务将大量高频数据实时同步且按
时间分类保存到iotdb。即,根据apc/pid应用程序的订阅频率或周期,向实时数据库订阅数据,并将订阅到的数据存入iotdb。
75.图2中,每个回路(控制器)名称(即标识)唯一或者回路id唯一会绑定若干个位号;每个位号也是唯一的,每个位号对应有多个属性值。图3则是iotdb存储结构对应的数据存储的表格展示的示意图;当订阅任务根据订阅的条件将订阅到的实时数据库的数据写入iotdb时,数据经过数据存储逻辑转换,并经iotdb内部的时间检测器检测当前维护的最大时间戳来判断写入的数据存放的位置,保证数据写入的有序性,
76.例如,iotdb已存入的数据其对应的时间戳是从00001-11000,当有新数据需要写入时,会检测到当前最大的时间戳是11000,新写入的数据会基于这个时间戳,排队写入,而不会将新数据随机插入00001-11000之间,由于数据订阅是实时的且根据时间更新的,不会出现新数据的时间戳小于已经写入iotdb数据的时间戳,查询过程通过时间索引保证对大数据量的查询性能,以上过程即是根据图2所示的存储逻辑结构存储对应的回路(控制器),位号及位号属性值;
77.本实施例中,iotdb对缓存数据进行维护,执行定期清理机制,保证轻量高效,该清理机制可以根据iotdb提供的属性来设定保存某段时间范围的数据,或者落入硬盘的大小,超过该时间段的数据或者落入硬盘的数据量大小超过设定值,则自动清理冗余的数据,本实施例中可采用设定时间段的方式进行数据的清理。
78.本实施例中实现一套数据读取策略,apc/pid应用程序根据控制器/回路结构特性,调用iotdb提供的jdbc的api,对数据进行批量读取。例如,apc/pid应用程序展示所有的控制器或者回路,订阅任务服务会根据用户对控制器或者回路的操作来确定订阅数据量的大小,即如果对控制器或者回路进行增加或删除,订阅过程也会相应的新增或删除对应的控制器或回路的数据订阅,以满足实际的需要。
79.用户操作需要读取大量数据时,订阅任务服务可直接从iotdb读取,iotdb提供一套查询和分析的jdbc可访问的api,根据入参(回路/控制器/位号名),调用统一规则的api接口实现高性能查询。
80.图5描述的是从实时数据库订阅的数据写入iotdb的过程,具体流程如下:
81.开始:在客户端的定时订阅任务启动;
82.尝试连接实时数据库服务:订阅任务启动后,客户端会去尝试连接实时数据库服务;
83.是否连接成功:客户端的订阅任务服务连接实时数据库成功,才能订阅到数据,如果连接失败,会尝试3次,失败则不能订阅数据,直到下一次定时任务的到来,则再次尝试连接;
84.确定回路:客户端的应用程序可以操作所有控制器/回路,用户借助于应用程序确定参与订阅数据的控制器/回路,默认全部控控制器/回路即是确定回路,确定的回路也决定了订阅任务需要从实时数据库订阅数据的条件;
85.确定采样周期:采样周期即是从实时数据库订阅数据的时间间隔,该值在实时数据库的客户端可设定,客户端的订阅任务服务和实时数据库的采样周期设定一致即可;
86.开始订阅:是数据获取的过程,即订阅任务启动后,实时数据库连接成功,需要订阅的控制器/回路及采样周期确定后,即可向实时数据库获取数据;
87.调用实时数据库接口:定时任务根据实时数据库提供的api接口,根据确定的控制器/回路及采样周期,实时获取数据;
88.根据采样周期获取需要同步的实时数据:定时任务根据实时数据库提供的接口,根据采样周期获取实时数据;
89.是否有新数据产生:定时任务根据采样周期查看是否有最新时间点的数据产生,即实时数据库是否有产生新数据,该判断过程是订阅任务会根据采样周期即时间作为条件去实时数据库获取数据,如果查询结果未空,则没有新数据,订阅任务会等下一个采样周期;如果查询结果不为空,即使有新数据产生;
90.将数据按照时间存入iotdb:上一步中如果查询结果不为空,将从实时数据库订阅的数据转换为iotdb的存储结构,存储iotdb数据库;
91.以上即是订阅任务从实时数据库根据控制器/回路及采样周期将需要的数据订阅存入iotdb的过程。
92.在图6中示出的是根据条件查询结果数据流程,在图6中,在客户端的操作界面输入读取条件,则客户端将读取条件发送时序数据库,时序数据库对读取条件进行转换并查询,获得查询结果,返回结果到客户端进行后续分析。
93.借助于实时数据库和iotdb,实现了同步过程数据量小,且能避开大量取数过程导致实时数据库崩溃的风险;利用iotdb高性能读写及查询能力,外部通过查询引擎提供api,客户端可以查询存储中任意时间段的数据,速度块,性能好。
94.应当注意的是,在权利要求中,不应将位于括号之间的任何附图标记理解成对权利要求的限制。词语“包含”不排除存在未列在权利要求中的部件或步骤。位于部件之前的词语“一”或“一个”不排除存在多个这样的部件。本发明可以借助于包括有若干不同部件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的权利要求中,这些装置中的若干个可以是通过同一个硬件来具体体现。词语第一、第二、第三等的使用,仅是为了表述方便,而不表示任何顺序。可将这些词语理解为部件名称的一部分。
95.此外,需要说明的是,在本说明书的描述中,术语“一个实施例”、“一些实施例”、“实施例”、“示例”、“具体示例”或“一些示例”等的描述,是指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
96.尽管已描述了本发明的优选实施例,但本领域的技术人员在得知了基本创造性概念后,则可对这些实施例作出另外的变更和修改。所以,权利要求应该解释为包括优选实施例以及落入本发明范围的所有变更和修改。
97.显然,本领域的技术人员可以对本发明进行各种修改和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也应该包含这些修改和变型在内。