论文部分内容阅读
随着Web2.0时代的蓬勃发展和移动互联网的广泛普及,互联网上数据呈现爆炸增长的趋势。伴随着数据的量级越来越大,数据的存储成为了很多业务首先需要解决的问题。分布式数据库因为其优秀的水平扩展能力,相比于传统的关系型数据库更加适合海量数据存储的业务场景。HBase是Apache开源的分布式列式存储数据库,适合海量数据的存储和高性能的读写操作。但是HBase本身存在一些不足,其中最主要的是缺乏二级索引的支持,这使得HBase基于非行键列的查询只能使用过滤器配合全表扫描来实现,在大数据量的场景下性能较差。虽然已经有相关工作研究了 HBase的二级索引,但是大部分在功能上不够完善或者不兼容较新的HBase。此外,HBase默认创建表时只有单个HRegion,在高并发的读写下可能出现单点过热的问题。因此有必要深入研究并实现HBase的二级索引功能以及防止单点过热的方案。本文在对HBase存储结构、系统结构以及数据库二级索引结构深入研究的基础上,提出了针对HBase当前不足的优化方案。本文主要工作有:1、结合HBase的存储结构、关系型数据库二级索引结构和索引查询的最左前缀匹配原则,提出了索引列聚集的二级索引结构,通过将索引列值聚集在对应索引表的行键上来实现二级索引的功能。此外,提出的二级索引结构支持联合索引并且处理能处理索引列值为空的特殊情况。2、提出了联合索引与多条件查询场景下的最优索引命中计算算法,并通过最优索引命中的结果加快了数据的剪枝,减小了网络1O的开销。在此基础上平台支持基于二级索引的查询、条件更新、条件删除操作。3、结合HBase存储结构,提出了基于行键类型的表预拆分算法。系统在创建表时根据表的行键类型将表拆分成多个子HRegion,并分布在不同集群节点上,避免单点过热情况的发生。最后,本文通过构建测试,与原生的HBase进行性能比较。结果表明新的系统通过二级索引功能大大提高了数据查询、更新、删除的效率,通过预拆分算法避免了单点过热的问题,从整体上提高了 HBase数据存取的性能。