一种分布式数据库及其数据运算的管理方法与流程

文档序号:12470514阅读:312来源:国知局
一种分布式数据库及其数据运算的管理方法与流程

本发明属于分布式数据库技术领域,尤其是涉及一种分布式数据库及其数据运算的管理方法。



背景技术:

分布式数据库是指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原来集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。近年来,随着数据量的高速增长,分布式数据库技术也得到了快速的发展,传统的关系型数据库开始从集中式模型向分布式架构发展,基于关系型的分布式数据库在保留了传统数据库的数据模型和基本特征下,从集中式存储走向分布式存储,从集中式计算走向分布式计算。

在分布式数据库系统中一般都是采用多台机器存储数据,即将用户数据根据hash或者随机分布算法把数据分布到数据库的各个工作机器中,这样来减少单台数据库工作机器所存储的数据量,减少每一台机器的存储与计算压力。该分布式数据库系统首先把数据按照hash或者随机分布的方式把数据分发到集群运算节点中,当SQL中运算都涉及到hash分布列时,因为节点数据具有本地local性,因此可把SQL下发给各个运算节点,运算会在各个节点并行执行,当SQL中的运算是非hash分布列,则运算就不具有本地local性,该SQL就不可以直接在各个节点并行执行,必须在集群的所有运算节点上对数据重新进行动态重分布后分布到集群的所有运算节点上或者在集群的所有运算节点上把执行结果汇总到单个节点后,数据才具有本地local性,以上两种运算方式存在如下缺陷:方式1:在集群的所有运算节点上对数据重新进行动态重分布后分布到集群的所有运算节点上的运算对所有的节点的资源都占用,而且涉及到点到点的网状通讯,当节点数较多时(例如查过100),则每个节点都会产生大量的连接和线程进行数据的发送和接收,因此资源消耗将很大;方式2:在集群的所有运算节点上把执行结果汇总到单个节点的运算对汇总节点的资源占用将较高,但集群中的所有运算节点的硬件配置基本相同,而且运行时资源占用也基本相同,如果汇总节点相对其他运算节点有更多地资源占用,则在硬件配置基本相同的情况下,该汇总节点将成为整个集群的瓶颈节点。



技术实现要素:

本发明实施例提供了一种分布式数据库及其数据运算的管理方法,以解决分布式数据库运算节点资源消耗不均衡的技术问题。

一方面,本发明实施例提供了一种分布式数据库系统,包括:

管理集群,用于接收用户的指令,并解析优化所述指令,生成执行计划和调度;

基础运算层集群,用于接收管理集群接收执行计划,基于分布在节点上的业务表进行运算;

汇总结果运算层集群,用于接收来自基础运算层集群分发的数据进行运算。

另一方面,本发明实施例提供了一种分布式数据库的数据运算的管理方法,包括:

在所述用户的指令中包括哈希分布列时,管理集群直接将接收到的用户的指令发送至基础运算层集群,并接收基础运算层集群返回的执行结果。

进一步的,一种分布式数据库的数据运算的管理方法,包括:

在所述用户的指令中不包括哈希分布列时,管理集群将接收到的用户的指令发送至基础运算层集群,基础运算层集群完成计算后,生成中间结果数据,并将中间结果数据分发至汇总结果运算层集群,由汇总结果运算层群上传至管理集群。

进一步的,一种分布式数据库的数据运算的管理方法,包括:

在所述用户的指令中不包括哈希分布列时,需要产生中间结果,则把产生的数据分发给中间结果或汇总结果运算层集群进行后续的操作,基于以上中间表或者汇总表的后续运算将在该集群上运行,运行的结果如果需要继续和基础运算层节点集群上的表进行交互时,运行的结果将会分发到基础运算层节点集群上继续后续的操作,如果基础运算层集群上的后续操作又需要产生中间表,则把产生的数据分发给汇总结果运算层集群进行。

本发明实施例提供的分布式数据库及其数据运算的管理方法,通过增加用于接收来自基础运算层集群分发的数据进行运算的汇总结果运算层集群。在数据不具有本地性时,可以实现汇总和交互数据,减少节点之间网络资源的使用,并可使得分布式数据库运算节点资源更加均衡。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例一提供的分布式数据库的结构示意图;

图2是本发明实施例二提供的分布式数据库的数据运算的管理方法的流程示意图;

图3是本发明实施例三提供的分布式数据库的数据运算的管理方法的流程示意图;

图4是本发明实施例四提供的分布式数据库的数据运算的管理方法的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1是本发明实施例一提供的分布式数据库的结构示意图,参见图1,所述分布式数据库系统,包括:管理集群,用于接收用户的指令,并解析优化所述指令,生成执行计划和调度;基础运算层集群,用于接收管理集群接收执行计划,基于分布在节点上的业务表进行运算;汇总结果运算层集群,用于接收来自基础运算层集群分发的数据进行运算。

在Shared-nothing架构中,整个系统包括管理集群和计算集群。在本实施例中,计算集群被分为基础运算层集群和汇总结果运算层集群,可以进行不同功能的运算,以使得原来由单一节点完成的汇总等计算操作分配给多个节点组成的汇总结果运算层集群来实现,可以减少节点之间网络资源的使用,并可使得分布式数据库运算节点资源更加均衡。

实施例二

图2是本发明实施例二提供的分布式数据库的数据运算的管理方法的流程示意图,本实施例可适用于在分布式数据库系统中计算集群被分为基础运算层集群和汇总结果运算层集群时,对分布式数据库数据运算进行管理的情况,该方法可以由分分布式数据库的数据运算的管理装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统中。

参见图2,所述分布式数据库的数据运算的管理方法,包括:

S210,在所述用户的指令中包括哈希分布列时,管理集群直接将接收到的用户的指令发送至基础运算层集群。

示例性的,所述用户的指令为sql操作。通过统一的管理节点集群的任何一个节点作为入口接收用户的指令,管理节点集群负责接收用户的SQL,负责SQL解析、SQL优化、分布式执行计划生成、执行调度。集群中所有业务表按照hash分布或者随机分布的方式把数据分布到基础运算层集群的节点中,基础运算层集群的节点负责从管理集群的节点接收SQL,基于分布在节点上的业务表进行运算。

S220,接收基础运算层集群返回的执行结果。

在sql中的操作都包含hash分布列时,则数据具有本地性,从管理集群节点接收到的SQL可直接下发给基础运算层集群的节点执行,执行结果直接返回给管理集群的入口节点,然后返回用户。在该场景下汇总结果运算层集群不参与运算。

本实施例提供的分布式数据库的数据运算的管理方法,在数据具有本地性时,通过基础运算层集群可直接运算得到结果。可以减少节点之间网络资源的使用。

实施例三

图3是本发明实施例三提供的分布式数据库的数据运算的管理方法的流程示意图,本实施例可适用于在分布式数据库系统中计算集群被分为基础运算层集群和汇总结果运算层集群时,对分布式数据库数据运算进行管理的情况,该方法可以由分分布式数据库的数据运算的管理装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统中。

参见图3,所述分布式数据库的数据运算的管理方法,包括:

S310,在所述用户的指令中不包括哈希分布列时,管理集群将接收到的用户的指令发送至基础运算层集群。

示例性的,所述用户的指令为sql操作。通过统一的管理节点集群的任何一个节点作为入口接收用户的指令,管理节点集群负责接收用户的SQL,负责SQL解析、SQL优化、分布式执行计划生成、执行调度。集群中所有业务表按照hash分布或者随机分布的方式把数据分布到基础运算层集群的节点中,基础运算层集群的节点负责从管理集群的节点接收SQL,基于分布在节点上的业务表进行运算。

S320,基础运算层集群完成计算后,生成中间结果数据,并将中间结果数据分发至汇总结果运算层集群。

sql中的操作不都包含hash分布列,则数据不具有本地local性,从管理集群节点接收到的SQL下发给基础运算层集群的节点执行后,需要产生中间结果的数据,则把产生的数据分发给汇总结果运算层集群进行后续的操作。

S330,汇总结果运算集群上传至管理集群。

后续操作的结果不需要和基础运算层节点集群上的表进行交互,则把运算结果直接返回给管理集群的入口节点,管理集群入口节点再把结果返回用户。

本实施例提供的分布式数据库的数据运算的管理方法,在数据不具有本地性时,通过基础运算层集群运算,并将结果传送给汇总结果运算层集群。无需再次信息交互,可以减少节点之间网络资源的使用。

实施例四

图4是本发明实施例四提供的分布式数据库的数据运算的管理方法的流程示意图,本实施例可适用于在分布式数据库系统中计算集群被分为基础运算层集群和汇总结果运算层集群时,对分布式数据库数据运算进行管理的情况,该方法可以由分分布式数据库的数据运算的管理装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统中。

参见图4,所述分布式数据库的数据运算的管理方法,包括:

S410,在所述用户的指令中不包括哈希分布列时,管理集群将接收到的用户的指令发送至基础运算层集群。

示例性的,所述用户的指令为sql操作。通过统一的管理节点集群的任何一个节点作为入口接收用户的指令,管理节点集群负责接收用户的SQL,负责SQL解析、SQL优化、分布式执行计划生成、执行调度。集群中所有业务表按照hash分布或者随机分布的方式把数据分布到基础运算层集群的节点中,基础运算层集群的节点负责从管理集群的节点接收SQL,基于分布在节点上的业务表进行运算。

S420,把产生的数据分发给汇总结果运算层集群进行后续的操作,基于所述产生的数据后续运算在汇总结果运算层集群上运行。

从管理集群节点接收到的SQL下发给基础运算层集群的节点执行后,需要产生中间结果,例如中间表或者汇总表的数据,则把产生的数据分发给汇总结果运算层集群进行后续的操作。

S430,如果需要继续和基础运算层节点集群上的表进行交互时,运行的结果将会分发到基础运算层节点集群上继续后续的操作。

基于以上中间表或者汇总表的后续运算将在该集群上运行,运行的结果如果需要继续和基础运算层节点集群上的表进行交互时,运行的结果将会分发到基础运算层节点集群上继续后续的操作,无需管理集群向基础运算层节点集群分发任务。

S440,如果基础运算层集群上的后续操作又需要产生数据,则把产生的数据分发给汇总结果运算层集群运行。

如果基础运算层集群上的后续操作又需要产生中间表,则把产生的数据分发给中间结果或汇总结果运算层集群进行,按照以上逻辑执行完所有的后续步骤后,运算结果或者从基础运算层集群的节点返回给管理集群的入口节点,或者从中间结果或汇总结果运算层集群的节点返回给管理集群的入口节点,然后管理集群入口节点再把结果返回用户。

本实施例提供的分布式数据库的数据运算的管理方法,在数据不具有本地性时,通过基础运算层集群运算,并将结果传送给汇总结果运算层集群。在需要再次信息交互时,汇总结果运算层集群即可分发任务,可以实现复杂的逻辑任务,并可以减少节点之间网络资源的使用。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1