CN117827848B - 哈希连接方法、装置、电子设备及存储介质 - Google Patents
哈希连接方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117827848B CN117827848B CN202410239948.6A CN202410239948A CN117827848B CN 117827848 B CN117827848 B CN 117827848B CN 202410239948 A CN202410239948 A CN 202410239948A CN 117827848 B CN117827848 B CN 117827848B
- Authority
- CN
- China
- Prior art keywords
- hash
- database node
- preset
- data
- database
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 123
- 230000006870 function Effects 0.000 claims description 310
- 238000004364 calculation method Methods 0.000 claims description 108
- 239000006185 dispersion Substances 0.000 claims description 68
- 238000012545 processing Methods 0.000 claims description 44
- 230000015654 memory Effects 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 31
- 238000012163 sequencing technique Methods 0.000 claims description 19
- 230000005540 biological transmission Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 10
- 230000001133 acceleration Effects 0.000 claims description 9
- 238000010276 construction Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 description 10
- 238000001514 detection method Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000001174 ascending effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种哈希连接方法、装置、电子设备及存储介质,涉及数据库技术领域,该方法包括:获取所有数据库节点中的第一元组数据,其中,第一元组数据为第一数据子表的元组数据;基于第一预设哈希函数和第二预设哈希函数,计算得到第一元组数据对应的第一哈希值组,并根据各个第一哈希值组,构建各个第一数据子表对应的二维哈希表;基于第一预设哈希函数和第二预设哈希函数,计算得到第二元组数据对应的第二哈希值组,并根据第二哈希值组和二维哈希表,获取对应的哈希连接数据,其中,第二元组数据为第二数据子表的元组数据;根据所有哈希连接数据,得到哈希连接结果。本发明降低哈希冲突概率,提高了分布式数据库性能。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种哈希连接方法、装置、电子设备及存储介质。
背景技术
连接是数据库表之间的常用操作,通过把多个表之间某列相等的元组提取出来组成新的表,从而实现数据库的查询操作。
哈希连接是数据库中最常用的连接算法,主要分为建立阶段和探测阶段,在相关技术中,对于分布式数据库的哈希连接过程,采用哈希函数进行哈希计算,执行哈希连接的各节点之间主要通过元组的方式进行数据传递,数据传递到连接节点后进行哈希连接,最终进行合并汇总。
然而,在相关技术中,对于某些数据库应用,存在哈希冲突风险较大的情况,同时,通过元组进行数据传递的方式会导致哈希连接后的元组再次组成哈希表,严重影响了分布式数据库的性能。因此,现在亟需一种哈希连接方法、装置、电子设备及存储介质来解决上述问题。
发明内容
针对现有技术存在的问题,本发明提供一种哈希连接方法、装置、电子设备及存储介质。
本发明提供一种哈希连接方法,包括:
获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;
基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;
基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;
根据所有所述哈希连接数据,得到哈希连接结果。
根据本发明提供的一种哈希连接方法,在所述获取所有数据库节点中的第一元组数据之前,所述方法还包括:
基于所述二维哈希表的行索引对应的最大哈希值和数据库节点总数量,根据各个所述数据库节点的预设排序结果,确定各个所述数据库节点中所述二维哈希表的行索引对应的行哈希值范围。
根据本发明提供的一种哈希连接方法,所述方法还包括:
根据各个所述数据库节点的网际互连协议地址信息,对所有所述数据库节点进行排序,得到各个所述数据库节点的所述预设排序结果。
根据本发明提供的一种哈希连接方法,在所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组之前,所述方法还包括:
从多个所述数据库节点中确定预设数据库节点;
获取所述预设数据库节点中的多个随机元组数据;
基于预设哈希函数备选库中的各个备选哈希函数,通过所述预设数据库节点对所有所述随机元组数据进行哈希计算,得到各个所述备选哈希函数对应的备选哈希函数计算结果集合和哈希计算处理时长;
根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数。
根据本发明提供的一种哈希连接方法,所述根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度;
基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数。
根据本发明提供的一种哈希连接方法,所述根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度,包括:
基于哈希离散度公式,根据所述备选哈希函数计算结果集合中各个备选哈希函数计算结果,计算所述备选哈希函数对应的哈希离散度,所述哈希离散度公式为:
;
其中,表示哈希离散度,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示总共有/>个所述随机元组数据,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述二维哈希表中的行索引对应的最大哈希值,/>表示所述二维哈希表中的列索引对应的最大哈希值。
根据本发明提供的一种哈希连接方法,所述从多个所述数据库节点中确定预设数据库节点,包括:
获取各个所述数据库节点的实时运行状态数据;
将所述实时运行状态数据满足预设运行状态数据的所述数据库节点确定为所述预设数据库节点。
根据本发明提供的一种哈希连接方法,所述方法还包括:
基于预设哈希函数备选库中的各个备选哈希函数,通过预设加速硬件单元,对所有所述随机元组数据进行哈希计算加速。
根据本发明提供的一种哈希连接方法,所述预设哈希函数判断阈值包括哈希离散度阈值和哈希计算时长阈值;
所述基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
将所述哈希离散度大于所述哈希离散度阈值,且所述哈希计算处理时长小于所述哈希计算时长阈值的所述备选哈希函数作为待定哈希函数;
在确定所述待定哈希函数的数量至少为两个时,根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数。
根据本发明提供的一种哈希连接方法,所述根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数,包括:
基于各个所述待定哈希函数对应的所述哈希离散度,按照从大到小的顺序对各个所述待定哈希函数进行排序,得到哈希离散度排序结果;
根据所述哈希离散度排序结果,将第一排序的所述哈希离散度对应的所述待定哈希函数确定为所述第一预设哈希函数,将第二排序的所述哈希离散度对应的所述待定哈希函数确定为所述第二预设哈希函数。
根据本发明提供的一种哈希连接方法,所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,包括:
基于所述第一预设哈希函数,对所述第一元组数据进行哈希计算,得到第一行索引哈希值;
基于所述第二预设哈希函数,对所述第一元组数据进行哈希计算,得到第一列索引哈希值;
将所述第一行索引哈希值和所述第一列索引哈希值作为所述第一元组数据对应的所述第一哈希值组。
根据本发明提供的一种哈希连接方法,所述根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,包括:
判断本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值是否在目标行哈希值范围内,其中,所述目标行哈希值范围为所述本地数据库节点中所述二维哈希表的行索引对应的行哈希值范围;
若在所述目标行哈希值范围内,根据所述本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值,构建所述本地数据库节点中的所述第一数据子表对应的所述二维哈希表,并将所述第一元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述本地数据库节点中对应的内存位置,其中,所述二维哈希表中的每一行对应不同的所述第一行索引哈希值,所述二维哈希表中的每一列对应不同的所述第一列索引哈希值;
若不在所述目标行哈希值范围内,将所述本地数据库节点中的所述第一元组数据作为待写入元组数据,根据所述待写入元组数据对应的所述第一行索引哈希值,以及除所述本地数据库节点以外的其它所述数据库节点中的所述二维哈希表的行索引对应的行哈希值范围,确定目标数据库节点,并将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表。
根据本发明提供的一种哈希连接方法,所述方法还包括:
在各个所述数据库节点中构建公共溢出区和哈希表写访问进程,其中,所述公共溢出区用于保存发生哈希冲突的元组数据;
所述将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表,包括:
根据所述第一行索引哈希值和所述第一列索引哈希值,确定所述待写入元组数据在所述目标数据库节点的所述二维哈希表中对应的存储单元,其中,所述存储单元是基于所述目标数据库节点的所述二维哈希表中的行索引和所述列索引确定得到;
判断所述目标数据库节点的所述二维哈希表中对应的所述存储单元是否为空,若所述存储单元为空,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述目标数据库节点的所述二维哈希表中对应的存储单元,并将所述待写入元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至对应的所述存储单元;
若所述存储单元不为空,判断所述待写入元组数据与所述目标数据库节点的所述二维哈希表中对应的所述存储单元中已存储的元组数据是否相同,若不相同,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值、所述第一列索引哈希值和所述待写入元组数据存储至所述公共溢出区。
根据本发明提供的一种哈希连接方法,各个所述数据库节点中的所述哈希表写访问进程占用一个中央处理器核心。
根据本发明提供的一种哈希连接方法,所述方法还包括:
当各个所述数据库节点扫描完成自身节点中的所述第一元组数据后,向其它各个所述数据库节点发送扫描完成消息;
在各个所述数据库节点扫描完成自身节点中的所述第一元组数据,且接收到其它所有所述数据库节点发送的所述扫描完成消息后,确定各个所述数据库节点的所述二维哈希表构建完成。
根据本发明提供的一种哈希连接方法,所述基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组;
基于所述第一预设哈希函数,对所述第二元组数据进行哈希计算,得到第二行索引哈希值;
基于所述第二预设哈希函数,对所述第二元组数据进行哈希计算,得到第二列索引哈希值;
将所述第二行索引哈希值和所述第二列索引哈希值作为所述第二元组数据对应的所述第二哈希值组。
根据本发明提供的一种哈希连接方法,所述根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,包括:
根据各个所述数据库节点的所述第二哈希值组,确定目标二维哈希表所在的数据库节点,并与所述目标二维哈希表所在的数据库节点进行连接,构建哈希连接数据;
若所述目标二维哈希表所在的数据库节点为本地数据库节点,基于所述本地数据库节点,根据所述哈希连接数据,构建对应的哈希连接表;
若所述目标二维哈希表所在的数据库节点为除所述本地数据库节点以外的其它数据库节点,将所述哈希连接数据发送至所述目标二维哈希表所在的数据库节点,以供所述目标二维哈希表所在的数据库节点根据接收到的所述哈希连接数据,构建对应的哈希连接表;
所述根据所有所述哈希连接数据,得到哈希连接结果,包括:
当各个所述数据库节点完成自身节点中的哈希连接后,向其它各个所述数据库节点发送哈希连接表建立完成消息;
在各个所述数据库节点完成自身节点中的哈希连接表,且接收到其它所有所述数据库节点发送的所述哈希连接表建立完成消息后,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
根据本发明提供的一种哈希连接方法,所述将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果,包括:
判断所述数据库节点是否为最高性能的数据库节点,若是,通过最高性能的所述数据库节点,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
根据本发明提供的一种哈希连接方法,各个所述数据库节点之间通过远程直接内存访问传输协议进行通信连接。
本发明还提供一种哈希连接装置,包括:
元组数据获取模块,用于获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;
第一哈希处理模块,用于基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;
第二哈希处理模块,用于基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;
输出模块,用于根据所有所述哈希连接数据,得到哈希连接结果。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述哈希连接方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述哈希连接方法。
本发明提供的哈希连接方法、装置、电子设备及存储介质,通过获取所有数据库节点中的第一元组数据,在哈希表建立阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第一元组数据对应的第一哈希值组,并根据第一哈希值组,构建第一数据子表对应的二维哈希表,进而在探测阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第二元组数据对应的第二哈希值组,从而根据第二哈希值组和二维哈希表,通过获取到的所有哈希连接数据,得到哈希连接结果,降低哈希冲突概率的同时也避免数据元组在各个数据库节点之间进行多次传输和合并计算,提高了分布式数据库性能。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图进行简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的哈希连接方法的流程示意图;
图2为本发明提供的二维哈希表的示意图;
图3为本发明提供的哈希连接过程的整体示意图;
图4为本发明提供的哈希连接装置的结构示意图;
图5为本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
分布式数据库,是通过计算机网络将物理上分散的多个数据库单元连接起来,从而组成的一个逻辑上统一的数据库,其中,每个被连接起来的数据库单元可称为节点(或数据库节点),分布式数据库包括至少两个节点。这些节点可以是分布在不同地方的物理节点,也可以是分布同一个物理数据库中的逻辑节点。
哈希连接作为数据库中最常用的连接算法,主要分为两个阶段:建立阶段和探测阶段。在建立阶段,首先选择数据库中一个表(为了减少建立哈希表的时间和空间,一般选择较小的表,可记为第一数据表),对其中每个元组上的连接属性采用哈希函数,得到对应的哈希值,从而建立一个哈希表。在探测阶段,对数据库中另一个表(可记为第二数据表),扫描它的每一行并计算连接属性的哈希值,并将其与之前建立的哈希表对比,获取能够实现等值连接的元组。如果探测到第二数据表中某个元组与哈希表中某个元组满足等值连接的条件,则将它们进行连接,从而生成新的表。
在一些相关技术中,哈希计算采用固定的哈希函数,哈希连接的节点之间主要通过元组的方式进行数据传递,数据传递到连接节点后进行哈希连接,最终进行合并汇总。然而,固定的哈希函数不能适应不同的数据要求,在某些数据库应用中存在较大哈希冲突风险,通过元组进行数据传递的方式,会导致哈希连接后的元组再次组成哈希表的情况,严重影响了分布式数据库的性能。
在另一些相关技术中,为了减少数据传输量,各节点首先用本节点存储的第一数据表生成哈希表,然后广播给其它节点;进一步地,各节点将本节点生成的哈希表以及接收到的其它节点的哈希表进行合并,生成哈希合并表;然后,各节点通过本节点的第二数据表与哈希合并表进行连接,生成中间哈希连接表,然后广播给其它节点;进而通过各节点将本节点的中间哈希连接表和接收到的中间哈希连接表进行合并,生成最终的哈希连接表。然而,这些相关技术中,哈希计算依然采用固定的哈希函数,固定的哈希函数不能适应不同的数据要求,哈希冲突风险依旧较大,哈希表和中间哈希连接表需要在节点之间广播与合并,仍然对分布式数据库的性能造成影响。
针对相关技术中分布式数据库存在的哈希连接性能问题,本发明提供了一种哈希连接方法,通过选取哈希函数以适应不同数据库应用的需求,在生成哈希连接表过程中,设计了一种分布式二维哈希机制,并采用远程直接内存访问(Remote Direct MemoryAccess,简称RDMA)技术,降低哈希冲突概率,同时避免数据元组或中间数据在节点之间多次传输与合并计算,从而提高分布式数据库的性能。
图1为本发明提供的哈希连接方法的流程示意图,如图1所示,本发明提供了一种哈希连接方法,包括:
步骤101,获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据。
分布式数据库系统通常由多个数据库节点组成,每个数据库节点都对应存储着一个数据子表,即一个全局数据表会拆分为多个数据子表,存储在各个数据库节点中。在本发明中,分布式数据库系统有K个节点(K大于等于2)在进行分布式查询时,各个数据库节点扫描自身存储的第一数据子表中的元组数据,得到第一元组数据,以用于后续的哈希表构建过程。
在一实施例中,当使用哈希连接来查询学校学生的成绩时,在数据库节点中存在两个数据表,一个包含学生信息表(如学生ID、姓名等),另一个包含学生成绩信息表(如学生ID、科目、成绩等)。在进行哈希连接之前,需要选择用于连接的键,即连接属性,属于两个数据表中共有的列,如学生ID是一个合适的连接键,可以用于将学生信息和学生成绩信息关联起来。对于学生信息表,将学生ID作为哈希键,将学生ID和对应的学生信息存储在哈希表中;对于成绩信息表,同样使用学生ID作为哈希键,将学生ID和对应的成绩信息存储在另一个哈希表中。
进一步地,可以开始执行哈希连接操作。首先,遍历学生信息表中的每一行,对于每一行,使用学生ID作为哈希键,在成绩信息表的哈希表中进行查找,如果找到匹配的学生ID,可将学生信息和对应的成绩信息合并。最后,将每个匹配的学生信息和对应的成绩信息作为查询结果输出,从而获得学校学生的成绩列表,其中包括学生的基本信息和对应科目的成绩。
步骤102,基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引。
目前的哈希表是一种一维表,哈希值作为哈希表的索引,可以实现数据的快速查找。由于存在哈希冲突,本发明提供一种二维哈希表结构,各个数据库节点采用两个不同的哈希函数(即第一预设哈希函数和第二预设哈希函数),对自身存储的第一数据子表对应的第一元组数据进行哈希计算,得到第一哈希值组(包括第一预设哈希函数根据第一元组数据计算得到的哈希结果和第二预设哈希函数根据第一元组数据计算得到的哈希结果),两个不同哈希函数的哈希计算结果分别作为二维哈希表的行索引和列索引,图2为本发明提供的二维哈希表的示意图,如图2所示,第一预设哈希函数用于构建二维哈希表中的行索引,记为HashA(x),用于定位元组数据对应的数据库节点,例如,哈希值范围1至30对应第一数据库节点,即二维哈希表中的第1行至第30行均属于第一数据库节点的哈希值范围,通过第一预设哈希函数对元组数据进行哈希计算,得到的哈希值为25,此时可确定该元组数据对应的行索引为二维哈希表中的第25行;第二预设哈希函数用于构建二维哈希表中的列索引,记为HashB(x),用于确定元组数据在二维哈希表中的列,例如,上述元组数据对应的行索引为二维哈希表中的第25行,进而再通过第二预设哈希函数对该元组数据进行哈希计算,得到哈希值为5,此时可确定该元组数据对应的列索引为二维哈希表中的第5列,其中,HashA(x)的最大哈希值范围为0至M,HashB(x)的最大哈希值范围为0至N。可参考图2所示,由于行索引和列索引各自采用的哈希函数不相同,因此哈希冲突的可能性非常低,同时又能保证元组数据在二维哈希表均衡分布。
步骤103,基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据。
在本发明中,对于分布式数据库系统中待进行哈希连接的表(即第二数据子表),各个数据库节点通过第一预设哈希函数和第二预设哈希函数分别对第二数据子表中的元组数据(即第二元组数据)进行哈希计算,得到对应的第二哈希值组(包括第一预设哈希函数根据第二元组数据计算得到的哈希结果和第二预设哈希函数根据第二元组数据计算得到的哈希结果)。第二哈希值组是一个唯一标识,用于快速定位哈希连接数据。
进一步地,各个数据库节点作为本地数据库节点,在哈希探测阶段,根据自身计算得到第二哈希值组,首先查询到对应的数据库节点的二维哈希表,例如,通过第一预设哈希函数,计算得到的第二数据库节点(第二数据库节点对应的行哈希值范围为31至60)中的第二元组数据对应的哈希结果为20,将其作为行哈希值,确定需连接第一数据库节点(第二数据库节点对应的行哈希值范围为1至30);进而根据第二预设哈希函数,计算得到第二数据库节点中的第二元组数据对应的哈希值为5,将其作为列哈希值,从而根据行哈希值和列哈希值,将第二元组数据与第一数据库节点中的元组进行连接,并将其作为新的哈希连接数据保存至第一数据库节点的哈希连接表中。
步骤104,根据所有所述哈希连接数据,得到哈希连接结果。
在本发明中,在确定分布式数据库系统中所有数据库节点全部完成哈希连接后,将各个数据库节点中的哈希连接表进行合并,得到合并后的哈希连接表,并基于这个合并后的哈希连接表中的哈希连接数据,输出最终的哈希连接结果。
本发明提供的哈希连接方法,通过获取所有数据库节点中的第一元组数据,在哈希表建立阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第一元组数据对应的第一哈希值组,并根据第一哈希值组,构建第一数据子表对应的二维哈希表,进而在探测阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第二元组数据对应的第二哈希值组,从而根据第二哈希值组和二维哈希表,通过获取到的所有哈希连接数据,得到哈希连接结果,降低哈希冲突概率的同时也避免数据元组在各个数据库节点之间进行多次传输和合并计算,提高了分布式数据库性能。
在上述实施例的基础上,在所述获取所有数据库节点中的第一元组数据之前,所述方法还包括:
基于所述二维哈希表的行索引对应的最大哈希值和数据库节点总数量,根据各个所述数据库节点的预设排序结果,确定各个所述数据库节点中所述二维哈希表的行索引对应的行哈希值范围。
在本发明中,在进行哈希连接前,需要为各个数据库节点分配对应的行哈希值范围,例如,行哈希值1至50对应第一数据库节点,行哈希值51至100对应第二数据库节点。具体地,在本发明中,需要确定在二维哈希表中行索引对应的最大哈希值和数据库节点的总数量,其中,最大哈希值可以通过哈希函数的输出范围来确定,而数据库节点的总数量则是已知的。
进一步地,针对每个数据库节点,需要了解其预设的排序结果,可基于预设排序规则,对数据库节点进行升序或降序排序。可选地,在上述实施例的基础上,所述方法还包括:
根据各个所述数据库节点的网际互连协议(Internet Protocol,简称IP)地址信息,对所有所述数据库节点进行排序,得到各个所述数据库节点的所述预设排序结果。
在本发明中,首先收集所有数据库节点的 IP 地址信息,这些信息可以是预先配置好的或者通过网络发现和扫描获取的。然后,将收集到的 IP 地址进行解析,并提取出作为排序依据的部分,例如,可以提取出 IP 地址的数值、子网掩码的长度、或者将 IP 地址转换成整数形式等。接着,根据提取的排序依据,对所有数据库节点进行排序,可以使用相关排序算法,如快速排序、归并排序等,根据排序依据的大小进行升序排列,即可得到数据库节点的预设排序结果,有助于确定每个节点在系统中的位置和顺序,方便后续的数据处理、负载均衡等操作。
在确定了各个数据库节点的预设排序结果之后,进一步地,根据各个数据库节点的预设排序结果,结合最大哈希值和数据库节点总数量的信息,确定每个数据库节点中的二维哈希表的行索引对应的行哈希值范围,具体地,根据二维哈希表的行索引对应的最大哈希值和数据库节点总数量,计算得到对应的行哈希值范围:
;
其中,i表示预设排序结果中的第i个数据库节点,M表示二维哈希表中的行索引对应的最大哈希值,K表示数据库节点总数量,。
本发明根据二维哈希表的行索引对应的最大哈希值和数据库节点总数量,结合预设排序结果,确定各个数据库节点中二维哈希表的行索引对应的行哈希值范围,有助于有效地划分数据处理的范围,提高系统的并行处理能力和效率。
在上述实施例的基础上,在所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组之前,所述方法还包括:
从多个所述数据库节点中确定预设数据库节点;
获取所述预设数据库节点中的多个随机元组数据;
基于预设哈希函数备选库中的各个备选哈希函数,通过所述预设数据库节点对所有所述随机元组数据进行哈希计算,得到各个所述备选哈希函数对应的备选哈希函数计算结果集合和哈希计算处理时长;
根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述所述第一预设哈希函数和所述第二预设哈希函数。
在本发明中,对于每个备选哈希函数,将预设数据库节点中的所有随机元组数据进行哈希计算,得到了每个备选哈希函数对应的备选哈希函数计算结果集合和哈希计算处理时长。然后,根据备选哈希函数计算结果集合和哈希计算处理时长,来确定第一和第二预设哈希函数,具体的选择方法可基于性能指标或者其他评估标准。
在上述实施例的基础上,所述根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度;
基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数。
哈希函数是哈希连接的基础,需要在随机性和计算效率之间平衡,合适的哈希算法可以降低哈希冲突,同时可提升哈希连接的效率,不同侧重方向的数据库应用应当选择合适的哈希函数。因此,本发明提出了一种针对第一预设哈希函数和第二预设哈希函数的确定方法。在本发明中,分布式数据库系统为哈希连接准备哈希函数备选库,在进行哈希连接之前执行以下步骤,从而确定行哈希函数和列哈希函数,即第一预设哈希函数HashA(x)和第二预设哈希函数HashB(x),具体地,首先,采用特定节点法或者采用其它方法选定一个数据库节点,由该数据库节点负责确定每次哈希连接任务所需的行哈希函数和列哈希函数。
可选地,在上述实施例的基础上,所述从多个所述数据库节点中确定预设数据库节点,包括:
获取各个所述数据库节点的实时运行状态数据;
将所述实时运行状态数据满足预设运行状态数据的所述数据库节点确定为所述预设数据库节点。
在本发明中,通过与数据库节点建立连接,可以从每个数据库节点中获取实时的运行状态数据,这些运行状态数据包括数据库节点的负载情况、中央处理器(CentralProcessing Unit,简称CPU)使用率、内存占用和网络延迟等指标。然后,确定一组预设运行状态数据,这些预设运行状态数据可以是根据系统需求和性能要求设定的阈值或规则,例如,可以设定 CPU 使用率不超过某个百分比、内存占用低于某个阈值以及网络延迟在可接受范围内等。接着,将收集到的实时运行状态数据与预设运行状态数据进行匹配,对于每个数据库节点,检查实时运行状态数据是否满足预设的运行状态数据,如果某个节点的数据符合预设条件,则将其标记为预设数据库节点。本发明根据实际的运行情况选择合适的数据库节点用于哈希函数的确定过程,可提高系统的性能和效率。
在确定预设数据库节点之后,从预设数据库节点或全数据库的第一数据表中随机读取Q个元组数据,在本发明中,Q取20。然后,预设数据库节点从哈希备选库中,按顺序(也可随机)从哈希函数备选库中选取备选哈希函数进行后续哈希计算,即使用各个备选哈希函数分别对Q个元组数据进行哈希计算,从而获取Q个元组数据被不同的哈希函数计算得到的Q个哈希结果(即各个备选哈希函数对应的备选哈希函数计算结果集合)和哈希计算执行时间(即哈希计算处理时长T)。进一步地,使用各个备选哈希函数对应的Q个元组数据的哈希计算结果,计算哈希离散度。
具体地,在上述实施例的基础上,所述根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度,包括:
基于哈希离散度公式,根据所述备选哈希函数计算结果集合中各个备选哈希函数计算结果,计算所述备选哈希函数对应的哈希离散度,所述哈希离散度公式为:
;
其中,表示哈希离散度,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示总共有/>个所述随机元组数据,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述二维哈希表中的行索引对应的最大哈希值,/>表示所述二维哈希表中的列索引对应的最大哈希值。
通过上述哈希离散度公式,得到备选哈希函数在计算Q个元组数据时对应的哈希离散度,然后,采用阈值法判定备选哈希算法是否符合要求。具体地,在上述实施例的基础上,所述预设哈希函数判断阈值包括哈希离散度阈值和哈希计算时长阈值;
所述基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
将所述哈希离散度大于所述哈希离散度阈值,且所述哈希计算处理时长小于所述哈希计算时长阈值的所述备选哈希函数作为待定哈希函数;
在确定所述待定哈希函数的数量至少为两个时,根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数。
在本发明中,当哈希离散度大于哈希离散度阈值/>,且哈希计算处理时长T小于哈希计算时长阈值/>时,则将该哈希离散度/>对应的备选哈希函数作为待定哈希函数,需要进一步判断是否作为行哈希函数或列哈希函数。在一实施例中,将备选哈希数据库中所有的哈希函数均采用上述过程进行哈希离散度计算和哈希计算处理时长统计后,根据哈希离散度的大小,从多个待定哈希函数中获取第一预设哈希函数和第二预设哈希函数,例如,选取两个哈希离散度不同的两个待定哈希函数作为第一预设哈希函数和第二预设哈希函数。优选地,在一实施例中,在对备选哈希数据库中的哈希函数均进行哈希离散度计算时,若待定哈希函数的数量至少为两个,直接将当前已计算得到的哈希离散度/>值最大的待定哈希函数作为行哈希函数(即第一预设哈希函数),将哈希离散度/>值第二大的待定哈希函数作为列哈希函数(即第二预设哈希函数),以减少数据库节点的计算资源开销。
优选地,所述根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数,包括:
基于各个所述待定哈希函数对应的所述哈希离散度,按照从大到小的顺序对各个所述待定哈希函数进行排序,得到哈希离散度排序结果;
根据所述哈希离散度排序结果,将第一排序的所述哈希离散度对应的所述待定哈希函数确定为所述第一预设哈希函数,将第二排序的所述哈希离散度对应的所述待定哈希函数确定为所述第二预设哈希函数。
在本发明中,对所有待定哈希函数进行排序,将哈希离散度值最大的待定哈希函数作为行哈希函数(即第一预设哈希函数),将哈希离散度/>值第二大的待定哈希函数作为列哈希函数(即第二预设哈希函数),从而得到更符合的哈希函数。
在上述实施例的基础上,所述方法还包括:
基于预设哈希函数备选库中的各个备选哈希函数,通过预设加速硬件单元,对所有所述随机元组数据进行哈希计算加速。
预设数据库节点在确定第一预设哈希函数和所述第二预设哈希函数后,向其余数据库节点发送消息,以告知确定的行哈希函数和列哈希函数。在本发明中,涉及到的哈希计算过程,可以是由CPU来完成或者预设加速硬件单元来完成。本发明根据哈希函数备选库,设计一个加速硬件单元,这个加速硬件单元可以是专门定制的加速器,也可以是使用现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)等可编程硬件实现的加速器,加速硬件单元可支持并行处理,以提高哈希计算的速度。
在上述实施例的基础上,所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,包括:
基于所述第一预设哈希函数,对所述第一元组数据进行哈希计算,得到第一行索引哈希值;
基于所述第二预设哈希函数,对所述第一元组数据进行哈希计算,得到第一列索引哈希值;
将所述第一行索引哈希值和所述第一列索引哈希值作为所述第一元组数据对应的所述第一哈希值组。
在本发明中,需要定义第一预设哈希函数和第二预设哈希函数,如MD5、SHA-1和SHA-256等,或者根据具体需求开发自定义的哈希函数。进一步地,使用第一预设哈希函数对第一元组数据进行哈希计算,得到第一行索引哈希值;同时,使用第二预设哈希函数对第一元组数据进行哈希计算,得到第一列索引哈希值。最后,将第一哈希值与第一元组数据相关联,作为第一元组数据对应的第一哈希值组,以进行后续的二维哈希表的构建过程。
在上述实施例的基础上,所述根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,包括:
判断本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值是否在目标行哈希值范围内,其中,所述目标行哈希值范围为所述本地数据库节点中所述二维哈希表的行索引对应的行哈希值范围;
若在所述目标行哈希值范围内,根据所述本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值,构建所述本地数据库节点中的所述第一数据子表对应的所述二维哈希表,并将所述第一元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述本地数据库节点中对应的内存位置,其中,所述二维哈希表中的每一行对应不同的所述第一行索引哈希值,所述二维哈希表中的每一列对应不同的所述第一列索引哈希值;
若不在所述目标行哈希值范围内,将所述本地数据库节点中的所述第一元组数据作为待写入元组数据,根据所述待写入元组数据对应的所述第一行索引哈希值,以及除所述本地数据库节点以外的其它所述数据库节点中的所述二维哈希表的行索引对应的行哈希值范围,确定目标数据库节点,并将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表。
在本发明中,各个数据库节点获取本地存储的第一数据子表的元组数据(即第一元组数据),进而根据两个预设哈希算法,计算行哈希值HashA(x)和列哈希值HashB(x)。进一步地,以其中一个数据库节点作为本地数据库节点进行说明,该节点根据行哈希值的值,确定该本地存储的第一元组数据应该存储在分布式数据库系统中对应的目标数据库节点中(如上述实施例中根据行哈希值确定对应的节点),进而根据行哈希值和列哈希值,获取该第一元组数据在目标数据库节点的内存位置,并将第一元组数据对应的第一行索引哈希值和第一列索引哈希值发送至目标数据库节点,使得目标数据库节点根据第一行索引哈希值和第一列索引哈希值构建自身的二维哈希表,同时,将第一元组数据按照对应的行索引和列索引存储至节点中对应的内存位置。
具体地,对于第一元组数据,在本地数据库节点中计算出它的第一行索引哈希值,根据本地数据库节点中的二维哈希表的行索引对应的行哈希值范围,判断该第一行索引哈希值是否在目标行哈希值范围内,若在目标行哈希值范围内,即第一元组数据属于本地数据库节点,则根据该第一元组数据的第一行索引哈希值和第一列索引哈希值,在本地数据库节点中构建第一数据子表对应的二维哈希表。若不在目标行哈希值范围内,则将该第一元组数据视为待写入元组数据,根据待写入元组数据的第一行索引哈希值,在除本地数据库节点以外的其它数据库节点中确定目标数据库节点。
进一步地,将待写入元组数据的第一行索引哈希值和第一列索引哈希值发送至目标数据库节点,以构建目标数据库节点中的第一数据子表对应的二维哈希表,并完成数据的存储或查找操作。优选地,在本发明中,各个数据库节点之间可通过RDMA直接读取对应目标节点的存储单元,从而获得二维哈希表中相关数据。
在上述实施例的基础上,所述方法还包括:
在各个所述数据库节点中构建公共溢出区和哈希表写访问进程,其中,所述公共溢出区用于保存发生哈希冲突的元组数据;
所述将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表,包括:
根据所述第一行索引哈希值和所述第一列索引哈希值,确定所述待写入元组数据在所述目标数据库节点的所述二维哈希表中对应的存储单元,其中,所述存储单元是基于所述目标数据库节点的所述二维哈希表中的行索引和所述列索引确定得到;
判断所述目标数据库节点的所述二维哈希表中对应的所述存储单元是否为空,若所述存储单元为空,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述目标数据库节点的所述二维哈希表中对应的存储单元,并将所述待写入元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至对应的所述存储单元;
若所述存储单元不为空,判断所述待写入元组数据与所述目标数据库节点的所述二维哈希表中对应的所述存储单元中已存储的元组数据是否相同,若不相同,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述公共溢出区。
在本发明提供的二维哈希表的基础上,针对存在的极小概率的哈希冲突的可能性,本发明在各个数据库节点对应的二维哈希表的每行构建一个公共溢出区,公共溢出区可以动态扩展,以有效使用内存,用于保存发生哈希冲突的元组数据,其中,公共溢出区用列索引的哈希值进行排序,如,按列索引从小到大或从大到小排序。在一实施例中,可参考图2所示,若第一数据库节点中二维哈希表的某个位置(如第二行的第三列)已存在元组数据,此时如果有个新获取到元组数据的哈希结果也是这个位置,需要将新获取到的元组数据存储至对应的公共溢出区(即二维哈希表中第二行对应的公共溢出区)。
在本发明中,各数据库节点设置对应内存区域,用于存放二维哈希表及公共溢出区,该内存区域允许其它数据库节点通过RDMA直接读取但不能修改数据。在本发明中,由于二维哈希表及公共溢出区分开存储在不同的数据库节点,可以有效的利用各数据库节点的算力和缓存,有利于提升哈希表建立阶段和哈希连接探测阶段的性能。
同时,在本发明中,各数据库节点创建一个哈希表写访问进程,该哈希表访问进程可接收其它节点发送的哈希键值和元组数据消息并进行处理,将处理后的数据写入到二维哈希表及公共溢出区中。在本发明中,如果目标数据库节点中的存储单元为空,则将行列哈希键值以及待写入元组数据通过RDMA发送给对应节点(即目标数据库节点)的哈希表写访问进程,由该节点的哈希表写访问进程负责存储;或者,在目标数据库节点的二维哈希表对应的存储单元已经有数据但与待写入元组数据不同,则将行列哈希键值以及该待写入元组数据通过RDMA发送给目标数据库节点的哈希表写访问进程,由该节点的哈希表写访问进程负责存储在该节点哈希表对应的公共溢出区;如果目标数据库节点的二维哈希表对应的存储单元已经有数据且与待写入元组数据相同,则不作处理继续扫描下一元组数据。
在上述实施例的基础上,各个所述数据库节点中的所述哈希表写访问进程占用一个中央处理器核心。
在本发明中,各数据库节点可以将存储在本地节点的第一元组数据分配给节点内不同的CPU核心并行执行上述哈希表建立步骤,以提高数据库节点的处理速度。在一实施例中,也可根据实际需求,各数据库节点单线程执行上述哈希表建立步骤。在本发明中,由于二维哈希表及公共溢出区的修改是由单进程串行化处理写请求,哈希表写访问进程对应设置一个CPU核心,无需设置应用访问锁,这种无锁化及专用CPU核心的架构可以提高分布式数据库的性能。
在上述实施例的基础上,所述方法还包括:
当各个所述数据库节点扫描完成自身节点中的所述第一元组数据后,向其它各个所述数据库节点发送哈希表扫描完成消息;
在各个所述数据库节点扫描完成自身节点中的所述第一元组数据,且接收到其它所有所述数据库节点发送的所述扫描完成消息后,确定各个所述数据库节点的所述二维哈希表构建完成。
在本发明中,各个数据库节点在完成本节点中第一数据子表的元组数据扫描后,向其余数据库节点发送扫描完成消息。进一步地,当各数据库节点接收到其余K-1个数据库节点的扫描完成消息,确认各个数据库节点的二维哈希表构建完成,此时,这些二维哈希表按照行哈希值分别存储在对应的K个数据库节点。
在本发明中,由于二维哈希表构建是由K个数据库节点同时运算,通过RDMA技术在K个数据库节点之间实现数据的高性能的读、写、发送以及接收,由于各个二维哈希表是分开保存在对应的K个数据库节点的内存中,从而避免通过传递元组数据被多次加工成哈希表和哈希表合并的重复逻辑,有效提高了分布式数据库的性能。
在上述实施例的基础上,所述基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组;
基于所述第一预设哈希函数,对所述第二元组数据进行哈希计算,得到第二行索引哈希值;
基于所述第二预设哈希函数,对所述第二元组数据进行哈希计算,得到第二列索引哈希值;
将所述第二行索引哈希值和所述第二列索引哈希值作为所述第二元组数据对应的所述第二哈希值组。
在本发明中,基于第一预设哈希函数和第二预设哈希函数,根据第二元组数据的内容生成对应的行索引哈希值和列索引哈希值,从而构建出第二哈希值组,有助于在数据库系统中快速定位和索引第二元组数据,并支持相关的数据存储、查找和操作。
在上述实施例的基础上,所述根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,包括:
根据各个所述数据库节点的所述第二哈希值组,确定目标二维哈希表所在的数据库节点,并与所述目标二维哈希表所在的数据库节点进行连接,构建哈希连接数据;
若所述目标二维哈希表所在的数据库节点为本地数据库节点,基于所述本地数据库节点,根据所述哈希连接数据,构建对应的哈希连接表;
若所述目标二维哈希表所在的数据库节点为除所述本地数据库节点以外的其它数据库节点,将所述哈希连接数据发送至所述目标二维哈希表所在的数据库节点,以供所述目标二维哈希表所在的数据库节点根据接收到的所述哈希连接数据,构建对应的哈希连接表;
所述根据所有所述哈希连接数据,得到哈希连接结果,包括:
当各个所述数据库节点完成自身节点中的哈希连接后,向其它各个所述数据库节点发送哈希连接表建立完成消息;
在各个所述数据库节点完成自身节点中的哈希连接,且接收到其它所有所述数据库节点发送的所述哈希连接表建立完成消息后,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
在本发明中,各数据库节点扫描第二数据子表进行哈希连接,可选地,在一实施例中,各数据库节点可以将存储在本地的第二元组数据分配给本地数据库节点内不同的CPU核心并行执行探测阶段的步骤,以提高数据库的处理速度,在另一实施例中,各数据库节点中的单线程也可执行探测阶段的步骤,其中,探测阶段的步骤具体为:
步骤S1,各个数据库节点扫描本地存储的第二数据子表的元组数据(即第二元组数据),计算各第二元组数据的行哈希值HashA(x)和列哈希值HashB(x);
步骤S2,数据库节点根据第二元组数据的行哈希值和列哈希值,查询到对应数据库节点的二维哈希表(即目标二维哈希表)中的元组数据进行连接,并利用RDMA技术,将新的哈希连接数据按照行哈希值的约定保存在对应的数据库节点上的哈希连接表,例如,第二数据库节点(第二数据库节点对应的行哈希值范围为31至60)中的第二元组数据对应的哈希结果为20,将其作为行哈希值,并根据行哈希值可确定将第二元组数据作为哈希连接数据,保存至第一数据库节点的哈希连接表中(二维哈希表中的第1行至第30行均属于第一数据库节点的哈希值范围)。
步骤S3,各个数据库节点在扫描第二数据子表的元组数据并完成哈希连接后,将向其它数据库节点发送探测结束的消息;
步骤S4,各个数据库节点接收到其余K-1个数据库节点探测结束的消息后,确认哈希连接已经完成,哈希连接完成时,各个哈希连接表按行哈希值的范围存储在对应的K个数据库节点中;
步骤S5,各数据库节点将自身保存的哈希连接表发给指定数据库节点进行合并,得到最终的合并哈希连接表,即得到哈希连接结果。
在本发明中,哈希连接结果的输出阶段可由指定数据库节点输出对应的合并哈希连接表,从而完成查询操作。在上述实施例的基础上,所述将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果,包括:
判断所述数据库节点是否为最高性能的数据库节点,若是,通过最高性能的所述数据库节点,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
在本发明中,可对每个数据库节点进行检查,判断其是否为最高性能的数据库节点,选择最高性能的数据库节点作为合并节点,负责协调并执行哈希连接表的合并操作。
进一步地,合并节点将通过网络通信与其它空闲节点建立连接,并请求它们将各自的哈希连接表发送过来。一旦所有空闲节点的哈希连接表都被发送到合并节点,该合并节点会执行合并算法,将这些哈希连接表合并成,得到哈希连接结果。通过这种方式,可以利用空闲节点的计算资源和处理能力,高效地完成多个哈希连接表的合并操作,从而提高数据库系统的整体性能和效率。
图3为本发明提供的哈希连接过程的整体示意图,本发明提供的哈希连接方法的具体流程可参考图3所示,在生成哈希连接表过程中,通过设计了一种分布式二维哈希机制减少哈希冲突提高数据查询速度,同时利用远程内存访问技术发挥分布式数据库节点的计算资源和内存资源,一方面减少了元组数据在数据库节点中的互传及哈希表的合并操作,避免元组数据或中间数据在数据库节点之间多次传输与合并计算,另一方面充分利用了分布式数据库K个数据库节点的计算资源和内存资源,从而提高分布式数据库的性能。
在上述实施例的基础上,各个所述数据库节点之间通过远程直接内存访问传输协议进行通信连接。
在本发明中,数据库节点之间采用RDMA网络互联,从而不需要CPU干预而直接访问远程主机内存,传输过程只需要网卡参与,基本上不需要消耗CPU的处理功能,具有高带宽、低延迟、无CPU消耗和零拷贝等优点,RDMA有四种实现方案,分别是InfiniBand、RoCE v1、RoCE v2和iWARP,其中,RDMA的verbs编程接口是异步非阻塞式的,两类基本操作分别是Memory verbs和Messaging verbs,Memory verbs包括RDMA Read、RDAM Write和RDMAAtomic;Messaging verbs包括RDMA Send和RDMA Receive。相比Kernel TCP、DPDK等通信手段,RDMA在延迟、吞吐和CPU消耗方面均有明显优势。
下面对本发明提供的哈希连接装置进行描述,下文描述的哈希连接装置与上文描述的哈希连接方法可相互对应参照。
图4为本发明提供的哈希连接装置的结构示意图,如图4所示,本发明提供了一种哈希连接装置,包括元组数据获取模块401、第一哈希处理模块402、第二哈希处理模块403和输出模块404,其中,元组数据获取模块401用于获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;第一哈希处理模块402用于基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;第二哈希处理模块403用于基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;输出模块404用于根据所有所述哈希连接数据,得到哈希连接结果。
本发明提供的哈希连接装置,通过获取所有数据库节点中的第一元组数据,在哈希表建立阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第一元组数据对应的第一哈希值组,并根据第一哈希值组,构建第一数据子表对应的二维哈希表,进而在探测阶段,基于第一预设哈希函数和第二预设哈希函数,计算得到各个数据库节点中第二元组数据对应的第二哈希值组,从而根据第二哈希值组和二维哈希表,通过获取到的所有哈希连接数据,得到哈希连接结果,降低哈希冲突概率的同时也避免数据元组在各个数据库节点之间进行多次传输和合并计算,提高了分布式数据库性能。
本发明提供的装置是用于执行上述各方法实施例的,具体流程和详细内容请参照上述实施例,此处不再赘述。
图5为本发明提供的电子设备的结构示意图,如图5所示,该电子设备可以包括:处理器(Processor)501、通信接口(Communications Interface)502、存储器(Memory)503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。处理器501可以调用存储器503中的逻辑指令,以执行哈希连接方法,该方法包括:获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;根据所有所述哈希连接数据,得到哈希连接结果。
此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的哈希连接方法,该方法包括:获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;根据所有所述哈希连接数据,得到哈希连接结果。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的哈希连接方法,该方法包括:获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;根据所有所述哈希连接数据,得到哈希连接结果。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (22)
1.一种哈希连接方法,其特征在于,包括:
获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;
基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;
基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;
根据所有所述哈希连接数据,得到哈希连接结果。
2.根据权利要求1所述的哈希连接方法,其特征在于,在所述获取所有数据库节点中的第一元组数据之前,所述方法还包括:
基于所述二维哈希表的行索引对应的最大哈希值和数据库节点总数量,根据各个所述数据库节点的预设排序结果,确定各个所述数据库节点中所述二维哈希表的行索引对应的行哈希值范围。
3.根据权利要求2所述的哈希连接方法,其特征在于,所述方法还包括:
根据各个所述数据库节点的网际互连协议地址信息,对所有所述数据库节点进行排序,得到各个所述数据库节点的所述预设排序结果。
4.根据权利要求1所述的哈希连接方法,其特征在于,在所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组之前,所述方法还包括:
从多个所述数据库节点中确定预设数据库节点;
获取所述预设数据库节点中的多个随机元组数据;
基于预设哈希函数备选库中的各个备选哈希函数,通过所述预设数据库节点对所有所述随机元组数据进行哈希计算,得到各个所述备选哈希函数对应的备选哈希函数计算结果集合和哈希计算处理时长;
根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数。
5.根据权利要求4所述的哈希连接方法,其特征在于,所述根据所述备选哈希函数计算结果集合和所述哈希计算处理时长,确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度;
基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数。
6.根据权利要求5所述的哈希连接方法,其特征在于,所述根据所述备选哈希函数计算结果集合,得到所述备选哈希函数对应的哈希离散度,包括:
基于哈希离散度公式,根据所述备选哈希函数计算结果集合中各个备选哈希函数计算结果,计算所述备选哈希函数对应的哈希离散度,所述哈希离散度公式为:
;
其中,表示哈希离散度,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示多个所述随机元组数据中的第/>个所述随机元组数据,/>表示总共有/>个所述随机元组数据,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述备选哈希函数对应的备选哈希函数计算结果集合中第/>个所述随机元组数据对应的备选哈希函数计算结果,/>表示所述二维哈希表中的行索引对应的最大哈希值,/>表示所述二维哈希表中的列索引对应的最大哈希值。
7.根据权利要求5所述的哈希连接方法,其特征在于,所述从多个所述数据库节点中确定预设数据库节点,包括:
获取各个所述数据库节点的实时运行状态数据;
将所述实时运行状态数据满足预设运行状态数据的所述数据库节点确定为所述预设数据库节点。
8.根据权利要求5所述的哈希连接方法,其特征在于,所述方法还包括:
基于预设哈希函数备选库中的各个备选哈希函数,通过预设加速硬件单元,对所有所述随机元组数据进行哈希计算加速。
9.根据权利要求5所述的哈希连接方法,其特征在于,所述预设哈希函数判断阈值包括哈希离散度阈值和哈希计算时长阈值;
所述基于预设哈希函数判断阈值,根据所述哈希离散度和所述哈希计算处理时长,从多个所述备选哈希函数中确定所述第一预设哈希函数和所述第二预设哈希函数,包括:
将所述哈希离散度大于所述哈希离散度阈值,且所述哈希计算处理时长小于所述哈希计算时长阈值的所述备选哈希函数作为待定哈希函数;
在确定所述待定哈希函数的数量至少为两个时,根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数。
10.根据权利要求9所述的哈希连接方法,其特征在于,所述根据所述哈希离散度,从多个所述待定哈希函数中获取所述第一预设哈希函数和所述第二预设哈希函数,包括:
基于各个所述待定哈希函数对应的所述哈希离散度,按照从大到小的顺序对各个所述待定哈希函数进行排序,得到哈希离散度排序结果;
根据所述哈希离散度排序结果,将第一排序的所述哈希离散度对应的所述待定哈希函数确定为所述第一预设哈希函数,将第二排序的所述哈希离散度对应的所述待定哈希函数确定为所述第二预设哈希函数。
11.根据权利要求2所述的哈希连接方法,其特征在于,所述基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,包括:
基于所述第一预设哈希函数,对所述第一元组数据进行哈希计算,得到第一行索引哈希值;
基于所述第二预设哈希函数,对所述第一元组数据进行哈希计算,得到第一列索引哈希值;
将所述第一行索引哈希值和所述第一列索引哈希值作为所述第一元组数据对应的所述第一哈希值组。
12.根据权利要求11所述的哈希连接方法,其特征在于,所述根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,包括:
判断本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值是否在目标行哈希值范围内,其中,所述目标行哈希值范围为所述本地数据库节点中所述二维哈希表的行索引对应的行哈希值范围;
若在所述目标行哈希值范围内,根据所述本地数据库节点中的所述第一元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值,构建所述本地数据库节点中的所述第一数据子表对应的所述二维哈希表,并将所述第一元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述本地数据库节点中对应的内存位置,其中,所述二维哈希表中的每一行对应不同的所述第一行索引哈希值,所述二维哈希表中的每一列对应不同的所述第一列索引哈希值;
若不在所述目标行哈希值范围内,将所述本地数据库节点中的所述第一元组数据作为待写入元组数据,根据所述待写入元组数据对应的所述第一行索引哈希值,以及除所述本地数据库节点以外的其它所述数据库节点中的所述二维哈希表的行索引对应的行哈希值范围,确定目标数据库节点,并将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表。
13.根据权利要求12所述的哈希连接方法,其特征在于,所述方法还包括:
在各个所述数据库节点中构建公共溢出区和哈希表写访问进程,其中,所述公共溢出区用于保存发生哈希冲突的元组数据;
所述将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值发送至所述目标数据库节点,以构建所述目标数据库节点中的所述第一数据子表对应的所述二维哈希表,包括:
根据所述第一行索引哈希值和所述第一列索引哈希值,确定所述待写入元组数据在所述目标数据库节点的所述二维哈希表中对应的存储单元,其中,所述存储单元是基于所述目标数据库节点的所述二维哈希表中的行索引和所述列索引确定得到;
判断所述目标数据库节点的所述二维哈希表中对应的所述存储单元是否为空,若所述存储单元为空,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值和所述第一列索引哈希值存储至所述目标数据库节点的所述二维哈希表中对应的存储单元,并将所述待写入元组数据按照对应的所述第一行索引哈希值和所述第一列索引哈希值存储至对应的所述存储单元;
若所述存储单元不为空,判断所述待写入元组数据与所述目标数据库节点的所述二维哈希表中对应的所述存储单元中已存储的元组数据是否相同,若不相同,基于所述目标数据库节点的所述哈希表写访问进程,将所述待写入元组数据对应的所述第一行索引哈希值、所述第一列索引哈希值和所述待写入元组数据存储至所述公共溢出区。
14.根据权利要求13所述的哈希连接方法,其特征在于,各个所述数据库节点中的所述哈希表写访问进程占用一个中央处理器核心。
15.根据权利要求13所述的哈希连接方法,其特征在于,所述方法还包括:
当各个所述数据库节点扫描完成自身节点中的所述第一元组数据后,向其它各个所述数据库节点发送扫描完成消息;
在各个所述数据库节点扫描完成自身节点中的所述第一元组数据,且接收到其它所有所述数据库节点发送的所述扫描完成消息后,确定各个所述数据库节点的所述二维哈希表构建完成。
16.根据权利要求13所述的哈希连接方法,其特征在于,所述基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组;
基于所述第一预设哈希函数,对所述第二元组数据进行哈希计算,得到第二行索引哈希值;
基于所述第二预设哈希函数,对所述第二元组数据进行哈希计算,得到第二列索引哈希值;
将所述第二行索引哈希值和所述第二列索引哈希值作为所述第二元组数据对应的所述第二哈希值组。
17.根据权利要求16所述的哈希连接方法,其特征在于,所述根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,包括:
根据各个所述数据库节点的所述第二哈希值组,确定目标二维哈希表所在的数据库节点,并与所述目标二维哈希表所在的数据库节点进行连接,构建哈希连接数据;
若所述目标二维哈希表所在的数据库节点为本地数据库节点,基于所述本地数据库节点,根据所述哈希连接数据,构建对应的哈希连接表;
若所述目标二维哈希表所在的数据库节点为除所述本地数据库节点以外的其它数据库节点,将所述哈希连接数据发送至所述目标二维哈希表所在的数据库节点,以供所述目标二维哈希表所在的数据库节点根据接收到的所述哈希连接数据,构建对应的哈希连接表;
所述根据所有所述哈希连接数据,得到哈希连接结果,包括:
当各个所述数据库节点完成自身节点中的哈希连接后,向其它各个所述数据库节点发送哈希连接表建立完成消息;
在各个所述数据库节点完成自身节点中的哈希连接表,且接收到其它所有所述数据库节点发送的所述哈希连接表建立完成消息后,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
18.根据权利要求17所述的哈希连接方法,其特征在于,所述将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果,包括:
判断所述数据库节点是否为最高性能的数据库节点,若是,通过最高性能的所述数据库节点,将所有所述数据库节点中的所述哈希连接表进行合并,得到所述哈希连接结果。
19.根据权利要求1至18任一项所述的哈希连接方法,其特征在于,各个所述数据库节点之间通过远程直接内存访问传输协议进行通信连接。
20.一种哈希连接装置,其特征在于,包括:
元组数据获取模块,用于获取所有数据库节点中的第一元组数据,其中,所述第一元组数据为所述数据库节点中第一数据子表的元组数据;
第一哈希处理模块,用于基于第一预设哈希函数和第二预设哈希函数,计算得到各个所述数据库节点中所述第一元组数据对应的第一哈希值组,并根据所述第一哈希值组,构建所述第一数据子表对应的二维哈希表,其中,所述二维哈希表包括行索引和列索引;
第二哈希处理模块,用于基于所述第一预设哈希函数和所述第二预设哈希函数,计算得到各个所述数据库节点中第二元组数据对应的第二哈希值组,并根据所述第二哈希值组和所述二维哈希表,获取对应的哈希连接数据,其中,所述第二元组数据为所述数据库节点中第二数据子表的元组数据;
输出模块,用于根据所有所述哈希连接数据,得到哈希连接结果。
21.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至19任一项所述哈希连接方法。
22.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至19任一项所述哈希连接方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410239948.6A CN117827848B (zh) | 2024-03-04 | 2024-03-04 | 哈希连接方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410239948.6A CN117827848B (zh) | 2024-03-04 | 2024-03-04 | 哈希连接方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117827848A CN117827848A (zh) | 2024-04-05 |
CN117827848B true CN117827848B (zh) | 2024-05-03 |
Family
ID=90521279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410239948.6A Active CN117827848B (zh) | 2024-03-04 | 2024-03-04 | 哈希连接方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827848B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085769B1 (en) * | 2001-04-26 | 2006-08-01 | Ncr Corporation | Method and apparatus for performing hash join |
CN106844233A (zh) * | 2016-12-07 | 2017-06-13 | 深圳市德传技术有限公司 | 一种基于哈希表的路由器运行数据缓存方法及系统 |
CN115062027A (zh) * | 2022-07-13 | 2022-09-16 | 阿里云计算有限公司 | 哈希连接方法、计算节点、存储介质及程序产品 |
CN116226242A (zh) * | 2022-11-30 | 2023-06-06 | 芯跳科技(广州)有限公司 | 数据库哈希连接处理方法、装置、设备及存储介质 |
-
2024
- 2024-03-04 CN CN202410239948.6A patent/CN117827848B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7085769B1 (en) * | 2001-04-26 | 2006-08-01 | Ncr Corporation | Method and apparatus for performing hash join |
CN106844233A (zh) * | 2016-12-07 | 2017-06-13 | 深圳市德传技术有限公司 | 一种基于哈希表的路由器运行数据缓存方法及系统 |
CN115062027A (zh) * | 2022-07-13 | 2022-09-16 | 阿里云计算有限公司 | 哈希连接方法、计算节点、存储介质及程序产品 |
CN116226242A (zh) * | 2022-11-30 | 2023-06-06 | 芯跳科技(广州)有限公司 | 数据库哈希连接处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117827848A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9798774B1 (en) | Graph data search method and apparatus | |
JP6626211B2 (ja) | ショートリンクを処理する方法及び装置並びにショートリンクサーバ | |
EP3767483A1 (en) | Method, device, system, and server for image retrieval, and storage medium | |
Lee et al. | Efficient and customizable data partitioning framework for distributed big RDF data processing in the cloud | |
CN103248645A (zh) | Bt离线数据下载系统及方法 | |
JP5841299B2 (ja) | 情報をプッシュする方法および情報をプッシュするための装置 | |
EP2235651A2 (en) | Distributed indexing of file content | |
CN106569896B (zh) | 一种数据分发及并行处理方法和系统 | |
US10496648B2 (en) | Systems and methods for searching multiple related tables | |
CN110597852A (zh) | 数据处理方法、装置、终端及存储介质 | |
WO2020211717A1 (zh) | 一种数据处理方法、装置及设备 | |
CN109299101B (zh) | 数据检索方法、装置、服务器和存储介质 | |
Hong et al. | Efficient R-tree based indexing scheme for server-centric cloud storage system | |
CN110929081A (zh) | 一种图片查询方法、计算机设备和存储介质 | |
CN111400301B (zh) | 一种数据查询方法、装置及设备 | |
CN103412883A (zh) | 基于p2p技术的语义智能信息发布订阅方法 | |
CN113297266B (zh) | 数据处理方法、装置、设备及计算机存储介质 | |
CN117827848B (zh) | 哈希连接方法、装置、电子设备及存储介质 | |
CN115918110A (zh) | 使用键值存储库的空间搜索 | |
CN111209263A (zh) | 数据存储方法、装置、设备及存储介质 | |
Deng et al. | Spatial-keyword skyline publish/subscribe query processing over distributed sliding window streaming data | |
Que et al. | Exploring network optimizations for large-scale graph analytics | |
CN114139040A (zh) | 一种数据存储及查询方法、装置、设备及可读存储介质 | |
CN108875786B (zh) | 基于Storm的食品数据并行计算一致性问题的优化方法 | |
CN113326258A (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 | ||
GR01 | Patent grant |