CN117540056A - 数据查询的方法、装置、计算机设备和存储介质 - Google Patents

数据查询的方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN117540056A
CN117540056A CN202410027187.8A CN202410027187A CN117540056A CN 117540056 A CN117540056 A CN 117540056A CN 202410027187 A CN202410027187 A CN 202410027187A CN 117540056 A CN117540056 A CN 117540056A
Authority
CN
China
Prior art keywords
target
point
mapping
adjacent
queried
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.)
Granted
Application number
CN202410027187.8A
Other languages
English (en)
Other versions
CN117540056B (zh
Inventor
宋志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202410027187.8A priority Critical patent/CN117540056B/zh
Publication of CN117540056A publication Critical patent/CN117540056A/zh
Application granted granted Critical
Publication of CN117540056B publication Critical patent/CN117540056B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种数据查询的方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:响应于图数据查询请求,提取图数据查询请求中携带的查询参数;在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;从目标子桶中查询为待查询点对象分配的目标点映射值;从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;基于目标数据存储位置,查询待查询点对象的对象数据。采用本方法能够提升数据查询效率。

Description

数据查询的方法、装置、计算机设备和存储介质
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据查询的方法、装置、计算机设备和存储介质。
背景技术
随着移动互联网的飞速发展,在大数据行业下需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,因此图形数据库应运而生。图形数据库,简称图数据库,是一种非关系型数据库,它可以应用图形理论存储实体之间的关系信息。目前,可以通过缓存框架对图数据进行缓存,然而由于图数据库中的图数据可以存储实体以及实体之间的关系信息,即图数据的数据量较大,频繁进行缓存访问也会引入大量的虚函数调用开销,由此存在数据查询效率较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升数据查询效率的数据查询的方法、装置、计算机设备和存储介质。
第一方面,本申请提供了一种数据查询的方法。所述方法包括:
响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从目标子桶中查询为待查询点对象分配的目标点映射值;
从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
基于目标数据存储位置,查询待查询点对象的对象数据。
第二方面,本申请还提供了一种数据查询装置。所述装置包括:
响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从目标子桶中查询为待查询点对象分配的目标点映射值;
从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
基于目标数据存储位置,查询待查询点对象的对象数据。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从目标子桶中查询为待查询点对象分配的目标点映射值;
从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
基于目标数据存储位置,查询待查询点对象的对象数据。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从目标子桶中查询为待查询点对象分配的目标点映射值;
从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
基于目标数据存储位置,查询待查询点对象的对象数据。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从目标子桶中查询为待查询点对象分配的目标点映射值;
从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
基于目标数据存储位置,查询待查询点对象的对象数据。
上述数据查询的方法、装置、计算机设备、存储介质和计算机程序产品,通过每个分桶点表将每一点对象散列在不同的子桶内,再通过每个子桶内使用点映射值维护点对象的哈希值与点映射值之间的匹配关系,点映射值所占用的内存空间较少,由此通过待查询点对象在所匹配的目标子桶中所记录的目标点映射值,由此在保证索引能力前提下有效降低内存开销。基于此,再通过映射表记录点映射值与数据存储位置之间的映射关系,以确定目标数据存储位置,因此,在进行数据查询时,在正确索引至待查询点对象的对象数据的基础上,还能够降低内存开销以加速查询过程,从而提升数据查询效率。
附图说明
图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为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
随着移动互联网的飞速发展,在大数据行业下需要处理的数据之间的关系随数据量呈几何级数增长,亟需一种支持海量复杂数据关系运算的数据库,因此图形数据库应运而生。图形数据库,简称图数据库,是一种非关系型数据库,它可以应用图形理论存储实体之间的关系信息。目前,可以通过缓存框架对图数据进行缓存,然而由于图数据库中的图数据可以存储实体以及实体之间的关系信息,即图数据的数据量较大,频繁进行缓存访问也会引入大量的虚函数调用开销,由此存在数据查询效率较低的问题。
为解决前述问题,本申请实施例提供一种能够提升数据查询效率的数据查询的方法。本申请实施例提供的数据查询的方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。
具体地,以应用于图1所示出的服务器104为例进行说明,服务器104先响应于图数据查询请求,提取图数据查询请求中携带的查询参数。基于此,在查询参数包括待查询点对象的情况下,服务器104再确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,然后从目标子桶中查询为待查询点对象分配的目标点映射值,并且从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系,最后基于目标数据存储位置,查询待查询点对象的对象数据。由于点映射值所占用的内存空间较少,由此通过待查询点对象在所匹配的目标子桶中所记录的目标点映射值,由此在保证索引能力前提下有效降低内存开销。基于此,在进行数据查询时,通过映射表记录点映射值与数据存储位置之间的映射关系,以确定目标数据存储位置,由此在正确索引至待查询点对象的对象数据的基础上,还能够降低内存开销以加速查询过程,从而提升数据查询效率。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
基于此,由于本申请实施例提供的数据查询的方法具体包括基于数据查询的分桶点表、映射表以及邻接表的表结构更新流程,以及基于分桶点表、映射表以及邻接表的数据查询流程,下面将分别进行简述,如图2所示出的基于数据查询的分桶点表、映射表以及邻接表的表结构更新流程,表结构更新流程一般表结构更新流程一般由数据查询触发,在分桶点表202的各子桶中均未查询到为待查询点对象204分配的点映射值的情况下,为待查询点对象分配待查询点对象的目标点映射值206,并对待查询点对象的对象属性进行哈希计算得到目标哈希值208,从而将目标点映射值206与目标哈希值208的映射关系添加至分桶点表中。
基于此,然后去数据库的存储查找待查询点对象的数据,并完成对待查询点对象的数据的存储操作,以确定待查询点对象的数据的目标数据存储位置210,从而将目标点映射值206与目标数据存储位置210之间的映射关系添加至映射表212中。其次,再将目标点映射值写入邻接表214,并记录目标点映射值在邻接表中的目标邻接位置信息,并将目标点映射值与目标邻接位置信息之间的映射关系添加至邻接表中。以及在邻接表214中未检索到与目标点映射值、和为分配的待查询边对象216分配目标边描述符匹配的邻接点对象数组的情况下,获取与待查询点对象具有待查询关联关系的邻接点对象,并通过与待查询点对象具有待查询关联关系的邻接点对象创建目标邻接点对象数组,此时会为待查询边对象216分配目标边描述符218,由此将目标边描述符218与目标邻接点对象数组之间的映射关系添加至邻接表中。从而完成对基于数据查询的分桶点表、映射表以及邻接表的表结构更新流程。
基于此,如图3所示出的基于分桶点表、映射表以及邻接表的数据查询流程,也就是在如图2所示出的完成对基于数据查询的分桶点表、映射表以及邻接表的表结构更新流程后,在图数据查询请求中携带的查询参数中包括待查询点对象以及待查询边对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,并从目标子桶中查询为待查询点对象分配的目标点映射值。其次,再确定为待查询边对象分配的目标边描述符,并基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组,并通过分桶点表查询为目标邻接点对象数组中每一目标邻接点对象分配的目标邻接点映射值。由此,从映射表中,检索与目标点映射值匹配的目标数据存储位置,进而基于目标数据存储位置查询待查询点对象的对象数据,以及通过类似方式,在映射表中分别检索与各邻接点映射值匹配的邻接数据存储位置,并基于各邻接数据存储位置,查询各目标邻接点对象各自的对象数据。
进一步地,由于本申请实施例提供的数据查询的方法还涉及云技术(Cloudtechnology),下面将对云技术进行简述。云技术是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
其中,数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(英语:Database Management System,简称DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible MarkupLanguage,即可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(结构化查询语言(StructuredQueryLanguage)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
具体通过如下实施例进行说明:在一个实施例中,如图4所示,提供了一种数据查询的方法,以该方法应用于图1中的服务器104为例进行说明,可以理解的是,该方法也可以应用于终端102,还可以应用于包括终端102和服务器104的系统,并通过终端102和服务器104的交互实现。本实施例中,该方法包括以下步骤:
步骤402,响应于图数据查询请求,提取图数据查询请求中携带的查询参数。
其中,图数据查询请求携带查询参数,以及图数据查询请求还可以携带图数据标识,图数据标识用于唯一标识待查询图数据,即查询参数具体为用于对待查询图数据中点对象与边对象进行查询指示的参数。基于此,查询参数中至少包括待查询点对象,以及还可以包括查询边对象,待查询点对象为属于图数据标识所标识待查询图数据中的点对象。以及待查询边对象用于描述待查询关联关系,且图数据标识所标识待查询图数据中存在该待查询边对象。
具体地,在需要针对待查询图数据进行数据查询的情况下,服务器先接收针对待查询图数据的图数据查询请求,由于是针对待查询图数据的图数据查询请求,因此在图数据查询请求中至少包括用于唯一标识待查询图数据的图数据标识,以及针对待查询图数据的查询参数。由此,服务器104再响应于图数据查询请求,以提取图数据查询请求中携带的查询参数。可以理解的是,服务器可以接收的是来自于其他服务器所发出的图数据查询请求,也可以是通过与终端之间的通信连接,所接收的是来自于终端所发出的图数据查询请求,即本实施例中不对接收图数据查询请求的方式进行具体限定。
步骤404,在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值。
其中,分桶点表中包括多个子桶,且每一子桶用于记录哈希值相同的每一点对象所分配的点映射值。且分桶点表中的子桶数量是预设固定的,但每一自动中所包括的每一点对象所分配的点映射值的点映射值数量是灵活变动的。例如,分桶点表中包括5个子桶,分别为子桶A1、子桶A2、子桶A3、子桶A4以及子桶A5,子桶A1用于记录哈希值为“1”的点对象所分配的点映射值,子桶A2用于记录哈希值为“2”的点对象所分配的点映射值,子桶A3用于记录哈希值为“3”的点对象所分配的点映射值,子桶A4用于记录哈希值为“4”的点对象所分配的点映射值,子桶A5用于记录哈希值为“5”的点对象所分配的点映射值。其次,点映射值具体为long关键字,long关键字表示一种长整型数据,是编程语言中的一种基本数据类型,long关键字默认为有符号长整型,含8个字节。
具体地,由于查询参数中至少包括待查询点对象,因此在查询参数包括待查询点对象的情况下,服务器先确定待查询点对象在分桶点表中所匹配的目标子桶,也就是服务器通过计算待查询点对象所对应的哈希值,以找到与待查询点对象所对应的哈希值所匹配的子桶,并将该子桶确定为目标子桶。示例性地,以前述示例进行一步地介绍,若分桶点表中包括5个子桶,且所得到的待查询点对象所对应的哈希值为“1”,由于子桶A1用于记录哈希值为“1”的点对象所分配的点映射值,因此可以确定子桶A1为待查询点对象在分桶点表中所匹配的目标子桶。
步骤406,从目标子桶中查询为待查询点对象分配的目标点映射值。
其中,每一子桶用于记录哈希值相同的每一点对象所分配的点映射值。为便于理解,基于前述示例进行进一步地介绍,如图5所示,存在子桶501、子桶502、子桶503、子桶504以及子桶505。其中,子桶501中分别记录有哈希值为“1”的点对象所分配的点映射值“12”、点映射值“14”、点映射值“27”、点映射值“38”以及点映射值“39”等。子桶502中分别记录有哈希值为“2”的点对象所分配的点映射值“10”、点映射值“11”以及点映射值“42”等。依次类推,子桶503中记录有哈希值为“3”的点对象所分配的点映射值,子桶504中记录有哈希值为“4”的点对象所分配的点映射值,以及子桶505中记录有哈希值为“5”的点对象所分配的点映射值,此处不再一一示例介绍。
具体地,服务器从目标子桶中查询为待查询点对象分配的目标点映射值。通过前述示例可知,由于每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,那么服务器可以在确定目标子桶后,由于目标子桶中记录有与待查询点对象的哈希值相同的,各点对象所分配的点映射值,那么即可从中查询得到待查询点对象分配的目标点映射值。具体查询方式可以是通过唯一描述待查询点对象的点对象标识进行的,如子桶中具体记录哈希值相同情况下,每一点对象的点对象标识与每一点对象所分配的点映射值之间的映射关系,那么在确定目标子桶后,即可确定与待查询点对象的点对象标识具有前述映射关系的点映射值,并将前述点映射值确定为目标点映射值。
示例性地,请再次查阅图5,若子桶501中具体记录有哈希值为“1”的点对象B1所分配的点映射值“12”,哈希值为“1”的点对象B2所分配的点映射值“14”,哈希值为“1”的点对象B3所分配的点映射值“27”,哈希值为“1”的点对象B4所分配的点映射值“38”,以及哈希值为“1”的点对象B5所分配的点映射值“39”。若待查询点对象具体为点对象B3,那么可以从子桶501中查询得到的哈希值为“1”的点对象B3所分配的点映射值“27”,即可以确定待查询点对象(点对象B3)的目标点映射值为“27”。
步骤408,从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系。
其中,映射表用于记录点映射值与数据存储位置之间的映射关系,前述数据存储位置用于检索查询点对象的对象数据,数据存储位置在实际函数调用中具体为位置(Position)。例如,映射表记录有:点映射值“1”与数据存储位置C1之间的映射关系,点映射值“2”与数据存储位置C2之间的映射关系,点映射值“3”与数据存储位置C3之间的映射关系,点映射值“4”与数据存储位置C4之间的映射关系,依次类推至点映射值“40”与数据存储位置C40之间的映射关系。其中,数据存储位置C1用于检索查询点映射值“1”所匹配点对象的对象数据,数据存储位置C2用于检索查询点映射值“2”所匹配点对象的对象数据,依次类推不再赘述。
具体地,由于映射表用于记录点映射值与数据存储位置之间的映射关系,因此服务器可以从映射表中,检索与目标点映射值匹配的目标数据存储位置。再次以前述示例进行介绍,若待查询点对象的目标点映射值为“27”,而映射表中记录有点映射值“27”与数据存储位置C27之间的映射关系,即可以基于前述映射关系检索得到的与目标点映射值“27”匹配的目标数据存储位置具体为数据存储位置C27。
步骤410,基于目标数据存储位置,查询待查询点对象的对象数据。
具体地,服务器基于目标数据存储位置,查询待查询点对象的对象数据。也就是在实际应用中,点对象的对象数据至少包括点对象所属图数据(graph)、点对象所属标签(label)以及点对象的主键标识等,在存储点对象的对象数据的过程中,会将点对象的对象数据序列化到Chunk上,Chunk是固定长度且以及通过Position快速检索的数据结构,并且Chunk有两种不同状态,分别是内存态和文件态,也就是会存在内存态的Chunk和文件态的Chunk,其中,内存态的Chunk全局只有一个,用于实时记录新生成的映射关系,因此点对象的对象数据写入内存态的Chunk的过程采用Append only方式,当内存态的Chunk写满时会缓存(flush)到磁盘以得到文件态的Chunk。
为便于理解,如图6所示,本实施例中的数据存储位置具体为Position,因此通过数据存储位置可以检索Chunk的数据结构中点对象的对象数据。那么,若目标数据存储位置具体为Position 602,那么服务器可以基于Position 602,在Chunk中检索待查询点对象的对象数据,从而从Chunk中查询读取所写入的待查询点对象的对象数据。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
上述数据查询的方法中,通过每个分桶点表将每一点对象散列在不同的子桶内,再通过每个子桶内使用点映射值维护点对象的哈希值与点映射值之间的匹配关系,点映射值所占用的内存空间较少,由此通过待查询点对象在所匹配的目标子桶中所记录的目标点映射值,由此在保证索引能力前提下有效降低内存开销。基于此,再通过映射表记录点映射值与数据存储位置之间的映射关系,以确定目标数据存储位置,因此,在进行数据查询时,在正确索引至待查询点对象的对象数据的基础上,还能够降低内存开销以加速查询过程,从而提升数据查询效率。
在一个实施例中,如图7所示,从映射表中,检索与目标点映射值匹配的目标数据存储位置,包括:
步骤702,通过映射表中每一映射分段的映射子段数量、与目标点映射值,从映射表中检索与目标点映射值匹配的目标数据存储位置;映射子段数量用于描述映射分段中所包括映射子段的总数。
其中,映射子段数量用于描述映射分段中所包括映射子段的总数,映射子段用于记录点映射值,且映射子段还可以检索与所记录点映射值匹配的数据存储位置。以及映射子段数量是通过初始化映射表时所得到的,也就是映射子段数量是预设的。若映射表中每一映射分段具体为数组形式,此时映射子段数量具体为数组形式的映射分段的数组长度。
其次,每一映射分段的映射子段数量是一致的,且在每一映射子段均记录点映射值且检索至匹配的数据存储位置后,即完成该映射分段的数据写入,再通过下一映射分段进行数据写入。例如,映射表中包括映射分段D1、映射分段D2以及映射分段D3,在向映射分段D2中写入数据之前必定存在映射分段D1中映射子段已写满,同理,在向映射分段D3中写入数据之前必定存在映射分段D2中映射子段已写满。
具体地,服务器在初始化映射表时即可得到预设的映射子段数量,基于此,对映射子段数量以及目标点映射值进行求商计算以及取模计算,以确定目标点映射值在映射表中所处的目标映射分段,由于映射子段可以记录点映射值,因此通过目标点映射值可以检索至记录该目标点映射值的目标映射子段,也就是确定目标点映射值在目标映射分段所处的目标映射子段。其次,由于映射子段还可以检索与所记录点映射值匹配的数据存储位置,因此通过目标映射子段可以检索至所记录目标点映射值匹配的目标数据存储位置。
本实施例中,通过映射子段数量可以确定每一映射分段中可记录数据的数量最大值,然后通过对映射子段数量进行目标点映射值求商计算以及取模计算,以确定记录目标点映射值的目标映射子段,由此通过目标映射子段检索目标数据存储位置,以能够保证对目标数据存储位置确定的可靠性以及准确性。
下面将详细描述如何通过映射子段数量与目标点映射值,检索目标数据存储位置的方式:在一个实施例中,如图8所示,通过映射表中每一映射分段的映射子段数量、与目标点映射值,从映射表中检索与目标点映射值匹配的目标数据存储位置,包括:
步骤802,基于目标点映射值与映射子段数量的求商结果,确定目标点映射值在映射表中所处的目标映射分段。
具体地,服务器对目标点映射值与映射子段数量进行求商计算,以得到的目标点映射值与映射子段数量的求商结果,从而通过求商结果确定目标点映射值在映射表中所处的目标映射分段。而通过前述实施例可知,在每一映射子段均记录点映射值且检索至匹配的数据存储位置后,即完成该映射分段的数据写入,再通过下一映射分段进行数据写入,因此通过对目标点映射值与映射子段数量进行求商计算即可知道目标点映射值在映射表中所处的目标映射分段,即通过目标点映射值与映射子段数量的求商结果,再在取模结果所描述的数值上加1以指示目标映射分段。或者,通过求商结果所描述的数值确定前一映射分段,然后在将与前一映射分段相邻的后一映射分段确定为目标映射分段。
示例性地,以映射子段数量为64,而目标点映射值为100为例进行说明,且映射表中包括映射分段D1、映射分段D2以及映射分段D3,那么通过目标点映射值“100”与映射子段数量为“64”求商计算,所得到的目标点映射值“100”与映射子段数量为“64”的求商结果描述为1,而1指示映射分段D1说明在映射分段D1中已完成64个数据的写入,此时目标点映射值“100”已大于64,因此应该目标点映射值“100”写入映射分段D2,那么此时将映射分段D2确定为目标映射分段。
步骤804,基于目标点映射值与映射子段数量的取模结果,确定目标点映射值在目标映射分段所处的目标映射子段。
具体地,服务器对目标点映射值与映射子段数量进行求商计算,以得到前述实施例中的求商结果,在完成求商计算后进一步地对目标点映射值与映射子段数量进行求模计算,以得到目标点映射值与映射子段数量的取模结果,然后通过取模结果确定目标点映射值在目标映射分段所处的目标映射子段。类似地,通过前述实施例可知,在每一映射子段均记录点映射值且检索至匹配的数据存储位置后,即完成该映射分段的数据写入,再通过下一映射分段进行数据写入。那么在每一映射分段中进行点映射值写入时,也是按照映射分段中各映射子段的顺序写入的,因此在确定目标映射分段后,通过所得到的取模结果可以确定目标点映射值在目标映射分段中的顺序位置,在目标映射分段中的顺序位置即为目标映射分段所处的目标映射子段。
示例性地,基于前述示例中的映射子段数量为64,而目标点映射值为100为例进行进一步地说明,那么在将映射分段D2确定为目标映射分段后,由于目标点映射值“100”与映射子段数量为“64”在完成取模计算后可以得到的取模结果为36(100*1-64),由此可知目标点映射值在目标映射分段所处的顺序位置为36,也就是在目标映射分段中顺序位置为36的映射子段为目标映射子段。
步骤806,通过目标映射子段,检索与目标点映射值匹配的目标数据存储位置。
具体地,由于映射子段还可以检索与所记录点映射值匹配的数据存储位置,因此服务器通过目标映射子段可以检索至所记录目标点映射值匹配的目标数据存储位置。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,通过对映射子段数量进行目标点映射值求商以确定目标点映射值所处的目标映射分段,进而通过所得到的取模结果再确定记录目标点映射值的目标映射子段,再通过目标映射子段进行目标数据存储位置检索查询,以保证通过求商、取模以及数据检索的处理方式,以明确得到映射表所记录的点映射值与数据存储位置之间的映射关系,以完成对数据存储位置的反序列化查询,以进一步地能够保证对目标数据存储位置确定的可靠性以及准确性。
在一个实施例中,如图9所示,分桶点表中每一子桶各自具有匹配的哈希值。
其中,由于分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,因此,分桶点表中每一子桶各自具有匹配的哈希值,且子桶所匹配的哈希值即为所记录的描述值的相同哈希值。如前述实施例所示例的,分桶点表包括子桶A1、子桶A2、子桶A3、子桶A4以及子桶A5,且子桶A1用于记录哈希值为“1”的点对象所分配的点映射值,那么子桶A1匹配哈希值“1”。同理可知,子桶A2用于记录哈希值为“2”的点对象所分配的点映射值,那么子桶A2匹配哈希值“2”。子桶A3用于记录哈希值为“3”的点对象所分配的点映射值,那么子桶A3匹配哈希值“3”。子桶A4用于记录哈希值为“4”的点对象所分配的点映射值,那么子桶A4匹配哈希值“4”。子桶A5用于记录哈希值为“5”的点对象所分配的点映射值,那么子桶A5匹配哈希值“5”。
基于此,确定待查询点对象在分桶点表中所匹配的目标子桶,包括:
步骤902,对待查询点对象的对象属性进行哈希计算,得到待查询点对象的目标哈希值。
具体地,服务器对待查询点对象的对象属性进行哈希计算,得到待查询点对象的目标哈希值。其中,进行哈希计算的算法为“murmurhash”,也就是使用“murmurhash”算法,对每一点对象的对象属性进行哈希计算可以保证每一点对象均匀地分配于分桶点表上。因此,服务器也使用“murmurhash”算法对待查询点对象的对象属性进行哈希计算,以得到待查询点对象的目标哈希值。进行哈希计算的具体计算方法此处不做限定。
步骤904,将所匹配的哈希值与目标哈希值相同的子桶确定为目标子桶。
具体地,服务器将所匹配的哈希值与目标哈希值相同的子桶确定为目标子桶。通过前述实施例可知,分桶点表中每一子桶各自具有匹配的哈希值,因此在得到待查询点对象的目标哈希值之后,从每一子桶各自具有匹配的哈希值中选择与目标哈希值相同的子桶作为目标子桶。示例性地,如前述示例可知,子桶A1匹配哈希值“1”,子桶A2匹配哈希值“2”,子桶A3匹配哈希值“3,子桶A4匹配哈希值“4”,以及子桶A5匹配哈希值“5”,若所得到的目标哈希值为“3”,所匹配的哈希值与目标哈希值“3”相同的子桶为子桶A3,因此将子桶A3确定为目标子桶。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,通过得到待查询点对象的目标哈希值,与每一子桶各自具有匹配的哈希值进行对比,以确定与目标哈希值相同的子桶作为目标子桶,以保证目标子桶准确记录的目标哈希值下点对象所分配的点映射值的,由此保证目标子桶确定的可靠性以及准确性,从准确可靠的目标子桶中查询目标点映射值,以保证数据查询的可靠性以及准确性。
在一个实施例中,如图10所示,查询参数还包括用于描述待查询关联关系的待查询边对象。
其中,图数据具体通过点对象以及边对象组成,具有关联关系的点对象之间存在对应的边对象,边对象具体用于描述所连接点对象之间的关联关系。例如,若点对象B1与点对象B2之间为同事关系,且图数据中点对象B1与点对象B2之间存在边对象E1,由此可知边对象E1具体用于描述同事关系。其次,若点对象B1与点对象B3之间为夫妻关系,且图数据中点对象B1与点对象B3之间存在边对象E2,由此可知边对象E2具体用于描述夫妻关系。通过前述实施例可知,查询参数中至少包括待查询点对象,以及还可以包括查询边对象,而待查询边对象用于描述待查询关联关系,待查询关联关系可以为同事关系、夫妻关系以及基于实际情况所需的相应关联关系,此处不做限定。
数据查询的方法还包括:
步骤1002,确定为待查询边对象分配的目标边描述符。
其中,边描述符具体为边描述符(edge descriptor,ed),边描述符可以表示边对象所属图数据、边对象的边类型、以及边对象的方向信息等。
具体地,服务器确定为待查询边对象分配的目标边描述符,即服务器可以对待查询边对象对应的边描述符进行查询,若存在,则将待查询边对象对应的边描述符确定为目标边描述符。若不存在,即需要对待查询边对象进行边描述符分配,从而将分配至给待查询边对象进行边描述符作为目标边描述符。
步骤1004,基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组;目标邻接点对象数组包括与待查询点对象之间存在待查询关联关系的目标邻接点对象;邻接表用于描述点映射值与邻接点对象数组之间的映射关系。
其中,邻接表用于描述点映射值与邻接点对象数组之间的映射关系。邻接点对象数组由与待查询点对象之间存在关联关系的邻接点对象构成,且属于同一邻接点对象数组的邻接点对象,与待查询点对象之间存在相同的关联关系。例如,点映射值“1”与邻接点对象数组F1之间存在映射关系,点映射值“1”还与邻接点对象数组F2之间存在映射关系,以及点映射值“1”还与邻接点对象数组F3之间存在映射关系。邻接点对象数组F1包括与点映射值“1”所匹配点对象之间存在同事关系的邻接点对象,邻接点对象数组F2包括与点映射值“1”所匹配点对象之间存在同学关系的邻接点对象,以及邻接点对象数组F3包括与点映射值“1”所匹配点对象之间存在夫妻关系的邻接点对象。
具体地,服务器基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组。即服务器先基于目标点映射值在邻接表中检索与待查询点对象之间存在关联关系的邻接点对象数组,然后从各邻接点对象数组中具体匹配待查询关联关系的目标邻接点对象数组,也就是选择包括与待查询点对象之间存在待查询关联关系的目标邻接点对象作为目标邻接点对象数组。
示例性地,若目标点映射值为“1”,而目标边描述符所匹配的待查询边对象用于描述同事关系。那么基于前述示例可知,存在邻接点对象数组F1、邻接点对象数组F2以及邻接点对象数组F3与目标点映射值为“1”之间存在映射关系,由于目标边描述符所匹配的待查询边对象用于描述同事关系,而邻接点对象数组F1包括与点映射值“1”所匹配点对象之间存在同事关系的邻接点对象,因此可以确定邻接点对象数组F1为目标邻接点对象数组。
步骤1006,基于分桶点表和映射表,查询目标邻接点对象数组中每一目标邻接点对象各自的对象数据。
具体地,服务器基于分桶点表和映射表,查询目标邻接点对象数组中每一目标邻接点对象各自的对象数据。也就是服务器通过前述实施例所介绍的类似方法,先基于分桶点表查询分别为每一目标邻接点对象分配的目标邻接点映射值,然后在映射表中分别检索与各邻接点映射值匹配的邻接数据存储位置,从而通过各邻接数据存储位置查询各目标邻接点对象的对象数据。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,通过邻接表所描述点映射值与邻接点对象数组之间的映射关系,具体通过目标点映射值和目标边描述符,检索与待查询点对象之间存在待查询关联关系的目标邻接点对象,以满足针对待查询点对象进行待查询关联关系的数据查询需求,以保证数据查询的准确性。基于此,再类似地通过点映射值确定目标数据存储位置,保证在正确索引至每一目标邻接点对象各自的对象数据的基础上,还能够降低内存开销以加速查询过程,进一步地提升数据查询效率。
在一个实施例中,如图11所示,基于分桶点表和映射表,查询目标邻接点对象数组中每一目标邻接点对象各自的对象数据,包括:
步骤1102,确定各目标邻接点对象在分桶点表中所在的目标邻接子桶,并从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。
具体地,服务器先确定各目标邻接点对象在分桶点表中所在的目标邻接子桶,也就是服务器通过对各目标邻接点对象各自的对象属性进行哈希计算,得到各目标邻接点对象各自的目标邻接哈希值,且通过前述实施例可知,分桶点表中每一子桶各自具有匹配的哈希值,因此,将所匹配的哈希值与各目标邻接点对象各自的目标邻接哈希值的子桶,确定为各目标邻接点对象在分桶点表中所在的目标邻接子桶。
进一步地,服务器再从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。由于每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,那么服务器可以在确定目标邻接子桶后,由于目标邻接子桶中记录有与目标邻接点对象的哈希值相同的,各点对象所分配的点映射值,那么即可从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。可以理解的是,确定目标邻接子桶,以及目标邻接点映射值的具体实施方式,与前述实施例中确定目标子桶以及目标点映射值的具体实施方式类似,此处不再赘述。
步骤1104,在映射表中分别检索与各邻接点映射值匹配的邻接数据存储位置。
具体地,由于映射表用于记录点映射值与数据存储位置之间的映射关系,因此服务器可以通过与前述实施例类似方式,从映射表中,分别检索与各邻接点映射值匹配的邻接数据存储位置。
步骤1106,基于各邻接数据存储位置,查询各目标邻接点对象的对象数据。
具体地,服务器通过前述实施例类似方式基于各邻接数据存储位置,查询各目标邻接点对象的对象数据。
本实施例中,具体通过目标邻接点对象在所匹配的目标邻接子桶中所记录的目标邻接点映射值,由此在保证索引能力前提下有效降低内存开销。基于此,再通过映射表记录点映射值与数据存储位置之间的映射关系,以确定邻接数据存储位置,因此,在进行数据查询时,在正确索引至目标邻接点对象的对象数据的基础上,还能够降低内存开销以加速查询过程,以进一步地提升数据查询效率。
在一个实施例中,如图12所示,邻接表用于记录点映射值与邻接位置信息之间的映射关系。
具体地,邻接表还用于记录点映射值与邻接位置信息之间的映射关系,前述邻接位置信息用于描述点映射值在邻接表中的位置信息,因此点映射值与邻接位置信息之间是一一映射的关系。例如,点映射值“1”与邻接表中的邻接位置信息“0”之间存在映射关系,点映射值“2”与邻接位置信息“1”之间存在映射关系,点映射值“3”与邻接位置信息“2”之间存在映射关系,以及点映射值“4”与邻接位置信息“3”之间存在映射关系。
其次,邻接表由多维数组组成,第一维度数组用于记录点对象的点映射值的邻接位置信息。第二维度数组用于存放边描述符,第二维度数组中第一位指针指向与点对象相关的数据,用于存放边的数量、加载时间、状态等相关信息,第二维度数组中其他位存放不同边对象对应的邻接点对象数组。
基于此,基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组,包括:
步骤1202,获取邻接表中邻接分段的邻接子段数量;邻接子段数量用于描述邻接分段中所包括邻接子段的总数。
其中,邻接子段数量用于描述邻接分段中所包括的邻接子段的总数量,邻接子段用于检索与所记录点映射值匹配的邻接子段位置。其次,每一邻接分段的邻接子段数量是一致的,且邻接表中在一个邻接分段中,在每一邻接子段均记录点映射值且检索至匹配的邻接子段位置后,即完成该邻接分段的数据写入,再通过下一邻接分段进行数据写入。例如,邻接表中包括邻接分段G1以及邻接分段G2以,在向邻接分段G2中写入数据之前必定存在邻接分段G1中邻接子段已写满。
具体地,服务器先确定所创建的邻接表,并从邻接表中确定多个邻接分段,然后选择任一邻接分段以提取邻接分段所包括的邻接子段的总数量,由此确定邻接子段数量。本实施例中邻接子段数量为64,在实际应用中邻接子段数量还可以为其他数量,此处不做限定。可以理解的是,前述示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
步骤1204,通过邻接子段数量与目标点映射值,在邻接表中检索与目标点映射值匹配的目标邻接位置信息。
具体地,服务器通过邻接子段数量与目标点映射值,在邻接表中检索与目标点映射值匹配的目标邻接位置信息。即服务器对邻接子段数量进行目标点映射值求商计算以及取模计算,以确定目标点映射值在邻接表中所处的目标邻接分段,由于邻接子段可以记录点映射值,因此通过目标点映射值可以检索至记录该目标点映射值的目标邻接子段,也就是确定目标点映射值在目标邻接分段所处的目标邻接子段。其次,由于邻接子段还可以检索与所记录点映射值匹配的邻接位置,因此通过目标邻接子段可以检索至所记录目标点映射值匹配的目标邻接位置。
步骤1206,通过目标邻接位置信息与目标边描述符,在邻接表中检索与目标边描述符匹配的目标邻接点对象数组。
具体地,服务器通过目标邻接位置信息与目标边描述符,在邻接表中检索与目标边描述符匹配的目标邻接点对象数组。通过前述实施例可知,邻接表由多维数组组成,第一维度数组用于记录点对象的点映射值的邻接位置信息。第二维度数组用于存放边描述符,第二维度数组中除第一位外其他位存放不同边对象对应的邻接点对象数组,因此目标邻接位置信息具体为目标点映射值在第一维度数组中的邻接位置信息,且通过邻接位置信息所指示到的第二维度数组,可以确定与待查询点对象具有不同关联关系的各邻接点对象数组,进而通过目标边描述符匹配的待查询边对象所描述的待查询关联关系,从前述各邻接点对象数组中选择与待查询点对象具有待查询关联关系的邻接点对象数组座位目标邻接点对象数组。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,通过邻接子段数量可以确定每一邻接分段中可记录数据的数量最大值,然后通过对邻接子段数量进行目标点映射值求商计算以及取模计算,以检索与目标点映射值匹配的目标邻接位置信息,由此通过目标邻接位置信息与目标边描述符确定目标邻接点对象数组,以保证目标邻接点对象数组不但与待查询点对象具有关联关系,且满足待查询边对象所描述的待查询关联关系,保证对目标邻接点对象数组确定的可靠性以及准确性,进一步地保证数据查询的可靠性。
在一个实施例中,如图13所示,通过邻接子段数量与目标点映射值,在邻接表中检索与目标点映射值匹配的目标邻接位置信息,包括:
步骤1302,基于目标点映射值与映射子段数量的求商结果,确定目标点映射值在邻接表中所处的目标邻接分段。
具体地,服务器对目标点映射值与邻接子段数量进行求商计算,以得到的目标点映射值与邻接子段数量的求商结果,从而通过求商结果确定目标点映射值在邻接表中所处的目标邻接分段。而通过前述实施例可知,在每一邻接子段均记录点映射值且检索至匹配的邻接子段位置后,即完成该邻接分段的数据写入,再通过下一邻接分段进行数据写入,因此通过对目标点映射值与邻接子段数量进行求商计算即可知道目标点映射值在邻接表中所处的目标邻接分段,即通过目标点映射值与邻接子段数量的求商结果,再在求商结果所描述的数值上加1以指示目标邻接分段。或者,通过求商结果所描述的数值确定前一邻接分段,然后在将与前一邻接分段相邻的后一邻接分段确定为目标邻接分段。
示例性地,以邻接子段数量为64,而目标点映射值为74为例进行说明,且邻接表中包括邻接分段G1以及邻接分段G2,那么通过目标点映射值“74”与邻接子段数量为“64”求商计算,所得到的目标点映射值“74”与邻接子段数量为“64”的求商结果描述为1,而1指示邻接分段G1说明在邻接分段G1中已完成64个数据的写入,此时目标点映射值“74”已大于64,因此应该目标点映射值“74”写入邻接分段G2,那么此时将邻接分段G2确定为目标邻接分段。
步骤1304,基于目标点映射值与映射子段数量的取模结果,确定目标点映射值在目标邻接分段所处的目标邻接子段。
具体地,服务器对目标点映射值与邻接子段数量进行求商计算,以得到的目标点映射值与邻接子段数量的求商结果,以确定目标点映射值在邻接表中所处的目标邻接分段,那么再对目标点映射值与邻接子段数量进行取模计算,以获取目标点映射值与映射子段数量的取模结果,然后通过取模结果确定目标点映射值在目标邻接分段所处的目标邻接子段。类似地,通过前述实施例可知,在每一邻接子段均记录点映射值且检索至匹配的数据存储位置后,即完成该邻接分段的数据写入,再通过下一邻接分段进行数据写入。其次,由于邻接表由多维数组组成,第一维度数组用于记录点对象的点映射值的邻接位置信息,也就是第一维度数组中各邻接位置信息是按照顺序排序的,那么在每一邻接分段中进行点映射值写入时,也是按照邻接分段中各邻接子段的顺序写入的,因此在确定目标邻接分段后,通过所得到的取模结果可以确定目标点映射值在目标邻接分段中的顺序位置,在目标邻接分段中的顺序位置即为目标邻接分段所处的目标邻接子段。
示例性地,基于前述示例中的邻接子段数量为64,而目标点映射值为74为例进行进一步地说明,那么在将邻接分段D2确定为目标邻接分段后,由于目标点映射值“74”与邻接子段数量为“64”的取模结果为10(74*1-64),由此可知目标点映射值在目标邻接分段所处的顺序位置为10,也就是在目标邻接分段中顺序位置为10的邻接子段为目标邻接子段。
步骤1306,通过目标邻接子段检索与目标点映射值匹配的目标邻接位置信息。
其中,邻接子段能够位置唯一指示邻接位置信息。具体地,服务器通过目标邻接子段检索与目标点映射值匹配的目标邻接位置信息。为便于理解,如图14所示,邻接分段“0”中包括点映射值“0”以及点映射值“6”,邻接分段“1”中包括点映射值“2”、点映射值“5”以及点映射值“7”,邻接分段“2”中包括点映射值“1”、点映射值“3”以及点映射值“4”。若目标点映射值为“5”,即可确定目标点映射值“5”属于邻接分段“1”,即可以确定目标邻接分段为邻接分段“1”。然后目标点映射值为“5”位于邻接分段“1”中的第二位,即可以确定目标邻接子段为邻接分段“1”中的第二个邻接子段,由此通过邻接分段“1”中的第二位邻接子段即可检索与目标点映射值匹配的目标邻接位置信息,即目标邻接位置信息具体描述:在邻接分段“1”中的第二位邻接子段。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,通过对邻接子段数量进行目标点映射值求商以确定目标点映射值所处的目标邻接分段,进而通过所得到的取模结果再确定记录目标点映射值的目标邻接子段,再通过目标邻接子段进行目标邻接位置信息检索查询,以保证通过求商、取模以及数据检索的处理方式,以明确得到邻接表所记录的点映射值与目标邻接位置信息之间的映射关系,进一步地保证对目标邻接位置信息确定的可靠性以及准确性。
在一个实施例中,如图15所示,通过目标邻接位置信息与目标边描述符,在邻接表中检索与目标边描述符匹配的目标邻接点对象数组,包括:
步骤1502,通过目标邻接位置信息,在邻接表中检索与目标点映射值匹配的多个候选邻接点对象数组。
具体地,通过前述实施例可知,邻接表由多维数组组成,第一维度数组用于记录点对象的点映射值的邻接位置信息,第二维度数组用于存放边描述符,第二维度数组中除第一位外其他位存放不同边对象对应的邻接点对象数组。因此,服务器在确定目标邻接位置信息之后,通过目标邻接位置信息在邻接表的第二维度数组中查询与待查询点对象具有不同关联关系的候选邻接点对象数组。候选邻接点对象数组中包括与待查询点对象具有候选关联关系的候选邻接点对象。
可以理解的是,候选邻接点对象数组所包括的候选邻接点对象可以具有重合部分,也就是存在候选邻接点对象与待查询点对象具有多种候选关联关系。例如,候选邻接点对象数组F1包括与待查询点对象之间存在同事关系的候选邻接点对象,候选邻接点对象数组F2包括与待查询点对象之间存在同学关系的候选邻接点对象,以及候选邻接点对象数组F3包括与待查询点对象之间存在夫妻关系的候选邻接点对象。
且候选邻接点对象数组F1具体包括候选邻接点对象H1、候选邻接点对象H2以及候选邻接点对象H3,候选邻接点对象数组F2具体包括候选邻接点对象H1、候选邻接点对象H4以及候选邻接点对象H5,候选邻接点对象数组F3具体包括候选邻接点对象H1,也就是候选邻接点对象H1与待查询点对象之间不但存在同事关系,还存在同学关系,以及存在夫妻关系。
步骤1504,基于邻接点对象数组与边描述符之间的映射关系,从多个候选邻接点对象数组中检索与目标边描述符匹配的目标邻接点对象数组。
其中,由于邻接点对象数组包括某种关联关系下的邻接点对象,因此针对每一邻接点对象数组均有匹配的关联关系,如前述示例可知,邻接点对象数组F1包括存在同事关系的邻接点对象,那么邻接点对象数组F1所匹配的关联关系为同事关系。同理可知,邻接点对象数组F2包括存在同学关系的邻接点对象,那么邻接点对象数组F2所匹配的关联关系为同学关系。以及邻接点对象数组F3包括存在夫妻关系的邻接点对象,那么邻接点对象数组F3所匹配的关联关系为夫妻关系。
其次,由于不同的关联关系对应的边对象均具有对应的边描述符,例如边描述符I1对应的边对象用于描述同事关系,边描述符I2对应的边对象用于描述同学关系,边描述符I3对应的边对象用于描述夫妻关系。那么可以得到邻接点对象数组F1与边描述符I1之间的映射关系,邻接点对象数组F2与边描述符I2之间的映射关系,以及邻接点对象数组F3与边描述符I3之间的映射关系。
具体地,服务器基于邻接点对象数组与边描述符之间的映射关系,从多个候选邻接点对象数组中检索与目标边描述符匹配的目标邻接点对象数组。如前述示例可知,邻接点对象数组F1与边描述符I1之间的映射关系,邻接点对象数组F2与边描述符I2之间的映射关系,以及邻接点对象数组F3与边描述符I3之间的映射关系,若目标边描述符具体以为边描述符I1,那么可以确定邻接点对象数组F1为目标邻接点对象数组。
可以理解的是,本实施例中所示出的全部示例仅用于理解本方案,但不应该将前述示例理解为对本方案的具体限定。
本实施例中,先通过目标邻接位置信息确定多个候选邻接点对象数组,以保证目候选邻接点对象数组均与待查询点对象具有关联关系,然后再进一步地通过目标边描述符选择目标邻接点对象数组,使得目标邻接点对象数组与待查询点对象具有准确地所需的待查询关联关系,保证对目标邻接点对象数组确定的可靠性以及准确性,进一步地保证数据查询的可靠性。
可以理解的是,在实际数据查询过程中,可能存在点对象的数据并未完成存储的情况,那么此时需要对点对象的数据进行存储,并且在分桶点表以及映射表添加与该点对象相关的映射关系。下面将详细说明对分桶点表以及映射表进行信息更新的过程:在一个实施例中,如图16所示,数据查询的方法还包括:
步骤1602,在分桶点表的各子桶中均未查询到为待查询点对象分配的点映射值的情况下,为待查询点对象分配待查询点对象的目标点映射值,并对待查询点对象的对象属性进行哈希计算得到目标哈希值。
具体地,在分桶点表的各子桶中均未查询到为待查询点对象分配的点映射值的情况下,即说明待查询点对象并未分配相应点映射值,因此需要在分桶点表新增映射关系。此时服务器为待查询点对象分配待查询点对象的目标点映射值,分配目标点映射值可以是基于点映射值分配器进行,通常可以通过原子递增的点映射值分配器进行,分配目标点映射值的方式此处不做限定。
进一步地,再对待查询点对象的对象属性进行哈希计算得到目标哈希值。其中,进行哈希计算的算法为“murmurhash”,也就是使用“murmurhash”算法,对每一点对象的对象属性进行哈希计算可以保证每一点对象均匀地分配于分桶点表上。因此,服务器也使用“murmurhash”算法对待查询点对象的对象属性进行哈希计算,以得到待查询点对象的目标哈希值。进行哈希计算的具体计算方法此处不做限定。
步骤1604,将目标点映射值与目标哈希值的映射关系添加至分桶点表中。
具体地,服务器创建目标点映射值与目标哈希值的映射关系,并将目标点映射值与目标哈希值的映射关系添加至分桶点表中,且可以进一步地确定所匹配哈希值与目标哈希值相同的目标子桶,将目标点映射值记录至目标子桶中。以使得下次进行待查询点对象查询时,能从分桶点表的目标子桶查询得到为待查询点对象所分配的目标点映射值。可以理解的是,在分桶点表中的数据查询以及数据写入操作都采用无锁方式,由此也能够提升读写性能。
本实施例中,通过每个分桶点表将点对象的点映射值均匀散列在不同的子桶内,由此维护更新点对象的哈希值与点映射值之间的映射关系,由于点映射值所占用的内存空间较少,由此能够在保证索引能力前提下有效降低内存开销。
在一个实施例中,如图17所示,数据查询的方法还包括:
步骤1702,对待查询点对象的数据进行存储,并确定待查询点对象的数据的目标数据存储位置。
具体地,服务器对待查询点对象的数据进行存储,并确定待查询点对象的数据的目标数据存储位置。即服务器先从数据库中获取待查询点对象的数据,数据库可以为前端数据库或后端存储数据库,此处不做限定。基于此,服务器再对待查询点对象的数据进行原子(cas)操作,在完成cas操作后得到序列化成功的待查询点对象的数据,将序列化成功的待查询点对象的数据写入映射表的Chunk,完成映射表的Chunk成功后,将获取待查询点对象的数据在映射表的Chunk中的位置,点对象的数据在映射表的Chunk中的位置即为目标数据存储位置。
步骤1704,将目标点映射值与目标数据存储位置之间的映射关系添加至映射表中。
具体地,服务器将目标点映射值与目标数据存储位置之间的映射关系添加至映射表中。由于服务器将待查询点对象的数据在映射表的Chunk中的位置确定为目标数据存储位置,因此服务器可以将目标数据存储位置存储在映射表中,且由于目标数据存储位置是存储待查询点对象的数据的位置,那么为了保证查询映射关系,还可以创建目标数据存储位置,与为待查询点对象分配的目标点映射值之间的映射关系,并将目标点映射值与目标数据存储位置之间的映射关系添加至映射表中。以使得下次进行待查询点对象查询时,能从映射表中目标点映射值与目标数据存储位置之间的映射关系,检索目标点映射值对应的目标数据存储位置。
本实施例中,通过映射表维护记录点映射值与数据存储位置之间的映射关系,以确定每一点对象的数据在映射表中的数据存储位置,进一步地保证索引至待查询点对象的对象数据的可靠性,且依旧能够降低内存开销以加速查询过程,从而提升数据查询效率。
在一个实施例中,如图18所示,数据查询的方法还包括:
步骤1802,将目标点映射值写入邻接表,并记录目标点映射值在邻接表中的目标邻接位置信息。
具体地,服务器将目标点映射值写入邻接表,并记录目标点映射值在邻接表中的目标邻接位置信息。以及在服务器将目标点映射值写入邻接表后,可以对邻接表中所记录的各点映射值进行数组排序,以保证查询过程的局部性,对各点映射值可以是基于各点映射值的数值大小进行,如从小到大或从大到小,此处不作限定。基于此,在通过各点映射值进行数组排序后的位置确定目标点映射值在邻接表中的目标邻接位置信息。
步骤1804,将目标点映射值与目标邻接位置信息之间的映射关系添加至邻接表中。
具体地,服务器创建目标点映射值与目标邻接位置信息之间的映射关系,并将目标点映射值与目标邻接位置信息之间的映射关系添加至邻接表中。
进一步地,在一个实施例中,如图19所示,数据查询的方法还包括:
步骤1902,确定用于描述待查询关联关系的待查询边对象,并为待查询边对象分配目标边描述符。
具体地,服务器先确定用于描述待查询关联关系的待查询边对象,然后为待查询边对象分配目标边描述符。分配目标边描述符与目标点映射值类似,也是基于边描述符分配器进行,通常可以通过原子递增的边描述符分配器进行,分配目标边描述符的方式此处不做限定。
步骤1904,在邻接表中未检索到与目标点映射值和目标边描述符匹配的邻接点对象数组的情况下,获取与待查询点对象具有待查询关联关系的邻接点对象,并通过与待查询点对象具有待查询关联关系的邻接点对象创建目标邻接点对象数组。
具体地,在邻接表中未检索到与目标点映射值和目标边描述符匹配的邻接点对象数组的情况下,说明邻接表中并未记录有与待查询点对象具有待查询关联关系的邻接点对象,因此服务器需要获取与待查询点对象具有待查询关联关系的邻接点对象。服务器可以从数据库中获取与待查询点对象具有待查询关联关系的邻接点对象,数据库可以为前端数据库或后端存储数据库,此处不做限定。
进一步地,通过与待查询点对象具有待查询关联关系的邻接点对象创建目标邻接点对象数组,以使得目标邻接点对象数组中包括与待查询点对象具有待查询关联关系的邻接点对象。且将目标邻接点对象数组存储至通过第二维度数组,且通过目标边描述符进行相应指示。
步骤1906,将目标边描述符与目标邻接点对象数组之间的映射关系添加至邻接表中。
具体地,服务器创建目标边描述符与目标邻接点对象数组之间的映射关系,并将目标边描述符与目标邻接点对象数组之间的映射关系添加至邻接表中。以使得下次针对待查询点对象进行待查询边对象的数据查询时,能从邻接表中目标边描述符与目标邻接点对象数组之间的映射关系,检索目标边描述符匹配目标邻接点对象数组。
本实施例中,通过邻接表维护记录边描述符与邻接点对象数组之间的映射关系,从而保证可以通过邻接表针对每一点对象具有相关联关系的邻接点对象进行查询,避免多个点对象之间多次索引的冗余处理,以能够降低内存开销以加速查询过程,进一步地提升数据查询效率。
基于前述实施例的详细介绍,下面将介绍本申请实施例中数据查询的方法的完整流程,在一个实施例中,如图20所示,提供了一种数据查询的方法,以该方法应用于图1中的服务器104为例进行说明,可以理解的是,该方法也可以应用于终端102,还可以应用于包括终端102和服务器104的系统,并通过终端102和服务器104的交互实现。本实施例中,该方法包括以下步骤:
步骤2001,响应于图数据查询请求,提取图数据查询请求中携带的查询参数,查询参数包括待查询点对象以及用于描述待查询关联关系的待查询边对象。
其中,图数据查询请求携带查询参数,以及图数据查询请求还可以携带图数据标识,图数据标识用于唯一标识待查询图数据,即查询参数具体为用于对待查询图数据中点对象与边对象进行查询指示的参数。基于此,查询参数中至少包括待查询点对象以及查询边对象,待查询点对象为属于图数据标识所标识待查询图数据中的点对象。以及待查询边对象用于描述待查询关联关系,且图数据标识所标识待查询图数据中存在该待查询边对象。
具体地,在需要针对待查询图数据进行数据查询的情况下,服务器先接收针对待查询图数据的图数据查询请求,由于是针对待查询图数据的图数据查询请求,因此在图数据查询请求中至少包括用于唯一标识待查询图数据的图数据标识,以及针对待查询图数据的查询参数。
步骤2002,确定待查询点对象在分桶点表中所匹配的目标子桶。
其中,分桶点表中包括多个子桶,且每一子桶用于记录哈希值相同的每一点对象所分配的点映射值。且分桶点表中的子桶数量是预设固定的,但每一自动中所包括的每一点对象所分配的点映射值的点映射值数量是灵活变动的。
具体地,由于查询参数包括待查询点对象以及用于描述待查询关联关系的待查询边对象,因此在查询参数包括待查询点对象的情况下,服务器先确定待查询点对象在分桶点表中所匹配的目标子桶,也就是服务器对待查询点对象的对象属性进行哈希计算,得到待查询点对象的目标哈希值。
其次,由于分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,因此,分桶点表中每一子桶各自具有匹配的哈希值,且子桶所匹配的哈希值即为所记录的描述值的相同哈希值。基于此,服务器将所匹配的哈希值与目标哈希值相同的子桶确定为目标子桶。
步骤2003,从目标子桶中查询为待查询点对象分配的目标点映射值。
具体地,服务器从目标子桶中查询为待查询点对象分配的目标点映射值。通过前述示例可知,由于每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,那么服务器可以在确定目标子桶后,由于目标子桶中记录有与待查询点对象的哈希值相同的,各点对象所分配的点映射值,那么即可从中查询得到待查询点对象分配的目标点映射值。具体查询方式可以是通过唯一描述待查询点对象的点对象标识进行的,如子桶中具体记录哈希值相同情况下,每一点对象的点对象标识与每一点对象所分配的点映射值之间的映射关系,那么在确定目标子桶后,即可确定与待查询点对象的点对象标识具有前述映射关系的点映射值,并将前述点映射值确定为目标点映射值。
步骤2004,从映射表中,检索与目标点映射值匹配的目标数据存储位置。
其中,映射表用于记录点映射值与数据存储位置之间的映射关系,前述数据存储位置用于检索查询点对象的对象数据,数据存储位置在实际函数调用中具体为位置(Position)。
具体地,由于映射表用于记录点映射值与数据存储位置之间的映射关系,因此服务器可以从映射表中,检索与目标点映射值匹配的目标数据存储位置。基于此,服务器先确定所创建的映射表,并从映射表中确定多个映射分段,然后选择任一映射分段以提取映射分段所包括的映射子段的总数量,由此确定映射子段数量。
进一步地,服务器先确定所创建的映射表,并从映射表中确定多个映射分段,然后选择任一映射分段以提取映射分段所包括的映射子段的总数量,由此确定映射子段数量。然后,对目标点映射值与映射子段数量进行求商计算,以得到的目标点映射值与映射子段数量的求商结果,从而通过求商结果确定目标点映射值在映射表中所处的目标映射分段。进一步地对目标点映射值与映射子段数量进行求模计算,以得到目标点映射值与映射子段数量的取模结果,然后通过取模结果确定目标点映射值在目标映射分段所处的目标映射子段。由于映射子段还可以检索与所记录点映射值匹配的数据存储位置,因此服务器通过目标映射子段可以检索至所记录目标点映射值匹配的目标数据存储位置。
步骤2005,基于目标数据存储位置,查询待查询点对象的对象数据。
具体地,服务器通过前述实施例类似方式基于目标数据存储位置,查询待查询点对象的对象数据。
步骤2006,确定为待查询边对象分配的目标边描述符。
其中,边描述符具体为边描述符(edge descriptor,ed),边描述符可以表示边对象所属图数据、边对象的边类型、以及边对象的方向信息等。
具体地,服务器确定为待查询边对象分配的目标边描述符,即服务器可以对待查询边对象对应的边描述符进行查询,若存在,则将待查询边对象对应的边描述符确定为目标边描述符。若不存在,即需要对待查询边对象进行边描述符分配,从而将分配至给待查询边对象进行边描述符作为目标边描述符。
步骤2007,基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组。
其中,邻接表用于描述点映射值与邻接点对象数组之间的映射关系。邻接点对象数组由与待查询点对象之间存在关联关系的邻接点对象构成,且属于同一邻接点对象数组的邻接点对象,与待查询点对象之间存在相同的关联关系。
具体地,服务器先确定所创建的邻接表,并从邻接表中确定多个邻接分段,然后选择任一邻接分段以提取邻接分段所包括的邻接子段的总数量,由此确定邻接子段数量。基于此,服务器再通过邻接子段数量与目标点映射值,在邻接表中检索与目标点映射值匹配的目标邻接位置信息。即服务器对邻接子段数量进行目标点映射值求商计算以及取模计算,以确定目标点映射值在邻接表中所处的目标邻接分段,由于邻接子段可以记录点映射值,因此通过目标点映射值可以检索至记录该目标点映射值的目标邻接子段,也就是确定目标点映射值在目标邻接分段所处的目标邻接子段。其次,由于邻接子段还可以检索与所记录点映射值匹配的邻接位置,因此通过目标邻接子段可以检索至所记录目标点映射值匹配的目标邻接位置。
进一步地,服务器在确定目标邻接位置信息之后,通过目标邻接位置信息在邻接表的第二维度数组中查询与待查询点对象具有不同关联关系的候选邻接点对象数组。候选邻接点对象数组中包括与待查询点对象具有候选关联关系的候选邻接点对象。由此,服务器基于邻接点对象数组与边描述符之间的映射关系,从多个候选邻接点对象数组中检索与目标边描述符匹配的目标邻接点对象数组。
步骤2008,确定各目标邻接点对象在分桶点表中所在的目标邻接子桶,并从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。
具体地,服务器先确定各目标邻接点对象在分桶点表中所在的目标邻接子桶,也就是服务器通过对各目标邻接点对象各自的对象属性进行哈希计算,得到各目标邻接点对象各自的目标邻接哈希值,且通过前述实施例可知,分桶点表中每一子桶各自具有匹配的哈希值,因此,将所匹配的哈希值与各目标邻接点对象各自的目标邻接哈希值的子桶,确定为各目标邻接点对象在分桶点表中所在的目标邻接子桶。
进一步地,服务器再从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。由于每一子桶用于记录哈希值相同的每一点对象所分配的点映射值,那么服务器可以在确定目标邻接子桶后,由于目标邻接子桶中记录有与目标邻接点对象的哈希值相同的,各点对象所分配的点映射值,那么即可从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值。可以理解的是,确定目标邻接子桶,以及目标邻接点映射值的具体实施方式,与前述实施例中确定目标子桶以及目标点映射值的具体实施方式类似,此处不再赘述。
步骤2009,在映射表中分别检索与各邻接点映射值匹配的邻接数据存储位置。
具体地,由于映射表用于记录点映射值与数据存储位置之间的映射关系,因此服务器可以通过与前述实施例类似方式,从映射表中,分别检索与各邻接点映射值匹配的邻接数据存储位置。
步骤2010,基于各邻接数据存储位置,查询各目标邻接点对象的对象数据。
具体地,服务器通过前述实施例类似方式基于各邻接数据存储位置,查询各目标邻接点对象的对象数据。
应理解,步骤2001至步骤2010的具体实施方式与前述实施例均类似,此处不再赘述。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据查询的方法的数据查询装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据查询装置实施例中的具体限定可以参见上文中对于数据查询的方法的限定,在此不再赘述。
在一个实施例中,如图21所示,提供了一种数据查询装置,包括:请求响应模块2102、子桶确定模块2104、点映射值查询模块2106、存储位置检索模块2108和数据查询模块2110,其中:
请求响应模块2102,用于响应于图数据查询请求,提取图数据查询请求中携带的查询参数;
子桶确定模块2104,用于在查询参数包括待查询点对象的情况下,确定待查询点对象在分桶点表中所匹配的目标子桶,分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
点映射值查询模块2106,用于从目标子桶中查询为待查询点对象分配的目标点映射值;
存储位置检索模块2108,用于从映射表中,检索与目标点映射值匹配的目标数据存储位置;映射表用于记录点映射值与数据存储位置之间的映射关系;
数据查询模块2110,用于基于目标数据存储位置,查询待查询点对象的对象数据。
在一个实施例中,存储位置检索模块2108,具体用于获取映射表中每一映射分段的映射子段数量;映射子段数量用于描述映射分段中所包括映射子段的总数;通过映射表中每一映射分段的映射子段数量、与目标点映射值,从映射表中检索与目标点映射值匹配的目标数据存储位置。
在一个实施例中,存储位置检索模块2108,具体用于基于目标点映射值与映射子段数量的求商结果,确定目标点映射值在映射表中所处的目标映射分段;基于目标点映射值与映射子段数量的取模结果,确定目标点映射值在目标映射分段所处的目标映射子段;通过目标映射子段,检索与目标点映射值匹配的目标数据存储位置。
在一个实施例中,分桶点表中每一子桶各自具有匹配的哈希值;
子桶确定模块2104,具体用于对待查询点对象的对象属性进行哈希计算,得到待查询点对象的目标哈希值;将所匹配的哈希值与目标哈希值相同的子桶确定为目标子桶。
在一个实施例中,如图22所示,数据查询装置还包括:边描述符确定模块2202、以及邻接点对象数组检索模块2204;
边描述符确定模块2202,用于确定为待查询边对象分配的目标边描述符;
邻接点对象数组检索模块2204,用于基于目标点映射值和目标边描述符,在邻接表中检索目标邻接点对象数组;目标邻接点对象数组包括与待查询点对象之间存在待查询关联关系的目标邻接点对象;邻接表用于描述点映射值与邻接点对象数组之间的映射关系;
数据查询模块2110,还用于基于分桶点表和映射表,查询目标邻接点对象数组中每一目标邻接点对象各自的对象数据。
在一个实施例中,数据查询模块2110,具体用于确定各目标邻接点对象在分桶点表中所在的目标邻接子桶,并从目标邻接子桶中查询分别为每一目标邻接点对象分配的目标邻接点映射值;在映射表中分别检索与各邻接点映射值匹配的邻接数据存储位置;基于各邻接数据存储位置,查询各目标邻接点对象的对象数据。
在一个实施例中,邻接表用于记录点映射值与邻接位置信息之间的映射关系;
邻接点对象数组检索模块2204,具体用于获取邻接表中邻接分段的邻接子段数量;邻接子段数量用于描述邻接分段中所包括邻接子段的总数;通过邻接子段数量与目标点映射值,在邻接表中检索与目标点映射值匹配的目标邻接位置信息;通过目标邻接位置信息与目标边描述符,在邻接表中检索与目标边描述符匹配的目标邻接点对象数组。
在一个实施例中,邻接点对象数组检索模块2204,具体用于基于目标点映射值与映射子段数量的求商结果,确定目标点映射值在邻接表中所处的目标邻接分段;基于目标点映射值与映射子段数量的取模结果,确定目标点映射值在目标邻接分段所处的目标邻接子段;通过目标邻接子段检索与目标点映射值匹配的目标邻接位置信息。
在一个实施例中,邻接点对象数组检索模块2204,具体用于通过目标邻接位置信息,在邻接表中检索与目标点映射值匹配的多个候选邻接点对象数组;基于邻接点对象数组与边描述符之间的映射关系,从多个候选邻接点对象数组中检索与目标边描述符匹配的目标邻接点对象数组。
在一个实施例中,如图23所示,数据查询装置还包括分桶点表更新模块2302;
分桶点表更新模块2302,用于在分桶点表的各子桶中均未查询到为待查询点对象分配的点映射值的情况下,为待查询点对象分配待查询点对象的目标点映射值,并对待查询点对象的对象属性进行哈希计算得到目标哈希值;将目标点映射值与目标哈希值的映射关系添加至分桶点表中。
在一个实施例中,如图24所示,数据查询装置还包括映射表更新模块2402;
映射表更新模块2402,用于对待查询点对象的数据进行存储,并确定待查询点对象的数据的目标数据存储位置;将目标点映射值与目标数据存储位置之间的映射关系添加至映射表中。
在一个实施例中,如图25所示,数据查询装置还包括邻接表更新模块2502;
邻接表更新模块2502,用于将目标点映射值写入邻接表,并记录目标点映射值在邻接表中的目标邻接位置信息;将目标点映射值与目标邻接位置信息之间的映射关系添加至邻接表中。
在一个实施例中,邻接表更新模块2502,还用于确定用于描述待查询关联关系的待查询边对象,并为待查询边对象分配目标边描述符;在邻接表中未检索到与目标点映射值和目标边描述符匹配的邻接点对象数组的情况下,获取与待查询点对象具有待查询关联关系的邻接点对象,并通过与待查询点对象具有待查询关联关系的邻接点对象创建目标邻接点对象数组;将目标边描述符与目标邻接点对象数组之间的映射关系添加至邻接表中。
上述数据查询装置中的各模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器也可以为终端,本实施例中以计算机设备为服务器作为示例进行介绍,其内部结构图可以如图26所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储图数据、点对象的对象数据以及边对象的对象数据等与本申请实施例相关的数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据查询的方法。
本领域技术人员可以理解,图26中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的对象信息(包括但不限于对象设备信息、对象个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经对象授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征信息可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征信息所有可能的组合都进行描述,然而,只要这些技术特征信息的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (17)

1.一种数据查询的方法,其特征在于,包括:
响应于图数据查询请求,提取所述图数据查询请求中携带的查询参数;
在所述查询参数包括待查询点对象的情况下,确定所述待查询点对象在分桶点表中所匹配的目标子桶,所述分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
从所述目标子桶中查询为所述待查询点对象分配的目标点映射值;
从映射表中,检索与所述目标点映射值匹配的目标数据存储位置;所述映射表用于记录点映射值与数据存储位置之间的映射关系;
基于所述目标数据存储位置,查询所述待查询点对象的对象数据。
2.根据权利要求1所述的方法,其特征在于,所述从映射表中,检索与所述目标点映射值匹配的目标数据存储位置,包括:
通过映射表中每一映射分段的映射子段数量、与所述目标点映射值,从所述映射表中检索与所述目标点映射值匹配的目标数据存储位置;所述映射子段数量用于描述所述映射分段中所包括映射子段的总数。
3.根据权利要求2所述的方法,其特征在于,所述通过映射表中每一映射分段的映射子段数量、与所述目标点映射值,从所述映射表中检索与所述目标点映射值匹配的目标数据存储位置,包括:
基于所述目标点映射值与所述映射子段数量的求商结果,确定所述目标点映射值在所述映射表中所处的目标映射分段;
基于所述目标点映射值与所述映射子段数量的取模结果,确定所述目标点映射值在所述目标映射分段所处的目标映射子段;
通过所述目标映射子段,检索与所述目标点映射值匹配的目标数据存储位置。
4.根据权利要求1所述的方法,其特征在于,所述分桶点表中每一子桶各自具有匹配的哈希值;
所述确定所述待查询点对象在分桶点表中所匹配的目标子桶,包括:
对所述待查询点对象的对象属性进行哈希计算,得到所述待查询点对象的目标哈希值;
将所匹配的哈希值与所述目标哈希值相同的子桶确定为目标子桶。
5.根据权利要求1所述的方法,其特征在于,所述查询参数还包括用于描述待查询关联关系的待查询边对象;所述方法还包括:
确定为所述待查询边对象分配的目标边描述符;
基于所述目标点映射值和所述目标边描述符,在邻接表中检索目标邻接点对象数组;所述目标邻接点对象数组包括与所述待查询点对象之间存在所述待查询关联关系的目标邻接点对象;所述邻接表用于描述点映射值与邻接点对象数组之间的映射关系;
基于所述分桶点表和所述映射表,查询所述目标邻接点对象数组中每一所述目标邻接点对象各自的对象数据。
6.根据权利要求5所述的方法,其特征在于,所述基于所述分桶点表和所述映射表,查询所述目标邻接点对象数组中每一所述目标邻接点对象各自的对象数据,包括:
确定各所述目标邻接点对象在所述分桶点表中所在的目标邻接子桶,并从所述目标邻接子桶中查询分别为每一所述目标邻接点对象分配的目标邻接点映射值;
在所述映射表中分别检索与各所述邻接点映射值匹配的邻接数据存储位置;
基于各所述邻接数据存储位置,查询各所述目标邻接点对象的对象数据。
7.根据权利要求5所述的方法,其特征在于,所述邻接表用于记录点映射值与邻接位置信息之间的映射关系;
所述基于所述目标点映射值和所述目标边描述符,在邻接表中检索目标邻接点对象数组,包括:
获取所述邻接表中邻接分段的邻接子段数量;所述邻接子段数量用于描述所述邻接分段中所包括邻接子段的总数;
通过所述邻接子段数量与所述目标点映射值,在所述邻接表中检索与所述目标点映射值匹配的目标邻接位置信息;
通过所述目标邻接位置信息与所述目标边描述符,在所述邻接表中检索与所述目标边描述符匹配的目标邻接点对象数组。
8.根据权利要求7所述的方法,其特征在于,所述通过所述邻接子段数量与所述目标点映射值,在所述邻接表中检索与所述目标点映射值匹配的目标邻接位置信息,包括:
基于所述目标点映射值与所述映射子段数量的求商结果,确定所述目标点映射值在所述邻接表中所处的目标邻接分段;
基于所述目标点映射值与所述映射子段数量的取模结果,确定所述目标点映射值在所述目标邻接分段所处的目标邻接子段;
通过所述目标邻接子段检索与所述目标点映射值匹配的目标邻接位置信息。
9.根据权利要求7所述的方法,其特征在于,所述通过所述目标邻接位置信息与所述目标边描述符,在所述邻接表中检索与所述目标边描述符匹配的目标邻接点对象数组,包括:
通过所述目标邻接位置信息,在所述邻接表中检索与所述目标点映射值匹配的多个候选邻接点对象数组;
基于所述邻接点对象数组与边描述符之间的映射关系,从所述多个候选邻接点对象数组中检索与所述目标边描述符匹配的目标邻接点对象数组。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述分桶点表的各子桶中均未查询到为所述待查询点对象分配的点映射值的情况下,为所述待查询点对象分配所述待查询点对象的目标点映射值,并对所述待查询点对象的对象属性进行哈希计算得到目标哈希值;
将所述目标点映射值与所述目标哈希值的映射关系添加至所述分桶点表中。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
对所述待查询点对象的数据进行存储,并确定所述待查询点对象的数据的目标数据存储位置;
将所述目标点映射值与所述目标数据存储位置之间的映射关系添加至所述映射表中。
12.根据权利要求10所述的方法,其特征在于,所述方法还包括:
将所述目标点映射值写入邻接表,并记录所述目标点映射值在所述邻接表中的目标邻接位置信息;
将所述目标点映射值与所述目标邻接位置信息之间的映射关系添加至所述邻接表中。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
确定用于描述待查询关联关系的待查询边对象,并为所述待查询边对象分配目标边描述符;
在所述邻接表中未检索到与所述目标点映射值和所述目标边描述符匹配的邻接点对象数组的情况下,获取与所述待查询点对象具有所述待查询关联关系的邻接点对象,并通过与所述待查询点对象具有所述待查询关联关系的邻接点对象创建目标邻接点对象数组;
将所述目标边描述符与所述目标邻接点对象数组之间的映射关系添加至所述邻接表中。
14.一种数据查询装置,其特征在于,所述装置包括:
请求响应模块,用于响应于图数据查询请求,提取所述图数据查询请求中携带的查询参数;
子桶确定模块,用于在所述查询参数包括待查询点对象的情况下,确定所述待查询点对象在分桶点表中所匹配的目标子桶,所述分桶点表中的每一子桶用于记录哈希值相同的每一点对象所分配的点映射值;
点映射值查询模块,用于从所述目标子桶中查询为所述待查询点对象分配的目标点映射值;
存储位置检索模块,用于从映射表中,检索与所述目标点映射值匹配的目标数据存储位置;所述映射表用于记录点映射值与数据存储位置之间的映射关系;
数据查询模块,用于基于所述目标数据存储位置,查询所述待查询点对象的对象数据。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至13中任一项所述的方法的步骤。
16.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
17.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至13中任一项所述的方法的步骤。
CN202410027187.8A 2024-01-09 2024-01-09 数据查询的方法、装置、计算机设备和存储介质 Active CN117540056B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410027187.8A CN117540056B (zh) 2024-01-09 2024-01-09 数据查询的方法、装置、计算机设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410027187.8A CN117540056B (zh) 2024-01-09 2024-01-09 数据查询的方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN117540056A true CN117540056A (zh) 2024-02-09
CN117540056B CN117540056B (zh) 2024-05-28

Family

ID=89788423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410027187.8A Active CN117540056B (zh) 2024-01-09 2024-01-09 数据查询的方法、装置、计算机设备和存储介质

Country Status (1)

Country Link
CN (1) CN117540056B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309334A (zh) * 2018-04-20 2019-10-08 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质
CN111090628A (zh) * 2019-12-20 2020-05-01 上海米哈游网络科技股份有限公司 一种数据处理方法、装置、存储介质及电子设备
CN113641841A (zh) * 2021-10-15 2021-11-12 支付宝(杭州)信息技术有限公司 数据编码方法、图数据存储方法、图数据查询方法及装置
CN115935020A (zh) * 2022-12-12 2023-04-07 四川蜀天梦图数据科技有限公司 一种图数据存储方法和装置
CN116521956A (zh) * 2023-05-09 2023-08-01 上海识装信息科技有限公司 一种图数据库查询方法、装置、电子设备及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309334A (zh) * 2018-04-20 2019-10-08 腾讯科技(深圳)有限公司 图数据库的查询方法、系统、计算机设备和可读存储介质
CN111090628A (zh) * 2019-12-20 2020-05-01 上海米哈游网络科技股份有限公司 一种数据处理方法、装置、存储介质及电子设备
CN113641841A (zh) * 2021-10-15 2021-11-12 支付宝(杭州)信息技术有限公司 数据编码方法、图数据存储方法、图数据查询方法及装置
CN115935020A (zh) * 2022-12-12 2023-04-07 四川蜀天梦图数据科技有限公司 一种图数据存储方法和装置
CN116521956A (zh) * 2023-05-09 2023-08-01 上海识装信息科技有限公司 一种图数据库查询方法、装置、电子设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
戴声;王波;: "基于图数据库的大规模配置管理数据库关联查询", 计算机与现代化, no. 01, 31 January 2017 (2017-01-31), pages 54 - 59 *

Also Published As

Publication number Publication date
CN117540056B (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
US20210240735A1 (en) System and method for supporting large queries in a multidimensional database environment
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
US9594524B2 (en) System and method for distributed computing in non-volatile memory
CN112287182B (zh) 图数据存储、处理方法、装置及计算机存储介质
US9805080B2 (en) Data driven relational algorithm formation for execution against big data
US11468027B2 (en) Method and apparatus for providing efficient indexing and computer program included in computer readable medium therefor
CN112363979B (zh) 一种基于图数据库的分布式索引方法和系统
CN105354151B (zh) 一种缓存管理方法与设备
US8862566B2 (en) Systems and methods for intelligent parallel searching
CN107704202B (zh) 一种数据快速读写的方法和装置
US20170255708A1 (en) Index structures for graph databases
CN112434027A (zh) 多维度数据的索引方法、装置、计算机设备和存储介质
CN104160398A (zh) 结构化大对象(lob)数据
WO2023179787A1 (zh) 分布式文件系统的元数据管理方法和装置
US20220253419A1 (en) Multi-record index structure for key-value stores
US10095738B1 (en) Dynamic assignment of logical partitions according to query predicate evaluations
US8566342B2 (en) In-memory data optimization system
CN117540056B (zh) 数据查询的方法、装置、计算机设备和存储介质
CN115858471A (zh) 业务数据变更记录方法、装置、计算机设备及介质
KR20190123819A (ko) 데이터 저장장치의 주소 맵핑 테이블 운용 방법
CN114238334A (zh) 异构数据编码、解码方法和装置、计算机设备和存储介质
CN114398373A (zh) 应用于数据库存储的文件数据存储读取方法及装置
Otoo et al. Chunked extendible dense arrays for scientific data storage
Chaudhry et al. A hash-based index for processing frequent updates and continuous location-based range queries
US20240168978A1 (en) System and method to implement a scalable vector database

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