CN111512303A - 分层图形数据结构 - Google Patents

分层图形数据结构 Download PDF

Info

Publication number
CN111512303A
CN111512303A CN201780098051.4A CN201780098051A CN111512303A CN 111512303 A CN111512303 A CN 111512303A CN 201780098051 A CN201780098051 A CN 201780098051A CN 111512303 A CN111512303 A CN 111512303A
Authority
CN
China
Prior art keywords
identifier
graph
column
data
vertex
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
CN201780098051.4A
Other languages
English (en)
Other versions
CN111512303B (zh
Inventor
张新峰
A·奈尔
周健
任文
李健
F·杨
冯国文
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.)
Electronic Technology Co
Original Assignee
Electronic Technology Co
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 Electronic Technology Co filed Critical Electronic Technology Co
Publication of CN111512303A publication Critical patent/CN111512303A/zh
Application granted granted Critical
Publication of CN111512303B publication Critical patent/CN111512303B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1834Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • 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
    • G06F16/90348Query processing by searching ordered data, e.g. alpha-numerically ordered data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (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示出了与所公开的实施例一致的图1的示例分层图形数据结构的示例第二层。
图3示出了与所公开的实施例一致的图1的示例分层图形数据结构的示例第三层。
图4示出了与所公开的实施例一致的用于存储分层图形数据结构的示例表和数据条目。
图5示出了与所公开的实施例一致的用于使用分片存储分层图形数据结构的示例表和数据条目。
图6示出了与所公开的实施例一致的用于存储和查询分层图形数据结构的示例计算机网络架构。
图7示出了计算机架构图,显示了用于实现所公开的实施例的各方面的一种说明性计算机硬件架构。
图8示出了计算系统图,显示了用于实现所公开实施例的各方面的数据中心的一种配置。
图9示出了与所公开的实施例一致的用于响应使用分层图形数据结构对存储的数据的查询的流程图。
具体实施方式
本公开描述了分层图形数据结构、使用分层图形数据结构的数据存储以及分层图形数据结构的查询处理的实施例。对于具有分级、层级、分层或图形数据的数据域,所公开的实施例提供了对诸如关系数据模型之类的现有数据模型的技术改进。仅作为一些实例,这样的应用可以包括但不限于社交媒体网络、产品目录、员工或人力资源管理系统以及文档管理系统。
可以使用图形对分级、层级、分层或图形数据域进行建模。可以将图定义为通过一组边线链接在一起的一组顶点。由于关系数据模型与图形数据模型本质上不同,因此使用关系数据库存储图可能效率很低。例如,在关系数据库中存储图形数据集可以包括使用一个或多个存储顶点属性的表,一个或多个存储关于图形的信息的表以及一个或多个链接表,该链接表将存储顶点属性的表的行关联到存储有关图的信息的表的行。随着图形数据集的大小增加,存储图形数据集的数据库的大小可能相对于图形数据集的大小呈指数增长,从而导致所需的存储量效率低下。此外,大小的增加也可能增加查询响应时间,或者可能需要其他计算资源来维持查询响应时间。
为了解决以上确定的技术问题,所公开的实施例以分层图形数据结构的形式提供了一种技术解决方案,其利用了图形的固有分层结构来优化数据存储。该解决方案通过使数据库结构与数据域的图更加紧密地对齐,减少了存储图形数据集所需的资源数量。该解决方案还至少以两种方式缩短了查询响应时间。首先,由于存储的数据少于使用常规数据存储技术所需的数据,因此查询响应时间更快。其次,由于所公开的实施例的数据库结构,对数据集的搜索深度可以限于特定应用所需的内容。
可以通过使用两个表(顶点表和边线表)存储分层图形数据结构来部分实现所公开实施例的技术优势。顶点表的行表示分层图结构中的顶点,其中边线表的行表示连接两个顶点的边线。顶点表和边线表都包括图形标识符列,该列用作顶点表的行和边线表的行之间的链接。在一些实施例中,顶点表和边线表存储分层图形数据结构的第一层或主层的顶点和边线。
根据一些实施例,顶点表包括顶点标识符列和图形标识符列。顶点列的行表示分层图形数据结构的顶点(存储在顶点标识符列中)到该顶点关联图的标识符(存储在图标识符列中)的映射。
随着分层图形数据结构中顶点数量的增加,可以使用分片来缩放顶点表。分片是一种数据库设计技术,其中数据库表的行分开保存,而不是分成几列(这是规范化和垂直分区在不同程度上的进行的)。每个分区构成分片的一部分,而分片又可以位于单独的数据库服务器或分布式计算系统中的物理位置上。在一些实施例中,可以基于顶点标识符对顶点表分片,这可以改善查询响应时间,如下面更详细地描述的。
根据一些实施例,边线表包括图形标识符列,第一节点标识符列和第二节点标识符列以及边线类型列。边线表的每一行代表第一顶点(存储在第一节点标识符列中)和第二顶点(存储在第二节点标识符列中)之间的连接。存储在边线类型列中的数据值描述了连接第一顶点和第二顶点的边线的类型。如下面更详细说明的,边线类型可以传达两个顶点之间的边线是否在同一图形内(内边线),或者两个顶点之间的边线是否连接两个图形(外边线)。如同顶点表,随着边线表的规模扩展,可以对它进行分片以在不同服务器或物理位置之间分布数据存储。在一些实施例中,可以基于图标识符对边线表分片,这可以改善查询响应时间。
所公开的实施例还通过提供查询服务来提供附加的技术优势,该查询服务可以为所提供的目标实体基于图形级别找到相关实体。例如,查询服务可以提供应用程序编程接口(API),该接口接受目标实体标识符和图形级别作为参数,将分层图形数据结构搜索到请求的图形级别,并返回在请求的图形级别找到的实体。
在对相关实体的请求中提供的图形级别与分层图形数据结构的各层相关。图形级别可以指示例如分层图形数据结构的主要层上目标实体和相关实体之间的外边线的数量,也可以指示目标实体和相关实体直接连接的层。例如,图形级别3可表示两个实体在分层图形数据结构的主层具有其间的三个外边线,或者实体在分层图形数据结构的第三层处直接连接。
在下面的详细描述中,参考了构成其一部分的附图,并且通过说明的方式示出了特定的实施例或实例。本文中的附图未按比例绘制。贯穿多个附图(在本文中可称为“图”或“附图”),相似的数字表示相似的元件。
图1示出了与所公开的实施例一致的分层图形数据结构100的示例主层。主层可以是分层图形数据结构100的第一层。分层图形数据结构100具有顶点111-113、121-124、131、132、141-143、151、152和161。根据一些实施例,顶点表示实体。例如,顶点可以代表单个用户、用户帐户、产品或组织。顶点也可以表示给定上下文中的实体。例如,这些顶点可以表示用户的计算设备、组织的办公室的地理位置、具有某些属性的产品等。根据一些实施例,分层图形数据结构的主要级别的顶点可以对应于所存储的数据的最细节的级别。
分层图形数据结构100可以包含一个或多个逻辑子图210、220、230、240、250、260。逻辑子图可各自包括一个或多个顶点,这些顶点可基于域分层图形数据结构100模型进行逻辑分组。例如,逻辑子图210、220、230、240、250、260可以分别与用户相对应,并且在逻辑子图210、220、230、240、250、260的每个中,相应的顶点可以与在用户计算设备上操作的用户帐户相对应。例如,子图210可以对应于名为John的用户,顶点111可以对应于在移动设备上为John访问的社交媒体帐户,顶点112可以对应于通过PC访问的John的电子商务帐户,而顶点113可以对应于通过游戏控制台访问的John的游戏个人资料。
分层图形数据结构100的顶点可以通过边线(例如边线170、175)连接。边线可以具有边线类型,该边线类型指示边线是连接同一子图的顶点还是边线将第一子图的顶点连接到第二子图的顶点。可以将连接同一子图的顶点的边线类型视为内边线。例如,边线170是内边线,因为它连接了都是子图210一部分的顶点112和顶点113。连接不同子图顶点的边线类型可以视为外边线。例如,边线175是外边线,因为它连接作为子图210一部分的顶点113和作为子图230一部分的顶点131。
在一些实施例中,分层图形数据结构100可以包括除了内边线类型和外边线类型之外的边线类型,并且这些附加的边线类型可以指示它们连接的顶点之间的特殊关系。附加边线类型可以是外边线类型的特定实例。例如,用户帐户顶点可以通过边线类型连接,该边线类型指示连接的顶点在社交媒体环境中是“朋友”还是“同事”。作为另一个实例,代表大型多人角色扮演游戏(MMRPG)的帐户或头像的顶点可以通过边线类型进行连接,该边线类型指示所连接的顶点是同一团队或战役的一部分。
附加边线类型也可以是内边线类型的特定实例。例如,可以通过边线类型来连接计算设备的顶点,该边线类型指示所连接的顶点是相关的操作平台或操作系统的一部分。作为另一个实例,表示不同产品配置的顶点可以通过边线类型连接,该边线类型指示连接的顶点是同一产品的不同形式,或者具有特定的属性,例如颜色或大小。
在一些实施例中,主层的顶点对应于元素数据类型,该元素数据类型可以是分层图形数据结构100正在为其建模的数据域中的概念上最细节的数据类型。例如,主层的顶点可以对应于产品目录域中的产品库存单位(SKU)。作为另一实例,主层的顶点可以对应于与社交媒体域中的特定计算设备相关联的用户帐户。在分层图形数据结构的更高级别上,某些外边线类型变为逻辑内边线类型。例如,连接逻辑子图210和逻辑子图230的分层图形数据结构100的外边线175可以在连接逻辑顶点210和逻辑顶点230的分层图形数据结构100的第二层成为逻辑内边线类型(其可能是第二层更高级别图的一部分)。换句话说,在分层图形数据结构100的第二层,可以将逻辑子图210和逻辑子图230视为通过边线175直接连接的逻辑顶点。
图2示出了分层图形数据结构100的第二层200的一个实例。虽然图2示出了与图1相同的分层图形数据结构100,但它是从第二层的角度来看的。例如,比较图1与图2,图1的子图210、220、230、240、250、260在图2中示为逻辑顶点。如图2所示,将分层图形数据结构100的子图210、子图220和子图230描绘为属于逻辑子图310的逻辑顶点,该逻辑子图是分层图形数据结构100的第二层子图。在逻辑子图310内,子图210(或第二层的逻辑顶点210)通过外边线175(或逻辑内边线175)连接到子图230(或第二层的逻辑顶点230)。
进一步比较图1(示出了分层图形数据结构100的主层)与图2(示出了分层图形数据结构的第二层100),图2示出了在图1中被两个外边线分开的子图(例如,子图210和子图240)由一个外边线分开。例如,如图2所示,子图210(第二层的逻辑顶点210)和子图240(第二层的逻辑顶点240)经由外边线180连接。
图3示出了分层图形数据结构100的第三层300的实例。虽然图3示出了与图1和2相同的分层图形结构100,但它是从第三层的角度来看的。例如,比较图2和图3,图2的子图310和320通过外边线180连接,但是在图3中被示为逻辑顶点,其通过子图410内的第三级的逻辑内边线180连接。
上面的讨论使用术语“逻辑地”来描述分层图形数据结构100的各层处的顶点之间的关系,因为在某些实现中,第一层或主层之上的层上的子图之间的边线在概念上存在,但未明确存储在定义分层图形数据结构100的数据表中。在一些实施例中,无论层数如何,都可以使用两个数据表(顶点表和边线表)来存储分层图形数据结构。这些表存储边线类型,因为它们存在于主层中,并且处理逻辑可以访问和处理数据,以识别图结构内不同层上的顶点和/或子图之间的关系。
图4示出了根据所公开的实施例的用于存储分层图形数据结构的示例数据表和数据条目。示例数据表和数据示出了如何将分层图形数据结构100的所有层存储在两个表中的一个实例。尽管分层图形数据结构100具有三个概念层,但是图4示出了表,该表存储与分层图形数据结构100的主层相对应的数据。
在一些实施例中,数据表包括顶点表450。顶点表450可以包括顶点标识符列452和第一图形标识符列453。与公开的实施例一致,顶点表450可以包括一个或多个数据行,其中一个或多个数据行中的每个对应于顶点。在一些实施例中,顶点表450的数据行对应于分层图形数据结构的主层的顶点。但是在某些实施例中,顶点表450可以包括分层图形数据结构的其他层的顶点。
在顶点表450的数据行中,顶点标识符列452中的数据条目对应于标识分层图形数据结构的顶点的值,而第一图形标识符列453中的数据条目对应于标识在顶点标识符列452中标识的顶点所属的图或子图的值。例如,如图4所示,用顶点_ID 111标识的顶点是由图形_ID 210标识的图的一部分,而用顶点_ID143标识的顶点是由图形_ID 240标识的图的一部分。
尽管在图4中未明确示出,但可以将与分层图形数据结构的顶点有关的附加数据存储在顶点表450中。例如,如果顶点对应于用户帐户,则顶点表450可以包括关于用户的数据,例如登录凭证、电子邮件地址和电话号码,仅作为一些实例,或者顶点表450可以包括一个或多个列,所述列存储链接到存储用户相关信息的其他附加数据表的值。另外,虽然未在图4中示出,但在一些实施例中,顶点表450可以包括与数据库管理有关的列,诸如唯一键列、记录状态列和/或修改信息列(例如,上次编辑的、用户编辑的等)。
存储分层图形数据结构的数据表还可以包括边线表470。如上所述,可以将分层图形数据结构中的边线定义为两个顶点之间的连接(在边线表470中称为“节点”),并且边线可以包括描述两顶点之间连接性质的边线类型。
根据一些实施例,边线表470可以包括第二图形标识符列472、第一节点标识符列474、第二节点标识符列476和边线类型列478。边线表470可以包括一个或多个数据行,其中每个数据行对应于连接分层图形数据结构中的两个顶点的边线。对于与边线相对应的数据行,存储在第二图形标识符列472中的数据条目对应于第一节点标识符列474(和边线)中标识的顶点所属的图,存储在第一节点标识符列474中的数据条目对应于边线一侧的顶点的顶点标识符,存储在第二节点标识符列476中的数据条目对应于边线另一侧的顶点的顶点标识符,和存储在边线类型列478中的数据条目对应于连接在第一节点标识符列474和第二节点标识符列476中标识的顶点的边线的类型。例如,如图4所示,数据行480对应于为具有图形标识符210的图的一部分的边线,并且连接具有顶点标识符113和124的顶点,数据行482对应于为具有图形标识符230的图的一部分的边线,并且连接具有顶点标识符132和141的顶点。
边线表470的每个数据行可以包括存储在边线类型列478中的数据值,该数据值反映连接第一节点标识符列474和第二节点标识符列476中所标识的顶点的边线的性质。存储在边线类型列478中的值可以是字符串、数值(例如,整数、长整型数、单精度浮点数、双精度浮点数)或枚举值。在一些实施例中,边线类型列478的数据条目可以是链接到数据库中的另一数据表(未示出)的值,该数据库用于存储分层图形数据结构,该分层图形数据结构存储指示边线类型的枚举值(或其他值)。在图4的实例中,边线类型列478存储指示边线类型的字符串值,“内部”或“外部”,可以考虑其他两种边线类型值。
根据一些实施例,查询服务可以使用边线类型列478中的值来响应于与分层图形数据结构实例有关的数据查询标识一个或多个顶点。例如,查询服务可能通过在边线类型列478中找到具有“内部”作为数据条目的数据行来找到与同一图相连的顶点。查询服务还可以通过在边线表470上执行迭代搜索以查找数据行“外部”作为边线类型列478中的数据条目,找到通过分层图结构的数个层连接的顶点。下面关于图6的查询服务623更详细地说明示例查询服务的操作以及查询服务如何使用边线类型列478中存储的数据值。
虽然图4所示的实例示出了相对于分层图形数据结构的主层存储的数据,但在一些实施例中,可以存储分层图形数据结构的其他层。例如,在一些实施例中,顶点表450可以包括数据行,其中存储在顶点标识符列452中的数据实际上是用于主(或一些更低)层的图的图标识符。例如,顶点表450可能有一个数据行,其中240存储在顶点标识符列452中,而320存储在第一图形标识符列453中。
同样,边线表470可以包括与除主要级别之外的分层图形数据结构的层上的图的边线相对应的行。例如,边线表470可以具有这样的数据行:其中第二图形标识符列472存储320,第一节点标识符列474存储230,第二节点标识符列476存储240,并且边线类型列478存储“外部”。
在一些实施例中,除主层以外的层的存储可以提供附加的查询速度优势,而在其他实施例中,可能不需要除主层以外的层的存储。因此,存储在顶点表450和边线表470中的层数可以根据用分层图形数据结构建模的数据域的需要而变化。
随着分层图形数据结构的大小增加,可以对存储分层图形数据结构的数据库进行分片和分布以提高搜索效率。数据库分片是一种将大型数据库划分或分片为更小、更快和更易于管理的称为数据分片的部分的技术。在分片时,数据库表被水平分割,从而每个数据分片存储通常会存储在同一数据库表中的数据行的子集。例如,可以将存储一百万行数据的数据表分片为两个数据分片,其中第一数据分片存储行1至499,999,第二数据分片存储行500,000至1,000,000。
图5示出了用于使用数据库分片来存储分层图形数据结构的示例表和数据条目。虽然可以使用任何分片技术来存储分层图形数据结构,但提供效率的一个实例是根据存储在顶点标识符列452中的值对顶点表450进行分片,并根据存储在第二图标识符列472中的值对边线表470进行分片。为了提高效率,顶点表450和边线表470都可以被分片,使得每个分片存储连续的值范围。例如,如图5所示,可以将顶点表450分片为存储从100到129的顶点标识符的数据分片530和存储从130到170的顶点标识符的数据分片540。作为另一实例,如图5所示,可以将边线表470分片为存储图标识符200至229的数据分片570和存储图标识符230至270的数据分片580。
图6以框图形式示出了根据所公开的实施例的用于存储、使用和/或管理存储在分层图形数据结构中的数据的系统600。在图6所示的实施例中,一个或多个用户计算设备610、查询服务计算机系统620、服务提供商计算机系统640和数据存储环境670可以经由网络690通信。
图6中概述的系统600可以被计算机化,其中每个所示组件包括计算设备,该计算设备被配置为经由网络690与其他计算设备进行通信。举例来说,用户计算设备610可包含经配置以经由网络690向/从其他计算设备例如服务提供商计算机系统640传送和获取数据的一个或多个计算设备,例如控制台游戏设备612、个人计算设备614、平板计算设备616和/或移动计算设备618。作为另一实例,服务提供商计算机系统640可以经由网络690与查询服务计算机系统620通信以获得执行从用户计算机设备610接收的服务请求所需的数据。同样,查询服务计算机系统620可以与数据存储环境670通信以访问一个或多个数据库,该数据库存储作为与所公开的实施例一致的分层图形数据结构的一部分的数据。
在一些实施例中,查询服务计算机系统620、服务提供商计算机系统640和/或数据存储环境670可以包括服务器、服务器集群和/或分布式执行环境(未示出)。在一些实施例中,可以通过使用专用于执行如本文所述的系统的各个操作的一个或多个计算设备来实现这些计算系统,或者可以将这些计算系统实现为执行附加任务或操作。
在一些实施例中,查询服务计算机系统620包括查询服务623。查询服务623可以对存储分层图形数据结构的数据源执行一个或多个查询操作。例如,查询服务623可以执行操作以响应于查询而从分层图形数据结构中添加或移除顶点,或者对分层图形数据结构执行搜索,并且响应于所述查询而返回结果集。在一些实施例中,查询服务623从服务提供商计算机系统640接收请求,并且服务提供商计算机系统640可以使用其接收的结果集向用户计算机设备610提供信息或服务。
在一些实施例中,查询服务623暴露应用程序编程接口(API),其提供与目标实体相关的相关实体或关于它们的信息的结果集。实体可以包括在分层图形数据结构内任何级别上被建模为顶点或图的任何人、地点或事物。实体的实例可以包括但不限于用户、用户帐户、计算设备、化身、角色、位置、组织、业务、产品、团队、组等。API可以请求目标实体或与目标实体有关的数据作为输入。然后,目标实体在进行相关实体的搜索时用作查询服务623的起点。例如,目标实体输入数据可以包括标识特定用户的字符串或表示产品库存单位(SKU)编号的数值。API可以返回与和输入相关联的目标实体相关的相关实体相对应的数据结果集。例如,API可以返回与作为社交媒体朋友或目标实体的连接的实体相对应的数据。
根据一些实施例,查询服务623可以暴露接受与目标实体和图形级别有关的数据作为输入并且返回具有与目标实体的有关实体有关的数据的结果集的API。图形级别可以指示目标实体和相关实体所连接的分层图形数据结构的层。例如,当图形级别是数值时,图形级别可以对应于实体直接相关的图的层。图形级别还可以包括与图的层相关的字符串。例如,当分层图形数据结构为社交网络建模时,图形级别可以是字符串,并且可能的值可以包括“密友”、“熟人”或“朋友之友”,而这又可能分别对应于分层图形数据结构的第二层、第三层和第四层。
查询服务623可以暴露请求图形级别的API以提高查询性能-查询服务623仅需要执行识别与提供的图形级别一致的数据所需的迭代。当与存储分层图形数据结构的表的结构和数据分片技术(例如,图4和5中标识的表)结合时,查询服务623可以比传统关系数据库更快地执行搜索操作,传统关系数据库不考虑图形级别或分层图形数据结构。
为了进一步说明查询服务623如何响应在接受目标实体和图形级别作为输入的API上接收到的请求,并返回具有与目标实体的相关实体有关的数据的结果集,提供以下三个非穷举的实例。下面的实例对应于三个不同的使用情况:(实例1)为目标实体找到在主级别属于同一图的一部分的相关实体(例如,图形级别=0的情况);(实例2)找到在主级别从目标实体单连接移除的或者在分层图形数据结构的第二层直接连接到目标实体的实体(例如,图形级别=1情况);和(实例3)找到在主级别从目标实体双连接移除的或者在分层图形数据结构的第三层直接连接到目标实体的实体(例如,图形级别=2情况)。
对于实例1(图形级别=0):查询服务623可以首先访问顶点表450以找到所提供的顶点标识符所属的图的图标识符。接下来,查询服务623可以访问边线表470以确定与图标识符匹配的图的边线。对于与图形标识符匹配的边线(数据行),查询服务623可以确定哪些边线链接了图内的顶点,例如,那些具有“内部”作为边线类型列478中的数据条目的边线。查询服务然后可以分析确定的边线以找到属于同一图的一部分的顶点的顶点标识符。
可以使用图4所示的示例数据条目进一步解释实例1。查询服务623可以接收对与顶点123在同一图中的所有顶点的请求,该请求可以包括对API的调用,其中目标实体值设置为标识顶点123的数据并且图形级别等于0。首先,查询服务623访问顶点表450以找到顶点123所属的图。如图4所示,顶点123属于图220。接下来,查询服务623访问边线表470以在第二图形标识符列472中找到具有数据值220的边线,并找到四个数据行483、484、485、486。数据行483、484和485在边线类型列478中具有数据“内部”,而数据行486在边线类型列478中具有“外部”。因此,查询服务623可以分析数据行483、484和485的第一节点标识符和第二节点标识符列中的数据条目,以确定哪些顶点在图220内是内部连接的,并且通过该分析可以确定顶点121、122和124在与顶点123相同的图形内。查询服务623然后可以将结果集返回给请求者,以标识顶点121、122和124或与那些顶点有关的信息。
对于实例2(图形级别=1):查询服务623可以首先访问顶点表450以找到所提供的目标顶点标识符所属的图的图标识符。接下来,查询服务可以访问边线表470以确定与图标识符匹配的图的边线。对于与图标识符匹配的边线(数据行),查询服务可以确定哪些边线将当前图内的顶点链接到当前图外的顶点,例如,那些以“外部”作为边线类型列478中数据条目的边线。
对于每个确定的外边线,查询服务623识别不是当前图的一部分的边线的顶点,以识别一组顶点以执行搜索的下一迭代。然后,查询服务623可以通过访问顶点表450确定在先前迭代中标识的顶点的各个图标识符,进行搜索的下一迭代。对于每个确定的图形标识符,查询服务623访问边线表470以确定与图形标识符匹配的图形的边线。对于与图形标识符匹配的边线(数据行),查询服务可以确定哪些边线链接了当前图内的顶点,例如,那些具有“内部”作为边线类型列478中的数据条目的边线。查询服务623可以将那些顶点或与那些顶点有关的数据添加到结果集中,并将结果集返回给请求。
可以使用图4所示的示例数据条目进一步解释实例2。查询服务623可以接收请求,该请求包括与顶点113匹配的目标实体并且图形级别为1(或者指示图形级别为1的数据或字符串)。首先,查询服务623访问顶点表450以找到顶点113所属的图。如图4所示,顶点113属于图210。接下来,查询服务623访问边线表470,以找到属于图表210的边线表中的数据行(边线),它们是数据行480、487、488和489。由于接收到的图形级别等于1,并且这是访问边线表的第一次搜索迭代,因此查询服务623分析数据行480、487、488、489,以查找哪些边线将图210的顶点链接到分层图形数据结构中处于主(或第一)级别的其他图。如图4所示,数据行480和489具有“外部”的边线类型。查询服务623分析数据行480和489以识别不属于图210的顶点(这在一些实施例中可以通过比较内边线和外边线的第一节点标识符和第二节点标识符列中的数据条目来完成)。在此实例中,顶点124和131不在图形210中。然后,查询服务623将在下一个(第二个)迭代中使用顶点124和131。
在实例2的第二次迭代中,查询服务访问顶点表450以找到顶点124和131所属的图。如图4所示,顶点124属于图220,并且顶点131属于图230。然后查询服务623访问边线表470以找到属于图220和230的边线。由于接收到的图形级别为1,并且查询服务623正在执行第二次迭代,因此它将分析与图形220和230匹配的实体表470的数据行中每个图形内部的那些边线,并通过分析这些行,准备一个结果集,其包含与在每个边线中找到的顶点有关的信息。
对于实例3(图形级别=2):查询服务623可以首先访问顶点表450以找到所提供的目标顶点标识符所属的图的图标识符。接下来,查询服务可以访问边线表470以确定与图标识符匹配的图的边线。对于与图标识符匹配的边线(数据行),查询服务可以确定哪些边线将当前图内的顶点链接到当前图外的顶点,例如,那些以“外部”作为边线类型列478中数据条目的边线。
对于每个确定的外边线,查询服务623识别不是当前图的一部分的边线的顶点,以识别一组顶点以执行搜索的下一(或第二)迭代。然后,查询服务623可以通过访问顶点表450确定在先前迭代中标识的顶点的各个图标识符,进行搜索的下一(或第二)迭代。对于每个确定的图形标识符,查询服务623访问边线表470以确定与图形标识符匹配的图形的边线。对于与图标识符匹配的边线(数据行),查询服务可以确定哪些边线将当前图内的顶点链接到当前图外的顶点,例如,那些以“外部”作为边线类型列478中数据条目的边线。对于每个确定的外边线,查询服务623识别不是当前图的一部分的边线的顶点,以识别一组顶点以执行搜索的下一(第三次)迭代。然后,查询服务623可以通过访问顶点表450确定在先前(第二次)迭代中标识的顶点的各个图标识符,进行搜索的下一(或第三次)迭代。对于每个确定的图形标识符,查询服务623访问边线表470以确定与图形标识符匹配的图形的边线。对于与图形标识符匹配的边线(数据行),查询服务可以确定哪些边线链接了当前图内的顶点,例如,那些具有“内部”作为边线类型列478中的数据条目的边线。查询服务623可以将那些顶点或与那些顶点有关的信息添加到结果集中,并将结果集返回给请求。
可以使用图4所示的示例数据条目进一步解释实例3。查询服务623可以接收请求,该请求包括与顶点113匹配的目标实体并且图形级别为2(或者指示图形级别为二的数据或字符串)。首先,查询服务623访问顶点表450以找到顶点113所属的图。如图4所示,顶点123属于图210。接下来,查询服务623访问边线表470,以找到属于图表210的边线表中的数据行(边线),它们是数据行480、487、488、489。由于接收到的图形级别等于1,并且这是访问边线表的第一次搜索迭代,因此查询服务623分析数据行480、487、488、489,以查找哪些边线将图210的顶点链接到分层图形数据结构中处于主(或第一)级别的其他图。如图4所示,数据行480和489具有“外部”的边线类型。查询服务623分析数据行480和489以识别不属于图210的顶点(这在一些实施例中可以通过比较内边线和外边线的第一节点标识符和第二节点标识符列中的数据条目来完成)。在此实例中,顶点124和131不在图形210中。然后,查询服务623将在下一个(第二个)迭代中使用顶点124和131。
在实例3的第二次迭代中,查询服务访问顶点表450以找到顶点124和131所属的图。如图4所示,顶点124属于图220,并且顶点131属于图230。然后查询服务623访问边线表470以找到属于图220和230的边线。由于接收到的图形级别为2,并且查询服务623正在执行第二次迭代,因此它将类似于第一次迭代那样分析实体表470的数据行-查询服务623分析数据行482、483、484、485、486、490、491和493,以查找哪些边线将图220和230的顶点链接到分层图形数据结构内处于第二级别的其他图。如图4所示,数据行482、486、491、492和493具有“外部”的边线类型。查询服务623分析数据行482、486、491、492和493以识别不属于图220和230的顶点(这在一些实施例中可以通过比较内边线和外边线的第一节点标识符和第二节点标识符列中的数据条目来完成)。在此实例中,顶点113、141、151、161不在图形220和230中。然后,查询服务623将在下一个(第三次)迭代中使用顶点113、141、151、161。
在实例3的第三次迭代中,查询服务访问顶点表450,以找到顶点113、141、151、161所属的图。如图4所示,顶点113属于图210,顶点141属于图240,顶点151属于图250,并且图161属于图260。由于在先前的迭代(第一次)中分析了图形210,因此查询服务623不会对其执行其他操作。结果,查询服务623然后访问边线表470以查找属于图形240、250和260的边线。由于接收到的图形级别为二,并且查询服务623正在执行第三次迭代,因此它将分析与图形220和230匹配的实体表470的数据行中每个图形内部的那些边线,并通过分析这些行,准备一个结果集,其包含与在每个边线中找到的顶点有关的信息。
可以将以上实例进一步扩展以解决其中分层图形数据结构具有更多层或所请求的图形级别大于二的实施例。此外,尽管以上使用图形级别的实例具有数值,但是在一些实施例中,所请求的图形级别可以表示为字符串或枚举值,并且在这样的实施例中,查询服务623可以执行附加操作(例如,使用查找表或哈希表将接收到的图形级别字符串转换为数字图形级别值),以将字符串或枚举值转换为数字值。
返回参考图6,查询服务计算机系统620还可以包括数据检索服务625,其可以执行与从诸如数据库628(例如,查询服务计算机系统的本地数据库)或数据存储环境670的数据源检索的数据有关的一个或多个操作。例如,数据检索服务625可以执行用于构造SQL查询的操作,以查找响应于查询服务623接收的请求所需的数据。
在一些实施例中,数据检索服务625可以执行操作以确定数据分片的位置,并且根据查询服务623的需要将数据请求定向到适当的数据分片。例如,如果查询服务623要求来自边线表470的与图形标识符“123456”相对应的数据行,则数据检索服务625可以访问查找表,该查找表指示存储图“123456”的边线的数据分片的位置。根据一些实施例,数据分片查找表可以存储在查询服务计算机系统的数据库628中。如上所述,可以通过存储在顶点标识符列452中的数据值来分片顶点表450,并且可以通过存储在第二图形标识符列472中的数据值来分片边线表470。因此,数据检索服务625可以执行操作以基于与每个分片相关联的范围为顶点标识符或图形标识符确定适当的数据分片。范围可以存储在数据库628中的查找表中。
根据一些实施例,数据库628可以是能够以有组织的方式存储数据的任何数据库系统。例如,数据库628可以被实现为平面文件数据库、关系数据库、对象数据库等。在一些实施例中,数据库628仅存储与定位数据分片有关的数据或与查询服务623或数据检索服务625有关的其他管理或配置信息。在一些实施例中,出于速度或效率的原因,与定位数据分片或其他管理或配置信息有关的数据的本地存储可能是优选的,但是在其他实施例中,与定位数据分片或其他管理或配置信息有关的数据可以远程存储在数据存储环境670或一些其他远程位置。
系统600还可以包括数据存储环境670。数据存储环境670可以包括一个或多个存储分层图形数据结构的数据的数据中心。在一些实施例中,数据存储环境670可以暴露允许查询特定数据中心的数据的API,这可以帮助更有效的查询操作。例如,数据存储环境670可以提供API,其允许在多个数据位置之间分割分层图形数据结构时,数据检索服务625在特定数据中心675上运行查询。
取决于实施例,网络690可以包括可以经由任何可用的有线和/或无线通信协议访问的任何类型的网络中的一个或多个,诸如一个或多个局域网、广域网、个人区域网、电话网络和/或因特网。例如,网络690可以包括互联网连接,用户计算机设备610和服务提供商计算机系统640通过该互联网连接进行通信。可以考虑在所描述的系统中使用网络的任何其他组合,包括安全和不安全的网络通信链路。
图7示出了计算机700的示例计算机架构,其能够执行上述程序组件,以在分布式执行环境中或在非分布式执行环境中执行用于响应与分层图形数据结构有关的查询的动作。图7所示的计算机架构示出了常规的服务器计算机、工作站、台式计算机、膝上型计算机、平板电脑、网络设备、个人数字助理(“PDA”)、电子阅读器、数字蜂窝电话或其他计算设备,并且可以被用来执行所述的本文呈现的软件组件的任何方面。
计算机700包括基板702或“主板”,该基板是印刷电路板,多个组件或设备可以通过系统总线或其他电通信路径连接至该印刷电路板。在一说明性实施例中,一个或多个中央处理单元(“CPU”)704与芯片组706结合操作。CPU 704可以是执行计算机700的操作所必需的算术和逻辑运算的标准可编程处理器。
CPU 704通过操纵在这些状态之间进行区分和改变的开关元件,通过从一个离散的物理状态过渡到下一离散的物理状态来执行操作。开关元件通常可以包括保持两个二进制状态之一的电子电路,例如触发器;以及基于一个或多个其他开关元件的状态的逻辑组合提供输出状态电子电路,例如逻辑门。可将这些基本开关元件组合以创建更复杂的逻辑电路,包括寄存器、加减法器、算术逻辑单元、浮点单元等。
芯片组706提供CPU 704与基板702上其余组件和设备之间的接口。芯片组706可以提供到用作计算机700中的主存储器的随机存取存储器(“RAM”)708的接口。芯片组706可以进一步提供到诸如只读存储器(“ROM”)710或非易失性RAM(“NVRAM”)的计算机可读存储介质的接口,用于存储有助于启动计算机700和在各种组件和设备之间传输信息的基本例程。ROM 710或NVRAM还可以存储根据本文描述的实施例的计算机700的操作所必需的其他软件组件。
计算机700可以使用通过诸如网络690之类的网络到远程计算设备和计算机系统的逻辑连接,在联网环境中操作。芯片组706可以包括用于通过NIC 712提供网络连接的功能,例如千兆位以太网适配器。NIC 712能够通过网络690将计算机700连接到其他计算设备。应当理解,计算机700中可以存在多个NIC 712,将计算机连接到其他类型的网络和远程计算机系统。
计算机700可以连接到为计算机提供非易失性存储的大容量存储设备718。大容量存储设备718可以存储在此已经更详细描述的系统程序、应用程序、其他程序模块和数据。大容量存储设备718可以通过连接到芯片组706的存储控制器714连接到计算机700。大容量存储设备718可以由一个或多个物理存储单元组成。存储控制器714可以通过串行连接的SCSI(“SAS”)接口、串行高级技术附件(“SATA”)接口、光纤通道(“FC”)接口或其他类型的接口与物理存储单元接口,用于在计算机和物理存储单元之间物理连接和传输数据。
计算机700可以通过变换物理存储单元的物理状态以反映正在存储的信息来将数据存储在大容量存储设备718上。在本说明书的不同实施方式中,物理状态的特定变换可以取决于各种因素。这样的因素的实例可以包括但不限于用于实现物理存储单元的技术、大容量存储设备718被表征为主要存储还是辅助存储等。
例如,计算机700可以通过经由存储控制器714发布指令来将信息存储到大容量存储设备718,以改变磁盘驱动单元内特定位置的磁特性,光学存储单元中特定位置的反射或折射特性,或固态存储单元中特定电容器、晶体管或其他分立组件的电气特性。在不背离所公开的实施例的范围和精神的情况下,物理介质的其他变换是可能的,提供前述实例仅是为了便于描述。计算机700可以通过检测物理存储单元内的一个或多个特定位置的物理状态或特性来进一步从大容量存储设备718读取信息。
除上述大容量存储设备718之外,计算机700还可访问其他计算机可读存储介质以存储和检索信息,例如程序模块、数据结构或其他数据。本领域技术人员应该理解,计算机可读存储介质可以是提供非暂时性数据的存储并且可以由计算机700访问的任何可用介质。
作为示例而非限制,计算机可读存储介质可以包括以任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机可读存储介质包括但不限于RAM、ROM、可擦可编程ROM(“EPROM”)、电可擦可编程ROM(“EEPROM”)、闪存或其他固态存储技术、光盘ROM(“CD-ROM”)、数字多功能磁盘(“DVD”)、高清DVD(“HD-DVD”)、BLU-RAY或其他光学存储设备、盒式磁带、磁带、磁盘存储设备或其他磁性存储设备设备或任何其他可用于以非临时方式存储所需信息的介质。
大容量存储设备718可以存储用于控制计算机700的操作的操作系统730。根据一个实施例,操作系统包括LINUX操作系统。根据另一实施例,操作系统包括来自微软公司的
Figure BDA0002557906710000171
服务器操作系统。根据另外的实施例,操作系统可以包括UNIX或SOLARIS操作系统。应当理解,也可以使用其他操作系统。大容量存储设备718可以存储计算机700使用的其他系统或应用程序和数据,例如转换服务115、文档收集服务120、用户界面服务125、数据库130、原始文档存储135、中间文档存储140和/或显示文档存储器145或上述任何其他软件组件和数据。大容量存储设备718还可能存储本文未具体指出的其他程序和数据。
在一个实施例中,用计算机可执行指令对大容量存储设备718或其他计算机可读存储介质进行编码,所述计算机可执行指令在被加载到计算机700中时将计算机从通用计算系统转换为能够实现在此描述的实施例的专用计算机。如上所述,这些计算机可执行指令通过指定CPU 704如何在状态之间转换来变换计算机700。根据一个实施例,计算机700可以访问存储计算机可执行指令的计算机可读存储介质,该计算机可执行指令在由计算机700执行时执行关于公开的实施例描述的各种例程和过程。
计算机700还可包括一个或多个输入/输出控制器716,用于接收和处理来自多个输入设备的输入,例如键盘、鼠标、触摸板、触摸屏、电子手写笔或其他类型的输入设备。输入/输出控制器716还可从数字照相机和/或摄像机、GPS传感器、指南针、陀螺仪或用于确定计算机700的位置和/或方向的另一种类型的传感器接收输入。输入/输出控制器716也可以连接到一个或多个无线电,以促进与计算机700的无线通信。
输入/输出控制器716还可将输出提供给显示器,例如计算机监视器、平板显示器、数字投影仪、打印机、绘图仪或其他类型的输出设备。应当理解,计算机700可以不包括图7中所示的所有组件,可以包括图7中未明确示出的其他组件,或者可以使用与图7所示的完全不同的架构。例如,计算机700可以通过利用芯片上系统(“SOC”)技术和适合用于实现智能电话、平板计算设备以及其他类型的移动计算设备的其他类型的技术来实现。
基于前述,应当理解,已经提出了用于在分布式执行环境或非分布式执行环境内执行文档注释的技术。而且,尽管已经以特定于计算机结构特征、方法学行为和计算机可读介质的语言描述了所呈现的主题,但是应当理解,所附权利要求书不一定限于所描述的特定特征、行为或介质。相反,特定的特征、动作和介质被公开为示例实现方式。
图8是示出用于数据中心675的一种配置的计算系统图,该配置实现分布式执行环境,该分布式执行环境包括在此公开的用于存储分层图形数据结构的概念和技术。图8中所示的示例数据中心675包括多个服务器计算机802A-802F(在本文中可以单数地称为“服务器计算机802”,或者复数地称为“服务器计算机802”)。如以上简要提到的,服务器计算机802可以是适当地配置用于提供本文所述的计算资源的标准塔式或机架式服务器计算机。例如,在一种实现中,服务器计算机802被配置为提供虚拟机实例806A-806E。
虚拟机实例可以是类似于物理机器的执行程序的机器(例如,计算机)的软件实现的实例。服务器802中的每一个可以被配置为执行能够实例化和管理虚拟机实例806的实例管理器808。实例管理器808可能是管理程序或另一类型的程序,例如,其被配置为使得能够在单个服务器802上执行多个虚拟机实例806。在一些实施例中,图8中所示的数据中心675可以是数据中心802F,其保留用于执行用于管理数据中心704、服务器计算机804、虚拟机实例806和分布式执行环境内的其他资源的操作的软件组件。
应当理解,尽管主要在虚拟机实例806的上下文中描述了本文公开的实施例,但是可以将其他类型的计算资源的实例与本文公开的概念和技术一起使用。例如,本文公开的技术可能与硬件资源的实例、数据存储资源的实例、数据通信资源的实例、网络资源的实例、数据库资源的实例以及计算资源的其他类型的实例一起使用。
在图8中所示的示例数据中心675中,局域网(“LAN”)804可以用于互连服务器计算机802A-802E和服务器计算机802F。LAN 804也可以连接到广域网。应当理解的是,图7和图8中所示的配置和网络拓扑已被大大简化,并且可以利用更多的计算系统、网络和联网设备来互连本文公开的各种计算系统。适当的负载平衡设备或软件模块也可能用于平衡一个或多个数据中心之间、每个数据中心675中的每个服务器计算机802A-802F之间以及由服务器计算机802A-802F提供的虚拟机实例806之间的负载。
应当理解,在图8中描述的数据中心675仅是说明性的,并且可以利用其他实施方式。另外,应当理解,这些组件提供的功能可以以软件、硬件或软件和硬件的组合来实现。其他实施方式对于本领域技术人员而言应该是显而易见的。
图9示出了表示用于响应查询以查找与目标实体相关的相关实体的示例查询响应过程900的流程图。在一些实施例中,目标实体和相关实体被建模为分层图形数据结构中的顶点。目标实体和相关实体可以是分层图形数据结构的主层上的顶点,也可以是与分层图形数据结构的较高层上的顶点相对应的逻辑顶点。
根据一些实施例,查询响应过程900可以由诸如查询服务计算机系统620之类的查询服务计算机系统的一个或多个组件执行。尽管以下讨论将查询响应过程900描述为由查询服务(例如查询服务623)执行,但是配置为响应对存储在分层图形数据结构中的数据的查询的计算机系统的其他组件可以执行过程900,而不背离本公开的精神和范围。例如,在一些实施例中,过程900的某些部分可以由数据检索服务625或某些其他逻辑处理组件来执行。
查询服务在步骤910处开始执行查询响应过程900,其中查询服务接收对目标实体的相关实体的请求。在一些实施例中,可以经由API接收请求,该API接受参考目标实体(例如,顶点标识号、用户名、用户帐号、电子邮件地址、产品标识号或可以用于标识分层图形数据结构正在建模的域内的实体的任何其他标识符)的数据作为参数。API也可以接受图形级别作为参数,图形级别可以包括数字值、字符串值或枚举值,例如,其指示分层图形数据的主级别上目标实体和相关实体之间的连接距离或者目标实体和相关实体直接连接到分层图形数据结构中的哪一层。例如,图形级别为零表示相关实体与目标实体在同一图内,而图形级别为二表示相关实体是在主层中远离目标实体的两个连接并且直接相连在分层图形数据结构的第二层。
在步骤920,查询服务访问顶点表以标识目标实体所属的一个或多个图。在第一搜索迭代上,目标实体可以是在步骤910与请求一起接收的实体。在随后的迭代中,可以基于在边线表中找到的值确定一个或多个目标实体(如下文更详细描述)。
一旦查询服务识别出目标实体(或多个目标实体)所属的一个或多个图形,则处理继续到步骤930。在步骤930,查询服务在边线表中找到具有与在步骤920中找到的图形标识符匹配的图形标识符值的数据行。对于找到的每个数据行,查询服务确定它是否应该执行其他迭代(步骤940)。在一些实施例中,查询服务基于每个找到的数据行中的边线类型值和所请求的图形级别进行该确定。例如,如果当前迭代大于所请求的图形级别(例如,当前迭代是第一次并且所请求的图形级别为零),则不需要进一步的搜索(步骤940:否)。查询服务可以分析具有与内边线相对应的边线类型的数据行,以识别与所请求的相关实体相对应的顶点。在步骤950,查询服务生成包括与当前迭代中找到的顶点有关的信息的结果集,并将该结果集返回给请求者。
另一方面,如果当前迭代小于或等于所请求的图形级别(例如,当前迭代为二并且所请求的图形级别为三),则可能需要执行进一步的搜索(步骤940:是)。在这种情况下,查询服务可以分析具有与外边线相对应的边线类型的数据行,以识别属于图的顶点,这些顶点需要在后续迭代中进一步搜索。查询服务可以将目标实体设置为这些识别的顶点,并且处理返回到步骤920以进行下一次搜索迭代。
上面描述的主题仅通过示例的方式提供,并且不应被解释为限制性的。此外,所要求保护的主题不限于解决在本公开的任何部分中指出的任何或所有缺点的实施方式。可以在不遵循示出和描述的示例实施例和应用并且不背离所公开的实施例的真实精神和范围的情况下,对所描述的主题进行各种修改和改变。
而且,如上所述,所公开的实施例可以与基于网络的分布式执行环境一起操作,其中数据库、数据存储环境或查询服务可以永久或根据需要购买、配置和利用诸如虚拟机实例、数据存储资源、网络资源和数据库资源之类的计算资源。在一些实施例中,基于网络的分布式执行环境可以提供用于在各种配置中购买和使用的计算资源。例如,分布式执行环境可能会提供可供购买和使用的虚拟机实例,这些实例具有处理器功能、主内存、磁盘存储和操作系统的许多不同配置。
上面的主题可以实现为计算机过程、计算机控制的装置、计算系统或制品,例如计算机可读存储介质。尽管在一个或多个计算设备上执行的模块、组件或过程的一般上下文中给出了所描述的主题,但是可以结合其他类型的程序模块、组件或过程来执行其他实现方式。此外,在不脱离所公开的实施例的精神和范围的情况下,由所公开的模块、组件或过程中的一个或多个执行的功能可以由其他所公开的模块、组件或过程执行。通常,程序模块包括例程、程序、组件、数据结构以及执行特定任务或实现特定抽象数据类型的其他类型的结构。
本文描述的主题的各方面可以在除所描述的那些之外的其他计算机系统配置上实践或与之结合,包括多处理器系统、基于微处理器的或可编程的消费电子产品、小型计算机、大型计算机、手持计算机、个人数字助理、电子阅读器、蜂窝电话设备、专用硬件设备、网络设备等。本文描述的实施例可以在分布式执行环境中实践,其中任务由通过通信网络链接的远程处理设备执行。在分布式执行环境中,程序模块可以位于本地和远程存储设备中。
本文描述的主题的各方面可以体现在各种操作实施方式中。
在第一实施方式中,系统包括:一个或多个处理器;计算机可读介质,其存储指令,该指令在由一个或多个处理器执行时执行以下操作:接收用于查找与目标实体相关联的相关实体的请求,该请求包括目标实体的实体标识符和图形级别;根据实体标识符设置目标标识符;基于所述图形级别执行一个或多个迭代以生成响应于所述请求的结果集,其中所述一个或多个迭代包括:访问顶点表,所述顶点表包括:顶点标识符列和第一图形标识符列;从所述顶点表中,基于对应于与所述目标标识符匹配的所述顶点标识符列中的条目的所述第一图形标识符列中的条目,确定所述目标标识符的图形标识符;访问边线表,该边线表包括:第二图形标识符列、节点标识符列和边线类型列;基于与所述图形标识符匹配的第二图形标识符列中的条目对应的节点标识符列中的条目,确定下一个标识符;基于以下确定是否执行所述一个或多个迭代的下一迭代:所述图形级别,以及对应于与所述图形标识符匹配的在所述第二图形标识符列中的条目的在所述边线类型列中的条目;基于是否执行下一个迭代的确定:将目标标识符设置为下一个标识符,和进行下一个迭代,或者将与下一个标识符对应的实体信息添加到结果集中;以及提供结果集。
第一实施方式所述的系统,其中所述系统包括分布式系统,并且所述顶点表根据所述顶点标识符列被分片。
第一实施方式所述的系统,其中所述系统包括分布式系统,并且所述边线表根据第二图形标识符列被分片。
第一实施方式所述的系统,其中边线类型列中的数据值指示节点标识符列中的对应数据值是否链接到同一图中的顶点。
第一实施方式所述的系统,其中边线类型列中的数据值指示节点标识符列中的对应数据值是否链接到同一图外的顶点。
第一实施方式所述的系统,其中所述图形级别包括数值。
第一实施方式所述的系统,其中所述图形级别包括字符串值。
第一实施方式所述的系统,还包括查询服务,所述查询服务暴露用于接收请求的应用编程接口。
在第二实施方式中,一种用于查找与目标实体有关的实体的方法包括:接收对结果集的请求,所述请求包括目标标识符和图形级别;通过将目标标识符与顶点标识符列中的第一数据条目进行匹配,从包括顶点标识符列和第一图形标识符列的顶点表中获取第一图形标识符列中的第一图形标识符;在包括第二图形识别符列、节点识别符列和边线类型列的边线表中,定位第一数据行,其中第一图形识别符与第二图形识别符列中的第一条目匹配;基于所述第一数据行的节点标识符列中的数据条目,确定第一节点标识符;基于图形级别和第一数据行的边线类型列中的条目确定是否定位第二节点标识符;基于确定是否定位第二节点标识符,通过将第一节点标识符与顶点标识符列中的第二数据条目匹配从顶点表中获取第二图形标识符;在边线表中定位第二数据行,其中第二图形识别符与第二图形识别符列中的第二条目匹配;基于第二数据行的节点标识符列中的数据条目,确定第二节点标识;和将与第二节点标识关联的信息添加到结果集中;以及提供结果集。
第二实施方式所述的方法,其中顶点表根据顶点标识符列被分片。
第二实施方式所述的方法,其中边线表根据第二图形标识符列被分片。
第二实施方式所述的方法,其中边线类型列中的数据值指示节点标识符列中的对应数据值是否链接到同一图中的顶点。
第二实施方式所述的方法,其中边线类型列中的数据值指示节点标识符列中的对应数据值是否链接到同一图外的顶点。
第二实施方式所述的方法,其中图形级别包括整数值。
第二实施方式所述的方法,其中图形级别包括字符串值。
在第三实施方式中,数据库系统包括:顶点表,其包括:顶点标识符列,和第一图形标识符列;以及边线表,其包括:第二图形标识符列、节点标识符列和边线类型列;其中第一图形标识符列中的第一数据条目与第二图形标识符列中的第二数据条目匹配,并且边线表的数据行在边线类型列中包括第三数据条目,其指示节点标识符列中的第四数据条目连接到外部顶点。
第三实施方式所述的数据库系统,还包括查询服务,所述查询服务暴露用于接收请求的应用编程接口,所述请求包括用于目标实体的实体标识符和图形级别。
第三实施方式所述的数据库系统,其中应用编程接口返回通过在顶点表和边线表中执行多次搜索而生成的结果集,其中多次搜索的数量基于图形级别。
第三实施方式所述的数据库系统,其中顶点表根据顶点标识符列被分片。
第三实施方式所述的数据库系统,其中边线表根据第二图形标识符列被分片。

Claims (20)

1.一种系统,其包括:
一个或多个处理器;
计算机可读介质,其存储指令,所述指令在由所述一个或多个处理器执行时执行包括以下的操作:
接收用于查找与目标实体相关的相关实体的请求,所述请求包括目标实体的实体标识符和图形级别;
基于所述实体标识符设置目标标识符;
基于所述图形级别执行一个或多个迭代以响应于所述请求而生成结果集,其中所述一个或多个迭代包括:
访问顶点表,所述顶点表包括:
顶点标识符列,以及
第一图形标识符列;
从所述顶点表中,基于对应于与所述目标标识符匹配的在所述顶点标识符列中的条目的在所述第一图形标识符列中的条目,确定所述目标标识符的图形标识符;
访问边线表,所述边线表包括:
第二图形标识符列,
节点标识符列,以及
边线类型列;
基于对应于与所述图形标识符匹配的在所述第二图形标识符列中的条目的在所述节点标识符列中的条目,确定下一个标识符;
基于以下确定是否执行所述一个或多个迭代的下一迭代:
所述图形级别,和
对应于与所述图形识别符匹配的在所述第二图形识别符列中的条目的在所述边线类型列中的条目;
基于是否执行所述下一迭代的所述确定:
将所述目标标识符设置为下一标识符并执行所述下一迭代,或者
向所述结果集添加与所述下一标识符对应的实体信息;和
提供所述结果集。
2.根据权利要求1所述的系统,其中所述系统包括分布式系统,并且所述顶点表根据所述顶点标识符列被分片。
3.根据权利要求1所述的系统,其中所述系统包括分布式系统,并且所述边线表根据第二图形标识符列被分片。
4.根据权利要求1所述的系统,其中所述边线类型列中的数据值指示所述节点标识符列中的对应数据值是否链接到同一图中的顶点。
5.根据权利要求1所述的系统,其中所述边线类型列中的数据值指示所述节点标识符列中的对应数据值是否链接到同一图外的顶点。
6.根据权利要求1所述的系统,其中所述图形级别包括数值。
7.根据权利要求1所述的系统,其中所述图形级别包括字符串值。
8.根据权利要求1所述的系统,还包括查询服务,所述查询服务暴露用于接收所述请求的应用编程接口。
9.一种查找与目标实体有关的实体的方法,所述方法包括:
接收对结果集的请求,所述请求包括目标标识符和图形级别;
通过将所述目标标识符与顶点标识符列中的第一数据项匹配,从包括所述顶点标识符列和第一图形标识符列的顶点表中获取第一图形标识符列中的第一图形标识符;
在包括第二图形识别符列、节点识别符列和边线类型列的边线表中,定位第一数据行,其中所述第一图形识别符与所述第二图形识别符列中的第一条目匹配;
基于所述第一数据行的所述节点标识符列中的数据条目,确定第一节点标识符;
基于所述图形级别和所述第一数据行的所述边线类型列中的条目,确定是否定位第二节点标识符;
基于是否定位第二节点标识符的所述确定,通过将第一节点标识符与所述顶点标识符列中的第二数据条目进行匹配,从所述顶点表中获取第二图形标识符;
在所述边线表中定位第二数据行,其中所述第二图形识别符与所述第二图形识别符列中的第二条目匹配;
基于所述第二数据行的所述节点标识符列中的数据条目,确定所述第二节点标识符;和
将与所述第二节点标识符相关的信息添加到所述结果集中;和
提供所述结果集。
10.根据权利要求9所述的方法,其中所述顶点表根据所述顶点标识符列被分片。
11.根据权利要求9所述的方法,其中所述边线表根据所述第二图形标识符列被分片。
12.根据权利要求9所述的方法,其中所述边线类型列中的数据值指示所述节点标识符列中的对应数据值是否链接到同一图中的顶点。
13.根据权利要求9所述的方法,其中所述边线类型列中的数据值指示所述节点标识符列中的对应数据值是否链接到同一图外的顶点。
14.根据权利要求9所述的方法,其中所述图形级别包括整数值。
15.根据权利要求9所述的方法,其中所述图形级别包括字符串值。
16.一种数据库系统,其包括:
顶点表,其包括:
顶点标识符列,以及
第一图形标识符列;和
边线表,其包括:
第二图形标识符列,
节点标识符列,以及
边线类型列;
其中:
所述第一图形标识符列中的第一数据条目与所述第二图形标识符列中的第二数据条目匹配,并且
所述边线表的数据行在所述边线类型列中包括第三数据条目,其指示所述节点标识符列中的第四数据条目连接到外部顶点。
17.根据权利要求16所述的数据库系统,还包括查询服务,所述查询服务暴露用于接收请求的应用编程接口,所述请求包括用于目标实体的实体标识符和图形级别。
18.根据权利要求17所述的数据库系统,其中所述应用编程接口返回通过在所述顶点表和所述边线表中执行多次搜索而生成的结果集,其中所述多次搜索的数量基于所述图形级别。
19.根据权利要求16所述的数据库系统,其中所述顶点表根据所述顶点标识符列被分片。
20.根据权利要求16所述的数据库系统,其中所述边线表根据所述第二图形标识符列被分片。
CN201780098051.4A 2017-12-29 2017-12-29 分层图形数据结构 Active CN111512303B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/119869 WO2019127373A1 (en) 2017-12-29 2017-12-29 Layered graph data structure

Publications (2)

Publication Number Publication Date
CN111512303A true CN111512303A (zh) 2020-08-07
CN111512303B CN111512303B (zh) 2023-10-27

Family

ID=67058963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780098051.4A Active CN111512303B (zh) 2017-12-29 2017-12-29 分层图形数据结构

Country Status (4)

Country Link
US (1) US11030247B2 (zh)
KR (1) KR102434690B1 (zh)
CN (1) CN111512303B (zh)
WO (1) WO2019127373A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114077680A (zh) * 2022-01-07 2022-02-22 支付宝(杭州)信息技术有限公司 一种图数据的存储方法、系统及装置
CN114579537A (zh) * 2021-07-08 2022-06-03 东方微银科技股份有限公司 分布式图数据库的优化方法、装置、电子设备及存储介质

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11074260B2 (en) * 2018-09-04 2021-07-27 Oracle International Corporation Space-efficient methodology for representing label information in large graph data for fast distributed graph query
US10824749B2 (en) * 2018-09-28 2020-11-03 Code 42 Software, Inc. Automatic graph-based detection of unlikely file possession
GB2582782A (en) * 2019-04-02 2020-10-07 Graphcore Ltd Graph conversion method
CN110825743B (zh) * 2019-10-31 2022-03-01 北京百度网讯科技有限公司 一种图数据库的数据导入方法、装置、电子设备和介质
US11281695B2 (en) * 2020-01-24 2022-03-22 Cisco Technology, Inc. Partitioning a temporal graph for distributed storage
US11989178B2 (en) * 2020-10-26 2024-05-21 Oracle International Corporation Efficient compilation of graph queries including complex expressions on top of sql based relational engine
US11567932B2 (en) 2020-10-26 2023-01-31 Oracle International Corporation Efficient compilation of graph queries on top of SQL based relational engine
US11507579B2 (en) 2020-10-26 2022-11-22 Oracle International Corporation Efficient compilation of graph queries involving long graph query patterns on top of SQL based relational engine
US11500868B2 (en) 2021-01-29 2022-11-15 Oracle International Corporation Efficient identification of vertices and edges for graph indexes in an RDBMS
US20220334900A1 (en) * 2021-04-14 2022-10-20 Nvidia Corporation Application programming interface to indicate increased resource usage
CN115525793A (zh) * 2021-06-24 2022-12-27 平头哥(上海)半导体技术有限公司 由计算机实现的方法、系统及存储介质
US11921785B2 (en) 2022-01-25 2024-03-05 Oracle International Corporation Inline graph algorithm execution with a relational SQL engine
US11829419B1 (en) * 2022-05-14 2023-11-28 Oracle International Corporation Managing hybrid graph data storage and retrieval for efficient graph query execution
CN115481298B (zh) * 2022-11-14 2023-03-14 阿里巴巴(中国)有限公司 图数据处理方法及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120681A1 (en) * 1999-10-04 2003-06-26 Jarg Corporation Classification of information sources using graphic structures
CN104636478A (zh) * 2015-02-13 2015-05-20 广州神马移动信息科技有限公司 信息查询方法和设备
US20170147705A1 (en) * 2015-11-19 2017-05-25 Sap Se Extensions of structured query language for database-native support of graph data
US20170169133A1 (en) * 2015-12-15 2017-06-15 Oracle International Corporation Efficient method for subgraph pattern matching

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7400676B2 (en) * 2002-05-09 2008-07-15 Neuro Solution Corp. Tone quality adjustment device designing method and designing device, tone quality adjustment device designing program, and tone quality adjustment device
CN100595764C (zh) * 2008-01-09 2010-03-24 王珊 利用连接表压缩数据图的方法和设备
CN103631839B (zh) * 2013-06-27 2017-08-29 西南科技大学 一种页面地域权重模型实现方法
US20150120697A1 (en) * 2013-10-28 2015-04-30 Scalebase Inc. System and method for analysis of a database proxy
US9547728B2 (en) * 2014-06-18 2017-01-17 Sap Ag Graph traversal operator and extensible framework inside a column store
CN104573133A (zh) 2015-02-13 2015-04-29 广州神马移动信息科技有限公司 存储数据的方法和设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030120681A1 (en) * 1999-10-04 2003-06-26 Jarg Corporation Classification of information sources using graphic structures
CN104636478A (zh) * 2015-02-13 2015-05-20 广州神马移动信息科技有限公司 信息查询方法和设备
US20170147705A1 (en) * 2015-11-19 2017-05-25 Sap Se Extensions of structured query language for database-native support of graph data
US20170169133A1 (en) * 2015-12-15 2017-06-15 Oracle International Corporation Efficient method for subgraph pattern matching

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114579537A (zh) * 2021-07-08 2022-06-03 东方微银科技股份有限公司 分布式图数据库的优化方法、装置、电子设备及存储介质
CN114077680A (zh) * 2022-01-07 2022-02-22 支付宝(杭州)信息技术有限公司 一种图数据的存储方法、系统及装置
WO2023131218A1 (zh) * 2022-01-07 2023-07-13 支付宝(杭州)信息技术有限公司 图数据的存储

Also Published As

Publication number Publication date
KR20200099602A (ko) 2020-08-24
US11030247B2 (en) 2021-06-08
US20190205480A1 (en) 2019-07-04
CN111512303B (zh) 2023-10-27
WO2019127373A1 (en) 2019-07-04
KR102434690B1 (ko) 2022-08-22

Similar Documents

Publication Publication Date Title
CN111512303B (zh) 分层图形数据结构
US9607331B2 (en) Near-duplicate filtering in search engine result page of an online shopping system
US20200409967A1 (en) Dynamic generation of data catalogs for accessing data
US10380187B2 (en) System, method, and recording medium for knowledge graph augmentation through schema extension
US10546021B2 (en) Adjacency structures for executing graph algorithms in a relational database
US10915532B2 (en) Supporting a join operation against multiple NoSQL databases
US11237749B2 (en) System and method for backup data discrimination
US9754015B2 (en) Feature rich view of an entity subgraph
US11726999B1 (en) Obtaining inferences to perform access requests at a non-relational database system
US10936640B2 (en) Intelligent visualization of unstructured data in column-oriented data tables
US20230385353A1 (en) Spatial search using key-value store
US20180018365A1 (en) Mapping database structure to software
CN112528067A (zh) 图数据库的存储方法、读取方法、装置及设备
CN110798332A (zh) 用于搜索目录访问组的方法和系统
Patel et al. Online analytical processing for business intelligence in big data
US10229186B1 (en) Data set discovery engine comprising relativistic retriever
KR102538470B1 (ko) 관계형 데이터베이스 기반 데이터 프로세싱 방법 및 이를 수행하는 장치
US9323817B2 (en) Distributed storage system with pluggable query processing
Whang et al. Building social networking services systems using the relational shared-nothing parallel DBMS
WO2024016789A1 (zh) 日志数据查询方法、装置、设备和介质
US10896193B2 (en) Cache fetching of OLAP based data using client to client relationships and data encoding
US11500933B2 (en) Techniques to generate and store graph models from structured and unstructured data in a cloud-based graph database system
US11550834B1 (en) Automated assignment of data set value via semantic matching
Huang Research of Big Data Based on NoAQL
Chuchra et al. Proposing PCSSA-using CBBT for Managing Big Data.

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
GR01 Patent grant