哈希表的确定方法及装置转让专利

申请号 : CN202211480873.8

文献号 : CN115576954B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 何仲君官晓岚

申请人 : 恒生电子股份有限公司

摘要 :

本申请提供哈希表的确定方法及装置,其中所述哈希表的确定方法包括:响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。

权利要求 :

1.一种哈希表的确定方法,其特征在于,包括:

响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;

分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表,其中,所述业务字段信息基于预设哈希计算初值和预设哈希尺寸阈值计算获得,所述预设哈希尺寸阈值是预先设置的哈希表存储大小;

确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表;

在未获取到哈希冲突数小于等于预设阈值的参考哈希表的情况下,基于所述预设哈希计算初值确定当前哈希计算初值;

基于所述当前哈希计算初值和所述预设哈希尺寸阈值创建每个待匹配哈希算法对应的第一参考哈希表;

确定哈希冲突数小于等于预设阈值的目标第一参考哈希表作为目标哈希表;

在未获取到哈希冲突数小于等于预设阈值的第一参考哈希表的情况下,基于所述预设哈希尺寸阈值确定当前哈希尺寸阈值;

根据所述当前哈希计算初值和所述当前哈希尺寸阈值创建每个待匹配哈希算法对应的第二参考哈希表;

确定哈希冲突数小于等于预设阈值的目标第二参考哈希表作为目标哈希表。

2.如权利要求1所述的方法,其特征在于,确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表之后,还包括:确定所述目标哈希表对应的待匹配哈希算法为目标哈希算法。

3.如权利要求2所述的方法,其特征在于,所述方法还包括:接收针对目标业务数据表的数据查询请求,确定所述目标哈希表和所述目标哈希算法;

基于所述目标哈希表和所述目标哈希算法执行所述数据查询请求,获得数据查询结果。

4.如权利要求3所述的方法,其特征在于,基于所述目标哈希表和所述目标哈希算法执行所述数据查询请求,获得数据查询结果,包括:确定所述数据查询请求中的待查询字段;

基于所述目标哈希算法计算所述待查询字段对应的字段哈希值;

在所述目标哈希表中确定所述字段哈希值对应的目标字段,并基于所述目标字段获得数据查询结果。

5.如权利要求1所述的方法,其特征在于,分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,包括:确定预设哈希计算初值和预设哈希尺寸阈值;

基于所述预设哈希计算初值、所述预设哈希尺寸阈值和每个待匹配哈希算法计算所述目标数据表每个业务字段对应的业务字段信息。

6.如权利要求5所述的方法,其特征在于,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表,包括:根据每个待匹配哈希算法对应的业务字段信息生成每个待匹配哈希算法对应的参考哈希表。

7.如权利要求5所述的方法,其特征在于,确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表,包括:确定哈希冲突数小于等于预设阈值的至少一个目标参考哈希表;

基于每个目标参考哈希表按照哈希冲突数由大到小进行排序,获得参考哈希表队列;

选取所述参考哈希表队列中的位于队尾的目标参考哈希表,作为所述目标业务数据表对应的目标哈希表。

8.一种哈希表的确定装置,其特征在于,包括:

第一确定模块,被配置为响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;

计算模块,被配置为分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表,其中,所述业务字段信息基于预设哈希计算初值和预设哈希尺寸阈值计算获得,所述预设哈希尺寸阈值是预先设置的哈希表存储大小;

第二确定模块,被配置为确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表;

在未获取到哈希冲突数小于等于预设阈值的参考哈希表的情况下,基于所述预设哈希计算初值确定当前哈希计算初值;

基于所述当前哈希计算初值和所述预设哈希尺寸阈值创建每个待匹配哈希算法对应的第一参考哈希表;

确定哈希冲突数小于等于预设阈值的目标第一参考哈希表作为目标哈希表;

在未获取到哈希冲突数小于等于预设阈值的第一参考哈希表的情况下,基于所述预设哈希尺寸阈值确定当前哈希尺寸阈值;

根据所述当前哈希计算初值和所述当前哈希尺寸阈值创建每个待匹配哈希算法对应的第二参考哈希表;

确定哈希冲突数小于等于预设阈值的目标第二参考哈希表作为目标哈希表。

9.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1‑7任意一项所述方法的步骤。

10.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该计算机指令被处理器执行时实现权利要求1‑7任意一项所述方法的步骤。

说明书 :

哈希表的确定方法及装置

技术领域

[0001] 本申请涉及计算机技术领域,特别涉及哈希表的确定方法。本申请同时涉及哈希表的确定装置,一种计算设备,以及一种计算机可读存储介质。

背景技术

[0002] 随着计算机技术的不断发展,用户可以通过数据表对数据进行存储,从而便于后续基于数据表进行数据的查询。
[0003] 当前,为了降低查询算法复杂度,常采用创建数据表对应的哈希表的方式,基于哈希表进行数据查询,从而避免较高的算法复杂度。
[0004] 然而,当前对于数据库中不同数据表使用相同的哈希算法计算对应的哈希表,会造成哈希表中哈希值冲突数较高,以及哈希表较大,进而造成查询速度较慢的问题;因此,如何确定查询效率较高的哈希表成为本领域技术人员亟待解决的技术问题。

发明内容

[0005] 有鉴于此,本申请实施例提供了哈希表的确定方法。本申请同时涉及哈希表的确定装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的上述问题。
[0006] 根据本申请实施例的第一方面,提供了一种哈希表的确定方法,包括:
[0007] 响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;
[0008] 分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;
[0009] 确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0010] 根据本申请实施例的第二方面,提供了一种哈希表的确定装置,包括:
[0011] 第一确定模块,被配置为响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;
[0012] 计算模块,被配置为分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;
[0013] 第二确定模块,被配置为确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0014] 根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述哈希表的确定方法的步骤。
[0015] 根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现所述哈希表的确定方法的步骤。
[0016] 本申请提供的哈希表的确定方法,响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0017] 本申请一实施例实现了通过确定至少一个待匹配哈希算法,以便基于每个待匹配哈希算法确定用于生成哈希表的哈希算法;分别计算每个待匹配哈希算法对应的业务字段信息,以便生成每个待匹配哈希算法对应的参考哈希表;选取哈希冲突数小于预设阈值的参考哈希表作为目标业务数据表对应的目标哈希表,从而得到在后续查询中效率较高的哈希表,进而便于后续提升对目标业务数据表的查询效率。

附图说明

[0018] 图1是本申请一实施例提供的一种哈希表的确定方法的示意图;
[0019] 图2是本申请一实施例提供的一种哈希表的确定方法的流程图;
[0020] 图3是本申请一实施例提供的一种应用于员工信息数据表的哈希表的确定方法的处理流程图;
[0021] 图4是本申请一实施例提供的一种哈希表的确定装置的结构示意图;
[0022] 图5是本申请一实施例提供的一种计算设备的结构框图。

具体实施方式

[0023] 在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
[0024] 在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
[0025] 应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
[0026] 首先,对本申请一个或多个实施例涉及的名词术语进行解释。
[0027] 哈希表:哈希表是把关键字映射到一个值,使用该值进行直接访问的线性数据结构,以加快查找速度,其中,将关键字映射到值的映射方法称为哈希算法。
[0028] 哈希冲突:当两个不同的关键字经过哈希算法计算后得到了同一个结果,即他们会被映射到哈希表的同一个位置时,即称为发生了哈希冲突。简单来说就是哈希算法算出来的地址被别的元素占用了。
[0029] 举一个数据库表字段的例子,数据库通常有多个表,每个表有多个字段,在运行期一般保持不变,每个表的所有字段称为一批固定条目,字段名是关键字。若需要对条目进行多次查找,即需要多次根据字段名获取对应的字段属性信息,如长度信息、类型信息等,往往会建立索引以加快查找速度;如果只是要求查找某一条目,不需要有序,一般会采用哈希表,以达到O(1)的算法复杂度。哈希表的实际查找速度主要取决于哈希冲突数和哈希表大小。
[0030] 对于不同批的条目,使用同一种哈希算法,可能冲突数较多,哈希表较大,最终导致查找速度慢。而本申请的方案针对不同批的条目在多种哈希算法中选取哈希算法用于建立哈希表,以提高查找速度。
[0031] 在本申请中,提供了哈希表的确定方法,本申请同时涉及哈希表的确定装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
[0032] 图1是本申请一实施例提供哈希表的确定方法的示意图,接收哈希表创建请求,解析哈希表创建请求确定存在哈希表创建请求的目标业务数据表;同时,确定可以用于创建哈希表的哈希算法集合,在哈希算法集合中包含哈希算法1、哈希算法2和哈希算法3;确定预设哈希计算初值seed1和预设哈希尺寸阈值size1,并基于预设哈希计算初值seed1、预设哈希尺寸阈值size1和每个哈希算法计算目标业务数据表中的字段,获得每个哈希算法对应的参考哈希表,包括参考哈希表1、参考哈希表2和参考哈希表3。需要注意的是,在本申请中,通过哈希算法计算的是目标业务数据表中的字段名,而不是目标业务数据中字段对应的业务数据。
[0033] 参见图1,在确定每个哈希算法对应的哈希表后,确定每个哈希表对应的冲突数,具体的,目标业务数据表与基于每个哈希算法对应的哈希表如下述表1所示:
[0034] 表1
[0035]
[0036] 在参考哈希表1中,字段1对应的哈希值与字段2对应的哈希值均为2,则确定哈希值2在参考哈希表1中存在冲突,则确定参考哈希表1对应的冲突数为1;在参考哈希表2中,字段1与字段2对应的哈希值均为3,字段3和字段4对应的哈希值均为4,则确定哈希值3和哈希值4在哈希表中存在冲突,则确定参考哈希表2对应的冲突数为2;在参考哈希表3中,不存在发生冲突的哈希值,则确定参考哈希表3对应的冲突值为0;由于冲突数较多影响哈希表的查询效率,因此,可选取冲突数最小的参考哈希表3作为目标业务数据表对应的目标哈希表。
[0037] 进一步地,若得到的每个参考哈希表对应的冲突数均大于预设冲突数,则可以对预设哈希计算初值seed1和/或预设哈希尺寸阈值size1进行调整,并基于新的seed、size以及每个哈希算法,确定新的参考哈希表,并在新的参考哈希表中选取冲突数较小的参考哈希表作为目标哈希表。
[0038] 本申请哈希表的确定方法,基于多个哈希算法得到多个参考哈希表;基于参考哈希表对应的哈希冲突数选取冲突数较小的哈希表;进一步在冲突数不满足需求的情况下,可以对预设哈希计算初值和预设哈希尺寸阈值进行调整后,确定新的参考哈希表,并在新的参考哈希表中确定冲突数较小的作为目标哈希表,即确定了可以提升后续目标业务数据表的查询效率的目标哈希表。
[0039] 图2示出了根据本申请一实施例提供的一种哈希表的确定方法的流程图,具体包括以下步骤:
[0040] 步骤202:响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法。
[0041] 实际应用中,在查找数据表中的某个字段时,通常可以采用哈希表的方式;基于哈希表完成字段的查询,可以降低查找算法的复杂度;生成哈希表需要基于哈希算法,对于不同的数据表可采用相同的哈希算法得到对应的哈希表;但由于不同数据表使用相同哈希算法得到的哈希表冲突数可能较多,导致后续基于哈希表进行查找时的查找速度较慢,影响字段查找效率。
[0042] 因此,本申请的方案在接收到针对目标业务数据表的哈希表创建请求后,可以确定多个可以用于创建哈希表的哈希算法,以便后续基于多个哈希算法得到数据表对应的多个哈希表。
[0043] 其中,目标业务数据表是指存在哈希表创建需求的数据表,数据表的数据表结构通常包含业务字段和对应的字段类型,例如,目标业务数据表中包含字段名“name”和对应的字段类型“char(16)”,字段名“age”和对应的字段类型“int”,字段名“sex”和对应的字段类型“char”;哈希表创建请求是指为目标业务数据表创建哈希表的请求,例如,为部门人员数据表创建哈希表的哈希表创建请求;待匹配哈希算法是指可以用于为目标业务数据表创建哈希表的哈希算法,实际应用中,哈希算法可以是BKDR、DJB、SDBM、DEK、FNV1等可以实现哈希表创建需求的算法,本申请不做具体限定;通过确定至少一个待匹配哈希算法,可以便于后续确定每个待匹配算法对应的目标业务数据表的参考哈希表,进而可以在多个参考哈希表中选取查询效率较高的哈希表。
[0044] 具体的,接收针对目标业务数据表的哈希表创建请求;响应于哈希表创建请求,确定目标业务数据表对应的至少一个待匹配哈希算法;由每个待匹配哈希算法组成待匹配哈希算法集合。
[0045] 在本申请一具体实施方式中,接收针对目标业务数据表的哈希表创建请求,在目标业务数据表中包含字段名和每个字段名对应的字段类型;响应于哈希表创建请求,确定目标业务数据表对应的至少一个哈希算法,包括,BKDR哈希算法、DJB哈希算法和SDBM哈希算法等。
[0046] 通过响应于针对目标业务数据表创建请求,确定与目标业务数据表对应的至少一个待匹配哈希算法,从而便于后续确定每个待匹配哈希算法对应的哈希表,进而可以在多个哈希表中选取查找效率较高的哈希表。
[0047] 步骤204:分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表。
[0048] 在确定至少一个待匹配哈希算法后,可以基于每个待匹配哈希算法计算目标业务数据表对应的参考哈希表,从而便于在每个待匹配哈希算法对应的参考哈希表中进行选择。
[0049] 其中,业务字段信息是指目标业务数据表中的业务字段对应的哈希值,业务字段信息也可以理解为通过哈希算法对目标业务数据表中的字段名称进行计算之后获得的哈希值;实际应用中,可以基于待匹配哈希算法对目标业务数据表中的业务字段进行转换,得到每个业务字段对应的哈希值,即业务字段信息;例如,目标业务数据表中包含业务字段“age”,对“age”转换为对应的哈希值2,即业务字段“age”的业务字段信息为2;参考哈希表是指基于每个待匹配哈希算法生成的目标业务数据表对应的每个参考哈希表,例如,基于哈希算法1计算目标业务数据表中的每个业务字段对应的哈希值,基于每个哈希值和对应的业务字段生成哈希算法1对应的参考哈希表。
[0050] 具体的,确定至少一个待匹配哈希算法中的目标待匹配哈希算法;基于该目标待匹配哈希算法计算目标业务数据表中每个业务字段对应的业务字段信息,并基于业务字段和业务字段信息生成参考哈希表;将每个待匹配哈希算法作为目标待匹配哈希算法,从而得到每个目标待匹配算法对应的参考哈希表。
[0051] 在本申请一具体实施方式中,确定目标业务数据表并确定哈希算法1、哈希算法2和哈希算法3;基于哈希算法1计算目标业务数据表中业务字段对应的业务字段信息,生成哈希表a;基于哈希算法2计算目标业务数据表中业务字段对应的业务字段信息,生成哈希表b;基于哈希算法3计算目标业务数据表中业务字段对应的业务字段信息,生成哈希表c;即获得目标业务数据表根据哈希算法1、哈希算法2和哈希算法3生成的参考哈希表a,参考哈希表b和参考哈希表c。
[0052] 进一步地,分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息的方法可以包括:
[0053] 确定预设哈希计算初值和预设哈希尺寸阈值;
[0054] 基于所述预设哈希计算初值、所述预设哈希尺寸阈值和每个待匹配哈希算法计算得到所述目标数据表每个业务字段对应的业务字段信息。
[0055] 其中,预设哈希计算初值是指用于计算哈希值的哈希计算初值,实际应用中,可以循环乘以预设哈希计算初值来计算字段对应的哈希值;预设哈希计算初值可以基于实际需求进行设定,在优选的实施例中,哈希计算初值可以取奇数;以待匹配哈希算法为BKDR算法为例,哈希计算初值取值可以是31、131、1313、13131等等;预设哈希尺寸阈值是指预先设置的哈希表的存储大小,例如,预设哈希尺寸阈值为5表示哈希表中可以包含5个哈希值;预设哈希尺寸阈值也用于计算字段对应的哈希值,实际应用中,由于哈希表大小有限,故需要进行取模运算,即hash = hash % SIZE,其中,hash是指哈希值,SIZE是指哈希表的大小。
[0056] 具体的,获取基于实际需求设置的预设哈希计算初值和预设哈希尺寸阈值;基于预设哈希计算初值、预设哈希尺寸阈值以及任意一个待匹配哈希算法,计算该待匹配哈希算法对应的业务字段信息;同理,可计算获得每个待匹配哈希算法对应的目标业务数据表的业务字段信息。
[0057] 在本申请一具体实施方式中,确定预设哈希计算初值seed1和预设哈希尺寸阈值size1;确定目标业务数据表对应的哈希算法1和哈希算法2;根据预设哈希计算初值seed1、预设哈希尺寸阈值size1和哈希算法1,计算得到目标业务数据表中每个业务字段对应的业务字段信息;根据预设哈希计算初值seed1、预设哈希尺寸阈值size1和哈希算法2,计算得到目标业务数据表中每个业务字段对应的业务字段信息。
[0058] 通过计算每个待匹配哈希算法对应的业务字段信息,以便后续基于每个待匹配哈希算法对应的业务字段信息生成目标业务数据表对应的哈希表。
[0059] 进一步地,在确定不同待匹配算法对应的业务字段信息后,可以基于待匹配算法对应的业务字段信息以及目标业务数据表中的业务字段,生成该待匹配算法对应的目标业务数据表的参考哈希表。
[0060] 具体的,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表的方法可以包括:
[0061] 根据每个待匹配哈希算法对应的业务字段信息生成每个待匹配哈希算法对应的参考哈希表。
[0062] 在本申请一具体实施方式中,确定待匹配哈希算法为BKDR算法;确定预设哈希计算初值seed等于1、预设哈希尺寸阈值size等于5;基于预设哈希计算初值、预设哈希尺寸阈值和BKDR算法计算得到数据表L对应的字段a的业务字段信息为4,字段b的业务字段信息为2,字段c的业务字段信息为2;基于业务字段和业务字段信息生成BKDR算法对应的数据表L的参考哈希表。
[0063] 通过基于每个待匹配哈希算法对应的业务字段信息和目标业务数据表的业务字段,生成每个待匹配哈希算法对应的参考哈希表,以便后续在每个参考哈希表中确定目标业务数据表所对应的哈希表。
[0064] 步骤206:确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0065] 其中,哈希冲突数是指哈希表中哈希值发生冲突的哈希值的数量,例如哈希表中包含哈希值2、3、2、4,由于存在两个哈希值为“2”则确定该哈希表对应的哈希冲突数为1,即一个哈希值发生冲突;预设阈值是指基于实际需求设定的哈希冲突数的上限值;若哈希表对应的哈希冲突数大于预设阈值,则确定该哈希表存在哈希冲突的情况较多,在后续用于数据表查找时会造成查找速度慢的问题;目标哈希表是指在参考哈希表中选取的查询效率较高的哈希表。
[0066] 在本申请一具体实施方式中,确定参考哈希表1对应的冲突数为2、参考哈希表2对应的冲突数为1,确定参考哈希表3对应的冲突数为0;预设阈值为0,则确定参考哈希表3为目标业务数据表对应的目标哈希表。
[0067] 在实际应用中,确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表的方法可以包括:
[0068] 确定哈希冲突数小于等于预设阈值的至少一个目标参考哈希表;
[0069] 基于每个目标参考哈希表按照哈希冲突数由大到小进行排序,获得参考哈希表队列;
[0070] 选取所述参考哈希表队列中的位于队尾的目标参考哈希表,作为所述目标业务数据表对应的目标哈希表。
[0071] 具体的,若获取到多个哈希冲突数小于等于预设阈值的参考哈希表的情况下,可以基于哈希冲突数对每个参考哈希表进行排序,选取其中哈希冲突数最小的参考哈希表作为目标业务数据表对应的目标参考哈希表;若获取到的小于等于预设阈值的参考哈希表,存在哈希冲突数相等的情况,则可以确定哈希冲突数相等的参考哈希表对应的哈希尺寸阈值,由于哈希尺寸阈值越小,其对应的参考哈希表的查询效率更高;因此,在哈希冲突数一致的情况下,可以选取哈希尺寸阈值更小的参考哈希表作为目标哈希表。
[0072] 在本申请一具体实施方式中,确定目标业务数据表对应的参考哈希表1、参考哈希表2和参考哈希表3的哈希冲突数均小于预设阈值2,则可以基于哈希冲突数对哈希表进行排序,确定哈希冲突数最小的为参考哈希表1;将参考哈希表1作为数据表D对应的目标哈希表。
[0073] 上述描述了可以获得小于等于预设阈值的参考哈希表的情况,但在实际应用中,还可能存在每个参考哈希表对应的哈希冲突数均大于预设阈值,此时,则可以通过调整预设哈希计算初值和预设哈希尺寸阈值的方式,重新获得参考哈希表。
[0074] 具体的,对预设哈希计算初值进行修改的方法可以包括:
[0075] 在未获取到哈希冲突数小于等于预设阈值的参考哈希表的情况下,基于所述预设哈希计算初值确定当前哈希计算初值;
[0076] 基于所述当前哈希计算初值和所述预设哈希尺寸阈值创建每个待匹配哈希算法对应的第一参考哈希表;
[0077] 确定哈希冲突数小于等于预设阈值的目标第一参考哈希表作为目标哈希表。
[0078] 其中,当前哈希计算初值是指基于预设哈希计算初值得到的哈希计算初值,例如,预设哈希计算初值为3,则当前哈希计算初值可以是预设哈希计算初值加2,即5;实际应用中,哈希计算初值存在预设的取值范围,可以在取值范围内任意选取与预设哈希计算初值不相等的哈希计算初值作为当前哈希计算初值。
[0079] 第一参考哈希表是指根据当前哈希计算初值和预设哈希尺寸阈值计算目标业务数据表的业务字段信息,生成的哈希表;目标第一参考哈希表是指哈希冲突数小于等于预设阈值的第一参考哈希表。
[0080] 具体的,根据预设哈希计算初值确定当前哈希计算初值;确定目标业务数据表对应的每个待匹配哈希算法,根据每个待匹配哈希算法、当前哈希计算初值和预设哈希尺寸阈值,生成每个待匹配哈希算法对应的目标业数据表的第一参考哈希表;在第一参考哈希表中选取哈希冲突数小于等于预设阈值的目标第一参考哈希表作为目标哈希表。
[0081] 在本申请一具体实施方式中,基于预设哈希计算初值、预设哈希尺寸阈值以及每个待匹配哈希算法得到哈希表冲突数均大于预设阈值,则在预设哈希计算初值3的基础上加2,得到当前哈希计算初值5;基于当前哈希计算初值5、预设哈希尺寸阈值和每个待匹配哈希算法,计算数据表K对应的第一参考哈希表6、第一参考哈希表7和第一参考哈希表8;将哈希冲突数小于预设阈值的第一参考哈希表8作为数据表K对应的目标哈希表。
[0082] 进一步地,由于哈希计算初值存在取值范围,若基于取值范围内的哈希计算初值生成的哈希表对应的哈希冲突数均大于预设阈值,则可以对预设哈希尺寸阈值做进一步的调整。
[0083] 具体的,对预设哈希尺寸阈值进行修改的方法还包括:
[0084] 在未获取到哈希冲突数小于等于预设阈值的第一参考哈希表的情况下,基于所述预设哈希尺寸阈值确定当前哈希尺寸阈值;
[0085] 根据所述当前哈希计算初值和所述当前哈希尺寸阈值创建每个待匹配哈希算法对应的第二参考哈希表;
[0086] 确定哈希冲突数小于等于预设阈值的目标第二参考哈希表作为目标哈希表。
[0087] 其中,当前哈希尺寸阈值是指基于预设哈希尺寸阈值得到的哈希尺寸阈值;例如,预设哈希尺寸阈值为5,则当前哈希尺寸阈值可以为6;实际应用中,由于哈希尺寸阈值较大会影响后续基于哈希表进行查找时的效率,因此,在调整待匹配哈希算法以及预设哈希计算初值后,均无法得到满足需求的哈希表的情况下,再对哈希尺寸阈值进行增加。
[0088] 第二参考哈希表是指根据当前哈希计算初值和当前哈希尺寸阈值计算目标业务数据表的业务字段信息,生成的哈希表;目标第二参考哈希表是指哈希冲突数小于等于预设阈值的第二参考哈希表。
[0089] 具体的,根据预设哈希尺寸阈值确定当前哈希尺寸阈值;确定目标业务数据表对应的每个待匹配哈希算法,根据每个待匹配哈希算法、当前哈希计算初值和当前哈希尺寸阈值,生成每个待匹配哈希算法对应的目标业数据表的第二参考哈希表。
[0090] 在本申请一具体实施方式中,在预设哈希尺寸阈值5的基础上加1,得到当前哈希尺寸阈值6;根据当前哈希尺寸阈值6、当前哈希计算初值5以及目标业务数据表对应的每个待匹配哈希算法,计算目标业务数据表对应的每个第二参考哈希表2、第二参考哈希表3;在每个第二参考哈希表中选取哈希冲突数等于预设阈值的第二参考哈希表3,作为目标业务数据表对应的目标哈希表。
[0091] 通过上述调整预设哈希计算初值或预设哈希尺寸阈值的方式,为目标业务数据表创建新的哈希表,并在新的哈希表中重新确定目标哈希表,从而可以得到后续查询效率更高的目标哈希表,进而可以提升对目标业务数据表的查询效率。
[0092] 在确定目标业务数据表对应的目标哈希表后,可以基于目标哈希表完成对目标业务数据表的查询。
[0093] 在实际应用中,确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表之后,还包括:
[0094] 确定所述目标哈希表对应的待匹配哈希算法为目标哈希算法。
[0095] 具体的,目标哈希算法是指创建目标哈希表所使用的哈希算法。
[0096] 在本申请一具体实施方式中,确定目标哈希表a使用的哈希算法为DJB算法。
[0097] 通过确定目标哈希表对应的目标哈希算法,以便后续基于目标哈希算法完成对目标业务数据表的查询。
[0098] 具体的,所述方法还包括:
[0099] 接收针对目标业务数据表的数据查询请求,确定所述目标哈希表和所述目标哈希算法;
[0100] 基于所述目标哈希表和所述目标哈希算法执行所述数据查询请求,获得数据查询结果。
[0101] 其中,数据查询请求是指在目标业务数据表中查询业务数据的请求;确定针对目标业务数据表进行数据查询的情况下,确定目标业务数据表对应的目标哈希表和目标哈希算法;数据查询结果是指执行数据查询请求获得的结果,例如,查询到部门人员表中字段名age对应的字段类型为int类型。
[0102] 进一步地,基于所述目标哈希表和所述目标哈希算法执行所述数据查询请求,获得数据查询结果的方法可以包括:
[0103] 确定所述数据查询请求中的待查询字段;
[0104] 基于所述目标哈希算法计算得到所述待查询字段对应的字段哈希值;
[0105] 在所述哈希表中确定所述字段哈希值对应的目标字段,并基于所述目标字段获得数据查询结果。
[0106] 其中,待查询字段是指需要查询的字段,如,name字段,age字段,等等;字段哈希值是指待查询字段对应的哈希值;实际应用中,为了实现基于目标哈希表的查找功能,需要基于目标哈希表对应的目标哈希算法计算待查询字段对应的字段哈希值;目标字段是指目标哈希表中字段哈希值对应的字段。
[0107] 具体的,解析数据查询请求,获得待查询字段;根据目标哈希算法计算待查询字段对应的字段哈希值;在目标哈希表中基于字段哈希值确定字段哈希值对应的目标字段;基于目标字段可以在目标业务数据表中查询目标字段对应的字段信息,即获得数据查询结果。
[0108] 在本申请一具体实施方式中,解析数据查询请求确定待查询字段“name”;基于目标业务数据表对应的目标哈希算法计算待查询字段“name”对应的字段哈希值4;根据字段哈希值4在目标哈希表中取字段哈希值4对应位置上的目标字段“name”;进一步地,根据目标字段“name”在业务数据表中取目标字段“name”对应的字段信息作为数据查询请求对应的数据查询结果。
[0109] 本申请提供的哈希表的确定方法,响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0110] 本申请一实施例实现了通过确定至少一个待匹配哈希算法,以便基于每个待匹配哈希算法确定用于生成哈希表的哈希算法;分别计算每个待匹配哈希算法对应的业务字段信息,以便生成每个待匹配哈希算法对应的参考哈希表;选取哈希冲突数小于预设阈值的参考哈希表作为目标业务数据表对应的目标哈希表,从而得到在后续查询中效率较高的哈希表,进而便于后续提升对目标业务数据表的查询效率。
[0111] 下述结合附图3,以本申请提供的哈希表的确定方法在员工信息数据表的应用为例,对所述哈希表的确定方法进行进一步说明。其中,图3示出了本申请一实施例提供的一种应用于员工信息数据表的哈希表的确定方法的处理流程图,具体包括以下步骤:
[0112] 步骤302:响应于针对员工信息数据表的哈希表创建请求,确定待匹配哈希算法集合。
[0113] 具体的,员工信息数据表包括业务字段“name”、“birth”、“native”、“age”和“sex”。在待匹配哈希算法集合中包含哈希算法1、哈希算法2和哈希算法3。
[0114] 步骤304:确定预设哈希计算初值和预设哈希尺寸阈值。
[0115] 步骤306:基于预设哈希计算初值、预设哈希尺寸阈值和每个待匹配哈希算法计算员工信息数据表中每个业务字段对应的哈希值。
[0116] 具体的,通过哈希算法1、预设哈希计算初值和预设哈希尺寸阈值计算员工信息数据表中每个业务字段对应的哈希值,获得业务字段“name”对应的哈希值1、“birth”对应的哈希值2、“native”对应的哈希值3、“age”对应的哈希值3和“sex”对应的哈希值4;
[0117] 通过哈希算法2、预设哈希计算初值和预设哈希尺寸阈值计算员工信息数据表中每个业务字段对应的哈希值,获得业务字段“name”对应的哈希值1、“birth”对应的哈希值2、“native”对应的哈希值3、“age”对应的哈希值4和“sex”对应的哈希值5;
[0118] 通过哈希算法3、预设哈希计算初值和预设哈希尺寸阈值计算员工信息数据表中每个业务字段对应的哈希值,获得业务字段“name”对应的哈希值1、“birth”对应的哈希值1、“native”对应的哈希值3、“age”对应的哈希值3和“sex”对应的哈希值4。
[0119] 步骤308:根据每个待匹配哈希算法对应的业务字段的哈希值生成每个待匹配哈希算法对应的参考哈希表。
[0120] 具体的,如下述表2所示,基于业务字段“name”对应的哈希值1、“birth”对应的哈希值2、“native”对应的哈希值3、“age”对应的哈希值3和“sex”对应的哈希值4,生成哈希算法1对应的参考哈希表a;基于业务字段“name”对应的哈希值1、“birth”对应的哈希值2、“native”对应的哈希值3、“age”对应的哈希值4和“sex”对应的哈希值5,生成哈希算法2对应的参考哈希表b;基于业务字段“name”对应的哈希值1、“birth”对应的哈希值1、“native”对应的哈希值3、“age”对应的哈希值3和“sex”对应的哈希值4,生成对应的参考哈希表c。
[0121] 表2
[0122]员工信息数据表 name birth native age sex
参考哈希表a 1 2 3 3 4
参考哈希表b 1 2 3 4 5
参考哈希表c 1 1 3 3 4
[0123] 步骤310:确定哈希冲突数小于等于预设阈值的每个目标参考哈希表。
[0124] 具体的,确定参考哈希表a中业务字段“native”和业务字段“age”的哈希值存在冲突,则参考哈希表a对应的冲突数为1;确定参考哈希表b中业务字段对应的哈希值不存在冲突,则确定参考哈希表b对应的冲突数为0;确定参考哈希表c中业务字段“name”与业务字段“birth”哈希值存在冲突,确定业务字段“native”和业务字段“age”存在冲突,则确定参考哈希表c对应的冲突数为2。
[0125] 确定预设阈值为1,则将参考哈希表b和参考哈希表a作为目标哈希表。
[0126] 步骤312:将每个目标参考哈希表按照哈希冲突数由大到小进行排序,获得参考哈希表队列。
[0127] 具体的,将参考哈希表b和参考哈希表a基于哈希冲突进行排序,得到哈希表队列:参考哈希表a,参考哈希表b。
[0128] 步骤314:选取参考哈希表队列中的位于队尾的目标参考哈希表,作为员工信息数据表对应的目标哈希表。
[0129] 具体的,选取位于队尾的参考哈希表b,即哈希冲突数最小的参考哈希表b作为目标哈希表。
[0130] 步骤316:确定目标哈希表对应的待匹配哈希算法为目标哈希算法。
[0131] 具体的,确定参考哈希表b对应的哈希算法2为目标哈希算法。
[0132] 步骤318:接收针对员工信息数据表的数据查询请求,确定目标哈希表和目标哈希算法。
[0133] 具体的,确定参考哈希表b和哈希算法2。
[0134] 步骤320:确定数据查询请求中的待查询字段,并基于目标哈希算法计算待查询字段对应的待查询哈希值。
[0135] 具体的,确定数据查询请求中的待查询字段“name”,根据哈希算法2计算得到待查询字段“name”对应的待查询哈希值为“1”。
[0136] 步骤322:根据待查询哈希值在员工信息数据表中确定待查询哈希值对应的目标字段。
[0137] 具体的,根据待查询哈希值为“1”确定员工信息数据表中的业务字段“name”。
[0138] 本申请提供的哈希表的确定方法,响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0139] 本申请一实施例实现了通过确定至少一个待匹配哈希算法,以便基于每个待匹配哈希算法确定用于生成哈希表的哈希算法;分别计算每个待匹配哈希算法对应的业务字段信息,以便生成每个待匹配哈希算法对应的参考哈希表;选取哈希冲突数小于预设阈值的参考哈希表作为目标业务数据表对应的目标哈希表,从而得到在后续查询中效率较高的哈希表,进而便于后续提升对目标业务数据表的查询效率。
[0140] 与上述方法实施例相对应,本申请还提供了哈希表的确定装置实施例,图4示出了本申请一实施例提供的一种哈希表的确定装置的结构示意图。如图4所示,该装置包括:
[0141] 第一确定模块402,被配置为响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;
[0142] 计算模块404,被配置为分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;
[0143] 第二确定模块406,被配置为确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0144] 可选地,所述装置还包括确定子模块,所述确定子模块被配置为:
[0145] 确定所述目标哈希表对应的待匹配哈希算法为目标哈希算法。
[0146] 可选地,所述装置还包括执行模块,所述执行模块被配置为:
[0147] 接收针对目标业务数据表的数据查询请求,确定所述目标哈希表和所述目标哈希算法;
[0148] 基于所述目标哈希表和所述目标哈希算法执行所述数据查询请求,获得数据查询结果。
[0149] 可选地,所述执行模块,进一步被配置为:
[0150] 确定所述数据查询请求中的待查询字段;
[0151] 基于所述目标哈希算法计算得到所述待查询字段对应的字段哈希值;
[0152] 在所述目标哈希表中确定所述字段哈希值对应的目标字段,并基于所述目标字段获得数据查询结果。
[0153] 可选地,所述计算模块404,进一步被配置为:
[0154] 确定预设哈希计算初值和预设哈希尺寸阈值;
[0155] 基于所述预设哈希计算初值、所述预设哈希尺寸阈值和每个待匹配哈希算法计算得到所述目标数据表每个业务字段对应的业务字段信息。
[0156] 可选地,所述计算模块404,进一步被配置为:
[0157] 根据每个待匹配哈希算法对应的业务字段信息生成每个待匹配哈希算法对应的参考哈希表。
[0158] 可选地,所述第二确定模块406,进一步被配置为:
[0159] 确定哈希冲突数小于等于预设阈值的至少一个目标参考哈希表;
[0160] 基于每个目标参考哈希表按照哈希冲突数由大到小进行排序,获得参考哈希表队列;
[0161] 选取所述参考哈希表队列中的位于队尾的目标参考哈希表,作为所述目标业务数据表对应的目标哈希表。
[0162] 可选地,所述装置还包括第一创建模块,被配置为:
[0163] 在未获取到哈希冲突数小于等于预设阈值的参考哈希表的情况下,基于所述预设哈希计算初值确定当前哈希计算初值;
[0164] 基于所述当前哈希计算初值和所述预设哈希尺寸阈值创建每个待匹配哈希算法对应的第一参考哈希表;
[0165] 确定哈希冲突数小于等于预设阈值的目标第一参考哈希表作为目标哈希表。
[0166] 可选地,所述装置还包括第二创建模块,被配置为:
[0167] 在未获取到哈希冲突数小于等于预设阈值的第一参考哈希表的情况下,基于所述预设哈希尺寸阈值确定当前哈希尺寸阈值;
[0168] 根据所述当前哈希计算初值和所述当前哈希尺寸阈值获得每个待匹配哈希算法对应的第二参考哈希表;
[0169] 确定哈希冲突数小于等于预设阈值的目标第二参考哈希表作为目标哈希表。
[0170] 本申请提供的哈希表的确定装置,第一确定模块,响应于针对目标业务数据表的哈希表创建请求,确定至少一个待匹配哈希算法;计算模块,分别通过每个待匹配哈希算法计算得到所述目标业务数据表中的业务字段信息,获得所述目标业务数据表根据每个待匹配哈希算法生成的参考哈希表;第二确定模块,确定哈希冲突数小于等于预设阈值的参考哈希表为所述目标业务数据表对应的目标哈希表。
[0171] 通过确定至少一个待匹配哈希算法,以便基于每个待匹配哈希算法确定用于生成哈希表的哈希算法;分别计算每个待匹配哈希算法对应的业务字段信息,以便生成每个待匹配哈希算法对应的参考哈希表;选取哈希冲突数小于预设阈值的参考哈希表作为目标业务数据表对应的目标哈希表,从而得到在后续查询中效率较高的哈希表,进而便于后续提升对目标业务数据表的查询效率。
[0172] 上述为本实施例的一种哈希表的确定装置的示意性方案。需要说明的是,该哈希表的确定装置的技术方案与上述的哈希表的确定方法的技术方案属于同一构思,哈希表的确定装置的技术方案未详细描述的细节内容,均可以参见上述哈希表的确定方法的技术方案的描述。
[0173] 图5示出了根据本申请一实施例提供的一种计算设备500的结构框图。该计算设备500的部件包括但不限于存储器510和处理器520。处理器520与存储器510通过总线530相连接,数据库550用于保存数据。
[0174] 计算设备500还包括接入设备540,接入设备540使得计算设备500能够经由一个或多个网络560通信。这些网络的示例包括公用交换电话网(PSTN,Public Switched Telephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide Area Network)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备540可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,network interface controller))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,Wireless Local  Area  Network)无线接口、全球微波互联接入(Wi‑MAX,Worldwide Interoperability for Microwave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near Field Communication)接口,等等。
[0175] 在本申请的一个实施例中,计算设备500的上述部件以及图5中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图5所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
[0176] 计算设备500可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备500还可以是移动式或静止式的服务器。
[0177] 其中,处理器520执行所述计算机指令时实现所述的哈希表的确定方法的步骤。
[0178] 上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的哈希表的确定方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述哈希表的确定方法的技术方案的描述。
[0179] 本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该计算机指令被处理器执行时实现如前所述哈希表的确定方法的步骤。
[0180] 上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的哈希表的确定方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述哈希表的确定方法的技术方案的描述。
[0181] 上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
[0182] 所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0183] 需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
[0184] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
[0185] 以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。