CN113254488A - 分布式数据库的数据排序方法及系统 - Google Patents
分布式数据库的数据排序方法及系统 Download PDFInfo
- Publication number
- CN113254488A CN113254488A CN202010776842.1A CN202010776842A CN113254488A CN 113254488 A CN113254488 A CN 113254488A CN 202010776842 A CN202010776842 A CN 202010776842A CN 113254488 A CN113254488 A CN 113254488A
- Authority
- CN
- China
- Prior art keywords
- data
- interval
- node
- nodes
- ordered
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 238000012163 sequencing technique Methods 0.000 claims description 28
- 238000004364 calculation method Methods 0.000 claims description 10
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000013461 design Methods 0.000 abstract description 7
- 238000012360 testing method Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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/248—Presentation of query results
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种分布式数据库的数据排序方法及系统,本申请通过指示不同数据节点根据数据区间范围对查询到的有序结果集中数据进行分段、根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点,并指示不同数据节点对接收到的区间数据集进行排序的设计,使得能直接遍历读取排序数据集得到有序数据集,无需进行有序结果集的汇总和整体数据集的排序,提高了数据排序效率。
Description
技术领域
本申请属于数据处理技术领域,尤其涉及一种分布式数据库的数据排序方法及系统。
背景技术
在大数据时代,对海量结构化数据进行分析并挖掘其潜在价值,越来越受到政府、企业的重视。对海量结构化数据的分析,主要采用分布式结构化数据库(MPP)技术,分布式结构化数据库将数据分散存储在多个数据节点中(DataNode),数据查询时从各个数据节点查询对应数据,然后对数据节点查询到的数据进行数据排序,并将排序后的数据发送给用户。
现有的分布式结构化数据库对数据节点查询到的数据进行数据排序时,先通过对数据节点查询到的数据进行汇总,并对汇总后的数据进行整体排序,以得到有序数据集,但当汇总后的数据较大时,数据排序性能响应不理想,导致数据排序耗时较长,降低了数据排序效率。
发明内容
本申请实施例提供了一种分布式数据库的数据排序方法及系统,旨在解决现有的分布式数据库的数据排序方法的排序效率低下的问题。
第一方面,本申请实施例提供了一种分布式数据库的数据排序方法,所述方法包括:
根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合,所述数据集合包括不同有序结果集,一个所述数据节点进行数据查询并排序后得到一个有序结果集;
若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据;
根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围;
指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的数据进行分段,得到区间数据集;
确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点;
指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集;
遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
本申请实施例与现有技术相比存在的有益效果是:通过根据最小数据、最大数据和数据节点的个数计算数据区间值,并根据数据区间值计算数据区间范围的设计,能有效的指示数据节点对查询到的有序结果集中的数据进行分段,使得将数据大小处于同一数据区间范围内的数据划分至同一个区间数据集中,通过确定不同数据节点中分段后的区间数据集与不同数据节点之间的分发关系,并根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点的设计,能将不同数据节点中相同数据区间范围对应的区间数据集分发至同一个数据节点中,进而提高了数据节点对接收到的区间数据集的排序效率,并基于数据节点对接收到的区间数据集的排序结果,能直接进行排序数据集的遍历获取,使得根据排序数据集的遍历结果可直接读取到针对数据查询指令的有序数据集,本实施例通过指示不同数据节点根据数据区间范围对查询到的有序结果集中的不同数据进行分段、根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点,并指示不同数据节点对接收到的区间数据集进行排序的设计,使得能直接遍历读取排序数据集得到有序数据集,无需进行有序结果集的汇总和整体数据集的排序,提高了数据排序效率。
进一步地,所述确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,包括:
获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系。
进一步地,所述遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集,包括:
获取所述数据节点的节点标识,并对所述节点标识进行排序;
根据所述节点标识的排序结果生成遍历顺序,并根据所述遍历顺序获取所述数据节点中的所述排序数据集,得到所述有序数据集。
进一步地,所述获取所述数据集合中的最小数据和最大数据,包括:
分别获取每个所述有序结果集中的最小节点数据和最大节点数据,所述最小节点数据为对应所述有序结果集中数据最小的数据,所述最大节点数据为对应所述有序结果集中数据最大的数据;
将所述最小节点数据之间最小的数据设置为所述最小数据;
将所述最大节点数据之间最大的数据设置为所述最大数据。
进一步地,所述根据所述最小数据、所述最大数据和所述数据节点的节点个数计算数据区间值所采用的计算公式为:
r=(max-min)/n
其中,r为所述数据区间值,max为所述最大数据,min为所述最小数据,n为所述节点个数。
进一步地,所述根据所述数据区间值计算数据区间范围所采用的计算公式为:
dsx=[min+(x-1)*r,min+x*r)
dsn=[min+(n-1)*r,max]
其中,dsx为第x个所述数据区间范围,dsn为最后一个所述数据区间范围。
进一步地,所述根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合之后,还包括:
若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集。
第二方面,本申请实施例提供了一种分布式数据库的数据排序系统,包括:
数据查询指示模块,用于根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合,所述数据集合包括不同有序结果集,一个所述数据节点进行数据查询并排序后得到一个有序结果集;
数据获取模块,用于若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据;
区间值计算模块,用于根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围;
数据分段指示模块,用于指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的不同数据进行分段,得到区间数据集;
数据分发指示模块,用于确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点;
数据排序指示模块,用于指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集;
数据遍历排序模块,用于遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
进一步地,所述分布式数据库的数据排序系统还包括:
数据排序模块,用于若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集。
进一步地,所述数据分发指示模块还用于:
获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系。
可以理解的是,上述第二方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本申请第一实施例提供的分布式数据库的数据排序方法的流程图;
图2是本申请第一实施例提供的分布式数据库的数据排序方法的具体实施流程图;
图3是本申请第二实施例提供的分布式数据库的数据排序方法的流程图;
图4是本申请第三实施例提供的分布式数据库的数据排序系统的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本申请说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
实施例一
请参阅图1,是本申请第一实施例提供的分布式数据库的数据排序方法的流程图,包括步骤:
步骤S10,根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合。
其中,该分布式数据库的数据排序方法可以应用于任一分布式结构化数据库,该分布式结构化数据库中设置有至少两个不相同的数据节点,当该分布式结构化数据库接收到用户发送的数据查询指令时,则根据该数据查询指令中携带的数据标识分别指示数据节点进行数据查询并排序,并指示不同数据节点输出对应的有序结果集,得到该数据集合,该数据集合包括不同有序结果集,一个数据节点进行数据查询并排序后得到一个有序结果集。
可选的,该步骤中,该数据标识可以采用文字、数字或字母的方式存储在该数据查询指令,每个数据节点中均设置有对应的节点数据库,该数据标识用于指示不同数据节点根据该数据标识分别对对应的节点数据库进行数据查询,得到对应的有序结果集。
例如,该分布式结构化数据库包括数据节点DN1、数据节点DN2和数据节点DN3,该数据节点DN1、数据节点DN2和数据节点DN3对应的节点数据库为数据库A1、数据库A2和数据库A3,当该数据查询指令中携带的数据标识为文字标识“张三”时,则根据该文字标识“张三”分别指示数据节点DN1对数据库A1、数据节点DN2对数据库A2、数据节点DN3对数据库A3进行数据查询,得到对应的数据集合D,该数据集合D包括有序结果集d1、有序结果集d2和有序结果集d3。
步骤S20,若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据。
其中,该数据阈值可以根据需求进行设置,该最小数据和最大数据分别为该数据集合中数据最小的数据和数据最大的数据,例如,数据节点DN1、数据节点DN2和数据节点DN3分别为1班、2班和3班的考试分数,该数据查询指令中携带的数据标识为文字标识“语文考试成绩”,则该数据集合D中的有序结果集d1、有序结果集d2、和有序结果集d3分别为1班级的语文考试分数、2班级的语文考试分数和3班级的语文考试分数的语文考试分数。
可选的,本实施例中,有序结果集d1包括:语文成绩21、78、97,有序结果集d2包括:语文成绩79、98、107,有序结果集d3包括:语文成绩13、67、96,则该数据集合中的最小数据为语文成绩13,最大数据为语文成绩107。
步骤S30,根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围。
其中,所述根据所述最小数据、所述最大数据和所述数据节点的节点个数计算数据区间值所采用的计算公式为:
r=(max-min)/n
其中,r为所述数据区间值,max为所述最大数据,min为所述最小数据,n为所述节点个数;
例如,针对本实施例中,有序结果集d1包括:语文成绩21、78、97,有序结果集d2包括:语文成绩79、98、109,有序结果集d3包括:语文成绩13、67、96,则该数据集合中的最小数据为语文成绩13,最大数据为语文成绩109,则当该最大数据为109,最小数据为13,节点个数n为3,该数据区间值r=(109-13)/3=32。
可选的,该步骤中,所述根据所述数据区间值计算数据区间范围所采用的计算公式为:
dsx=[min+(x-1)*r,min+x*r)
dsn=[min+(n-1)*r,max]
其中,dsx为第x个所述数据区间范围,dsn为最后一个所述数据区间范围,所述数据区间范围的总个数等于数据节点的总个数,当该数据节点的总个数为3个时,则该数据区间范围的总个数为3个。
当最大数据为109,最小数据为13,节点个数n为3时,则,本实施例中,第一个数据区间范围ds1为[13,45)、第二个数据区间范围ds2为[45,77)、第三个数据区间范围ds3为[77,109]。
步骤S40,指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的数据进行分段,得到区间数据集。
其中,通过指示不同数据节点根据数据区间范围对查询到的有序结果集中的不同数据进行分段,得到区间数据集的设计,使得能指示数据节点对查询到的有序结果集中不同数据大小的数据进行分段,以及,使得不同数据节点中数据大小处于同一数据区间范围内的数据划分至同一个区间数据集中。
例如,当数据节点查询到的有序结果集中数据H1为20时,则将该数据H1划分至数据区间范围ds1,当数据节点查询到的有序结果集中数据H2为70时,则将该数据H2划分至数据区间范围ds2。
该步骤中,每一数据区间范围均对应一个区间数据集,该区间数据集可以为空集,每个数据节点中针对不同的数据区间范围均生成有对应的区间数据集,例如,针对数据区间范围ds1、数据区间范围ds2、数据区间范围ds3在数据节点DN1、数据节点DN2和数据节点DN3均生成有对应的区间数据集,每个不同数据区间范围中的数据之间的集合为该区间数据集,例如,该数据区间范围ds1中存在数据H3和数据H4时,则该数据H3和数据H4所组成的集合为该数据区间范围ds1对应的区间数据集。
步骤S50,确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点。
可选的,该步骤中,所述确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,包括:
获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系;
其中,当数据节点分别将查询到的有序结果集中不同数据大小的数据划分至对应的数据区间范围中得到区间数据集时,根据该区间数据集对应的数据区间范围对该区间数据集进行序号标记,得到该区间序号,例如,针对该数据区间范围ds1对应的区间数据集进行序号1标记,使得该区间数据集对应的区间序号为序号1,针对该数据区间范围ds2对应的区间数据集进行序号2标记,使得该区间数据集对应的区间序号为序号2。
该步骤中,当数据节点在该分布式结构化数据库中的序号与区间数据集的区间序号相同时,则将该数据节点与对应的区间数据集之间的对应关系进行存储,得到该分发关系,例如,当该数据节点DN1的序号为1、数据节点DN2的序号为2、数据节点DN3的序号为3时,则将区间序号为1的区间数据集与该数据节点DN1之间的对应关系进行存储、将区间序号为2的区间数据集与该数据节点DN2之间的对应关系进行存储、将区间序号为3的区间数据集与该数据节点DN3之间的对应关系进行存储,以得到该分发关系。
该步骤中,将不同数据节点中的数据区间范围ds1对应的区间数据集均分发至数据节点DN1中、将不同数据节点中的数据区间范围ds2对应的区间数据集均分发至数据节点DN2中、将不同数据节点中的数据区间范围ds3对应的区间数据集均分发至数据节点DN3中。
步骤S60,指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集。
其中,不同数据节点中均设置有相同的默认排序规则,通过指示不同数据节点根据该默认排序规则对接收到的区间数据集进行排序,得到该排序数据集。
步骤S70,遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
该步骤中,所述遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集,包括:
获取所述数据节点的节点标识,并对所述节点标识进行排序;
根据所述节点标识的排序结果生成遍历顺序,并根据所述遍历顺序获取所述数据节点中的所述排序数据集,得到所述有序数据集;
其中,每个数据节点的节点标识可以根据需求进行设置,该节点标识可以采用文字标识、数字标识或字母等标识,该节点标识与对应数据节点之间一一对应,在该分布式结构化数据库中预存储有节点排序表,该节点排序表中存储有不同节点标识与对应排序序号之间的对应关系,因此,该步骤中,通过分别将不同数据节点的节点标识与该节点排序表进行匹配,以得到节点标识对应的排序序号,并根据该排序序号对节点标识和节点标识对应的数据节点进行排序,以得到该遍历顺序,例如,该遍历顺序为数据节点DN1-数据节点DN2-数据节点DN3,则依序遍历读取该数据节点DN1、数据节点DN2和数据节点DN3中的排序数据集,得到该有序数据集。
可选的,该步骤中,所述根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合之后,还包括:
若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集;
其中,有序结果集中的第一个数据为数据最小的数据,最后一个数据为数据最大的数据。
例如,有序结果集d1包括:语文成绩21、78、97,有序结果集d2包括:语文成绩109、98、79,有序结果集d3包括:语文成绩96、13、67,则根据数据大小分别对有序结果集d1、有序结果集d2和有序结果集d3进行排序,使得排序后的有序结果集d1为:21、78、97,有序结果集d2为79、98、109,有序结果集d3为13、67、96,分别获取有序结果集d1、有序结果集d2和有序结果集d3中的第一个数据,得到21、79和13,将21、79和13之间数据最小的数据13添加至排序结果集中,并在有序结果集d3中删除数据13,使得有序结果集d3为67、96,继续获取有序结果集d1、有序结果集d2和有序结果集d3中的第一个数据,得到21、79和67,将21、79和67之间数据最小的数据21添加至排序结果集中,并在有序结果集d1中删除数据21,使得有序结果集d1为78、97,并持续持续读取排序后有序结果集d1、有序结果集d2和有序结果集d3中的第一个数据,并在对应有序结果集中抽取第一个数据之间最小的数据添加至排序结果集中,直至有序结果集d1、有序结果集d2和有序结果集d3均为空集时,将排序结果集设置为针对数据查询指令的有序数据集,最终得到的有序数据集为:13、21、67、78、79、96、97、98、109。
具体的,请参阅图2,是本申请第一实施例提供的分布式数据库的数据排序方法的具体实施流程图,其中,该分布式结构化数据库包括数据节点DN1、DN2和DN3,DN1中获取到的有序结果集d1包括5个数据,该5个数据分别对应图2中的数据21、78、97、139和159,DN2中获取到的有序结果集d2包括4个数据,该4个数据分别对应图2中的数据79、98、107和120,DN3中获取到的有序结果集d3包括5个数据,该5个数据分别对应图2中的数据13、67、96、125和132。
则,该数据集合中的最小数据min为13,最大数据max为158,节点个数n为3,计算得到的数据区间值r等于48,第一个数据区间范围ds1为[13,61)、第二个数据区间范围ds2为[61,109)、第三个数据区间范围ds3为[109,158]。
具体的,在DN1中数据区间范围ds1对应的区间数据集包括数据21,数据区间范围ds2对应的区间数据集包括数据78和97,数据区间范围ds3对应的区间数据集包括数据139和158;
在DN2中数据区间范围ds1对应的区间数据集为空集,数据区间范围ds2对应的区间数据集包括数据79、98和107,数据区间范围ds3对应的区间数据集包括数据120;
在DN3中数据区间范围ds1对应的区间数据集包括数据13,数据区间范围ds2对应的区间数据集包括数据67和96,数据区间范围ds3对应的区间数据集包括数据125和132。
因此,该步骤中,分别指示该数据节点DN1、DN2和DN3将数据区间范围ds1对应的区间数据集分发至DN1,DN1接收到的数据包括数据13和21;分别指示该数据节点DN1、DN2和DN3将数据区间范围ds2对应的区间数据集分发至DN2,DN2接收到的数据包括数据79、98、107、78、97、67和96;分别指示该数据节点DN1、DN2和DN3将数据区间范围ds3对应的区间数据集分发至DN3,DN3接收到的数据包括数据125、132、139、158和120,并指示数据节点DN1、DN2和DN3对接收到的区间数据集进行排序,使得数据节点DN1中排序后的排序数据集为13-21,数据节点DN2中排序后的排序数据集为67-78-79-96-97-98-107,数据节点DN3中排序后的排序数据集为120-125-132-139-158,并通过依序遍历读取数据节点DN1、DN2和DN3中的排序数据集,得到该有序数据集,该有序数据集包括数据13-21-67-78-79-96-97-98-107-120-125-132-139-158。
本实施例中,通过根据最小数据、最大数据和数据节点的个数计算数据区间值,并根据数据区间值计算数据区间范围的设计,能有效的指示数据节点对查询到的有序结果集中不同大小的数据进行分段,使得将数据大小处于同一数据区间范围内的数据划分至同一个区间数据集中,通过确定不同数据节点中分段后的区间数据集与不同数据节点之间的分发关系,并根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点的设计,能将不同数据节点中相同数据区间范围对应的区间数据集分发至同一个数据节点中,进而提高了数据节点对接收到的区间数据集的排序效率,并基于数据节点对接收到的区间数据集的排序结果,能直接进行排序数据集的遍历获取,使得根据排序数据集的遍历结果可直接读取到针对数据查询指令的有序数据集,本实施例通过指示不同数据节点根据数据区间范围对查询到的有序结果集中的不同数据进行分段、根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点,并指示不同数据节点对接收到的区间数据集进行排序的设计,使得能直接遍历读取排序数据集得到有序数据集,无需进行有序结果集的汇总和整体数据集的排序,提高了数据排序效率。
实施例二
请参阅图3,是本申请第二实施例提供的分布式数据库的数据排序方法的流程图,该第二实施例用于对第一实施例中步骤S20进行细化,以细化描述如何获取所述数据集合中的最小数据和最大数据的步骤,包括步骤:
步骤S21,分别获取每个所述有序结果集中的最小节点数据和最大节点数据。
其中,该最小节点数据为对应有序结果集中数据最小的数据,该最大节点数据为对应有序结果集中数据最大的数据。
可选的,本实施例中,当指示不同数据节点分别进行数据查询后,指示不同数据节点对查询到的有序结果集分别进行排序,其中,指示不同数据节点对查询到的有序结果集进行排序所采用的排序算法包括快速排序算法或置换选择排序。
具体的,当该数据节点查询到的有序结果集的数据大于预设数据时,则指示该数据节点对查询到的有序结果集进行置换选择排序,当该数据节点查询到的有序结果集的数据小于或等于预设数据时,则指示该数据节点对查询到的有序结果集进行快速排序。
该步骤中,基于数据节点对有序结果集的排序,使得基于数据的大小对每个有序结果集中的数据均进行了排序,排序后的有序结果集中基于数据的大小对不同的数据进行正序或倒序的方式排序,当数据节点对有序结果集中的数据采用倒序的方式进行排序时,则该有序结果集中的第一个数据的数据最大,最后一个数据的数据最小,即该有序结果集中的第一个数据为对应有序结果集中的最大节点数据,该有序结果集中的最后一个数据为对应有序结果集中的最小节点数据。
可以理解的,当数据节点对有序结果集中的数据采用正序的方式进行排序时,则该有序结果集中的第一个数据的数据最小,最后一个数据的数据最大,即该有序结果集中的第一个数据为对应有序结果集中的最小节点数据,该有序结果集中的最后一个数据为对应有序结果集中的最大节点数据。
步骤S22,将所述最小节点数据之间最小的数据设置为所述最小数据。
其中,由于DN1中对应的最小节点数据为数据21、DN2中对应的最小节点数据为数据79、DN3中对应的最小节点数据为数据13,因此,将数据13设置为该最小数据。
步骤S23,将所述最大节点数据之间最大的数据设置为所述最大数据。
其中,由于DN1中对应的最大节点数据为数据159、DN2中对应的最大节点数据为数据120、DN3中对应的最大节点数据为数据132,因此,将数据159设置为该最大数据。
本实施例中,通过分别获取每个有序结果集中的最小节点数据和最大节点数据,能有效的在不同最小节点数据中选取到数据最小的数据,并能在不同最大节点数据之间选取到数据最大的数据,进而提高了数据区间范围计算的准确性,提高了不同数据节点对查询到的有序结果集中不同数据大小的数据分段准确性。
实施例三
对应于上文实施例所述的分布式数据库的数据排序方法,图4示出了本申请第三实施例提供的分布式数据库的数据排序系统100的结构示意图,为了便于说明,仅示出了与本申请实施例相关的部分。
参照图4,该系统包括:数据查询指示模块10、数据获取模块11、区间值计算模块12、数据分段指示模块13、数据分发指示模块14、数据排序指示模块15和数据遍历排序模块16,其中:
数据查询指示模块10,用于根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合,所述数据集合包括不同有序结果集,一个所述数据节点进行数据查询并排序后得到一个有序结果集。
数据获取模块11,用于若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据。
其中,所述数据获取模块11还用于:分别获取每个所述有序结果集中的最小节点数据和最大节点数据,所述最小节点数据为对应所述有序结果集中数据最小的数据,所述最大节点数据为对应所述有序结果集中数据最大的数据;
将所述最小节点数据之间最小的数据设置为所述最小数据;
将所述最大节点数据之间最大的数据设置为所述最大数据。
区间值计算模块12,用于根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围。
其中,所述根据所述最小数据、所述最大数据和所述数据节点的节点个数计算数据区间值所采用的计算公式为:
r=(max-min)/n
其中,r为所述数据区间值,max为所述最大数据,min为所述最小数据,n为所述节点个数。
所述根据所述数据区间值计算数据区间范围所采用的计算公式为:
dsx=[min+(x-1)*r,min+x*r)
dsn=[min+(n-1)*r,max]
其中,dsx为第x个所述数据区间范围,dsn为最后一个所述数据区间范围。
数据分段指示模块13,用于指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的不同数据进行分段,得到区间数据集。
数据分发指示模块14,用于确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点。
其中,数据分发指示模块14还用于:获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系。
数据排序指示模块15,用于指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集。
数据遍历排序模块16,用于遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
其中,数据遍历排序模块16还用于:获取所述数据节点的节点标识,并对所述节点标识进行排序;
根据所述节点标识的排序结果生成遍历顺序,并根据所述遍历顺序获取所述数据节点中的所述排序数据集,得到所述有序数据集。
可选的,所述分布式数据库的数据排序系统100还包括:
数据排序模块17,用于若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集。
本实施例中,通过根据最小数据、最大数据和数据节点的个数计算数据区间值,并根据数据区间值计算数据区间范围的设计,能有效的指示数据节点对查询到的有序结果集中不同大小的数据进行分段,使得将数据大小处于同一数据区间范围内的数据划分至同一个区间数据集中,通过确定不同数据节点中分段后的区间数据集与不同数据节点之间的分发关系,并根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点的设计,能将不同数据节点中相同数据区间范围对应的区间数据集分发至同一个数据节点中,进而提高了数据节点对接收到的区间数据集的排序效率,并基于数据节点对接收到的区间数据集的排序结果,能直接进行排序数据集的遍历获取,使得根据排序数据集的遍历结果可直接读取到针对数据查询指令的有序数据集,本实施例通过指示不同数据节点根据数据区间范围对查询到的有序结果集中的不同数据进行分段、根据分发关系指示不同数据节点分别将分段后的区间数据集分发至对应的数据节点,并指示不同数据节点对接收到的区间数据集进行排序的设计,使得能直接遍历读取排序数据集得到有序数据集,无需进行有序结果集的汇总和整体数据集的排序,提高了数据排序效率。
需要说明的是,上述装置/模块之间的信息交互、执行过程等内容,由于与本申请方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种分布式数据库的数据排序方法,其特征在于,所述方法包括:
根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合,所述数据集合包括不同有序结果集,一个所述数据节点进行数据查询并排序后得到一个有序结果集;
若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据;
根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围;
指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的数据进行分段,得到区间数据集;
确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点;
指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集;
遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
2.如权利要求1所述的分布式数据库的数据排序方法,其特征在于,所述确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,包括:
获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系。
3.如权利要求1所述的分布式数据库的数据排序方法,其特征在于,所述遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集,包括:
获取所述数据节点的节点标识,并对所述节点标识进行排序;
根据所述节点标识的排序结果生成遍历顺序,并根据所述遍历顺序获取所述数据节点中的所述排序数据集,得到所述有序数据集。
4.如权利要求1所述的分布式数据库的数据排序方法,其特征在于,所述获取所述数据集合中的最小数据和最大数据,包括:
分别获取每个所述有序结果集中的最小节点数据和最大节点数据,所述最小节点数据为对应所述有序结果集中数据最小的数据,所述最大节点数据为对应所述有序结果集中数据最大的数据;
将所述最小节点数据之间最小的数据设置为所述最小数据;
将所述最大节点数据之间最大的数据设置为所述最大数据。
5.如权利要求1所述的分布式数据库的数据排序方法,其特征在于,所述根据所述最小数据、所述最大数据和所述数据节点的节点个数计算数据区间值所采用的计算公式为:
r=(max-min)/n
其中,r为所述数据区间值,max为所述最大数据,min为所述最小数据,n为所述节点个数。
6.如权利要求5所述的分布式数据库的数据排序方法,其特征在于,所述根据所述数据区间值计算数据区间范围所采用的计算公式为:
dsx=[min+(x-1)*r,min+x*r)
dsn=[min+(n-1)*r,max]
其中,dsx为第x个所述数据区间范围,dsn为最后一个所述数据区间范围。
7.如权利要求1所述的分布式数据库的数据排序方法,其特征在于,所述根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合之后,还包括:
若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集。
8.一种分布式数据库的数据排序系统,其特征在于,包括:
数据查询指示模块,用于根据数据查询指令指示不同数据节点分别进行数据查询并排序,并指示不同所述数据节点输出对应的有序结果集,得到数据集合,所述数据集合包括不同有序结果集,一个所述数据节点进行数据查询并排序后得到一个有序结果集;
数据获取模块,用于若所述有序结果集之间的数据总量大于数据阈值,则获取所述数据集合中的最小数据和最大数据;
区间值计算模块,用于根据所述最小数据、所述最大数据和所述数据节点的个数计算数据区间值,并根据所述数据区间值计算数据区间范围;
数据分段指示模块,用于指示不同所述数据节点根据所述数据区间范围对查询到的所述有序结果集中的数据进行分段,得到区间数据集;
数据分发指示模块,用于确定不同所述数据节点中分段后的所述区间数据集与不同所述数据节点之间的分发关系,并根据所述分发关系指示不同所述数据节点分别将分段后的所述区间数据集分发至对应的所述数据节点;
数据排序指示模块,用于指示不同所述数据节点对接收到的区间数据集进行排序,得到排序数据集;
数据遍历排序模块,用于遍历读取所述数据节点中的所述排序数据集,得到针对所述数据查询指令的有序数据集。
9.如权利要求8所述的分布式数据库的数据排序系统,其特征在于,所述分布式数据库的数据排序系统还包括:
数据排序模块,用于若所述有序结果集之间的数据总量小于或等于所述数据阈值,则获取所述数据集合;
持续读取排序后所述有序结果集中的第一个数据,并在对应所述有序结果集中抽取所述第一个数据之间最小的数据添加至排序结果集中;
直至所有所述有序结果集中的数据均被抽取为空集,将当前所述排序结果集设置为针对所述数据查询指令的所述有序数据集。
10.如权利要求8所述的分布式数据库的数据排序系统,其特征在于,所述数据分发指示模块还用于:
获取不同所述数据节点中分段后的所述区间数据集的区间序号,并将所述区间序号与所述数据节点的节点标识进行比对;
若所述区间序号与所述节点标识相同,则将分段后的所述区间数据集与所述节点标识对应的所述数据节点对应进行存储,得到所述分发关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776842.1A CN113254488A (zh) | 2020-08-05 | 2020-08-05 | 分布式数据库的数据排序方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010776842.1A CN113254488A (zh) | 2020-08-05 | 2020-08-05 | 分布式数据库的数据排序方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113254488A true CN113254488A (zh) | 2021-08-13 |
Family
ID=77220111
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010776842.1A Pending CN113254488A (zh) | 2020-08-05 | 2020-08-05 | 分布式数据库的数据排序方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254488A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098390A1 (en) * | 2002-11-14 | 2004-05-20 | David Bayliss | Method for sorting and distributing data among a plurality of nodes |
US20140195558A1 (en) * | 2013-01-07 | 2014-07-10 | Raghotham Murthy | System and method for distributed database query engines |
CN105740332A (zh) * | 2016-01-22 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 数据排序方法和装置 |
CN106649385A (zh) * | 2015-11-02 | 2017-05-10 | 北京国双科技有限公司 | 基于HBase数据库的数据排序方法和装置 |
-
2020
- 2020-08-05 CN CN202010776842.1A patent/CN113254488A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098390A1 (en) * | 2002-11-14 | 2004-05-20 | David Bayliss | Method for sorting and distributing data among a plurality of nodes |
US20140195558A1 (en) * | 2013-01-07 | 2014-07-10 | Raghotham Murthy | System and method for distributed database query engines |
CN106649385A (zh) * | 2015-11-02 | 2017-05-10 | 北京国双科技有限公司 | 基于HBase数据库的数据排序方法和装置 |
CN105740332A (zh) * | 2016-01-22 | 2016-07-06 | 北京京东尚科信息技术有限公司 | 数据排序方法和装置 |
Non-Patent Citations (1)
Title |
---|
丁玉成 等: "云计算环境下排序算法的性能分析", 《重庆大学学报》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109947904B (zh) | 一种基于Spark环境的偏好空间Skyline查询处理方法 | |
US6665661B1 (en) | System and method for use in text analysis of documents and records | |
CN102156751B (zh) | 一种提取视频指纹的方法及装置 | |
CN107016018B (zh) | 数据库索引创建方法及装置 | |
US9092229B2 (en) | Software analysis system and method of use | |
CN109635084B (zh) | 一种多源数据文档实时快速去重方法及系统 | |
CN105224614A (zh) | 应用程序分类的展示方法和装置 | |
CN110828017A (zh) | 核电站的信息处理方法及核电站的信息处理系统 | |
CN112632213A (zh) | 地址信息标准化方法及装置、电子设备、存储介质 | |
CN110737689A (zh) | 数据标准符合性检测方法、装置、系统及存储介质 | |
CN112329954A (zh) | 物品召回方法、装置、终端设备及存储介质 | |
CN111597416A (zh) | 一种基于大数据处理的匹配推送系统 | |
CN111984673B (zh) | 一种电网电能量计量系统树形结构模糊检索方法和装置 | |
CN106776704A (zh) | 统计信息收集方法和装置 | |
US20100057809A1 (en) | Information storing/retrieving method and device for state transition table, and program | |
CN112182140B (zh) | 结合rpa和ai的信息录入方法、装置、计算机设备和介质 | |
US20040267772A1 (en) | Apparatus, system and method for updating a sorted list | |
CN113254488A (zh) | 分布式数据库的数据排序方法及系统 | |
CN109101630B (zh) | 一种应用程序搜索结果的生成方法、装置及设备 | |
CN115729752A (zh) | 一种寄存器检查方法及装置、存储介质 | |
CN112199117B (zh) | 一种重复代码处理方法、装置、电子设备和存储介质 | |
CN112765118B (zh) | 一种日志查询方法、装置、设备及存储介质 | |
CN114816518A (zh) | 基于simhash的源代码中开源成分筛选识别方法及系统 | |
CN109740249B (zh) | 一种mux树逻辑结构优化方法、模块及存储介质 | |
CN116263770A (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210813 |
|
RJ01 | Rejection of invention patent application after publication |