[发明专利]一种键值库辅助索引的构建与管理方法有效
申请号: | 201210191624.7 | 申请日: | 2012-06-11 |
公开(公告)号: | CN102750356A | 公开(公告)日: | 2012-10-24 |
发明(设计)人: | 王建民;丁贵广;卓安 | 申请(专利权)人: | 清华大学 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京清亦华知识产权代理事务所(普通合伙) 11201 | 代理人: | 罗文群 |
地址: | 100084*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 键值 辅助 索引 构建 管理 方法 | ||
技术领域
本发明涉及一种键值库辅助索引的构建与管理方法,属于计算机数据管理技术领域。
背景技术
互联网的飞速发展带来数据的爆发式增长,不仅数量上指数级增长,而且数据类型和结构都复杂多样,无法用关系型的二维表来表示,导致传统的关系数据库无法处理和分析这种大规模的数据。因此工业界和学术界开始考虑新的数据模型来处理海量的非结构化数据,2006年谷歌发表宽表(BigTable)论文,揭示了谷歌处理海量数据的核心技术。宽表的数据模型灵活多变,不需要预定义表格的列,宽表可在运行期动态添加列。与关系数据库的行存储对应,宽表采用列存储,可自动水平扩展到多台机器。谷歌宽表论文的公开发表引起开源界的重视,非常多的列存储系统被开发出来,其中典型代表就是HBase和Cassandra,数据模型也都是基于谷歌的宽表。本发明所指的键值库,即是采用谷歌宽表数据模型的列存储系统,具体的实现是Cassandra。下面先解释其具体的数据模型,然后介绍相关的辅助索引技术。
键值库就是以表的形式存储数据,每个表由行和列组成,每个列属于一个特定的列族。表中由行和列确定的存储单元称为一个元素,每个元素保存了同一份数据的多个版本,由时间戳来标识。行键是数据行在表中的唯一标识,在底层按照字典序有序存储并作为检索记录的主键,这对应关系数据库的主索引。元素则由行键,列(列族:列名)和时间戳唯一确定,所以如果没有辅助索引要查找某个符合某个条件的元素所在的行需要做全表扫描。需要说明的是键值库能保证行键,列名和时间戳都是有序的。底层物理存储时是按照列族进行存储,这也是为什么叫列存储,这对应关系数据的行存储。存储时表中的空值是不被存储的,这样可以最优化存储空间。这种存储结构还有的一个优势是任何一个列族都能随时向表中添加新列,支持灵活而复杂的数据结构。此外,这种模型能水平分割,所以一个表可以无限大,系统会自动水平分割到多个机器上并管理好,这也是能支持海量数据的一个原因。
键值库的访问方式需要确定行键,列和时间戳,但很多情况下用户想查询某列符合条件的所有记录,这时并不知道行键,所以无法快速高效做到,需要扫描全表。这种查询在传统数据库中经常见到,一般是where子句里指定相应条件,在关系数据库中可通过B-树索引高效做到。B-树索引不能简单的应用到键值库中,因为键值库需要高性能的实时读写,而且数据量庞大能很好的水平扩展,而B-树索引一是不能方便的扩展,二是数据规模大了之后读写性能急剧下降。因此一般键值库只提供主键索引,而需要用户去构建自己的辅助索引,这也是本发明要提出构建键值库的辅助索引的原因。
辅助索引就是用于加快键值库中表数据的访问速度,有效避免全表扫描。目前键值库的辅助索引很普遍的做法就是以列值作为行键,行键作为列重新构造一个表,即可实现根据列值快速地定位相关数据所在的行,这种做法也叫反向索引。这种索引方式简单,但有两大缺点,一是索引的数据可能不是本地的而是其他机器上的,会导致数据的传输消耗,二是数据的更新和索引的更新不是原子性会导致数据的不一致性。
发明内容
本发明的目的是提出一种键值库辅助索引的构建与管理方法,针对已有的键值库上的辅助索引限制多且功能弱,提出新的键值库辅助索引的构建与管理方法,用于加快键值库中表数据的访问速度,有效避免全表扫描。
本发明提出的键值库辅助索引的构建与管理方法,包括以下步骤:
(1)设键值库中没有待索引的数据,用户对键值库系统进行初始化,并建立用于数据索引的列族和列,向数据索引的列族和列中插入待索引数据;
(2)在键值库中建立辅助索引列族,并初始化,其过程如下:
(2-1)在键值库中创建存储索引信息表;
(2-2)向上述索引信息表中添加两个列族,两个列族分别为索引信息和索引项,并设定列族列名的比较类型为复合列名类型;
(2-3)设定上述索引信息列族的复合列名格式为:{索引值类型编码字段,索引值字段,行键字段,全局唯一标识字段},与该索引信息列族的复合列名相对应的列值为空,行键为索引名;
(2-4)设定上述索引项列族的复合列名格式为:{索引列名字段,全局唯一标识字段},与该索引项的复合列名相对应的列值为复合式的{索引值字段},行键为与待索引的数据所在行相对应的行键;
(3)进行键值库辅助索引,包括以下步骤:
(3-1)从键值库中获取构建时间戳、当前键值库的唯一标识和构建索引名;
(3-2)设定一个构建键值库辅助索引过程进行批处理操作的操作列表m,设定索引信息列族的行键为索引名;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于清华大学,未经清华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210191624.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:颗粒状医药组合物
- 下一篇:基于生物芯片的无创胆固醇智能监测系统