[发明专利]分布式数据库中子表分裂的方法、子表节点和系统有效
申请号: | 201510767508.9 | 申请日: | 2015-11-11 |
公开(公告)号: | CN105354315B | 公开(公告)日: | 2018-10-30 |
发明(设计)人: | 毕杰山;房浩;钟超强;郭益君 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京亿腾知识产权代理事务所 11309 | 代理人: | 陈霁 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 数据库 中子 分裂 方法 节点 系统 | ||
本发明涉及一种分布式数据库中子表分裂的方法、子表节点和系统,根据预设条件,设置第一子表,第一子表是指为存储新的键‑值类型的数据而预留的空表;该方法包括:当新的键‑值类型的数据需要存储到第一子表中时,接收用户输入的子表分裂命令;根据子表分裂命令,将状态表中第一子表的状态标识更新为不再提供读写服务,并将第一子表分裂为至少两个第二子表,更新状态表中第二子表的状态标识为可提供读写服务;指示将第二子表的存储位置信息记录在元数据表中。因此,通过在用户表中预留一个当前数据存储时保持为空的子表,当需要将数据存储到该子表中时,先将该子表进行分裂,分裂完成后再存入数据,实现了用户表中子表的快速分裂。
技术领域
本发明涉及数据库领域,尤其涉及一种分布式数据库中子表分裂方法、子表节点和系统。
背景技术
在大多数分布式数据库中,通常采用KeyValue类型的存储方式,即将用户需要存储的数据存放在Value部分,构建与Value对应的Key,当用户需要查找Value时,通过Key索引查找对应的Value。在数据存储时,是按照Key的字典顺序自然排序的。
数据存储在用户创建的相应用户表(Table)。一个Table中可以存储大量的数据,为了方便分布式管理和维护,可以按照记录的Key值的字典顺序切割生成一个或多个子表(Region),每个Region是一个Key区间数据的集合,也可以说是连续行数据的集合。每个KeyValue所对应的Key只包括在一个Region区间。例如图1所示,图1为一个用户表中子表的示意图,其中,图1中Region-1中的Key-A代表着在字典顺序上一个无穷小的值,Region-M中的Key-Y代表着在字典顺序上一个无穷大的值。
目前,子表的分裂分为两种形式:第一,在建表初期,预设定分裂点(SplitPoints),子表会按照预设定的分裂点生成新的子表。例如:建表时建立Region[Key-A,Key-Y),预设定的分裂点为{B,C,……X},Region[Key-A,Key-Y)会按照预设定的分裂点自动生成多个子表:Region-1[Key-A,Key-B),Region-2[Key-B,Key-C),Region-3[Key-C,Key-D),……Region-M[Key-X,Key-Y),如图2所示。第二,当子表中存储的数据达到一定内存时,会自动分为两个子表,或者通过用户手动触发子表分裂。例如:如图3所示,图3为一个子表分裂为两个子表的示意图,分别将Region[,C),Region[C,E),Region[E,G),……,Region[X,)分裂为两个子表,依次分裂为Region[,B)、Region[B,C),Region[C,D)、Region[D,E),Region[E,F)、Region[F,G),……,Region[X,Y)、Region[Y,Z)。当一个用户表中包括多个子表时,也可以按照第二种分裂方式将子表进行分裂,以提高读写数据的性能。
但是,如果在建表初期预设定的分裂点不合理,例如在建表时确定的分裂点为{a,b,c,d,e,f},基于这些分裂点的子表为(-∞,a),[a,b),[b,c),[c,d),[d,e),[e,f),[f,+∞)。运行一段时间之后,发现原来的分裂点是不合理的,更加合理的分裂点应该为{g,h,i,j,k,l,m},而原来的子表中又已经存在用户数据了,此时对子表进行分裂,读取一个文件中的数据,然后存放到两个或多个文件中,子表分裂速度慢,且读写数据的性能较差,如果将子表分裂的越多,读写数据的性能会越差,且分裂后的子表也依然会造成数据分布不均匀的问题。
发明内容
本发明实施例提供一种分布式数据库中子表分裂的方法、子表节点和系统,通过在用户表中预留一个子表,该子表在当前数据存储时保持为空子表。当需要将数据存储到该子表中时,将该子表进行分裂,以实现用户表中子表的快速多点分裂,提升用户表的读写性能。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510767508.9/2.html,转载请声明来源钻瓜专利网。