CN104111958B - 一种数据查询方法及装置 - Google Patents
一种数据查询方法及装置 Download PDFInfo
- Publication number
- CN104111958B CN104111958B CN201310141150.XA CN201310141150A CN104111958B CN 104111958 B CN104111958 B CN 104111958B CN 201310141150 A CN201310141150 A CN 201310141150A CN 104111958 B CN104111958 B CN 104111958B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- child node
- distribution
- stored
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Fuzzy Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据查询方法,应用在分布式数据查询系统中,增加至少一个辅助节点,包括:辅助节点接收任一子节点根据触发指令发来的各子节点中存储的第一数据,针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;辅助节点将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。能够较好地解决数据查询过程中资源的耗用,提高系统运行效率,减少数据查询的响应时间。
Description
技术领域
本发明涉及数据信息管理技术领域,尤其是涉及一种数据查询方法及装置。
背景技术
数据库服务器是按照数据结构来组织、存储和管理数据的仓库,在经济管理的日常工作中,常常需要把某些相关的数据存储到数据库服务器中,并根据管理的需要进行相应的处理。
将数据存储在数据库中是常用的数据管理方法。现有技术中,通常将不同领域的数据存储到不同的数据库服务器中,不同的数据库服务器组成分布式数据管理系统,如图1所示,分布式数据管理系统中包含至少一个管理节点,至少一个数据存储子节点,任一一个管理节点可以和任一一个子节点之间进行通信,任一两个子节点之间也可以进行通信。管理节点中包含全局优化查询器,全局优化查询器将各个数据表按照某种规则(例如按照各数据表特定属性域的哈希值或时间段等)进行分区或分片,将数据分布存储在多个不同的子节点中,使每一个子节点中存储的数据量得到均衡分配,每个子节点可以根据全局优化查询器的指令管理和操作自身的存储的数据。这样可以在执行复杂的数据查询时,缩短执行数据查询时需要的时间,并且通过并行处理来提高数据查询性能。由于数据库中涵盖的事实表种类比较多,因此在各个子节点中存储的数据中,各个表作为分布键的列定义也不完全相同。不同的子节点支持不同的分布键的列定义,其中,分布键的列定义在创建数据库时指定,在创建完成后通常不能更改。而且不同子节点间不能支持分布键的转码,因此若想查找某一客户的所有相关数据,则需要在多个子节点中分别进行查询。例如在通信领域中,可以将客户信息作为分布键存储到子节点1中,也可以将客户的订单号作为分布键存储到子节点2中,将客户的归属地信息作为分布键存储到子节点3中。
在分布式数据管理系统中,进行数据查询统计时,有关联的相关数据如果定义的存储方式(与定义的分布键相关)相同,相关联数据就会在同节点内部进行关联,从而能够较好提高数据查询效率。这样在进行简单的数据查询时,以本地方式在数据所在的子节点中执行,在该子节点内完成关联操作后只需把关联操作后的结果发送至管理节点,可以较好地提高数据库分区间连接效率,进而提高数据查询效率。但是在具体实施时,数据查询一般是比较复杂的数据查询任务,该种情况下,数据一般分布在不同的子节点中存储,该种数据查询方式下,则无法选择使用子节点内的关联连接方式,而是选择交叉关联的连接方式,每个子节点存储的数据都会被重新分布传送到其他的子节点,然后重新进行关联,再将关联结果传输给管理节点。
以当前的分布式数据查询系统为例,对涉及不同的事实表关联的查询语句的处理流程如图2所示,具体处理过程如下述:
步骤11,用户登录客户端,连接数据库,发出数据查询命令。
步骤12,全局优化查询器接收到数据查询命令,并对数据查询命令进行解析,生成数据查询计划。
步骤13,全局优化查询器将生成的数据查询计划分发到每个子节点。
步骤14,每个子节点在接收到数据查询计划后,进行数据查询。
针对任一子节点,该子节点对于接收到的数据查询计划,进行哈希运算,根据哈希运算得到的结果,如果两个数据的关联字段在相同的子节点,则跳过本步骤14。如果两个数据未存储在相同子节点,则每个子节点均根据对象统计信息把自身存储的相关数据发散到其他相应子节点的临时缓存或临时表空间中。
步骤15,在每个存储数据的子节点内,以待查询的数据为主,将接收的数据执行关联操作。
步骤16,每个子节点将得到的关联结果发送给全局优化查询器。
步骤17,全局优化查询器将关联结果整理合并后,将查询到的数据返回给客户端,呈现给用户。
需要说明的是,上述数据查询过程中,存储数据的节点间的交互仅以一个子节点为例进行详细阐述的,实际运行中,每个子节点都需要进行相同的交互操作过程。
由上述数据查询处理流程可知,在进行复杂的数据查询工作时,由于各个子节点中存储数据的方式不同,该种情况下全局优化查询器选择交叉关联连接方式,该种方式下,子节点间大量的交叉数据分发和通信,增加CPU、网络和内存等资源的耗用,使系统运行效率降低,数据查询的响应时间增加。
发明内容
本发明实施例提供了一种数据查询方法及装置,能够较好地解决数据查询过程中资源的耗用,提高系统运行效率,减少数据查询的响应时间。
一种数据查询方法,应用在分布式数据查询系统中,所述分布式数据查询系统包含至少一个管理节点和至少一个子节点,还包含至少一个辅助节点,所述方法包括:辅助节点接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中所述触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同;针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;辅助节点将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
一种数据查询装置,应用在分布式数据查询系统中,所述分布式数据查询系统包含至少一个管理节点和至少一个子节点,还包含至少一个辅助节点,所述数据查询装置包括:接收单元,用于接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中所述触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同;确定单元,用于针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;发送单元,用于将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
采用上述技术方案,在现有技术中提出的分布式数据系统架构下,增加了至少一个辅助节点,在进行数据查询时,分布式数据查询系统中的各子节点首先与辅助节点进行交互。然后辅助节点再和每个子节点分别进行交互,以实现数据查询的目的,这样,各子节点之间并不进行数据交互,能够较好地解决数据查询过程中资源的耗用,提高系统运行效率,减少数据查询的响应时间。
附图说明
图1为现有技术中,提出的分布式数据存储系统结构组成示意图;
图2为现有技术中,提出的分布式数据存储系统中数据获取方法流程图;
图3为本发明实施例中,提出的分布式数据存储系统结构组成示意图;
图4为本发明实施例中,提出的分布式数据存储系统中数据获取方法流程图;
图5为本发明实施例中,提出的数据查询装置结构组成示意图。
具体实施方式
针对现有技术中存在的在分布式数据查询系统中,在进行复杂的数据查询工作时,由于各个子节点中存储数据的方式不同,该种情况下全局优化查询器选择交叉关联连接方式,该种方式下,子节点间大量的交叉数据分发和通信,增加CPU、网络和内存等资源的耗用,使系统运行效率降低,数据查询的响应时间增加的问题,本发明实施例这里提出的技术方案中,在现有技术中提出的分布式数据系统架构下,增加了辅助节点,在进行数据查询时,分布式数据查询系统中的各子节点首先与辅助节点进行交互。然后辅助节点再分别和每个子节点进行交互,以实现数据查询的目的,这样,各子节点之间并不进行数据交互,能够较好地解决数据查询过程中资源的耗用,提高系统运行效率,减少数据查询的响应时间。
下面将结合各个附图对本发明实施例技术方案的主要实现原理、具体实施方式及其对应能够达到的有益效果进行详细地阐述。
本发明实施例这里提出一种分布式数据查询系统,如图3所示,本发明实施例这里提出的分布式数据查询系统包含至少一个管理节点,至少一个子节点和至少一个辅助节点。
其中,管理节点和任一子节点之间可以进行数据通信,在分布式数据查询系统中,任一两个子节点之间也可以进行数据通信,管理节点和辅助节点之间可以进行数据通信,任一辅助节点可以和任一子节点之间进行数据通信。在进行数据查询时,分布式数据查询系统中还可以包括全局优化查询器。全局优化查询器可以单独设置,也可以设置在管理节点中。一种较佳地实现方式,本发明实施例这里提出的技术方案中,是基于现有技术中数据查询系统的升级,仅在原系统架构加增加辅助节点,全局优化查询器则和现有技术相同,设置在管理节点中。这样可以较好地保证对原系统架构做出较小的改动,节省数据查询系统的改造成本。
辅助节点可以通过高速网络技术实现和其他子节点之间的高速互联互通。高速网络如万兆网卡、无限带宽(infinband)等。辅助节点的主要功能包括数据中转和在分发等,因此可以为辅助节点配置较高性能的存储区和缓冲池,高速网络通讯链路,这样可以使得辅助节点执行的存、取操作具有较高的性能。
在进行数据查询时,管理节点接收用户通过管理节点发出的查询关键词,在确定出和查询关键词对应的数据未存储在同一子节点中时,辅助节点接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同;针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;辅助节点将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
在分布式数据查询系统中,数据在存储时,可以按照表格的形式来存储。数据库中存储的表格可以根据定义的分布键散列后均匀分布在不同的子节点中。由于数据的种类比较多,因此在各个子节点中,存储的表格的分布键的列定义也不完全相同。例如,在通信系统中,以话单数据为例,在子节点1中存储的数据表,如表1所示,其分布键定义可以是用户的终端号码。在子节点2中存储的数据表,如表2所示,其分布键定义可以是用户的身份标识。分布键可以作为唯一标识各子节点存储的数据表。
表1
终端号码 | 用户号 | 通话时长 | …… |
136XXXX770 | 11111111 | 2 | __ |
136XXXX771 | 11111112 | 3 | __ |
136XXXX772 | 11111113 | 4 | __ |
136XXXX773 | 11111114 | 5 | __ |
136XXXX774 | 11111115 | 300 | __ |
136XXXX775 | 11111116 | 10 | __ |
表2
辅助节点在接收到的第一数据中,按照管理节点发来的查询关键词,确定符合第二分布键的分布列数据;以及根据查询关键词,确定分布列数据在接收到的第一数据中对应的分布行数据;将确定出分布列数据和分布行数据进行哈希运算后生成第三数据。将确定出分布列数据和分布行数据进行哈希运算后重新分发至对应的发送第一数据的子节点。
具体地,辅助节点将确定出的第三数据对应各子节点存储在自身的缓存池中,基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。进行哈希运算后的第三数据,得到的哈希值是唯一的,每个哈希值可以各自代表唯一的子节点,因此辅助节点可以将得到的第三数据进行重新分发回对应的发送第一数据的子节点中。
在将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点之后,还可以对缓存池中存储的第三数据进行清除。具体实现方式可以但不限于为以下两种:
第一种方式:在缓存池中存储的分发完成的第三数据的数量大于预设第一阈值时,可以触发清除线程,将分发完成的第三数据清除。
第二种方式:在缓存池存储空间小于待存储的分布行数据和分布列数据的容量时,触发清除线程,将缓存池中存储的分发完成的第三数据清除。
较佳地,在辅助节点中存储有对已经分发完成的第三数据进行增量更新的日志更新队列,日志更新队列是在子节点中已发送第二数据之后,获取子节点中保存的日志信息组成的。
基于图3所示的分布式数据查询系统,本发明实施例这里提出一种数据查询方法,如图4所示,具体流程如下述:
步骤41,用户登陆客户端,连接数据库,发出数据查询命令。
步骤42,设置在管理节点中的全局优化查询查询器接收到用户输入的数据查询命令,对数据查询命令进行解析,判断数据查询命令中包含的查询关键词对应的数据是否存储在同一子节点中,如果判断结果为是,则对用户要查询的数据进行关联,并将关联结果反馈给管理节点。反之执行步骤43。
步骤43,在确定出和查询关键词对应的数据没有存储在同一子节点中时,管理节点向子节点发送触发指令,辅助节点接收任一子节点根据触发指令发来的各子节点中存储的数据。
为便于阐述,本发明实施例这里提出的技术方案中,将任一子节点根据触发指令发送的各子节点自身存储的数据称之为第一数据。将和用户输入的查询关键词对应的数据称之为第二数据,第一数据至少是包含第一分布键的一组数据,第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同。触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据。
具体地,本发明实施例这里提出的技术方案中,以查询某一终端号码的话单为例来进行详细阐述。例如,用户需要对终端号码为136XXXX9770的话单进行统计及数据分析,则用户登录数据库查询系统,输入查询“终端号码&136XXXX9770”的数据查询命令。如上述表1和表2所示,话单数据在存储时,不同的子节点存储的方式是不相同的。按照现有技术中数据查询方法,每个子节点需要将自身存储的数据表格发送给其他子节点,进行数据交互。但是本发明实施例这里提出的技术方案中,在确定出要查询的数据未存储在同一子节点中时,各子节点之间不进行数据交互,各子节点将自身存储的第一数据发送给辅助节点。假设用户输入“终端号码&136XXXX9770”,则如上述表1和表2所示,子节点1中存储的表1的列分布键为终端号码。子节点2中存储的表2的列分布键为用户号,两个子节点中存储的数据表格列分布键并不相同,则表1在数据库语言中可以称之为事实表,而表2可以称之为维度表。在对事实表进行操作时,需要关联所有的维度表。因此子节点2中需要将自身存储的表2中的终端号码那一列和所有的行数据发送给辅助节点。
步骤44,针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据。辅助节点将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
辅助节点在接收到的第一数据中,按照管理节点发来的查询关键词,确定符合第二分布键的分布列数据;以及根据查询关键词,确定分布列数据在接收到的第一数据中对应的分布行数据;将确定出分布列数据和分布行数据进行哈希运算后生成第三数据。
较佳地,辅助节点将确定出的第三数据对应各子节点存储在自身的缓存池中,基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。辅助节点可以将确定出的分布行数据和分布列数据存储在辅助节点的缓存池中,基于分级缓存处理的方式,将缓存池中存储的分布行数据和分布列数据进行哈希运算,生成第三数据,将第三数据重新分发至存储有数据表的目的子节点。由于哈希运算后得到的哈希值时唯一的,因此可以针对每个哈希值,预先设置该哈希值对应某一子节点,这样,在哈希运算后得到的第三数据中,就可以知道应该向哪些子节点发送对应的第三数据。
一种较佳地实现方式,辅助节点中设置有控制进程、分发处理进程和缓存池。缓存池可以具体划分为多级缓存区(本发明实施例这里提出的技术方案中,以三级缓存为例来进行详细阐述),数据缓存区以及日志缓存区。
以上述表1和表2为例,例如如表1所示,第一分布键是终端号码,如表2所示,第二分布键为用户号。为便于阐述,本发明实施例这里提出的技术方案中,以两个子节点、一个辅助节点为例来进行详细阐述。
需要说明的是,在具体实施时,辅助节点的设置可以根据分布式数据查询系统中数据存储量来具体设置。
辅助节点接收到子节点1和子节点2发来的第二数据,即上述表1和表2。由于查询关键命令“终端号码&136XXXX9770”,即查询终端号码是136XXXX9770的话单,以子节点2为例,辅助节点在接收到子节点2发来的表2的第二列和所有行的数据之后,需要对表2中的数据进行过滤。首先确定终端号码相关的列,对于接收到的表2来说,表2的分布键定义的是用户号,而查询关键词中的终端号码位于第2列,因此在表2中确定出第2列数据,再根据查询关键词136XXXX9770,确定分布列所在行的数据,即表2中第一行数据,最终将表2中的第一行第2列数据提取出来。同样地,对于子节点1发送来的表1中的数据,需要抽取表1中的第一行第一列数据,辅助节点将表1中第一行第一列数据和表2中第二行第一列数据提取出来之后,将确定出分布列数据和分布行数据进行哈希运算后重新分发至存储有数据表的目的子节点。在上述数据处理过程中,数据查询与数据传输消耗的时间与数据量成正比,辅助节点在接收到的第二数据中进行抽取时,抽取的数据量越少则消耗的I/O资源越低。本发明实施例这里提出的技术方案中,在数据查询过程中,只选择与本次数据查询关系的列,如查询列,对要查询的数据表的宽度瘦身。然后抽取符合过滤的结果,减少数据表的长度。这样可以只抽取需要的数据,抛弃其它冗余数据。
较佳地,本发明实施例这里提出的技术方案中,辅助节点并不对接收到的第二数据执行读写磁盘的物理IO操作,在辅助智能节点上接收到抽取的数据后,首先放到等待处理数据队列中,然后再发送到对应的各子节点。
可以将确定出的第三数据存储在辅助节点的缓存池中,基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。
本发明实施例这里提出的技术方案中,辅助节点中包含的缓存池中,可以具体包括多级缓存区(本发明实施例这里提出的技术方案中,以三级缓存为例来进行详细阐述),数据缓存区以及日志缓存区,将等待处理的数据放置在缓存池中,可以较好地避免直接转发过程中可能存在的CPU瓶颈和网络拥塞现象。
以采用三级缓存结构为例,根据抽取表的基础信息在缓存池中创建缓存对象。
第一级缓存:如表3所示,在第一级缓存中可以包括子节点号、表空间编号、表编号、时间戳、表基数、原分布键、新分布键、格式化后的抽取条件等概要信息,作为对第一级缓存对象的整体描述。
表3
第二级缓存:如表4所示,在第二级缓存中可以包括列的元数据,如序号(自动生成)、名称、类型、长度、基数等信息,通过这些信息映射抽取后的数据。
表4
序号 | 列名 | 类型 | 长度 | 基数 | 可空 |
第三级缓存:如表5所示,第三级缓存中为抽取结果,将抽取结果的每条记录作为一个对象缓存起来。较佳地,每一条记录对象都自动生成一个序列号作为新的唯一标识。可以较好地避免抽取后出现的重复记录丢失现象。还可以标识该记录对象是否被处理过,这样可以为记录对象增加状态属性。例如,缓存中的数据逐个进行后续处理(如进行分发),处理后的记录对象状态可以被标记为已完成。
表5
序号 | 状态 | 列1 | 列2 | 列3 | …… |
较佳地,还可以对缓存池中存储的第三数据进行清除。其具体处理方式可以但不限于是主动清除和被动清除两种方式。
第一种方式:主动清除方式,在缓存池中存储的分发完成的第三数据的数量大于预设第一阈值时,触发清除线程,将分发完成的第三数据清除。
在缓存池中,对于已经分发完成的第三数据组成的表格,可以称之为脏页。主动清除方式下,在辅助节点中,由后台调度线程,在缓存池中脏页达到阈值限制后自动运行,清除缓冲池中存储的状态为已完成的对象(即已经分发完毕的第三数据),较佳地,还可以将清理的数据页标记为可用数据页。
具体实施中,主动清除方式具体处理流程如下述:
步骤一:启动清除程序。
步骤二:检查脏页列表,并计算脏页数量。
较佳地,在步骤二中,可以计算脏页在总的数据页的比例值,这样可以较好地提高计算的准确性。本发明实施例这里以脏页比例值为例来进行详细阐述。
步骤三:如果计算得到的脏页比例值>=预先设置的第一阈值,则执行步骤四,反之执行步骤十。
步骤四:启动脏页清除线程,准备进行脏页清除。
步骤五:脏页清除线程开始扫描脏页,检查脏页状态。
步骤六:如果脏页状态为完成状态,则执行步骤九,反之执行步骤九。
步骤七:清除脏页,并在脏页清除后更新脏页列表。
步骤八:将页状态标记为可用状态。
步骤九:返回执行步骤六。
步骤十:等待预设时长。
步骤十一:返回执行步骤一。
第二种方式:被动清除方式,在缓存池存储空间小于待存储的分布行数据和分布列数据的容量时,触发清除线程,将缓存池中存储的分发完成的第三数据清除。
该种清除方式中,在缓存池中添加新的数据时,如果缓存页不够时,可以进行直接覆盖的方式。如直接覆盖状态为已经完成的数据所占用的存储空间。具体实施中,其处理流程如下述:
步骤一:如果缓存池中的存储空间小于待存储数据的容量,则执行步骤二。反之,执行步骤九。
步骤二:遍历脏页列表,并执行循环处理过程。
步骤三:如果存储的数据表的状态处于完成状态,则执行步骤四,反之则执行步骤二,继续遍历脏页列表。
步骤四:清除脏页内容,并修改脏页列表,将清除的脏页标记为可用状态。
步骤五:缓存池中空闲存储容量等于清理脏页之前的存储容量和清除的脏页的容量之和。
步骤六:如果缓存池中空闲存储容量大于等于待存储的数据容量,则执行步骤七,反之,执行步骤二,执行遍历脏页列表操作。
步骤七:结束循环。
步骤八:执行步骤二。
步骤九:将待存储的数据存储到缓存池中。
本发明采用主动清除与被动清除两种缓存清除方式,两种清除方法互为补充,可以满足缓存的分配与使用。
步骤45,管理节点将与用户输入的数据查询命令对应的数据呈现给用户。
较佳地,在上述步骤44或者45之后,还可以包括:
在辅助节点中存储有对已经分发完成的第三数据进行增量更新的日志更新队列,日志更新队列是在子节点中已发送第二数据之后,获取子节点中保存的日志信息组成的。这样可以较好地解决执行数据查询过程中,在原子节点数据发生的更改现象。
具体实施中,本发明实施例这里提出的技术方案中,可以通过读取日志文件的方式跟踪数据抽取后原始表的数据变化情况,放到日志更新队列中,对已提交的数据进行增量更新,充分保证执行查询时的数据时效性。其中,日志更新队列可以设置在缓存池中。
其中,在辅助节点将第三数据重新分发给对应的发送第一数据的子节点之后,还包括:辅助节点在各子节点中保存的日志信息中,确定已分发完成的第三数据的日志信息;辅助节点将获得的已分发完成的第三数据的日志信息存储在缓存池中的日志更新队列中。
在辅助节点中存储有对已经分发完成的第三数据进行增量更新的日志更新队列,具体处理过程如下述:
步骤一:对各子节点中存储的日志信息进行扫描。
步骤二:遍历读取各子节点中存储的日志信息。
步骤三:对于任一子节点,如果子节点中存储的原始表中存在已经提交的数据,则执行步骤四,反之,执行步骤二。
步骤四:解析该子节点中存储的日志信息。
步骤五:将读取的日志信息抽取,保存到辅助节点中。
步骤六:根据抽取的日志信息,以及表编号等信息重新生成新的数据库SQL语句。
步骤七:执行新生成的SQL语句。
步骤八:批量提交存储的日志信息。
步骤九:结束操作。
由于对原始表执行单纯的数据抽取工作比执行原始的复杂查询语句的速度要快很多,在数据抽取结束后,原始表对象上持有的锁会自动释放,因此原始表对象持有锁的时间也会相应缩短很多,这会减少其他事务等待该表上的锁对象的时间,较好地提高数据库的并发性。
相应地,本发明实施例这里还提出一种数据查询装置,应用在分布式数据查询系统中,其中所述分布式数据查询系统包含至少一个管理节点和至少一个子节点,所述管理节点和任一子节点之间能够通信,在所述分布式数据查询系统中还包含至少一个能够和所述管理节点、子节点进行通信的数据查询装置,如图5所示,数据查询装置包括:
接收单元501,用于接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中所述触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同。
确定单元502,用于针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据。
发送单元503,用于将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
具体地,上述确定单元502,具体用于在接收到的第一数据中,按照管理节点发来的查询关键词,确定符合第二分布键的分布列数据;以及根据查询关键词,确定所述分布列数据在接收到的第一数据中对应的分布行数据;将确定出分布列数据和分布行数据进行哈希运算后生成第三数据。
具体地,上述发送单元502,具体用于将确定出的第三数据对应各子节点存储在自身的缓存池中;基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。
较佳地,上述装置还包括:
清除单元,用于在确定出缓存池中存储的分发完成的第三数据的数量大于预设阈值时,将分发完成的第三数据清除;或在确定出缓存池存储空间小于待存储的第三数据的容量时,将缓存池中存储的分发完成的第三数据清除。
具体地,上述确定单元502,还用于在各子节点中保存的日志信息中,确定已分发完成的第三数据的日志信息;将获得的已分发完成的第三数据的日志信息存储在缓存池中的日志更新队列中。
采用本发明实施例这里提出的技术方案,在现有技术中提出的分布式数据查询系统架构的基础上,增加辅助节点,在进行数据查询时,出现分布键不同的数据表的关联的过程中,各子节点将数据发送到辅助节点中,然后辅助节点按照分布键重新将接收到的各子节点发来的数据表散列回各个子节点的多级缓存,将现有技术中交叉关联的连接方式转换为子节点内部连接的方式,从而降低了子节点之间交叉分发的步骤和次数,提高数据查询的执行效率。以前的交叉分发次数为每个节点为节点数-1次,现在每个子节点只需要进行2次分发。能够较好地解决数据查询过程中资源的耗用,提高系统运行效率,减少数据查询的响应时间。
本领域的技术人员应明白,本发明的实施例可提供为方法、装置(设备)、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(设备)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种数据查询方法,应用在分布式数据查询系统中,其特征在于,所述分布式数据查询系统包含至少一个管理节点和至少一个子节点,还包含至少一个辅助节点,所述方法包括:
辅助节点接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中所述触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同;
针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;
辅助节点将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据的格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
2.如权利要求1所述的方法,其特征在于,按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出第一数据中包含第二分布键的第三数据,包括:
辅助节点在接收到的第一数据中,按照管理节点发来的查询关键词,确定符合第二分布键的分布列数据;以及
根据查询关键词,确定所述分布列数据在接收到的第一数据中对应的分布行数据;
将确定出分布列数据和分布行数据进行哈希运算后生成第三数据。
3.如权利要求1所述的方法,其特征在于,辅助节点将第三数据重新分发给对应的发送第一数据的子节点,包括:
辅助节点将确定出的第三数据对应各子节点存储在自身的缓存池中;
基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。
4.如权利要求3所述的方法,其特征在于,在将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点之后,还包括:
在确定出缓存池中存储的分发完成的第三数据的数量大于预设阈值时,将分发完成的第三数据清除;或
在确定出缓存池存储空间小于待存储的第三数据的容量时,将缓存池中存储的分发完成的第三数据清除。
5.如权利要求1所述的方法,其特征在于,在辅助节点将第三数据重新分发给对应的发送第一数据的子节点之后,还包括:
辅助节点在各子节点中保存的日志信息中,确定已分发完成的第三数据的日志信息;
辅助节点将获得的已分发完成的第三数据的日志信息存储在缓存池中的日志更新队列中。
6.一种数据查询装置,应用在分布式数据查询系统中,其特征在于,所述分布式数据查询系统包含至少一个管理节点和至少一个子节点,还包含至少一个辅助节点,所述装置包括:
接收单元,用于接收任一子节点根据触发指令发来的各子节点中存储的第一数据,其中所述触发指令是管理节点在确定出和输入的查询关键词对应的第二数据未存储在同一子节点中时向各子节点发送的,指示各子节点向辅助节点发送包含查询关键词的第一数据,所述第一数据至少是包含第一分布键的一组数据,所述第二数据是包含第二分布键的一组数据,第一分布键和第二分布键不相同;
确定单元,用于针对接收到的任一子节点发来的第一数据,执行下述操作:按照管理节点发来的查询关键词对接收到的第一数据进行过滤,确定出该第一数据中包含第二分布键的第三数据;
发送单元,用于将第三数据重新分发给对应的发送第一数据的子节点,各子节点对接收到的第三数据按照第二数据的格式进行关联操作,将关联结果作为与查询关键词对应的查询结果反馈给管理节点。
7.如权利要求6所述的装置,其特征在于,所述确定单元,具体用于在接收到的第一数据中,按照管理节点发来的查询关键词,确定符合第二分布键的分布列数据;以及根据查询关键词,确定所述分布列数据在接收到的第一数据中对应的分布行数据;将确定出分布列数据和分布行数据进行哈希运算后生成第三数据。
8.如权利要求6所述的装置,其特征在于,所述发送单元,具体用于将确定出的第三数据对应各子节点存储在自身的缓存池中;基于分级缓存处理的方式,将缓存池中存储的第三数据重新分发给对应的发送第一数据的子节点。
9.如权利要求8所述的装置,其特征在于,还包括:
清除单元,用于在确定出缓存池中存储的分发完成的第三数据的数量大于预设阈值时,将分发完成的第三数据清除;或在确定出缓存池存储空间小于待存储的第三数据的容量时,将缓存池中存储的分发完成的第三数据清除。
10.如权利要求6所述的装置,其特征在于,所述确定单元,还用于在各子节点中保存的日志信息中,确定已分发完成的第三数据的日志信息;将获得的已分发完成的第三数据的日志信息存储在缓存池中的日志更新队列中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310141150.XA CN104111958B (zh) | 2013-04-22 | 2013-04-22 | 一种数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310141150.XA CN104111958B (zh) | 2013-04-22 | 2013-04-22 | 一种数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104111958A CN104111958A (zh) | 2014-10-22 |
CN104111958B true CN104111958B (zh) | 2017-06-20 |
Family
ID=51708753
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310141150.XA Active CN104111958B (zh) | 2013-04-22 | 2013-04-22 | 一种数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104111958B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2532469A (en) | 2014-11-20 | 2016-05-25 | Ibm | Self-optimizing table distribution with transparent replica cache |
CN106708838A (zh) * | 2015-11-12 | 2017-05-24 | 华为技术有限公司 | 用于流数据查询的方法和装置 |
CN105550284B (zh) * | 2015-12-10 | 2020-03-27 | 北京京东尚科信息技术有限公司 | 在Presto计算节点混合使用内存和临时表空间的方法和装置 |
CN106250566A (zh) * | 2016-08-31 | 2016-12-21 | 天津南大通用数据技术股份有限公司 | 一种分布式数据库及其数据运算的管理方法 |
CN106528833A (zh) * | 2016-11-14 | 2017-03-22 | 天津南大通用数据技术股份有限公司 | 一种mpp数据库数据动态重分布的方法及装置 |
CN107491510A (zh) * | 2017-08-03 | 2017-12-19 | 国网江苏省电力公司信息通信分公司 | 一种混合异构数据源统一查询系统及分布式查询方法 |
CN107633870B (zh) * | 2017-10-25 | 2020-12-08 | 天津开心生活科技有限公司 | 数据提取方法及装置、存储介质、电子设备 |
CN109726581B (zh) * | 2017-10-31 | 2020-04-14 | 阿里巴巴集团控股有限公司 | 一种数据统计方法和装置 |
CN110019231B (zh) * | 2017-12-26 | 2021-06-04 | 中国移动通信集团山东有限公司 | 一种并行数据库动态关联的方法及节点 |
CN108737534B (zh) * | 2018-05-11 | 2021-08-24 | 北京奇虎科技有限公司 | 一种基于区块链的数据传输方法、装置、区块链系统 |
CN109271449A (zh) * | 2018-09-30 | 2019-01-25 | 山东超越数控电子股份有限公司 | 一种基于文件的分布式存储查询系统及查询方法 |
CN109714347A (zh) * | 2018-12-29 | 2019-05-03 | 杭州迪普科技股份有限公司 | 策略命中结果的存储、查询方法与装置、设备及介质 |
WO2020238748A1 (zh) * | 2019-05-31 | 2020-12-03 | 阿里巴巴集团控股有限公司 | 数据同步的处理方法、装置、电子设备及计算机存储介质 |
CN113807054A (zh) * | 2021-09-16 | 2021-12-17 | 北京沃东天骏信息技术有限公司 | 处理数据的方法、装置、设备和计算机可读介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047550A (zh) * | 2006-03-28 | 2007-10-03 | 华为技术有限公司 | 一种p2p网络的组内结构及其组网方法 |
CN101883039A (zh) * | 2010-05-13 | 2010-11-10 | 北京航空航天大学 | 大规模集群系统的数据传输网络及其构建方法 |
CN102436513A (zh) * | 2012-01-18 | 2012-05-02 | 中国电子科技集团公司第十五研究所 | 分布式检索方法和系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8285710B2 (en) * | 2008-10-09 | 2012-10-09 | International Business Machines Corporation | Automated query path reporting in distributed databases |
US9298732B2 (en) * | 2010-09-29 | 2016-03-29 | Red Hat, Inc. | Searching cloud-based distributed storage resources using a set of expendable probes |
-
2013
- 2013-04-22 CN CN201310141150.XA patent/CN104111958B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101047550A (zh) * | 2006-03-28 | 2007-10-03 | 华为技术有限公司 | 一种p2p网络的组内结构及其组网方法 |
CN101883039A (zh) * | 2010-05-13 | 2010-11-10 | 北京航空航天大学 | 大规模集群系统的数据传输网络及其构建方法 |
CN102436513A (zh) * | 2012-01-18 | 2012-05-02 | 中国电子科技集团公司第十五研究所 | 分布式检索方法和系统 |
Non-Patent Citations (2)
Title |
---|
云数据仓库高性能查询技术研究;孙少陵;《邮电设计技术》;20111031;23-26 * |
云计算在中国移动广东公司的应用;孙炼等;《云计算专题》;20120430;8-14 * |
Also Published As
Publication number | Publication date |
---|---|
CN104111958A (zh) | 2014-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104111958B (zh) | 一种数据查询方法及装置 | |
CN106776768B (zh) | 一种分布式爬虫引擎的url抓取方法及系统 | |
CN103559300B (zh) | 数据的查询方法和查询装置 | |
CN103020151B (zh) | 大数据量批处理系统和大数据量批处理方法 | |
US7676453B2 (en) | Partial query caching | |
CN110431545A (zh) | 针对结构化数据和非结构化数据执行查询 | |
US20170329835A1 (en) | Context-aware workload dispatching | |
CN107679192A (zh) | 多集群协同数据处理方法、系统、存储介质及设备 | |
CA2822900A1 (en) | Filtering queried data on data stores | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
US11003649B2 (en) | Index establishment method and device | |
CN105608086A (zh) | 分布式数据库系统的事务处理方法及装置 | |
CN103488680A (zh) | 建立搜索引擎的组合算符 | |
CN107241319A (zh) | 基于vpn的分布式网络爬虫系统及调度方法 | |
CN103345514A (zh) | 大数据环境下的流式数据处理方法 | |
US20090204575A1 (en) | Modular web crawling policies and metrics | |
CN108509453B (zh) | 一种信息处理方法及装置 | |
CN107943952A (zh) | 一种基于Spark框架进行全文检索的实现方法 | |
KR20160054017A (ko) | 상향식 방식의 최적화된 검색 시스템 및 방법 | |
CN106599152A (zh) | 一种数据缓存方法及系统 | |
CN108076103A (zh) | 一种消息处理方法、系统及消息生产者集群 | |
Li et al. | R-Store: A scalable distributed system for supporting real-time analytics | |
CN107169047A (zh) | 一种实现数据缓存的方法及装置 | |
CN107688660B (zh) | 并行执行计划的执行方法及装置 | |
CN106649530A (zh) | 云详单查询管理系统及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |