论文部分内容阅读
在信息时代,用户产生内容、物联网、定位系统等技术和应用加快了数据产生的速度。为了解决海量数据的挑战,学术界和工业界提出了一系列新型的NoSQL数据库,并进行了广泛的应用。分布式顺序表是一类常见的NoSQL数据库,支持对主键的点查询和区间查询,但是非主键查询性能较低。 在分布式顺序表上进行非主键查询是一项常见的需求,比如奇虎360进行基于DNS的网络行为特征分析时,会使用源IP作为查询条件;在腾讯的广告系统中,会使用广告主编号作为主键前缀以提高基于广告主查询的性能,但对于统计人员而言,查询“某段时间内点击量大于1000的广告”会成为非主键的查询。 为了提高非主键查询的性能,学术界和工业界提出和实现了许多索引技术,但它们存在3个问题:缺乏分析方法、部分应用场景缺乏合适的索引技术、缺乏度量和评价工具。这提高了索引技术选型、优化和设计的难度和成本。 为此,本文进行了如下工作以解决上述3个问题: (1)针对现有分析方法的缺陷,提出了索引分类方法和分析模型。依据索引列到索引主键映射、索引组织结构、索引粒度、索引分布、建立索引的时间和索引持久化这六个维度,对来自学术界和工业界、具有不同背景和目的的20余个代表性索引技术进行了刻画和分析,并指出了潜在的、有价值的工作。提出QSModel,使用索引要素量化低并发条件下的查询时间和存储开销,方便索引技术的理论分析。使用来自腾讯的实际工作负载测试QSModel对4种代表性索引技术的量化效果显示,QSModel对索引存储开销比例的最大误差是9.8%,对单维索引查询时间的最大误差为24.2%,对MD-HBase在结果集较大时的误差不超过5%。 (2)针对应用场景问题,提出了新的索引技术。本文提出局部聚簇索引方法LCIndex解决同时满足高插入性能和多维区间查询性能的问题,提出局部多维二级索引方法LMSIndex解决同时满足高插入性能、低存储开销、支持数据更新和删除以及较高多维区间查询性能的问题。LCIndex和LMSIndex都在HBase上实现了原型系统,实验结果表明,LCIndex的插入吞吐量为CCIndex的422%,IRIndex的80%,多维区间查询吞吐量是CCIndex的43.4%到54.6%,IRIndex的183%到407%,存储开销是无索引的HBase的2.31倍。LMSIndex的插入吞吐量是无索引HBase的99.2%,额外存储开销是12%,多维区间查询吞吐量是其1.8~4.06倍。与其他索引技术相比,LMSIndex有最优的插入性能和最低的存储开销,虽然多维区间查询性能不如CCIndex和LCIndex,但与其他二级索引相比有明显的优势。 (3)针对度量和评价的问题,构建分布式顺序表的索引技术基准测试程序DTIB,方便用户使用DITB进行索引技术实际性能的比较。DTIB集成了5种索引技术,并且提供了统一接口,用户可以以此为基础,实现新的索引技术并与已经集成的索引技术进行比较。DTIB还实现了数据加载接口,方便用户使用自身数据集。 LCIndex、LMSIndex和DITB都已经开源,LCIndex基于HBase0.94.16版本的开源工程链接为https://github.com/fengchen8086/LCIndex-HBase-0.94.16; DITB基于HBase1.2.1的开源工程链接为https://github.com/fengchen8086/ditb,并集成了LCIndex和LMSIndex的代码。