基于二级映射的集群动态扩展方法

文档序号:6339245阅读:320来源:国知局
专利名称:基于二级映射的集群动态扩展方法
技术领域
本发明涉及一种基于二级映射的集群动态扩展方法,属于数据库系统应用技术领 域。
背景技术
无论是网络还是数据库集群,业务量的发展都超出了过去最乐观的估计,即使按 照当时最优配置,也会很快遇到硬件的瓶颈。如何高效、快速、可靠地存储日益增长的用户 数据,就需要用到集群的扩展技术。
根据扩展过程中是否需要停止原系统,将集群的扩展性分为静态扩展和动态扩 展。静态扩展是指系统增减节点时,需要先停止当前运行的系统,然后根据节点增减的情况 进行重新配置,最后重新启动整个系统,使之得以正常工作。动态扩展则是一种在线扩展, 系统增减节点时能够自动适应这种变化,自动完成资源的迁移和重新配置,在无人干涉的 情况下进行自动管理和自我维护。
当前的多数集群系统都只实现静态扩展,只能实现数据节点的自动增加,但不能 适应节点减少的变化情况。静态扩展不需要考虑数据容错、分布式的元数据管理、资源动态 分配等问题,因而在实现上相对容易,但由此也带来一些的问题,如系统扩展过程繁琐、可 用性不高、管理和维护困难等。当节点数增加到几十或几百时,静态扩展的繁琐程度将使管 理员难以忍受,因为中间任何环节出错都将导致系统扩展失败。更为重要的是,在此期间整 个系统不能对外提供服务,这对于实时性和可用性要求高的应用业务来说是致命的。
数据库集群需要在元数据库里保存管理节点和数据节点的分布信息。这些分布信 息是集群系统里最重要的基础性信息,它维护了整个集群的部署架构,集群就是赖于这些 信息运转。一个Siare-Nothing架构的数据库集群的部署架构信息类似一个树结构,无论 采用什么存储方法,都必须在元数据库里保存整个树形结构。集群扩展的目的就是要对这 个树形结构进行更改,增加或删除树的叶子节点,基本原理如图1所示。
与集群架构相似的,分布在集群中各个节点上的数据也需要维护这样一个树形 结构来描述这些数据的分布情况。但是Siare-Nothing架构的集群为了实现数据的负 载均衡,都需要通过一定的分布方法对数据进行均勻分发,最常用的均勻分发方法就是 hash (哈希)方法。但是hash方法要求实现固定hash基数,一旦hash分发之后基数就不 能再改动,这与集群的动态扩展理念是相悖的。发明内容
为了解决上述问题,本发明提出了一种基于二级映射集群动态扩展的方法,它可 以在满足负载分布均衡的基础上,实现对数据库集群进行任意规模的扩展,而不需要停止 集群服务和应用业务。
本发明采用的技术方案如下
一种基于二级映射的集群动态扩展方法,包括以下步骤
1)在第一维对集群的数据按照hash方法进行负载的均衡分布,这是第一级映射, 在第一维的基础上采用一个M:N的映射表来进行第二级的映射;
2)通过更改第二维的映射表来动态增加新增节点,即实现集群的动态扩展。
所述步骤1)进一步分为以下步骤
1. 1)为集群创建表和11£1吐分布,该表中包括字段沉(1、811(^讨10、0(11,并将第一级 的分布信息存储在元数据库中,其中0id为对象在数据库中的唯一标识;BucketID为经过 hash分布之后的hash桶号;Ddl为创建该表的sql语句;
1. 2)建立映射表,将hash桶号对节点号的映射关系信息存入元数据库中;
1. 3)导入数据,并提供查询服务。
所述步骤2、进一步分为以下步骤
2. 1)对新节点进行表模式定义,由于新增节点要存储表数据,因此必须对新增节 点创建同其它节点一样的表模式,根据元数据库中保存的表的模式信息对新节点进行模式 定义;
2. 2)对元数据库的二级映射表通过进行增加操作,来更改桶号BucketID所对应 的数据节点号NodeID ;
2.3)新增节点之后,当需要导入数据时,为了维持负载的均衡,将该hash桶的新 增数据都导入新增节点,直到同一个hash桶对应的节点负载一致之后,新增数据将被循环 地导入该hash桶对应的各个节点;如果是查询,首先根据表名查找一级映射表获得该表对 应的所有桶号,然后根据桶号查找二级映射表获得对应所有节点位置,并对所有位置应用 该查询。
在所述步骤1. 1)中,Hash桶数的选择至少为节点数的2倍。
在所述步骤1. 中,无论导入数据,还是查询,首先都要定位目标数据的位置,如 果是导入数据,第一步先根据数据的hash键值进行hash,获得对应的桶号,第二步根据桶 号查找二级映射表获得对应的目标数据节点位置,从而将数据导入该数据节点;如果是查 询,首先根据表名查找一级映射表获得该表对应的所有桶号,然后根据桶号查找二级映射 表获得对应节点位置,并对所有位置应用该查询。
本发明具有以下优点
1.使用了二级映射方法,既保留了集群中常用的hash分发方法的数据分布负载 均衡特点,又支持了动态扩展的需要。
2.利用元数据库的事务特性保证了对二级映射表更新时的读写隔离性,保证了扩 展的动态在线。
3.和静态扩展技术动辄需要停机几分钟相比,本动态扩展技术不仅不需停止应用 业务,而且操作简单,每扩展一个节点的时间在秒级。


图1为集群扩展的基本原理图2为二级映射原理图3为动态扩展原理图。
具体实施方式
本发明方法是基用一种二级映射的方法来实现满足负载均衡的动态扩展技术。即 首先在第一维对集群的数据按照hash方法进行负载的均衡分布,这是第一级映射。在第一 维的基础上采用一个M N的映射表来进行第二级的映射,其中M代表经过hash分布之后的 hash桶数,N代表集群的数据节点数。从而在第一维实现数据的分布负载均衡,在第二维实 现集群的动态扩展。
本发明方法主要包括以下步骤
数据分布阶段
步骤一
为集群创建数据表,并对数据表进行hash分布,并将第一级的hash分布信息存储 在元数据库中。所谓进行hash分布就是对数据表中的数据根据某一个属性(这个属性被 称为分布属性)使用hash函数进行计算获得hash桶号。Hash桶数的选择至少为节点数 的2倍。例如表T的Oid(对象在数据库中的唯一标识)为33沈3,对其进行hash分布,分 布到8个桶中。存储的格式如下其中Oid为对象在数据库中的唯一标识;BucketID为经 过hash分布之后的hash桶号;DDL为创建该表的sql语句。下表就是一个一级映射表的例子。
权利要求
1.一种基于二级映射的集群动态扩展方法,其特征在于包括以下步骤1)在第一维对集群的数据按照hash方法进行负载的均衡分布,这是第一级映射,在第 一维的基础上采用一个M:N的映射表来进行第二级的映射,此处,M代表经过hash分布之 后的hash桶数,N代表集群的数据节点数;2)通过更改第二维的映射表来动态增加新增节点,即实现集群的动态扩展。
2.如权利要求1所述的基于二级映射的集群动态扩展方法,其特征在于所述步骤1)进一步分为以下步骤1.1)为集群创建表和—吐分布,该表中包括字段沉(1、811(^讨10、0(11,并将第一级的分 布信息存储在元数据库中,其中0id为对象在数据库中的唯一标识;BucketID为经过hash 分布之后的hash桶号;Ddl为创建该表的sql语句;1.2)建立映射表,将hash桶号对节点号的映射关系信息存入元数据库中;1.3)导入数据,并提供查询服务。
3.如权利要求1所述的基于二级映射的集群动态扩展方法,其特征在于所述步骤2、进一步分为以下步骤2.1)对新节点进行表模式定义,由于新增节点要存储表数据,因此必须对新增节点创 建同其它节点一样的表模式,根据元数据库中保存的表的模式信息对新节点进行模式定 义;2. 2)对元数据库的二级映射表通过进行增加操作,来更改桶号BucketID所对应的数 据节点号NodeID ;2. 3)新增节点之后,当需要导入数据时,为了维持负载的均衡,将该hash桶的新增数 据都导入新增节点,直到同一个hash桶对应的节点负载一致之后,新增数据将被循环地导 入该hash桶对应的各个节点;如果是查询,首先根据表名查找一级映射表获得该表对应的 所有桶号,然后根据桶号查找二级映射表获得对应所有节点位置,并对所有位置应用该查 询。
4.如权利要求2所述的基于二级映射的集群动态扩展方法,其特征在于在所述步骤1. 1)中,Hash桶数的选择至少为节点数的2倍。
5.如权利要求2所述的基于二级映射的集群动态扩展方法,其特征在于在所述步骤1. 中,无论导入数据,还是查询,首先都要定位目标数据的位置,如果是 导入数据,第一步先根据数据的hash键值进行hash,获得对应的桶号,第二步根据桶号查 找二级映射表获得对应的目标数据节点位置,从而将数据导入该数据节点;如果是查询,首 先根据表名查找一级映射表获得该表对应的所有桶号,然后根据桶号查找二级映射表获得 对应节点位置,并对所有位置应用该查询。
全文摘要
本发明方法是基于一种二级映射的方法来实现满足负载均衡的动态扩展技术。即首先在第一维对集群的数据按照hash方法进行负载的均衡分布,这是第一级映射。在第一维的基础上采用一个M:N的映射表来进行第二级的映射,从而在第一维实现数据的分布负载均衡,在第二维实现集群的动态扩展。本发明使用了二级映射方法,既保留了集群中常用的hash分发方法的数据分布负载均衡特点,又支持了动态扩展的需要。同时利用了元数据库的事务特性保证了对二级映射表更新时的读写隔离性,保证了扩展的动态在线。和静态扩展技术动辄需要停机几分钟相比,本发明不仅不需停止应用业务,而且操作简单,每扩展一个节点的时间在秒级。
文档编号G06F17/30GK102033938SQ201010597139
公开日2011年4月27日 申请日期2010年12月10日 优先权日2010年12月10日
发明者何清法, 冯柯, 刘荣, 徐岩, 李晓鹏, 李阳, 蒋志勇, 谢卫平, 贾宗秀, 顾云苏 申请人:天津神舟通用数据技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1