CN106909556B - 内存集群的存储均衡方法及装置 - Google Patents
内存集群的存储均衡方法及装置 Download PDFInfo
- Publication number
- CN106909556B CN106909556B CN201510976653.8A CN201510976653A CN106909556B CN 106909556 B CN106909556 B CN 106909556B CN 201510976653 A CN201510976653 A CN 201510976653A CN 106909556 B CN106909556 B CN 106909556B
- Authority
- CN
- China
- Prior art keywords
- key
- primary key
- data
- original
- original primary
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 20
- 238000005192 partition Methods 0.000 claims abstract description 45
- 239000012634 fragment Substances 0.000 claims abstract description 24
- 238000013500 data storage Methods 0.000 claims abstract description 14
- 230000011218 segmentation Effects 0.000 claims abstract description 14
- 238000010586 diagram Methods 0.000 description 11
- 238000009826 distribution Methods 0.000 description 4
- 238000009827 uniform distribution Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种内存集群的存储均衡方法和装置,涉及数据库领域。其中的方法包括:对原始一级键K1的表分区段进行切分得到分片号;根据原始一级键K1、分片号生成均衡一级键K1’;采用(K1’,DO)的数据存储形式存储键值数据;其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。从而实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。
Description
技术领域
本发明涉及数据库领域,特别涉及一种内存集群的存储均衡方法及装置。
背景技术
由代理服务器对集群中的键(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,该值对应的分区是:String slice=String.valueOf(Math.abs(Key.hashCode())/40)。假设计算的结果为23。如果完整的分区键名为db1_table1_p1,则新的分区名为db1_table1_p1_23。
在分区的基础上进一步把数据“切”分成片。当切片数大于节点数时,切片就会根据TwemProxy的特性被均匀分布到不同的节点上。原则上切片数越多,数据存储粒度越小,数据分布就越均匀,从而实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。但切片数据也没必要过大,一般保持在节点数的N(N≤10)倍即可。
下面结合图5描述本发明一个另实施例的对原始一级键K1的表分区段进行切分得到分片号方法。
图5示出本发明对原始一级键K1的表分区段进行切分得到分片号的另一个实施例的示意图。如图5所示,对原始一级键K1的表分区段进行切分得到分片号的另一种具体实现方法包括:
步骤S502,对原始一级键K1和二级键K2进行md5运算;
步骤S504,取md5运算所得摘要值的后n位作为分片号,n位所能表示的最大数值不大于计划分片数M。
通过对原始一级键K1和二级键K2进行md5运算获取分片号,同样可以使得数据存储粒度越小,数据分布就越均匀,从而实现数据在内存集群数据节点上的均匀分布,进而充分利用内存集群的存储容量。与图4所示的实施例相比,md5算法可以根据原始一级键K1和二级键K2计算出结果为唯一值的分片号,但是md5算法对CPU的占用较高,在大的并发压力下会影响性能。
此外,定制对象DO可以通过MAP的形式存储。
下面结合图6描述本发明一个实施例的内存集群的存储均衡装置。
图6示出本发明内存集群的存储均衡装置的一个实施例的示意图。如图6所示,该实施例的内存集群的存储均衡装置60包括:
切分模块602,用于对原始一级键K1的表分区段进行切分得到分片号。
均衡一级键生成模块604,用于根据原始一级键K1、分片号生成均衡一级键K1’。
键值数据存储模块606,用于采用(K1’,DO)的数据存储形式存储键值数据。
其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键。
在一个实施例中,定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值;
切分模块602用于:对原始一级键K1和二级键K2进行哈希运算;将哈希运算所得哈希值对计划分片数M进行取余运算;将取余运算的结果作为分片号。
在另一个实施例中,切分模块602可以用于:对原始一级键K1和二级键K2进行md5运算;取md5运算所得摘要值的后n位作为分片号,n位所能表示的最大数值不大于计划分片数M。
内存集群的存储均衡装置60还可以包括:
计划分片数确定模块608,用于根据用户存储的节点数确定所述计划分片数M,所述计划分片数M为节点数的N倍,其中N为不大于10的自然数。
下面结合图7描述本发明一个实施例的键值数据存储模块。
图7示出本发明键值数据存储模块的一个实施例的示意图。如图7所示,该实施例的键值数据存储模块606包括定制对象存储单元6062,用于以MAP的形式存储定制对象DO。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种内存集群的存储均衡方法,包括:
对原始一级键K1的表分区段进行切分得到分片号;
根据原始一级键K1、分片号生成均衡一级键K1’;
采用(K1’,DO)的数据存储形式存储键值数据;
其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键;定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值;
所述对原始一级键K1的表分区段进行切分得到分片号包括:
对原始一级键K1和二级键K2进行哈希运算;将哈希运算所得哈希值对计划分片数M进行取余运算;将取余运算的结果作为分片号;
或者,
对原始一级键K1和二级键K2进行md5运算;取md5运算所得摘要值的后n位作为分片号,n位所能表示的最大数值不大于计划分片数M。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据用户存储的节点数确定所述计划分片数M,所述计划分片数M为节点数的N倍,其中N为不大于10的自然数。
3.根据权利要求1所述的方法,其特征在于,其中,所述定制对象DO以MAP的形式存储。
4.一种内存集群的存储均衡装置,包括:
切分模块,用于对原始一级键K1的表分区段进行切分得到分片号;
均衡一级键生成模块,用于根据原始一级键K1、分片号生成均衡一级键K1’;
键值数据存储模块,用于采用(K1’,DO)的数据存储形式存储键值数据;
其中,原始一级键K1为定制对象DO的原始逻辑键,所述原始一级键K1由数据库段、数据表段、表分区段组成,均衡一级键K1’为定制对象DO的均衡逻辑键;定制对象DO中存储(K2,V),二级键K2为定制对象DO的数据键,V为定制对象DO的数据值;所述切分模块用于:对原始一级键K1和二级键K2进行哈希运算;将哈希运算所得哈希值对计划分片数M进行取余运算;将取余运算的结果作为分片号;或者,所述切分模块用于:对原始一级键K1和二级键K2进行md5运算;取md5运算所得摘要值的后n位作为分片号,n位所能表示的最大数值不大于计划分片数M。
5.根据权利要求4所述的装置,其特征在于,还包括:
计划分片数确定模块,用于根据用户存储的节点数确定所述计划分片数M,所述计划分片数M为节点数的N倍,其中N为不大于10的自然数。
6.根据权利要求4所述的装置,其特征在于,键值数据存储模块还包括定制对象存储单元,用于以MAP的形式存储定制对象DO。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510976653.8A CN106909556B (zh) | 2015-12-23 | 2015-12-23 | 内存集群的存储均衡方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510976653.8A CN106909556B (zh) | 2015-12-23 | 2015-12-23 | 内存集群的存储均衡方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106909556A CN106909556A (zh) | 2017-06-30 |
CN106909556B true CN106909556B (zh) | 2020-03-20 |
Family
ID=59200301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510976653.8A Active CN106909556B (zh) | 2015-12-23 | 2015-12-23 | 内存集群的存储均衡方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106909556B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109101635B (zh) * | 2018-08-16 | 2020-09-11 | 广州小鹏汽车科技有限公司 | 一种基于Redis Hash结构的数据处理方法及装置 |
CN109344161A (zh) * | 2018-12-04 | 2019-02-15 | 大唐网络有限公司 | 一种基于mongodb的海量数据存储方法 |
CN110287197B (zh) * | 2019-06-28 | 2022-02-08 | 微梦创科网络科技(中国)有限公司 | 一种数据存储方法、迁移方法及装置 |
CN110427434B (zh) * | 2019-06-28 | 2022-06-07 | 苏宁云计算有限公司 | 一种多维数据查询方法及装置 |
CN113791740B (zh) * | 2021-11-10 | 2022-02-18 | 深圳市杉岩数据技术有限公司 | 一种记录对象存储桶统计计数的方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与*** |
CN103699676A (zh) * | 2013-12-30 | 2014-04-02 | 厦门市美亚柏科信息股份有限公司 | 基于mssql server表分区及自动维护方法及*** |
CN103838770A (zh) * | 2012-11-26 | 2014-06-04 | ***通信集团北京有限公司 | 一种数据逻辑分区的方法和*** |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519668B2 (en) * | 2013-05-06 | 2016-12-13 | International Business Machines Corporation | Lock-free creation of hash tables in parallel |
US20140351239A1 (en) * | 2013-05-23 | 2014-11-27 | Microsoft Corporation | Hardware acceleration for query operators |
-
2015
- 2015-12-23 CN CN201510976653.8A patent/CN106909556B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101876983A (zh) * | 2009-04-30 | 2010-11-03 | 国际商业机器公司 | 数据库分区方法与*** |
CN103838770A (zh) * | 2012-11-26 | 2014-06-04 | ***通信集团北京有限公司 | 一种数据逻辑分区的方法和*** |
CN103699676A (zh) * | 2013-12-30 | 2014-04-02 | 厦门市美亚柏科信息股份有限公司 | 基于mssql server表分区及自动维护方法及*** |
Non-Patent Citations (1)
Title |
---|
Oracle数据库***优化调整;刘超 等;《信息安全与技术》;20140710;第103-104页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106909556A (zh) | 2017-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106909556B (zh) | 内存集群的存储均衡方法及装置 | |
CN110489059B (zh) | 数据集群存储的方法、装置及计算机设备 | |
CN106844510B (zh) | 一种分布式数据库集群的数据迁移方法和装置 | |
US20190332608A1 (en) | Data processing method and device | |
CN110347651B (zh) | 基于云存储的数据同步方法、装置、设备及存储介质 | |
US10140351B2 (en) | Method and apparatus for processing database data in distributed database system | |
CN110287197B (zh) | 一种数据存储方法、迁移方法及装置 | |
KR102376713B1 (ko) | 복합 파티션 함수 제공 기법 | |
US20160217167A1 (en) | Hash Database Configuration Method and Apparatus | |
JP2021500649A (ja) | シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム | |
CN106161633B (zh) | 一种基于云计算环境下打包文件的传输方法及*** | |
US20130297570A1 (en) | Method and apparatus for deleting duplicate data | |
EP3014444A1 (en) | Computing connected components in large graphs | |
CN111723073B (zh) | 数据存储处理方法、装置、处理***以及存储介质 | |
CN107169009B (zh) | 一种分布式存储***的数据***方法及装置 | |
CN109918021B (zh) | 数据处理方法和装置 | |
CN106570113B (zh) | 一种海量矢量切片数据云存储方法及*** | |
CN106775470B (zh) | 一种数据存储的方法及*** | |
CN106909557B (zh) | 内存集群的存储方法及装置、内存集群的读取方法及装置 | |
WO2016101751A1 (zh) | 一种分布式存储***中的主从平衡方法和装置 | |
CN106897281B (zh) | 一种日志分片方法和装置 | |
JP2011170667A (ja) | ファイル同期システム、ファイル同期方法およびファイル同期プログラム | |
US20140359213A1 (en) | Differencing disk improved deployment of virtual machines | |
US10700934B2 (en) | Communication control device, communication control method, and computer program product | |
CN105204782B (zh) | 一种实现数据存储的方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220128 Address after: 100007 room 205-32, floor 2, building 2, No. 1 and No. 3, qinglonghutong a, Dongcheng District, Beijing Patentee after: Tianyiyun Technology Co.,Ltd. Address before: No.31, Financial Street, Xicheng District, Beijing, 100033 Patentee before: CHINA TELECOM Corp.,Ltd. |
|
TR01 | Transfer of patent right |