数据编码方法、图数据存储方法、图数据查询方法及装置制造方法及图纸

技术编号:30804754 阅读:19 留言:0更新日期:2021-11-16 08:11
本说明书的实施例提供数据编码方法、图数据存储方法、图数据查询方法及装置。在该数据编码方法中,基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片,所得到的各个数据分片的分片标识基于该数据分片中的数据记录的键的一致性哈希值确定。针对各个数据分片,通过使用完美哈希算法对该数据分片中的各个数据记录的键值对中的键进行完美哈希计算,确定各个数据记录在该数据分片中的片内索引。基于待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片;并且针对记录有数据记录的每个数据分片,分别生成数据分片文件以及对应的完美哈希因子文件。对应的完美哈希因子文件。对应的完美哈希因子文件。

【技术实现步骤摘要】
数据编码方法、图数据存储方法、图数据查询方法及装置


[0001]本说明书实施例通常涉及数据库领域,尤其涉及基于完美哈希的数据编码方法、图数据存储方法、图数据查询方法及装置以及数据库系统。

技术介绍

[0002]图数据的应用场景越来越广泛,并且图数据的数量也越来越庞大。图数据相比单一键值对格式的非图数据更加复杂。在进行图数据存储时,通常将图数据中的节点数据、边数据和邻居数据分别存储在点表、边表和邻居表中。利用现有数据存储方案进行图数据存储,不能实现较高数据查询效率。

技术实现思路

[0003]鉴于上述,本说明书实施例提供基于完美哈希的数据存储及图数据查询方案。利用该数据存储及图数据查询方案,通过将待存储数据以数据分片形式存储,并且使用待存储数据的键值对中的键的完美哈希值作为待存储数据在数据分片中的片内索引,所得到的片内索引占用较小的存储空间,从而使得所生成的数据分片文件具有较小尺寸,适合于在进行数据查询时加载到数据存储服务器的内存中,由此在图数据查询时避免进行IO读取,从而提升图数据查询效率。
[0004]根据本说明书实施例的一个方面,提供一种基于完美哈希的数据编码方法,包括:基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片,所得到的各个数据分片的分片标识基于该数据分片中的数据记录的键的一致性哈希值确定;针对各个数据分片,通过使用完美哈希算法对该数据分片中的各个数据记录的键值对中的键进行完美哈希计算,确定各个数据记录在该数据分片中的片内索引;基于所述待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片;以及针对记录有数据记录的每个数据分片,分别生成数据分片文件以及对应的完美哈希因子文件。
[0005]可选地,在上述方面的一个示例中,基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片可以包括:对待编码数据中的各个数据记录的键值对中的键进行一致性哈希计算;对各个数据记录的一致性哈希值进行以数据分片数量为模数的取模处理;以及将取模结果相同的数据记录划分到同一数据分片,各个数据分片的分片标识基于对应的取模结果确定。
[0006]可选地,在上述方面的一个示例中,所述待编码数据包括图数据的点表数据,所述点表数据的每个节点数据中的图节点的节点标识和节点属性在数据编码时分别充当该节点数据的键和值。基于所述待编码数据的各个数据记录在对应数据分片中的分片索引,将各个数据记录的键值对记录到对应数据分片可以包括:基于各个节点数据在对应数据分片中的节点数据片内索引,将各个节点数据的节点标识和节点属性记录到对应数据分片。
[0007]可选地,在上述方面的一个示例中,所述待编码数据包括图数据的边表数据,所述
边表数据的每个边数据包括起始图节点的节点标识、终止图节点的节点标识以及边属性。在对所述边表数据的各个边数据进行数据分片之前,所述数据编码方法还可以包括:通过下述过程对所述边表数据中的边数据进行数据更新:针对每条边,分别基于起始图节点的节点标识和终止图节点的节点标识进行节点分片,确定起始图节点和终止图节点所在节点分片的节点分片标识,各个节点分片的节点分片标识基于对应节点标识的一致性哈希值确定,以及分别使用点表数据编码时的完美哈希因子文件中的对应完美哈希因子计算起始图节点的节点标识的完美哈希值以及终止图节点的节点标识的完美哈希值,确定起始图节点和终止图节点在所在节点分片中的片内索引;分别将各个起始图节点的节点分片标识和片内索引组合以及将各个终止图节点的节点分片标识和片内索引组合,得到各个起始图节点的全局节点标识和各个终止图节点的全局节点标识;以及针对每条边,将起始图节点的全局节点标识和终止图节点的全局节点标识组合为边标识,其中,边标识在数据编码时充当边数据的键,以及边属性在数据编码时充当边数据的值。
[0008]可选地,在上述方面的一个示例中,基于所述待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片可以包括:基于各个更新后的边数据在对应边数据分片中的边数据片内索引,将各个更新后的边数据的边属性记录到对应边数据分片。
[0009]可选地,在上述方面的一个示例中,所述待编码数据包括图数据的邻居表数据,所述邻居表数据的每个邻居数据包括起始图节点的节点标识以及所有终止图节点的节点标识。所述数据编码方法还可以包括:通过下述过程将所有终止图节点的节点标识更新为全局节点标识:针对每个终止图节点,基于该终止图节点的节点标识进行节点分片,确定该终止图节点所在节点分片的节点分片标识,所述节点分片标识基于该终止图节点的节点标识的一致性哈希值确定,使用点表数据编码时的完美哈希因子文件中的对应完美哈希因子计算该终止图节点的节点标识的完美哈希值,确定该终止图节点在所在节点分片中的片内索引;以及将该终止图节点的节点分片标识和片内索引组合,得到该终止图节点的全局节点标识,其中,邻居数据中的起始图节点的节点标识在数据编码时充当邻居数据的键,以及邻居数据中的所有终止图节点的全局节点标识在数据编码时充当邻居数据的值。基于所述待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片可以包括:基于各个邻居数据在对应邻居数据分片中的邻居数据片内索引,将各个邻居数据的起始图节点的节点标识以及所有终止图节点的全局节点标识记录到对应邻居数据分片。
[0010]可选地,在上述方面的一个示例中,所有终止图节点的全局节点标识采用整数表征并且按照升序记录到对应邻居数据分片,以及所述全局节点标识按照增量变长整数编码方式记录。
[0011]根据本说明书的实施例的另一方面,提供一种基于完美哈希的图数据存储方法,所述图数据包括点表数据、边表数据和邻居表数据,所述图数据存储方法包括:按照如上所述的数据编码方法对点表数据进行数据编码,以生成节点数据分片文件和对应的完美哈希因子文件;按照如上所述的数据编码方法对边表数据进行数据编码,以生成边数据分片文件和对应的完美哈希因子文件;按照如上所述的数据编码方法对邻居表数据进行数据编码,以生成邻居数据分片文件和对应的完美哈希因子文件;以及将所述节点数据分片文件
和对应的完美哈希因子文件、所述边数据分片文件和对应的完美哈希因子文件、以及邻居数据分片文件和对应的完美哈希因子文件分别存储到点表服务器、边表服务器和邻居表服务器。
[0012]根据本说明书的实施例的另一方面,提供一种基于完美哈希的图数据查询方法,图数据按照如上所述的图数据存储方法存储到点表服务器、边表服务器和邻居表服务器,所述图数据查询方法可以包括:响应于接收到来自用户的图数据查询请求,基于所述图数据查询请求中的待查询图节点的节点标识向邻居表服务器发起节点标识查询,得到所述待查询图节点的全局节点标识以及所有邻居图节点的全局节点标识;基于各个邻居图节点的全局节点标识向点表服务器发起节点数据查询,得到所有邻居图节点的节点数据;基于所述待查询图节点的全局节点标识以及各个邻居图节点的全局节点标识向边表服务器发起本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于完美哈希的数据编码方法,包括:基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片,所得到的各个数据分片的分片标识基于该数据分片中的数据记录的键的一致性哈希值确定;针对各个数据分片,通过使用完美哈希算法对该数据分片中的各个数据记录的键值对中的键进行完美哈希计算,确定各个数据记录在该数据分片中的片内索引;基于所述待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片;以及针对记录有数据记录的每个数据分片,分别生成数据分片文件以及对应的完美哈希因子文件。2.如权利要求1所述的数据编码方法,其中,基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片包括:对待编码数据中的各个数据记录的键值对中的键进行一致性哈希计算;对各个数据记录的一致性哈希值进行以数据分片数量为模数的取模处理;以及将取模结果相同的数据记录划分到同一数据分片,各个数据分片的分片标识基于对应的取模结果确定。3.如权利要求1所述的数据编码方法,其中,所述待编码数据包括图数据的点表数据,所述点表数据的每个节点数据中的图节点的节点标识和节点属性在数据编码时分别充当该节点数据的键和值,基于所述待编码数据的各个数据记录在对应数据分片中的分片索引,将各个数据记录的键值对记录到对应数据分片包括:基于各个节点数据在对应数据分片中的节点数据片内索引,将各个节点数据的节点标识和节点属性记录到对应数据分片。4.如权利要求1所述的数据编码方法,其中,所述待编码数据包括图数据的边表数据,所述边表数据的每个边数据包括起始图节点的节点标识、终止图节点的节点标识以及边属性,在对所述边表数据的各个边数据进行数据分片之前,所述数据编码方法还包括:通过下述过程对所述边表数据中的边数据进行数据更新:针对每条边,分别基于起始图节点的节点标识和终止图节点的节点标识进行节点分片,确定起始图节点和终止图节点所在节点分片的节点分片标识,各个节点分片的节点分片标识基于对应节点标识的一致性哈希值确定,以及分别使用点表数据编码时的完美哈希因子文件中的对应完美哈希因子计算起始图节点的节点标识的完美哈希值以及终止图节点的节点标识的完美哈希值,确定起始图节点和终止图节点在所在节点分片中的片内索引;分别将各个起始图节点的节点分片标识和片内索引组合以及将各个终止图节点的节点分片标识和片内索引组合,得到各个起始图节点的全局节点标识和各个终止图节点的全局节点标识;以及针对每条边,将起始图节点的全局节点标识和终止图节点的全局节点标识组合为边标识,其中,边标识在数据编码时充当边数据的键,以及边属性在数据编码时充当边数据的值。5.如权利要求4所述的数据编码方法,其中,基于所述待编码数据的各个数据记录在对
应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片包括:基于各个更新后的边数据在对应边数据分片中的边数据片内索引,将各个更新后的边数据的边属性存储到对应边数据分片。6.如权利要求1所述的数据编码方法,其中,所述待编码数据包括图数据的邻居表数据,所述邻居表数据的每个邻居数据包括起始图节点的节点标识以及所有终止图节点的节点标识,所述数据编码方法还包括:通过下述过程将所有终止图节点的节点标识更新为全局节点标识:针对每个终止图节点,基于该终止图节点的节点标识进行节点分片,确定该终止图节点所在节点分片的节点分片标识,所述节点分片标识基于该终止图节点的节点标识的一致性哈希值确定,使用点表数据编码时生成的完美哈希因子文件中的对应完美哈希因子计算该终止图节点的节点标识的完美哈希值,确定该终止图节点在所在节点分片中的片内索引;以及将该终止图节点的节点分片标识和片内索引组合,得到该终止图节点的全局节点标识,其中,邻居数据中的起始图节点的节点标识在数据编码时充当邻居数据的键,以及邻居数据中的所有终止图节点的全局节点标识在数据编码时充当邻居数据的值,基于所述待编码数据的各个数据记录在对应数据分片中的片内索引,将各个数据记录的键值对记录到对应数据分片包括:基于各个邻居数据在对应邻居数据分片中的邻居数据片内索引,将各个邻居数据的起始图节点的节点标识以及所有终止图节点的全局节点标识记录到对应邻居数据分片。7.如权利要求6所述的数据编码方法,其中,所有终止图节点的全局节点标识采用整数表征并且按照升序记录到对应邻居数据分片,以及所述全局节点标识按照增量变长整数编码方式记录。8.一种基于完美哈希的图数据存储方法,所述图数据包括点表数据、边表数据和邻居表数据,所述图数据存储方法包括:按照如权利要求3所述的数据编码方法对点表数据进行数据编码,以生成节点数据分片文件和对应的完美哈希因子文件;按照如权利要求4或5所述的数据编码方法对边表数据进行数据编码,以生成边数据分片文件和对应的完美哈希因子文件;按照如权利要求6或7所述的数据编码方法对邻居表数据进行数据编码,以生成邻居数据分片文件和对应的完美哈希因子文件;以及将所述节点数据分片文件和对应的完美哈希因子文件、所述边数据分片文件和对应的完美哈希因子文件、以及邻居数据分片文件和对应的完美哈希因子文件分别存储到点表服务器、边表服务器和邻居表服务器。9.一种基于完美哈希的图数据查询方法,图数据按照如权利要求8所述的图数据存储方法存储到点表服务器、边表服务器和邻居表服务器,所述图数据查询方法包括:响应于接收到来自用户的图数据查询请求,基于所述图数据查询请求中的待查询图节点的节点标识向邻居表服务器发起节点标识查询,得到所述待查询图节点的全局节点标识以及所有邻居图节点的全局节点标识;
基于各个邻居图节点的全局节点标识向点表服务器发起节点数据查询,得到所有邻居图节点的节点数据;基于所述待查询图节点的全局节点标识以及各个邻居图节点的全局节点标识向边表服务器发起边数据查询,得到所述待查询图节点的边数据;以及将所述待查询图节点的边数据以及所有邻居图节点的节点数据提供给所述用户。10.如权利要求9所述的图数据查询方法,其中,将所述待查询图节点的边数据以及所有邻居图节点的节点数据提供给所述用户包括:将所述待查询图节点的边数据以及所有邻居图节点的节点数据组装成图结构数据提供给所述用户。11.如权利要求9所述的图数据查询方法,其中,在进行图数据查询之前,所述节点数据分片文件、边数据分片文件、邻居数据分片文件以及对应的完美哈希因子文件被加载到对应数据服务器的内存中。12.如权利要求9所述的图数据查询方法,其中,基于所述图数据查询请求中的待查询图节点的节点标识向邻居表服务器发起节点标识查询,得到所述待查询图节点的全局节点标识以及所有终止图节点的全局节点标识包括:对所述待查询图节点的节点标识进行一致性哈希计算,确定邻居数据分片的邻居数据分片标识;向所述邻居数据分片标识所标识的邻居表服务器发送节点标识查询请求,所述节点标识查询请求包括所述待查询图节点的节点标识;以及接收所述邻居表服务器响应于所述节点标识查询请求而返回的所述待查询图节点的全局节点标识以及所有邻居图节点的全局节点标识,其中,所有邻居图节点的全局节点标识通过从所述邻居表服务器的邻居数据分片文件中邻居数据片内索引所索引的记录位置处获取,所述邻居数据片内索引通过使用完美哈希因子文件中的对应完美哈希因子计算所述待查询图节点的节点标识的完美哈希值得到,以及所述待查询图节点的全局节点标识通过组合所述邻居数据分片的邻居数据分片标识以及所述邻居数据片内索引得到。13.如权利要求12所述的图数据查询方法,其中,基于各个邻居图节点的全局节点标识向点表服务器发起节点数据查询,得到所有邻居图节点的节点数据包括:对各个邻居图节点的全局节点标识进行解组合,得到各个邻居图节点所在节点数据分片的节点数据分片标识以及邻居图节点的节点数据片内索引;基于各个邻居图节点的节点数据分片标识,向各个邻居图节点的节点数据分片标识所标识的点表服务器发起针对各个邻居图节点的节点数据查询请求,所述节点数据查询请求包括对应邻居图节点的节点数据片内索引;以及接收所述点表服务器响应于所述节点数据查询请求而返回的各个邻居图节点的节点数据,其中,所述邻居图节点的节点数据由所述点表服务器基于所述节点数据片内索引从节点数据分片文件中获取。14.如权利要求12所述的图数据查询方法,其中,基于所述待查询图节点的全局节点标识以及各个邻居图节点的全局节点标识向边表服务器发起边数据查询,得到所述待查询图
节点的边数据包括:将所述待查询图节点的全局节点标识与各个邻居图节点的全局节点标识分别进行组合,得到各个边的边标识;对各个边的边标识进行一致性哈希计算,确定各个边所在边数据分片的边数据分片标识;向所确定的边数据分片标识所标识的边表服务器发送边数据查询请求,所述边数据查询请求包括边标识;以及接收所述边表服务器响应于所述边数据查询请求而返回的所述待查询图节点的边数据,其中,所述待查询图节点的边数据基于边数据片内索引从所述边表服务器的边数据分片文件中获取,所述边数据片内索引通过使用完美哈希因子文件中的对应完美哈希因子计算所述边标识的完美哈希值得到。15.一种基于完美哈希的数据编码装置,包括:数据分片单元,基于数据记录的键值对中的键对待编码数据的各个数据记录进行数据分片,所得到的各个数据分片的分片标识基于该数据分片中的数据记录的键的一致性哈希值确定;片内索引确定单元,针对各个数据分片,通过使用完美哈...

【专利技术属性】
技术研发人员:张松清江进付治钧袁琳朱炳鹏王伟生
申请(专利权)人:支付宝杭州信息技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1