[发明专利]一种基于多个相关字段组合索引存储结构及建立、查询与维护方法在审
申请号: | 201310415712.5 | 申请日: | 2013-09-12 |
公开(公告)号: | CN103500183A | 公开(公告)日: | 2014-01-08 |
发明(设计)人: | 王洋 | 申请(专利权)人: | 国家计算机网络与信息安全管理中心 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 天津滨海科纬知识产权代理有限公司 12211 | 代理人: | 孙春玲 |
地址: | 100029*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 相关 字段 组合 索引 存储 结构 建立 查询 维护 方法 | ||
技术领域
本发明属于数据处理领域,尤其是涉及一种基于多个相关字段组合索引存储结构及建立、查询与维护方法。
背景技术
以MemcacheDB、TokyoTyrant、MongoDB为代表的key-value数据存储都是基于一个字段作为key,该key以btree或者哈希方式创建索引,以该key做为查询条件时,查询效率很高,以其他非key字段做为查询条件时,必须全表扫描,查询效率低下。如涉及到多个关联字段的or条件类的查询,其中的key字段能使用索引,其他字段必须全列扫描。传统的多个字段作为组合索引的系统,该索引类型只能支持“and”型的查询,并且索引对顺序有要求,例如组合索引为key(f1,f2,f3),则对该索引的使用有顺序要求,只有以下查询能使用上该索引:
(1) f1=xxx
(2) f1=xxxandf2=xxx
(3) f1=xxxandf2=xxxandf3=xxx
发明内容
本发明提供一种基于多个相关字段组合索引存储结构及建立、查询与维护方法,尤其适合对多个关联字段的任意一个字段进行等值查询及对多个关联字段中的多个字段或者全部字段进行or或者and条件的等值查询。并且对条件的顺序没有限制。
为解决上述技术问题,本发明采用的技术方案是:一种建立基于多个相关字段组合索引存储的方法,包括:
1)指定组合索引的各个字段及创建各个字段相应的hash值;
2)建立用以存储各个字段相应的hash值对应的hash冲突链在数据区的字节偏移量的散列表;
3)建立用以存储包括行号(rowid)和实际的组合索引的各个字段值的值(data)的数据区;
4)建立用以表示所在行是否删除的信息的删除位图(delete-bitmap)。根据本发明的另一方面,还提供了一种于多个相关字段组合索引存储结构,包括:
用以存储各个字段相应的hash值对应的hash冲突链在数据区的字节偏移量的散列表;
用以存储包括行号(rowid)和实际的组合索引的各个字段值的值(data)的数据区;
用以表示所在行是否删除的信息的删除位图(delete-bitmap)。
根据本发明的另一方面,本发明还提供了一种对单一字段条件的查询方法,包括:
1)计算字段值的hash值,根据hash值从散列表中查找hash冲突链的数据页的首地址;
2)变历所有的数据页,从数据页中的data数据项中把该单一字段的值取出,和该字段的值进行匹配,获得所有匹配的rowid;
3)根据上一步获得的所有rowid,查看delete-bitmap,去除掉已经删除的行的rowid,根据rowid来获得查询结果。
进一步的,本发明还提供了对两个相同值的字段且查询条件为or运算查询方法,包括:
1)计算相同查询条件的hash值,根据hash值从散列表中查找hash冲突链的数据页的首地址;
2)变历所有的数据页,从数据页中的data数据项中分别把各字段的值取出,分别和查询条件值进行匹配,只要其中任意一个值匹配上既可,获得所有匹配的rowid;
3)将第二步得到的rowid进行distinct去重,查看delete-bitmap,去除掉已经删除的行,根据rowid来获得查询结果。
进一步的,基于多个相关字段组合索引存储结构对两个不同值的字段且查询条件为or运算的查询方法,包括:
1)任意指定组合中一字段值为第一字段,计算组合中第一字段值hash值,根据hash值从散列表中查找hash冲突链的数据页的首地址;
2)变历所有的数据页,从数据页中的data数据项中把组合中第一字段的值取出,与第一字段值进行匹配,获得所有匹配的rowid;
3)计算第二字段值的hash值,根据hash值从散列表中查找hash冲突链的数据页的首地址;
4)变历所有的数据页,从数据页中的data数据项中把第二字段的值取出,与第二字段值进行匹配,获得所有匹配的rowid;
将第二步和第四步得到的rowid进行distinct去重,查看delete-bitmap,除掉已经删除的行,根据rowid的来获得查询结果。
进一步的,基于多个相关字段组合索引存储结构对两个不同值的字段且查询条件为and运算的查询方法,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家计算机网络与信息安全管理中心,未经国家计算机网络与信息安全管理中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310415712.5/2.html,转载请声明来源钻瓜专利网。