CN104268146A - 一种适合分析型应用的静态b+树索引方法 - Google Patents
一种适合分析型应用的静态b+树索引方法 Download PDFInfo
- Publication number
- CN104268146A CN104268146A CN201410413833.0A CN201410413833A CN104268146A CN 104268146 A CN104268146 A CN 104268146A CN 201410413833 A CN201410413833 A CN 201410413833A CN 104268146 A CN104268146 A CN 104268146A
- Authority
- CN
- China
- Prior art keywords
- index
- static
- data
- tree
- sets
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
Abstract
本发明提供了一种适合分析型应用的静态B+树索引方法,主要包括:数据排序、创建静态B+树索引和索引维护步骤。数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法。根据云计算主从体系结构的特点,结合在云环境下列式存储的特点,主键采用Key-Value式的散列索引,这样不仅可以获得很高的检索效率,而且可以保持负载均衡;主键之外的其他属性列将采用改进的B+树索引。通过本发明提出的方法,可以解决查询非主键属性时间复杂度高的问题,同时还能支持非主键属性的范围查询。
Description
技术领域
本发明涉及一种静态B+树的云计算列式存储索引方法,属于云计算领域。
背景技术
2008年中国网民数量达到2.53亿,而2008年之后移动互联网飞速发展,到2013年9月中国的网民数已经达到8.28亿。移动互联网正逐步改变着人类的生活方式,使社交网络、网络视频、垂直电商走进每一个现代人的生活,人们通过各种终端不断地接收数据,同时也在为整个网络注入新的数据,使互联网数据不断膨胀。大数据的爆炸式增长在大容量、多样性和高增速方面,全面考验着现代企业的数据处理和分析能力;同时,也为企业带来了获取更丰富、更深入和更准确地洞察市场行为的大量机会。
大数据的爆炸式增长,使得传统的数据分析技术已经无法满足海量数据分析的需求。云计算被提出之后,以其超强的分布式并行计算能力和超海量的数据存储能力,赢得了全世界的关注,也给海量数据分析带来了希望。云环境不同于传统的计算机环境,它现有的数据管理功能比较单一,仅支持针对主属性的查询,也没有严格的一致性。然而大数据分析,需要频繁的查询非主属性,这类请求是无法通过现有索引技术完成的,需要为之开发高效的辅助索引机制。
树型索引以其高效的分裂、聚合的特点,很好的降低了树的高度,缩短了索引的查找路径,在现有数据库领域广泛应用。研究者们为了提高B树的性能,提出过很多B树的改进策略,有的方法通过键值压缩来实现,也有的通过指针压缩来实现。经过多年的发展,已经被众多数据库管理系统采用。
已经有研究者将其引入到云环境下, 文献提出的索引结构使用了二级索引结构,先是用一种结构化网络来组织计算结点,在存储数据的数据服务器上建立局部索引,在控制服务器中建立全局索引,根据查询模式提出了一个自适应算法来选择公布的B+树。当服务器收到查询请求时,通过服务器端的全局索引定位到数据所在服务器的位置,然后到数据服务器做进一步的查询。
有一种基于单维度数据的分布式可扩展B-tree 索引结构,将 B-tree 以分布式方式存储在各个服务器上,而且客户端保留所有这些节点索引的副本,最后使用事务性访问来简化高级别的应用,通过树节点的在线迁移技术来确保负载均衡。该索引结构能够有效地支持范围查询,且其系统有良好的可扩展性、成本低、容错性好和方便管理。但是其不足在于:第一、每个客户端机器都需复制所有内部节点的副本,这会造成很大的内存消耗;第二、当更新遵循偏态分布时,系统的可扩展性降低,会引起内部节点更多的分裂和合并;第三、将所有的节点建立成一棵分布式B树,需要消耗不少内存和计算资源,且维护较困难。
发明内容
技术问题:本发明的目的是提供一种适合分析型应用的静态B+树索引技术。该索引技术根据云计算主从体系结构的特点,结合在云环境下列式存储的特点,主键依然采用Key-Value式的散列索引,这样不仅可以获得很高的检索效率,而且可以保持负载均衡;主键之外的其他属性列将采用改进的B+树索引。通过本发明提出的方法,可以解决查询非主键属性时间复杂度高的问题,同时还能支持非主键属性的范围查询。
技术方案:
数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法,
其特征在于:
1) 数据排序:采用合并排序,将有n条记录的列分批读入内存,采用置换选择的方法生成有序的子文件,然后采用合并的方法将这些初始游程逐趟合并成一个有序文件;
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、数据排序
本发明将用合并排序对列值排序,该方法由两个独立的阶段组成:预处理和合并排序。在预处理阶段,将有n条记录的列分批读入内存,采用置换选择的方法生成有序的子文件。然后采用合并的方法将这些初始游程逐趟合并成一个有序文件。
设本地内存能过容纳P个记录,整个预处理分为以下几步:
预处理算法:
输入:列数据文件
输出:初始游程
算法步骤:
1) 从输入文件中输入P个记录,建立大小为P的堆。
2) 为第一个初始游程选择一个适当的磁盘文件作为输出文件。
3) 输出当前堆的堆顶记录到选定的输出文件。
4) 从输入文件中输入下一个记录。若该记录的关键字值不小于刚输出的关键字值,则由它取代堆顶记录,并调整当前堆。若该记录的关键字值小于刚输出的关键字值,则由当前堆的堆底记录取代堆顶记录,当前堆的体积减少。新输入的记录将存在当前堆的原堆底记录的位置上,成为新堆的一个记录。这时,如果新堆的记录个数超过P/2时,应着手调整新堆;如果新堆中已有P个记录,表示当前堆已经输出完毕,当前的初始游程结束,应当开始创建下一个初始游程,因此必须另为新堆选择一个磁盘文件作为输出文件。
5) 重复4,直到输入文件输入完毕。
6) 输出当前堆的剩余记录,边输出边调整。
7) 将内存中的新堆作为最后一个初始游程输出。
在执行上述算法后,生成了平均长度为2P的初始游程。可以采用多路合并的方法将第一阶段生成的子文件进行合并。由预处理生成的初始游程的长度可能不是相等的,所以合并的方案不同,所得的合并树不同,树的带权路径长度也不同。合并树的带权路径长度正好是合并所需的访问外存的次数。因此,为了求得带权路径长度最小的合并树,将对长度不一的m个初始游程以K叉哈夫曼树的方式进行K路合并,可使得合并过程中对外存的读写次数最少。
2、创建静态B+树索引
假设在创建静态B+树之前,列值己进行排序,而且相同列值的前提下行号也是有序的。创建静态B+树前需要对静态B+树描述符进行初始化, 初始化只是对静态B+树的描述信息进行赋值,需要赋值的内容包括如下:
1) 静态B+树的类型,包括定/变长。
2) 列的情况,包括列名、列类型、列长,如果列是变长,则指定最大长度。
3) 为根块分配空间。
4) 设置B+树的level值为0。
初始化后,就可以创建静态B+树了。单列静态B+树的创建情况如图2所示。
从流程中可以看出,根据是否是定长列创建静态B+树的过程略有不同。如果列是定长的,则创建静态B+树的效率比较高;如果列是变长的,则创建静态B+树的效率相对较低,因为它要一边填充索引块,一边判断索引块的剩余空间。
下面将分别介绍定长静态B+树和非定长静态B+树的创建。定长静态B+树索引的创建过程如下面图3、4所示。
静态B+树的创建是一个自底向上的迭代过程。图3描述的是静态B+树叶索引项的建立过程,首先用排序后的前TN个数据填满第一个叶子数据块,因为列值是定长的,所以每个索引块内要存放的索引数量TN=索引块的大小/索引项的大小。然后用接着的数据填充第二个叶子数据块,直到将一列中所有的数据都填入块中为止。在填充过程中,除了最后一块外,其它的块全部填满。接着用双向链表将构成的数据块按列值的顺序链接起来。
图4描述了内节点的建立过程,在流程中用到了三层循环。内层循环用于往新申请的索引块中填充索引项有列值的长度是一定的,故可以计算出每一个索引块中需要填充的索引项数,为索引块的大小除以索引项的大小。在内层循环里三个地方必须调用其他模块提供的函数:第一个是插入记录到块内的函数、第二个是从某一索引块中读取其第一个值的函数、第三个是获取下一个索引块块号的函数。
第二层循环没被执行一次,都会申请一块新索引块,且每层的第一个索引块的块号都将保存在静态B+树的描述符中。当索引项指针移到索引向量的末尾,那第二层循环结束,代表一层创建完成。在第二层循环过程中,需要调用分配索引块的函数,且在索引块分配的时候还需初始化索引块信息。
最外层循环是层级管理。若是在第二层循环结束后,创建索引块数量为1,那说明该块就是根索引块,保存完该块的信息后,结束整个循环,整个索引树创建完成。
变长静态B+树的构建算法跟定长静态B+树的构建算法基本相似,但是变长B+树要索引的列值是长度不一的,所以构建算法,略有不同,其构建流程详见图5、6。
图5描述了非定长静态B+树页索引块,图6描述了内索引块的创建过程。它和定长静态B+树的创建过程的最主要区别就在于索引项的填充。在定长静态B+树的创建过程中,可以根据索引项的大小算出每个索引块能容纳的索引数量,所以创建时指定一个循环变量即可,每次叠加即可。而在非定长静态B+树的创建过程中,每个索引项的大小是不定的,在每次装入新索引项之前,都必须先检测索引块的剩余空间够不够容纳下新索引项,如果不能容纳,必须先申请一个新的索引块,然后再装入之前的索引项。
3、索引维护
当需要批量的增加新数据时,数据会随机的存储在已经被使用的数据块之后,并不会破环原有数据的顺序,但是索引不会部分更新,而是全部重新建立。
Claims (1)
1.一种适合分析型应用的静态B+树索引方法,包括有数据排序、创建索引和维护索引三个部分;数据排序为创建索引前提,在数据有序情况下,创建静态B+树索引,在索引维护时,采用全部重建方法,其特征在于:
1) 数据排序:采用合并排序,将有n条记录的列分批读入内存,采用置换选择的方法生成有序的子文件,然后采用合并的方法将这些初始游程逐趟合并成一个有序文件;
2) 创建静态B+树索引:在列值己进行排序,而且相同列值的前提下行号也是有序的情况下,创建静态B+树前需要对静态B+树描述符进行初始化, 初始化只是对静态B+树的描述信息进行赋值;初始化完成后就可以创建静态B+树了;
3)索引维护:当需要批量的增加新数据时,数据会随机的存储在已经被使用的数据块之后,并不会破环原有数据的顺序,但是索引不会部分更新,而是全部重新建立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410413833.0A CN104268146A (zh) | 2014-08-21 | 2014-08-21 | 一种适合分析型应用的静态b+树索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410413833.0A CN104268146A (zh) | 2014-08-21 | 2014-08-21 | 一种适合分析型应用的静态b+树索引方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104268146A true CN104268146A (zh) | 2015-01-07 |
Family
ID=52159668
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410413833.0A Pending CN104268146A (zh) | 2014-08-21 | 2014-08-21 | 一种适合分析型应用的静态b+树索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104268146A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299113A (zh) * | 2015-06-08 | 2019-02-01 | 南京航空航天大学 | 具有存储感知的混合索引的范围查询方法 |
CN111782588A (zh) * | 2019-11-22 | 2020-10-16 | 西安宇视信息科技有限公司 | 一种文件读取方法、装置、设备和介质 |
CN111782659A (zh) * | 2020-07-10 | 2020-10-16 | 东北大学 | 数据库索引创建方法、装置、计算机设备和存储介质 |
CN112835896A (zh) * | 2021-01-27 | 2021-05-25 | 浙江中智达科技有限公司 | 一种实时数据库数据热点均衡方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015478A1 (en) * | 2000-11-30 | 2004-01-22 | Pauly Duncan Gunther | Database |
CN102609490A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储dwms的b+树索引方法 |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
-
2014
- 2014-08-21 CN CN201410413833.0A patent/CN104268146A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040015478A1 (en) * | 2000-11-30 | 2004-01-22 | Pauly Duncan Gunther | Database |
CN102609490A (zh) * | 2012-01-20 | 2012-07-25 | 东华大学 | 一种面向列存储dwms的b+树索引方法 |
CN103823865A (zh) * | 2014-02-25 | 2014-05-28 | 南京航空航天大学 | 一种数据库主存索引方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299113A (zh) * | 2015-06-08 | 2019-02-01 | 南京航空航天大学 | 具有存储感知的混合索引的范围查询方法 |
CN109299113B (zh) * | 2015-06-08 | 2021-03-30 | 南京航空航天大学 | 具有存储感知的混合索引的范围查询方法 |
CN111782588A (zh) * | 2019-11-22 | 2020-10-16 | 西安宇视信息科技有限公司 | 一种文件读取方法、装置、设备和介质 |
CN111782659A (zh) * | 2020-07-10 | 2020-10-16 | 东北大学 | 数据库索引创建方法、装置、计算机设备和存储介质 |
CN111782659B (zh) * | 2020-07-10 | 2023-10-17 | 东北大学 | 数据库索引创建方法、装置、计算机设备和存储介质 |
CN112835896A (zh) * | 2021-01-27 | 2021-05-25 | 浙江中智达科技有限公司 | 一种实时数据库数据热点均衡方法、装置、设备及介质 |
CN112835896B (zh) * | 2021-01-27 | 2022-07-05 | 浙江中智达科技有限公司 | 一种实时数据库数据热点均衡方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bugiotti et al. | Database design for NoSQL systems | |
CN105975587B (zh) | 一种高性能的内存数据库索引组织与访问方法 | |
CN108600321A (zh) | 一种基于分布式内存云的图数据存储方法和系统 | |
CN102915365A (zh) | 基于Hadoop的分布式搜索引擎构建方法 | |
CN104407879A (zh) | 一种电网时序大数据并行加载方法 | |
CN109299113A (zh) | 具有存储感知的混合索引的范围查询方法 | |
CN107491487A (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
CN104111936A (zh) | 数据查询方法和系统 | |
CN103678550A (zh) | 一种基于动态索引结构的海量数据实时查询方法 | |
CN106055622A (zh) | 一种数据搜索方法及系统 | |
CN104268146A (zh) | 一种适合分析型应用的静态b+树索引方法 | |
Liu et al. | Massive image data management using HBase and MapReduce | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
CN110175175A (zh) | 一种基于spark的分布式空间二级索引与范围查询算法 | |
CN102609490A (zh) | 一种面向列存储dwms的b+树索引方法 | |
CN110147377A (zh) | 大规模空间数据环境下基于二级索引的通用查询算法 | |
Du et al. | Spatio-temporal data index model of moving objects on fixed networks using hbase | |
Tao et al. | Clustering massive small data for IOT | |
US10289723B1 (en) | Distributed union all queries | |
CN103365923A (zh) | 用于评估数据库的分区方案的方法和装置 | |
Lwin et al. | Non-redundant dynamic fragment allocation with horizontal partition in Distributed Database System | |
Tsinaraki et al. | Big Data–a step change for SDI? | |
CN102955808A (zh) | 一种数据获取方法和分布式文件系统 | |
Yang et al. | Research on distributed Hilbert R tree spatial index based on BIRCH clustering | |
Mitreva et al. | NoSQL solutions to handle big data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150107 |