[发明专利]在key-value数据库中进行数据分区的方法和装置有效
申请号: | 201210212320.4 | 申请日: | 2012-06-21 |
公开(公告)号: | CN102799628A | 公开(公告)日: | 2012-11-28 |
发明(设计)人: | 张海洋;朱天浩 | 申请(专利权)人: | 新浪网技术(中国)有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京市京大律师事务所 11321 | 代理人: | 黄启行;方晓明 |
地址: | 100080 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | key value 数据库 进行 数据 分区 方法 装置 | ||
技术领域
本发明涉及数据库技术领域,尤其涉及在key-value数据库中进行数据分区的方法和装置。
背景技术
具备高可靠性及可扩展性的海量数据存储对互联网公司来说是一个巨大的挑战,传统的数据库往往很难满足该需求,并且很多时候对于特定的系统绝大部分的检索都是基于主键的查询,在这种情况下使用关系型数据库将使得效率低下,并且扩展也将成为未来很大的难题。在这样的情况下,使用键-值(key-value)数据库进行存储、查询得到广泛的应用。
key-value分布式存储系统中将键值(key)与内容(value)对应存储,在进行查询时,可以通过键值key快速查询到对应的内容value,具有查询速度快、存放数据量大、支持高并发的优点,是一种非常适合通过主键进行查询的方式。
为方便对key-value数据库中的元数据(即key-value对)进行操作,比如存储、查询、删除等,通常会将一个大的数据库的数据表拆分成多个更小的数据表;也就是,对key-value数据库进行分区;从而在对数据库进行操作时,不需扫描整个数据库的数据表,而只需访问其中部分分区的数据表,这样可以使得数据的查询执行得更快,因为需要扫描的数据较少,而且可以更快地执行维护任务(如重建索引或备份表)。
在现有技术中,对key-value数据库进行分区仅支持依据待分区的个数进行分区,分区的方式单一;这种固定模式的分区方式使得分区的数据库不一定能很好地适应具体的业务需求,在数据库的扩展,或改变查询方式的情况下,具有非常大的局限性。
而且,对key-value数据库进行分区的工作通常是在创建数据库的时候完成,在创建完成后,分区方式将不能根据以后的情况进行改变,也就是说,现有技术中在数据库创建、完成分区后,在对数据库进行操作过程中,如查询、增加数据时就不能再对分区模式进行更改。这使得数据库缺少灵活性,无法在使用一段时间后根据实际情况的变化而做出相应的变更。
发明内容
本发明的实施例提供了一种在key-value数据库中进行数据分区的方法和装置,提供灵活、可变的分区方式。
根据本发明的一个方面,提供了一种在key-value数据库中进行数据分区的方法,包括:
从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息;
调用分区回调函数,并将输入参数传送给所述分区回调函数;其中,所述输入参数包括所述分区数目信息和分区算法信息,以及计算值,所述计算值为与待分区的key-value数据相关的值;
所述分区回调函数根据所述分区算法信息运行相应分区算法,该相应分区算法根据所述分区数目信息和计算值进行运算,得到输出参数;所述输出参数中包含子数据库的信息,该子数据库为所述待分区的key-value数据所被分区的子数据库。
较佳地,所述待分区的key-value数据具体为待存储的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述输出参数将所述待存储的key-value数据存储到相应的子数据库中。
较佳地,所述待分区的key-value数据具体为待查询的key-value数据;以及,
在所述得到输出参数之后,还包括:
根据所述计算值在所述输出参数所指示的子数据库中查找到所述key-value数据。
较佳地,在从预先保存的分区信息基础表中解析出分区数目信息和分区算法信息时,所述方法还包括:
从所述分区信息基础表中解析出垂直分区信息、水平分区信息;以及,
在所述分区回调函数根据所述分区算法信息运行相应分区算法时,还包括:
该相应分区算法还根据所述垂直分区信息、水平分区信息进行运算。
其中,所述子数据库的信息包括:子数据库的名称,以及子数据库所在服务器的信息;其中,所述子数据库的名称中包含有水平分区值信息和垂直分区值信息。
所述分区算法信息具体可以是键key算法、哈希hash算法、范围range算法、列表list算法,或自定义的算法;以及
所述分区数目信息具体指示出分区总数为固定值,或指示出分区总数不固定;以及
所述key-value数据库具体为伯克利Berkeley数据库。
根据本发明的另一个方面,还提供了一种在key-value数据库中进行数据分区的装置,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于新浪网技术(中国)有限公司,未经新浪网技术(中国)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210212320.4/2.html,转载请声明来源钻瓜专利网。