内存集群的存储均衡方法及装置制造方法及图纸

技术编号:15746635 阅读:58 留言:0更新日期:2017-07-03 02:22
本发明专利技术公开了一种内存集群的存储均衡方法和装置,涉及数据库领域。其中的方法包括:对原始一级键K1的表分区段进行切分得到分片号;根据原始一级键K1、分片号生成均衡一级键K1’;采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。从而实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。

Memory balancing method and device for memory cluster

The invention discloses a storage balance method and device for a memory cluster, relating to the database field. The method includes: table section on the original primary key K1 segmentation are divided according to the original number; a key K1, patch number to generate a balanced level key; using K1 '(K1', DO) data storage form key data; the original primary key K1 for custom as of DO's original logical key, the original primary key K1 database by segment, data table, table section section, a balanced level key K1 'for the balance of the logical key custom object DO. Thus, the data can be evenly distributed on the memory cluster data nodes, and then the storage capacity of the memory cluster can be fully utilized.

【技术实现步骤摘要】
内存集群的存储均衡方法及装置
本专利技术涉及数据库领域,特别涉及一种内存集群的存储均衡方法及装置。
技术介绍
由代理服务器对集群中的键(key)做一致性哈希,理想情况下能保证键在集群节点上的均匀分布。由于分区的数据量通常不一样,分区数据量的不同会导致集群节点的存储资源占用不均衡。如图1所示,假设集群有4个节点,每个节点的存储是10。分两次存储8个分区数据,第一次存储4个分区(4个键),数据量分别是1、2、4、8;第二次再存储4个分区(4个键),数据量都是2。如果两次的存储的分区数据都被均匀保存在4个节点上,那么4个节点的数据量分别是3、4、6、10。如果再向集群节点插入数据,很可能数据被一致性哈希到存储为10的节点上,则存储失败。此时,其它3个节点都有不同程度的闲置资源但却不可用。可见,传统的一致性哈希算法未考虑分区影响,直接对数据成员对等处理,同时近年来加入虚拟节点的方式加剧了分区分布不均的情况,因此有必要解决分区数据过度集中于若干服务节点造成整体性能瓶颈问题。
技术实现思路
本专利技术所要解决的技术问题是:如何实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。根据本专利技术实施例的一个方面,提供了一种内存集群的存储均衡方法,包括:对原始一级键K1的表分区段进行切分得到分片号;根据原始一级键K1、分片号生成均衡一级键K1’;采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。根据本专利技术实施例的另一个方面,提供了一种内存集群的存储均衡装置,包括:切分模块,用于对原始一级键K1的表分区段进行切分得到分片号;均衡一级键生成模块,用于根据原始一级键K1、分片号生成均衡一级键K1’;键值数据存储模块,用于采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。本专利技术至少具有以下优点:通过对原始键的表分区段进一步切分得到分片号,然后根据原始键和分片号重新构建均衡键,并基于均衡键进行数据的存储,实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。通过以下参照附图对本专利技术的示例性实施例的详细描述,本专利技术的其它特征及其优点将会变得清楚。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1示出传统哈希算法导致集群节点的存储资源占用不均衡的示意图。图2示出本专利技术内存集群的存储均衡方法的一个实施例的流程示意图。图3示出本专利技术对原始一级键K1的表分区段进行切分得到分片号的示意图。图4示出本专利技术对原始一级键K1的表分区段进行切分得到分片号的一个实施例的示意图。图5示出本专利技术对原始一级键K1的表分区段进行切分得到分片号的一个实施例的示意图。图6示出本专利技术内存集群的存储均衡装置的一个实施例的示意图。图7示出本专利技术键值数据存储模块的一个实施例的示意图。具体实施方式下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本专利技术及其应用或使用的任何限制。基于本专利技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。下面结合图2描述本专利技术一个实施例的内存集群的存储均衡方法。图2示出本专利技术内存集群的存储均衡方法的一个实施例的流程示意图。如图2所示,该实施例的方法包括:步骤S202,对原始一级键K1的表分区段进行切分得到分片号。原始一级键K1为定制对象DO的原始逻辑键,原始一级键K1由数据库段、数据表段、表分区段组成,从而在Redis集群上提供数据库、数据表、分区的数据组织方式。其中,数据库db是最大的数据隔离单位,是一个逻辑概念。用户可以创建多个数据库。一般来说,一类的数据应放在一个内存数据库中。数据表table是一类主题、业务、概念相同数据的集合,如用户表、明细表等,是一个逻辑概念。表分区partition是基于Redis集群特性,将大数据表进一步逻辑拆分的单位。不同分区中的数据是分开存储,使数据的分布更加均匀。此外,数据库、数据表、分区这些逻辑概念可以用元数据来描述。用于存储元数据的键名为STORE,值类型为Hash(哈希表)。所有元数据信息,都存放在以STORE为键的哈希表下。所有数据库的元数据描述信息都以Key-Value的形式保存在元数据库中(哈希表),数据库的键名可以为DB_[数据库名]。所有数据表的元数据描述信息都以Key-Value的形式保存在元数据库中(哈希表)。数据表的键名可以为TB_[数据库名]_[数据表名],从而在键名上体现数据表与数据库的关系。数据分区是数据表的进一步逻辑划分,数据分区以元数据的方式保存的数据表的元数据中。数据分区的键名可以为[数据库名]_[数据表名]_[分区名]。其中,定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值。步骤S204,根据原始一级键K1、分片号生成均衡一级键K1’。其中,均衡一级键K1’为定制对象DO的均衡逻辑键。步骤S206,采用(K1’,DO)的数据存储形式存储键值数据。通过上述方法,对原始一级键K1的表分区段进行进一步细分,然后根据原始键和分片号重新构建均衡键,并基于均衡键进行数据的存储,实现了数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。图3示出本专利技术对原始一级键K1的表分区段进行切分得到分片号的示意图。分片是由用户存储的结点数计算出来的。未存储数据时,不能确定一个分区具体被分成了多少个分片。当用户存储Key-Value时,对Key取哈希值,再按计划分片数取余。把计算的结果与原分区的完整键名组合,形成新的分片键名,下面结合图4描述本专利技术一个实施例的对原始一级键K1的表分区段进行切分得到分片号方法。图4示出本专利技术对原始一级键K1的表分区段进行切分得到分片号的一个实施例的示意图。如图4所示,定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值。对原始一级键K1的表分区段进行切分得到分片号的一种具体实现方法包括:步骤S402,对原始一级键K1和二级键K2进行哈希运算。步骤S404,将哈希运算所得哈希值对计划分片数M进行取余运算。步骤S406,将取余运算的结果作为分片号。例如,集群节点数是4,分区的最大分片数设计为40。那么用户向db1的table1中存储一新的值:Key-Value,该值对应的分区是:Stringslice=String.valueOf(Math.abs(Key.hashCode())/40)。假设计算的结果为23。如果本文档来自技高网...
内存集群的存储均衡方法及装置

【技术保护点】
一种内存集群的存储均衡方法,包括:对原始一级键K1的表分区段进行切分得到分片号;根据原始一级键K1、分片号生成均衡一级键K1’;采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。

【技术特征摘要】
1.一种内存集群的存储均衡方法,包括:对原始一级键K1的表分区段进行切分得到分片号;根据原始一级键K1、分片号生成均衡一级键K1’;采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。2.根据权利要求1所述的方法,其特征在于,其中,定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值;所述对原始一级键K1的表分区段进行切分得到分片号包括:对原始一级键K1和二级键K2进行哈希运算;将哈希运算所得哈希值对计划分片数M进行取余运算;将取余运算的结果作为分片号。3.根据权利要求1所述的方法,其特征在于,其中,定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值;所述对原始一级键K1的表分区段进行切分得到分片号包括:对原始一级键K1和二级键K2进行md5运算;取md5运算所得摘要值的后n位作为分片号,n位所能表示的最大数值不大于计划分片数M。4.根据权利要求2或3所述的方法,其特征在于,还包括:根据用户存储的节点数确定所述计划分片数M,所述计划分片数M为节点数的N倍,其中N为不大于10的自然数。5.根据权利要求1所述的方法,其特征在于,其中,所述定制对象DO以MAP的形式存储。6.一种内存集群的存储均...

【专利技术属性】
技术研发人员:杨维
申请(专利权)人:中国电信股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1