CN116361319B - 一种数据库查询方法、装置、设备及存储介质 - Google Patents
一种数据库查询方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN116361319B CN116361319B CN202310552231.2A CN202310552231A CN116361319B CN 116361319 B CN116361319 B CN 116361319B CN 202310552231 A CN202310552231 A CN 202310552231A CN 116361319 B CN116361319 B CN 116361319B
- Authority
- CN
- China
- Prior art keywords
- data
- data set
- database query
- sorting
- ordering
- 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/242—Query formulation
- G06F16/2425—Iterative querying; Query formulation based on the results of a preceding query
-
- 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/2453—Query optimisation
- G06F16/24532—Query optimisation of parallel queries
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据库查询方法、装置、设备及存储介质,涉及数据库技术领域,应用于分布式数据库中的分布式节点,包括:获取待查询的目标数据组,并依次从目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。本申请通过将双调排序算法与归并排序算法进行结合,能够实现多个数据元的并行输出,提高数据库查询时排序功能的效率。
Description
技术领域
本申请涉及数据库技术领域,特别涉及一种数据库查询方法、装置、设备及存储介质。
背景技术
位于分布式数据库中的每个分布式节点,都可以独立地进行数据库查询操作,为了提高分布式节点的数据库查询能力,目前主流的方式是采用排序算法,如冒泡排序(Bubble Sort)、***排序(Insert Sort)、归并排序(Merge sort)、快速排序(Quick Sort)等算法对数据库进行查询,然而,目前的排序算法在对数据库进行查询时,单个时钟周期内只能输出一个排序结果,故排序效率较低,当待查询的数据库数据量较大时查询的效率则更慢。
因此,如何对数据库进行查询,提高数据库的查询效率是本领域目前还有待进一步解决的问题。
发明内容
有鉴于此,本申请的目的在于提供一种数据库查询方法、装置、设备及存储介质,应用于分布式数据库中的分布式节点,能够实现多个数据元的并行输出,提高数据库查询时排序功能的效率。其具体方案如下:
第一方面,本申请公开了一种数据库查询方法,应用于分布式数据库中的分布式节点,包括:
当接收到数据库查询操作指令后,获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;
利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;
分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。
可选的,所述获取待查询的目标数据组,包括:
判断所述数据库查询操作指令是否存在排序操作;
若所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组。
可选的,所述判断所述数据库查询操作指令是否存在排序操作,包括:
分离出所述数据库查询操作指令的各个查询子操作,并判断所述查询子操作是否存在排序操作;
相应的,所述若所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组,包括:
若所述查询子操作存在排序操作,则获取待查询的目标数据组。
可选的,所述分离出所述数据库查询操作指令的各个查询子操作,包括:
通过解析器分离出所述数据库查询操作指令的各个查询子操作。
可选的,所述分布式数据库中的各个分布式节点上设置有基于FPGA的加速板卡。
可选的,所述若所述查询子操作存在排序操作之后,还包括:
将当前所述排序操作加载到所述加速板卡上。
可选的,所述利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,包括:
分别对所述第一数据组和所述第二数据组中的数据进行编号,得到第一编号后数据组和第二编号后数据组;
利用双调排序算法分别对所述第一编号后数据组和所述第二编号后数据组进行排序,得到第一排序后数据组和第二排序后数据组。
第二方面,本申请公开了一种数据库查询装置,应用于分布式数据库中的分布式节点,包括:
数据组获取模块,用于当接收到数据库查询操作指令后,获取待查询的目标数据组;
数据组提取模块,用于依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;
第一数据组排序模块,用于利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;
第二数据组排序模块,用于分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。
第三方面,本申请公开了一种电子设备,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现前述的数据库查询方法。
第四方面,本申请公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述的数据库查询方法。
可见,本申请当接收到数据库查询操作指令后,先获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组,然后利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,再分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。本申请通过将双调排序算法与归并排序算法进行结合,能够实现多个数据元的并行输出,提高数据库查询时排序功能的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种数据库查询方法流程图;
图2为本申请公开的一种具体的数据库查询方法结构示意图;
图3为本申请公开的一种具体的归并排序方法结构示意图;
图4为本申请公开的一种具体的单个数据的比较器组结构示意图;
图5为本申请公开的一种数据库查询方法流程图;
图6为本申请公开的一种数据库查询装置结构示意图;
图7为本申请公开的一种电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例公开了一种数据库查询方法,应用于分布式数据库中的分布式节点,参见图1所示,该方法包括:
步骤S11:当接收到数据库查询操作指令后,获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组。
本实施例中,当分布式数据库中的分布式节点接收到数据库查询操作指令后,先对待查询的目标数据组进行获取,然后依次从上述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组。例如,依次从长度为X的待查询的目标数据组中提取2个长度为N的数据组。
在一种具体的实施方式中,所述获取待查询的目标数据组,具体可以包括:判断所述数据库查询操作指令是否存在排序操作;若所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组。本实施例中,在获取待查询的目标数据组之前,需要先判断数据库查询操作指令中是否存在排序操作,如果上述数据库查询操作指令存在排序操作,则对待查询的目标数据组进行获取,也即,确定当前的数据库查询操作指令中包含数据排序任务。
需要指出的是,所述分布式数据库中的各个分布式节点上设置有基于FPGA的加速板卡。可以理解的是,分布式数据库中的每个分布式节点都可以独立地进行数据库的查询操作,本申请为了提高分布式节点对数据库查询的效率,预先在分布式数据库的各个分布式节点上增加了基于FPGA(Field-Programmable Gate Array,现场可编程门阵列)的加速板卡,用于加速处理当前分布式节点的查询子操作。
相应的,所述若所述查询子操作存在排序操作之后,具体还包括:将当前所述排序操作加载到所述加速板卡上。也即,当监测到当前数据库查询操作指令存在排序操作时,将当前排序操作加载到基于FPGA的加速板卡上。
步骤S12:利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组。
本实施例中,依次从所述目标数据组中提取两个长度相同的数据组得到多个第一数据组和多个第二数据组之后,可以利用双调排序算法分别对上述第一数据组和上述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组。具体的,参见图2所示,先依次从长度为X的输入数据组中提取2个长度为N的数据组,得到长度为N的第一数据组和第二数据组,进一步的,将上述第一数据组和上述第二数据组分别输入至预先基于双调排序(Bitonic Sort)算法创建的双调排序模块_1和双调排序模块_2中进行排序,得到相应的第一排序后数据组和第二排序后数据组,进一步的,将排序后得到的上述第一排序后数据组和第二排序后数据组输入至预先创建的归并排序模块进行归并排序处理;其中,双调排序模块_1、双调排序模块_2和归并排序模块运行在FPGA硬件加速单元上。需要指出的是,本申请选用双调算法是因为双调算法可对多个数据进行流水线排序,并且适合FPGA硬件加速实现。
具体的,所述利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,可以包括:分别对所述第一数据组和所述第二数据组中的数据进行编号,得到第一编号后数据组和第二编号后数据组;利用双调排序算法分别对所述第一编号后数据组和所述第二编号后数据组进行排序,得到第一排序后数据组和第二排序后数据组。例如,将上述2个长度为N的数据组进行编号,第一个数据组编号为:N_1-1到N_1-N,第二个数据组编号为:N_2-1到N_2-N,然后利用双调排序算法分别对N_1-1到N_1-N和N_2-1到N_2-N两个数据组进行排序,从而生成两组长度相同且排序后的数据组。
步骤S13:分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。
本实施例中,利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组之后,参见图3所示,分别将上述第一排序后数据组和上述排序后数据组中的数据输入到比较器阵列的各个比较器组中,最后利用归并排序(Merge Sort)算法对所有上述比较器组中的数据进行多次迭代排序,进而得到排序后数据,即数据库查询结果。
需要指出的是,相对于传统的排序方式,即单个时钟周期只能输出一个排序结果,本申请实施例通过将双调排序算法与归并排序算法进行结合,能够在2个时钟周期内,实现多个数据元的并行输出。在第一个时钟周期内,将上述2个排序后数据组放入到比较器组中,然后在该时钟周期内生成每个数据在排序结束后的2N个数据中的位置编号;接着在第二个周期内,根据每个数据在2N长度数据中的编号位置输出2N个排序后数据。具体的,当提取到的数据组的长度N=8且排序方式为升序时,生成每个数据的输出编号位置,具体的,单个输入数据的比较器组参见图4所示,将第二数据组N_2中的所有数据放入比较器组中,其中,每个比较器组中均含有两个N_2中的数据;接着将数据组N_1中的第一个数据放入到8个比较器组中,并与每个比较器组中的两个数据进行比较;当N_1-1大于等于比较器组中上方的数据,且小于等于比较器组中下方的数据时,输出布尔值为1的结果,否则输出布尔值为0的结果;然后根据上述布尔值结果,选择从左到右检测到的第一个非零值,其对应的排序后位置就是该数据在排序后长度为2N的数据中的位置;需要指出的是,当所有的布尔值均为0时,可以选择最右侧排序后位置作为结果位置。具体的,图4中第二个布尔值对应的“1+0”,其中,“1”表示数据组N_1中的第一个数据,“0”为寄存器默认值。可以理解的是,通过8个比较器组可以获取数据组N_1中每个数据在排序后长度为2N的数据组中的位置,同样的,通过8个比较器组可以获取到数据组N_2中每个数据在排序后长度为2N的数据组中的位置,通过本轮的计算,可以将长度为X的一个数据组划分为多个2N长度的单调排序数据组。进一步的,从长度为X的目标数据组中,定位两个长度大于N的单调排序数据组段Y_1和Y_2,然后分别从上述长度大于N的两个数据组中提取出长度为N的新数据组N_1’和N_2’,再分别对上述两个新的数据组进行编号,其中,第一个数据组编号为:N_1’-1到N_1’-N,第二个数据组编号为:N_2’-1到N_2’-N,然后将编号后的数据同时传输到归并排序模块中,以便进行归并计算。
具体的,上述归并计算的过程具体为:先将Y_1中的第一个长度为N的数据放入长度为2N的缓存中,并生成编号为N_1’-1到N_1’-N的数据组N_1’;接着将Y_2中的第一个长度为N的数据放入长度为2N的缓存中,并生成编号为N_2’-1到N_2’-N的数据组N_2’。在第一个时钟周期,将2个数据组N_1’和N_2’分别放入到比较器组中,并在该周期内生成每个数据在排序结束后的2N个数据中的位置编号;同时,在上述第一个时钟周期内,继续从数据组段Y_1和Y_2中提取长度为N的数据组,与前一个长度为N的数据组段组成一个长度为2N的数据组段;第二个时钟周期,根据每个数据在2N长度数据中的编号位置,输出前N个数据,并且,在上述第二个时钟周期内,计算出数据组N_1’需要输出的数据量,然后对上述第一个周期内组成的2N长度数据段进行同等移位,并截取前N个数据元,从而生成新的数据组N_1’’并编号,进一步的,计算出数据组N_2’需要输出的数据量,并对上述第一个周期内组成的2N长度的数据段进行同等移位,然后截取前N个数据元,从而生成新的数据组N_2’’并编号;第三个时钟周期,重复第二个周期的步骤,流水线完成所有数据的排序输出,通过本轮计算,可以将长度为X的待进行数据库查询的目标数据组,划分为多个4N长度的单调排序数据组,再对4N长度的单调排序数据组进行排序,生成8N长度的单调排序数据组,继续进行多次迭代排序,最终可实现长度为X的数据组的排序。
可见,本申请实施例当接收到数据库查询操作指令后,先获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组,然后利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,再分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。本申请实施例通过将双调排序算法与归并排序算法进行结合,能够在2个时钟周期内,实现多个数据元的并行输出,提高数据库查询时排序功能的效率。
本申请实施例公开了一种具体的数据库查询方法,应用于分布式数据库中的分布式节点,参见图5所示,该方法包括:
步骤S21:当接收到数据库查询操作指令后,判断所述数据库查询操作指令是否存在排序操作,若所述数据库查询操作指令存在排序操作,则分离出所述数据库查询操作指令的各个查询子操作,并判断所述查询子操作是否存在排序操作。
本实施例中,当接收到数据库查询操作指令后,先判断上述数据库查询操作指令是否存在排序操作,如果上述数据库查询操作指令存在排序操作,则分离出上述数据库查询操作指令的各个查询子操作,然后判断上述查询子操作是否存在排序操作。
具体的,所述分离出所述数据库查询操作指令的各个查询子操作,可以包括:通过解析器分离出所述数据库查询操作指令的各个查询子操作。本实施例中,分布式节点在接收到数据库查询操作指令后,分布式节点的主机可以通过解析器分离出数据库查询操作指令的各个子操作。
步骤S22:若所述查询子操作存在排序操作,则获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组。
本实施例中,如果上述查询子操作存在排序操作,则获取待查询的目标数据组,然后依次从上述目标数据组中提取两个长度相同的数据组,进而得到多个第一数据组和多个第二数据组。
步骤S23:分别对所述第一数据组和所述第二数据组中的数据进行编号,得到第一编号后数据组和第二编号后数据组。
步骤S24:利用双调排序算法分别对所述第一编号后数据组和所述第二编号后数据组进行排序,得到第一排序后数据组和第二排序后数据组。
步骤S25:分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。
其中,关于上述步骤S23、S24、S25更加具体的处理过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例利用了FPGA并行计算的特点,并利用双调算法对提取出的少量数据进行排序处理,再通过归并算法,在FPGA中使用多个比较器组,同时计算两个输入数据组在排序后的位置信息,可在2个周期内,实现多个数据元的并行输出,从而提高了数据库查询时排序功能的效率。
相应的,本申请实施例还公开了一种数据库查询装置,应用于分布式数据库中的分布式节点,参见图6所示,该装置包括:
数据组获取模块11,用于当接收到数据库查询操作指令后,获取待查询的目标数据组;
数据组提取模块12,用于依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;
第一数据组排序模块13,用于利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;
第二数据组排序模块14,用于分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。
其中,关于上述各个模块的具体工作流程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
可见,本申请实施例中,当接收到数据库查询操作指令后,先获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组,然后利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,再分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果。本申请实施例通过将双调排序算法与归并排序算法进行结合,能够在2个时钟周期内实现多个数据元的并行输出,提高数据库查询时排序功能的效率。
在一些具体实施例中,所述数据组获取模块11,具体可以包括:
第一判断单元,用于判断所述数据库查询操作指令是否存在排序操作;
第一数据组获取单元,用于如果所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组。
在一些具体实施例中,所述第一判断单元,具体可以包括:
第一查询子操作分离单元,用于分离出所述数据库查询操作指令的各个查询子操作;
第二判断单元,用于判断所述查询子操作是否存在排序操作;
相应的,所述第一数据组获取单元,具体可以包括:
第二数据组获取单元,用于如果所述查询子操作存在排序操作,则获取待查询的目标数据组。
在一些具体实施例中,所述第一查询子操作分离单元,具体可以包括:
第二查询子操作分离单元,用于通过解析器分离出所述数据库查询操作指令的各个查询子操作。
在一些具体实施例中,所述分布式数据库中的各个分布式节点上设置有基于FPGA的加速板卡。
在一些具体实施例中,所述数据库查询装置,还可以包括:
排序操作加载单元,用于将当前所述排序操作加载到所述加速板卡上。
在一些具体实施例中,所述第一数据组排序模块13,具体可以包括:
数据组编号单元,用于分别对所述第一数据组和所述第二数据组中的数据进行编号,得到第一编号后数据组和第二编号后数据组;
数据组排序单元,用于利用双调排序算法分别对所述第一编号后数据组和所述第二编号后数据组进行排序,得到第一排序后数据组和第二排序后数据组。
进一步的,本申请实施例还公开了一种电子设备,图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本申请的使用范围的任何限制。
图7为本申请实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的数据库查询方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本申请技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作***221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
其中,操作***221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是Windows Server、Netware、Unix、Linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的数据库查询方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
进一步的,本申请还公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现前述公开的数据库查询方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种数据库查询方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种数据库查询方法,应用于分布式数据库中的分布式节点,其特征在于,包括:
当接收到数据库查询操作指令后,获取待查询的目标数据组,并依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;
利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;
分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果;
其中,所述利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果,包括:在第一个时钟周期内,通过所述比较器组生成所述第一排序后数据组和所述第二排序后数据组在排序结束后的所有数据中的位置编号;其中,所述比较器组中比较器的类型为布尔型比较器,所述位置编号包括在数据组中的对应位置和对应的寄存器值;在第二个时钟周期内,根据每个数据在总长度数据中的所述位置编号输出与所述总长度数据相同个数的排序后数据;利用归并排序算法对所有所述比较器组中的所述排序后数据进行多次迭代排序,得到流水线排序后的数据库查询结果。
2.根据权利要求1所述的数据库查询方法,其特征在于,所述获取待查询的目标数据组,包括:
判断所述数据库查询操作指令是否存在排序操作;
若所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组。
3.根据权利要求2所述的数据库查询方法,其特征在于,所述判断所述数据库查询操作指令是否存在排序操作,包括:
分离出所述数据库查询操作指令的各个查询子操作,并判断所述查询子操作是否存在排序操作;
相应的,所述若所述数据库查询操作指令存在排序操作,则获取待查询的目标数据组,包括:
若所述查询子操作存在排序操作,则获取待查询的目标数据组。
4.根据权利要求3所述的数据库查询方法,其特征在于,所述分离出所述数据库查询操作指令的各个查询子操作,包括:
通过解析器分离出所述数据库查询操作指令的各个查询子操作。
5.根据权利要求4所述的数据库查询方法,其特征在于,所述分布式数据库中的各个分布式节点上设置有基于FPGA的加速板卡。
6.根据权利要求5所述的数据库查询方法,其特征在于,所述若所述查询子操作存在排序操作之后,还包括:
将当前所述排序操作加载到所述加速板卡上。
7.根据权利要求1至6任一项所述的数据库查询方法,其特征在于,所述利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组,包括:
分别对所述第一数据组和所述第二数据组中的数据进行编号,得到第一编号后数据组和第二编号后数据组;
利用双调排序算法分别对所述第一编号后数据组和所述第二编号后数据组进行排序,得到第一排序后数据组和第二排序后数据组。
8.一种数据库查询装置,应用于分布式数据库中的分布式节点,其特征在于,包括:
数据组获取模块,用于当接收到数据库查询操作指令后,获取待查询的目标数据组;
数据组提取模块,用于依次从所述目标数据组中提取两个长度相同的数据组,得到多个第一数据组和多个第二数据组;
第一数据组排序模块,用于利用双调排序算法分别对所述第一数据组和所述第二数据组进行排序,得到第一排序后数据组和第二排序后数据组;
第二数据组排序模块,用于分别将所述第一排序后数据组和第二排序后数据组中的数据输入至比较器组中,并利用归并排序算法对所有所述比较器组中的数据进行多次迭代排序,得到排序后的数据库查询结果;
其中,所述第二数据组排序模块,具体用于在第一个时钟周期内,通过所述比较器组生成所述第一排序后数据组和所述第二排序后数据组在排序结束后的所有数据中的位置编号;其中,所述比较器组中比较器的类型为布尔型比较器,所述位置编号包括在数据组中的对应位置和对应的寄存器值;在第二个时钟周期内,根据每个数据在总长度数据中的所述位置编号输出与所述总长度数据相同个数的排序后数据;利用归并排序算法对所有所述比较器组中的所述排序后数据进行多次迭代排序,得到流水线排序后的数据库查询结果。
9.一种电子设备,其特征在于,包括处理器和存储器;其中,所述处理器执行所述存储器中保存的计算机程序时实现如权利要求1至7任一项所述的数据库查询方法。
10.一种计算机可读存储介质,其特征在于,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的数据库查询方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310552231.2A CN116361319B (zh) | 2023-05-17 | 2023-05-17 | 一种数据库查询方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310552231.2A CN116361319B (zh) | 2023-05-17 | 2023-05-17 | 一种数据库查询方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116361319A CN116361319A (zh) | 2023-06-30 |
CN116361319B true CN116361319B (zh) | 2023-08-29 |
Family
ID=86938186
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310552231.2A Active CN116361319B (zh) | 2023-05-17 | 2023-05-17 | 一种数据库查询方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116361319B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740264A (zh) * | 2014-12-10 | 2016-07-06 | 北大方正集团有限公司 | 一种分布式xml数据库的排序方法及装置 |
WO2019080431A1 (zh) * | 2017-10-27 | 2019-05-02 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法、***及存储介质 |
CN109964203A (zh) * | 2016-11-14 | 2019-07-02 | 谷歌有限责任公司 | 数据并行计算设备的排序 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN113076312A (zh) * | 2021-03-11 | 2021-07-06 | 中科驭数(北京)科技有限公司 | 归并树形排序装置、排序***及排序方法 |
CN113468169A (zh) * | 2021-06-02 | 2021-10-01 | 中科驭数(北京)科技有限公司 | 硬件数据库查询方法、数据库***查询方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10762071B2 (en) * | 2016-11-29 | 2020-09-01 | Sap Se | Value-ID-based sorting in column-store databases |
US11176084B2 (en) * | 2017-11-09 | 2021-11-16 | International Business Machines Corporation | SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register |
-
2023
- 2023-05-17 CN CN202310552231.2A patent/CN116361319B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105740264A (zh) * | 2014-12-10 | 2016-07-06 | 北大方正集团有限公司 | 一种分布式xml数据库的排序方法及装置 |
CN109964203A (zh) * | 2016-11-14 | 2019-07-02 | 谷歌有限责任公司 | 数据并行计算设备的排序 |
WO2019080431A1 (zh) * | 2017-10-27 | 2019-05-02 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法、***及存储介质 |
CN111913955A (zh) * | 2020-06-22 | 2020-11-10 | 中科驭数(北京)科技有限公司 | 数据的排序处理装置、方法和存储介质 |
CN113076312A (zh) * | 2021-03-11 | 2021-07-06 | 中科驭数(北京)科技有限公司 | 归并树形排序装置、排序***及排序方法 |
CN113468169A (zh) * | 2021-06-02 | 2021-10-01 | 中科驭数(北京)科技有限公司 | 硬件数据库查询方法、数据库***查询方法及装置 |
Non-Patent Citations (1)
Title |
---|
"南方CASS7.0 地籍模块中宗地排序和界址点编号";彭利林等;《社科纵横》;第56-59页 * |
Also Published As
Publication number | Publication date |
---|---|
CN116361319A (zh) | 2023-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102184205B (zh) | 基于可扩展精度混沌哈希的多模式串匹配方法 | |
JP5708495B2 (ja) | 辞書作成装置、単語収集方法、及び、プログラム | |
CN105224959A (zh) | 排序模型的训练方法和装置 | |
CN106412072B (zh) | 一种业务处理方法及装置 | |
CN104915251A (zh) | 任务调度方法及装置 | |
CN109857804A (zh) | 一种分布式模型参数的搜索方法、装置和电子设备 | |
CN110928576A (zh) | 一种卷积神经网络的卷积处理方法、装置及存储介质 | |
CN105338082A (zh) | 基于应用代理服务器的负载均衡方法及装置 | |
CN110399387A (zh) | 基于表关联关系动态生成查询sql的方法及装置 | |
CN103870607A (zh) | 多搜索引擎搜索结果的排序方法及装置 | |
CN105488176A (zh) | 数据处理方法和装置 | |
CN106648839A (zh) | 数据处理的方法和装置 | |
CN104102694A (zh) | 树形节点排序方法和树形节点排序装置 | |
CN116361319B (zh) | 一种数据库查询方法、装置、设备及存储介质 | |
CN111985634B (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
CN105302827A (zh) | 一种事件的搜索方法和设备 | |
CN110532528B (zh) | 基于随机游走的书籍相似度计算方法及电子设备 | |
CN110209702B (zh) | 开关磁阻电机功率拓扑推荐方法、***、终端及存储介质 | |
CN110909072B (zh) | 一种数据表建立方法、装置及设备 | |
CN116862025A (zh) | 模型训练方法、***、客户端和服务器节点、电子设备和存储介质 | |
CN113515674B (zh) | 时序图随机游走的采样方法及装置 | |
CN105095385A (zh) | 一种检索结果的输出方法及装置 | |
CN108958917A (zh) | 云计算的任务调度方法及*** | |
CN110209804A (zh) | 目标语料的确定方法和装置、存储介质及电子装置 | |
CN105069064B (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 |