CN102750356B - 一种键值库辅助索引的构建与管理方法 - Google Patents
一种键值库辅助索引的构建与管理方法 Download PDFInfo
- Publication number
- CN102750356B CN102750356B CN201210191624.7A CN201210191624A CN102750356B CN 102750356 B CN102750356 B CN 102750356B CN 201210191624 A CN201210191624 A CN 201210191624A CN 102750356 B CN102750356 B CN 102750356B
- Authority
- CN
- China
- Prior art keywords
- index
- row
- family
- data
- name
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种键值库辅助索引的构建与管理方法,属于计算机数据管理技术领域。本发明提出的键值库辅助索引的构建与管理方法,主要是针对键值库中的列进行索引,以能加快对列的范围查询。本方法首先对键值库辅助索引需要的索引信息列族和索引项列族的初始化,并设定列族列名的比较类型为复合列名类型;对待索引数据构建辅助索引的批处理操作列表,并向键值库提交完成索引创建;根据用户的查询请求,以索引名作为行键,以查询范围构建复合列名的最小值和最大值,从索引信息列族中得到查询结果并返回。本发明方法基于键值库的列族,构建复合列名来进行索引,所以索引的大部分操作都是列操作,速度快,能方便用户进行高效范围查询。
Description
技术领域
本发明涉及一种键值库辅助索引的构建与管理方法,属于计算机数据管理技术领域。
背景技术
互联网的飞速发展带来数据的爆发式增长,不仅数量上指数级增长,而且数据类型和结构都复杂多样,无法用关系型的二维表来表示,导致传统的关系数据库无法处理和分析这种大规模的数据。因此工业界和学术界开始考虑新的数据模型来处理海量的非结构化数据,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,设定索引信息列族的行键为索引名;
(3-3)根据待索引数据,从索引项列族中获取一个与索引信息列族中与待索引数据相对应的旧索引的信息n,该信息n包括行键、索引列的值和全局唯一标识,并用信息n更新索引信息列族中的数据,并将该更新操作添加到操作列表m中,同时删除索引项列族中中的旧索引信息,并将该删除操作添加到操作列表m中;
(3-4)对步骤(1)的数据索引进行判断,若数据索引的列族中待索引数据的值不为空,则在上述索引项列族和索引信息列族中添加一个新值,并将该添加操作添加到操作列表m中;
(3-5)向键值库提交操作列表m,完成辅助索引的更新;
(4)对键值库辅助索引进行管理,包括以下步骤:
(4-1)根据用户的查询请求,从索引信息列族中获取与待索引数据相对应的索引名,设定一个结果集列表r;
(4-2)根据用户的查询请求中指定的索引信息列族中复合列名的最小值和最大值,从索引信息列族中得到查询范围;
(4-3)根据上述查询范围,对索引信息列族进行查询,得到查询数据;
(4-4)从查询得到的数据中提取行键,将该行键添加到结果集列表r中;
(4-5)将上述表示查询范围的最小值和最大值之间的差值x与步骤(4-4)的结果集列表r中的结果个数y进行比较,若x大于或等于y,则进行步骤(4-6),若x小于y,则查询结束;
(4-6)根据用户查询请求中的翻页信息,若存在翻页信息,则返回步骤(4-3),若不存在翻页信息,则查询结束。
本发明提出的键值库辅助索引的构建与管理方法,其特点和优点是:键值库已经在海量数据的处理上应用很广泛,但要查询键值库中一列复合条件的行比较困难,一般是全表扫描才能得到,这在全表非常大的时候性能非常差。本发明在于解决键值库中如何高效和快速查询某个列值符合指定条件的行的难题,即构建辅助索引来避免全表扫描。本发明针对已有技术中的以下问题,提出新的键值库辅助索引的构建与管理方法:
(1)支持亿级数据量的索引。本发明是面向海量数据分布式存储的键值库场景,所以数据量会很大,亿级以上。
(2)高性能的范围查询,这也是构建辅助索引的目的。
(3)数据的低冗余(存储所占的数据量),即索引本身带来额外的数据量要小,不能超过被索引的数据。
(4)索引更新时数据的一致性能有效保证。
其中性能与数据冗余,一致性是相互制约的关系。如果选择高性能的范围检索,必然需要靠冗余索引数据来提升性能,而数据冗余会导致更新数据时难以实现一致性,特别是分布式场景下。如果不要求高效地范围检索,那么可以不考虑产生冗余数据,一致性问题也可以间接避免。本发明的键值库辅助索引的构建与管理方法,基于键值库的列族,构建复合列名来进行索引,所以索引的大部分操作都是列操作,速度很快,并较好地解决了已有技术中的上述问题。
具体实施方式
本发明提出的键值库辅助索引的构建与管理方法,包括以下步骤:
(1)设键值库中没有待索引的数据,用户对键值库系统进行初始化,并建立用于数据索引的列族和列,向数据索引的列族和列中插入待索引数据;这样后续辅助索引才好去索引并查询;
(2)在键值库中建立辅助索引列族,并初始化,其过程如下:
(2-1)在键值库中创建存储索引信息表;
(2-2)向上述索引信息表中添加两个列族,两个列族分别为索引信息和索引项,并设定列族列名的比较类型为复合列名类型;
复合列名是由多个字段拼接而成的列名,每个字段都是可比较的,并带有范围标记来表示和这个字段的大小关系;列名在键值库中是有序的,所以本发明利用这点构建复合列名来存储索引信息以获取高性能的查询;
(2-3)设定上述索引信息列族的复合列名格式为:{索引值类型编码字段,索引值字段,行键字段,全局唯一标识字段},与该索引信息列族的复合列名相对应的列值为空,行键为索引名;
(2-4)设定上述索引项列族的复合列名格式为:{索引列名字段,全局唯一标识字段},与该索引项的复合列名相对应的列值为复合式的{索引值字段},行键为与待索引的数据所在行相对应的行键;
(3)进行键值库辅助索引,主要负责索引的构建和增量更新,包括以下步骤:
(3-1)从键值库中获取构建时间戳、当前键值库的唯一标识和构建索引名;时间戳是标识本次更新数据版本,键值库以时间戳来表示数据的新旧程度并总用新的数据覆盖旧的数据。全局唯一标识则是控制并发冲突的一个标识,并应用到索引项列族和索引信息列族的复合列名里,这样并发的时候不用锁来同步,因为每个并发操作都会有不同的全局唯一标识;
(3-2)设定一个构建键值库辅助索引过程进行批处理操作的操作列表m,设定索引信息列族的行键为索引名,因为索引的更新涉及到很多键值的更新,所以把它们都封装到一个批处理操作方便控制,也可以保证所有更新操作使用相同的时间戳。另外键值库支持批处理操作多次提交,因为是幂等操作。
(3-3)根据待索引数据,从索引项列族中获取一个与索引信息列族中与待索引数据相对应的旧索引的信息n,该信息n包括行键、索引列的值和全局唯一标识,并用信息n更新索引信息列族中的数据,并将该更新操作添加到操作列表m中,同时删除索引项列族中中的旧索引信息,并将该删除操作添加到操作列表m中;
(3-4)对步骤(1)的数据索引进行判断,若数据索引的列族中待索引数据的值不为空,则在上述索引项列族和索引信息列族中添加一个新值,并将该添加操作添加到操作列表m中;
(3-5)向键值库提交操作列表m,完成辅助索引的更新;
(4)对键值库辅助索引进行管理,包括以下步骤:
(4-1)根据用户的查询请求,从索引信息列族中获取与待索引数据相对应的索引名,设定一个结果集列表r;索引名是索引信息列族中的一个行键,结果集里存放的则是符合查询条件的源数据列族的行键。
(4-2)根据用户的查询请求中指定的索引信息列族中复合列名的最小值和最大值,从索引信息列族中得到查询范围;因为查询条件有可能是大于,小于或等于,所以需要设置查询时列名的范围,在复合列名设置相应的范围标记;
(4-3)根据上述查询范围,对索引信息列族进行查询,得到查询数据;键值库直接支持这种查询,所以速度很快。
(4-4)从查询得到的数据中提取行键,将该行键添加到结果集列表r中;返回的复合列名列表并不是想要的结果,所以还需进行拆解得到对应的行键才能添加到结果集。
(4-5)将上述表示查询范围的最小值和最大值之间的差值x与步骤(4-4)的结果集列表r中的结果个数y进行比较,若x大于或等于y,则进行步骤(4-6),若x小于y,则查询结束;
(4-6)根据用户查询请求中的翻页信息,若存在翻页信息,则返回步骤(4-3),若不存在翻页信息,则查询结束。
Claims (1)
1.一种键值库辅助索引的构建与管理方法,其特征在于该方法包括以下步骤:
(1)设定键值库中没有待索引的数据,用户对键值库系统进行初始化,并建立用于数据索引的列族和列,向数据索引的列族和列中插入待索引数据;
(2)在键值库中建立辅助索引列族,并初始化,其过程如下:
(2-1)在键值库中创建存储索引信息表;
(2-2)向上述索引信息表中添加两个列族,两个列族分别为索引信息列族和索引项列族,并设定列族列名的比较类型为复合列名类型;
(2-3)设定上述索引信息列族的复合列名格式为:{索引值类型编码字段,索引值字段,行键字段,全局唯一标识字段},与该索引信息列族的复合列名相对应的列值为空,行键为索引名;
(2-4)设定上述索引项列族的复合列名格式为:{索引列名字段,全局唯一标识字段},与该索引项的复合列名相对应的列值为复合式的{索引值字段},行键为与待索引的数据所在行相对应的行键;
(3)进行键值库辅助索引,包括以下步骤:
(3-1)从键值库中获取构建时间戳、当前键值库的唯一标识和构建索引名;
(3-2)设定一个构建键值库辅助索引过程进行批处理操作的操作列表m,设定索引信息列族的行键为索引名;
(3-3)根据待索引数据,从索引项列族中获取一个与索引信息列族中与待索引数据相对应的旧索引的信息n,该信息n包括行键、索引列的值和全局唯一标识,并用信息n更新索引信息列族中的数据,并将该更新操作添加到操作列表m中,同时删除索引项列族中的旧索引信息,并将该删除操作添加到操作列表m中;
(3-4)对步骤(1)的数据索引进行判断,若数据索引的列族中待索引数据的值不为空,则在上述索引项列族和索引信息列族中添加一个新值,并将该添加操作添加到操作列表m中;
(3-5)向键值库提交操作列表m,完成辅助索引的更新;
(4)对键值库辅助索引进行管理,包括以下步骤:
(4-1)根据用户的查询请求,从索引信息列族中获取与待索引数据相对应的索引名,设定一个结果集列表r;
(4-2)根据用户的查询请求中指定的索引信息列族中复合列名的最小值和最大值,从索引信息列族中得到查询范围;
(4-3)根据上述查询范围,对索引信息列族进行查询,得到查询数据;
(4-4)从查询得到的数据中提取行键,将该行键添加到结果集列表r中;
(4-5)将上述表示查询范围的最小值和最大值之间的差值x与步骤(4-4)的结果集列表r中的结果个数y进行比较,若x大于或等于y,则进行步骤(4-6),若x小于y,则查询结束;
(4-6)根据用户查询请求中的翻页信息,若存在翻页信息,则返回步骤(4-3),若不存在翻页信息,则查询结束。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210191624.7A CN102750356B (zh) | 2012-06-11 | 2012-06-11 | 一种键值库辅助索引的构建与管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210191624.7A CN102750356B (zh) | 2012-06-11 | 2012-06-11 | 一种键值库辅助索引的构建与管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102750356A CN102750356A (zh) | 2012-10-24 |
CN102750356B true CN102750356B (zh) | 2014-08-20 |
Family
ID=47030541
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210191624.7A Active CN102750356B (zh) | 2012-06-11 | 2012-06-11 | 一种键值库辅助索引的构建与管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102750356B (zh) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103810224B (zh) * | 2012-11-15 | 2017-04-12 | 阿里巴巴集团控股有限公司 | 信息持久化和查询方法及装置 |
CN102915382A (zh) * | 2012-11-21 | 2013-02-06 | 亚信联创科技(中国)有限公司 | 一种基于索引的数据库的数据查询方法和装置 |
WO2014082198A1 (en) * | 2012-11-27 | 2014-06-05 | Nokia Siemens Networks Oy | Multiple fields parallel query method and corresponding storage organization |
CN104111955B (zh) * | 2013-04-22 | 2018-10-23 | 中国银联股份有限公司 | 一种面向Hbase数据库的复合查询方法 |
CN103761167B (zh) * | 2014-01-23 | 2017-04-05 | 浪潮(北京)电子信息产业有限公司 | 一种实现数据中心备份的方法和装置 |
CN105488043B (zh) * | 2014-09-15 | 2019-03-26 | 南京理工大学 | 基于Key-Value数据块的数据查询方法及系统 |
CN104850572B (zh) * | 2014-11-18 | 2018-11-23 | 中兴通讯股份有限公司 | HBase非主键索引构建与查询方法及其系统 |
CN105589910A (zh) * | 2014-12-31 | 2016-05-18 | 中国银联股份有限公司 | 基于HBase的海量交易数据检索及系统 |
CN105989076B (zh) * | 2015-02-10 | 2019-05-07 | 腾讯科技(深圳)有限公司 | 一种数据统计方法以及装置 |
CN106844374B (zh) * | 2015-12-04 | 2020-04-03 | 北京四维图新科技股份有限公司 | 一种存储、检索照片的方法及装置 |
CN105574128A (zh) * | 2015-12-12 | 2016-05-11 | 天津南大通用数据技术股份有限公司 | 商业智能系统数据完成复杂运算的方法 |
CN105608126A (zh) * | 2015-12-16 | 2016-05-25 | 成都创智云科技股份有限公司 | 一种建立海量数据库二级索引的方法和装置 |
CN107391666B (zh) * | 2017-07-20 | 2020-09-29 | 上海达梦数据库有限公司 | 一种复合索引键值的生成方法及装置 |
CN108182209A (zh) * | 2017-12-18 | 2018-06-19 | 中国移动通信集团广东有限公司 | 一种数据索引方法、及设备 |
CN108776665B (zh) * | 2018-04-20 | 2021-01-12 | 北京奇艺世纪科技有限公司 | 一种数据处理方法及装置 |
CN110851506B (zh) * | 2018-07-25 | 2021-12-03 | 上海柯林布瑞信息技术有限公司 | 临床大数据的搜索方法及装置、存储介质、服务器 |
CN109545000B (zh) * | 2018-11-09 | 2021-09-24 | 中国航空无线电电子研究所 | 前视地形告警边界计算方法 |
CN110688386A (zh) * | 2019-09-29 | 2020-01-14 | 浙江大学 | 面向新型供电轨道交通大数据的分布式列族数据索引方法 |
CN113190548A (zh) * | 2020-12-24 | 2021-07-30 | 武汉烽火众智数字技术有限责任公司 | 一种基于hbase的档案库的设计方法 |
CN113946575B (zh) * | 2021-09-13 | 2022-10-14 | 中国电子科技集团公司第十五研究所 | 时空轨迹数据处理方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856997B2 (en) * | 2000-10-27 | 2005-02-15 | Lg Electronics Inc. | Apparatus and method for providing file structure for multimedia streaming service |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
-
2012
- 2012-06-11 CN CN201210191624.7A patent/CN102750356B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856997B2 (en) * | 2000-10-27 | 2005-02-15 | Lg Electronics Inc. | Apparatus and method for providing file structure for multimedia streaming service |
CN101162469A (zh) * | 2007-11-09 | 2008-04-16 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
CN102332030A (zh) * | 2011-10-17 | 2012-01-25 | 中国科学院计算技术研究所 | 用于分布式键-值存储系统的数据存储、管理和查询方法及系统 |
Non-Patent Citations (2)
Title |
---|
一种基于对象关系模型的时空数据库管理系统体系结构;金培权 等;《小型微型计算机系统》;20040131;第25卷(第1期);108-111 * |
金培权 等.一种基于对象关系模型的时空数据库管理系统体系结构.《小型微型计算机系统》.2004,第25卷(第1期),108-111. |
Also Published As
Publication number | Publication date |
---|---|
CN102750356A (zh) | 2012-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102750356B (zh) | 一种键值库辅助索引的构建与管理方法 | |
US11468103B2 (en) | Relational modeler and renderer for non-relational data | |
US5878409A (en) | Method and apparatus for implementing partial declustering in a parallel database system | |
US9336263B2 (en) | Data loading systems and methods | |
EP2605158B1 (en) | Mixed join of row and column database tables in native orientation | |
US7756889B2 (en) | Partitioning of nested tables | |
US9047330B2 (en) | Index compression in databases | |
US8380702B2 (en) | Loading an index with minimal effect on availability of applications using the corresponding table | |
CN111382226A (zh) | 一种数据库查询检索方法、装置和电子设备 | |
CN106471501B (zh) | 数据查询的方法、数据对象的存储方法和数据系统 | |
CN103440245A (zh) | 数据库系统的行列混合存储方法 | |
CN102253980A (zh) | 数据处理方法及数据处理系统 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
Tao et al. | Clustering massive small data for IOT | |
CN106484694B (zh) | 基于分布式数据库的全文搜索方法及系统 | |
US10055442B2 (en) | Efficient updates in non-clustered column stores | |
CN101963993B (zh) | 一种数据库单表记录快速查找的方法 | |
CN102768672B (zh) | 一种磁盘空间管理方法和装置 | |
CN112131214A (zh) | 数据写入、数据查询的方法、系统、设备和存储介质 | |
AU2004244168B2 (en) | Undrop objects and dependent objects in a database system | |
CN112417225A (zh) | 一种多源异构数据的联合查询方法与系统 | |
CN101504660A (zh) | 一种纯扩展标记语言数据库的查询管理方法及其系统 | |
US9177008B1 (en) | Positioned updates in a distributed shared-nothing data store | |
EP4030312A1 (en) | Method and apparatus for querying data, computing device, and storage medium | |
JPH09305622A (ja) | 文書検索機能を有するデータベース管理方法およびシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |