CN115718773A - 一种分布式数据库查询切分方法及装置 - Google Patents
一种分布式数据库查询切分方法及装置 Download PDFInfo
- Publication number
- CN115718773A CN115718773A CN202211453989.2A CN202211453989A CN115718773A CN 115718773 A CN115718773 A CN 115718773A CN 202211453989 A CN202211453989 A CN 202211453989A CN 115718773 A CN115718773 A CN 115718773A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- query
- distributed database
- nodes
- 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 44
- 230000011218 segmentation Effects 0.000 title claims abstract description 25
- 239000012634 fragment Substances 0.000 claims abstract description 19
- 230000005540 biological transmission Effects 0.000 claims abstract description 7
- 238000013467 fragmentation Methods 0.000 claims abstract description 3
- 238000006062 fragmentation reaction Methods 0.000 claims abstract description 3
- 238000004364 calculation method Methods 0.000 claims description 12
- 230000009471 action Effects 0.000 claims description 10
- 238000000819 phase cycle Methods 0.000 claims description 3
- 238000012163 sequencing technique Methods 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 22
- 238000010586 diagram Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- XILIYVSXLSWUAI-UHFFFAOYSA-N 2-(diethylamino)ethyl n'-phenylcarbamimidothioate;dihydrobromide Chemical compound Br.Br.CCN(CC)CCSC(N)=NC1=CC=CC=C1 XILIYVSXLSWUAI-UHFFFAOYSA-N 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 238000012545 processing Methods 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
- 238000013500 data storage Methods 0.000 description 3
- 230000005012 migration Effects 0.000 description 3
- 238000013508 migration Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000005315 distribution function Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008602 contraction Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012876 topography Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库查询切分方法及装置,涉及分布式数据库技术领域,应用有分布式数据,包括如下步骤:S1、数据分片存储:将表数据分片存储:分别存在多个节点上,选择hash分布或者随机分布;S2、查询切分步骤;包括:S2.1、生成查询执行计划;S2.2、将数据切分到数据槽,当客户端连接到指定编号的数据槽服务时,读取到数据传输渠道;S2.3.将数据槽分组:查询计划中的coordinator操作,从指定数据槽中获取数据;S3、集群扩容:在给分布式数据库集群扩容。采用数据槽的机制,将重分布数据与节点解绑,仅与数据槽关联。因为数据槽可以关联到集群中任何节点,所以可以根据机器负载选择最优节点执行任务。
Description
技术领域
本发明涉及分布式数据库技术领域,具体为一种分布式数据库查询切分方法及装置。
背景技术
分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
1.不合理的资源使用:根据分布式数据库集群分布策略函数,在做数据重分布时,特定数据值只能传输到固定节点上。而查询任务需要在数据传输目的节点上执行,当重分布数据值不均匀时,会导致不同节点的闲忙程度差异,资源使用不合理。
2.数据切分数量固定,执行并行度受限:在做数据重分布时,数据切分数量需与分布式数据库集群中的节点数量一致,不能根据数据实际情况调整切分粒度,导致并行度受到限制,影响执行效率。
3.灵活性不足:在做分布式数据系统扩缩容时,需要在节点之间移动数据,在数据重分布完成后数据库才能继续使用,灵活性不够。
发明内容
(一)解决的技术问题
针对现有技术的不足,本发明提供了一种分布式数据库查询切分方法及装置,解决了背景技术提出的技术问题。
(二)技术方案
为实现以上目的,本发明通过以下技术方案予以实现:一种分布式数据库查询切分方法,应用有分布式数据,所述分布式数据库由管理节点,计算节点,数据节点组成,并通过万兆以太网连接;一台服务器包含一个计算节点和一个数据节点,管理节点单独装在另一台服务器上,包括如下步骤:
S1、数据分片存储:将表数据分片存储:分别存在多个节点上,选择hash分布或者随机分布;
S2、查询切分步骤;包括:S2.1、生成查询执行计划;S2.2、将数据切分到数据槽,当客户端连接到指定编号的数据槽服务时,读取到数据传输渠道;S2.3.将数据槽分组:查询计划中的coordinator操作,从指定数据槽中获取数据,连接条件join key列相同的数据,划分到相同的数据片段中;S2.4选择计算节点,建立数据槽对应关系,参考每个节点的综合负载压力,选择压力小的节点执行任务;S2.5并行执行查询任务,将结果返回给客户端;在集群中所有节点上,执行所分配任务。打开数据连接,从对应的数据槽组中读取数据,完成查询任务;
S3、集群扩容:在给分布式数据库集群扩容,在不对原数据做重分布操作的情况下,新增节点可参与计算。
进一步的,所述分布式数据库系统由一个装有管理节点服务器,多个装有计算节点、存储节点服务器组成,服务器之间通过万兆以太网可以互相访问;客户端通过局域网连接到管理节点上,向管理节点发送查询请求;管理节点接收到查询请求后,生成查询计划,并将执行计划发送到所有计算节点上;计算节点根据接收到的执行计划,从数据节点读取数据并执行操作;管理节点收到各个计算节点返回结果后,将结果汇总返回给客户端。
进一步的,所述S2.1、包括:对于一个查询请求,先生成执行计划;执行计划为:做完数据读取操作TableScan,将具有相同DEPTNO值的数据汇总到相同的节点上,增加SplitMotion操作。
进一步的,在步骤S2.1中还包括:Coordinator操作负责读取Split Motion操作产生的数据;对于没有依赖关系的stage,同时执行;执行计划会发送到所有节点上,并行执行。
进一步的,在步骤S2.2中,数据槽编号命名规则为:查询序号_阶段序号_分布序号_切分序号;各个序号含义为:查询序号:对于每个查询请求,在数据库系统中有唯一的序号,从1开始递增;阶段序号:对于一个查询请求,根据分布动作,将查询分成多个阶段(Stage),每个阶段对应一个阶段序号,从0开始递增;
分布序号:每个分布动作,对应一个分布序号,从1开始递增;片段序号:对于一个分布动作,会将数据按一定分布规则切分成不同的片段,片段序号从0开始递增。
进一步的,在步骤S2.2中,将上述序号通过下划线连接,则给每个数据片段生成了唯一的数据槽标号;在需要获取相应数据片段时,通过连接相应编号的数据槽,读取到该片段数据。
进一步的,在步骤S2.4中,分别计算每个计算节点的综合负载压力:
Pressure=CPUuse*CPUweight+MEMuse*MEMweight+IO*IOweight+NETWORK*NETWORKweight
计算节点综合负载从低到高排序,选取综合负载最低的节点,在该节点执行此数据槽组的查询任务;重新计算每个节点的综合负载压力,选出综合负载最低的节点,执行下一数据槽组的查询任务;以此类推,将每个通过coordinator读取数据的任务都分配到某个计算节点。
进一步的,在步骤S2.5之后还包括:S2.6查询切分执行流程具体包括如下步骤:1.1、接收查询请求;1.2、生成查询计划;1.3、将需要重分布的数据,划分到数据槽中;1.4、选取相应的数据槽作为重分布数据源;1.5、选择综合负载小的节点,在该节点上执行任务;1.6、返回结果。
一种分布式数据库查询切分方法及装置,应用有分布式数据,所述分布式数据库由管理节点,计算节点,数据节点组成,并通过万兆以太网连接;一台服务器包含一个计算节点和一个数据节点,管理节点单独装在另一台服务器上,其特征在于,应用分布式数据库查询切分方法。
(三)有益效果
本发明提供了一种分布式数据库查询切分方法及装置。具备以下有益效果:
对于需要做数据重分布的查询任务,使用现有方法,特定数据值只能发送到固定对应的节点上。本方法采用数据槽的机制,将重分布数据与节点解绑,仅与数据槽关联。因为数据槽可以关联到集群中任何节点,所以可以根据机器负载选择最优节点执行任务,集群资源得到充分利用。
本方法可以人工设置数据切分数量,调整任务并行粒度,使任务充分并行化,提高执行效率;在做分布式数据库扩容时,不需要等待数据重分布完成,即可让新增节点参与计算,使用灵活。
附图说明
图1为本发明典型分布式数据库系统架构示意图;
图2为本发明分布式数据集群节点结构示意图;
图3为本发明分布式数据库查询执行计划流程结构示意图;
图4为本发明执行查询计划后的节点数据结构示意图;
图5为本发明分布式数据库系统架构示意图;
图6为本发明数据在各个节点上的存储结构示意图;
图7为本发明查询执行计划执行流程示意图;
图8为本发明查询切分执行流程图示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参照图1至图4所示,分布式数据库是一种有着多个节点的数据库系统。这些节点之间是各自独立的,相互之间由网络连接,多个处理节点可以合作来完成大规模的计算工作。建立多节点分布式数据库系统的目的是以较小的代价来获得更强的计算能力。在一个分布式数据库中,用户的查询请求往往被分割成多个任务,这些任务可以被分发到系统的多个节点上来并行运行,从而最大限度使用各个处理节点的计算资源。通过这种并行运行的方式,可以大大缩短整个应用程序完成的时间。
现有的典型的分布式数据库系统架构如图1所示:分布式数据库并行查询技术主要是为了提升多节点并行查询时的查询性能而设计的。
其过程如下:
步骤101、数据较均匀地分开存放在集群各节点上(采用哈希分布或随机分布等);步骤102、管理节点接受客户端查询请求;步骤103、分析请求并生成查询计划;步骤104、分发执行计划给计算节点并发查询步骤;105、每个计算节点得到计算结果,返回给管理节点;步骤106、管理节点汇总计算结果返回给客户端。
以数据库中最常见的连接操作为例,假如两张表的分片字段上是等值连接,则各计算节点可根据自己负责的分片数据得出查询结果(管理节点会将查询直接发给各相关计算节点执行);否则,各计算节点必须依赖于其他计算节点的数据才能完成查询。此时,就需系统在执行计划树中插入一个数据传输算子(motion)负责在不同计算实例之间传输数据。
若关联数据在不同节点上,是无法进行连接的。关联的数据需要通过网络传入到一个节点中进行计算,这样就需要发生数据迁移。数据迁移通常采用重分布方法。
如下,举例说明,创建两个数据表EMP,DEPT。数据采用随机分布存储,即表数据随机均匀存储在每个节点上。
CREATE TABLE EMP(EMPNO INTEGER NOT NULL,ENAME VARCHAR(20)NOT NULL,DEPTNO INTEGER NOT NULL);
CREATE TABLE DEPT(DEPTNO INTEGER NOT NULL,DNAME VARCHAR(20)NOT NULL);
向两个数据表插入数据。
INSERT INTO EMP VALUES();
INSERT INTO DEPT VALUES();
数据表EMP数据
数据表DEPT数据
DEPTNO | DNAME |
1 | 市场部 |
2 | 销售部 |
3 | 研发部 |
4 | 行政部 |
假定该分布式数据集群有四个节点,每个节点所存数据处理参照图2中所示。
执行查询语句
SELECT*FROM emp JOIN dept ON emp.DEPTNO=dept.DEPTNO;
参见图3,该查询执行计划为:
当表emp、dept的连接条件(join key)都不是分布键(emp.DEPTNO、dept.DEPTNO不是分布键)做连接(join)时,表emp的列emp.DEPTNO数据是随机分布的,表dept的列dept.DEPTNO也是随机分布的,即DEPTNO列上具有相同值的数据行,可能分别存在多个节点上,无法直接进行连接操作。可将表emp、dept分别按列emp.DEPTNO、dept.DEPTNO进行hash,在查询表emp表dept执行计划中分别加入数据传输操作,对数据进行重新分发(重分布Redistribute。每个产生一个重分布,则切分出一个新的stage)这样,每个计算节点的数据都是hash后重分布的数据,即DEPTNO列值相同数据行都会,发送到相同的数据节点上。
为了简化说明,假设hash函数为f(x)=x,node_index=f(x)%node_count。基于join key重分布后,每个节点数据参见图4。
经过重分布后,具有相同join key的数据都传输到了相同节点,则可以进行节点本地join。将最终结果返回给管理服务节点,管理服务节点统一收集结果,返回给客户端。另外,针对扩容情况,在分布式数据库集群扩容后,必须对原有数据做重分布,才可以利用新增的节点资源。
原因是,如果扩容后不做数据重分布,数据的仍然按照扩容前的分布计算方式存在旧节点上。扩容后,节点数量变化,分布函数会按照新节点数量计算数据所在的分布节点,这会导致原有数据的所在节点与新计算结果不一致。所以,在扩容后,必须对原有数据按扩容后的分布函数计算结果做重新分布。
请参阅图5-8所示,本发明提供一种分布式数据库查询切分方法,在对现有技术完成介绍的基础上,对本技术方案做详细地介绍。
参照图5所示,分布式数据库由管理节点,计算节点,数据节点组成,并通过万兆以太网连接。_x0010__x0010_一台服务器包含一个计算节点和一个数据节点,管理节点单独装在一台服务器上。一个分布式数据库系统由一个装有管理节点服务器,多个装有计算,存储节点服务器组成,服务器之间通过万兆以太网可以互相访问。
客户端通过局域网连接到管理节点上,向管理节点发送查询请求。管理节点接收到查询请求后,生成查询计划,并将执行计划发送到所有计算节点上。计算节点根据接收到的执行计划,从数据节点读取数据并执行操作,如投影,排序,聚合,连接等。管理节点收到各个计算节点返回结果后,将结果汇总返回给客户端。
S1、数据分片存储
参照图6所示,为了能够让数据可以在多个节点上并行处理,本方案采用与传统分布式数据库的存储方法,将表数据分片存储。一个数据表的数据,分别存在多个节点上,可以选择hash分布或者随机分布。“技术背景”章节中有表emp,表dept各行数据在各个节点上的存储状况。
S2、查询切分步骤
S2.1、生成查询执行计划
参考图7图示,对于一个查询请求,首先要生成执行计划。仍然以“技术背景”章节中查询SQL作为示例:
SELECT*FROM emp JOIN dept ON emp.DEPTNO=dept.DEPTNO;
它的执行计划为:因为表emp和表dept均采用随机分布存储,具有相同连接键joinkey的数据存储在不同的节点上,所以在做完数据读取操作TableScan后,需要将具有相同DEPTNO值的数据汇总到相同的节点上,所以增加了Split Motion操作。Coordinator操作负责读取Split Motion操作产生的数据。由于Motion操作涉及数据迁移,执行计划被拆成了多个阶段(Stage),每个阶段包含整个执行计划的一部分。对于没有依赖关系的stage,如Stage1和Stage2,可以同时执行。执行计划会发送到所有节点上,并行执行。
S2.2、将数据切分到数据槽:此步骤为本方案的关键步骤。
数据槽,即为网络数据传输渠道,对外提供数据读取服务。当客户端连接到指定编号的数据槽服务时,可以读取到数据传输渠道(数据槽)中的数据。
数据槽编号命名规则:查询序号_阶段序号_分布序号_切分序号:
各个序号含义为:
查询序号:对于每个查询请求,在数据库系统中有唯一的序号,从1开始递增
阶段序号:对于一个查询请求,根据分布动作,将查询分成多个阶段(Stage),每个阶段对应一个阶段序号,从0开始递增
分布序号:每个分布动作,对应一个分布序号,从1开始递增
片段序号:对于一个分布动作,会将数据按一定分布规则(如hash函数)切分成不同的片段(partition),片段序号从0开始递增。不同的分布动作,片段序号均从1开始。可以人工设置数据切分的片段数,该数值可以与计算节点的数量相同或不同,通常设置为计算节点数量的整数倍。
根据命名规则,将上述序号通过下划线连接,则给每个数据片段生成了唯一的数据槽标号。在需要获取相应数据片段时,通过连接相应编号的数据槽,即可读取到该片段数据。
查询计划中的Split Motion操作,就是把数据片段划分到相应的数据槽中。以“技术背景”章节中的数据存储为例,设置数据切分片段数为4,每个节点划分的数据槽,以及每行数据所属数据槽,如下所示。(因为示例中每个节点的数据量少,所以有些数据槽没有数据,并不影响实际功能)
节点1
节点2
节点3
节点4
S2.3.将数据槽分组:此步骤为本方案的关键步骤。
查询计划中的coordinator操作,即从指定数据槽中获取数据。根据数据分布规则,连接条件join key列相同的数据,会划分到相同的数据片段中。数据槽编号里片段序号相同的数据槽,具有分布列值相等的数据。在查询计划片段Stage3中,左coordinator和右coordinator操作连接的数据槽如下表所示。
任务1
任务2
任务3
任务4
S2.4选择计算节点,建立数据槽对应关系
因为coordinator是通过网络从数据槽中读取数据,所以还有数据槽中读取数据的执行任务,可以在集群中任何节点上执行,不像重分布方式那样限制住,必须在某个节点上执行。所以在选择执行任务的节点时,可以参考每个节点的综合负载压力,选择压力小的节点执行任务。
根据公式,分别计算每个计算节点的综合负载压力
Pressure=CPUuse*CPUweight+MEMuse*MEMweight+IO*IOweight+NETWORK*NETWORKweight
计算节点综合负载从低到高排序,选取综合负载最低的节点,在该节点执行此数据槽组的查询任务。
重新计算每个节点的综合负载压力,选出综合负载最低的节点,执行下一数据槽组的查询任务。
以此类推,将每个通过coordinator读取数据的任务都分配到某个计算节点。
S2.5并行执行查询任务,将结果返回给客户端
在集群中所有节点上,执行所分配任务。打开数据连接,从对应的数据槽组中读取数据,完成查询任务。
S2.6查询切分执行流程如图8所示,具体包括如下步骤:
1.2、接收查询请求
1.3、生成查询计划
1.4、将需要重分布的数据,划分到数据槽中
1.5、选取相应的数据槽作为重分布数据源
1.1、选择综合负载小的节点,在该节点上执行任务
1.1、返回结果
S3、集群扩容
在给分布式数据库集群扩容,即增加节点时,在不对原数据做重分布操作的情况下,新增节点即可参与计算。
这是因为,在需要对数据做重分布时,根据数据槽划分规则,只需要将数据源对应到有相同片段序号的数据槽组上,即可保证相同数据划分到一起。通过数据槽,查询任务可以从网络获取非本地数据,所以查询任务不要求一定在有数据存储的节点上。当查询任务分配到新增节点上,由于数据通过连接数据槽获取,所以不需要对原有数据做重分布,新增节点也可以执行查询任务。
请参阅图1-6,本发明提供一种分布式数据库查询切分装置,应用有实施例1中的方法。
结合以上内容,本技术方案至少存在如下效果:
1.对于需要做数据重分布的查询任务,使用现有方法,特定数据值只能发送到固定对应的节点上。本方法采用数据槽的机制,将重分布数据与节点解绑,仅与数据槽关联。因为数据槽可以关联到集群中任何节点,所以可以根据机器负载选择最优节点执行任务,集群资源得到充分利用。
2.本方法可以人工设置数据切分数量,调整任务并行粒度,使任务充分并行化,提高执行效率。
3.在做分布式数据库扩容时,不需要等待数据重分布完成,即可让新增节点参与计算,使用灵活。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令或计算机程序。在计算机上加载或执行所述计算机指令或计算机程序时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质。半导体介质可以是固态硬盘。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种分布式数据库查询切分方法及装置航道水下地形变化分析系统及方法逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(randomaccessmemory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
最后:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所作的任何修改等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种分布式数据库查询切分方法,应用有分布式数据,所述分布式数据库由管理节点,计算节点,数据节点组成,并通过万兆以太网连接;一台服务器包含一个计算节点和一个数据节点,管理节点单独装在另一台服务器上,其特征在于:包括如下步骤:
S1、数据分片存储:将表数据分片存储:分别存在多个节点上,选择hash分布或者随机分布;
S2、查询切分步骤;包括:S2.1、生成查询执行计划;S2.2、将数据切分到数据槽,当客户端连接到指定编号的数据槽服务时,读取到数据传输渠道;S2.3.将数据槽分组:查询计划中的coordinator操作,从指定数据槽中获取数据,连接条件join key列相同的数据,划分到相同的数据片段中;
S2.4选择计算节点,建立数据槽对应关系,参考每个节点的综合负载压力,选择压力小的节点执行任务;S2.5并行执行查询任务,将结果返回给客户端;在集群中所有节点上,执行所分配任务。打开数据连接,从对应的数据槽组中读取数据,完成查询任务;
S3、集群扩容:在给分布式数据库集群扩容,在不对原数据做重分布操作的情况下,新增节点可参与计算。
2.根据权利要求1所述的一种分布式数据库查询切分方法,其特征在于:所述分布式数据库系统由一个装有管理节点服务器,多个装有计算节点、存储节点服务器组成,服务器之间通过万兆以太网可以互相访问;
客户端通过局域网连接到管理节点上,向管理节点发送查询请求;
管理节点接收到查询请求后,生成查询计划,并将执行计划发送到所有计算节点上;
计算节点根据接收到的执行计划,从数据节点读取数据并执行操作;
管理节点收到各个计算节点返回结果后,将结果汇总返回给客户端。
3.根据权利要求1所述的一种分布式数据库查询切分方法,其特征在于:所述S2.1、包括:对于一个查询请求,先生成执行计划;执行计划为:做完数据读取操作TableScan,将具有相同DEPTNO值的数据汇总到相同的节点上,增加Split Motion操作。
4.根据权利要求3所述的一种分布式数据库查询切分方法,其特征在于:在步骤S2.1中还包括:Coordinator操作负责读取Split Motion操作产生的数据;对于没有依赖关系的stage,同时执行;执行计划会发送到所有节点上,并行执行。
5.根据权利要求1所述的一种分布式数据库查询切分方法,其特征在于:在步骤S2.2中,数据槽编号命名规则为:查询序号_阶段序号_分布序号_切分序号;各个序号含义为:
查询序号:对于每个查询请求,在数据库系统中有唯一的序号,从1开始递增;
阶段序号:对于一个查询请求,根据分布动作,将查询分成多个阶段(Stage),每个阶段对应一个阶段序号,从0开始递增;
分布序号:每个分布动作,对应一个分布序号,从1开始递增;
片段序号:对于一个分布动作,会将数据按一定分布规则切分成不同的片段,片段序号从0开始递增。
6.根据权利要求5所述的一种分布式数据库查询切分方法,其特征在于:在步骤S2.2中,将上述序号通过下划线连接,则给每个数据片段生成了唯一的数据槽标号;在需要获取相应数据片段时,通过连接相应编号的数据槽,读取到该片段数据。
7.根据权利要求1所述的一种分布式数据库查询切分方法,其特征在于:在步骤S2.4中,分别计算每个计算节点的综合负载压力:
Pressure=CPUuse*CPUweight+MEMuse*MEMweight+IO*IOweight+NETWORK*NETWORKweight
计算节点综合负载从低到高排序,选取综合负载最低的节点,在该节点执行此数据槽组的查询任务;重新计算每个节点的综合负载压力,选出综合负载最低的节点,执行下一数据槽组的查询任务;以此类推,将每个通过coordinator读取数据的任务都分配到某个计算节点。
8.根据权利要求1所述的一种分布式数据库查询切分方法,其特征在于:在步骤S2.5之后还包括:S2.6查询切分执行流程具体包括如下步骤:1.1、接收查询请求;1.2、生成查询计划;1.3、将需要重分布的数据,划分到数据槽中;1.4、选取相应的数据槽作为重分布数据源;1.5、选择综合负载小的节点,在该节点上执行任务;1.6、返回结果。
9.一种分布式数据库查询切分方法及装置,其特征在于:应用有分布式数据,所述分布式数据库由管理节点,计算节点,数据节点组成,并通过万兆以太网连接;一台服务器包含一个计算节点和一个数据节点,管理节点单独装在另一台服务器上,其特征在于,应用有权1-8中的任一分布式数据库查询切分方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211453989.2A CN115718773A (zh) | 2022-11-19 | 2022-11-19 | 一种分布式数据库查询切分方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211453989.2A CN115718773A (zh) | 2022-11-19 | 2022-11-19 | 一种分布式数据库查询切分方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115718773A true CN115718773A (zh) | 2023-02-28 |
Family
ID=85255934
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211453989.2A Pending CN115718773A (zh) | 2022-11-19 | 2022-11-19 | 一种分布式数据库查询切分方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115718773A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024192872A1 (zh) * | 2023-03-23 | 2024-09-26 | 天津南大通用数据技术股份有限公司 | 一种集群数据库负载均衡方法及装置 |
-
2022
- 2022-11-19 CN CN202211453989.2A patent/CN115718773A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024192872A1 (zh) * | 2023-03-23 | 2024-09-26 | 天津南大通用数据技术股份有限公司 | 一种集群数据库负载均衡方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Abdelaziz et al. | A survey and experimental comparison of distributed SPARQL engines for very large RDF data | |
US12032576B2 (en) | Joining large database tables | |
US8214356B1 (en) | Apparatus for elastic database processing with heterogeneous data | |
US7562090B2 (en) | System and method for automating data partitioning in a parallel database | |
US9576026B2 (en) | System and method for distributed SQL join processing in shared-nothing relational database clusters using self directed data streams | |
US8150836B2 (en) | System, method, and computer-readable medium for reducing row redistribution costs for parallel join operations | |
CN104871153B (zh) | 用于分布式大规模并行处理数据库的方法和系统 | |
CN105517644B (zh) | 一种数据分区方法和设备 | |
US20080109813A1 (en) | Resource assignment method, resource assignment program and management computer | |
CN101916280A (zh) | 并行计算系统及按查询内容进行负载均衡的方法 | |
EP3373158B1 (en) | Data storage method and coordinator node | |
CN108536808A (zh) | 一种基于Spark计算框架的数据获取方法和装置 | |
CN115718773A (zh) | 一种分布式数据库查询切分方法及装置 | |
Frieder | Multiprocessor algorithms for relational-database operators on hypercube systems | |
US7617189B2 (en) | Parallel query processing techniques for minus and intersect operators | |
US7774311B2 (en) | Method and apparatus of distributing data in partioned databases operating on a shared-nothing architecture | |
Zilio et al. | Partitioning key selection for a shared-nothing parallel database system | |
CN117633303A (zh) | 一种分布式原生图数据库唯一索引的存储方法和装置 | |
Liroz-Gistau et al. | Dynamic workload-based partitioning algorithms for continuously growing databases | |
CN107203550B (zh) | 一种数据处理方法和数据库服务器 | |
Khalil et al. | Availability and reliability issues in distributed databases using optimal horizontal fragmentation | |
CN109388638B (zh) | 用于分布式大规模并行处理数据库的方法及系统 | |
US20240004882A1 (en) | Handling null values in processing join operations during query execution | |
JP5500552B2 (ja) | 表データのデータ処理方法、データ処理システムおよびそのコンピュータプログラム | |
CN110457347B (zh) | Mpp环境下数据库查询方法、装置、服务器及存储介质 |
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 |