[发明专利]一种利用向量指令并行处理文件索引的方法及装置在审
申请号: | 201410662785.9 | 申请日: | 2014-11-19 |
公开(公告)号: | CN104331497A | 公开(公告)日: | 2015-02-04 |
发明(设计)人: | 王东琳;陈易龙;蒿杰;林建海;舒琳;宋亚芳;穆敬彬;梁小龙 | 申请(专利权)人: | 中国科学院自动化研究所 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 中科专利商标代理有限责任公司 11021 | 代理人: | 宋焰琴 |
地址: | 100190 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 利用 向量 指令 并行 处理 文件 索引 方法 装置 | ||
技术领域
本发明属于计算机应用技术领域,具体涉及一种利用向量指令并行处理文件索引的方法,与文件系统构造、处理器指令体系密切相关。
背景技术
进入云计算时代,信息爆炸式增长,面对海量数据,存储系统需要满足高性能、大容量、高可靠性与高可扩展性等方面的需求。分布式文件存储系统是获取大容量存储的有效方式,将存储容量布置在大量分布式计算机节点上,对每一份数据存储多个副本,通过并发访问提高数据访问速度,通过数据冗余提高了数据的可靠性。
当前的分布式文件系统主要采取将文件的数据与其索引数据(元数据)分开存储的方式进行管理,中心服务器(性能要求高)维护元数据信息,真实数据分散存储在数据节点。由于文件数据和索引数据分开存储,实现了文件数据传输通道和索引数据传输通道分离,利用索引数据和文件数据不同的数据特征分别优化数据访问算法,同时分散了文件I/O访问请求,提高存储系统的并行访问效率。
采用中心节点服务器管理索引数据的存储系统架构设计和实现简单,能够有效提高文件管理效率。但随着数据访问量急剧增大,索引数据服务器将成为系统的性能瓶颈,一旦索引服务器出现故障,整个系统都将陷入瘫痪。采用配置多台索引服务器的方式能增强系统的可用性,但同时也增加了系统的复杂性,因此提升单台服务器的索引处理能力存在极大的应用价值。
并行化计算是提升单机计算能力的主要途径,现代CPU架构在指令级、数据级、任务级多个层次提供了将计算并行化处理的方式,将索引处理并行化是提升单台服务器处理能力的最好选择。B+树是应用最广泛的索引结构,为了解决B+树索引插入操作效率低下的问题,研究人员已提出了多种批量插入算法来处理B+树的大规模键值插入过程,然而,由于插入过程中数据依赖性较高,这些算法都需要采用加锁的方式保证键值插入的正确性,其并行性能大打折扣。B+树索引的查询能力通常是索引数据服务的瓶颈,传统的查询方法主要通过二分查找的方式,从根节点开始搜索,直至叶子节点。但二分查找的方法不适合并行处理,无法利用现代超标量处理器的并行计算能力提升效率。
发明内容
为解决现有技术存在的不足,本发明提出了一种并行处理文件索引数据的方法,其特别适用于现代超标量处理器,利用SIMD指令处理文件索引,在处理器每个时钟周期同时处理多个索引操作,提高了存储系统访问的并行性,缩短了索引的平均处理时间,有效提升了存储系统的性能。本发明提出的并行处理文件索引数据的方法,主要用于处理树型索引,采用了如下的策略:
1)本发明所述方法通过对待处理索引项排序后再批量建立,首先建立所有的叶子节点,再建立上一层的内部节点,从底向上建立索引树,利用了索引树本身是个有序数据集的特点,避免了锁的使用,较大提升了操作的并行性。
2)通过将查询请求缓存在内存中,排序后批量处理,在大规模数据集的环境下,每个批量查询的索引组都能较好的分布在一个或多个相邻的叶子节点,按照有序查询队列依次处理,查询过程中能获得较好的局部缓存命中率,有效提升查询索引的速度。
3)在叶子节点内部搜索数据时,传统的二分查找方法存在大量的分支指令,且不容易并行化处理,本发明使用的方法利用SIMD指令的执行宽度,将大量分支指令转化为算术逻辑操作,减少了了流水线分支预测失败时带来的性能损失。
本发明提出的并行处理文件索引数据的方法,包括批量建立文件索引和并行查询文件索引,其中:
所述批量建立文件索引的方法,步骤如下:
步骤1:计算数据表中数据的索引键值,对全部数据按其索引键值升序排序;
步骤2:分配所有叶子节点所需的存储空间,假定索引树高度为h,度数为g,叶子节点填充因子为α,叶子节点数的计算公式表示为:
步骤3:从数值最小的索引键值开始,使用SIMD指令一次加载多个索引键值,将数据填充到叶子节点;按此方式,依次构建完所有叶子节点
步骤4:分配上一层内部节点所需的存储空间,假定B+树高度为h,度数为g,内部节点数的计算公式表示为;
步骤5:按步骤3的方法建立内部节点,每个节点的键值为其对应的下一层节点的最大值;
步骤6:按照步骤4和步骤5的方法继续构建上一层内部节点,直到上一层的节点数为1,此节点为根节点,就此完成整个索引构造。
所述并行查询索引的方法,步骤如下:
步骤1:在内存中建立缓存池,用一个查询队列暂时保存所收到的所有查询请求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院自动化研究所,未经中国科学院自动化研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410662785.9/2.html,转载请声明来源钻瓜专利网。