CN109471864A - 一种面向并行文件***双层索引方法和*** - Google Patents
一种面向并行文件***双层索引方法和*** Download PDFInfo
- Publication number
- CN109471864A CN109471864A CN201811377273.2A CN201811377273A CN109471864A CN 109471864 A CN109471864 A CN 109471864A CN 201811377273 A CN201811377273 A CN 201811377273A CN 109471864 A CN109471864 A CN 109471864A
- Authority
- CN
- China
- Prior art keywords
- piecemeal
- size
- data
- index
- selectvalue
- 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
- 238000000034 method Methods 0.000 title abstract description 26
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 13
- 238000005070 sampling Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 230000001172 regenerating effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000007667 floating Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向并行文件***双层索引方法和***,根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;在每个块内生成位图索引。被访问数据在数据文件中的布局特性可以由最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue衡量,将比值SelectValue与设定阈值进行比较,根据比较结果动态调整分块大小,按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。本发明可以有效地针对科学大数据建立索引,使得数据文件内的数据查询更加高效。
Description
技术领域
本发明涉及数据查询技术领域,具体涉及一种面向并行文件***双层索引方法和***。
背景技术
现有的索引技术有B-tree、Bitmap、哈希索引、范围索引。
B-tree索引使用的范围是传统的数据库查询***,是一种性能较为均衡的数据结构。
Bitmap索引是使用位图作为索引,通过位图的与或操作实现查询结果的与或并等操作。
哈希索引是使用哈希表来进行索引,通过哈希函数,根据键值对查询对应的记录。
范围索引是根据一个数据块的大小,对数据块的值进行大小比较,选中一个最大值和一个最小值。
科学大数据都是高基数数值型的数据,针对科学大数据采用上述索引方法都会存在一些缺点:
B-tree是一种平衡数,广泛适用于数据库,其***、删除性能都很好,非常适用于数据重复低的字段。但当数据重复率较低的时候,使用B-tree会浪费空间,其导致原因是:B-tree在查询重复度较高的记录的时候,还是需要建立和重复读高的值的索引空间,会造成空间的浪费。而且B-tree主要应用于OLTP型负载业务,对OLAP型业务不适合。
Bitmap所占的空间与记录数有关,高基数会导致索引过大,甚至会和原始数据一样大,其导致原因是:Bitmap的大小与记录数有关,当所有的记录数都是不同的时候,所需要的位数记录数的平方,当所需的记录是百万级甚至千万级的时候,这会导致索引空间非常大;其次,Bitmap不适合写负载业务,其导致原因是:Bitmap使用的负载是读负载,适用于多次读一次写的负载,写负载多的时候,位图需要更新频繁,影响更新的效率。
哈希索引在等值查询的时候效率很高,但是当进行范围查询的时候效率就会很低,经过哈希算法,其范围内的值可能会变得不连续,此时就无法利用索引完成范围索引,其导致原因是:哈希索引是根据一个哈希函数是找到对应的值,当范围内的一系列的记录需要被选中的时候,通过哈希函数去找值,可能值是不连续的,无法完成范围索引。同时当重复的键值太多的情况下,会存在哈希碰撞的问题,需要其他策略解决碰撞问题,因此带来一定的开销,而且哈希索引不支持排序,不支持联合查询。
范围索引是粗粒度的,而且与物理存储有关系,可能块太大,会导致过多冗余数据被取到,需要一个过滤的过程,其导致原因是范围索引是根据物理块的大小进行索引的,索引的范围设置过大的话,会导致过多冗余数据被取到,但是索引范围过少的话,会加大I/O操作,I/O操作的效率是非常慢的。
发明内容
本发明为了克服上述现有技术所述的至少一种缺陷(不足),提供一种面向并行文件***双层索引方法和***,可以有效地针对科学大数据建立索引,使得数据文件内的数据查询更加高效。
为实现本发明的目的,采用以下技术方案予以实现:
一方面,提供一种面向并行文件***双层索引方法,包括:
根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;在每个块内生成位图索引。
针对科学大数据,如果仅仅使用位图索引会产生大体积的索引文件,导致索引的生成和索引的查询都非常慢。本发明先通过范围索引缩小数据查询的范围实现粗粒度索引的建立,并且根据被访问数据在数据文件中的布局特性实时调整数据查询的范围划分,再通过位图索引在划分好的范围内实现细粒度索引的建立,由此实现粗粒度和细粒度结合的索引,可以大大地提高数据查询的效率。
因为数据的访问是具有空间局部性的,所以根据被访问数据在数据文件中的布局特性对数据文件进行分块,可以使得分块大小更加合理,更有利于提高数据查询的效率。
进一步地,所述根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引,具体包括:
根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
最近一次或多次的数据访问记录能够反映出当前被访问数据在数据文件中的布局特性,布局特性可以通过被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue衡量。根据调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引,可以使得后续的数据查询保持高效率。
进一步地,所述根据最近多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小,具体包括:
将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
根据比较结果,维持或增大或缩小分块大小。
选取最近连续两次的数据访问记录作为分块大小的调整依据,既兼顾了计算效率和当前被访问数据在数据文件中布局特性的反映真实性。
进一步地,根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
采用上述方法缩小分块大小,可以使得缩小后的分块大小更加合理,在后续数据查询中可以使得被访问数据占分块更大,更加有利于提高后续数据查询的效率。
进一步地,根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i=2, 3, ……, n,n为数据文件的分块数目;
所述根据调整后的分块大小对数据文件进行重新分块,具体为:每i个分块合并成一个分块。
让增大后的分块大小是原来的分块大小的i倍,在步骤12中可以直接通过将多个分块合并成一个分块,就可以方便快捷地实现分块大小的增大。在生成范围索引时,可以直接保留合并分块的第一个分块索引最小值和最后一个分块的索引最大值,删除其它索引值,就可以方便快捷地实现范围索引的重新生成并覆盖原有的范围索引。
另一方面,还提供一种面向并行文件***双层索引***,包括:
范围索引模块,用于根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;
位图索引模块,用于在每个块内生成位图索引。
针对科学大数据,如果仅仅使用位图索引会产生大体积的索引文件,导致索引的生成和索引的查询都非常慢。本发明中范围索引模块先通过范围索引缩小数据查询的范围实现粗粒度索引的建立,并且根据被访问数据在数据文件中的布局特性实时调整数据查询的范围划分,位图索引模块再通过位图索引在划分好的范围内实现细粒度索引的建立,由此实现粗粒度和细粒度结合的索引,可以大大地提高数据查询的效率。
因为数据的访问是具有空间局部性的,所以根据被访问数据在数据文件中的布局特性对数据文件进行分块,可以使得分块大小更加合理,更有利于提高数据查询的效率。
进一步地,所述范围索引模块具体用于:
根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
最近一次或多次的数据访问记录能够反映出当前被访问数据在数据文件中的布局特性,布局特性可以通过被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue衡量。范围索引模块会根据调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引,可以使得后续的数据查询保持高效率。
进一步地,所述范围索引模块根据最近多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小的具体步骤包括:
将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
根据比较结果,维持或增大或缩小分块大小。进一步地,根据下式缩小分块大小。
范围索引模块选取最近连续两次的数据访问记录作为分块大小的调整依据,既兼顾了计算效率和当前被访问数据在数据文件中布局特性的反映真实性。
进一步地,所述范围索引模块缩小分块大小的具体步骤为:
根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
范围索引模块采用上述方法缩小分块大小,可以使得缩小后的分块大小更加合理,在后续数据查询中可以使得被访问数据占分块更大,更加有利于提高后续数据查询的效率。
进一步地,所述范围索引模块增大分块大小的具体步骤为:
根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i=2, 3, ……, n,n为数据文件的分块数目;
所述范围索引模块根据调整后的分块大小对数据文件进行重新分块的具体步骤为:每i个分块合并成一个分块。
范围索引模块让增大后的分块大小是原来的分块大小的i倍,可以直接通过将多个分块合并成一个分块,就可以方便快捷地实现分块大小的增大。范围索引模块在生成范围索引时,可以直接保留合并分块的第一个分块索引最小值和最后一个分块的索引最大值,删除其它索引值,就可以方便快捷地实现范围索引的重新生成并覆盖原有的范围索引。
与现有技术相比,本发明技术方案的有益效果是:
本发明对科学大数据建立双层索引,对数据文件进行分块生成粗粒度索引缩小查询的范围,然后每个块生成细粒度索引,同时针对数据文件进行自适应大小分块,当分块过大时能够自动缩小分块大小,细化分块的粒度,当分块过小时能够自动增大分块大小,粗化分块的粒度,使得分块大小保持在一个合适的大小,被访问的数据占分块的比值处于合理的范围,从而加速数据查询处理过程。
附图说明
图1是实施例1的方法流程示意图。
图2是实施例1的另一个方法流程示意图。
图3是实施例1的另一个方法流程示意图。
图4是实施例2的***架构示意图。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
实施例1
本实施例提供一种面向并行文件***双层索引方法,如图1所示,包括:
S1.根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;
S2.在每个块内生成位图索引。
针对科学大数据,如果仅仅使用位图索引会产生大体积的索引文件,导致索引的生成和索引的查询都非常慢。本实施例先通过范围索引缩小数据查询的范围实现粗粒度索引的建立,并且根据被访问数据在数据文件中的布局特性实时调整数据查询的范围划分,再通过位图索引在划分好的范围内实现细粒度索引的建立,由此实现粗粒度和细粒度结合的索引,可以大大地提高数据查询的效率。
因为数据的访问是具有空间局部性的,所以根据被访问数据在数据文件中的布局特性对数据文件进行分块,可以使得分块大小更加合理,更有利于提高数据查询的效率。如果被访问数据在数据文件中布局特性呈现为小而离散,则可以让分块大小适当缩小;如果被访问数据在数据文件中布局特性呈现为大而连续,则可以让分块大小适当增大。
在本实施例的具体实施过程中,对数据文件进行分块可以是在逻辑上进行分块,也可以是在物理上进行分块。
如图2所示,步骤S1具体包括:
S11.根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
S12.按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
最近一次或多次的数据访问记录能够反映出当前被访问数据在数据文件中的布局特性,布局特性可以通过被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue衡量。当比值SelectValue较大时,可以增大分块大小;当比值SelectValue较小时,可以缩小分块大小。根据调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引,可以使得后续的数据查询保持高效率。
在最初始的时候,可以先按照初始的分块大小对数据文件进行初始分块,生成范围索引;再根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,动态调整分块大小;最后按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
如图3所示,步骤S11具体包括:
S111.将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
S112.根据比较结果,维持或增大或缩小分块大小。
选取最近连续两次的数据访问记录作为分块大小的调整依据,既兼顾了计算效率和当前被访问数据在数据文件中布局特性的反映真实性。当最近连续两次的比值SelectValue均大于设定阈值时,增大分块大小;当最近连续两次的比值SelectValue均小于设定阈值时,缩小分块大小;其它时候,维持分块大小不变。
在步骤S11中,可以根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
采用上述方法缩小分块大小,可以使得缩小后的分块大小更加合理,在后续数据查询中可以使得被访问数据占分块更大,更加有利于提高后续数据查询的效率。
在步骤S11中,可以根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i=2, 3, ……, n,n为数据文件的分块数目;
在步骤是12中,根据调整后的分块大小对数据文件进行重新分块,具体为:每i个分块合并成一个分块。
让增大后的分块大小是原来的分块大小的i倍,在步骤12中可以直接通过将多个分块合并成一个分块,就可以方便快捷地实现分块大小的增大。在生成范围索引时,可以直接保留合并分块的第一个分块索引最小值和最后一个分块的索引最大值,删除其它索引值,就可以方便快捷地实现范围索引的重新生成并覆盖原有的范围索引。
在具体实施过程中,可以运用多核、跨节点的技术加速实现本实施例中的索引生成和索引查询。具体地,本实施例中的索引生成和索引查询都可以在天河二号高性能计算***上完成,天河二号持续计算速率是3.39亿亿次每秒双精度浮点运算。天河二号上每个节点的使用是独占式的,每个节点24个核。在同一个节点内使用OpenMP(基于共享内存的并行程序便捷式和可扩展的编程模型),多个核进行并行计算。多节点之间选用一个核作为消息收集和传递的核,节点之间采用MPI(消息传递机制)进行,其通信协议采用了目前Tianhe-express2,能够实现高效的通信。用多核并行、多节点分布式计算加速索引生成和索引查询的过程,让生成索引和查询索引的速率更快,从而更好地加速科学发现。
目前的FastQuery(快速查询,一种科学数据查询的框架)对数据检索查询主要是通过Bitmap索引(也即位图索引)进行,产生的索引体积非常大,在建立和查询索引的过程中会耗费大量的时间。可以将本实施例提供的方法应用在FastQuery上。
本实施例的具体实施过程可以为:将数据文件(其文件格式可以为HDF5、NetCDF等)从磁盘读取到内存,读取数据文件中的数据,根据初始的分块大小设置min(最小值)和max(最大值)来确定范围,建立粗粒度的范围索引,计算其索引值,将索引值与数据文件中的数据绑定作为第一层索引。读取每个块的大小,针对每一条读取记录,使用FastBit(一个位图索引生成库,包括对位图索引压缩、编码、分箱等一系列的操作)组件计算位图索引,建立细粒度的索引,将位图索引与数据文件中的数据绑定作为第二层索引。
两层索引生成后,根据范围索引和位图索引可以进行数据的高效检索查询。在检索查询时计算被访问数据的大小与与被访问数据所在块的大小之间的比值SelectValue并记录下来。将记录下来的最近一次或多次的比值SelectValue与设定阈值进行比较,根据比较结果动态调整分块大小。例如,可以将记录下来的最近连续两次的比值SelectValue与设定阈值进行比较。当最近连续两次的比值SelectValue均大于设定阈值时,让分块大小是原来分块大小的i倍(i=2, 3, ……, n),假设n刚好是i的倍数,根据第j个块的min和第j+i个块的max重新确定范围(j =1, 1+i, ……, n-i),重新建立范围索引并覆盖原有的范围索引,将每i个块合并成一个块;当最近连续两次的比值SelectValue均小于设定阈值时,让分块大小是原来的分块大小%(设定阈值%Value),重新建立范围索引并覆盖原有的范围索引,根据缩小后的分块大小对数据文件重新分块;其它时候,维持分块大小不变。重新读取每个块的大小,针对每一条读取记录,使用FastBit组件计算位图索引。范围索引、位图索引与数据一起写入磁盘中,使得下次对该数据文件进行数据检索查询时可以更加高效。
实施例2
一种面向并行文件***双层索引***,包括:
范围索引模块,用于根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;
位图索引模块,用于在每个块内生成位图索引。
针对科学大数据,如果仅仅使用位图索引会产生大体积的索引文件,导致索引的生成和索引的查询都非常慢。本实施例中范围索引模块先通过范围索引缩小数据查询的范围实现粗粒度索引的建立,并且根据被访问数据在数据文件中的布局特性实时调整数据查询的范围划分,位图索引模块再通过位图索引在划分好的范围内实现细粒度索引的建立,由此实现粗粒度和细粒度结合的索引,可以大大地提高数据查询的效率。
因为数据的访问是具有空间局部性的,所以根据被访问数据在数据文件中的布局特性对数据文件进行分块,可以使得分块大小更加合理,更有利于提高数据查询的效率。如果范围索引模块检测到被访问数据在数据文件中布局特性呈现为小而离散,则让分块大小适当缩小;如果范围索引模块检测到被访问数据在数据文件中布局特性呈现为大而连续,则让分块大小适当增大。
在本实施例的具体实施过程中,对数据文件进行分块可以是在逻辑上进行分块,也可以是在物理上进行分块。
在本实施例中,所述范围索引模块具体用于:
根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
最近一次或多次的数据访问记录能够反映出当前被访问数据在数据文件中的布局特性,布局特性可以通过被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue衡量。当范围索引模块检测到比值SelectValue较大时,会增大分块大小;当范围索引模块检测到比值SelectValue较小时,会缩小分块大小。范围索引模块会根据调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引,可以使得后续的数据查询保持高效率。
在最初始的时候,范围索引模块可以先按照初始的分块大小对数据文件进行初始分块,根据范围索引模块所进行的初始分块生成范围索引;再根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,动态调整分块大小;最后按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
在本实施例中,所述范围索引模块根据最近多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小的具体步骤包括:
将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
根据比较结果,维持或增大或缩小分块大小。
范围索引模块选取最近连续两次的数据访问记录作为分块大小的调整依据,既兼顾了计算效率和当前被访问数据在数据文件中布局特性的反映真实性。当范围索引模块检测到最近连续两次的比值SelectValue均大于设定阈值时,增大分块大小;当范围索引模块检测到最近连续两次的比值SelectValue均小于设定阈值时,缩小分块大小;其它时候,维持分块大小不变。
在本实施例中,所述范围索引模块缩小分块大小的具体步骤为:
根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
范围索引模块采用上述方法缩小分块大小,可以使得缩小后的分块大小更加合理,在后续数据查询中可以使得被访问数据占分块更大,更加有利于提高后续数据查询的效率。
在本实施例中,所述范围索引模块增大分块大小的具体步骤为:
根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i=2, 3, ……, n,n为数据文件的分块数目;
所述范围索引模块根据调整后的分块大小对数据文件进行重新分块的具体步骤为:每i个分块合并成一个分块。
范围索引模块让增大后的分块大小是原来的分块大小的i倍,可以直接通过将多个分块合并成一个分块,就可以方便快捷地实现分块大小的增大。范围索引模块在生成范围索引时,可以直接保留合并分块的第一个分块索引最小值和最后一个分块的索引最大值,删除其它索引值,就可以方便快捷地实现范围索引的重新生成并覆盖原有的范围索引。
在具体实施过程中,可以运用多核、跨节点的技术加速实现本实施例中的索引生成和索引查询。具体地,本实施例可以在天河二号高性能计算***上实现,天河二号持续计算速率是3.39亿亿次每秒双精度浮点运算。天河二号上每个节点的使用是独占式的,每个节点24个核。在同一个节点内使用OpenMP(基于共享内存的并行程序便捷式和可扩展的编程模型),多个核进行并行计算。多节点之间选用一个核作为消息收集和传递的核,节点之间采用MPI(消息传递机制)进行,其通信协议采用了目前Tianhe-express2,能够实现高效的通信。用多核并行、多节点分布式计算加速索引生成和索引查询的过程,让生成索引和查询索引的速率更快,从而更好地加速科学发现。
目前的FastQuery(快速查询,一种科学数据查询的框架)对数据检索查询主要是通过Bitmap索引(也即位图索引)进行,产生的索引体积非常大,在建立和查询索引的过程中会耗费大量的时间。可以将本实施例提供的***应用在FastQuery上。
如图4所示,将本实施例提供的***封装成FastQuery接口。本实施例的具体实施过程可以为:将数据文件(其文件格式可以为HDF5、NetCDF等)从磁盘读取到内存,在文件驱动器的作用下读取数据文件中的数据,范围索引模块根据初始的分块大小设置min(最小值)和max(最大值)来确定范围,建立粗粒度的范围索引,计算其索引值,将索引值与数据文件中的数据绑定作为第一层索引(图4中的索引0)。位图索引模块读取每个块的大小,针对每一条读取记录,使用FastBit(一个位图索引生成库,包括对位图索引压缩、编码、分箱等一系列的操作)组件计算位图索引,建立细粒度的索引,将位图索引与数据文件中的数据绑定作为第二层索引(图4中的索引1)。
两层索引生成后,根据范围索引和位图索引可以进行数据的高效检索查询。在检索查询时计算被访问数据的大小与与被访问数据所在块的大小之间的比值SelectValue并记录下来。范围索引模块将记录下来的最近一次或多次的比值SelectValue与设定阈值进行比较,根据比较结果动态调整分块大小。例如,可以将记录下来的最近连续两次的比值SelectValue与设定阈值进行比较。当范围索引模块检测到最近连续两次的比值SelectValue均大于设定阈值时,让分块大小是原来分块大小的i倍(i=2, 3, ……, n),假设n刚好是i的倍数,根据第j个块的min和第j+i个块的max重新确定范围(j =1, 1+i,……, n-i),重新建立范围索引并覆盖原有的范围索引,将每i个块合并成一个块;当范围索引模块检测到最近连续两次的比值SelectValue均小于设定阈值时,让分块大小是原来的分块大小%(设定阈值%Value),重新建立范围索引并覆盖原有的范围索引,根据缩小后的分块大小对数据文件重新分块;其它时候,维持分块大小不变。位图索引模块重新读取每个块的大小,针对每一条读取记录,使用FastBit组件计算位图索引。将范围索引、位图索引与数据一起写入磁盘中,使得下次对该数据文件进行数据检索查询时可以更加高效。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (10)
1.一种面向并行文件***双层索引方法,其特征在于,包括:
根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;在每个块内生成位图索引。
2.根据权利要求1所述的面向并行文件***双层索引方法,其特征在于,所述根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引,具体包括:
根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
3.根据权利要求2所述的面向并行文件***双层索引方法,其特征在于,所述根据最近多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小,具体包括:
将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
根据比较结果,维持或增大或缩小分块大小。
4.根据权利要求3所述的面向并行文件***双层索引方法,其特征在于,根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
5.根据权利要求3所述的面向并行文件***双层索引方法,其特征在于,根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i =2, 3, ……, n,n为数据文件的分块数目;
所述根据调整后的分块大小对数据文件进行重新分块,具体为:每i个分块合并成一个分块。
6.一种面向并行文件***双层索引***,其特征在于,包括:
范围索引模块,用于根据被访问数据在数据文件中的布局特性对数据文件进行分块,生成范围索引;
位图索引模块,用于在每个块内生成位图索引。
7.根据权利要求6所述的面向并行文件***双层索引***,其特征在于,所述范围索引模块具体用于:
根据最近一次或多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小;
按照调整后的分块大小对数据文件进行重新分块,重新生成范围索引并覆盖原有的范围索引。
8.根据权利要求7所述的面向并行文件***双层索引***,其特征在于,所述范围索引模块根据最近多次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,调整分块大小的具体步骤包括:
将最近连续两次被访问数据的大小与被访问数据所在块的大小之间的比值SelectValue,与设定阈值进行比较;
根据比较结果,维持或增大或缩小分块大小。
9.根据权利要求8所述的面向并行文件***双层索引***,其特征在于,所述范围索引模块缩小分块大小的具体步骤为:
根据下式缩小分块大小:
缩小后的分块大小 = 原来的分块大小%(设定阈值%Value)
式中,%为求余算术符,Value为最近多次的比值SelectValue的均值或者最近一次的比值SelectValue或者最近多次的比值SelectValue随机抽样一个。
10.根据权利要求8所述的面向并行文件***双层索引***,其特征在于,所述范围索引模块增大分块大小的具体步骤为:
根据下式增大分块大小:
增大后的分块大小 = 原来的分块大小×i
式中,i =2, 3, ……, n,n为数据文件的分块数目;
所述范围索引模块根据调整后的分块大小对数据文件进行重新分块的具体步骤为:每i个分块合并成一个分块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377273.2A CN109471864A (zh) | 2018-11-19 | 2018-11-19 | 一种面向并行文件***双层索引方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811377273.2A CN109471864A (zh) | 2018-11-19 | 2018-11-19 | 一种面向并行文件***双层索引方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109471864A true CN109471864A (zh) | 2019-03-15 |
Family
ID=65673064
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811377273.2A Pending CN109471864A (zh) | 2018-11-19 | 2018-11-19 | 一种面向并行文件***双层索引方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109471864A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442575A (zh) * | 2019-07-01 | 2019-11-12 | 中山大学 | 一种面向科学大数据的索引生成方法和检索方法 |
CN111444180A (zh) * | 2020-03-20 | 2020-07-24 | 复旦大学 | 一种双层结构的索引及其查询方法 |
WO2021097622A1 (zh) * | 2019-11-18 | 2021-05-27 | 深圳市欢太科技有限公司 | 一种文件处理方法、文件处理装置及终端设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件***的元数据文件布局管理方法 |
CN104376119A (zh) * | 2014-12-03 | 2015-02-25 | 天津南大通用数据技术股份有限公司 | 一种适应超大规模列存数据库的数据访问方法及装置 |
CN104731872A (zh) * | 2015-03-05 | 2015-06-24 | 长沙新弘软件有限公司 | 基于位图的存储空间管理***及其方法 |
CN105849726A (zh) * | 2013-11-08 | 2016-08-10 | 甲骨文国际公司 | 用于高效地支持通过分层标记数据的即席查询的通用索引 |
-
2018
- 2018-11-19 CN CN201811377273.2A patent/CN109471864A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101567001A (zh) * | 2009-05-22 | 2009-10-28 | 清华大学 | 并行文件***的元数据文件布局管理方法 |
CN105849726A (zh) * | 2013-11-08 | 2016-08-10 | 甲骨文国际公司 | 用于高效地支持通过分层标记数据的即席查询的通用索引 |
CN104376119A (zh) * | 2014-12-03 | 2015-02-25 | 天津南大通用数据技术股份有限公司 | 一种适应超大规模列存数据库的数据访问方法及装置 |
CN104731872A (zh) * | 2015-03-05 | 2015-06-24 | 长沙新弘软件有限公司 | 基于位图的存储空间管理***及其方法 |
Non-Patent Citations (1)
Title |
---|
涂旭东: "基于对象的并行文件***接口语义扩展研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110442575A (zh) * | 2019-07-01 | 2019-11-12 | 中山大学 | 一种面向科学大数据的索引生成方法和检索方法 |
CN110442575B (zh) * | 2019-07-01 | 2023-07-18 | 中山大学 | 一种面向科学大数据的索引生成方法和检索方法 |
WO2021097622A1 (zh) * | 2019-11-18 | 2021-05-27 | 深圳市欢太科技有限公司 | 一种文件处理方法、文件处理装置及终端设备 |
CN111444180A (zh) * | 2020-03-20 | 2020-07-24 | 复旦大学 | 一种双层结构的索引及其查询方法 |
CN111444180B (zh) * | 2020-03-20 | 2022-12-16 | 复旦大学 | 一种双层结构的索引及其查询方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107533551B (zh) | 数据块级别的大数据统计 | |
Mullesgaard et al. | Efficient skyline computation in MapReduce | |
CN108563923B (zh) | 一种基因变异数据分布式存储方法及*** | |
CN102736961B (zh) | 数据去重复的备份和还原策略 | |
US10013440B1 (en) | Incremental out-of-place updates for index structures | |
CN104407879B (zh) | 一种电网时序大数据并行加载方法 | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库***及其查询方法 | |
CN109471864A (zh) | 一种面向并行文件***双层索引方法和*** | |
Horowitz et al. | Recovery of non-rigid motion and structure | |
CN110674154B (zh) | 一种基于Spark的对Hive中数据进行***、更新和删除的方法 | |
CN111586091A (zh) | 一种实现算力组配的边缘计算网关*** | |
CN106294745A (zh) | 大数据清洗方法及装置 | |
CN107402926A (zh) | 一种查询方法以及查询设备 | |
CN106682061B (zh) | 一种分布式起源数据收集与存储*** | |
CN112882663B (zh) | 一种随机写的方法、电子设备及存储介质 | |
AU2020101071A4 (en) | A Parallel Association Mining Algorithm for Analyzing Passenger Travel Characteristics | |
CN111475507A (zh) | 一种工作负载自适应单层lsmt的键值数据索引方法 | |
CN110135184A (zh) | 一种静态数据脱敏的方法、装置、设备及存储介质 | |
CN111625531B (zh) | 基于可编程装置的合并装置、数据合并方法及数据库*** | |
CN110990340B (zh) | 一种大数据多层次存储架构 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
CN103902614B (zh) | 一种数据处理方法、设备和*** | |
CN113806466A (zh) | 路径时间查询方法、装置、电子设备和可读存储介质 | |
Yoshimi et al. | An FPGA-based tightly coupled accelerator for data-intensive applications | |
CN107016050A (zh) | 数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190315 |
|
RJ01 | Rejection of invention patent application after publication |