一种分布式数据库的扩容方法及装置与流程

文档序号:11134038阅读:750来源:国知局
一种分布式数据库的扩容方法及装置与制造工艺
本发明属于分布式数据库领域,尤其是涉及一种分布式数据库的扩容方法及装置。
背景技术
:分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有DBMS的一份完整拷贝副本,或者部分拷贝副本,并具有自己局部的数据库,位于不同地点的许多计算机通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。在客户的业务场景中,当前集群满足不了用户的业务需求而需要对集群进行扩容时,需要在给定的时间窗口完成集群的扩容。目前市场上主流的分布式数据库系统GBaseMPPCluster、vertica、GreepPlum一般采用一致性的hash方式来分布集群中的数据,经过hash分布的表,在扩容时,需要逐条进行hash值的计算,然后根据计算的hash值来搬移部分的数据,按行迁移数据造成迁移性能较低。GBaseMPPCluster采用的一致性hash算法是按照65536个hash桶来对应到集群的实际物理节点(简称为集群的hashmap),理论上集群支持的最大节点数为65536,带来的缺陷是hash桶数太多,导致多个hashkey对应到一个节点,数据扩展和缩容时必须读取所有的数据并且计算hash后按行来重分布数据,导致重分布存在以下问题:1.每个节点必须计算所有数据,并按照hash分布数据到所有节点上;2.扩容性能较低;3.delete行的空间不能释放。技术实现要素:本发明实施例提供了一种分布式数据库的扩容方法及装置,以解决分布式数据库扩容时数据运算量大且扩容性能低的技术问题。一方面,本发明实施例提供了一种分布式数据库的扩容方法,包括:集群安装新节点,所述新节点与原有节点为倍数关系;建立新节点与原有节点的映射关系;将原有节点的数据复制至映射关系对应的新节点;构造新的hashmap;新节点和原有节点按照所述hashmap进行数据重分布;更新集群中节点中的表。进一步的,所述新节点和原有节点按照所述hashmap进行数据重分布,包括:原有节点保留原表的一半数据;与原有节点对应的新节点插入所述原有节点的另一半数据。进一步的,所述方法还包括:刷新所有节点的元数据,以使得所有节点实现提供对外服务。更进一步的,所述数据包括:二进制文件。另一方面,本发明实施例还提供了一种分布式数据库的扩容装置,包括:安装单元,用于安装新节点,所述新节点与原有节点为倍数关系;映射关系建立单元,用于建立新节点与原有节点的映射关系;构造单元,用于将原有节点的数据复制至映射关系对应的新节点,构造新的hashmap;重分布单元,用于使新节点和原有节点按照所述hashmap进行数据重分布;更新单元,用于更新集群中节点中的表。进一步的,所述重分布单元用于:原有节点保留原表的一半数据;与原有节点对应的新节点插入所述原有节点的另一半数据。进一步的,所述装置还包括:刷新单元,刷新所有节点的元数据,以使得所有节点实现提供对外服务。更进一步的,所述数据包括:二进制文件。本发明实施例提供的分布式数据库的扩容方法及装置,在集群安装新节点与原有节点为倍数关系时,通过建立新节点与原有节点的映射关系,构造hashmap,并对数据重分布,减少了节点数据的计算量,实现了强扩容性能,并能快速释放删除行的存储空间。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例一提供的分布式数据库的扩容方法的流程示意图;图2是本发明实施例二提供的分布式数据库的扩容方法的流程示意图;图3是本发明实施例三提供的分布式数据库的扩容方法的流程示意图;图4是本发明实施例四提供的分布式数据库的扩容装置的结构示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。实施例一图1为本发明实施例一提供的分布式数据库的扩容方法的流程图,本实施例可适用于在集群安装新节点与原节点数量为倍数关系时,对分布式数据库进行扩容的情况,该方法可以由分布式数据库的扩容装置来执行,该装置可由软件/硬件方式实现,并可集成于分布式数据库系统的管理节点中。S110,集群安装新节点,所述新节点与原有节点为倍数关系。在实际的项目中,大部分分布式系统中节点按照比例关系,成倍的进行扩容和缩容,例如由n个节点扩容到2n个节点。或者由n个节点扩容到3n个节点。S120,建立新节点与原有节点的映射关系。示例性的,把原有集群的n个节点和需要扩容的新的n个节点建立一对一的映射关系。或者原有集群的n个节点和需要扩容的新的2n个节点建立一对二的映射关系。S130,将原有节点的数据复制至映射关系对应的新节点,构造新的hashmap。示例性的,按照该对应关系,把原有集群的n个节点的二进制数据文件一对一的拷贝到需要扩容的新的n个节点,并在集群中构造新的hashmap,其中hashmap是hash值和节点的对应关系,并使所述hashmap生效。例如:原来的hashmap如下:hashkeyNodeid01(Node1)11(Node1)21(Node1)31(Node1)41(Node1)51(Node1)....m1(Node1)新增加的Noden+1和Node1建立对应关系,Noden+1和Node1节点所属的hashmap如下:S140,新节点和原有节点按照所述hashmap进行数据重分布。在扩容后有2n个节点的集群中创建和原有表结构相同的新表,在扩容后有2n个节点的集群中针对每一个节点,查询原表的数据,按照新的hashmap,对查询出的数据进行hash计算,把属于该节点的数据插入到新表中。S150,更新集群中节点中的表。删除系统中各个节点的原表,把新表名更名为原表名。本实施例提供的分布式数据库的扩容方法及装置,在集群安装新节点与原有节点为倍数关系时,通过建立新节点与原有节点的映射关系,构造hashmap,并对数据重分布,减少了节点数据的计算量,实现了强扩容性能,并能快速释放删除行的存储空间。在本实施例的一个优选方式中,所述数据为二进制数据,通常可以为二进制数据文件,使用二进制将数据储存到文件更快捷、省时且不会造成有效位的丢失。实施例二图2是本发明实施例二提供的分布式数据库的扩容方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,将所述新节点和原有节点按照所述hashmap进行数据重分布,具体优化为:原有节点保留原表的一半数据;与原有节点对应的新节点插入所述原有节点的另一半数据。参见图2,所述分布式数据库的扩容方法,包括:S210,集群安装新节点,所述新节点与原有节点为倍数关系。S220,建立新节点与原有节点的映射关系;S230,将原有节点的数据复制至映射关系对应的新节点,构造新的hashmap。S240,原有节点保留原表的一半数据,与原有节点对应的新节点插入所述原有节点的另一半数据。在扩容后有2n个节点的集群中,原有节点保留原表的一半数据,而将,与原有节点对应的新节点插入所述原有节点的另一半数据。从而将数据重新分布到对应的新增节点上。S250,更新集群中节点中的表。本实施例通过将所述新节点和原有节点按照所述hashmap进行数据重分布,具体优化为:原有节点保留原表的一半数据;与原有节点对应的新节点插入所述原有节点的另一半数据。在新增节点数量与原有节点数量一致时,通过将原有节点的一半数据分布在对应新增节点上。降低数据分布时的运算量,减少了数据分布的时间。实施例三图3是本发明实施例三提供的分布式数据库的扩容方法的流程示意图,本发明实施例以上述实施例为基础,进一步的,所述方法还包括:刷新所有节点的元数据,以使得所有节点实现提供对外服务。参见图3,所述分布式数据库的扩容方法,包括:S310,集群安装新节点,所述新节点与原有节点为倍数关系。S320,建立新节点与原有节点的映射关系;S330,将原有节点的数据复制至映射关系对应的新节点,构造新的hashmap。S340,新节点和原有节点按照所述hashmap进行数据重分布;S350,更新集群中节点中的表。S360,刷新所有节点的元数据,以使得所有节点实现提供对外服务。元数据为描述数据的数据,主要是描述数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。根据元数据,可以查找对应的数据。在元数据更新完成后,可以使得所有节点实现提供对外服务。实施例四图4是本发明实施例四提供的分布式数据库的扩容装置的结构示意图,如图4所示,所述装置包括:安装单元410,用于安装新节点,所述新节点与原有节点为倍数关系;映射关系建立单元420,用于建立新节点与原有节点的映射关系;构造单元430,用于将原有节点的数据复制至映射关系对应的新节点,构造新的hashmap;重分布单元440,用于使新节点和原有节点按照所述hasmap进行数据重分布;更新单元450,用于更新集群中节点中的表。本实施例提供的分布式数据库扩容装置,本发明实施例提供的分布式数据库的扩容方法及装置,在集群安装新节点与原有节点为倍数关系时,通过建立新节点与原有节点的映射关系,构造hashmap,并对数据重分布,减少了节点数据的计算量,实现了强扩容性能,并能快速释放删除行的存储空间。进一步的,所述重分布单元用于:原有节点保留原表的一半数据;与原有节点对应的新节点插入所述原有节点的另一半数据。进一步的,所述装置还包括:刷新单元,刷新所有节点的元数据,以使得所有节点实现提供对外服务。更进一步的,所述数据包括:二进制文件。本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1