哈希连接方法、装置、电子设备及存储介质与流程

文档序号:37642990发布日期:2024-04-18 18:07阅读:29来源:国知局
哈希连接方法、装置、电子设备及存储介质与流程

本发明涉及数据库,尤其涉及一种哈希连接方法、装置、电子设备及存储介质。


背景技术:

1、连接是数据库表之间的常用操作,通过把多个表之间某列相等的元组提取出来组成新的表,从而实现数据库的查询操作。

2、哈希连接是数据库中最常用的连接算法,主要分为建立阶段和探测阶段,在相关技术中,对于分布式数据库的哈希连接过程,采用哈希函数进行哈希计算,执行哈希连接的各节点之间主要通过元组的方式进行数据传递,数据传递到连接节点后进行哈希连接,最终进行合并汇总。

3、然而,在相关技术中,对于某些数据库应用,存在哈希冲突风险较大的情况,同时,通过元组进行数据传递的方式会导致哈希连接后的元组再次组成哈希表,严重影响了分布式数据库的性能。因此,现在亟需一种哈希连接方法、装置、电子设备及存储介质来解决上述问题。


技术实现思路

1、针对现有技术存在的问题,本发明提供一种哈希连接方法、装置、电子设备及存储介质。

2、本发明提供一种哈希连接方法,包括:

3、获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;

4、基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;

5、基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;

6、根据所有所述哈希连接数据,得到哈希连接结果。

7、根据本发明提供的一种哈希连接方法,在所述获取所有数据库节点中的第一元组数据之前,所述方法还包括:

8、基于所述二维哈希表的行索引对应的最大哈希值和数据库节点总数量,根据各个所述数据库节点的预设排序结果,确定各个所述数据库节点中所述二维哈希表的行索引对应的行哈希值范围。

9、根据本发明提供的一种哈希连接方法,所述方法还包括:

10、根据各个所述数据库节点的网际互连协议地址信息,对所有所述数据库节点进行排序,得到各个所述数据库节点的所述预设排序结果。

11、根据本发明提供的一种哈希连接方法,在所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组之前,所述方法还包括:

12、从多个所述数据库节点中确定预设数据库节点;

13、获取所述预设数据库节点中的多个随机元组数据;

14、基于预设哈希函数备选库中的各个备选哈希函数,通过所述预设数据库节点对所有所述随机元组数据进行哈希计算,得到各个所述备选哈希函数对应的备选哈希函数计算结果集合和哈希计算处理时长;

15、根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数。

16、根据本发明提供的一种哈希连接方法,所述根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数,包括:

17、根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度;

18、基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数。

19、根据本发明提供的一种哈希连接方法,所述根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度,包括:

20、基于哈希离散度公式,根据所述备选哈希函数计算结果集合中各个备选哈希函数计算结果,计算所述备选哈希函数对应的哈希离散度,所述哈希离散度公式为:

21、;

22、其中,表示哈希离散度,表示多个所述随机元组数据中的第个所述随机元组数据,表示多个所述随机元组数据中的第个所述随机元组数据,表示总共有个所述随机元组数据,表示所述备选哈希函数对应的备选哈希函数计算结果集合中第个所述随机元组数据对应的备选哈希函数计算结果,表示所述备选哈希函数对应的备选哈希函数计算结果集合中第个所述随机元组数据对应的备选哈希函数计算结果,表示所述二维哈希表中的行索引对应的最大哈希值,表示所述二维哈希表中的列索引对应的最大哈希值。

23、根据本发明提供的一种哈希连接方法,所述从多个所述数据库节点中确定预设数据库节点,包括:

24、获取各个所述数据库节点的实时运行状态数据;

25、将所述实时运行状态数据满足预设运行状态数据的所述数据库节点确定为所述预设数据库节点。

26、根据本发明提供的一种哈希连接方法,所述方法还包括:

27、基于预设哈希函数备选库中的各个备选哈希函数,通过预设加速硬件单元,对所有所述随机元组数据进行哈希计算加速。

28、根据本发明提供的一种哈希连接方法,所述预设哈希函数判断阈值包括哈希离散度阈值和哈希计算时长阈值;

29、所述基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数,包括:

30、将所述哈希离散度大于所述哈希离散度阈值,且所述哈希计算处理时长小于所述哈希计算时长阈值的所述备选哈希函数作为待定哈希函数;

31、在确定所述待定哈希函数的数量至少为两个时,根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数。

32、根据本发明提供的一种哈希连接方法,所述根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数,包括:

33、基于各个所述待定哈希函数对应的所述哈希离散度,按照从大到小的顺序对各个所述待定哈希函数进行排序,得到哈希离散度排序结果;

34、根据所述哈希离散度排序结果,将第一排序的所述哈希离散度对应的所述待定哈希函数确定为所述第一预设哈希函数,将第二排序的所述哈希离散度对应的所述待定哈希函数确定为所述第二预设哈希函数。

35、根据本发明提供的一种哈希连接方法,所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,包括:

36、基于所述第一预设哈希函数,对所述第一元组数据进行哈希计算,得到第一行索引哈希值;

37、基于所述第二预设哈希函数,对所述第一元组数据进行哈希计算,得到第一列索引哈希值;

38、将所述第一行索引哈希值和所述第一列索引哈希值作为所述第一元组数据对应的所述第一哈希值组。

39、根据本发明提供的一种哈希连接方法,所述根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,包括:

40、判断本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值是否在目标行哈希值范围内,其中,所述目标行哈希值范围为所述本地数据库节点中所述二维哈希表的行索引对应的行哈希值范围;

41、若在所述目标行哈希值范围内,根据所述本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值,构建所述本地数据库节点中的所述第一数据子表对应的所述二维哈希表,并将所述第一元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述本地数据库节点中对应的内存位置,其中,所述二维哈希表中的每一行对应不同的所述第一行索引哈希值,所述二维哈希表中的每一列对应不同的所述第一列索引哈希值;

42、若不在所述目标行哈希值范围内,将所述本地数据库节点中的所述第一元组数据作为待写入元组数据,根据所述待写入元组数据对应的所述第一行索引哈希值,以及除所述本地数据库节点以外的其它所述数据库节点中的所述二维哈希表的行索引对应的行哈希值范围,确定目标数据库节点,并将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表。

43、根据本发明提供的一种哈希连接方法,所述方法还包括:

44、在各个所述数据库节点中构建公共溢出区和哈希表写访问进程,其中,所述公共溢出区用于保存发生哈希冲突的元组数据;

45、所述将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表,包括:

46、根据所述第一行索引哈希值和所述第一列索引哈希值,确定所述待写入元组数据在所述目标数据库节点的所述二维哈希表中对应的存储单元,其中,所述存储单元是基于所述目标数据库节点的所述二维哈希表中的行索引和所述列索引确定得到;

47、判断所述目标数据库节点的所述二维哈希表中对应的所述存储单元是否为空,若所述存储单元为空,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述目标数据库节点的所述二维哈希表中对应的存储单元,并将所述待写入元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至对应的所述存储单元;

48、若所述存储单元不为空,判断所述待写入元组数据与所述目标数据库节点的所述二维哈希表中对应的所述存储单元中已存储的元组数据是否相同,若不相同,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值、所述第一列索引哈希值和所述待写入元组数据存储至所述公共溢出区。

49、根据本发明提供的一种哈希连接方法,各个所述数据库节点中的所述哈希表写访问进程占用一个中央处理器核心。

50、根据本发明提供的一种哈希连接方法,所述方法还包括:

51、当各个所述数据库节点扫描完成自身节点中的所述第一元组数据后,向其它各个所述数据库节点发送扫描完成消息;

52、在各个所述数据库节点扫描完成自身节点中的所述第一元组数据,且接收到其它所有所述数据库节点发送的所述扫描完成消息后,确定各个所述数据库节点的所述二维哈希表构建完成。

53、根据本发明提供的一种哈希连接方法,所述基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组;

54、基于所述第一预设哈希函数,对所述第二元组数据进行哈希计算,得到第二行索引哈希值;

55、基于所述第二预设哈希函数,对所述第二元组数据进行哈希计算,得到第二列索引哈希值;

56、将所述第二行索引哈希值和所述第二列索引哈希值作为所述第二元组数据对应的所述第二哈希值组。

57、根据本发明提供的一种哈希连接方法,所述根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,包括:

58、根据各个所述数据库节点的所述第二哈希值组,确定目标二维哈希表所在的数据库节点,并与所述目标二维哈希表所在的数据库节点进行连接,构建哈希连接数据;

59、若所述目标二维哈希表所在的数据库节点为本地数据库节点,基于所述本地数据库节点,根据所述哈希连接数据,构建对应的哈希连接表;

60、若所述目标二维哈希表所在的数据库节点为除所述本地数据库节点以外的其它数据库节点,将所述哈希连接数据发送至所述目标二维哈希表所在的数据库节点,以供所述目标二维哈希表所在的数据库节点根据接收到的所述哈希连接数据,构建对应的哈希连接表;

61、所述根据所有所述哈希连接数据,得到哈希连接结果,包括:

62、当各个所述数据库节点完成自身节点中的哈希连接后,向其它各个所述数据库节点发送哈希连接表建立完成消息;

63、在各个所述数据库节点完成自身节点中的哈希连接表,且接收到其它所有所述数据库节点发送的所述哈希连接表建立完成消息后,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。

64、根据本发明提供的一种哈希连接方法,所述将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果,包括:

65、判断所述数据库节点是否为最高性能的数据库节点,若是,通过最高性能的所述数据库节点,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。

66、根据本发明提供的一种哈希连接方法,各个所述数据库节点之间通过远程直接内存访问传输协议进行通信连接。

67、本发明还提供一种哈希连接装置,包括:

68、元组数据获取模块,用于获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;

69、第一哈希处理模块,用于基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;

70、第二哈希处理模块,用于基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;

71、输出模块,用于根据所有所述哈希连接数据,得到哈希连接结果。

72、本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述哈希连接方法。

73、本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述哈希连接方法。

74、本发明提供的哈希连接方法、装置、电子设备及存储介质,通过获取所有数据库节点中的第一元组数据,在哈希表建立阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第一元组数据对应的第一哈希值组,并根据第一哈希值组,构建第一数据子表对应的二维哈希表,进而在探测阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第二元组数据对应的第二哈希值组,从而根据第二哈希值组和二维哈希表,通过获取到的所有哈希连接数据,得到哈希连接结果,降低哈希冲突概率的同时也避免数据元组在各个数据库节点之间进行多次传输和合并计算,提高了分布式数据库性能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1