[发明专利]一种键值数据库的多键查找实现方法有效
申请号: | 201210352757.8 | 申请日: | 2012-09-20 |
公开(公告)号: | CN102955843A | 公开(公告)日: | 2013-03-06 |
发明(设计)人: | 郑程光;赵伟;赖铮;孙伟丰;李泉;李浩;李书淦;程仁波 | 申请(专利权)人: | 北大方正集团有限公司;上海方正数字出版技术有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司 11204 | 代理人: | 王达佐 |
地址: | 100871 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 键值 数据库 查找 实现 方法 | ||
技术领域
本发明涉及计算机技术领域,特别涉及一种键值数据库的多键查找实现方法。
背景技术
经过几十年的发展,关系数据库管理系统(RDBMS)被广泛应用,但是同时暴露出很多先天缺陷,其性能无法适应最新的很多类型的应用需求。NoSQL是近年来发展壮大的新的数据存储管理技术,它试图避免RDBMS在超大数据量和大量多表连接的情况下性能低下的缺点。键值存储引擎(key/value storage engine)是NoSQL的一种技术方案,它存储无模式的键值数据(key/value pair),键值数据在存储引擎内部都是无结构的字节串,存储引擎内部不理解键值数据的内部结构,而由应用程序负责解析和处理键值数据。键值存储引擎需要支持完整的ACID事务语义和高效的键值数据的存储和访问方法,并且通过用户注册的回调函数理解键值数据的内部结构并且操作键值数据。
一般的key-value数据库只能进行单键值的查找,例如可以查找key=某个值的value,而不能查找key(1)=某个值并且key(2)=某个值…并且key(n)=某个值的value。个别的key-value数据库实现了多键的查找功能,例如,berkeleyDB实现了多键值的查找,其通过secondary database(可以理解为主数据表的索引)实现的多键查找。berkeleyDB单键查找是直接通过key的值访问primary database(可以理解为主数据表)来得到value的。
参阅图1。图1示出了一种现有技术中的多键查找技术方案。例如,若primary database中存储了用户的信息,key为用户id,value为用户的详细信息,假设为“名字 年龄 住址”组成的字符串。那么现在可以通过用户的ID在primary database中得到用户的详细信息。若现在的需求是查询所有住址为北京,年龄为20岁的用户,这就需要进行多键查找,也即需要设置key(1)=20并且key(2)=“北京”。那么就需要在primary database上建立secondary database,在secondary database中,key就是年龄和住址,value则为用户ID。上述的多键查找的实现实际上是通过先访问secondary database得到用户ID,再通过访问primary database通过用户的ID来实现的。由此,本技术领域的技术人员可以理解的是上述的解决方案总共进行了两次的数据访问,由此带来的缺陷是导致了较多的IO开销,因此,这种多键查找的实现方案具有性能低下的缺陷。
发明内容
为解决上述问题,本发明技术方案提供了一种键值数据库的多键查找实现方法,包括:
为所述键值数据库中的主数据表注册第一键的划分结构,并为所述主数据表索引表注册第二键的划分结构,所述主数据表和索引表的第一键的划分结构和所述第二键的划分结构分别设置所述主数据表和所述索引表的每一行数据的划分方法和每一列数据的比较函数,从而为所述主数据表创建索引时创建出满足多列查找的索引表;
通过所述比较函数以构建出节点间存在多列大小关系的树;
通过所述树的根节点查找存有满足查询条件的记录指针的第一个叶节点;
以所述第一个叶节点作为起点经过一次遍历找到同时满足查询条件的所有节点;
其中,每个节点的查询步骤为:如果前一列的比较结果满足查找条件,则使用下一列的比较函数,直至判断出该节点是否满足多列查询条件。
可选地,所述的第一键的划分结构为包columnInfo结构,所述columnInfo结构包括以下的参数
Keys:数值型,其表示所述主数据表的一行数据划分的列的数目;
col_number:空;
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度
可选地,所述的第二键的划分结构为columnInfo结构,所述columnInfo结构包括以下的参数:
Keys:数值型,其表示所述索引表的一行数据划分的列的数目;
col_number:数值的数组,表达了所述索引键和所述主数据表的列的对应关系;
rd_comfunction:函数的数组,存放了每个列的比较函数;
split_function:行的切分函数,传入行数据和列号,返回该列的起始地址和列的长度。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北大方正集团有限公司;上海方正数字出版技术有限公司,未经北大方正集团有限公司;上海方正数字出版技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210352757.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种新型灭火组合物
- 下一篇:在液体药剂输送系统中使用的传感器