System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本申请涉及数据库,尤其是分布式数据库查询操作的异构加速领域,例如涉及一种基于多链表结构的哈希冲突解决装置及方法。
技术介绍
1、随着硬件技术的不断发展与创新,将数据库中的计算密集型与数据密集型操作卸载到专用的异构加速平台已成为数据库性能提升的主要研究方向。针对数据库中耗时最长的连接操作,传统的方法采用布谷鸟哈希连接算法,该算法采用单链表方式,当发生哈希冲突时往往通过扩展链表深度来解决哈希冲突,这就导致数据库的连接操作会大量占用主机的系统内存,而且随着链表的长度增加,单次连接查询的时间复杂度也呈指数级增长。
2、需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
1、为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
2、本专利技术要解决的技术问题是提供一种基于多链表结构的哈希冲突解决装置及方法,相比传统的布谷鸟哈希算法的单链表结构,本方法采用多链表流水并行运算结构,能大大降低哈希冲突的概率及连接操作的时间复杂度。
3、为了解决所述技术问题,本专利技术采用的技术方案是:一种基于多链表结构的哈希冲突解决装置,包括xdma模块、板载内存、键值提取模块、构建组件、探测组件以及哈希链表,xdma模块连接于主机与板载内存之间,用于传输链表加
4、进一步的,哈希函数模块内存储有多种哈希函数,每条链表对应一种哈希函数。
5、进一步的,还包括字符串哈希模块,字符串哈希模块连接于键值提取模块与键值缓存模块之间,用于将字符串键值转换成整数型键值。
6、进一步的,还包括数据恢复模块,数据恢复模块与链表连接模块相连,外表数据完成探测后,通过数据恢复模块将新生成的表数据缓存到板载内存,通知主机回读到本地内存,完成连接操作。
7、进一步的,xdma、板载内存、键值提取模块、构建组件、探测组件基于fpga实现。
8、本专利技术还公开一种基于多链表结构的哈希冲突解决方法,本方法在上述装置实现,在方法的建立阶段,首先提取内表键值并利用多种哈希函数将内表键值数据离散到多条链表内,每条链表对应一种哈希函数;当出现哈希地址对应的缓存空间被占用时,判断被缓存空间是否溢出,如果溢出则将键值数据转发到另一条链表进行缓存,当多条链表缓存空间均为溢出状态时,将键值数据缓存到独立的冲突存储空间;在检测阶段,当查询到某一地址同时存在多个内表键值数据时,一次性读取多个键值与外表的键值数据对比,如果匹配成功则输出连接结果,通过链表连接模块组成新的数据,如果匹配不成功则将外表键值转发到其他链表继续探测。
9、进一步的,本方法的实施步骤:
10、s01)、主机接收到加入指令后,对指令进行分析和优化,然后启动内核,cpu通过xdma将内核所需的控制参数传输给fpga,同时将表数据从主机内存传输到板载内存,并生成启动信号;
11、s02)、键值提取模块从板载内存中读取内/外表行数据进行解析,并根据配置参数提取指定列作为键值;
12、s03)、在构建阶段,提取到的内表键值缓存到键值缓存模块后作为哈希函数模块的输入进行离散化处理,得到链表的哈希地址,根据哈希地址读取哈希链表,并根据有效位判断当前地址下的链表空间是否已经被占用,如果未被占用将键值缓存到链表空间,如果该地址已经被占用,则查看该链表空间是否存满,如果未满,将键值存放在该地址下的链表内,反之将键值转发到其他链表,重复上述过程,若轮询其他链表仍未找到合适的链表空间,则将键值缓存到独立的冲突存储空间,至此一次构建过程结束;
13、s04)、在探测阶段,重复步骤s02),提取到的外表键值缓存到键值缓存模块后作为哈希函数模块的输入进行离散化处理,得到链表的哈希地址,根据哈希地址读取哈希链表,并根据有效位判断当前地址下的链表空间是否已经缓存内表键值,如果没有缓存内表数据则将外表键值转发到其他链表继续探测,如果有缓存内表键值,则一次性读取该地址下缓存的所有内表键值与外表键值进行匹配,如果匹配成功则输出连接结果,组成新的表数据,如果匹配不成功则将外表键值转发到其他链表继续探测,若遍历所有链表及独立的冲突存储空间仍不能找到匹配结果,则丢弃该外表数据,至此一次探测结束。
14、进一步的,步骤s02)中,当提取的键值列是字符串时,调用字符串哈希模块将字符串键值转换为整数型键值,如果键值属性是布尔值或整型,则不进行处理。
15、进一步的,还包括步骤s05)、待外表数据完成探测后,通过数据恢复模块将新生成的表数据缓存到板载ddr,通知主机回读到本地内存,完成连接操作。
16、进一步的,步骤s03)中,通过flag标志位查看链表空间是否存满,flag标志位为1表示存满,flag标志位为0表示未存满。
17、本专利技术的有益效果:本方法采用多链表流水并行运算结构,能大大降低哈希冲突的概率及连接操作的时间复杂度,同时利用fpga可编程特性及在线重构技术,可灵活地对链表进行纵向或横向扩展,最大限度地利用资源,降低连接操作的时间复杂度,为哈希冲突的解决提供一种更为高效的策略,进一步提高连接算法的效率。
18、本专利技术通过采用多链表流水并行运算结构实现哈希连接算法,将分布式数据库数据中数据密集型与计算密集型的查询连接任务卸载到专用的异构加速平台。相比传统的布谷鸟连接算法的单链表,该方案根据fpga的可编程及并行特性,设计多链表流水结构,为每条链表设计特有的哈希函数来最大化的离散数据,降低冲突概率。在算法的建立阶段,首先提取内表键值数据并利用多种哈希函数将内表键值数据离散到多张链表内,当出现哈希地址对应的缓存空间被占用时,判断该缓存空间是否溢出本文档来自技高网...
【技术保护点】
1.一种基于多链表结构的哈希冲突解决装置,其特征在于:包括XDMA模块、板载内存、键值提取模块、构建组件、探测组件以及哈希链表,
2.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:哈希函数模块内存储有多种哈希函数,每条链表对应一种哈希函数。
3.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:还包括字符串哈希模块,字符串哈希模块连接于键值提取模块与键值缓存模块之间,用于将字符串键值转换成整数型键值。
4.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:还包括数据恢复模块,数据恢复模块与链表连接模块相连,外表数据完成探测后,通过数据恢复模块将新生成的表数据缓存到板载内存,通知主机回读到本地内存,完成连接操作。
5.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:XDMA、板载内存、键值提取模块、构建组件、探测组件基于FPGA实现。
6.一种基于多链表结构的哈希冲突解决方法,其特征在于:本方法基于权利要求1至5任一项所述装置实现,在方法的建立阶段,首先
7.根据权利要求6所述的基于多链表结构的哈希冲突解决方法,其特征在于:本方法的实施步骤:
8.根据权利要求7所述的基于多链表结构的哈希冲突解决方法,其特征在于:步骤S02)中,当提取的键值列是字符串时,调用字符串哈希模块将字符串键值转换为整数型键值,如果键值属性是布尔值或整型,则不进行处理。
9.根据权利要求7所述的基于多链表结构的哈希冲突解决方法,其特征在于:还包括步骤S05)、待外表数据完成探测后,通过数据恢复模块将新生成的表数据缓存到板载DDR,通知主机回读到本地内存,完成连接操作。
10.根据权利要求7所述的基于多链表结构的哈希冲突解决方法,其特征在于:步骤S03)中,通过Flag标志位查看链表空间是否存满,Flag标志位为1表示存满,Flag标志位为0表示未存满。
...【技术特征摘要】
1.一种基于多链表结构的哈希冲突解决装置,其特征在于:包括xdma模块、板载内存、键值提取模块、构建组件、探测组件以及哈希链表,
2.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:哈希函数模块内存储有多种哈希函数,每条链表对应一种哈希函数。
3.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:还包括字符串哈希模块,字符串哈希模块连接于键值提取模块与键值缓存模块之间,用于将字符串键值转换成整数型键值。
4.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:还包括数据恢复模块,数据恢复模块与链表连接模块相连,外表数据完成探测后,通过数据恢复模块将新生成的表数据缓存到板载内存,通知主机回读到本地内存,完成连接操作。
5.根据权利要求1所述的基于多链表结构的哈希冲突解决装置,其特征在于:xdma、板载内存、键值提取模块、构建组件、探测组件基于fpga实现。
6.一种基于多链表结构的哈希冲突解决方法,其特征在于:本方法基于权利要求1至5任一项所述装置实现,在方法的建立阶段,首先提取内表键值并利用多种哈希函数将内表键值数据离散到多条链表内,每条链表对应一种哈希函数;当出现哈希地址对...
【专利技术属性】
技术研发人员:李乐乐,王帅,赵鑫鑫,姜凯,
申请(专利权)人:山东浪潮科学研究院有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。