一种适合分析型应用的静态B+树索引方法技术

技术编号:10877861 阅读:137 留言:0更新日期:2015-01-08 00:12
本发明专利技术提供了一种适合分析型应用的静态B+树索引方法,主要包括:数据排序、创建静态B+树索引和索引维护步骤。数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法。根据云计算主从体系结构的特点,结合在云环境下列式存储的特点,主键采用Key-Value式的散列索引,这样不仅可以获得很高的检索效率,而且可以保持负载均衡;主键之外的其他属性列将采用改进的B+树索引。通过本发明专利技术提出的方法,可以解决查询非主键属性时间复杂度高的问题,同时还能支持非主键属性的范围查询。

【技术实现步骤摘要】
一种适合分析型应用的静态B+树索引方法
本专利技术涉及一种静态B+树的云计算列式存储索引方法,属于云计算领域。
技术介绍
2008年中国网民数量达到2.53亿,而2008年之后移动互联网飞速发展,到2013年9月中国的网民数已经达到8.28亿。移动互联网正逐步改变着人类的生活方式,使社交网络、网络视频、垂直电商走进每一个现代人的生活,人们通过各种终端不断地接收数据,同时也在为整个网络注入新的数据,使互联网数据不断膨胀。大数据的爆炸式增长在大容量、多样性和高增速方面,全面考验着现代企业的数据处理和分析能力;同时,也为企业带来了获取更丰富、更深入和更准确地洞察市场行为的大量机会。 大数据的爆炸式增长,使得传统的数据分析技术已经无法满足海量数据分析的需求。云计算被提出之后,以其超强的分布式并行计算能力和超海量的数据存储能力,赢得了全世界的关注,也给海量数据分析带来了希望。云环境不同于传统的计算机环境,它现有的数据管理功能比较单一,仅支持针对主属性的查询,也没有严格的一致性。然而大数据分析,需要频繁的查询非主属性,这类请求是无法通过现有索引技术完成的,需要为之开发高效的辅助索引机制。 树型索引以其高效的分裂、聚合的特点,很好的降低了树的高度,缩短了索引的查找路径,在现有数据库领域广泛应用。研究者们为了提高B树的性能,提出过很多B树的改进策略,有的方法通过键值压缩来实现,也有的通过指针压缩来实现。经过多年的发展,已经被众多数据库管理系统采用。 已经有研究者将其引入到云环境下,文献提出的索引结构使用了二级索引结构,先是用一种结构化网络来组织计算结点,在存储数据的数据服务器上建立局部索引,在控制服务器中建立全局索引,根据查询模式提出了一个自适应算法来选择公布的B+树。当服务器收到查询请求时,通过服务器端的全局索引定位到数据所在服务器的位置,然后到数据服务器做进一步的查询。 有一种基于单维度数据的分布式可扩展B-tree索引结构,将B_tree以分布式方式存储在各个服务器上,而且客户端保留所有这些节点索引的副本,最后使用事务性访问来简化高级别的应用,通过树节点的在线迁移技术来确保负载均衡。该索引结构能够有效地支持范围查询,且其系统有良好的可扩展性、成本低、容错性好和方便管理。但是其不足在于:第一、每个客户端机器都需复制所有内部节点的副本,这会造成很大的内存消耗;第二、当更新遵循偏态分布时,系统的可扩展性降低,会引起内部节点更多的分裂和合并;第三、将所有的节点建立成一棵分布式B树,需要消耗不少内存和计算资源,且维护较困难。
技术实现思路
技术问题:本专利技术的目的是提供一种适合分析型应用的静态B+树索引技术。该索引技术根据云计算主从体系结构的特点,结合在云环境下列式存储的特点,主键依然采用Key-Value式的散列索引,这样不仅可以获得很高的检索效率,而且可以保持负载均衡;主键之外的其他属性列将采用改进的B+树索引。通过本专利技术提出的方法,可以解决查询非主键属性时间复杂度高的问题,同时还能支持非主键属性的范围查询。 技术方案:数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法,其特征在于:1)数据排序:采用合并排序,将有η条记录的列分批读入内存,采用置换选择的方法生成有序的子文件,然后采用合并的方法将这些初始游程逐趟合并成一个有序文件;2)创建静态B+树索引:在列值己进行排序,而且相同列值的前提下行号也是有序的情况下,创建静态B+树前需要对静态B+树描述符进行初始化,初始化只是对静态B+树的描述信息进行赋值;初始化完成后就可以创建静态B+树了 ;3)索引维护:当需要批量的增加新数据时,数据会随机的存储在已经被使用的数据块之后,并不会破环原有数据的顺序,但是索引不会部分更新,而是全部重新建立。 【附图说明】 图1是本专利技术的系统结构图。 图2是本专利技术的单列静态B+树的创建流程图。 图3是本专利技术的定长静态B+树索引的创建流程图a。 图4是本专利技术的定长静态B+树索引的创建流程图b。 图5是本专利技术的变长静态B+树索引的创建流程图a。 图6是本专利技术的变长静态B+树索引的创建流程图b。 【具体实施方式】 下面结合附图与【具体实施方式】对本专利技术作进一步详细描述。 数据都是随机存放的,但是每一行都会有一个行关键字,聚集索引就是根据行关键字建立的Key-Value索引。当用户想要为某一列建立索引时,首先要对该列所有数据进行排序,排序之后,依次把结果存到静态B+树的索引页中,并用双向链表连接,然后依次取各索引页中第一个关键字作为上一层的索引项,建立内节点,依次迭代,直至根结点。 1、数据排序本专利技术将用合并排序对列值排序,该方法由两个独立的阶段组成:预处理和合并排序。在预处理阶段,将有η条记录的列分批读入内存,采用置换选择的方法生成有序的子文件。然后采用合并的方法将这些初始游程逐趟合并成一个有序文件。 设本地内存能过容纳P个记录,整个预处理分为以下几步:预处理算法:输入:列数据文件输出:初始游程算法步骤: I)从输入文件中输入P个记录,建立大小为P的堆。 2)为第一个初始游程选择一个适当的磁盘文件作为输出文件。 3)输出当前堆的堆顶记录到选定的输出文件。 4)从输入文件中输入下一个记录。若该记录的关键字值不小于刚输出的关键字值,则由它取代堆顶记录,并调整当前堆。若该记录的关键字值小于刚输出的关键字值,则由当前堆的堆底记录取代堆顶记录,当前堆的体积减少。新输入的记录将存在当前堆的原堆底记录的位置上,成为新堆的一个记录。这时,如果新堆的记录个数超过P/2时,应着手调整新堆;如果新堆中已有P个记录,表示当前堆已经输出完毕,当前的初始游程结束,应当开始创建下一个初始游程,因此必须另为新堆选择一个磁盘文件作为输出文件。 5)重复4,直到输入文件输入完毕。 6)输出当前堆的剩余记录,边输出边调整。 7)将内存中的新堆作为最后一个初始游程输出。 在执行上述算法后,生成了平均长度为2P的初始游程。可以采用多路合并的方法将第一阶段生成的子文件进行合并。由预处理生成的初始游程的长度可能不是相等的,所以合并的方案不同,所得的合并树不同,树的带权路径长度也不同。合并树的带权路径长度正好是合并所需的访问外存的次数。因此,为了求得带权路径长度最小的合并树,将对长度不一的m个初始游程以K叉哈夫曼树的方式进行K路合并,可使得合并过程中对外存的读写次数最少。 2、创建静态B+树索引假设在创建静态B+树之前,列值己进行排序,而且相同列值的前提下行号也是有序的。创建静态B+树前需要对静态B+树描述符进行初始化,初始化只是对静态B+树的描述信息进行赋值,需要赋值的内容包括如下:I)静态B+树的类型,包括定/变长。 2)列的情况,包括列名、列类型、列长,如果列是变长,则指定最大长度。 3)为根块分配空间。 4)设置B+树的level值为O。 初始化后,就可以创建静态B+树了。单列静态B+树的创建情况如图2所示。 [0031 ] 从流程中可以看出,根据是否是定长列创建静态B+树的过程略有不同。如果列是定长的,则创建静态B+树的效率比较高;如果列是变本文档来自技高网
...

【技术保护点】
一种适合分析型应用的静态B+树索引方法,包括有数据排序、创建索引和维护索引三个部分;数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法,其特征在于:1) 数据排序:采用合并排序,将有n条记录的列分批读入内存,采用置换选择的方法生成有序的子文件,然后采用合并的方法将这些初始游程逐趟合并成一个有序文件;2) 创建静态B+树索引:在列值己进行排序,而且相同列值的前提下行号也是有序的情况下,创建静态B+树前需要对静态B+树描述符进行初始化, 初始化只是对静态B+树的描述信息进行赋值;初始化完成后就可以创建静态B+树了;3)索引维护:当需要批量的增加新数据时,数据会随机的存储在已经被使用的数据块之后,并不会破环原有数据的顺序,但是索引不会部分更新,而是全部重新建立。

【技术特征摘要】
1.一种适合分析型应用的静态B+树索引方法,包括有数据排序、创建索引和维护索引三个部分;数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法,其特征在于: 1)数据排序:采用合并排序,将有η条记录的列分批读入内存,采用置换选择的方法生成有序的子文件,然后采用合并的方法将这些初始游程逐趟合并成一个有序文件; 2)创...

【专利技术属性】
技术研发人员:万明祥任春韶张登银
申请(专利权)人:南京邮电大学
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1