[发明专利]基于GPU分组LSM树索引的方法有效
申请号: | 202010836000.0 | 申请日: | 2020-08-19 |
公开(公告)号: | CN112000846B | 公开(公告)日: | 2021-07-20 |
发明(设计)人: | 谷峪;李万;李传文;李芳芳;于戈 | 申请(专利权)人: | 东北大学 |
主分类号: | G06F16/901 | 分类号: | G06F16/901;G06F16/903;G06F16/245 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李在川 |
地址: | 110819 辽宁*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 gpu 分组 lsm 索引 方法 | ||
1.一种基于GPU分组LSM树索引的方法,其特征在于:包括以下步骤:
步骤1:对Key-Value数据进行预处理,将数据在内存中进行键值Key和数据Value的分离;将Value存放在内存中,同时在内存中用哈希表存储Value和对应的地址,查询时以O(1)的时间复杂度定位Value;分离之后将Key和Value的地址拷贝到GPU的全局内存中;
步骤2:将数据插入到GPU分组LSM树中;
所述GPU分组LSM树中,所有数据均是按批进行插入,假设每一批数据大小为b,数据组group的数量为g,因此GPU分组LSM中每一层都会有g个group且第i层有b*g(i+1)个组,整个GPU分组LSM包含的数据都是b的整数倍;使用GPU的基数排序对数据进行排序,并查看GPU分组LSM树中第一层是否有空的组,有则将数据拷贝到该组中,没有则触发合并操作,使第一层为空然后将数据拷贝到第一层;
步骤3:进行数据查询时,进行部分排序提高合并内存访问效率,确定需要排序比特位数量;
假设Key的长度位为B个比特,GPU分组LSM树的大小为T,GPU缓存存放的Key的长度为K,Key的范围长度为2B,LSM树中的每一个Key覆盖的范围是2B/T*K,则该范围的平均比特位个数为log2(2B/T*K);若查询中的内存请求属于高速缓存行的覆盖范围,则无论请求的Key是否排序,都是合并的内存访问;因此,当查询的Key位于同一高速缓存行中时,不对查询进行排序,使用以下公式计算排序的比特位数量N:
N=B-log2(2B/T*K)
步骤4:对查询的数据使用布隆过滤器筛选掉无关查询;
步骤5:将访问的数据加载到共享内存中;查询会访问每一个group中的固定位置的数据,这些查询数据会全部访问这棵树的根节点,数据访问这棵树的前L层数据,其中L为正整数;
步骤6:在GPU上对共享内存中的数据进行查询,得到对应的全局内存中的位置,然后再到全局内存中进行查询;由于GPU上存放的是Value的地址,因此查询完成后会将查询结果拷贝到内存中去,再由CPU端进行处理,通过查找Hash表取出对应Value的值,这样就完成了在GPU分组LSM树上的查询过程。
2.根据权利要求1所述的一种基于GPU分组LSM树索引的方法,其特征在于,步骤4所述布隆过滤器SBF由M个哈希函数组成,M为正整数,每个哈希函数是独立不相关的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东北大学,未经东北大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010836000.0/1.html,转载请声明来源钻瓜专利网。