Parte del contenido de esta aplicación no está disponible en este momento.
Si esta situación persiste, contáctenos aComentarios y contacto
1. (WO2018036549) DISTRIBUTED DATABASE QUERY METHOD AND DEVICE, AND MANAGEMENT SYSTEM
Document

说明书

发明名称 0001   0002   0003   0004   0005   0006   0007   0008   0009   0010   0011   0012   0013   0014   0015   0016   0017   0018   0019   0020   0021   0022   0023   0024   0025   0026   0027   0028   0029   0030   0031   0032   0033   0034   0035   0036   0037   0038   0039   0040   0041   0042   0043   0044   0045   0046   0047   0048   0049   0050   0051   0052   0053   0054   0055   0056   0057   0058   0059   0060   0061   0062   0063   0064   0065   0066   0067   0068   0069   0070   0071   0072   0073   0074   0075   0076   0077   0078  

权利要求书

1   2   3   4   5   6   7   8   9   10   11  

附图

0001   0002   0003   0004   0005   0006   0007   0008  

说明书

发明名称 : 分布式数据库查询方法、装置及管理系统

技术领域

[0001]
本公开涉及数据库技术领域,例如涉及一种分布式数据库查询方法、装置及管理系统。

背景技术

[0002]
随着数据库技术的日趋成熟,以及互联网应用的高速发展,数据库应用已普遍出现在互联网之上。相关技术中的集中式数据库系统也表现出不足之处,集中式数据库系统通常采用集中式管理,易造成数据库的性能瓶颈,单一的提高硬件性能已不能满足互联网的大数据量高并发查询及写入的需求,同时会产生大量的硬件维护成本和升级费用。此外,数据库的集中管理可能造成多个数据库关联,一旦一台数据库崩溃,将造成整个数据库系统崩溃,所以分布式数据库系统逐渐发展起来。
[0003]
分布式数据库系统中的数据位于大量不同的数据节点上,在查询及存取数据的过程中会不可避免的加重系统的性能负担,进而造成查询时延增加及并发度降低的问题。相关的分布式查询技术中,一般以单机数据为基础,查询技术局限在缓存历史查询结果数据以及对语句进行预编译等方面,无法解决分布式数据库查询时延较长及并发度较低的问题。
[0004]
发明内容
[0005]
本实施例提供了一种分布式数据库查询方法、装置及管理系统,以至少解 决相关技术中分布式数据库查询时延较长、并发度较低的问题。
[0006]
本实施例提供了一种分布式数据库查询方法,可以包括:
[0007]
根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,其中,所述查询缓存区中保存有历史执行信息;以及
[0008]
在检索到与所述查询语句对应的历史执行信息的情况下,根据所述历史执行信息在所述分布式数据库中进行数据查询。
[0009]
可选地,上述的历史执行信息可以包括表数据分布信息、目的数据库信息、常量替换的位置信息中的一项或多项。
[0010]
可选地,所述根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,包括:用预设字符替换所述查询语句中的常量得到新的查询语句,对所述新的查询语句进行哈希计算,生成对应的哈希值;以及根据所述哈希值在所述查询缓存区中进行检索。可选地,在根据接收到的查询语句在分布式数据库的查询缓存区中进行检索之前,还包括:收集历史查询过程中的历史执行信息;以及在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中。
[0011]
可选地,在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中,包括:判断所述历史查询过程中查询的数据是否需要所述分布式数据库的多个数据节点进行计算处理;以及在所述历史查询过程中查询的数据不需要所述多个数据节点进行计算处理时,将所述历史执行信息保存到所述查询缓存区中。
[0012]
本实施例还提供了一种分布式数据库查询装置,设置于分布式数据库管理系统中,可以包括:
[0013]
检索模块,设置为根据接收到的查询语句在分布式数据库的查询缓存区中 进行检索,其中,所述查询缓存区中保存有历史执行信息;
[0014]
执行模块,设置为在所述检索模块检索到与所述查询语句对应的所述历史执行信息的情况下,根据所述历史执行信息在所述分布式数据库中进行数据查询。
[0015]
可选地,上述的历史执行信息可以包括表数据分布信息、目的数据库信息和常量替换的位置信息中的一项或多项。可选地,上述检索模块,语法分析单元,设置为用预设字符替换所述查询语句中的常量得到新的查询语句,对所述新的查询语句进行哈希计算,生成对应的哈希值;以及检索单元,设置为根据所述哈希值在所述查询缓存区中进行检索。
[0016]
可选地,上述装置还包括:收集模块,设置为在根据接收到的查询语句在分布式数据库的查询缓存区中进行检索之前,收集历史查询过程中的历史执行信息;以及缓存模块,设置为在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中。
[0017]
可选地,上述缓存模块,包括:判断单元,设置为判断所述历史查询过程中查询的数据是否需要所述分布式数据库的多个数据节点进行计算处理;缓存单元,设置为在所述历史查询过程中查询的数据不需要所述多个数据节点进行计算处理时,将所述历史执行信息保存到所述查询缓存区中。
[0018]
本实施例还提供了一种分布式数据库管理系统,查询缓存区和上述实施例提供的任意一种分布式数据库查询装置。
[0019]
本实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任意一种方法。
[0020]
本实施例还提供一种服务器,该服务器包括一个或多个处理器、存储器以及一个或多个程序,所述一个或多个程序存储在存储器中,当被一个或多个处 理器执行时,执行上述任意一种方法。
[0021]
本实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任意一种方法。
[0022]
本实施例能够实现在分布式数据库在查询过程中,节省部分执行树的生成过程,从而降低分布式数据库查询的时延,提高并发度。

附图说明

[0023]
图1是本实施例提供的分布式数据库查询方法流程图一;
[0024]
图2是本实施例提供的分布式数据库查询方法流程图二;
[0025]
图3是本实施例提供的分布式数据库查询方法流程图三;
[0026]
图4是本实施例提供的分布式数据库查询装置结构框图一;
[0027]
图5是本实施例提供的分布式数据库查询装置结构框图二;
[0028]
图6是本实施例提供的分布式数据库管理系统结构框图;
[0029]
图7是本实施例提供的分布式数据库管理系统架构示意图;
[0030]
图8是本实施例提供的一种服务器的硬件结构示意图。

具体实施方式

[0031]
本发明实施例提供了一种分布式数据库查询方法,图1是本实施例提供的分布式数据库查询方法流程图一,如图1所示,该方法可以包括如下步骤。
[0032]
在S102中,根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,其中,所述查询缓存区中保存有历史执行信息。
[0033]
在S104中,在检索到与所述查询语句对应的历史执行信息的情况下,根据 所述历史执行信息在所述分布式数据库中进行数据查询。
[0034]
其中,上述的历史执行信息可以包括表数据分布信息、目的数据库信息和常量替换的位置信息中的一项或多项。当检索到这些历史执行信息时,就可以根据这些历史执行信息以及查询语句中的常量值信息计算出要查询的数据节点,从而执行查询操作即可。
[0035]
在本实施例中,根据接收到的查询语句在查询缓存区中进行检索,其中,上述查询缓存区中保存有历史执行信息;在检索到与上述查询语句对应的历史执行信息的情况下,根据历史执行信息进行查询。使得分布式数据库在查询过程中可以节省部分执行树的生成过程,从而降低分布式数据库查询的时延并提高并发度。
[0036]
图2是本实施例提供的分布式数据库查询方法流程图二,如图2所示,上述S102可以通过如下方式实现:
[0037]
对上述查询语句进行常量替换,并对替换后的查询语句进行哈希计算,生成对应的哈希值,然后根据该哈希值在上述查询缓存区中进行检索。
[0038]
本实施例中的查询语句可以为结构化查询语言(Structured Query Language,SQL)语句,一个SQL语句中可能有多个常量值。如图2所示,在S202中,可以对上述SQL语句进行词法分析,得到SQL语句中的常量值;在S204中,将得到的SQL语句中的至少一个常量值按顺序记录在一个数组中;在S206中,使用占位符替换上述常量值;在S208中对常量替换后的SQL语句进行哈希计算生成哈希值;在S210中以该哈希值为键(KEY)值,在上述查询缓存区中进行检索。
[0039]
比如查询语句为“Select t1.a from t1 where t1.id=30”,经过词法分析可找出 其中的常量值为“30”,则可用占位符“?”将“30”进行替换,变成“Select t1.a from t1 where t1.id=?”。然后对被替换后的语句经过哈希计算得到一个整型值:0x87653127,将该整型值作为该查询语句的KEY值到上述查询缓存区中进行检索,如果检索到相同的KEY值,则认为该相同KEY值所对应的历史执行信息与本实施例中的查询语句“Select t1.a from t1 where t1.id=30”相对应,从而执行上述S104了,采用上述KEY值对应的历史执行信息进行查询。
[0040]
可选地,上述历史执行信息可以包括表数据分布信息、目的数据库信息和常量替换的位置信息中的一项或多项。表数据分布信息可以指示出表数据分布的节点,目的数据库信息可以表示出上述查询语句应当下发的数据库,常量替换的位置信息可以指示出被替换的常量在查询语句中的位置。这些历史执行信息都可以是根据历史查询过程中的查询语句计算出并缓存起来的。
[0041]
如图2所示,在S212中,当根据查询语句检索到相应的历史执行信息时,提取该历史执行信息;在S214中,可以根据该历史执行信息以及常量值信息计算出要查询的数据节点;在S216中,执行查询,从对应的数据节点上获取相应的数据。
[0042]
可选地,在根据接收到的查询语句到查询缓存区中进行检索之前,还包括:收集历史查询过程中的执行信息;在所述历史执行信息符合预设规则的情况下,将历史执行信息保存到上述查询缓存区中。
[0043]
可选地,在根据接收到的查询语句在查询缓存区中进行检索之后,还包括:
[0044]
收集查询过程中的执行信息;以及在判断所述执行信息符合预设规则的情况下,将所述执行信息保存到所述查询缓存区中。
[0045]
其中,还可以在根据接收到的查询语句到查询缓存区中进行检索之后收集此次查询过程中的执行信息,并且,无论是否检索到对应的历史执行信息,都 可以收集此次查询过程中的执行信息。
[0046]
图3是本实施例提供的分布式数据库查询方法流程图三,如图3所示,该方法可以包括如下步骤。
[0047]
在S302中,在检索了上述查询缓存区且未检索到对应的历史执行信息时,则对该查询语句(即SQL语句)执行正常的分布式查询流程。
[0048]
例如,对检索语句进行语法分析,并生成相应的执行树,依据执行树在分布式数据库中进行查询,得到相应的查询结果。
[0049]
在S304中,在查询的过程中收集本次查询的执行信息,并判断该条查询语句的执行信息是否可以缓存。
[0050]
其中,判断是否可以缓存查询语句的执行信息的预设规则可以为:如果该查询语句的执行信息不需要分布式系统参与结果集计算,例如通过查询一个数据节点得到查询结果,则可以缓存该查询语句的执行信息;如果需要分布式系统参与对结果集进行分组、排序、汇聚计算、结果集去重和结果集限定等其中之一操作的,例如通过多个数据节点配合得到查询结果,则不缓存该查询语句的执行信息。
[0051]
在S306中,如果可以对查询语句的执行信息进行缓存,则返回需要缓存的执行信息。
[0052]
在S308中,将该执行信息缓存到上述查询缓存区,以在下次相同或相似的语句发来时调用该执行信息。
[0053]
本实施例还提供了一种分布式数据库查询装置,设置于分布式数据库管理系统中,可以执行本实施例提供的任意一种分布式数据库查询方法,图4是本 实施例提供的分布式数据库查询装置结构框图一,如图4所示,该装置可以包括:
[0054]
检索模块402,可以设置为根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,其中,所述查询缓存区中保存有历史执行信息。
[0055]
执行模块404,可以设置为在所述检索模块检索到与所述查询语句对应的所述历史执行信息的情况下,根据所述历史执行信息在所述分布式数据库中进行数据查询。
[0056]
其中,上述的历史执行信息可以包括表数据分布信息、目的数据库信息和常量替换的位置信息中的一项或多项。当检索到这些历史执行信息时,可以根据历史执行信息以及常量值信息计算出要查询的数据节点,从而执行查询操作。
[0057]
可选地,检索模块402,设置为根据接收到的查询语句在查询缓存区中进行检索,其中,上述查询缓存区中保存有历史执行信息;执行模块404设置为在检索到与上述查询语句对应的历史执行信息的情况下,根据该历史执行信息进行查询。使得分布式数据库在查询过程中可以节省部分执行树的生成过程,从而降低分布式数据库查询的时延并提高并发度。
[0058]
图5是本实施例提供的分布式数据库查询装置结构框图二,如图5所示,检索模块402包括语法分析单元5002、检索单元5004。
[0059]
其中,语法分析单元5002,可以设置为用预设字符替换所述查询语句中的常量得到新的查询语句,对所述新的查询语句进行哈希计算,生成对应的哈希值。
[0060]
检索单元5004,可以设置为根据所述哈希值在所述查询缓存区中进行检索。本实施例中该查询语句可以为SQL语句。
[0061]
即语法分析单元5002可以设置为对上述SQL语句进行词法分析,找出SQL语句中的常量值、并将常量值按顺序记录在一个数组中,然后使用占位符替换找出的常量值。再对常量替换后的SQL语句进行哈希计算生成哈希值,检索单元5004可以设置为以该哈希值为KEY(键)值到上述查询缓存区中进行检索。
[0062]
可选地,上述的历史执行信息一般包括表数据分布信息、目的数据库信息、常量替换的位置信息中的一项或多项。可选地,该装置还包括收集模块506、缓存模块508。其中,缓存模块508还可以包括判断单元5006、缓存单元5008。
[0063]
收集模块506可以设置为在根据接收到的查询语句在分布式数据库的查询缓存区中进行检索之前,收集历史查询过程中的历史执行信息;缓存模块508可以设置为在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中。
[0064]
其中,也可以在根据接收到的查询语句到查询缓存区中进行检索之后收集此次查询过程中的执行信息,并且,无论是否检索到对应的历史执行信息,都可以收集此次查询过程中的执行信息。
[0065]
执行模块404还设置为在上述查询缓存区且未检索到对应的历史执行信息时,则启动对该查询语句(即SQL语句)执行正常的分布式查询流程。
[0066]
收集模块506设置为在上述查询的过程中收集本次查询的执行信息,并由缓存模块508中的判断单元5006判断该条查询语句是否可以缓存;其中,判断的规则是:如果该查询语句的执行信息不需要分布式系统参与结果集计算,则可以缓存该执行信息;如果需要分布式系统参与对结果集进行分组、排序、汇聚计算、结果集去重和结果集限定等其中之一的操作,都不缓存该执行信息。
[0067]
判断单元5006是设置为判断所述历史查询过程中查询的数据是否需要所述分布式数据库的多个数据节点进行计算处理。缓存单元5008在所述历史查询过 程中查询的数据不需要所述多个数据节点进行计算处理时,则返回需要缓存的历史执行信息,,将所述历史执行信息保存到所述查询缓存区中,以备下次相同或相似的语句发来时调用该历史执行信息进行数据查询。
[0068]
本实施例还提供了一种分布式数据库管理系统,图6是本实施例提供的分布式数据库管理系统结果框图,图7是本实施例提供的分布式数据库管理系统架构示意图,如图6和图7所示,该系统至少包括上述实施例提供的分布式数据库查询装置以及查询缓存区。该分布式数据库查询装置至少包括检索模块402和执行模块404,其中,检索模块402可以设置为根据接收到的查询语句在查询缓存区中进行检索,上述查询缓存区中保存有历史执行信息;执行模块404可以设置为在上述检索模块检索到与上述查询语句对应的历史执行信息的情况下,根据该历史执行信息进行查询。
[0069]
其中,上述的历史执行信息可以包括表数据分布信息、目的数据库信息和常量替换的位置信息中的一项或多项。当检索到这些历史执行信息时,就可以根据这些历史执行信息以及常量值信息计算出要查询的数据节点,从而执行查询操作。
[0070]
在本实施例中,可以根据历史执行信息对查询语句进行查询,使得分布式数据库在查询过程中可以节省部分执行树的生成过程,从而降低分布式数据库查询的时延并提高并发度。
[0071]
本实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行上述任意一种方法。
[0072]
如图8所示,是本实施例提供的一种服务器的硬件结构示意图,如图8所 示,该服务器包括:处理器(processor)810和存储器(memory)820;还可以包括通信接口(Communications Interface)830和总线840。
[0073]
其中,处理器810、存储器820和通信接口830可以通过总线840完成相互间的通信。通信接口830可以用于信息传输。处理器810可以调用存储器820中的逻辑指令,以执行上述实施例的任意一种方法。
[0074]
存储器820可以包括存储程序区和存储数据区,存储程序区可以存储操作系统和至少一个功能所需的应用程序。存储数据区可以存储根据服务器的使用所创建的数据等。此外,存储器可以包括,例如,随机存取存储器的易失性存储器,还可以包括非易失性存储器。例如至少一个磁盘存储器件、闪存器件或者其他非暂态固态存储器件。
[0075]
此外,在上述存储器820中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,该逻辑指令可以存储在一个计算机可读取存储介质中。本公开提供的方法可以以计算机软件产品的形式体现出来,该计算机软件产品可以存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本实施例所述方法的全部或部分步骤。
[0076]
存储介质可以是非暂态存储介质,也可以是暂态存储介质。非暂态存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等多种可以存储程序代码的介质。
[0077]
上述实施例提供的方法中的全部或部分流程,是可以通过计算机程序来指示相关的硬件完成的,该程序可存储于一个非暂态计算机可读存储介质中,该程序被执行时,可包括如上述方法的实施例的流程。

工业实用性

[0078]
本公开提供一种分布式数据库查询方法、装置及管理系统,能够实现在分布式数据库在查询过程中,节省部分执行树的生成过程,从而降低分布式数据库查询的时延并提高并发度。

权利要求书

[权利要求 1]
一种分布式数据库查询方法,包括: 根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,其中,所述查询缓存区中保存有历史执行信息;以及 在检索到与所述查询语句对应的历史执行信息的情况下,根据所述历史执行信息在所述分布式数据库中进行数据查询。
[权利要求 2]
根据权利要求1所述的方法,其中,所述根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,包括: 用预设字符替换所述查询语句中的常量得到新的查询语句,对所述新的查询语句进行哈希计算,生成对应的哈希值;以及 根据所述哈希值在所述查询缓存区中进行检索。
[权利要求 3]
根据权利要求1或2所述的方法,其中,在根据接收到的查询语句在分布式数据库的查询缓存区中进行检索之前,还包括: 收集历史查询过程中的历史执行信息;以及 在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中。
[权利要求 4]
根据权利要求3所述的方法,其中,在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中,包括: 判断所述历史查询过程中查询的数据是否需要所述分布式数据库的多个数据节点进行计算处理;以及 在所述历史查询过程中查询的数据不需要所述多个数据节点进行计算处理时,将所述历史执行信息保存到所述查询缓存区中。
[权利要求 5]
根据权利要求1、2或4所述的方法,其中,所述历史执行信息包括以下至少之一: 表数据分布信息、目的数据库信息和所述常量替换的位置信息。
[权利要求 6]
一种分布式数据库查询装置,设置于分布式数据库管理系统中,包括: 检索模块,设置为根据接收到的查询语句在分布式数据库的查询缓存区中进行检索,其中,所述查询缓存区中保存有历史执行信息; 执行模块,设置为在所述检索模块检索到与所述查询语句对应的所述历史执行信息的情况下,根据所述历史执行信息在所述分布式数据库中进行数据查询。
[权利要求 7]
根据权利要求6所述的装置,其中,所述检索模块,包括: 语法分析单元,设置为用预设字符替换所述查询语句中的常量得到新的查询语句,对所述新的查询语句进行哈希计算,生成对应的哈希值;以及 检索单元,设置为根据所述哈希值在所述查询缓存区中进行检索。
[权利要求 8]
根据权利要求6或7所述的装置,其中,所述装置还包括: 收集模块,设置为在根据接收到的查询语句在分布式数据库的查询缓存区中进行检索之前,收集历史查询过程中的历史执行信息; 缓存模块,设置为在所述历史执行信息符合预设规则的情况下,将所述历史执行信息保存到所述查询缓存区中。
[权利要求 9]
根据权利要求8所述的装置,其中,所述缓存模块,包括: 判断单元,设置为判断所述历史查询过程中查询的数据是否需要所述分布式数据库的多个数据节点进行计算处理; 缓存单元,设置为在所述历史查询过程中查询的数据不需要所述多个数据节点进行计算处理时,将所述历史执行信息保存到所述查询缓存区中。
[权利要求 10]
一种分布式数据库管理系统,包括: 如权利要求6-9中任一项所述的分布式数据库查询装置; 查询缓存区,设置为保存历史执行信息。
[权利要求 11]
一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令用于执行权利要求1-5任一项所述的方法。

附图

[ 图 0001]  
[ 图 0002]  
[ 图 0003]  
[ 图 0004]  
[ 图 0005]  
[ 图 0006]  
[ 图 0007]  
[ 图 0008]