基于位图技术创建HBASE二级索引的实践
2021-07-19晏学义
王 飞 张 明 晏学义
中国联合网络通信有限公司济南软件研究院 济南 250100
引言
现代社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物。数据的增长急需数据库存储容量的扩充,现有的关系型数据库很难在硬件上满足数据疯狂增长的需要[1]。
Apache HBASE是一个高性能、分布式、面向列、可伸缩的开源分布式NoSQL数据库,它不同于一般的关系型数据库,是一个适合于非结构化数据存储的数据库[2]。HBASE是基于ROWKEY(行键)的有序存储,在明确ROWKEY的条件下HBASE支持毫秒级的快速检索[3]。然而,随着HBASE的应用的不断深入,单纯通过ROWKEY检索数据的方式不再满足应用的需求。
对于多字段的复杂检索,如果无法通过ROWKEY检索,则需对HBASE全表数据进行扫描,消耗大量时间,导致查询效率极低。为此,业内提出了建立HBASE二级索引的方案以提高多字段信息查询效率。
1 传统HBASE二级索引技术
目前,HBASE二级索引技术的方案中普遍存在两大特点。
1.1 以空间换时间
现有的HBASE二级索引方案都是根据查询常用属性创建索引表,这就意味着每个索引表都是建立在固定的属性条件下的。因此,当实际调取某种多样属性信息时,需要按照多重属性条件依次检索不同的索引表。从不同的索引表中获取的ROWKEY再进行比对去重,最终得到符合所有查询条件的ROWKEY,然后再根据筛选出的ROWKEY在HBASE表进行提取,以完成多重条件信息的查询。此种方案虽然避免了HBASE数据的全表扫描,节省了查询时间,但需要根据不同的条件或条件组合创建多索引表,同时HBASE中的ROWKEY将会重复保存在不同索引表中,这将需要使用较大的存储空间用以存放大量的索引表数据。……
