论文部分内容阅读
近年来,随着电子商务、社交网络以及数字城市等互联网应用的大规模发展,互联网数据正在急剧膨胀,目前企业在做出重要决策时都需通过有效的数据分析,比如通过分析用户数据得出用户的消费习惯。如何能从海量数据中得出对企业有效的信息成为企业的重要竞争力之一。目前进行范围查询时主要通过建立基于排序的索引,比如B+树或DST,但当系统的节点数及单个节点的数据量都骤增时,传统的数据索引会变得非常庞大,而且查询一般会局限于全局索引的速度,影响查询效率。此外还存在一种适合范围查询的索引结构P-Ring,它是一种基于具体数值的环形排序索引,每个节点保存一个从本节点值到其后继节点值之间的数值范围,并采用分级路由,其查询的结果为具体的数值而非文件的索引信息。本文主要基于大数据环境对P-Ring进行了改进并引入MapReduce和B+树,建立了双层索引。本文的查询环境为数据以文件为单位存储,范围查询的过程分为定位文件和查询数据。本文对P-Ring主要作了如下改进:1)在每个节点上增加了一个索引信息表名为infoTable,并对每个节点保存的数值范围进行分割,根据每次存入的数据将原来的范围分为若干个子范围。infoTable中保存此节点值到其后继节点值之间的范围所对应的文件的索引信息,包括文件名、文件地址。这个表的第一行为若干个子范围,即每次存储时将目前存在的范围拆分为以当前值为界限的子范围,第二行为每个子范围对应的文件,这种结构便于定位到具体的文件,提高查询效率。2)对路由表进行了改进,建立了双向路由,即基于后继节点和前驱节点的路由,同样采用多级路由机制,每个节点保存一个多层的双向路由表。理论上降低了原来P-Ring进行查找时节点的跳数。本文中的范围查询算法利用MapReduce框架组织系统中的各个节点,节点间的逻辑关系为改进后的P-Ring,这个结构保存在Master节点中。此外为每个文件建立一个B+树索引。每次查询时首先将查询条件发送给Master,进行基于P-Ring的索引,找到符合条件的文件,然后将这些文件的索引信息发送给Map节点,由它们进行基于B+树的索引,此过程为高度并行。文章的最后对本文中的算法进行了实验验证,在由6个节点搭建的平台上进行了实验,选取了三个性能指标即最大跳数,平均跳数与响应时间作为衡量算法的标准。实验结果表明此算法可行,且性能不受查询范围长度的影响。