CN111625561A - 一种数据查询方法及装置 - Google Patents
一种数据查询方法及装置 Download PDFInfo
- Publication number
- CN111625561A CN111625561A CN201910158621.5A CN201910158621A CN111625561A CN 111625561 A CN111625561 A CN 111625561A CN 201910158621 A CN201910158621 A CN 201910158621A CN 111625561 A CN111625561 A CN 111625561A
- Authority
- CN
- China
- Prior art keywords
- database
- query
- data
- data table
- sub
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据查询方法以及实现该方法的装置。若在数据库中直接执行第一查询信息会发生跨库关联查询问题时,本申请实施例提出的方法通过获取第一数据库集合,并在第一数据库集合的每个数据库中执行第二查询信息,然后根据执行第二查询信息后得到的第一查询结果得到第二查询结果,可以避免从分布式数据库中拉取第一数据表和第二数据表的所有数据,并对拉取的所有数据进行关联查询,从而有利于提高数据查询效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询方法及装置。
背景技术
随着网络的高速发展,数据总量呈爆炸式增长,单个数据库已经很难满足海量数据的存储,分布式数据库的出现成为必然。
分布式数据库的中间件通过将数据表的一部分数据存储在一个数据库中,并将数据表的另一部分数据存储在其他数据库中,可以有效减少单个数据库所存储的数据量。但是,将数据存储在分布式数据库时会发生跨库关联查询问题,关联查询是指将查询第一数据表得到的第一查询结果和查询第二数据表得到的第一查询结果进行关联,并返回一个第二查询结果。跨库关联查询是指关联查询时涉及的多个数据表至少存储于两个数据库中。
目前,分布式数据库的中间件尚不能支持跨库关联查询,当发生跨库关联查询问题时,为了成功查询数据,分布式数据库的中间件可以从分布式数据库中拉取需要访问的多个数据表的所有数据,进而对拉取的所有数据进行关联查询,由于拉取的数据量较大,从而会使得数据查询效率较低。
发明内容
本申请实施例提供了一种数据查询方法及其装置,有利于提高数据查询效率。
第一方面,本申请实施例提供了一种数据查询方法,该方法包括:获取第一查询信息,第一查询信息用于关联查询第一数据表和第二数据表,第一数据表由至少两个第一分表组成,第二数据表由至少两个第二分表组成,前述至少两个第一分表至少存储于两个数据库中,前述至少两个第二分表至少存储于两个数据库中;若根据分组信息确定第一数据表和第二数据表所属的分组相同,则获取第一数据库集合,第一数据库集合中的每个数据库均存储有第一分表和第二分表;根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息;获取在第一数据库集合的每个数据库中执行第二查询信息后得到的第一查询结果,并根据获取的第一查询结果得到第二查询结果,输出该第二查询结果。
在该技术方案中,若在数据库中直接执行第一查询信息会发生跨库关联查询问题时,通过获取第一数据库集合,并在第一数据库集合的每个数据库中执行第二查询信息,然后根据执行第二查询信息后得到的第一查询结果得到第二查询结果,由于第一数据库集合中的每个数据库中均存储有第一数据表的部分数据(即第一分表)和第二数据表的部分数据(即第二分表),所以在第一数据库集合的每个数据库中执行第二查询信息时不会发生跨库关联查询问题,因此可以避免从分布式数据库中拉取第一数据表和第二数据表的所有数据,并对拉取的所有数据进行关联查询,从而有利于提高数据查询效率。
在一种实现方式中,第一查询信息可以包括查询条件和关联条件;根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息的具体实施方式可以为:若至少一个查询条件的类型为第一类型,则生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件,以及前述至少一个查询条件中的部分或者所有查询条件;若第一查询信息所包含的所有查询条件的类型均为第二类型,则生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件。
在该技术方案中,由于在进行数据查询时,数据查询性能主要由分布式数据库的中间件花费的时间决定,因此,将第一查询信息中所有第一类型的查询条件均加入第二查询信息,可以使得在第一数据库集合中的每个数据库中执行第二查询信息后得到的第一查询结果更加接近于用户需要获取的最终查询结果(即第二查询结果),这样可以使得在获取第一查询信息后,仅需执行少量操作即可得到第二查询结果,即有利于减少分布式数据库的中间件在数据查询过程中花费的时间,从而有利于提高数据查询性能。
在一种实现方式中,第一查询信息可以包括筛选条件,获取第一数据库集合的具体实施方式可以为:获取第二数据库集合,第二数据库集合中的所有数据库存储的第一分表组成第一数据表,第二数据库集合中的所有数据库存储的第二分表组成第二数据表;将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合。
在该技术方案中,通过将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合,以便在第一数据库集合中的每个数据库中执行第二查询信息,可以减少数据查询过程中访问的数据库的数量,即可以减少数据查询过程中访问的数据量,从而有利于提高数据查询效率。
第二方面,本申请实施例提供了一种数据查询装置,该装置具有实现第一方面所提供的数据查询方法的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
第三方面,本申请实施例提供一种计算机可读存储介质,用于储存为数据查询装置所用的计算机程序指令,其包含用于执行上述第一方面所涉及的程序。
第四方面,本申请实施例提供一种分布式数据管理设备,该分布式数据管理设备包括存储器和处理器,存储器中存储有程序指令,处理器调用存储器中存储的程序指令以实现第一方面所提供的数据查询方法。
附图说明
图1是本申请实施例公开的一种分布式数据处理系统的架构示意图;
图2a是本申请实施例公开的一种数据查询方法的流程示意图;
图2b是本申请实施例公开的一种对第一数据表进行水平分表操作的场景示意图;
图3a是本申请实施例公开的另一种数据查询方法的流程示意图;
图3b是本申请实施例公开的一种对第一数据表进行水平分库分表操作,以及对第二数据表进行水平分库分表操作的场景示意图;
图4是本申请实施例公开的一种数据查询装置的结构示意图;
图5是本申请实施例公开的一种分布式数据管理设备的结构示意图。
具体实施方式
为了解决现有技术中分布式数据库中的数据查询效率较低的问题,本申请实施例基于图1所示的分布式数据处理系统提出了一种解决方案,用以提升分布式数据库中的数据查询效率。
请参见图1,为本申请实施例公开的一种分布式数据处理系统的架构示意图。如图1所示,该系统可以包括:终端设备101、分布式数据管理设备102、多个数据服务器103和集成于数据服务器103中的数据库1031(图中椭圆框所示)。
其中,终端设备101主要用于将用户在终端设备101的输入设备中输入的结构化查询语言(Structured Query Language,SQL)(例如SQL1)发送至分布式数据管理设备102。在一种实现方式中,终端设备101可以是用户设备(user equipment,UE)、远程终端、移动终端、无线通信设备或用户装置等。
分布式数据管理设备102中可以运行分布式数据库的中间件,分布式数据管理设备102可以通过分布式数据库的中间件管理图1中椭圆框所示的多个数据库1031的数据存储以及数据查询等工作。
当分布式数据管理设备102接收到终端设备101发送的SQL1,且SQL1用于关联查询数据表1和数据表2,数据表1的数据分布于图1中椭圆框中的其中两个数据库1031中,数据表2的数据也分布于图1中椭圆框中的其中两个数据库1031中时,即在数据库1031中执行SQL1会导致跨库关联查询问题时,分布式数据管理设备102具体可以用于:在图1中椭圆框所示的多个数据库1031中确定SQL1需要访问哪些数据库1031(例如SQL1需要访问图1中椭圆框中的其中两个数据库1031),并将SQL1需要访问的数据库1031组成第一数据库集合;根据SQL1生成在第一数据库集合中的每个数据库1031中待执行的SQL2;然后,将生成的SQL2发送给集成有第一数据库集合中的数据库1031的数据服务器103(即图1中椭圆框中的第1个数据服务器103和第3个数据服务器103),以便获取在第一数据库集合的每个数据库1031中执行SQL2后得到的第一查询结果,并对获取的两个第一查询结果进行合并、排序等处理,以得到符合用户需求的第二查询结果,然后将第二查询结果发送给终端设备101。终端设备101接收到第二查询结果之后,可以输出第二查询结果以供用户查看。在一种实现方式中,分布式数据管理设备102可以是终端设备或者服务器,数据库1031可以是Oracle、Microsoft SQL Server、MySQL、PostgreSQL、DB2、Microsoft Access、SQLite、Teradata、MariaDB、SAP或其他常用数据库,本申请实施例对此不作限定。
由于在数据库中执行SQL1会发生跨库关联查询问题时,分布式数据管理设备102通过获取第一数据库集合,并根据SQL1生成在第一数据库集合的每个数据库1031中待执行的SQL2,进而根据在数据库1031中执行SQL2后得到的第一查询结果得到第二查询结果,可以避免从分布式数据库中拉取SQL1关联查询的数据表1和数据表2的所有数据,并对拉取的所有数据进行关联查询,从而有利于提高数据查询效率。
需要说明的是,上述分布式数据处理系统包括3个数据服务器103,以及每个数据服务器103中仅集成有1个数据库1031仅用于举例,在其他可行的实现方式中,分布式数据处理系统可以包括10个、20个或其他数量的数据服务器103,每个数据服务器103中可以集成有2个、3个或者其他数量的数据库1031,本申请实施例对此不作限定。还需要说明的是,上述分布式数据处理系统中的数据库1031仅集成于数据服务器103中仅用于举例,在其他可行的实现方式中,分布式数据管理设备102中也可以集成有一个或多个数据库1031。在一种实现方式中,各个数据服务器103中可以集成有相同数量的数据库1031,也可以集成有不同数量的数据库1031,本申请实施例对此不作限定。
可以理解的是,本申请实施例描述的网络架构是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于图1所示的分布式数据处理系统的架构示意图,请参见图2a,图2a是本申请实施例提供的一种数据查询方法的流程示意图,该方法可以包括但不限于如下步骤:
步骤S201:分布式数据管理设备获取第一查询信息,第一查询信息用于关联查询第一数据表和第二数据表,第一数据表由至少两个第一分表组成,第二数据表由至少两个第二分表组成,前述至少两个第一分表至少存储于两个数据库中,前述至少两个第二分表至少存储于两个数据库中。
其中,第一查询信息可以为在数据库中执行的语句或命令等,应用于本申请实施例中,以第一查询信息为结构化查询语言SQL为例进行说明。第一查询信息可以包括关联条件、第一数据表的标识和第二数据表的标识,通过关联条件可以关联第一数据表和第二数据表。关联条件可以由关联关键词、第一数据表中的关联字段和第二数据表中的关联字段组成,在一种实现方式中,关联关键词可以为join、left join、right join或full join。其中,join是指对两个数据表进行关联查询时,只保留两个数据表中完全匹配的结果集;leftjoin是指对两个数据表进行关联查询时,会返回左边个数据表所有的行,即使在右边个数据表中没有匹配的记录;right join是指对两个数据表进行关联查询时,会返回右边个数据表所有的行,即使在左边个数据表中没有匹配的记录;full join是指对两个数据表进行关联查询时,返回左边个数据表和右边个数据表中所有没有匹配的行。
join的使用语法为:from表1 join表2 on表1.字段1关系运算子表2.字段2,该语句表达的是从表1和表2中获取符合“on”子句中的关系式(即表1.字段1关系运算子表2.字段2)的数据。其中,“表1.字段1”为表1中的关联字段,“表2.字段2”为表2中的关联字段,两个表的关联字段(即表1.字段1和表2.字段2)的字段类型需相同,字段类型可以包括但不限于数值、日期/时间、字符、字符串和文本类型。关系运算子在计算机科学的编程语言中是测试或定义两个实体之间某种关系的构造或操作符,在本申请实施例中,关系运算子可以为=、<、>、<=、>=、或<>(不等于)。例如,当第一数据表(Tab1)为用户信息表,且Tab1如表1所示,第二数据表(Tab2)为销售记录表,且Tab2如表2所示时,关联条件“from Tab1 joinTab2 on Tab1.用户姓名=Tab2.顾客姓名”用于获取Tab1和Tab2中姓名相同的数据,即用于获取张三的年龄信息和购买的商品信息。
表1用户信息表
用户姓名 | 年龄 |
张三 | 20 |
李四 | 30 |
表2销售记录表
顾客姓名 | 购买商品 |
张三 | 手机 |
李四 | 手表 |
在本申请实施例中,可以将第一数据表和第二数据表分布于分布式数据库中,也就是说,第一数据表可以由至少两个第一分表组成,且组成第一数据表的至少两个第一分表至少存储于两个数据库中;第二数据表可以由至少两个第二分表组成,且组成第二数据表的至少两个第二分表至少存储于两个数据库中。例如,第一数据表由第一分表1和第一分表2组成,且第一分表1存储于数据库1,第一分表2存储于数据库2;第二数据表由第二分表1和第二分表2组成,且第二分表1存储于数据库1,第二分表2存储于数据库2。又如,第一数据表由第一分表1、第一分表2和第一分表3组成,且第一分表1和第一分表2存储于数据库1,第一分表3存储于数据库2;第二数据表由第二分表1、第二分表2和第二分表3组成,且第二分表1和第二分表2存储于数据库1,第二分表3存储于数据库2。
在一种实现方式中,第一分表可以是通过对第一数据表进行水平分库分表操作得到的,同理,第二分表可以是通过对第二数据表进行水平分库分表操作得到的。其中,水平分库分表是指:对表执行水平分表操作,并将执行水平分表操作后拆分得到的表保存在不同的数据库中,水平分表操作是指将表中不同的数据行按照一定规律分布到不同的表中。通过执行水平分库分表操作,可以降低单个数据表中存储的数据量,从而有利于提高查询性能。需要说明的是,执行水平分表操作后得到的各个第一分表的字段相同,但是字段值可以不同;同理,执行水平分表操作后得到的各个第二分表的字段相同,但是字段值可以不同。以图2b所示的对第一数据表进行水平分表操作的场景示意图为例,执行水平分表操作后,可以得到两个第一分表(即第一分表1和第一分表2),且两个第一分表的字段完全相同,均为“用户姓名”、“年龄”和“住址”。
在一种实现方式中,分布式数据管理设备可以从队列中获取第一查询信息,或者,从接收接口中获取由终端设备发送的第一查询信息,进而根据第一查询信息查询数据。在一种实现方式中,当接收接口中的第一查询信息的数量较多时,即分布式数据管理设备无法及时对接收接口中的所有第一查询信息进行处理时,可以将部分第一查询信息存储至队列,以便分布式数据管理设备后续从队列中获取第一查询信息并根据第一查询信息查询数据。
具体的,分布式数据管理设备中可以记录各个数据表的数据分布于哪些数据库,当分布式数据管理设备获取第一查询信息之后,可以确定第一查询信息查询的数据表(即第一数据表和第二数据表)的数据分布于哪些数据库,进而确定第一查询信息在进行关联查询时是否会涉及多个数据库。也就是说,分布式数据管理设备获取第一查询信息之后,可以判断组成第一数据表的至少两个第一分表是否至少存储于两个数据库中(即判断组成第一数据表的至少两个第一分表是否不完全存储于同一数据库中),且组成第二数据表的至少两个第二分表是否至少存储于两个数据库中(即判断组成第二数据表的至少两个第二分表是否不完全存储于同一数据库中),若是,则确定关联查询时涉及的多个数据表(即组成第一数据表的至少两个第一分表和组成第二数据表的至少两个第二分表)至少存储于两个数据库中,即在根据第一查询信息进行关联查询时会涉及多个数据库,这会导致若在数据库中直接执行第一查询信息会发生跨库关联查询问题。
需要说明的是,本申请实施例以第一查询信息用于关联查询2个数据表(即第一数据表和第二数据表)仅用于举例,在其他可行的实现方式中,第一查询信息还可以用于关联查询3个、5个或者其他数量的数据表,本申请实施例对此不作限定。
步骤S202:若根据分组信息确定第一数据表和第二数据表所属的分组相同,则分布式数据管理设备获取第一数据库集合,第一数据库集合中的每个数据库均存储有第一分表和第二分表。
在本申请实施例中,若分布式数据管理设备确定在根据第一查询信息进行关联查询时会涉及多个数据库,即若在数据库中直接执行第一查询信息会导致跨库关联查询问题,由于发生跨库关联查询问题会导致数据查询效率较低,为了避免该情况,分布式数据管理设备可以根据分组信息确定第一数据表和第二数据表所属的分组是否相同,若相同,则可以获取第一数据库集合。
其中,分组信息可以记录属于同一分组的各个数据表的标识,例如,当分组信息包括2个分组,且属于第一个分组的数据表为第一数据表和第二数据表,属于第二个分组的数据表为第三数据表和第四数据表时,分组信息可以用于指示第一数据表和第二数据表所属的分组相同。
在一种实现方式中,第一数据表和第二数据表所属的分组相同可以表明:第一数据表的数据和第二数据表的数据分布于相同的数据库中,即存储组成第一数据表的至少两个第一分表的数据库,与存储组成第二数据表的至少两个第二分表的数据库相同。例如,第一数据表由第一分表1和第一分表2组成,第二数据表由第二分表1和第二分表2组成,且第一分表1存储于数据库1,第一分表2存储于数据库2,第二分表1存储于数据库1,第二分表2存储于数据库2,即存储组成第一数据表的两个第一分表的数据库为数据库1和数据库2,存储组成第二数据表的两个第二分表的数据库也为数据库1和数据库2时,可以确定第一数据表和第二数据表所属的分组相同。
在一种实现方式中,若根据分组信息确定第一数据表和第二数据表所属的分组相同,则分布式数据管理设备可以将存储组成第一数据表的至少两个第一分表的数据库(或存储组成第二数据表的至少两个第二分表的数据库)组成第一数据库集合。例如,若存储组成第一数据表的至少两个第一分表的数据库,与存储组成第二数据表的至少两个第二分表的数据库相同,且存储组成第一数据表的两个第一分表的数据库为数据库1和数据库2,则可以将数据库1和数据库2组成第一数据库集合。
在一种实现方式中,第一数据库集合中的每个数据库均存储有第一数据表的至少一个分表(即第一分表)以及第二数据表的至少一个分表(即第二分表)。由于第一分表是对第一数据表进行水平分表分库操作得到的,第二分表是对第二数据表进行水平分表分库操作得到的,所以,第一分表包括的字段与第一数据表包括的字段相同,同理,第二分表包括的字段与第二数据表包括的字段相同,因此,第一数据库集合中的各个数据库中存储的第一分表和第二分表可以进行关联查询。例如,当第一数据表由第一分表1和第一分表2组成,第二数据表由第二分表1和第二分表2组成,且第一分表1存储于数据库1,第一分表2存储于数据库2,第二分表1存储于数据库1,第二分表2存储于数据库2时,数据库1中存储的第一分表1和第二分表1可以进行关联查询,同理,数据库2中存储的第一分表2和第二分表2可以进行关联查询。在一种实现方式中,第一数据库集合中的每个数据库存储的第一分表各不相同,存储的第二分表也各不相同,因此,对第一数据库集合中的各个数据库中存储的第一分表和第二分表进行关联查询时,不会查询重复的数据,从而可以避免影响数据查询效率。
步骤S203:分布式数据管理设备根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息。
具体的,分布式数据管理设备获取第一数据库集合之后,可以根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息,若第一数据库集合中的第一数据库集成于分布式数据管理设备,则分布式数据管理设备可以在第一数据库中执行第二查询信息,并将第二查询信息发送给集成有第二数据库的数据服务器,以便该数据服务器在第二数据库中执行第二查询信息。由于第一数据库集合中的各个数据库中存储的第一分表和第二分表可以进行关联查询,也就是说,在第一数据库集合中的各个数据库中执行第二查询信息时,不会关联其他数据库中存储的数据,所以,在第一数据库集合中的各个数据库中执行第二查询信息不会导致跨库关联查询问题。其中,第二数据库为第一数据库集合中除第一数据库以外的数据库,第一数据库的数量可以为1个或多个,第二数据库的数量也可以为1个或多个。
例如,当第二查询信息用于关联第一数据表和第二数据表,第一数据表由第一分表1和第一分表2组成,第二数据表由第二分表1和第二分表2组成,且第一分表1存储于数据库1,第一分表2存储于数据库2,第二分表1存储于数据库3,第二分表2存储于数据库4时,若直接在数据库1中执行第二查询信息,由于数据库1中不存在第二数据表的数据,所以会使得执行第二查询信息时,还需要访问数据库3中存储的第二分表1或者数据库4中存储的第二分表2,即此时会导致跨库关联查询问题。又如,若第一分表1存储于数据库1,第一分
表2存储于数据库2,第二分表1存储于数据库1,第二分表2存储于数据库2,且保持其他条件不变时,若直接在数据库1中执行第二查询信息,由于数据库1中同时存储有第一数据表的部分数据(即第一分表1)和第二数据表的部分数据(即第二分表1),所以在执行第二查询信息时,不需要访问其他数据库即可得到查询结果,即此时不会导致跨库关联查询问题。
在一种实现方式中,第一查询信息可以为业务SQL,第二查询信息可以为物理SQL,业务SQL可以表征用户的查询需求,业务SQL并非在数据库中实际执行的语句或命令,物理SQL是在数据库中实际执行的语句或命令。在一种实现方式中,业务SQL和物理SQL可以相同,也可以不同,即第一查询信息与第二查询信息可以相同,也可以不同。在一种实现方式中,分布式数据管理设备生成的在第一数据库集合中的每个数据库中待执行的第二查询信息均相同。
步骤S204:分布式数据管理设备获取在第一数据库集合的每个数据库中执行第二查询信息后得到的第一查询结果,并根据获取的第一查询结果得到第二查询结果,输出该第二查询结果。
具体的,若第一数据库集合中的第一数据库集成于分布式数据管理设备,则分布式数据管理设备在第一数据库中执行第二查询信息后,可以获取在第一数据库中执行第二查询信息后得到的第一查询结果,并接收数据服务器在自身集成的第二数据库中执行第二查询信息后得到的第一查询结果;然后,根据获取的所有第一查询结果得到第二查询结果,并输出该第二查询结果。其中,第二数据库为第一数据库集合中除第一数据库以外的数据库,分布式数据管理设备获取的第一查询结果的数量与第一数据库集合中的数据库的数量相同。
在一种实现方式中,分布式数据管理设备根据获取的第一查询结果得到第二查询结果的具体实施方式可以为:分布式数据管理设备对第一查询结果进行预设处理,得到第二查询结果,预设处理可以包括合并处理、排序处理、分组处理和去重处理中的一种或多种。其中,合并处理可以将接收到的所有第一查询结果进行合并,进而得到第二查询结果。将所有的第一查询结果合并之后,排序处理可以对合并后的结果按照某个字段的字段值进行升序或者降序排列,升序排列的表达式可以为“order by某字段”,降序排列的表达式可以为“order by某字段desc”。例如,若第一查询结果1如表3所示,第一查询结果2如表4所示,则对第一查询结果1和第一查询结果2进行合并处理后得到的结果可以如表5所示,对第一查询结果1和第一查询结果2进行合并处理和(按照年龄)降序处理后得到的结果可以如表6所示。将所有的第一查询结果合并之后,分组处理可以对合并后的结果按照某字段的字段值进行分组统计其数量或者平均值,分组统计数量的表达式可以为“group by某字段”。例如,若需要将表5中购买商品相同的数据划分为一组,并统计每组的数量,则可以将购买商品为手机的数据划分为第一组,将购买商品为手表的数据划分为第二组,并得到第一组包括1条记录,第二组包括2条记录。将所有的第一查询结果合并之后,去重处理可以在合并后的结果中去重相同的记录。
表3第一查询结果1
用户姓名 | 年龄 | 购买商品 |
张三 | 20 | 手机 |
表4第一查询结果2
用户姓名 | 年龄 | 购买商品 |
李四 | 30 | 手表 |
王五 | 40 | 手表 |
表5对第一查询结果1和第一查询结果2进行合并处理后得到的结果
用户姓名 | 年龄 | 购买商品 |
张三 | 20 | 手机 |
李四 | 30 | 手表 |
王五 | 40 | 手表 |
表6对第一查询结果1和第一查询结果2进行合并处理和降序处理后得到的结果
用户姓名 | 年龄 | 购买商品 |
王五 | 40 | 手表 |
李四 | 30 | 手表 |
张三 | 20 | 手机 |
在一种实现方式中,分布式数据管理设备输出第二查询结果的具体实施方式可以为:在显示设备中显示第二查询结果,或者,将第二查询结果写入目标文件,或者,通过发送器将第二查询结果发送给终端设备,本申请实施例对此不作限定。
可见,通过实施本申请实施例,若在数据库中直接执行第一查询信息会发生跨库关联查询问题时,通过获取第一数据库集合,并在第一数据库集合的每个数据库中执行第二查询信息,然后根据执行第二查询信息后得到的第一查询结果得到第二查询结果,由于第一数据库集合中的每个数据库中均存储有第一数据表的部分数据(即第一分表)和第二数据表的部分数据(即第二分表),所以在第一数据库集合的每个数据库中执行第二查询信息时不会发生跨库关联查询问题,因此可以避免从分布式数据库中拉取第一数据表和第二数据表的所有数据,并对拉取的所有数据进行关联查询,从而有利于提高数据查询效率。
请参见图3a,图3a是本申请实施例提供的另一种数据查询方法的流程示意图,该方法详细阐述了如何确定第一数据库集合,以及如何确定在第一数据库集合中的每个数据库中待执行的第二查询信息,该方法包括但不限于如下步骤:
步骤S301:分布式数据管理设备获取第一查询信息,第一查询信息用于关联查询第一数据表和第二数据表,第一数据表由至少两个第一分表组成,第二数据表由至少两个第二分表组成,前述至少两个第一分表至少存储于两个数据库中,前述至少两个第二分表至少存储于两个数据库中,第一查询信息包括查询条件、关联条件和筛选条件。
其中,通过关联条件可以得到第一数据表和第二数据表中相互关联的数据,通过查询条件可以对第一数据表和第二数据表中相互关联的数据进行处理,以得到符合用户需求的查询结果,查询条件可以包括排序条件、分组条件和筛选条件中的一种或多种。
其中,排序条件和分组条件可以分别参见图2a中步骤S204中对排序处理和分组处理的具体描述,在此不赘述。在一种实现方式中,筛选条件可以是一种查询条件,筛选条件可以对第一数据表和第二数据表中相互关联的数据按照某字段的字段值进行筛选,以得到符合用户需求的结果,筛选表达式可以为“where某字段关系运算子字段值”。例如,若需要筛选表5中购买商品为手机的记录,则执行的SQL可以为“Select*from表5where表5.购买商品=手机”,且执行该SQL后得到的筛选结果可以如表7所示。其中,“Select”为SQL中的查询关键字,用于从表5中获取数据,“Select*”用于从表5中获取满足筛选条件“表5.购买商品=手机”的记录中的所有列的数据。
表7购买商品为手机的筛选结果
用户姓名 | 年龄 | 购买商品 |
张三 | 20 | 手机 |
需要说明的是,步骤S301的其余执行过程可参见图2a中步骤S201的具体描述,在此不赘述。
步骤S302:若第一数据表的分库分表策略与第二数据表的分库分表策略相同,则分布式数据管理设备确定第一数据表和第二数据表所属的分组相同,并获取第二数据库集合,第二数据库集合中的所有数据库存储的第一分表组成第一数据表,第二数据库集合中的所有数据库存储的第二分表组成第二数据表。
在本申请实施例中,若分布式数据管理设备确定根据第一查询信息进行关联查询时会涉及多个数据库,即若在数据库中直接执行第一查询信息会导致跨库关联查询问题,由于发生跨库关联查询问题会导致数据查询效率较低,为了避免该情况,分布式数据管理设备可以根据分组信息确定第一数据表和第二数据表所属的分组是否相同,若相同,则可以获取第二数据库集合。
在一种实现方式中,分组信息可以记录第一数据表的分库分表策略和第二数据表的分库分表策略,若第一数据表的分库分表策略与第二数据表的分库分表策略相同,则分布式数据管理设备可以确定第一数据表和第二数据表所属的分组相同。分布式数据管理设备根据第一数据表的分库分表策略可以确定将第一数据表分布于哪些数据库,即根据第一数据表的分库分表策略可以确定第一数据表的各个分表(即第一分表)分别存储于哪个数据库。例如,以图3b所示的(根据第一数据表的分库分表策略)对第一数据表进行水平分库分表操作,以及(根据第二数据表的分库分表策略)对第二数据表进行水平分库分表操作的场景示意图为例,若第一数据表的分库分表策略为:将住址为X市的数据存储至数据库1,并将住址为Y市的数据存储至数据库2,则根据第一数据表的分库分表策略可以确定将第一数据表拆分为2个第一分表(即第一分表1和第一分表2),且两个第一分表中记录的数据如图3b所示,并且第一分表1存储于数据库1,第一分表2存储于数据库2。
同理,分布式数据管理设备根据第二数据表的分库分表策略可以确定将第二数据表分布于哪些数据库,即根据第二数据表的分库分表策略可以确定第二数据表的各个分表(即第二分表)分别存储于哪个数据库。当第二数据表为销售记录表,且第二数据表的分库分表策略为:将购买地区为X市的数据存储至数据库1,并将购买地区为Y市的数据存储至数据库2时,根据第二数据表的分库分表策略对第二数据表进行水平分表操作的场景示意图可以如图3b所示,由图可知,根据第二数据表的分库分表策略可以确定将第二数据表拆分为2个第二分表(即第二分表1和第二分表2),且两个第二分表中记录的数据如图3b所示,并且第二分表1存储于数据库1,第二分表2存储于数据库2。
根据上述可知,第一数据表的分表字段为住址,第二数据表的分表字段为购买地区,第一数据表的分表字段和第二数据表的分表字段的字段类型均为文本,并且分布式数据管理设备将第一数据表中分表字段的字段值与第二数据表中分表字段的字段值相同的数据分到了同一个数据库中,即分布式数据管理设备将第一数据表中住址为X市的数据与第二数据表中购买地区为X市的数据分到了数据库1中,将第一数据表中住址为Y市的数据与第二数据表中购买地区为Y市的数据分到了数据库2中。此时,可以认为第一数据表的分库分表策略和第二数据表的分库分表策略相同。
在一种实现方式中,分布式数据管理设备获取第二数据库集合的具体实施方式可以为:分布式数据管理设备根据第一数据表的分库分表策略,确定第三数据库集合,第三数据库集合中的每个数据库均存储有第一分表,且第三数据库集合中的所有数据库存储的第一分表组成第一数据表;根据第二数据表的分库分表策略,确定第四数据库集合,第四数据库集合中的每个数据库均存储有第二分表,且第四数据库集合中的所有数据库存储的第二分表组成第二数据表;若第三数据库集合与第四数据库集合相同,则将第三数据库集合或者第四数据库集合确定为第二数据库集合。其中,第二数据库集合中的所有数据库存储的第一分表组成第一数据表,第二数据库集合中的所有数据库存储的第二分表组成第二数据表。
第一数据表分布于第三数据库集合的数据库中,第二数据表分布于第四数据库集合的数据库中,若第三数据库集合与第四数据库集合相同,则表明第一数据表的数据和第二数据表的数据分布于相同的数据库中,即存储组成第一数据表的至少两个第一分表的数据库,与存储组成第二数据表的至少两个第二分表的数据库相同。例如,以图3b为例,第一数据表由第一分表1和第一分表2组成,第二数据表由第二分表1和第二分表2组成,且第一分表1存储于数据库1,第一分表2存储于数据库2,第二分表1存储于数据库1,第二分表2存储于数据库2,即第三数据库集合包括数据库1和数据库2,第四数据库集合包括数据库1和数据库2,此时可以确定第二数据库集合包括数据库1和数据库2。
步骤S303:分布式数据管理设备将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合。
在一种实现方式中,第二数据库集合中的所有数据库中存储了第一数据表的所有数据和第二数据表的所有数据,但是在某些查询场景下,仅需访问第一数据表的部分数据和第二数据表的部分数据,即可查询到用户需要获取的数据。此时,分布式数据管理设备可以根据第一查询信息中的筛选条件缩小查询范围,即减少需要访问的数据库数量,通过这种方式,无需访问第一数据表的所有数据(和第二数据表的所有数据)即可查询到用户需要获取的数据,这样可以有效提高查询效率。具体的,分布式数据管理设备可以将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合,其中,第一数据库集合中的数据库数量小于或等于第二数据库集合中的数据库数量。
例如,当第一数据表和第二数据表如图3b所示,且第一分表1和第二分表1存储于数据库1,第一分表2和第二分表2存储于数据库2,即第一数据库集合包括数据库1和数据库2时,若筛选条件为筛选购买商品为手机的记录,由于第二分表1和第二分表2中均存在购买商品为手机的记录,因此,筛选得到的满足筛选条件的数据库为数据库1和数据库2,即第一数据库集合包括数据库1和数据库2;又如,若筛选条件为筛选购买地区为X市的记录,由于只有第二分表1中存在购买地区为X市的记录,因此,筛选得到的满足筛选条件的数据库为数据库1,即第一数据库集合包括数据库1。
可见,通过将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合,以便在第一数据库集合中的每个数据库中执行第二查询信息,可以减少数据查询过程中访问的数据库的数量,即可以减少数据查询过程中访问的数据量,从而有利于提高数据查询效率。
步骤S304:若第一查询信息中存在至少一个查询条件的类型为第一类型,则分布式数据管理设备生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件,以及前述至少一个查询条件中的部分或者所有查询条件;若第一查询信息所包含的所有查询条件的类型均为第二类型,则分布式数据管理设备生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件。
在本申请实施例中,第一查询信息中的查询条件的类型可以为第一类型或第二类型,若在数据库中执行的物理SQL(即第二查询信息)包括第一类型的查询条件,则该物理SQL不会导致跨库关联查询问题,若在数据库中执行的物理SQL包括第二类型的查询条件,则该物理SQL会导致跨库关联查询问题。为了避免物理SQL导致跨库关联查询,分布式数据管理设备生成的第二查询信息不包括第二类型的查询条件。由于第一数据库集合中的每个数据库中均存储有第一数据表的部分数据和第二数据表的部分数据,因此,为了实现关联查询,分布式数据管理设备生成的第二查询信息包括关联条件,以便在第一数据库集合中的每个数据库中执行第二查询条件时,可以成功进行关联查询。
在一种实现方式中,若第一查询信息中存在至少一个查询条件的类型为第一类型,则分布式数据管理设备生成的第二查询信息中可以包括前述至少一个查询条件中的所有查询条件,即第二查询信息中可以包括第一查询信息中所有第一类型的查询条件。由于在进行数据查询时,数据查询性能主要由分布式数据管理设备花费的时间决定,因此,将第一查询信息中所有第一类型的查询条件均加入第二查询信息,可以使得在第一数据库集合中的每个数据库中执行第二查询信息后得到的第一查询结果更加接近于用户需要获取的最终查询结果(即第二查询结果),这样可以使得分布式数据管理设备在获取第一查询信息后,仅需执行少量操作即可得到第二查询结果,即有利于减少分布式数据管理设备在数据查询过程中花费的时间,从而有利于提高数据查询性能。
在一种实现方式中,第一类型的查询条件可以包括但不限于排序条件,第二类型的查询条件可以包括但不限于分组条件和筛选条件,本申请实施例对此不作限定。
步骤S305:分布式数据管理设备获取在第一数据库集合的每个数据库中执行第二查询信息后得到的第一查询结果。
需要说明的是,步骤S305的执行过程可参见图2a中步骤S204的具体描述,在此不赘述。
步骤S306:分布式数据管理设备根据第一查询信息中的第一查询条件,对第一查询结果进行处理,得到第二查询结果,第二查询信息包括的查询条件为第二查询条件,第一查询条件为第一查询信息所包含的所有查询条件中除第二查询条件以外的查询条件。
具体的,通过关联条件可以得到第一数据表和第二数据表中相互关联的数据,通过查询条件可以对第一数据表和第二数据表中相互关联的数据进行处理,以得到符合用户需求的查询结果。若第二查询信息包括第一查询信息中的所有查询条件,则分布式数据管理设备获取第一查询结果之后,对获取的所有第一查询结果进行合并处理后得到的第二查询结果,即为符合用户需求的查询结果。若第二查询信息仅包括第一查询信息中的部分查询条件(即第二查询条件),则分布式数据管理设备获取第一查询结果之后,需要根据第一查询信息中的剩余查询条件(即第一查询条件)对获取的所有第一查询结果进行处理,才能得到符合用户需求的第二查询结果。例如,若第一查询信息包括的查询条件为查询条件1、查询条件2和查询条件3,且第二查询信息包括的查询条件为查询条件1和查询条件2,即第二查询条件为查询条件1和查询条件2时,由于分布式数据管理设备获取的第一查询结果是根据查询条件1和查询条件2得到的,所有分布式数据管理设备还需要根据第一查询信息中的剩余查询条件(即查询条件3)对获取的所有第一查询结果进行处理,才能得到用户需要的最终结果(即第二查询结果)。
在一种实现方式中,分布式数据管理设备可以记录第一查询信息对应的执行计划,该执行计划可以包括第一数据库集合、在第一数据库集合的每个数据库中待执行的第二查询信息以及第一查询信息中的第一查询条件。分布式数据管理设备根据第一查询信息对应的执行计划中记录的信息,可以成功得到符合用户需求的第二查询结果,以便后续获取到与第一查询信息相同的查询信息时,通过执行第一查询信息对应的执行计划,即可成功得到查询结果,由于可以免去确定第一数据库集合以及第二查询信息的过程,从而有利于提高数据查询效率。
步骤S307:分布式数据管理设备输出第二查询结果。
需要说明的是,步骤S307的执行过程可参见图2a中步骤S204的具体描述,在此不赘述。
在一种实现方式中,分布式数据管理设备获取第一查询信息之后,可以判断根据第一查询信息进行关联查询时是否会涉及多个数据库,若是,则分布式数据管理设备可以判断第一查询信息是否缺少关联条件。若不缺少关联条件,则根据第一查询信息中的关联条件可以确定本次查询需要访问的数据库,且在该数据库中执行第一查询信息不会导致跨库关联查询问题,即在查询过程中不会发生跨库关联查询问题;若缺少关联条件,则根据第一查询信息中的关联条件无法确定本次查询需要访问的数据库,和/或在数据库中执行第一查询信息会导致跨库关联查询问题,即在查询过程中会发生跨库关联查询问题。
例如,当Tab1为图3b中的第一数据表,Tab2为图3b中的第二数据表,且第一分表1和第二分表1存储于数据库1,第一分表2和第二分表2存储于数据库2时,若第一查询信息为“Select年龄,数量(*)Tab1 join Tab2 on Tab1.用户姓名=Tab2.顾客姓名and Tab1.住址=Tab2.购买地区where Tab2.购买商品=手机group by年龄”,则根据第一查询信息中的关联条件“Tab1 join Tab2 on Tab1.用户姓名=Tab2.顾客姓名and Tab1.住址=Tab2.购买地区”以及Tab1中住址为X市的数据(即第一分表1)存储于数据库1,住址为Y市的数据(即第一分表2)存储于数据库2,且Tab2中购买地区为X市的数据(即第二分表1)存储于数据库1,购买地区为Y市的数据(即第二分表2)存储于数据库2的已知条件,可以确定通过关联查询数据库1中的第一分表1和第二分表1,并关联查询数据库2中的第一分表2和第二分表2(即本次查询需要访问数据库1和数据库2),即可得到满足用户需求的结果,且在关联查询过程中不会发生跨库关联查询问题,即在查询过程中对数据库1和数据库2的访问是独立的。又如,若第一查询信息为“Select年龄,数量(*)Tab1 join Tab2 on Tab1.用户姓名=Tab2.顾客姓名where Tab2.购买商品=手机group by年龄”,则根据第一查询信息中的关联条件“Tab1 join Tab2 on Tab1.用户姓名=Tab2.顾客姓名”可以确定本次查询需要访问数据库1和数据库2,但是在查询过程中,会导致将数据库1中的第一分表1和数据库2中的第二分表1(或者第二分表2)进行关联查询,以及将数据库1中的第一分表2和数据库2中的第二分表1(或者第二分表2)进行关联查询,即在查询过程中会导致跨库关联查询问题。
在本申请实施例中,第一查询信息缺少关联条件时,若在数据库中直接执行第一查询信息将导致跨库关联查询问题;第一查询信息不缺少关联条件时,在数据库中直接执行第一查询信息不会导致跨库关联查询问题。但是在实际情况下,关联查询的两个数据表中可能不包含关联条件中的字段,这样会导致关联条件无效,此时,若在数据库中直接执行第一查询信息将导致跨库关联查询问题;另外,在实际情况下,若关联条件太多将导致第一查询信息太复杂,撰写难度大。在一种实现方式中,若分布式数据管理设备确定第一查询信息缺少关联条件,则通过执行步骤S302和S303可以获取第一数据库集合,以便在第一数据库集合中的每个数据库中执行第二查询信息,且在第一数据库集合中的每个数据库中执行第二查询信息不会导致跨库关联查询问题。通过这种方式,可以减少对第一查询信息的限制,降低撰写第一查询信息的难度,即使第一查询信息中缺少关联条件,通过分组信息也可以确定第一数据库集合,进而避免跨库关联查询问题,从而有利于提高数据查询效率。
可见,通过实施本申请实施例,若在数据库中直接执行第一查询信息会发生跨库关联查询问题时,通过将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合,以便在第一数据库集合中的每个数据库中执行第二查询信息,一方面,可以减少数据查询过程中访问的数据库的数量,即可以减少数据查询过程中访问的数据量,从而有利于提高数据查询效率;另一方面,由于第一数据库集合中的每个数据库中均存储有第一数据表的部分数据(即第一分表)和第二数据表的部分数据(即第二分表),所以在第一数据库集合的每个数据库中执行第二查询信息时不会发生跨库关联查询问题,因此可以避免从分布式数据库中拉取第一数据表和第二数据表的所有数据,并对拉取的所有数据进行关联查询,从而有利于进一步提高数据查询效率。
请参见图4,图4是本申请实施例提供的一种数据查询装置的结构示意图,该数据查询装置40用于执行图2a-图3a对应的方法实施例中分布式数据管理设备所执行的步骤,该数据查询装置40可以包括:
获取模块401,用于获取第一查询信息,第一查询信息用于关联查询第一数据表和第二数据表,第一数据表由至少两个第一分表组成,第二数据表由至少两个第二分表组成,前述至少两个第一分表至少存储于两个数据库中,前述至少两个第二分表至少存储于两个数据库中;
获取模块401,还用于若根据分组信息确定第一数据表和第二数据表所属的分组相同,则获取第一数据库集合,第一数据库集合中的每个数据库均存储有第一分表和第二分表;
生成模块402,用于根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息;
处理模块403,用于获取在第一数据库集合的每个数据库中执行第二查询信息后得到的第一查询结果,并根据获取的第一查询结果得到第二查询结果,输出该第二查询结果。
在一种实现方式中,分组信息用于指示第一数据表和第二数据表所属的分组相同。
在一种实现方式中,分组信息可以包括第一数据表的分库分表策略和第二数据表的分库分表策略;获取模块401用于若根据分组信息确定第一数据表和第二数据表所属的分组相同,则获取第一数据库集合时,具体可以用于若第一数据表的分库分表策略与第二数据表的分库分表策略相同,则确定第一数据表和第二数据表所属的分组相同;获取第一数据库集合。
在一种实现方式中,第一查询信息可以包括查询条件和关联条件;生成模块402用于根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息时,具体可以用于:若至少一个查询条件的类型为第一类型,则生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件,以及前述至少一个查询条件中的部分或者所有查询条件;若第一查询信息所包含的所有查询条件的类型均为第二类型,则生成在第一数据库集合中的每个数据库中待执行的第二查询信息,第二查询信息包括关联条件。
在一种实现方式中,处理模块403用于根据获取的第一查询结果得到第二查询结果时,具体可以用于:根据第一查询信息中的第一查询条件,对第一查询结果进行处理,得到第二查询结果,其中,第二查询信息包括的查询条件为第二查询条件,第一查询条件为第一查询信息所包含的所有查询条件中除第二查询条件以外的查询条件。
在一种实现方式中,第一查询信息可以包括筛选条件,获取模块401用于获取第一数据库集合时,具体可以用于:获取第二数据库集合,第二数据库集合中的所有数据库存储的第一分表组成第一数据表,第二数据库集合中的所有数据库存储的第二分表组成第二数据表;将第二数据库集合中筛选得到的满足筛选条件的数据库组成第一数据库集合。
在一种实现方式中,获取模块401用于获取第二数据库集合时,具体可以用于:根据第一数据表的分库分表策略,确定第三数据库集合,第三数据库集合中的每个数据库均存储有第一分表,且第三数据库集合中的所有数据库存储的第一分表组成第一数据表;根据第二数据表的分库分表策略,确定第四数据库集合,第四数据库集合中的每个数据库均存储有第二分表,且第四数据库集合中的所有数据库存储的第二分表组成第二数据表;若第三数据库集合与第四数据库集合相同,则将第三数据库集合确定为第二数据库集合。
需要说明的是,图4对应的实施例中未提及的内容以及各个模块执行步骤的具体实现方式可参见图2a-图3a所示实施例以及前述内容,这里不再赘述。
在一种实现方式中,图4中的各个模块所实现的相关功能可以结合处理器与通信接口来实现。参见图5,图5是本申请实施例提供的一种分布式数据管理设备的结构示意图,该分布式数据管理设备50包括:处理器501、存储器502、通信接口503,所述处理器501、所述存储器502、所述通信接口503通过一条或多条通信总线连接。
处理器501被配置为执行图2a-图3a所述方法中分布式数据管理设备相应的功能。该处理器501可以是中央处理器(central processing unit,CPU),网络处理器(networkprocessor,NP),硬件芯片或者其任意组合。
存储器502用于存储程序代码等。存储器502可以包括易失性存储器(volatilememory),例如随机存取存储器(random access memory,RAM);存储器502也可以包括非易失性存储器(non-volatile memory),例如只读存储器(read-only memory,ROM),快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器502还可以包括上述种类的存储器的组合。
通信接口503用于接收数据或者发送数据。例如,通信接口503可以用于接收第一查询信息。
处理器501可以调用存储器502中存储的程序代码以执行以下操作:
获取第一查询信息,第一查询信息用于关联查询第一数据表和第二数据表,第一数据表由至少两个第一分表组成,第二数据表由至少两个第二分表组成,前述至少两个第一分表至少存储于两个数据库中,前述至少两个第二分表至少存储于两个数据库中;
若根据分组信息确定第一数据表和第二数据表所属的分组相同,则获取第一数据库集合,第一数据库集合中的每个数据库均存储有第一分表和第二分表;
根据第一查询信息,生成在第一数据库集合中的每个数据库中待执行的第二查询信息;
获取在第一数据库集合的每个数据库中执行第二查询信息后得到的第一查询结果,并根据获取的第一查询结果得到第二查询结果,输出该第二查询结果。
进一步地,处理器501还可以执行图2a-图3a所示实施例中分布式数据管理设备对应的操作,具体可参见方法实施例中的描述,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,可以用于存储图4所示实施例中数据查询装置所用的计算机软件指令,其包含用于执行上述实施例中为分布式数据管理设备所设计的程序。
上述计算机可读存储介质包括但不限于快闪存储器、硬盘、固态硬盘。
本申请实施例还提供一种计算机程序产品,该计算机产品被计算设备运行时,可以执行上述图2a-图3a实施例中为分布式数据管理设备所设计的数据查询方法。
在本申请实施例中还提供一种芯片,包括处理器和存储器,该存储器用包括处理器和存储器,该存储器用于存储计算机程序,该处理器用于从存储器中调用并运行该计算机程序,该计算机程序用于实现上述方法实施例中的方法。
本领域普通技术人员可以意识到,结合本申请中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者通过所述计算机可读存储介质进行传输。所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种数据查询方法,其特征在于,包括:
获取第一查询信息,所述第一查询信息用于关联查询第一数据表和第二数据表,所述第一数据表由至少两个第一分表组成,所述第二数据表由至少两个第二分表组成,所述至少两个第一分表至少存储于两个数据库中,所述至少两个第二分表至少存储于两个数据库中;
若根据分组信息确定所述第一数据表和所述第二数据表所属的分组相同,则获取第一数据库集合,所述第一数据库集合中的每个数据库均存储有第一分表和第二分表;
根据所述第一查询信息,生成在所述第一数据库集合中的每个数据库中待执行的第二查询信息;
获取在所述第一数据库集合的每个数据库中执行所述第二查询信息后得到的第一查询结果,并根据获取的第一查询结果得到第二查询结果,输出所述第二查询结果。
2.根据权利要求1所述的方法,其特征在于,所述分组信息用于指示所述第一数据表和所述第二数据表所属的分组相同。
3.根据权利要求1所述的方法,其特征在于,所述分组信息包括所述第一数据表的分库分表策略和所述第二数据表的分库分表策略;
所述若根据分组信息确定所述第一数据表和所述第二数据表所属的分组相同,则获取第一数据库集合,包括:
若所述第一数据表的分库分表策略与所述第二数据表的分库分表策略相同,则确定所述第一数据表和所述第二数据表所属的分组相同;
获取第一数据库集合。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述第一查询信息包括查询条件和关联条件;
所述根据所述第一查询信息,生成在所述第一数据库集合中的每个数据库中待执行的第二查询信息,包括:
若至少一个查询条件的类型为第一类型,则生成在所述第一数据库集合中的每个数据库中待执行的第二查询信息,所述第二查询信息包括所述关联条件,以及所述至少一个查询条件中的部分或者所有查询条件;
若所述第一查询信息所包含的所有查询条件的类型均为第二类型,则生成在所述第一数据库集合中的每个数据库中待执行的第二查询信息,所述第二查询信息包括所述关联条件。
5.根据权利要求4所述的方法,其特征在于,所述根据获取的第一查询结果得到第二查询结果,包括:
根据所述第一查询信息中的第一查询条件,对所述第一查询结果进行处理,得到所述第二查询结果,其中,所述第二查询信息包括的查询条件为第二查询条件,所述第一查询条件为所述第一查询信息所包含的所有查询条件中除所述第二查询条件以外的查询条件。
6.根据权利要求1~3任一项所述的方法,其特征在于,所述第一查询信息包括筛选条件,所述获取第一数据库集合,包括:
获取第二数据库集合,所述第二数据库集合中的所有数据库存储的第一分表组成所述第一数据表,所述第二数据库集合中的所有数据库存储的第二分表组成所述第二数据表;
将所述第二数据库集合中筛选得到的满足所述筛选条件的数据库组成所述第一数据库集合。
7.根据权利要求6所述的方法,其特征在于,所述获取第二数据库集合,包括:
根据第一数据表的分库分表策略,确定第三数据库集合,所述第三数据库集合中的每个数据库均存储有第一分表,且所述第三数据库集合中的所有数据库存储的第一分表组成所述第一数据表;
根据第二数据表的分库分表策略,确定第四数据库集合,所述第四数据库集合中的每个数据库均存储有第二分表,且所述第四数据库集合中的所有数据库存储的第二分表组成所述第二数据表;
若所述第三数据库集合与所述第四数据库集合相同,则将所述第三数据库集合确定为所述第二数据库集合。
8.一种数据查询装置,其特征在于,包括用于执行如权利要求1~7任一项所述的方法的单元。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1~7任一项所述的方法。
10.一种分布式数据管理设备,其特征在于,包括存储器和处理器,所述存储器中存储有程序指令,所述处理器通过总线与所述存储器连接,所述处理器执行所述存储器中存储的程序指令,以使所述分布式数据管理设备执行如权利要求1~7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910158621.5A CN111625561B (zh) | 2019-02-28 | 2019-02-28 | 一种数据查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910158621.5A CN111625561B (zh) | 2019-02-28 | 2019-02-28 | 一种数据查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111625561A true CN111625561A (zh) | 2020-09-04 |
CN111625561B CN111625561B (zh) | 2023-09-22 |
Family
ID=72258820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910158621.5A Active CN111625561B (zh) | 2019-02-28 | 2019-02-28 | 一种数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111625561B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407565A (zh) * | 2021-06-29 | 2021-09-17 | 中国民生银行股份有限公司 | 跨库数据查询方法、装置和设备 |
CN114756569A (zh) * | 2022-03-25 | 2022-07-15 | 北京友友天宇系统技术有限公司 | 结构化查询语句的多层解析方法、计算机设备及存储介质 |
CN116126893A (zh) * | 2023-04-17 | 2023-05-16 | 广东粤港澳大湾区国家纳米科技创新研究院 | 一种数据关联检索方法、装置及相关设备 |
WO2024037223A1 (zh) * | 2022-08-18 | 2024-02-22 | 华为云计算技术有限公司 | 数据操作方法及装置 |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130311444A1 (en) * | 2012-05-21 | 2013-11-21 | Google Inc. | Efficient Top-Down Hierarchical Join On A Hierarchically Clustered Data Stream |
US20140114994A1 (en) * | 2012-10-24 | 2014-04-24 | Marklogic Corporation | Apparatus and Method for Securing Preliminary Information About Database Fragments for Utilization in Mapreduce Processing |
US20150220601A1 (en) * | 2014-02-06 | 2015-08-06 | International Business Machines Corporation | Searching content managed by a search engine using relational database type queries |
US20160092524A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for data transfer from jdbc to a data warehouse layer in a massively parallel or distributed database environment |
CN105930407A (zh) * | 2016-04-18 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库跨库关联查询方法及系统 |
CN106528579A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种基于分库分表结构数据库的查询方法、装置及系统 |
CN106649770A (zh) * | 2016-12-27 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种大数据查询方法及系统 |
CN107368493A (zh) * | 2016-05-12 | 2017-11-21 | 百度在线网络技术(北京)有限公司 | 数据库查询方法和装置 |
US20180039671A1 (en) * | 2015-04-16 | 2018-02-08 | Huawei Technologies Co., Ltd. | Method and apparatus for querying data in cross-shard databases |
WO2018100417A1 (en) * | 2016-12-02 | 2018-06-07 | Huawei Technologies India Pvt. Ltd. | Method and apparatus for reducing data redistribution based on query split |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
US20180330012A1 (en) * | 2017-05-10 | 2018-11-15 | Agora Intelligence, Inc. d/b/a Crowdz | Method, apparatus, and computer-readable medium for generating categorical and criterion-based search results from a search query |
CN108959631A (zh) * | 2018-07-24 | 2018-12-07 | 北京百度网讯科技有限公司 | 用于查询信息的方法和装置 |
CN109189808A (zh) * | 2018-09-18 | 2019-01-11 | 腾讯科技(深圳)有限公司 | 数据查询方法及相关设备 |
-
2019
- 2019-02-28 CN CN201910158621.5A patent/CN111625561B/zh active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130311444A1 (en) * | 2012-05-21 | 2013-11-21 | Google Inc. | Efficient Top-Down Hierarchical Join On A Hierarchically Clustered Data Stream |
US20140114994A1 (en) * | 2012-10-24 | 2014-04-24 | Marklogic Corporation | Apparatus and Method for Securing Preliminary Information About Database Fragments for Utilization in Mapreduce Processing |
US20150220601A1 (en) * | 2014-02-06 | 2015-08-06 | International Business Machines Corporation | Searching content managed by a search engine using relational database type queries |
US20160092524A1 (en) * | 2014-09-26 | 2016-03-31 | Oracle International Corporation | System and method for data transfer from jdbc to a data warehouse layer in a massively parallel or distributed database environment |
US20180039671A1 (en) * | 2015-04-16 | 2018-02-08 | Huawei Technologies Co., Ltd. | Method and apparatus for querying data in cross-shard databases |
CN106528579A (zh) * | 2015-09-15 | 2017-03-22 | 阿里巴巴集团控股有限公司 | 一种基于分库分表结构数据库的查询方法、装置及系统 |
CN105930407A (zh) * | 2016-04-18 | 2016-09-07 | 北京思特奇信息技术股份有限公司 | 一种分布式数据库跨库关联查询方法及系统 |
CN107368493A (zh) * | 2016-05-12 | 2017-11-21 | 百度在线网络技术(北京)有限公司 | 数据库查询方法和装置 |
WO2018100417A1 (en) * | 2016-12-02 | 2018-06-07 | Huawei Technologies India Pvt. Ltd. | Method and apparatus for reducing data redistribution based on query split |
CN106649770A (zh) * | 2016-12-27 | 2017-05-10 | 北京启明星辰信息安全技术有限公司 | 一种大数据查询方法及系统 |
US20180330012A1 (en) * | 2017-05-10 | 2018-11-15 | Agora Intelligence, Inc. d/b/a Crowdz | Method, apparatus, and computer-readable medium for generating categorical and criterion-based search results from a search query |
CN108628986A (zh) * | 2018-04-27 | 2018-10-09 | 深圳市牛鼎丰科技有限公司 | 数据查询方法、装置、计算机设备和存储介质 |
CN108959631A (zh) * | 2018-07-24 | 2018-12-07 | 北京百度网讯科技有限公司 | 用于查询信息的方法和装置 |
CN109189808A (zh) * | 2018-09-18 | 2019-01-11 | 腾讯科技(深圳)有限公司 | 数据查询方法及相关设备 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407565A (zh) * | 2021-06-29 | 2021-09-17 | 中国民生银行股份有限公司 | 跨库数据查询方法、装置和设备 |
CN113407565B (zh) * | 2021-06-29 | 2024-01-30 | 中国民生银行股份有限公司 | 跨库数据查询方法、装置和设备 |
CN114756569A (zh) * | 2022-03-25 | 2022-07-15 | 北京友友天宇系统技术有限公司 | 结构化查询语句的多层解析方法、计算机设备及存储介质 |
WO2024037223A1 (zh) * | 2022-08-18 | 2024-02-22 | 华为云计算技术有限公司 | 数据操作方法及装置 |
CN116126893A (zh) * | 2023-04-17 | 2023-05-16 | 广东粤港澳大湾区国家纳米科技创新研究院 | 一种数据关联检索方法、装置及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111625561B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111625561B (zh) | 一种数据查询方法及装置 | |
US11132346B2 (en) | Information processing method and apparatus | |
US20160328445A1 (en) | Data Query Method and Apparatus | |
US11163735B2 (en) | Database capacity estimation for database sizing | |
CN107729423B (zh) | 一种大数据处理方法及装置 | |
US8301650B1 (en) | Bloom filter compaction | |
CN103620601A (zh) | 在映射缩减过程中汇合表 | |
CN112395293B (zh) | 分库分表方法、分库分表装置、分库分表设备及存储介质 | |
CN108304522A (zh) | 一种数据库之间差异的比对方法、装置及终端设备 | |
US20240126817A1 (en) | Graph data query | |
WO2016101659A1 (zh) | 一种业务数据查询方法及装置、数据库系统 | |
CN107229718A (zh) | 处理报表数据的方法和装置 | |
CN107577787B (zh) | 关联数据信息入库的方法及系统 | |
CN110633331B (zh) | 一种关系数据库中数据提取方法、系统及相关设备 | |
US20140052727A1 (en) | Data processing for database aggregation operation | |
CN101916281A (zh) | 并行计算系统及去重计数方法 | |
CN108073641B (zh) | 查询数据表的方法和装置 | |
CN107784091B (zh) | 一种操作权限查询方法及终端设备 | |
US20180322125A1 (en) | Itemset determining method and apparatus, processing device, and storage medium | |
CN106326295B (zh) | 语义数据的存储方法及装置 | |
US8046394B1 (en) | Dynamic partitioning for an ordered analytic function | |
CN114490724B (zh) | 处理数据库查询语句的方法和装置 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN114238390A (zh) | 数据仓库优化方法、装置、设备及存储介质 | |
CN109299112B (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 |