CN113961637B - 一种基于数据库的数据融合方法、系统和电子设备 - Google Patents
一种基于数据库的数据融合方法、系统和电子设备 Download PDFInfo
- Publication number
- CN113961637B CN113961637B CN202111584555.1A CN202111584555A CN113961637B CN 113961637 B CN113961637 B CN 113961637B CN 202111584555 A CN202111584555 A CN 202111584555A CN 113961637 B CN113961637 B CN 113961637B
- Authority
- CN
- China
- Prior art keywords
- data
- virtual table
- time sequence
- fusion
- name
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于数据库的数据融合方法、系统和电子设备,其中方法包括:将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表;基于预设语法的融合查询语句解析驱动虚拟表及时序虚拟表,得到解析结果,并提取解析结果中表征同一目标对象的数据标识所在数据列;根据表征同一目标对象的数据标识之间的对应关系对解析结果中的数据进行数据融合,得到融合数据,并将融合数据映射到融合虚拟表以完成数据融合。本发明提供的技术方案解决了使用多条代码分别从两个数据库提取数据再使用融合代码融合数据的操作方式繁琐问题。
Description
技术领域
本发明涉及工业数据库领域,具体涉及一种基于数据库的数据融合方法、系统和电子设备。
背景技术
在工业大数据存储领域,除了传统的关系型数据库外,还有一种用来存储大量测量数据的时序数据库,如influxDB等。时序数据库不单是一个数据库,而是一个系统,包括:各类工业接口采集协议、海量检测数据存储、和对外提供的接口。
在一般时序数据库中,采集和数据存储都很完善,而对外提供的接口往往都是未经加工的原始接口,在使用时会遇到功能不完善和性能瓶颈。业务数据在关系数据库使用SQL语法查询,时序数据库是独立接口且不支持关系数据库标准的SQL,因此加大了定制开发工作量。
主流的时序数据库都支持基于Java数据库连接(Java Database Connectivity,JDBC)使用SQL语法来进行查询数据,如PI。而在大多数工业场景下,查询一个设备的数据需要同时查询出设备的基本信息和设备的状态,而设备基本信息存储在关系数据库中,设备的状态信息存储在时序数据库中。虽然关系数据库和时序数据库都支持JDBC,但又只支持各自的库。实际开发中需要先用SQL语句到Mysql中查询设备信息,再用另一种SQL语句到时序数据库中查询设备的状态信息,最后再通过代码进行两个结果集的合并,降低了查询效率。
发明内容
有鉴于此,本发明实施方式提供了一种基于数据库的数据融合方法和融合系统,从而解决了使用多条代码分别从两个数据库提取数据再使用融合代码融合数据的操作方式繁琐问题。
根据第一方面,本发明实施例提供了一种基于数据库的数据融合方法,所述方法包括:将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表;基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在数据列;根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,并将所述融合数据映射到融合虚拟表以完成数据融合。
可选地,所述预设语法的融合查询语句包括:根据动作词、驱动表名、时序表名、驱动列名、时序列名、关联条件和位置条件生成所述预设语法的融合查询语句;所述动作词用于执行数据提取以及数据关联的动作;所述关联条件用于根据所述驱动列名和所述时序列名关联所述驱动虚拟表和时序虚拟表中的数据;所述位置条件用于确定提取所述驱动虚拟表和所述时序虚拟表中数据时的具体位置;所述驱动列名对应所述驱动虚拟表中列数据的名称,所述时序列名对应所述时序虚拟表中列数据的名称;所述驱动表名和所述时序表名分别对应所述驱动虚拟表和所述时序虚拟表的名称。
可选地,所述基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在数据列,包括:拆分所述查询语句的关键字,得到拆分结果;利用所述拆分结果中的驱动表名和位置条件提取所述驱动虚拟表中的第一数据源;利用所述拆分结果中的时序表名和位置条件提取所述时序虚拟表中的第二数据源,所述解析结果由所述第一数据源和第二数据源组成;提取所述第一数据源和第二数据源中表征同一目标对象的数据标识所在数据列。
可选地,所述根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,包括:将所述第一数据源和所述第二数据源进行笛卡尔积运算,并将运算结果作为第三数据源;基于所述表征同一目标对象的数据标识所在数据列中一致的数据标识提取所述第三数据源中的目标数据行组成所述融合数据。
可选地,在所述基于所述表征同一目标对象的数据标识所在数据列中一致的数据标识提取所述第三数据源中的目标数据行组成所述融合数据之后,所述方法还包括:删除所述目标数据行中的无关列,并将保留的结果作为所述融合数据,所述无关列为驱动列名和时序列名未提到的列。
可选地,所述利用所述拆分结果中的驱动表名和位置条件提取所述驱动虚拟表中的第一数据源,包括:根据所述位置条件确定驱动虚拟表中被提取的第一类数据行;将所述第一类数据行中驱动列名和关联条件提到的数据列作为所述第一数据源。
可选地,所述利用所述拆分结果中的时序表名和位置条件提取所述时序虚拟表中的第二数据源,包括:根据所述位置条件确定时序虚拟表中被提取的第二类数据行;将所述第二类数据行中时序列名和关联条件提到的数据列作为所述第二数据源。
根据第二方面,本发明实施例提供了一种基于数据库的数据融合系统,所述融合系统基于JDBC创建,所述系统包括:数据源映射模块,用于将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表;解析模块,用于基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在数据列;结果映射模块,用于根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,并将所述融合数据映射到融合虚拟表以完成数据融合。
根据第三方面,本发明实施例提供了一种电子设备,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
根据第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面,或者第一方面任意一种可选实施方式中所述的方法。
本发明技术方案,具有如下优点:
本发明实施例提供的一种基于数据库的数据融合方法,首先将时序数据库和关系数据库中的数据分别映射到驱动虚拟表和时序虚拟表中,并根据一句预设语法的查询语句即可将驱动虚拟表中的设备信息和时序虚拟表中的状态信息关联起来,映射到融合虚拟表中,避免了使用三种SQL语句分别去两个数据库中调用数据再进行合并的繁琐操作。
此外,在融合方法中,按照数据的具体位置条件,直接解析到不同数据库中需要的目标数据,并根据不同数据库中的相同数据列将两类目标数据进行笛卡尔积计算,从而实现两类目标数据中的表示相同位置和相同设备的数据准确匹配。针对不同的查询情况,映射了多种时序虚拟表,提高了不同场景的查询效率。以上方法运行在基于JDBC规范创建的接口(Application Programming Interface,API),即是一种数据库视图,当某项目需要同时进行关系数据库系统和时序数据库系统的数据调用时,将该接口的驱动包放入对应的工程目录下,即可对接两个数据库各自的接口,实现上述步骤描述的功能,用户通过该API与数据库系统对接,大大提高了查询效率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例的一种基于数据库的数据融合方法的步骤示意图;
图2为本发明实施例的一种基于数据库的数据融合系统的结构示意图;
图3为本发明实施例的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
请参阅图1,本发明实施例提供的一种基于数据库的数据融合方法,具体包括如下步骤:
步骤S101:将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表。具体地,为了解决传统技术中查询数据常常使用多条代码分别从关系数据库和时序数据库中提取数据再进行融合的处理,本发明实施例中,是通过建立一种数据库视图,来自动融合上述步骤,实现只输入一条代码即可分别从两个数据库中提取数据的功能,从而提高数据处理的效率。数据库视图并不在数据库中实际存在,而是一种虚拟表,行和列数据通过自定义查询中使用的表,在使用视图时动态生成。即视图就是执行查询语句后所返回的结果集,所以在创建视图的时候,主要就是创建这条SQL查询语句的语法,以及设置通过解析预设语法计算机需要进行的工作步骤。本发明实施例中,在调用数据库视图的API之前,声明头文件时即通知计算机,先将关系数据库中的数据映射到驱动虚拟表,并映射时序数据库中的数据到时序虚拟表,以便于后续数据的提取操作。其中驱动虚拟表和时序虚拟表是数据库视图中的基表,可以将其视为视图中的子视图。
步骤S102:基于预设语法的融合查询语句解析驱动虚拟表及时序虚拟表,得到解析结果,并提取解析结果中表征同一目标对象的数据标识所在数据列。具体地,计算机通过解析用户输入的预设语法的SQL查询语句,开始执行解析过程,从而分别从关系数据库中和时序数据库中提取用户所需的数据,并找到两个表中表征同一目标对象的数据标识所在数据列,在本发明实施例中,所需的数据列为表征同一个设备数据编号的数据列。
步骤S103:根据表征同一目标对象的数据标识之间的对应关系对解析结果中的数据进行数据融合,得到融合数据,并将融合数据映射到融合虚拟表以完成数据融合。具体地,通过检测两个虚拟表中表征同一目标对象的数据标识的数据列,其每行对应的数据标识是否一致,将关系数据和时序数据中数据标识一致的数据行进行一一对应的关联,从而得到关联后的融合数据。最后将融合数据映射到融合虚拟表从而完成数据融合。
具体地,在一实施例中,步骤S102中预设语法的融合查询语句包括:
步骤S201:根据动作词、驱动表名、时序表名、驱动列名、时序列名、关联条件和位置条件生成预设语法的融合查询语句;动作词用于执行数据提取以及数据关联的动作;关联条件用于根据驱动列名和时序列名关联驱动虚拟表和时序虚拟表中的数据;位置条件用于确定提取驱动虚拟表和时序虚拟表中数据时的具体位置;驱动列名对应驱动虚拟表中列数据的名称,时序列名对应时序虚拟表中列数据的名称;驱动表名和时序表名分别对应驱动虚拟表和时序虚拟表的名称。
具体地,通过创建关键字,以根据关键字实现不同的功能,从而在计算机解析到预设关键字时,完成预设动作,实现一句代码提取数据和融合数据的功能。例如:在一实施例中,动作词关键字设为selectd(选择)、from(从),分别表示选择具体的虚拟表,并从虚拟表中进行具体的列数据提取操作;驱动表名关键字设为Dec_infod、时序表名关键字设为psrealdata,分别表示驱动虚拟表和时序虚拟表的名称,并用于告知计算机提取动作具体到哪一个虚拟表;驱动列名关键字和时许列名关键字分别在本实施例中设置为d.xxx和a.xxx的形式,例如输入查询列名d.name、d.code、a.realval的命令,计算机检测出驱动列名d.name、d.code属于驱动虚拟表中的数据列,时序列名a.realval属于时序虚拟表中的数据列,从而分别将对应的列的数据从关系数据库和时序数据库中映射到各自虚拟表中,同时计算机自动将数据库中的其他列补充进入对应的虚拟表中;在本实施例中,关联条件关键字为d.tag=a.taglongname,计算机通过判断表关联条件,将驱动虚拟表和时序虚拟表的中对应的d.tag列和a.taglongname列中的标识做一一匹配,从而将两个表的对应行关联到一起,得到融合数据。在关键字中还设置有位置条件,用于确定虚拟表中需要查询的具体范围,在没有位置条件之前关键字只能实现整列数据的提取,其中很多数据并不是用户所需要的,因此通过设置位置条件,来确定用户所需数据的具体位置,提高查询效率。
具体地,在一实施例中,位置条件关键字设置为表示虚拟表中具体行数据,在已知的列数据基础上,在查询指令中追加列中的内容作为位置条件,以将包含指定内容的数据格子对应的整行进行提取和显示。通过设置包含上述关键字的语法格式,实现一句代码关联两个数据库的操作。本发明实施例创建的语法格式为:动作词驱动列名,时序列名动作词驱动表名动作词时序表名动作词关联条件动作词位置条件,本发明并不以此为限。例如,输入SQL语句为(为了显示清楚进行了换行,在计算机读取时,回车等同于预设格式中的空格):
select d.name,d.code,a.realval from Dec_infod
innerjoin psrealdataa on d.tag=a.taglongname
where d.namein('设备01','设备02')
其中,“select、from、innerjoin、on、where”为动作词,表示了执行提取数据和关联的动作;“d.name,d.code,a.realval”为列名,表示需要获取设备名称、设备标号、和设备状态,驱动列名和时序列名分别在本实施例中设置为d.xxx和a.xxx的形式;“d.tag=a.taglongname”表示关联条件;“d.namein('设备01','设备02')”为位置条件,表示定位到设备01和设备02的数据,从而查询这两个设备的状态。
通过上述指令返回的结果如表1所示:
表1.查询结果返回表
name | code | realval |
设备01 | A | 1 |
设备02 | B | 0 |
可见通过上述查询语句,利用数据库视图减少了分别从两个表中提取数据的动作代码,并减少了分别将两个结果进行合并处理的多步动作代码。减少了查询步骤,提高了查询效率。
具体地,在一实施例中,基于上述步骤S201,上述步骤S102具体包括如下步骤:
步骤S202:拆分查询语句的关键字,得到拆分结果。具体地,计算机首先根据预设语法将输入的整句查询语句拆分为多个关键字,从而对关键字进一步解析,执行查询数据的动作。
步骤S203:利用拆分结果中的驱动表名和位置条件提取驱动虚拟表中的第一数据源。具体地,在得到拆分的关键字结果后,计算机通过语句中的驱动表名去指定的驱动虚拟表中提取位置条件中描述的数据行,之后将提取的数据行作为第一数据源并存入第一临时集合,以供后续使用。
步骤S204:利用拆分结果中的时序表名和位置条件提取时序虚拟表中的第二数据源,解析结果由第一数据源和第二数据源组成。具体地,在得到拆分的关键字结果后,计算机通过语句中的时序表名去指定的时序虚拟表中提取位置条件中描述的数据行,之后将提取的数据行作为第二数据源存入第二临时集合,以供后续使用。
步骤S205:提取第一数据源和第二数据源中表征同一目标对象的数据标识所在数据列。具体地,在两个虚拟表中指定位置的数据分别提取出来后,需要分别将将两个表中具有相同标识或者列名称的数据列提取标定,例如时序数据库中的数据某一列的名称为“AAB”该列中的内容表示目标设备每条数据的唯一标识,关系数据库中的某一列名称为“AAC”该列中的内容同样表示目标设备每条数据的唯一标识,从而后续的数据融合跟据这两列数据中的内容的对应关系进行融合。
具体地,在一实施例中,上述步骤S103,具体包括如下步骤:
步骤S206:将第一数据源和第二数据源进行笛卡尔积运算,并将运算结果作为第三数据源。具体地,将第一数据源与第二数据源按照数据行的形式进行笛卡尔积运算,并将得到的运算结果作为第三数据源存入第三临时集合,为最终的数据关联做准备。笛卡尔积运算的具体步骤为现有技术,在此不再赘述。
步骤S207:基于表征同一目标对象的数据标识所在数据列中一致的数据标识提取第三数据源中的目标数据行组成融合数据。具体地,关联条件是根据驱动表名和时序表名设定的,在一实施例中,查询语句的关联条件为“d.tag=a.taglongname”,计算机读取到该关键字后,将步骤S206得到的笛卡尔积表中对应d.tag列和a.taglongname列中的数据标识进行一一的对照,并将内容一致的数据行留下,删除其他数据行,从而得到了删除第一部分干扰的待处理数据行。
具体地,在一实施例中,在上述步骤S207之后,还包括:
步骤S208:删除待处理数据行中的无关列,并将保留的结果作为融合数据,无关列为驱动列名和时序列名未提到的列。具体地,待处理数据行,中虽然只剩下满足位置条件且满足关联条件的数据行,但是其中还有其它干扰数据列,因此将驱动列名和时序列名未提到的列删除,消除干扰列,得到融合数据,并将融合数据映射到融合虚拟表中。例如:根据步骤S201中的查询语句,利用位置条件和关联条件得到了设备01和设备02两行数据,但是这两行数据中还包含了ID列d.id、关联条件中的列名d.tag等无关列,而我们只需要驱动列名和时序列名提到的d.name、d.code和a.realval三列,因此需要删除无关列。
具体地,在一实施例中,上述步骤S203,具体包括如下步骤:
步骤S301:根据位置条件确定驱动虚拟表中被提取的第一类数据行。具体地,通过查询语句中的位置条件,定位具体设备的数据行,例如查询语句中位置条件为whered.namein('设备01','设备02'),表示需要查询name列中设备01和设备02的数据,计算机将设备01和设备02所在的两行数据进行定位为第一类数据行。
步骤S302:将第一类数据行中驱动列名和关联条件提到的数据列作为第一数据源。具体地,在一实施例中,除了步骤S203中提到的所需数据的数据列和关联条件的数据列之外,若驱动虚拟表还包括其他列,将其全部存入第一临时集合中会降低计算机的扫描速度,因此除驱动列名和关联条件提到的数据列,其他不相关列均不存入第一临时集合。
具体地,在一实施例中,上述步骤S204,具体包括如下步骤:
步骤S303:根据位置条件确定时序虚拟表中被提取的第二类数据行;
步骤S304:将第二类数据行中时序列名和关联条件提到的数据列作为第二数据源;
具体地,步骤S303~S304的原理与步骤S301~S302相同,详细原理描述参考步骤S301~S302,不再赘述。
具体地,在一实施例中,时序虚拟表包括实时表、实时变化表、历史原始表和历史就近表,针对上述步骤S101中映射时序数据库中的数据到时序虚拟表,具体包括如下步骤:
步骤S305:映射时序数据库中全部检测点位的最新值到实时表。具体地,实时表中包含了时序数据库中各个检测点位检测的设备状态最新值,保证了数据完备性。
步骤S306:映射时序数据库中检测点位较上一次调用发生变化的值到实时变化表。具体地,在某些测定设备状态变化的场景,若每次都用实时表来进行数据提取,计算机的扫描时间太久,负担过大。因此,针对测定设备状态变化的场景,为了提高数据提取效率,只查找设备状态相比上一次调用发生变化的检测点位,并将这些值映射到实时变化表中。
步骤S307:映射时序数据库中全部检测点位在预设条件下的值到历史原始表,预设条件为以预设时刻为起点之后的预设页数。具体地,在某些数据查找场景,查找数据需要按照时间浏览,从一个时间点跳到另一个时间点,若数据库的虚拟表没有进行分页,则每次查找系统都会从第一条数据开始扫描,费时费力。因此在数据映射之前,本发明实施例中,先将时序数据库中的数据按照预设长度的时间段的形式存储,查找数据时,从第一个时间段开始判断时间段包含的数据总条数是否超过查找时间点的数据序号,若未超过就将下一个数据段的数据条数和前面所有数据段中数据条数累加,再次和查找的序号做对比,直到累加和超过查找的序号时,即可确定末尾数据段即为所求。从而在数据段内查找数据,即可跳过大量无用数据。之后预设每页固定显示的数据行数,并将预设时刻为起点之后的预设页数的数据映射入历史原始表中,以便于用户利用页数翻看数据。
步骤S308:映射时序数据库中全部检测点位以预设时间间隔采集的值到历史就近表。具体地,在一些特定的场景中,数据需要按照固定的时间间隔浏览,查询实时表计算量过大,费时费力。因此将预设时间间隔的数据映射入历史就近表中,以供调用。在提取数据的过程中,由于数据并不是连续的,即每个时间点不一定都有数据。例如某一个时间点是查找13点01分02秒的数据,但是该时刻没有数据,此时系统采用就近匹配原则,将距离13点01分02秒最近的时间点的数据作为该时刻数据映射入历史就近表中。
具体地,下面通过一个具体地实例进行上述步骤的辅助描述:
首先输入查询语句:
select d.name,d.code,a.realval from Dec_infod
innerjoin psrealdataa on d.tag=a.taglongname
where d.namein('设备01','设备02')
首先计算机根据where d.namein('设备01','设备02')定位两个表中所需的数据行为设备01和设备02。
之后计算机通过检测到关键字d.name,d.code和关联条件中的d.tag,从驱动虚拟表Dec_infod的如表2所示的数据结构中提取到第一数据源,分别如表3和表4所示。
表2.驱动虚拟表中的设备信息
Id(主键) | Name(设备名称) | Code(设备编号) | Tag(关联点位) |
1 | 设备01 | A | \A001\DEC001\CS |
2 | 设备02 | B | \A002\DEC001\CS |
3 | 设备03 | C | Null |
表3.通过步骤S203得到的第一数据源
d.Id | d.name | d.code | d.tag |
1 | 设备01 | A | \A001\DEC001\CS |
2 | 设备02 | B | \A002\DEC001\CS |
表4.通过步骤S302得到的第一数据源
d.name | d.code | d.tag |
设备01 | A | \A001\DEC001\CS |
设备02 | B | \A002\DEC001\CS |
同理,计算机通过检测到关键字a.realval和关联条件中的a.taglongname,从时序虚拟表psrealdataa(实时表)中提取第二数据源,分别如表5和表6所示。
表5.通过步骤S204得到的第二数据源
点唯一标识 | 时间戳 | 当前值 | 点描述 |
\A001\DEC001\CS | XXXX | 1 | 启停状态 |
\A001\DEC001\DL | XXXX | 1.2 | 电流 |
\A002\DEC001\CS | XXXX | 0 | 启停状态 |
\A002\DEC001\DL | XXXX | 1.1 | 电流 |
表6.通过步骤S304得到的第二数据源
a.taglongname | a.realval |
\A001\DEC001\CS | 1 |
\A001\DEC001\DL | 1.2 |
\A002\DEC001\CS | 0 |
\A002\DEC001\DL | 1.1 |
之后,计算机通过语句innerjoin和关联条件d.tag=a.taglongname先将两部分数据源进行笛卡尔积运算,以表4和表6进行运算为例,得到如表7所示的笛卡尔积运算结果。
表7.笛卡尔积运算结果
d.name | d.code | d.tag | a.taglongname | a.realval |
设备01 | A | \A001\DEC001\CS | \A001\DEC001\CS | 1 |
设备01 | A | \A001\DEC001\CS | \A001\DEC001\DL | 1.2 |
设备01 | A | \A001\DEC001\CS | \A002\DEC001\CS | 0 |
设备01 | A | \A001\DEC001\CS | \A002\DEC001\DL | 1.1 |
设备02 | B | \A002\DEC001\CS | \A001\DEC001\CS | 1 |
设备02 | B | \A002\DEC001\CS | \A001\DEC001\DL | 1.2 |
设备02 | B | \A002\DEC001\CS | \A002\DEC001\CS | 0 |
设备02 | B | \A002\DEC001\CS | \A002\DEC001\DL | 1.1 |
之后,根据关联条件d.tag=a.taglongname,将关联条件中数据列内容一致的数据行保留,得到待处理数据行,如表8所示。
表8.待处理数据行
d.name | d.code | d.tag | a.taglongname | a.realval |
设备01 | A | \A001\DEC001\CS | \A001\DEC001\CS | 1 |
设备02 | B | \A002\DEC001\CS | \A002\DEC001\CS | 0 |
最后,将其中的无关列删除,得到融合数据如表9所示,并将融合数据映射到融合虚拟表中,结束。
表9.融合数据
d.name | d.code | a.realval |
设备01 | A | 1 |
设备02 | B | 0 |
通过执行上述各个步骤,本发明实施例提供的一种基于数据库的数据融合方法,首先将时序数据库和关系数据库中的数据分别映射到驱动虚拟表和时序虚拟表中,并根据一句预设语法的查询语句即可将驱动虚拟表中的设备信息和时序虚拟表中的状态信息关联起来,映射到融合虚拟表中,避免了使用三种SQL语句分别去两个数据库中调用数据再进行合并的繁琐操作。此外,在融合方法中,针对不同的查询情况,映射了多种时序虚拟表,提高了不同场景的查询效率。以上方法运行在基于JDBC规范创建的接口(ApplicationProgramming Interface,API),即是一种数据库视图,当某项目需要同时进行关系数据库系统和时序数据库系统的数据调用时,将该接口的驱动包放入对应的工程目录下,即可对接两个数据库各自的接口,实现上述步骤描述的功能,用户通过该API与数据库系统对接,大大提高了查询效率。
如图2所示,本实施例还提供了一种基于JDBC规范创建的基于数据库的数据融合系统,该系统包括:
数据源映射模块101,用于将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表。详细内容参见上述方法实施例中步骤S101的相关描述,在此不再进行赘述。
解析模块102,用于基于预设语法的融合查询语句解析驱动虚拟表及时序虚拟表,得到解析结果,并提取解析结果中表征同一目标对象的数据标识所在数据列。详细内容参见上述方法实施例中步骤S102的相关描述,在此不再进行赘述。
结果映射模块103,用于根据表征同一目标对象的数据标识的对应关系对解析结果中的数据进行数据融合,得到融合数据,并将融合数据映射到融合虚拟表以完成数据融合。详细内容参见上述方法实施例中步骤S103的相关描述,在此不再进行赘述。
具体地,在一实施例中,上述融合视图采用Restful风格创建,便于兼容其它系统或APP,进一步提高了本发明实施例提供的融合视图的兼容性。
本发明实施例提供的一种基于数据库的数据融合系统,用于执行上述实施例提供的一种基于数据库的数据融合方法,其实现方式与原理相同,详细内容参见上述方法实施例的相关描述,不再赘述。
通过上述各个组成部分的协同合作,本发明提供的一种基于数据库的数据融合系统,基于JDBC规范创建,能够对接绝大多数关系数据库系统和时序数据库系统,从而通过本发明提供的融合系统,对接各自库不同的接口,通过映射数据到虚拟表,并根据预设语法调用虚拟表,计算机通过查询语句中的关联条件将不同数据库的数据融合在一起,这些步骤均为计算机在后台完成,用户不需要通过不同的SQL语句去分别访问关系数据库和时序数据库所在的服务器,从而解决了不同数据库之间难以兼容的难题,提高了查询数据的效率。
图3示出了本发明实施例的一种电子设备,该设备包括:处理器901和存储器902,可以通过总线或者其他方式连接,图3中以通过总线连接为例。
处理器901可以为中央处理器(Central Processing Unit,CPU)。处理器901还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器902作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如上述方法实施例中的方法所对应的程序指令/模块。处理器901通过运行存储在存储器902中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的方法。
存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器901所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至处理器901。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器902中,当被处理器901执行时,执行上述方法实施例中的方法。
上述电子设备具体细节可以对应参阅上述方法实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,实现的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (9)
1.一种基于数据库的数据融合方法,其特征在于,所述方法包括:
将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表;
基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在数据列;
根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,并将所述融合数据映射到融合虚拟表以完成数据融合;
其中,所述预设语法的融合查询语句包括:根据动作词、驱动表名、时序表名、驱动列名、时序列名、关联条件和位置条件生成所述预设语法的融合查询语句;所述动作词用于执行数据提取以及数据关联的动作;所述关联条件用于根据所述驱动列名和所述时序列名关联所述驱动虚拟表和时序虚拟表中的数据;所述位置条件用于确定提取所述驱动虚拟表和所述时序虚拟表中数据时的具体位置;所述驱动列名对应所述驱动虚拟表中列数据的名称,所述时序列名对应所述时序虚拟表中列数据的名称;所述驱动表名和所述时序表名分别对应所述驱动虚拟表和所述时序虚拟表的名称。
2.根据权利要求1所述的方法,其特征在于,所述基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在的数据列,包括:
拆分所述查询语句的关键字,得到拆分结果;
利用所述拆分结果中的驱动表名和位置条件提取所述驱动虚拟表中的第一数据源;
利用所述拆分结果中的时序表名和位置条件提取所述时序虚拟表中的第二数据源,所述解析结果由所述第一数据源和第二数据源组成;
提取所述第一数据源和第二数据源中表征同一目标对象的数据标识所在的数据列。
3.根据权利要求2所述的方法,其特征在于,所述根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,包括:
将所述第一数据源和所述第二数据源进行笛卡尔积运算,并将运算结果作为第三数据源;
基于所述表征同一目标对象的数据标识所在的数据列中一致的数据标识提取所述第三数据源中的目标数据行组成所述融合数据。
4.根据权利要求3所述的方法,其特征在于,在所述基于所述表征同一目标对象的数据标识所在的数据列中一致的数据标识提取所述第三数据源中的目标数据行组成所述融合数据之后,所述方法还包括:
删除所述目标数据行中的无关列,并将保留的结果作为所述融合数据,所述无关列为驱动列名和时序列名未提到的列。
5.根据权利要求2所述的方法,其特征在于,所述利用所述拆分结果中的驱动表名和位置条件提取所述驱动虚拟表中的第一数据源,包括:
根据所述位置条件确定驱动虚拟表中被提取的第一类数据行;
将所述第一类数据行中驱动列名和关联条件提到的数据列作为所述第一数据源。
6.根据权利要求5所述的方法,其特征在于,所述利用所述拆分结果中的时序表名和位置条件提取所述时序虚拟表中的第二数据源,包括:
根据所述位置条件确定时序虚拟表中被提取的第二类数据行;
将所述第二类数据行中时序列名和关联条件提到的数据列作为所述第二数据源。
7.一种基于数据库的数据融合系统,其特征在于,所述融合系统基于JDBC创建,所述系统包括:
数据源映射模块,用于将关系数据库中的数据映射到驱动虚拟表,并将时序数据库中的数据映射到时序虚拟表;
解析模块,用于基于预设语法的融合查询语句解析所述驱动虚拟表及时序虚拟表,得到解析结果,并提取所述解析结果中表征同一目标对象的数据标识所在的数据列;
结果映射模块,用于根据所述表征同一目标对象的数据标识之间的对应关系对所述解析结果中的数据进行数据融合,得到融合数据,并将所述融合数据映射到融合虚拟表以完成数据融合;
其中,所述预设语法的融合查询语句包括:根据动作词、驱动表名、时序表名、驱动列名、时序列名、关联条件和位置条件生成所述预设语法的融合查询语句;所述动作词用于执行数据提取以及数据关联的动作;所述关联条件用于根据所述驱动列名和所述时序列名关联所述驱动虚拟表和时序虚拟表中的数据;所述位置条件用于确定提取所述驱动虚拟表和所述时序虚拟表中数据时的具体位置;所述驱动列名对应所述驱动虚拟表中列数据的名称,所述时序列名对应所述时序虚拟表中列数据的名称;所述驱动表名和所述时序表名分别对应所述驱动虚拟表和所述时序虚拟表的名称。
8.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器和所述处理器之间互相通信连接,所述存储器中存储有计算机指令,所述处理器通过执行所述计算机指令,从而执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111584555.1A CN113961637B (zh) | 2021-12-23 | 2021-12-23 | 一种基于数据库的数据融合方法、系统和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111584555.1A CN113961637B (zh) | 2021-12-23 | 2021-12-23 | 一种基于数据库的数据融合方法、系统和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113961637A CN113961637A (zh) | 2022-01-21 |
CN113961637B true CN113961637B (zh) | 2022-03-18 |
Family
ID=79473656
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111584555.1A Active CN113961637B (zh) | 2021-12-23 | 2021-12-23 | 一种基于数据库的数据融合方法、系统和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113961637B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553831A (zh) * | 2006-09-18 | 2009-10-07 | 诺基亚公司 | 用于使用便携式设备查看虚拟数据库的方法、装置和计算机程序产品 |
CN104346377A (zh) * | 2013-07-31 | 2015-02-11 | 克拉玛依红有软件有限责任公司 | 一种基于唯一标识的数据集成和交换方法 |
CN108027763A (zh) * | 2016-04-19 | 2018-05-11 | 森斯班克株式会社 | 关系型数据库的调整装置和方法 |
CN109213820A (zh) * | 2018-08-30 | 2019-01-15 | 成都索贝数码科技股份有限公司 | 一种实现多种类型的数据库融合使用的方法 |
CN109766394A (zh) * | 2018-12-19 | 2019-05-17 | 上海前隆信息科技有限公司 | 度量平台数据查询方法及装置、可读存储介质及终端 |
CN110019209A (zh) * | 2017-11-16 | 2019-07-16 | 国网新源控股有限公司 | 一种基于水电企业业务数据的大数据融合系统及方法 |
CN112905639A (zh) * | 2020-12-21 | 2021-06-04 | 国网甘肃省电力公司电力科学研究院 | 一种基于规则的新能源数据分发方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5774692A (en) * | 1995-10-05 | 1998-06-30 | International Business Machines Corporation | Outer quantifiers in object-oriented queries and views of database systems |
CN108108456A (zh) * | 2017-12-28 | 2018-06-01 | 重庆邮电大学 | 一种基于元数据的信息资源分布式查询方法 |
US11334575B2 (en) * | 2019-01-30 | 2022-05-17 | International Business Machines Corporation | Integrating relational database temporal tables with a distributed programming environment |
CN110647518B (zh) * | 2019-11-28 | 2020-04-28 | 成都四方伟业软件股份有限公司 | 一种数据源融合计算方法、组件及装置 |
CN110955661B (zh) * | 2019-11-29 | 2023-03-21 | 北京明略软件系统有限公司 | 数据融合方法、装置、可读存储介质及电子设备 |
CN112231380A (zh) * | 2020-10-20 | 2021-01-15 | 长城计算机软件与系统有限公司 | 采集数据的综合处理方法、系统、存储介质及电子设备 |
-
2021
- 2021-12-23 CN CN202111584555.1A patent/CN113961637B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101553831A (zh) * | 2006-09-18 | 2009-10-07 | 诺基亚公司 | 用于使用便携式设备查看虚拟数据库的方法、装置和计算机程序产品 |
CN104346377A (zh) * | 2013-07-31 | 2015-02-11 | 克拉玛依红有软件有限责任公司 | 一种基于唯一标识的数据集成和交换方法 |
CN108027763A (zh) * | 2016-04-19 | 2018-05-11 | 森斯班克株式会社 | 关系型数据库的调整装置和方法 |
CN110019209A (zh) * | 2017-11-16 | 2019-07-16 | 国网新源控股有限公司 | 一种基于水电企业业务数据的大数据融合系统及方法 |
CN109213820A (zh) * | 2018-08-30 | 2019-01-15 | 成都索贝数码科技股份有限公司 | 一种实现多种类型的数据库融合使用的方法 |
CN109766394A (zh) * | 2018-12-19 | 2019-05-17 | 上海前隆信息科技有限公司 | 度量平台数据查询方法及装置、可读存储介质及终端 |
CN112905639A (zh) * | 2020-12-21 | 2021-06-04 | 国网甘肃省电力公司电力科学研究院 | 一种基于规则的新能源数据分发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113961637A (zh) | 2022-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102230661B1 (ko) | Sql 검토 방법, 장치, 서버 및 저장 매체 | |
WO2018205903A1 (zh) | 零件信息查询方法、系统、电子设备及计算机存储介质 | |
JP5930496B2 (ja) | レイアウトファイルにおける構造化情報の取得方法及び装置 | |
CN110515896B (zh) | 模型资源管理方法、模型文件制作方法、装置和系统 | |
CN107016018B (zh) | 数据库索引创建方法及装置 | |
CN110555108B (zh) | 事件脉络生成方法、装置、设备及存储介质 | |
CN113127125B (zh) | 页面自动适配方法、装置、设备及存储介质 | |
CN113672628A (zh) | 数据血缘分析方法、终端设备及介质 | |
CN111008020A (zh) | 将逻辑表达式解析为通用查询语句的方法 | |
CN114676678B (zh) | 结构化查询语言数据的解析方法、装置和电子设备 | |
CN115390847A (zh) | 日志处理方法及装置、计算机可读存储介质、终端 | |
CN114064601A (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN111427784A (zh) | 一种数据获取方法、装置、设备及存储介质 | |
CN108694242B (zh) | 基于dom的节点查找方法、设备、存储介质及装置 | |
CN112765963B (zh) | 语句分词方法、装置、计算机设备及存储介质 | |
CN105302827A (zh) | 一种事件的搜索方法和设备 | |
CN113961637B (zh) | 一种基于数据库的数据融合方法、系统和电子设备 | |
CN109684351B (zh) | 一种执行计划查看方法、装置、服务器及存储介质 | |
CN110188106B (zh) | 一种数据管理方法和装置 | |
CN109697234B (zh) | 实体的多属性信息查询方法、装置、服务器和介质 | |
CN111858581A (zh) | 一种分页查询的方法、装置、存储介质和电子设备 | |
CN116303338A (zh) | 一种数据迁移方法及装置 | |
CN111078671A (zh) | 数据表字段的修改方法、装置、设备和介质 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN116414898A (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 |