CN109542892A - 一种实时数据库的关系化实现方法、装置及系统 - Google Patents
一种实时数据库的关系化实现方法、装置及系统 Download PDFInfo
- Publication number
- CN109542892A CN109542892A CN201811220265.7A CN201811220265A CN109542892A CN 109542892 A CN109542892 A CN 109542892A CN 201811220265 A CN201811220265 A CN 201811220265A CN 109542892 A CN109542892 A CN 109542892A
- Authority
- CN
- China
- Prior art keywords
- real
- database
- time data
- data base
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000013507 mapping Methods 0.000 claims abstract description 21
- 230000002688 persistence Effects 0.000 claims description 44
- 238000012544 monitoring process Methods 0.000 claims description 29
- 230000008859 change Effects 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 3
- 238000004590 computer program Methods 0.000 claims description 3
- 239000002344 surface layer Substances 0.000 claims description 3
- 241001269238 Data Species 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000033772 system development Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 230000000153 supplemental effect Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000003208 petroleum Substances 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种实时数据库的关系化实现方法、装置及系统,所述实时数据库是一种非关系型数据库,以键值对形式存储数据,所述方法包括:将实时数据库的database映射为关系型数据库的表;将实时数据库的一个键值对映射为关系型数据库的一行记录;实时数据库的键值对中的值采用哈希表数据结构存储;实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口;所述方法包括上述database、键值对、哈希表的键值对的三种层级映射中的一种或者多种。
Description
技术领域
本发明属于计算机技术领域,尤其涉及一种实时数据库的关系化实现方法、装置及系统。
背景技术
随着信息技术的发展,许多行业中对数据信息处理的实时性、高效性、综合性有了越来越高的要求。实时数据库适用于处理不断更新快速变化的数据,已经广泛应用于电力、石油石化、交通、军工、环保等行业。
内存数据库是实现实时数据库需求的主要方式,一定程度上满足数据数量大、更新频率高的数据处理业务。目前主流的开源内存数据库如Redis、Memcached,仅提供非结构化的键值对数据存储方式,不能直观方便地进行存取操作。在实际应用中,使用数据库做系统开发的人员需要实时数据库能像关系数据库那样提供表结构支持,即数据按访问关系数据库表、行、字段值的方式进行操作,使得数据访问更符合业务处理逻辑和人性化思维,从而降低访问数据的难度,提高系统开发效率。同时需要能够以贴近业务逻辑思维的方式对数据库的变动进行跟踪,以便发现数据库数据异常变动。
发明内容
本发明的目的在于克服上述现有技术中存在的缺陷,提供一种实时数据库的关系化实现方法、装置及系统。
为了实现上述发明目的,本发明提供如下技术方案:
一种实时数据库的关系化实现方法,所述实时数据库是一种非关系型数据库,以键值对形式存储数据,所述方法包括:
将实时数据库的database映射为关系型数据库的表;
将实时数据库的一个键值对映射为关系型数据库的一行记录;
实时数据库的键值对中的值采用哈希表数据结构存储;
实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;
提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口;
所述方法包括上述database、键值对、哈希表的键值对的三种层级映射中的一种或者多种。
进一步的,所述将实时数据库的database映射为关系型数据库的表,包括:
将实时数据库database唯一标识与关系数据库表的唯一标识通过配置文件对应,将关系数据库表的唯一标识与关系数据库表的表名通过配置文件对应;
用户通过所述接口以访问关系数据库表的形式操作数据,程序通过解析上述配置文件,确定用户要访问的表所对应的实时数据库database,实际上操作的是实时数据库相应的database中的数据。
进一步的,所述的将实时数据库的一个键值对映射为关系型数据库的一行记录,包括:
用户通过所述接口以访问关系数据库表的形式操作表中一行或者多行数据,程序实际上操作的是实时数据库相应的一个或多个键值对数据。
进一步的,所述将实时数据库中键值对的值采用哈希表结构存储,哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值,包括:
用户通过所述接口以访问关系数据库表的形式操作表中特定的字段值,程序实际上操作的是实时数据库相应的键值对的哈希表的属性字键值。
进一步的,所述实时数据库是Redis或者Memcached。
进一步的,所述关系化实现方法还包括对数据库数据进行更新订阅,具体为:
对数据库从表、行、字段值三种层级中的一种或者多种进行数据更新订阅,当订阅主题所指向的目标数据发生更新变化时将发布反馈信息给订阅者。
进一步的,所述的表层级的订阅包括:将表的名称当作订阅主题进行订阅,当表的数据更新,即实时数据库database更新时,将更新信息发往订阅了所述主题的客户端。
进一步的,所述的行层级的订阅包括:将表的名称及行的键进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应键值对更新时,将更新信息发往订阅了所述主题的客户端。
进一步的,所述的字段值层级的订阅包括:将表的名称、该行的键、字段名进行拼接后当作主题进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应哈希表的某个键值对更新时,将更新信息发往订阅了所述主题的客户端。
进一步的,还包括:对数据库进行自定义规则主题的订阅,只有数据库的更新变化满足预定义规则时,才会将更新信息发送给订阅了主题的客户端。
进一步的,所述的自定义规则包括:
更新后的数据值大于、小于或等于指定阈值;
或者,更新后的数据值与更新前的值的差值大于、小于或等于指定阈值。
进一步的,所述的实时数据库的关系化实现方法,还包括:将实时数据的元数据和/或特定历史数据持久化到关系数据库中。
进一步的,所述的将实时数据的元数据和/或指定数据库的历史数据持久化到关系数据库中包括:
通过配置文件设定需要持久化的元数据和/或指定数据库的历史数据,以及目标关系数据库;
所述指定数据库的历史数据持久化,包括在实时数据库在运行时维护一个历史数据缓冲区,按照预定的条件将实时数据加上时间戳后追加到设定的关系数据库;
所述元数据的持久化包括:按照预定的条件,将实时数据库中的元数据覆盖写入预定的关系数据库;
所述元数据包括相对于实时数据相对固定的属性数据。
进一步的,所述的实时数据库的关系化实现方法,还包括将持久化到关系数据库中的元数据加载到运行实时数据库中供运行时使用。
进一步的,所述的将实时数据的元数据和/或特定历史数据持久化到关系数据库是将实时数据的元数据和/或特定历史数据对应为关系数据库数据后,从服务端直接写入关系数据库,而不经过中间件。
一种轨道交通综合监控方法,包括:
将多种信号采集设备收集的数据存储在实时数据库中并实时更新;
所述实时数据库采用上述的实时数据库的关系化实现方法进行管理。
一种实时数据库的关系化实现装置,所述实时数据库是一种非关系型数据库,以键值对形式存储数据,所述装置包括映射模块和操作模块:
所述映射模块用于实现以下三种映射功能中的至少一种:
1)将实时数据库的database映射为关系型数据库的表;
2)将实时数据库的一个键值对映射为关系型数据库的一行记录;
3)将实时数据库的键值对中的值采用哈希表数据结构存储;将实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;
所述操作模块提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口。
进一步的,所述装置还包括订阅发布模块,所述订阅发布模块用于实现:基于所述映射模块,对数据库从表、行、字段值三种层级中的一种或者多种进行数据更新订阅,当订阅主题所指向的目标数据发生更新变化时将发布反馈信息给订阅者。
进一步的,所述装置还包括持久化模块,所述持久化模块用于将实时数据的元数据和/或指定数据库的历史数据持久化到关系数据库中,包括:
持久化配置单元,通过配置文件设定需要持久化的元数据和/或指定数据库的历史数据,以及目标关系数据库;
历史数据持久化单元,所述指定数据库的历史数据持久化,包括在实时数据库在运行时维护一个历史数据缓冲区,按照预定的条件将实时数据加上时间戳后追加到设定的关系数据库;
元数据持久化单元,所述元数据的持久化,按照预定的条件,将实时数据库中的元数据覆盖写入预定的关系数据库;所述元数据包括相对于实时数据相对固定的属性数据。
一种实时数据库的关系化实现系统,包括至少一个存储器、至少一个处理器;
所述存储器和处理器部署在至少一个计算机上,配置在多台计算机上时通过网络通信装置相连接;
所述存储器用于存储可执行的计算机程序指令,所述处理器用于执行所述计算机指令;
所述计算机指令被配置成使计算机实施根据权利要求1-15中任一项所述的方法。
本发明实现了实时数据库像关系数据库那样提供表结构支持,即数据按访问关系数据库表、行、字段值的方式进行操作,使得数据访问更符合业务处理逻辑和人性化思维,从而降低访问数据的难度,提高系统开发效率。基于关系化实现发布订阅机制和自定义订阅功能,方便对数据库进行高效的数据更新监控,应用于轨道交通综合监控管理中,能够提高监控管理的效率和准确性。参数数据及元数据持久化操作,方便对历史数据进行追溯、分析,本发明中,在数据库服务端实现持久化,从数据所在端直接将数据写入关系数据库,提高了效率。
应理解的是,前面的一般描述和下面的详细描述都是示例性的,并且意图在于提供要求保护的技术的进一步说明。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。除非明确指出,否则附图不应视为按比例绘制。在附图中,相同的参考标号通常代表相同组件或步骤。在附图中:
图1是本公开以键值对存储的实时数据库对应到关系型数据库表的映射图;
图2是本公开实时数据库发布订阅机制流程图;
图3是本公开实时数据库关系化实现装置的结构示意图;
图4是本公开实时数据库关系化实现系统的结构示意图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本文所描述的实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
本实施例以Redis为实时数据库实例,以实际应用中轨道综合监控系统为数据库应用系统,对本发明所提供的实时数据库的关系化实现方法做详细说明。但不局限于所述的实时数据库实例和轨道综合监控系统,任何以键值对存储的数据库和任何需要使用这类数据库的实际应用系统,可以根据本实施例自行调整,达到同样的技术效果。
图1示出了键值对存储的实时数据库与关系型数据库表的对应关系。在轨道交通综合监控系统应用中,来自大量传感器等数据信息以键值对存储在Redis实时数据库中,图1所示的database是实时数据库存储数据的单元。实际应用中,关系数据库是另一种成熟的数据库存储形式,主要以包含行、列的表来组织存储数据,关系型数据库更贴近现实世界,更容易理解和进行操作。图1所示的table(表)是将实时数据库的database从逻辑上对应为关系数据库表,以便提供像访问关系数据库一样的数据操作,但并不存储为表。
实现上述实时数据库与关系数据库表的对应体现在表、行、字段值三个层级:
实时数据库的一个database对应关系数据库的一个表;Redis的database是由id(整数类型)唯一标识的数据空间,在关系数据库中,用表的id唯一标识一个表,将实时数据库database的id通过配置文件对应为表的id。同时发人员往往使用自定义的表名(字符串类型)唯一标识一个表,因此需要作一个表名到id的映射,将用户定义的表名映射到相应的id,这种映射可以也通过文件配置的方式实现。当用户(如,使用数据库做系统开发的开发人员)使用表名通过实时数据库客户端访问和操作一个表中的数据时,客户端通过表名与表id、表id与database id两种配置文件找到对应的实时数据库database,从而实现实际上操作的是相应database中的数据。
在实时数据库封装的客户端与实时数据库的访问和操作中,使用id标识确定操作目标,减少了实现功能的代码量,降低了错误可能性;而客户端提供给编程人员的接口中的参数为表名是为了便于编程人员进行业务开发。
实时数据库Redis中的一个键值对对应关系数据库中的一行数据,所述键值对的值采用哈希(hash)数据结构。
哈希结构,即散列表,是根据关键码值(Key value)而直接进行访问的数据结构。在Redis中一个键值对的值,即一个哈希结构可以包含多个键值对(关键码值),该哈希结构中的键值对的键是字符串形式的字段名称。
实时数据库Redis一个键值对中的哈希可以包含多个属性键值对,一个属性键值对应关系数据库中某一行的一个字段和字段值。
如此,实现了实时数据库与Redis之间表、行、列三个方面的对应。在上述实时数据库存储方式(哈希结构作为键值对值类型)和与关系数据库逻辑对应的基础上,进一步地,提供按照关系数据库访问方式访问数据、读写数据的接口,从而实现实时数据库关系化操作。
本实施例中,以字段的读取为例阐述实时数据库关系化访问的具体操作方式,其他关系数据库操作,如更新字段值,查询多行记录等与本实施例类似,本领域技术人员能够根据本实施例的启发实现。
以使用Redis的轨道综合监控系统为例:
实时数据库一个database中存储了一列列车的空气环境信息,该database通过配置文件对应于表“列车1环境表”。当需要获取列车1的车厢A的温度信息时,调用根据本发明封装后的Redis的客户端接口:
temperature=query(table“列车1环境表”,row“车厢A”,field“温度”);
该接口实现逻辑如下:
从配置文件中读取表名与数据库id的对应关系,根据参数table进行检索,确定实际要进行操作的database的唯一标志:id;这个id标识了实时数据库中的不同数据空间。
根据id检索到相应的数据空间后,再根据参数row检索到要访问的哈希键值对,最后在键值对中找到field对应的属性值。
在上述查询过程中,若查找不到对应的行或属性值,则返回空(null)。对业务开发人员来说,更习惯访问非关系型数据,通过提供这种基于二维表模型的接口可以使他们快速应用,提升开发效率。另外,在接口中使用表名、行、属性名,更贴合业务使用场景,尤其是在轨道交通综合监控系统这样具有成百上千个复杂的数据表场景中,友好的访问接口大大提高了工作效率,降低了错误风险。
基于这种逻辑数据模型及相应数据结构存取方式,本发明进一步地还提供了一种对实时数据库的改进的订阅发布实现方法,所述订阅发布实现基于上述实时数据库关系化方法所实现的数据库。
在轨道交通综合监控应用中,有需要对列车各车厢的环境进行监控的需求,如对列车的温度、湿度等大气环境进行检测。列车通过传感器将采集到的温度、湿度信息定时发送到实时数据库,轨道综合监控系统根据实时数据库中数据的变化进行监测,当更新后的数据信息异常时,通知轨道综合监控系统,方便监控人员及时发现列车环境问题并采取措施。下面以Redis作为实时数据库为例,结合上述应用,对关系化的实时数据库的发布订阅功能做详细介绍。
实时数据库Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分:发布者,订阅者和主题(或称频道)。发布和订阅由Redis客户端完成。主题是一个全局唯一的订阅内容的描述(一个字符串),主题和所有订阅了主题的客户端信息保存在服务器中。下面示例性地说明发布订阅的工作步骤:
客户端A、客户端B作为订阅者订阅了一个主题,如订阅主题“列车1:车厢A:温度”;
服务端保存上述订阅信息,包括保存订阅主题的内容描述和订阅了此主题的客户端A、客户端B;
客户端C发布信息,如:publish“列车1:车厢A:温度”20,根据服务端记录的所有订阅了主题“列车1:车厢A:温度”的客户端,分别发送消息给这些客户端:客户端A、客户端B。
本实施例中,基于上述数据库的发布工作原理,实现了对实时数据库在表、行、字段值三个层次的数据更新的监控。在Redis源码中新增更新数据的接口,客户端通过调用该接口实现数据更新;该接口被调用后,判断更新的数据所在表、行、属性值三个层级对应的主题是否被客户端订阅;若有则将数据发布到相应客户端。具体如下:
a)对整个表的数据进行监控:通过客户端将表的名称,如“列车1”当作主题,进行订阅,当表中任何记录发生更新时,将通过客户端发送到订阅了主题“列车1”的所有客户端;
b)对一个表的某行数据进行监控:通过客户端将表的名称及该行的主键进行拼接后,如“列车1:车厢A”当作主题,进行订阅,当该行记录被更新,如该行中任何属性发生更新时,将通过客户端发送到订阅了主题“列车1:车厢A”的所有客户端;当该行记录被删除时,同样触发客户端发送消息。
c)对一个表中的一行数据的某个属性值进行监控:通过客户端将表的名称、该行的主键、字段值得属性名称进行拼接后,如“列车1:车厢A:温度”当作主题,进行订阅,当该行的温度字段被更新时,将通过客户端发送到订阅了主题“列车1:车厢A:温度”的所有客户端。
在上述b)c)两个步骤中,需要确保拼接后的主题全局唯一;可使用表的表名、行键、列名中不会出现的字符作为拼接时的连接符,上述步骤中,采用“:”作为连接符,也可用其它字符串作为连接符。进一步地,本公开还提供一种对实时数据库数据变动符合一定规则的监控方法,下面以轨道综合监控系统为例并结合图2做详细说明:
在轨道交通综合管理中,希望在设备故障或环境异常出现前收到相应的预警,因此需要能及时获取有异动的实时数据,故而要求实时数据库能及时向综合监控系统汇报相应的异常数据。针对此需求,本实施例基于Redis的主题订阅发布机制进行扩充,实现了面向数据值异常的订阅发布功能,具体如下:
综合监控系统自定义异动的规则,当数据更新满足规则时才将数据更新消息返回综合监控系统。
示例性的,所述的自定义规则包括:
1.更新后的数据值大于、小于或等于指定阈值
2.更新后的数据值与更新前的值的差值大于、小于或等于指定阈值图2是本公开实时数据库发布订阅机制流程图。
在步骤S201中,监控系统通过客户端订阅主题:
客户端A将表的名称、该行的键、列的属性名、规则进行拼接后当作主题,如“列车1:车厢A:气温:绝对值26+”,表示列车1上车厢A的气温绝对值大于26度,其中列车1为表的名称,实际应用中可以是车次X;以该主题进行订阅并保证该拼接后的主题全局唯一;
客户端B将表的名称、该行的键、列的属性名进行拼接后当作主题,如“列车1:车厢A:气温”,进行订阅,拼接后的主题应该全局唯一;
客户端C将表的名称、该行的键、列的属性名、规则进行拼接后当作主题,如“列车1:车厢A:气温:绝对值30+”,进行订阅,拼接后的主题全局唯一。
在步骤202中,客户端更新数据库中的记录,将列车1车厢A的气温值更新为27。
在步骤203中,实时数据库服务器引擎检索相关主题:遍历服务器记录的所有订阅主题,找出“列车1:车厢A:气温”相关的主题,并判断数据更新操作是否满足主题要求。上述步骤中,温度数据更新为27满足客户端A的订阅主题“列车1:车厢A:气温:绝对值26+”;数据更新满足客户端B的无规则限定的订阅主题“列车1:车厢A:气温”;数据更新不满足客户端C的订阅主题列车1:车厢A:气温:绝对值30+”。
在步骤204中,实时数据库通过客户端将数据更新消息“列车1:车厢A:气温”及更新值27发布到满足订阅主题的客户端,按照上述步骤,将消息发送到客户端A和客户端B。
在步骤205中,客户端接收到消息后通过回调函数通知轨道综合监控系统以便系统做出进一步处理。
实际应用中,多个客户端可以订阅同一个主题,一个客户端可以订阅多个不同的主题,订阅发布流程和原理与本实施例所公开的一致。监控系统的不同子系统可以通过各自的客户端对实时数据库进行数据监控订阅。
根据本公开所述的数据库发布订阅方法,也可以对属性值变化范围做监控,示例性的,将表的名称、该行的键、列的属性名、规则进行拼接后当作主题,如“列车1:车厢A:湿度:差值绝对值1%+=”进行订阅,来监控车厢内湿度变化的程度,拼接后的主题应该全局唯一;在车厢A的湿度数据更新时进行检测:遍历服务器记录的所有订阅主题,检查是否存在“列车1:车厢A:湿度”相关的主题,包括数据更新主题和数据更新规则主题,监测到“列车1:车厢A:湿度:差值绝对值1%+=”这一主题时,对主题中包含的规则进行解析:规则要求更新前后湿度差值大于或等于1%,判断数据更新是否满足规则。只有当更新满足规则时立即将数据发往订阅了相应主题的主题。订阅上述主题后,当列车1车厢A的气温发生更新,只有当更新后的湿度值与更新后的湿度值得差值绝对值大于或等于1%,如更新后的湿度值为49%,更新后的湿度值为51%,则通过客户端将数据更新的消息发送给轨道综合监控系统所使用的订阅客户端。客户端接收到消息后通过回调函数通知轨道综合监控系统以便系统做出进一步处理。
具体而言,本领域技术人员可以根据本发明的原理对所述具体部件进行选择性设置,只要能够实现本发明的控制方法的原理即可。
本发明所述的实时数据库的关系化实现方法,还包括:将实时数据的元数据和/或特定历史数据持久化到关系数据库中。下面结合综合监控系统应用做详细说明:
综合监控系统要求实时数据库能持久化(或归档)一些指定数据,这些数据包括一部分参数数据、几乎不会被修改的元数据信息(如某项数据的单位、物理意义等)、某些采集到的历史数据。参数数据及元数据会在实时数据库启动时被加载到实时数据库,历史数据则会在事件追溯、数据分析时用到。
Redis支持的数据持久化仅仅是将所有数据的最新值保存到一个文件中,不支持以二维表的形式存储,也不能存储历史数据值。现有的Redis实时数据持久化到关系数据库过程是,由中间模块,如web服务器访问实时数据库,先从实时数据库中读取数据到访问端,再将数据写入到关系数据库中。但在这种方案中,数据从实时数据库到关系数据库需要传输两次,会影响传输网络性能。本发明提出一种改进方法,在数据库服务端实现持久化,从数据所在端直接将数据写入关系数据库。数据持久化具体步骤如下:
1.通过配置文件设置要存放实时数据库表哪些数据、对应到关系数据的哪些表,即确定需要持久化的数据和存放的目标数据库;配置文件包括对需要保存为历史数据的数据库和元数据信息表的设置;
2.实时数据库维护一个缓存区(历史数据缓存区),通过采用了本发明提出的二维表映射方法,该缓存区也是一个二维表数据结构,用于临时存放历史数据,以追溯每个数据项的历史数据值。当按照系统预定的条件需要持久化数据时,将缓冲区的数据值之前添加一个8字节的时间戳,然后将此带有时间戳的数据追加写入到目标关系数据库;
3.当按照系统预定条件,如一定时间间隔,需要持久化元数据时,持久化程序从实时数据库按照配置文件的设置读取元数据信息,将元数据信息覆盖写入的目标关系数据库;
4.支持数据加载功能,实时数据库在启动时解析配置文件,自动从指定关系数据库的表中读取相应数据,并将最新数据加载到实时数据库中,供综合监控系统访问。
基于相同的发明构思,本公开还提供了一种实时数据库关系化实现装置,所述实时数据库关系化实现装置能够用于实现上述关系化实现方法。下面结合附图对所述实时数据库关系化实现装置的组成和工作原理做进一步说明。如图3所示,实时数据库关系化实现装置包括映射模块S301、操作模块S302、订阅发布模块S303和持久化模块S304。
其中,映射模块S301用于:
将实时数据库的database映射为关系型数据库的表;
将实时数据库的一个键值对映射为关系型数据库的一行记录;
将实时数据库的键值对中的值采用哈希表数据结构存储;
将实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;
所述映射模块包括上述database、键值对、哈希表的键值对的三种层级映射中的一种或者多种。
操作模块S302提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口。
将实时数据库的database映射为关系型数据库的表,包括:
将实时数据库database唯一标识与关系数据库表的唯一标识通过配置文件对应,将关系数据库表的唯一标识与关系数据库表的表名通过配置文件对应;
操作模块S302提供访问操作数据库表的接口,用户通过接口以访问数据库表的形式操作数据,接口实现程序通过上述配置文件,确定用户要访问的表所对应的实时数据库database,实际上操作的是实时数据库相应的database中的数据。
操作模块S302提供访问操作数据库行记录的接口,用户通过接口操作一个表中一行或者多行数据时,实际上操作的是实时数据库相应的键值对数据,从而实现了将实时数据库的一个键值对映射为关系型数据库的一行记录。
将实时数据库中键值对的值采用哈希表结构存储,操作模块S302提供访问操作数据库字段记录的接口,用户通过接口操作一个表中特定的字段值是时,实际上操作的是实时数据库相应的键值对的哈希表的属性字键值,从而实现了哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值。
本实施例中,所述实时数据库是Redis或者Memcached。
所述订阅发布模块S303用于对数据库从表、行、字段值三种层级中的一种或者多种进行数据更新订阅,当订阅主题所指向的目标数据发生更新变化时将发布反馈信息给订阅者。
所述的表层级的订阅包括:将表的名称当作订阅主题进行订阅,当表的数据更新,即实时数据库database更新时,将更新信息发往订阅了所述主题的客户端。
所述的行层级的订阅包括:将表的名称及行的键进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应键值对更新时,将更新信息发往订阅了所述主题的客户端。
所述的字段值层级的订阅包括:将表的名称、该行的键、字段名进行拼接后当作主题进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应哈希表的某个键值对更新时,将更新信息发往订阅了所述主题的客户端。
数据库的订阅发布模块还包括对数据库进行自定义规则主题的订阅,只有数据库的更新变化满足预定义规则时,才会将更新信息发送给订阅了主题的客户端。
所述的自定义规则包括:
更新后的数据值大于、小于或等于指定阈值;
或者,更新后的数据值与更新前的值的差值大于、小于或等于指定阈值。
所述持久化模块S304用于将实时数据的元数据、特定历史数据持久化到预定的关系数据库中。
所述元数据包括相对于实时数据相对固定的属性数据,所示历史数据是实时数据库运行过程中的产生的数据,保存历史数据用以回溯和分析运行状况。
通过配置文件设定需要持久化的元数据和/或特定历史数据,以及目标关系数据库;
所述特定历史数据持久化,包括在实时数据库在运行时维护一个历史数据缓冲区,按照预定的条件将实时数据加上时间戳后追加到设定的关系数据库;
所述元数据的持久化,按照预定的条件,将实时数据库中的元数据覆盖写入预定的关系数据库;
持久化的元数据用于在系统启动后,从关系数据库中加载到运行实时数据库中供运行时使用。
上述持久化的过程是从实时数据库的服务端直接写入关系数据库,而不经过中间件。
本发明的另一方面,提供一种实时数据库的关系化实现系统。如图4所示,所述系统包括至少一个存储器、至少一个处理器;
所述存储器和处理器部署在至少一个计算机上,配置在多台计算机上时通过网络通信装置相连接;
所述存储器用于存储可执行的计算机程序指令,所述处理器用于执行所述计算机指令;
所述计算机指令被配置成使计算机实施上述实时数据库的关系化实现方法。
本领域技术人员应该理解的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,但本领域的技术人员可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求书的范围。
Claims (20)
1.一种实时数据库的关系化实现方法,所述实时数据库是一种非关系型数据库,以键值对形式存储数据,所述方法包括:
将实时数据库的database映射为关系型数据库的表;
将实时数据库的一个键值对映射为关系型数据库的一行记录;
实时数据库的键值对中的值采用哈希表数据结构存储;
实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;
提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口;
所述方法包括上述database、键值对、哈希表的键值对的三种层级映射中的一种或者多种。
2.根据权利要求1所述的实时数据库的关系化实现方法,其特征在于,所述将实时数据库的database映射为关系型数据库的表,包括:
将实时数据库database唯一标识与关系数据库表的唯一标识通过配置文件对应,将关系数据库表的唯一标识与关系数据库表的表名通过配置文件对应;
用户通过所述接口以访问关系数据库表的形式操作数据,程序通过解析上述配置文件,确定用户要访问的表所对应的实时数据库database,实际上操作的是实时数据库相应的database中的数据。
3.根据权利要求1所述的实时数据库的关系化实现方法,其特征在于,所述的将实时数据库的一个键值对映射为关系型数据库的一行记录,包括:
用户通过所述接口以访问关系数据库表的形式操作表中一行或多行数据,程序实际上操作的是实时数据库相应的一个或多个键值对数据。
4.根据权利要求1所述的实时数据库的关系化实现方法,其特征在于,所述将实时数据库中键值对的值采用哈希表结构存储,哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值,包括:
用户通过所述接口以访问关系数据库表的形式操作表中特定的字段值,程序实际上操作的是实时数据库相应的键值对的哈希表的属性字键值。
5.根据权利要求1所述的实时数据库的关系化实现方法,其特征在于,所述实时数据库是Redis或者Memcached。
6.根据权利要求1所述的实时数据库的关系化实现方法,其特征在于,所述关系化实现方法还包括对数据库数据进行更新订阅,具体为:
对数据库从表、行、字段值三种层级中的一种或者多种进行数据更新订阅,当订阅主题所指向的目标数据发生更新变化时将发布反馈信息给订阅者。
7.根据权利要求6所述的数据更新订阅方法,其特征在于,所述的表层级的订阅包括:将表的名称当作订阅主题进行订阅,当表的数据更新,即实时数据库database更新时,将更新信息发往订阅了所述主题的客户端。
8.根据权利要求6所述的数据更新订阅方法,其特征在于,所述的行层级的订阅包括:将表的名称及行的键进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应键值对更新时,将更新信息发往订阅了所述主题的客户端。
9.根据权利要求6所述的数据更新订阅方法,其特征在于,所述的字段值层级的订阅包括:将表的名称、该行的键、字段名进行拼接后当作主题进行拼接后当作订阅主题进行订阅,当被订阅行的数据更新,即实时数据库中的对应哈希表的某个键值对更新时,将更新信息发往订阅了所述主题的客户端。
10.根据权利要求6-9中任一项所述的数据更新订阅方法,其特征在于,还包括:对数据库进行自定义规则主题的订阅,只有数据库的更新变化满足预定义规则时,才会将更新信息发送给订阅了主题的客户端。
11.根据权利要求10所述的数据更新订阅方法,所述的自定义规则包括:
更新后的数据值大于、小于或等于指定阈值;
或者,更新后的数据值与更新前的值的差值大于、小于或等于指定阈值。
12.根据权利要求1所述的实时数据库的关系化实现方法,还包括:将实时数据的元数据和/或特定历史数据持久化到关系数据库中。
13.根据权利要求12所述的实时数据库的关系化实现方法,其特征在于,所述的将实时数据的元数据和/或指定数据库的历史数据持久化到关系数据库中包括:
通过配置文件设定需要持久化的元数据和/或指定数据库的历史数据,以及目标关系数据库;
所述指定数据库的历史数据持久化,包括在实时数据库在运行时维护一个历史数据缓冲区,按照预定的条件将实时数据加上时间戳后追加到设定的关系数据库;
所述元数据的持久化,按照预定的条件,将实时数据库中的元数据覆盖写入预定的关系数据库;
所述元数据包括相对于实时数据相对固定的属性数据。
14.根据权利要求12或13所述的实时数据库的关系化实现方法,其特征在于,还包括将持久化到关系数据库中的元数据加载到运行实时数据库中供运行时使用。
15.根据权利要求12或13所述的实时数据库的关系化实现方法,其特征在于,所述的将实时数据的元数据和/或特定历史数据持久化到关系数据库是将实时数据的元数据和/或特定历史数据对应为关系数据库数据后,从服务端直接写入关系数据库,而不经过中间件。
16.一种轨道交通综合监控方法,其特征在于:
将多种信号采集设备收集的数据存储在实时数据库中并实时更新;
所述实时数据库采用上述权利要求1-15中任一项所述的实时数据库的关系化实现方法进行管理。
17.一种实时数据库的关系化实现装置,所述实时数据库是一种非关系型数据库,以键值对形式存储数据,所述装置包括映射模块和操作模块:
所述映射模块用于实现以下三种映射功能中的至少一种:
1)将实时数据库的database映射为关系型数据库的表;
2)将实时数据库的一个键值对映射为关系型数据库的一行记录;
3)将实时数据库的键值对中的值采用哈希表数据结构存储;将实时数据库中键值对的值,即上述哈希表中的一个属性键值对对应为关系数据库的一个字段和字段值;
所述操作模块提供按照关系型数据库操作方式来操作实际存储于实时数据库数据的接口。
18.根据权利要求17所述的实时数据库的关系化实现装置,其特征在于,所述装置还包括订阅发布模块,所述订阅发布模块用于实现:
基于所述映射模块,对数据库从表、行、字段值三种层级中的一种或者多种进行数据更新订阅,当订阅主题所指向的目标数据发生更新变化时将发布反馈信息给订阅者。
19.根据权利要求17所述的实时数据库的关系化实现装置,其特征在于,所述装置还包括持久化模块,所述持久化模块用于将实时数据的元数据和/或指定数据库的历史数据持久化到关系数据库中,包括:
持久化配置单元,通过配置文件设定需要持久化的元数据和/或指定数据库的历史数据,以及目标关系数据库;
历史数据持久化单元,所述指定数据库的历史数据持久化,包括在实时数据库在运行时维护一个历史数据缓冲区,按照预定的条件将实时数据加上时间戳后追加到设定的关系数据库;
元数据持久化单元,所述元数据的持久化,按照预定的条件,将实时数据库中的元数据覆盖写入预定的关系数据库;所述元数据包括相对于实时数据相对固定的属性数据。
20.一种实时数据库的关系化实现系统,包括至少一个存储器、至少一个处理器;
所述存储器和处理器部署在至少一个计算机上,配置在多台计算机上时通过网络通信装置相连接;
所述存储器用于存储可执行的计算机程序指令,所述处理器用于执行所述计算机指令;
所述计算机指令被配置成使计算机实施根据权利要求1-15中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220265.7A CN109542892B (zh) | 2018-10-19 | 2018-10-19 | 一种实时数据库的关系化实现方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811220265.7A CN109542892B (zh) | 2018-10-19 | 2018-10-19 | 一种实时数据库的关系化实现方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109542892A true CN109542892A (zh) | 2019-03-29 |
CN109542892B CN109542892B (zh) | 2020-10-23 |
Family
ID=65844133
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811220265.7A Active CN109542892B (zh) | 2018-10-19 | 2018-10-19 | 一种实时数据库的关系化实现方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542892B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515927A (zh) * | 2019-08-28 | 2019-11-29 | 中国工商银行股份有限公司 | 数据处理方法及其系统、电子设备和介质 |
CN110569249A (zh) * | 2019-08-07 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 一种数据变更推送方法、装置及电子设备 |
CN110716913A (zh) * | 2019-07-31 | 2020-01-21 | 安徽四创电子股份有限公司 | 一种Kafka与Elasticsearch数据库数据的互相迁移方法 |
CN111078718A (zh) * | 2019-12-30 | 2020-04-28 | 广州酷狗计算机科技有限公司 | 频率控制方法、装置、设备以及计算机存储介质 |
CN111475263A (zh) * | 2020-04-10 | 2020-07-31 | 上海移为通信技术股份有限公司 | 事件处理方法、设备及存储介质 |
CN111966756A (zh) * | 2020-08-21 | 2020-11-20 | 西安寰宇卫星测控与数据应用有限公司 | 表格数据自动同步方法、装置、计算机设备、存储介质 |
CN111966690A (zh) * | 2020-08-21 | 2020-11-20 | 西安寰宇卫星测控与数据应用有限公司 | 加载表格全量数据的方法、装置、计算机设备、存储介质 |
CN112612786A (zh) * | 2020-11-24 | 2021-04-06 | 北京思特奇信息技术股份有限公司 | 一种大数据量的行列转换方法及系统 |
CN112699409A (zh) * | 2020-12-31 | 2021-04-23 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法、装置和电子设备 |
CN115062012A (zh) * | 2022-05-24 | 2022-09-16 | 中汽创智科技有限公司 | 数据处理方法、装置、存储介质和电子设备 |
CN115062012B (zh) * | 2022-05-24 | 2024-10-25 | 中汽创智科技有限公司 | 数据处理方法、装置、存储介质和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510209A (zh) * | 2009-03-30 | 2009-08-19 | 北京金山软件有限公司 | 实现实时检索的方法、系统和服务器 |
CN102750353A (zh) * | 2012-06-08 | 2012-10-24 | 清华大学 | 一种在键值库中进行分布式数据分析的方法 |
CN104578414A (zh) * | 2014-12-30 | 2015-04-29 | 国家电网公司 | 一种基于svg实现智能站保护动作可视化的方法 |
CN104657467A (zh) * | 2015-02-11 | 2015-05-27 | 南京国电南自美卓控制系统有限公司 | 一种实时内存数据库的带订阅/发布的数据推送框架 |
CN105100815A (zh) * | 2015-07-22 | 2015-11-25 | 电子科技大学 | 基于时间序列的流式数据分布式元数据管理方法 |
-
2018
- 2018-10-19 CN CN201811220265.7A patent/CN109542892B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101510209A (zh) * | 2009-03-30 | 2009-08-19 | 北京金山软件有限公司 | 实现实时检索的方法、系统和服务器 |
CN102750353A (zh) * | 2012-06-08 | 2012-10-24 | 清华大学 | 一种在键值库中进行分布式数据分析的方法 |
CN104578414A (zh) * | 2014-12-30 | 2015-04-29 | 国家电网公司 | 一种基于svg实现智能站保护动作可视化的方法 |
CN104657467A (zh) * | 2015-02-11 | 2015-05-27 | 南京国电南自美卓控制系统有限公司 | 一种实时内存数据库的带订阅/发布的数据推送框架 |
CN105100815A (zh) * | 2015-07-22 | 2015-11-25 | 电子科技大学 | 基于时间序列的流式数据分布式元数据管理方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110716913B (zh) * | 2019-07-31 | 2022-12-20 | 安徽四创电子股份有限公司 | 一种Kafka与Elasticsearch数据库数据的互相迁移方法 |
CN110716913A (zh) * | 2019-07-31 | 2020-01-21 | 安徽四创电子股份有限公司 | 一种Kafka与Elasticsearch数据库数据的互相迁移方法 |
CN110569249A (zh) * | 2019-08-07 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 一种数据变更推送方法、装置及电子设备 |
CN110515927A (zh) * | 2019-08-28 | 2019-11-29 | 中国工商银行股份有限公司 | 数据处理方法及其系统、电子设备和介质 |
CN111078718A (zh) * | 2019-12-30 | 2020-04-28 | 广州酷狗计算机科技有限公司 | 频率控制方法、装置、设备以及计算机存储介质 |
CN111078718B (zh) * | 2019-12-30 | 2023-04-07 | 广州酷狗计算机科技有限公司 | 频率控制方法、装置、设备以及计算机存储介质 |
CN111475263A (zh) * | 2020-04-10 | 2020-07-31 | 上海移为通信技术股份有限公司 | 事件处理方法、设备及存储介质 |
CN111966690A (zh) * | 2020-08-21 | 2020-11-20 | 西安寰宇卫星测控与数据应用有限公司 | 加载表格全量数据的方法、装置、计算机设备、存储介质 |
CN111966756A (zh) * | 2020-08-21 | 2020-11-20 | 西安寰宇卫星测控与数据应用有限公司 | 表格数据自动同步方法、装置、计算机设备、存储介质 |
CN111966756B (zh) * | 2020-08-21 | 2024-03-12 | 西安寰宇卫星测控与数据应用有限公司 | 表格数据自动同步方法、装置、计算机设备、存储介质 |
CN111966690B (zh) * | 2020-08-21 | 2024-07-12 | 西安寰宇卫星测控与数据应用有限公司 | 加载表格全量数据的方法、装置、计算机设备、存储介质 |
CN112612786A (zh) * | 2020-11-24 | 2021-04-06 | 北京思特奇信息技术股份有限公司 | 一种大数据量的行列转换方法及系统 |
CN112699409A (zh) * | 2020-12-31 | 2021-04-23 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法、装置和电子设备 |
CN115062012A (zh) * | 2022-05-24 | 2022-09-16 | 中汽创智科技有限公司 | 数据处理方法、装置、存储介质和电子设备 |
CN115062012B (zh) * | 2022-05-24 | 2024-10-25 | 中汽创智科技有限公司 | 数据处理方法、装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109542892B (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109542892A (zh) | 一种实时数据库的关系化实现方法、装置及系统 | |
CN112534396B (zh) | 数据库系统中的日记表 | |
Sumbaly et al. | The big data ecosystem at linkedin | |
CN102741843B (zh) | 从数据库中读取数据的方法及装置 | |
US8555018B1 (en) | Techniques for storing data | |
US8595381B2 (en) | Hierarchical file synchronization method, software and devices | |
CN115129736B (zh) | 基于规则引擎的规则事件动态加载与更新方法及相关设备 | |
Chavan et al. | Survey paper on big data | |
US20140229435A1 (en) | In-memory real-time synchronized database system and method | |
Tang et al. | Deferred lightweight indexing for log-structured key-value stores | |
US20200201863A1 (en) | Workflow driven database partitioning | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN112148718A (zh) | 一种用于城市级数据中台的大数据支撑管理系统 | |
CN108153804B (zh) | 一种对称分布式文件系统的元数据日志更新方法 | |
CN103186622A (zh) | 一种全文检索系统中索引信息的更新方法以及装置 | |
US7542963B2 (en) | Method and system for journaling and accessing sensor and configuration data | |
CN103902434A (zh) | 一种报警日志管理方法及系统 | |
CN110457358A (zh) | 一种信息采集方法、装置、服务器及计算机可读存储介质 | |
US8566292B2 (en) | Method and system for journaling and accessing sensor and configuration data | |
CN117312370A (zh) | 数据查询方法、系统及相关设备 | |
US10162597B1 (en) | Identifying IO access pattern in unique database structures | |
CN107609038A (zh) | 数据清理方法和装置 | |
US9256626B2 (en) | Maintaining multiple copy versions of component values in a system | |
CN116302206B (zh) | 一种基于MQ的presto数据源热加载方法 | |
CN118152357A (zh) | 数据湖的数据存储方法及装置、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |