基于图的查询的制作方法

文档序号:14420433阅读:169来源:国知局
基于图的查询的制作方法

所描述的实施例涉及用于执行数据库的查询的技术。更具体地,所描述的实施例涉及用于执行图数据库的查询的技术。



背景技术:

与应用相关联的数据通常被组织并且被存储在数据库中。例如,在关系数据库中,数据基于关系模型被组织为行和列的一个或多个表,其中行表示数据实体的类型的实例,并且列表示相关联的值。信息可以通过使用以结构化查询语言(sql)表达的查询从关系数据库提取。

原则上,通过链接或者关联不同表中的行,复杂的关系可以被表示在关系数据库中。实际上,提取这样的复杂的关系通常需要执行查询集并且然后确定结果的交集或者结合结果。一般而言,通过利用底层关系模型的知识,该组查询可以被标识并且然后以最佳的方式执行。

然而,应用通常不知道关系数据库中的关系模型。相反,从应用视角,数据通常被视为存储器中具有相关联的指针的对象的分层。因此,许多应用以零碎的方式生成查询,这使得难以以最佳方式对关系数据库标识或者执行查询集。这可以降低当使用应用时的性能和用户体验。

各种方法已经被使用以试图解决该问题,包括使用对象-关系映射器,使得应用有效地具有关于关系数据库中的关系模型的理解或者知识。然而,生成并且维持对象-关系映射器通常是困难的,特别是对于大的实时应用。

备选地,取代关系数据库,可以使用键值存储(诸如nosql数据库)。键值存储可以包括对象或者记录以及具有记录的值的相关联的字段的集合。键值存储中的数据可以通过使用唯一地标识记录的键来存储或者检索。通过避免预定义关系模型的使用,键值存储可以允许应用将数据作为存储器中具有相关联的指针的对象来访问数据(即,以与应用的角度一致的方式)。然而,关系模型的缺少意味着可能难以优化键值存储。因此,从键值存储提取复杂的关系也可能是困难的(例如,它可以要求多个查询),这也会降低当使用应用时的性能和用户体验。

附图说明

图1是图示根据本公开的实施例的系统的框图。

图2是图示根据本公开的实施例的图1的系统中的图数据库中的图的框图。

图3是图示根据本公开的实施例的用于从图数据库请求期望信息的方法的流程图。

图4是图示根据本公开的实施例的与图1的系统中的图数据库的交互的图。

图5是图示根据本公开的实施例的用于从图数据库请求期望信息的方法的流程图。

图6是图示根据本公开的实施例的串联查询的图。

图7是图示根据本公开的实施例的用于从图数据库请求期望信息的方法的流程图。

图8是图示根据本公开的实施例的查询结果的验证的图。

图9是图示根据本公开的实施例的用于将第一查询转译为边查询的方法的流程图。

图10是图示根据本公开的实施例的与图1的系统中的图数据库的交互的图。

图11是图示根据本公开的实施例的将第一查询转译为边查询的图。

图12是图示根据本公开的实施例的用于表示存储在图数据库中的图中的复合关系的方法的流程图。

图13是图示根据本公开的实施例的与图1的系统中的图数据库的交互的图。

图14是根据本公开的实施例的包括表示复合关系的中心节点的图的图。

图15是图示根据本公开的实施例的执行图3、图5、图7、图9和图12的方法的计算机系统的框图。

表1提供了根据本公开的实施例的边查询。

表2提供了根据本公开的实施例的以javascript对象表示法(json)的数据。

表3提供了根据本公开的实施例的边查询。

表4提供了根据本公开的实施例的边查询的结果。

表5提供了根据本公开的实施例的定义复合关系的命令集。

表6提供了根据本公开的实施例的定义复合关系的命令集。

注意,相同附图标记贯穿附图指代对应的部分。而且,相同部分的多个实例由通过破折号与实例编号分离的共同前缀指定。

具体实施方式

为了从图数据库请求期望信息,系统针对图数据库执行查询(其有时被称为“边查询”)。图数据库可以存储图,该图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。而且,查询可以标识与指定图中的节点中的一个或多个的谓语相关联的第一边。响应于查询,系统接收包括图的子集的结果。特别地,图的子集通常必须包括在图的相关联的结构内表达的期望信息。

而且,查询的结果可以被使用在串联或者顺序的查询集中。特别地,系统可以针对响应于原始查询接收到的图的子集执行第二查询。该第二查询可以标识与指定节点中的一个或多个的第二谓语相关联的第二边。然后,响应于第二查询,系统可以接收包括图的第二子集的第二结果。

此外,系统可以验证响应于查询而返回的图的子集。特别地,系统可以验证图的子集包括一个或多个特定边(诸如与查询中的谓语对应的边)。更一般地,系统可以验证图的子集包括图的部分中的数据和/或相关联的结构。

为了促进从图数据库请求期望信息,系统可以将初始查询转译为可以针对图数据库执行的查询。特别地,通过使用基元,系统可以将与除图数据库之外的一种类型的数据库(诸如关系数据库)相关联的初始查询转译为查询。注意,基元可以包括表达该类型的数据库中的关系模式或者模型的、基于图中的边的规则,以及与指定与该类型的数据库中的表对应的图中的节点、边和谓语之间的关系的复合键相关联的信息

而且,为了促进数据的高效存储和提取,系统可以表示存储在图数据库中的图中的复合关系。特别地,系统(或者用户)可以基于与图中的节点中的两个或两个以上节点之间的边中的两个或两个以上边相关联的谓语中的两个或两个以上谓语来定义复合关系。然后,系统可以在图中生成中心节点,其与复合关系对应并且对图的用户隐藏,使得中心节点的标识符在图数据库的外部不可见。注意,中心节点的标识符可以通过使用两个或两个以上谓语在查询中指定,从而允许与复合关系相关联的数据被容易地标识、修改和/或提取。

以这种方式,该图存储技术可以允许与复杂的关系相关联的信息从图数据库高效地提取。特别地,在图数据库上所执行的查询的结果可以在没有连接的情况下提供期望信息,而不是执行多个查询,将中间结果存储在数据存储中并且然后连接中间结果以获得期望信息。因此,图存储技术可以减少计算机系统针对相对于其他类型的数据库(诸如关系数据库或者键值存储)的应用从图数据库提取期望信息所需要的计算时间和存储器要求。而且,在不改变应用访问图数据库中的数据的方式(即,通过将数据视为存储器中具有相关联的指针的对象的分层)的情况下,图存储技术可以改进使用图数据库的应用的性能。而且,应用的经改进的性能还可以改进当使用应用时的用户体验。

在下面的讨论中,个体或者用户可以是人(例如,社交网络的现有用户或者社交网络的新用户)。同样或者相反,图存储技术可以由任何类型的组织(诸如企业)使用,其应当被理解为包括营利公司、非营利公司、个体群组(或者组群)、独资企业、政府机构、合伙企业等。

我们现在描述系统和其使用的实施例。图1呈现了图示执行图存储技术的系统100的框图。在该系统中,电子设备110的用户可以使用至少部分地通过使用在系统100中执行的一个或多个软件产品或应用而被提供的服务。如下面进一步描述的,应用可以由系统100中的引擎执行。

而且,通过使用在电子设备110上驻留并且执行的软件应用的实例,服务可以至少部分地提供。在一些实施方式中,用户可以与网页交互,网页经由网络112由通信服务器114提供,并且网页由电子设备110上的网络浏览器绘制。例如,在电子设备110上执行的软件应用的至少部分可以是被嵌入在网页中并且在网络浏览器的虚拟环境中执行的应用工具。因此,应用工具可以经由客户端服务器架构被提供给用户。

由用户操作的软件应用可以是独立应用,或者在电子设备110上驻留并且执行的另一应用的部分(诸如由通信服务器114提供或者在电子设备110上安装并且执行的软件应用)。

通过使用系统100,各种各样的服务可以被提供。在下面的讨论中,社交网络(并且更一般地,用户网络)(诸如促进用户间的交互的专业社交网络)被用作说明性示例。而且,使用电子设备110(诸如电子设备110-1)中的一个作为说明性示例,电子设备的用户可以使用软件应用和由系统100中的引擎执行的应用中的一个或多个来与社交网络中的其他用户交互。例如,管理员引擎118可以处理用户账户和用户简档,活动引擎120可以在社交网络中随时间推移跟踪并且聚集用户行为,内容引擎122可以接收用户提供的内容(音频、视频、文本、图、多媒体内容、口头、书面和/或记录信息)并且可以向用户提供文档(诸如演示、电子表格、字处理文档、网页等),并且存储系统124可以维持可以包含多个设备的计算机可读存储器中(即,大规模存储系统)的数据结构。

注意,社交网络的用户中的每个用户可以具有相关联的用户简档,用户简档包括个人和专业的特点和经验(其有时被统称为“属性”或者“特点”)。例如,用户简档可以包括:人口统计信息(诸如年龄和性别)、地理位置、当前雇主的行业、雇佣开始日期、可选的雇佣结束日期、功能区域(例如,工程、销售、咨询)、在组织中的资历、雇主规模、教育(诸如参加的学校和获得的学位)、雇佣历史(诸如先前雇主和当前雇主)、专业发展、兴趣分段、用户附属于或者用户跟踪或者跟随的组、职位名称、附加专业属性(诸如技能)和/或推断属性(其可以包括或者基于用户行为)。而且,用户行为可以包括:登录频率、搜索频率、搜索主题、浏览某些网页、与用户相关联的位置(诸如ip地址)、呈现给用户的广告或者推荐、对于广告或者推荐的用户响应、喜欢或者由用户交换的分享、针对该喜欢或者分享的兴趣分段、和/或当使用社交网络时用户活动的历史。此外,用户间的交互可以帮助定义社交图,其中节点与用户对应并且节点之间的边与用户的交互、相互关系和/或连接对应。然而,如下面进一步描述的,存储在图数据库中的图中的节点可以对应于附加于或者不同于社交网络的成员(诸如用户、公司等)的信息。例如,节点可以对应于用户的属性、特性或者特点。

如前所述,对于用户而言存储并且检索存储系统124中的现有数据库中的数据可以是困难的,因为应用可以无法访问与特定关系数据库相关联的关系模型(这有时被称为“对象关系阻抗失配”)。此外,如果应用将关系数据库或者键值存储当作存储器中具有相关联的指针的对象的分层,则针对现有数据库执行的查询可能无法以最佳的方式执行。例如,当应用请求与复杂的关系(其可以涉及两个或两个以上的边,并且其有时被称为“复合关系”)相关联的数据时,查询集可以被执行并且然后链接或者连接结果。为了说明该问题,绘制针对博客的网页可以涉及针对三个最新博客帖子的第一查询、针对任何相关联的评论的第二查询以及针对关于评论的作者的信息的第三查询。因为查询集可以是次优的,因此获得结果可以是耗时的。该降低的性能可以进而降低当使用应用和/或社交网络时的用户体验。

为了解决这些问题,存储系统124可以包括存储图(例如,作为信息存储和检索系统或者引擎的一部分)的图数据库。注意,图可以允许针对涉及快速连接的数据(诸如针对存储系统124中的斜或者大型“扇出”的复杂关系)来获得任意准确的数据模型,该快速连接接近指向存储器位置的指针的速度(并且因此可以较好地适于由应用使用的方法)。

图2呈现了图示存储在系统100(图1)中的图数据库200中的图210的框图。图210可以包括节点212、节点212之间的边214和谓语216(其是指定或者标记边214的主键)以表示并且存储具有无索引相邻性的数据,即,使得图210中的每个节点212包括在不使用索引查找的情况下到其相邻节点的直接边。

注意,图数据库200可以是具有恒定时间导航(即,独立于大小n,而不是随着log(n)变化)的关系模型的实现。此外,图数据库200中的所有关系可以是第一类(即,相等的)。相反,在关系数据库中,表中的行可以是第一类,但是涉及连接表的关系可以是第二类。此外,图数据库200中的模式改变(诸如相当于添加或者删除关系数据库中的列)可以利用恒定时间执行(在关系数据库中,改变模式可能是有问题的,因为其通常被嵌入在相关联的应用中)。此外,对于图数据库200而言,查询的结果可以是图210的子集,其将图210的子集的结构(即,节点、边)保留完整。

图存储技术可以包括允许与应用和/或社交网络相关联的数据高效地存储并且从图数据库200检索的方法的实施例。例如,如下面参考图3和图4所描述的,图存储技术可以获得响应于查询而提供图210的子集。此外,如下面参考图5和图6所描述的,查询的结果可以被使用在串联或者顺序的查询中。特别地,取代将第一查询和第二查询独立地应用到图数据库200,第二查询可以被应用到第一查询的结果(其包括图210的子集)。以这种方式,复杂的关系可以在没有中间结果的后续连接或者链接的情况下被直接获得,从而减少获得期望信息所需要的时间和用来获得期望信息使用的系统资源。

此外,如下面参考图7和图8所描述的,针对图数据库200执行的查询的结果可以通过将结果与已知或者期望信息相比较来验证。例如,由于查询的结果包括图210的子集,因而该结果可以基于图210的预定义结构或者子集中的特定信息(诸如与查询中的那些边或者谓语匹配的边或者谓语)来验证。

在一些实施例中,如下面参考图9至图11所描述的,与另一类型的数据库相关联或者以与和图数据库200相关联的语言不同的语言(诸如javascript对象表示法或者json)的查询可以被转译为在针对图数据库200执行查询之前与图数据库200一起使用的基于边的格式。另外,如下面参考图12至图14所描述的,通过定义包括对图数据库200的用户隐藏的中心节点的标识符的图210中的复合关系,复杂的关系可以在图数据库200中表示。例如,中心节点的标识符可以在图数据库200的外部不可见。相反,中心节点的标识符(并且因此复合关系)可以基于可以被包括在查询中的两个或两个以上的边来指定或者标识。

返回参考图1,本文所描述的图存储技术可以允许在不要求应用具有在图数据库200中实现的关系模型的知识的情况下,系统100高效并且迅速地(例如,最佳地)存储并且检索与应用和社交网络相关联的数据。因此,存储图技术可以改进应用、社交网络和系统100的可用性和性能或者运行,其可以减少用户的沮丧情绪,并且可以改进用户体验。因此,图存储技术可以提高社交网络的参与度或者社交网络的使用,并且因此可以提高社交网络的提供者的收益。

注意,系统100中的信息可以被存储在一个或多个位置处(即,本地和/或远程)。此外,由于该数据可以本质上是敏感的,因而其可以被加密。例如,所存储的数据和/或经由网络112和/或116通信的数据可以被加密。

我们现在描述图存储技术的实施例。图3呈现了图示用于从图数据库请求期望信息的方法300的流程图,该方法可以由计算机系统(诸如图1中的系统100或者图15中的计算机系统1500)执行。在操作期间,计算机系统针对存储图的图数据库执行查询(操作316)。注意,图可以包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。此外,查询可以标识与指定图中的节点中的一个或多个节点的谓语相关联的第一边。然后,计算机系统响应于查询来接收结果(操作318),其中结果包括图的子集。注意,期望信息可以在图的相关联的结构内表达和/或结果可以不包括分层约束和关系约束。

此外,计算机系统可以可选地基于期望信息,生成具有主语、谓语和宾语的查询(操作310)。例如,查询可以与专业网络中的实体相关联。

备选地,计算机系统可以可选地接收另一查询(操作312),并且计算机系统可以将另一查询转换为查询(操作314)。例如,另一查询可以与具有不同的数据模型的一种类型的数据库和/或与图数据库不同的一种类型的数据库(诸如关系数据库和/或分层数据库)兼容。在一些实施例中,其他查询与json兼容。

在示例性实施例中,通过使用彼此交互的计算机系统中的一个或多个应用和存储系统(或者引擎),方法300被实现。这在图4中图示。在该方法期间,在计算机系统412中执行的应用410(其可以实现图1中的系统100的功能中的一些或全部)可以向存储子系统124提供查询414。备选地,存储子系统124可以生成查询414(例如,基于由应用410所请求的期望信息)或者可以将从应用410接收到的初始查询(其可以以不与图数据库416兼容的不同的语言)转译为查询414(其是与图数据库416兼容的边查询)。特别地,初始查询可以与不同的数据模型相关联,并且针对图数据库416不可执行,直到其被转译为查询414。

然后,存储子系统124可以针对图数据库416执行查询414以获得结果418(其可以包括存储在图数据库416中的图的子集)。接着,存储子系统124可以向应用410提供结果420(其可以与结果418或者结果418的一部分相同)。

在示例性实施例中,图数据库具有通过使用指定第一类关系的三元组(主语、谓语、宾语)来表示边的模式。使用三元组作为数据中的基本关系提供可以被人们直接理解的意义。在一些实施例中,四元组被用于采集/表示附加信息(诸如所有权或者起源)。然而,在其他实施例中,可变长度关系在图中使用。

注意,三元组中的每个字段可以具有相关联的整数“实体标识符”。该边结构可以允许连接在整数域中发生,具体而言,如由反向索引排列的整数集。此外,该域可以允许简洁表示和快速连接的实现。此外,三元组可以被映射到结构分层中,诸如通常在堆栈的上游中使用的json或者超文本标记语言(html)模板。因此,查询结果可以以json被转换。

在图数据库中,可以不存在“属性”的单独概念。相反,两个不同的边类型可以由具有共同中间节点的两个不同的三元组表示。例如,社交网络中的成员1234与成员4567之间的成员到成员连接可以被表示为edge(x,‘left_member’,‘member/1234’)、edge(x,‘left_score’,6.7)、edge(x,‘right_member’,‘member/4567’)、edge(x,‘right_score’,23.78)和edge(x,‘creation_date’,‘2014-sep-26’),其中“x”指示中间节点。注意,先前地被称为“属性”的数据可以作为三元组存在,该三元组在没有附加复杂性的情况下单独地可更新、完全索引并且可查询。与其他谓语一样,被用作属性的谓语可以按需创建。

针对图和索引的物理存储可以是结构化记录并且可以直接地被映射到存储器。节点和边可以由它们在物理记录中的偏移来标识。该记录结构可以创建自然虚拟时间,该自然虚拟时间可以用于一致性,并且可以允许针对连接性能的对物理数据和索引的无限制并行访问。

如前所述,边可以由反向索引可访问。例如,“isub(1234)”可以产生整数节点标识符集和(多个)边的记录偏移,边的主语是“1234”。具有预计算的主语-谓语和宾语-谓语交集的反向索引可以允许恒定时间的导航,其包括哈希表查找以得到边的集,接着访问阵列以跨每个边导航。

注意,反向索引可以就它们可以不包括其索引的数据中的任一个的副本的意义而言被“标准化”。因此,反向索引的模式可以包括从主语标识符映射到边标识符集(s→{i})、从谓语标识符映射到边标识符集(p→{i})、从宾语标识符映射到边标识符集(o→{i})、从主语标识符和谓语标识符映射到边标识符集(s,p→{i}),并且从宾语标识符和谓语标识符映射到边标识符集(o,p→{i})。此外,边标识符集可以进而指定三元组(i[i]→{s:s,p:p,o:o})。

此外,通过使用3层存储器分层结构,解标准化(即,将边的部分复制到索引中)可以导致较快的执行并且较小的存储器覆盖区(s→{p,o},p→{s,o},o→{p,s},s,p→{o}以及o,p→{s})。该方法可以等同于倒排列表。注意,索引可以根本不需要包括边。在一些实施例中,该方法可以进一步延伸,使得s→p→{o},p→s→{o},p→o→{s}以及o→p→{s}。因此,可以存在两个谓语索引,一个从s向前到o并且另一个相反。原则上,可以需要所有六个排列,但是实际上对于大多数查询而言,四个查询可以是足够的。

在解标准化的一些实施例中,针对社交网络中的一些或全部实体(个体成员、公司等),图被创建。在该示例中,图可以包括具有几十或者甚至成千上万的边的一阶连接的完整邻域。虽然该方法将复制大量的数据,但是可以不存在对于索引的需要。相反,边的单个顺序扫描可以存储在存储器中。

图可以比单个机器可以完整存储的图更大,因此它可以被分裂成碎片,每个碎片具有专用机器。在一些实施例中,混合分片方法被使用,其中大索引集跨许多机器被分裂以允许并行性,而同时保持小索引集一起在单个机器上,使得查询评价可以基于“局部闭合世界”做出决策。例如,这样的图分区可以在一个碎片中具有娱乐业、在另一个碎片中具有计算机程序员、在另一个碎片中具有财务等。相反地(由于其是大索引集),对于专业社交网络的有影响力的成员(诸如richardbranson)而言,数百万的追随者边可以跨越多个碎片来散布。

通过指定每个碎片独立地是一个数据库,并且利用数据库联盟做出初始顶级查询评价者工作,可以获得分片实现中的灵活性。特别地,在期望每个碎片将返回其关于结果或者答案知道的所有东西的情况下,联盟查询评价可以首先向所有碎片提供完整查询。因此,响应的范围可以从完整答案到可以在结果中发挥作用的社交网络中的成员到成员链接集。

在一些实施例中,图数据库(或者数据库)使用静态查询计划。在这些实施例中,优化器可以检查查询,并且在来自数据和索引的统计信息的帮助下,产生随后要执行的计划。当开始或者停止执行的开销大(诸如当数据从硬盘驱动器流动式接收时)并且数据可以使用统计数字容易地概述时,该静态方法可以很好地工作。

然而,由于被存储在存储器中的图数据通常不具有这些特性(其通常绝不超过来自处理器的l3高速缓存未命中,并且偏斜是普遍的),因而在一些实施例中,图数据库(或者数据库)使用动态查询优化。如在表1中所示,三跳路径“a.b.c”可以被嵌入在较大的查询q中。基于索引,可以确定具有谓语a、b和c的边的数目。假定那些分别是400、10m和200k个边。评价可以从a开始。这可以标识针对x1和x2的候选集,并且这些集可以相应地不大于边的数目(比方说400和300)。如果存在300个x2,则即使存在10m个那些边,利用b个边继续也可以是合理的。例如,如果b是“出生地”,则可以存在针对x3的至多300个候选。然而,如果b是比如“跟随”,那么x2[0]可以具有20个边,x2[1]可以具有243个边,并且x2[2]可以具有5m。在静态计划的情况下,将不存在其他选择,除了贯穿所有5m个可能性来排查。备选地,通过或者评价c或者考虑省略中的某个其他约束(该约束可能从考虑中移除x2[2]),动态评价者可以推迟处理大扇出,只要其保持比其他备选项更昂贵。

表1

在示例性实施例中,针对博客数据的、来自应用的初始查询是以json的格式。这被示出在表2中,其示出针对日期递减排序的博客帖子的json查询。如在表3中所示,初始查询可以被转译为或者被表达为与图数据库兼容的边查询(诸如通过使用datalog或prolog表达的边查询)。在该边查询中,来自初始查询的键变为谓语,诸如“text”、“comment”和“author”。此外,边查询可以包括字符串(诸如“comment”)和/或变量(诸如“p”或“c”)。例如,边查询可以包括指定日期、依日期的次序、限制为三个博客帖子等的语法。在表3中,注意“:-”左边的东西被称为或者被叫做规则。在边查询格式中,相同规则的多个定义是或(or),并且由逗号分离的东西是与(and)。

表2

表3

表4示出了用于边查询的结果,其包括图的子集中的边组,其中的每一个由主语、谓语和宾语指定。注意,一般而言,边查询是将被应用到数据库的约束集,并且输出或者结果是图满足约束的部分或者子集(在没有分层约束或者关系约束的情况下)。由于结果包括图的部分(以及其相关联的结构),在不具备图数据库中实现的关系模型的模式或者知识的情况下,结果可以被使用。例如,查询可以被应用到规则(即,查询的输出),并且相同结果可以将被获得。针对关系数据库,这样的关联查询对于sql查询通常是不可能的。

表4

由于查询的输出或者结果包括图的子集(而不失去相关联的结构),因而查询可以被串联并且应用到先前的结果而不是整个图。这被示出在图5中,图5呈现了图示用于从图数据库请求期望信息的方法500的流程图,方法500可以由计算机系统(诸如图1中的系统100或者图15中的计算机系统1500)执行。在操作期间,计算机系统针对存储图的图数据库执行查询(操作316)。注意,图可以包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。此外,查询可以标识与指定图中的节点中的一个或多个的谓语相关联的第一边。然后,计算机系统响应于查询来接收结果(操作318),其中结果包括图的子集。

然后,计算机系统针对图的子集执行第二查询(操作510),其中第二查询标识与指定节点中的一个或多个节点的第二谓语相关联的第二边。此外,计算机系统响应于第二查询来接收第二结果(操作512),其中第二结果包括图的第二子集。注意,在图的第一子集上执行第二查询可以消除对图数据库执行第二查询的需要。

方法500中的操作可以被重复。例如,计算机系统可以在图的子集上执行一个或多个附加查询和/或可以在图的第二子集上执行第三查询。

注意,操作316中的查询可以由计算机系统生成,或者可以被接收和/或转译,如先前参考图3所描述的。

返回参考图4,在提供结果420之前,计算机系统412可以在结果418上执行一个或多个查询422以获得结果420。

通过将一个查询的结果输送到另一查询,一组相关查询可以通过定义对于该组共同的子查询来高效地(即,计算上更快地)执行。在图6中图示了串联查询。注意,因为在关系数据库中实施或者实现的关系模型未被包括在用于这些查询的结果中,所以这样的串联查询关于针对关系数据库执行的查询通常是不可能的。(换句话说,(例如,以sql)写一个返回多个表的单个查询通常是不可能的)。相反,由于边查询的结果是图的子集并且包括相关联的结构,因而该结果可以被输送到后续查询,相对于从关系数据库提取该期望信息需要的时间,这可以减少从图数据库提取期望信息所需要的时间。

在示例性实施例中,边查询集被用于标识图数据库中的电影。虽然一个表的简单查找(诸如查找表中的一个行)可以使用关系数据库的sql查询迅速地执行(诸如在2μs内),但是当对于sql查询集,复杂的关系(诸如具有特定演员的奥斯卡获奖电影)中的连接数目增加时,获得期望结果或者信息所需要的时间可以迅速地增长。

相反,通过使用图数据库的边查询集获得期望信息所需要的时间可以独立于边查询的数目(其与连接的数目对应)。例如,通过使用一个或多个边查询获得期望信息所需要的时间可以是常量(诸如20μs)。因此,如果复杂的关系涉及sql查询集的结果的许多连接(诸如几十到几百个连接),图数据库的边查询集可以具有优越性能(即,减少获得期望信息所需要的时间)。

此外,由于边查询的结果是图的子集,因而结果可以被验证以确认边查询已正确地执行。这被示出在图7中,图7呈现了图示用于从图数据库请求期望信息的方法700的流程图,方法700可以由计算机系统(诸如图1中的系统100或者图15中的计算机系统1500)执行。在操作期间,计算机系统针对存储图的图数据库执行查询(操作316)。注意,图可以包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。此外,查询可以标识与指定图中的节点中的一个或多个的谓语相关联的第一边。然后,计算机系统响应于查询来接收结果(操作318),其中结果包括图的子集。

接着,计算机系统验证图的子集(操作710)。例如,当图的子集匹配图的对应部分时,图的子集被验证。特别地,验证(操作710)可以涉及将图的子集与图的预定义子集相比较的计算机系统。备选地或者附加地,当图的子集包括边的期望子集(诸如与特定谓语相关联的一个或多个边或者节点)时,图的子集可以被验证。

在一些实施例中,验证(操作710)涉及计算机系统:针对图数据库执行另一查询;响应于查询来接收另一结果,其中另一结果包括图的另一子集;并且将图的另一子集与图的子集相比较。例如,当在图的子集的重叠部分与图的另一子集之间存在匹配时,图的子集被验证。备选地或者附加地,验证(操作710)包含计算机系统:针对图数据库执行另一查询;响应于查询来接收另一结果,其中结果包括与边的子集对应(诸如与特定谓语相关联的一个或多个边或者节点)的信息;并且将信息与边的子集相比较。

注意,操作316中的查询可以由计算机系统生成,或者可以被接收和/或转译,如先前参考图3所描述的。

返回参考图4,计算机系统412可以验证424结果418或者420。例如,基于查询414中的谓语,计算机系统412可以验证一个或多个期望边或者节点被包括在结果418或者结果420中。在图8中还图示了验证。特别地,针对图数据库810的查询812的结果814可以与预定义或者预定结果816相比较。因此,如果查询812包括用于公司的谓语,则结果814应当包括该公司的至少一个员工,并且这可以通过将结果814与预定结果816中的公司的员工的列表相比较来验证。更一般地,如果查询812包括谓语,则验证结果814可以涉及寻找结果816中的某些边的存在。

如先前所讨论的,图存储技术可以涉及转译。这被示出在图9中,图9呈现了图示用于将第一查询转译为边查询的方法900的流程图,方法900可以由计算机系统(诸如图1中的系统100或者图15中的计算机系统1500)执行。在操作期间,计算机系统接收第一查询(操作910),第一查询与第一类型的数据库(例如,关系数据库、分层数据库或者另一类型的数据库(诸如与sql兼容的数据库))并且更一般地,具有另一或者不同的数据模型的数据库相关联。然后,计算机系统通过使用基元将第一查询转译为与存储图的图数据库相关联的边查询(操作914)。

注意,第一类型的数据库具有与图数据库不同的数据模型和/或与图数据库不同(例如,第一类型的数据库可以使用sql),并且图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。此外,基元包括:表达第一类型的数据库中的关系模式的、基于图中的边的规则,以及与指定与第一类型的数据库中的表对应的图中的节点、边和谓语之间的关系的复合键相关联的信息。关于通过使用基元将查询转译为与图数据库兼容的形式,下面提供了进一步的讨论。

接着,计算机系统针对图数据库执行边查询(操作916),其中边查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边。此外,计算机系统响应于边查询来接收结果(操作918),其中结果包括图的子集。

例如,边查询可以与数据记录兼容。更一般地,边查询可以与查询语言兼容,查询语言是声明式的使得其在未表达相关联的控制流的情况下表达计算逻辑,并且查询语言是完整的使得任意计算由查询语言表示。

在一些实施例中,计算机系统可选地确定基元(操作912)。

在示例性实施例中,通过使用彼此交互的计算机系统中的一个或多个应用和存储系统(或者引擎),方法900被实现。这在图10中图示。在该方法期间,在计算机系统412中执行的应用410可以向存储子系统124提供初始查询1010。该初始查询可以以不与图数据库416兼容的不同的语言。然后,存储子系统124(或者向存储子系统124馈送边或者图的评价者层)可以通过使用基元1012将初始查询1010转译为边查询1014(其与图数据库416兼容)。注意,基元1012可以被预定或者可以可选地由计算机系统412确定。

然后,存储子系统124可以针对图数据库416执行边查询1014以获得结果418(其可以包括存储在图数据库416中的图的子集)。接着,存储子系统124可以向应用410提供结果420(其可以与结果418或者结果418的一部分相同)。

在示例性实施例中,边查询从初始查询被转译为通用声明型查询语言(即,该语言在未指定应当如何实现的情况下向计算机系统指示期望的结果,使得其可以被优化)。该查询语言可以基于数据记录或者与其兼容。此外,查询语言可以在可表达性方面不亚于sql。换句话说,查询语言可以是完整的,使得任意计算可以被表示或者表达。查询语言可以具有以下特征,诸如:转换、组成和示例查询。

图转换可以是取得复杂的图并且产生更简单的图的任意功能。一般而言,管理数据的人与出于某种目的使用数据的人之间存在自然的紧张关系。应用开发者通常想要特定粗粒度的信息(例如,成员的当前雇主),但是易于管理通常要求仅不会改变的事实被记录。如果当前雇主被直接存储,则可以创建开放式管理责任(即,检查成员的雇佣状况)。虽然管理是更可行的,但是其也是更复杂的雇佣关系,涉及员工、雇主、开始日期和结束日期、升职等,其不随时间改变。其可以产生的复杂图可以然后被转换为用户期望的更简单的结构。图转换的通常示例是距离戳记。特别地,两跳关系可以被转换为单个“戳记”边,其宾语是序数词“2”。

图组成允许用户通过参考更简单的一些查询来建立复杂的查询。考虑到潜在的图数据通常丰富并且复杂,可以存在封装查询以重新使用的需要。例如,针对“databaseindustryveterans”(诸如具有数据库工业中的十年经验的人,具有至少一次升职以及来自数据库工业中的其他人的、针对数据库相关的技能的认可)的查询可以在诸如以下的查询中可重复使用:‘mostfrequentgraduateschoolsofdatabaseindustryveterans,’‘conferencesfrequentedby…,’和‘bayareastart-upsattracting…inthepastyear’。

在示例查询中,普遍的简单关联查询可以通过构建人们希望找到更多的数据的种类的示例来容易地表达。注意,在示例查询中,可以使用谓语名称的分层结构。而且,示例查询可以提供用于与关系数据库的高级交互的机制。

图存储技术中的查询语言可以允许计算机系统(利用不同的相关联的数据库)支持许多不同的初始查询,而不必针对每个初始查询语言来执行优化。而且,图存储技术可以涉及通过使用基元来表达初始查询的简单核(或者基于基元的)语言查询编译和评价编译器的使用。基元可以包括表达或者施加第一类型的数据库中的关系模式的、基于图中的边的规则。例如,基于成员到成员关系a到b和b到c的规则可以联系a、b和c。此外,基元可以包括复合键和与复合键相关联的信息,复合键指定与第一类型的数据库中的表对应的图中的节点、边和谓语之间的关系。(然而,复合键的使用可以取决于实施方式。更一般地,用户通过使用语言基元来定义复合关系。然后,在实现层处,数据库可以生成复合键以标识复合关系。因此,系统的用户可以不知道复合键的存在。)特别地,表可以包括与谓语对应的属性。例如,复合键可以定义具有到成员的边的节点与成员属性(诸如开始日期和结束日期、指示成员如何被连接的得分等)之间的一个或多个关系。

初始或者第一查询(诸如sql查询)可以通过使用基元被转换为边查询(诸如数据记录-兼容查询)。例如,sql查询可以与一个或多个表相关联,一个或多个表具有列并且可以被分解为参考表(例如,列可以是在规则头部中的变量)联合构成(例如,选择*x、y、z,u选择*a、b、c)。然后,sql查询可以依据一个或多个规则被明确地表达或者利用一个或多个复合键(其可以基于图数据库中的一个或多个共同节点)被隐含地表达。该过程被示出在图11中,图11呈现了图示将第一查询转译为边查询的图。

例如,在sql中表可以被定义为:m2m,列a和b。同等地,在图中,该关系可以被表达为:m2m(a,b):-edge(a,‘lin’,h),edge(b,‘rin’,h)。然后,sql从m2m、mfc(具有列a、b和c)选择a、b,其中a=‘sri’,m2m.a=mfc.c变为m2m(a,b),equal(a,‘sri’),mfc(a2,b2,c2),equal(a,c2)。在另一示例中,sql查询从m2m联合选择a、b,从mfc选择a、b可以利用规则集和r(‘sri’,_)?被表达为query(a,b):-m2m(a,b),query(a,b):-mfc(a,b),query(_,_)?。

注意,转译还可以相反地运行,从边查询到以不同的格式(诸如sql)的查询。例如,初始边查询可以是createviewm2m(a,b),从边e1、边e2选择e1.s、e2.s,其中e1.o=e2.o,e1.p=‘lin’并且e2.p=‘rin’。

在一些实施例中,图存储技术被用于定义复合关系。这在图12中示出,图12呈现了图示用于表示存储在图数据库中的图中的复合关系的方法1200的流程图,方法1200可以由计算机系统(诸如图1中的系统100或者图15中的计算机系统1500)执行。在操作期间,计算机系统基于与图中的两个或两个以上节点之间的两个或两个以上边相关联的两个或两个以上谓语来定义复合关系(操作1210)。(备选地或者附加地,用户可以经由模式定义复合关系)。然后,计算机系统可以生成或者接收具有包括两个或两个以上谓语的边的查询(操作1212)。此外,计算机系统可以针对图数据库执行查询(操作1214)。

此外,计算机系统在图中生成对应于复合关系的中心节点(操作1216)。中心的标识可以由伴随的复合边来确定。这些边可以对用户可见。内部地,计算机系统可以或者可以不使用该实体的不同的编码或者针对该实体的标识符。注意,中心节点的标识符可以对图的用户隐藏,使得中心节点的标识符可以在图数据库外部不可见。

此外,计算机系统可以可选地执行一个或多个附加操作(操作1218)。例如,计算机系统可以基于两个或两个以上谓语,向中心节点指派局部标识符。此外,如下面参考图14进一步描述的,计算机系统可以添加与中心节点和包括局部标识符的节点之间的标识符谓语相关联的边,和/或计算机系统可以添加与中心节点和包括两个或两个以上节点中的一个节点的属性的节点之间的属性谓语相关联的边。

(注意,边仅在其在用户查询中被指定的情况下可以被添加。例如,假定如由用户先前地指定的,谓语lm和rm形成复合关系。然后--edge(h,“lm”,“m1”)、edge(h,“rm”,“m2”)、edge(h,“score”,“123”)可以创建与123的得分的、成员到成员的连接。现在,如果晚些时候用户发布以下写入--edge(h,“lm”,“m1”),edge(h,“rm”,“m2”),edge(h,“score”,“456”),则通过使用“lm”与“rm”之间的复合关系,计算机系统可以将中心节点标识为在第一写入中创建的中心节点,并且可以将新“score”属性添加到该中心节点。

取决于属性谓语如何定义或者配置,属性谓语可以被更新或者替换。例如,当属性谓语的基数大于一时,计算机系统可以添加与中心节点和包括两个或两个以上节点中的一个节点的更新属性的另一节点之间的属性谓语相关联的另一边。备选地,当属性谓语的基数等于一时,计算机系统可以利用两个或两个以上节点中的一个节点的更新属性来替换属性。

在示例性实施例中,使用彼此交互的计算机系统中的一个或多个应用和存储系统(或者引擎),方法1200被实现。这在图13中图示。在该方法期间,存储子系统124可以基于两个或两个以上谓语来定义图数据库416中的复合关系1310。

然后,在计算机系统412中执行的应用410可以向存储子系统124提供查询1312。备选地,存储子系统124可以生成查询1312(例如,基于应用410所请求的期望信息)或者可以将从应用410接收的初始查询(其可以以不与图数据库416兼容的不同的语言)转译为查询1312(其是与图数据库416兼容的边查询)。

然后,存储子系统124可以针对图数据库416执行查询1312以获得结果418(其可以包括存储在图数据库416中的图的子集)。而且,存储子系统124可以在存储在图数据库416中的图中生成与复合关系1310对应并且对图的用户隐藏的中心节点1314。此外,存储子系统124可以向应用410提供结果420(其可以与结果418或者结果418的一部分相同)。

在示例性实施例中,图存储技术被用于通过写入图数据库来创建复合关系。该复合关系可以表示包括多于一个边的关系,诸如成员到成员连接。例如,可以存在左成员边、中心节点(其将子图保持在一起)的匿名或者隐藏标识符和右成员边。因此,复合关系可以指定关系组(而不是一个关系)。换句话说,复合关系可以指定一个关系或多个关系。

图14呈现了包括表示复合关系1400的中心节点1410的图的图。中心节点1410可以指定唯一地定义复合关系1400的边。

如图14所示,复合关系1400可以基于指定从主语到宾语的边的预定义谓语(模式)来指定公司-成员关系。例如,预定义谓语可以包括:公司1412谓语、雇佣1414谓语、开始日期1416谓语和可选的结束日期1422谓语。另外,复合关系1400可以包括属性或者特点,诸如位置1418属性和职位1420属性。注意,在该示例中,“位置”和“职位”可以不是复合关系的一部分,因为它们不向关系给出标识。一般而言,属性或者特点可以改变。因此,如下面所描述的,取决于基数,位置1420谓语可以被替换或者复合关系1400可以利用从中心节点1410到可选位置1424属性的边更新。以这种方式,当员工的职位改变时,复合关系1400可以被修订,而不是复制图。

当写操作指定与中心节点1410相关联的多个谓语时,临时标识符可以被生成,而不是针对中心节点1410定义全局标识符(其不可以很好地缩放并且可以在写入到图之前要求多个读查询)。例如,如表5所示,当复合关系可以由命令集定义时。备选地,如果用户指定模式中的复合关系,则模式信息和进来的写入可以被用于生成针对节点h的复合标识符。这在表6中示出,并且计算机系统可以使用这些写入生成复合标识符作为{company:companya,startdate:0/2/11/09,employee:karen},即,基于三个谓语。

表5

表6

由于复合节点h被隐藏(并且由复合标识符标识),因而在用户如何从图数据库查询信息方面可以不存在改变(即,查询可以包括表6中所示的前三个边)。因此,复合关系可以提供方便的方式以在用户不需要知道复合关系和/或中心节点的标识符的情况下表示图数据库中的关系。

在一些实施例中,附加于通过使用多个谓语来定义复合关系,存在元数据。该元数据可以包括主语元数据(诸如节点的类型和基数)和/或宾语元数据(诸如节点的类型和基数)。例如,在复合关系中,个人可以仅由一个公司雇佣,因此公司的基数可以是一。然而,多个个人可以在相同开始日期开始工作,因此开始日期的基数可以是无限的。

在一些实施例中,图数据库包括不同的类型的复合关系。边复合关系可以是可变的,使得边复合关系中的边可以被添加或者移除,并且更一般地,边复合关系可以被删除。(然而,指定标识符的边不可以被添加或者移除)。文字复合关系可以是不变的。文字复合关系的内容可以不被改变,并且文字复合关系仅在没有其他实体吸收由文字复合关系所指定的关系的情况下可以被删除。例如,公司驻扎的建筑物的位置(纬度和经度)可以被包括在文字复合关系中。该文字复合关系仅在另一公司驻扎在该建筑物中的情况下可以被删除。

在方法300(图3和图4)、500(图5)、700(图7)、900(图9和图10)和1200(图12和图13)的一些实施例中,可以存在额外或者更少操作。此外,操作的顺序可以改变,和/或两个或两个以上操作可以被组合为单个操作。

我们现在描述用于执行图存储技术和其使用的计算机系统的实施例。图15呈现了图示执行方法300(图3和图4)、500(图5)、700(图7)、900(图9和图10)和1200(图12和图13)的计算机系统1500(诸如图1中的系统100)的框图。计算机系统1500包括一个或多个处理单元或者处理器1510(其有时被称为“处理模块”)、通信接口1512、用户接口1514、存储器1514和将这些部件耦合在一起的一个或多个信号线1522。注意,一个或多个处理器1510可以支持并行处理和/或多线程操作,通信接口1512可以具有持久通信连接,并且一个或多个信号线1522可以构成通信总线。而且,用户接口1515可以包括:显示器1516(诸如触摸屏)、键盘1518和/或指示器1520(诸如鼠标)。

计算机系统1500中的存储器1524可以包括易失性存储器和/或非易失性存储器。更具体地,存储器1524可以包括:rom、ram、eprom、eeprom、闪速存储器、一个或多个智能卡、一个或多个磁盘存储设备和/或一个或多个光学存储设备。存储器1524可以存储操作系统1526,操作系统1526包括用于处理针对执行硬件相关的任务的各种基础系统服务的进程(或者指令集)。存储器1524还可以将进程(或者指令集)存储在通信模块1528中。这些通信进程可以用于与一个或多个计算机和/或服务器通信,包括相对于计算机系统1500远程定位的计算机和/或服务器。

存储器1524还可以包括多个程序模块,包括:社交网络模块1530、管理员模块1532、活动模块1534、存储模块1536和/或加密模块1538。注意,这些程序模块(或者指令集)中的一个或多个可以构成计算机程序机制(即,软件)。

在计算机系统1500的操作期间,由社交网络模块1530促进的社交网络的用户可以通过使用管理员模块1532设置并且管理账户。此外,社交网络模块1530可以经由通信模块1528和通信接口1512促进用户间的交互。这些交互可以由活动模块1534跟踪(诸如当用户察看在通过使用社交网络模块1530实现的社交网络中提供的文档(以及,更一般地,内容)时,察看用户的行为)。

存储模块1536可以将与社交网络相关联的数据存储在图数据库1540中,图数据库1540存储具有节点1544、边1546和谓语1548的图1542。当存储模块1536从应用1552接收查询1554时,存储模块1536可以针对图数据库1540执行查询1554以获得结果1556,结果1556可以包括图1542的子集。而且,存储模块1536可以针对结果1556而不是图1542执行后续查询1558。注意,存储模块1536可以通过将结果1556的至少部分与期望或者预定的(或者预定义的)结果1560(诸如基于查询1554中的谓语1548中的一个或多个谓语的边1546中的一个或多个边的呈现)相比较来验证结果1556。

在一些实施例中,通过在针对图数据库1540执行查询1554之前使用一个或多个规则或者一个或多个复合键,存储模块1536将从应用1552接收到的初始查询1562转译为查询1554。例如,初始查询1562可以与除图数据库1540之外的另一类型的数据库相关联,并且查询1554可以是边查询。

此外,通过使用边1546中的两个或两个以上的边来定义中心节点1550的标识符,存储模块1536可以表示图数据库15340中的复合关系1564。

由于计算机系统1500中的信息可以本质上是敏感的,因而在一些实施例中,存储在存储器1524中的数据中的至少一些数据和/或通过使用通信模块1528来通信的数据中的至少一些数据通过使用加密模块1538加密。

存储器1524中的各种模块中的指令可以以高级程序语言、面向对象编程语言和/或汇编或者机器语言来实现。注意,编程语言可以被编译或者解译,例如,可配置或者被配置为由一个或多个处理器执行。

虽然计算机系统1500被图示为具有若干分立项,但是图15旨在是各种特征的功能描述,各种特征可以存在于计算机系统1500中而不是本文所描述的实施例的结构示意图中。在实践中,并且如由本领域的普通技术人员所认识到的,计算机系统1500的功能可以分布在大量的服务器或者计算机上,其中各个服务器组或者计算机组执行功能的特定子集。在一些实施例中,计算机系统1500的功能中的一些或全部功能被实现在一个或多个专用集成电路(asic)和/或一个或多个数字信号处理器(dsp)中。

计算机系统(诸如计算机系统1500)以及系统100(图1)中的电子设备、计算机和服务器可以包括能够操纵计算机可读数据或者通过网络在两个或两个以上计算系统之间传递这样的数据的各种设备中的一个,包括:个人计算机、膝上型计算机、平板计算机、大型计算机、便携式电子设备(诸如蜂窝电话或者pda)、服务器和/或客户端计算机(在客户端-服务器架构中)。而且,网络112(图1)可以包括:因特网、万维网(www)、内联网、蜂窝电话网络、lan、wan、man或网络的组合,或者使能实现计算系统之间的通信的其他技术。

系统100(图1)和/或计算机系统1500可以包括更少的部件或者额外的部件。此外,两个或两个以上部件可以被组合为单个部件,和/或一个或多个部件的位置可以被改变。在一些实施例中,系统100(图1)和/或计算机系统1500的功能可以更多地以硬件并且更少地以软件来实现或者更少地以硬件并且更多地以软件来实现,如本领域中已知的。

虽然社交网络已经被用作前述实施例中的说明,但是更一般地,图存储技术可以用于存储和检索或者查询与各种各样的应用、服务或者系统相关联的数据。而且,图存储技术可以在以下应用中使用,在该应用中不同实体(诸如人、组织等)间的通信或者交互可以由社交图描述。注意,人可以松散地附属于网站(诸如网站的观众或者用户),并且因此可以包括形式上不关联的人(与具有用户账户的社交网络的用户相反)。因此,社交图中的连接可以比通过由个体对请求的明确接受被更不严格地定义,以彼此关联或者建立连接(诸如通过使用通信协议先前已经彼此通信(或没有)的人,或者先前已经察看彼此的主页(或没有)的人等)。以这种方式,图存储技术可以被用于扩展更松散地定义的人群中的相关或者潜在地感兴趣人之间的交互和增值服务的质量。

在前述描述中,我们参考“一些实施例”。注意,“一些实施例”描述了所有可能实施例的子集,但是并不总是指定实施例的相同子集。

前述描述旨在使得本领域的技术人员能够制造并且使用本公开,并且在特定应用和其要求的上下文中被提供。而且,本公开的实施例的前述描述仅出于图示和描述的目的被呈现。他们不旨在是穷尽的或者将本公开限于所公开的形式。因此,许多修改和变型对于本领域的技术人员而言将是明显的,并且在不脱离本公开的精神和范围的情况下,本文中定义的一般原理可以应用于其他实施例和应用。此外,前述实施例的讨论不旨在限制本公开。因此,本公开不旨在限于所示的实施例,而是为了符合与本文所公开的原理和特征一致的最宽范围。

在以下已编号的条款中公开了各种实施例。这些条款在四组(a、b、c和d)中呈现,然而,技术人员将理解,来自不同实施例组的特征可以根据任何给定实现的需要和情况来适当地组合。

a1.一种用于从图数据库请求期望信息的计算机系统实现的方法,方法包括:

针对存储图的图数据库执行第一查询,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

第一查询标识第一边,第一边与指定图中的节点中的一个或多个节点的第一谓语相关联;

响应于第一查询来接收第一结果,其中第一结果包括图的第一子集;

针对图的第一子集执行第二查询,其中第二查询标识第二边,第二边与指定节点中的一个或多个节点的第二谓语相关联;以及

响应于第二查询来接收第二结果,其中第二结果包括图的第二子集。

a2.根据条款a1的方法,其中方法还包括在图的第一子集上执行一个或多个附加查询。

a3.根据任何前述条款的方法,其中方法还包括对图的第二子集执行第三查询。

a4.根据任何前述条款的方法,其中在图的第一子集上执行第二查询消除在图数据库上执行第二查询的需要。

a5.根据条款a1的方法,其中方法还包括基于期望信息来生成第一查询。

a6.根据条款a1的方法,其中方法还包括:

接收与和图数据库不同的数据库的类型兼容的另一查询;

将另一查询转换为查询。

a7.根据条款a6的方法,其中数据库的类型包括以下之一:关系数据库和分层数据库

a8.根据条款a1的方法,其中方法还包括:

接收与javascript对象表示法兼容的另一查询;以及

将另一查询转换为查询。

a9.根据任何前述条款的方法,其中图的第一子集包括在图的相关联的结构内表达的期望信息。

a10.一种装置,包括:

一个或多个处理器;

存储器;以及

程序模块,其中程序模块被存储在存储器中,并且在装置的操作期间,程序模块由一个或多个处理器执行以从图数据库请求期望信息,程序模块包括:

用于针对存储图的图数据库执行第一查询的指令,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

第一查询标识第一边,第一边与指定图中的节点中的一个或多个节点的第一谓语相关联;

用于响应于第一查询来接收第一结果的指令,其中第一结果包括图的第一子集;

用于针对图的第一子集执行第二查询的指令,其中第二查询标识第二边,第二边与指定节点中的一个或多个节点的第二谓语相关联;以及

用于响应于第二查询来接收第二结果的指令,其中第二结果包括图的第二子集。

a11.根据条款a10的装置,其中程序模块还包括用于在图的第一子集上执行一个或多个附加查询的指令。

a12.根据条款a10的装置,其中程序模块还包括用于对图的第二子集执行第三查询的指令。

a13.根据条款a10至a12中的任一项的装置,其中在图的第一子集上执行第二查询消除在图数据库上执行第二查询的需要。

a14.根据条款a10的装置,其中程序模块还包括用于基于期望信息来生成第一查询的指令。

a15.根据条款a10的装置,其中程序模块还包括用于以下的指令:

接收与和图数据库不同的数据库的类型兼容的另一查询;

将另一查询转换为查询。

a16.根据条款a15的装置,其中数据库的类型包括以下之一:关系数据库和分层数据库

a17.根据条款a10的装置,其中程序模块还包括用于以下的指令:

接收与javascript对象表示法兼容的另一查询;以及

将另一查询转换为查询。

a18.根据条款a10至a17中的任一项的装置,其中图的第一子集包括利用图的相关联的结构表达的期望信息。

a19.一种系统,包括:

处理模块,其包括存储指令的非暂时性计算机可读介质,指令当被执行时,使得系统:

针对存储图的图数据库执行第一查询,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

第一查询标识第一边,第一边与指定图中的节点中的一个或多个节点的第一谓语相关联;

响应于第一查询来接收第一结果,其中第一结果包括图的第一子集;

针对图的第一子集执行第二查询,其中第二查询标识第二边,第二边与指定节点中的一个或多个节点的第二谓语相关联;以及响应于第二查询来接收第二结果,其中第二结果包括图的第二子集。

a20.根据条款a19的系统,其中非暂时性计算机可读介质还存储指令,指令当被执行时,使得系统:

在图的第一子集上执行一个或多个附加查询。

b1.一种用于从图数据库请求期望信息的计算机系统实现的方法,方法包括:

针对存储图的图数据库执行查询,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;

响应于查询来接收结果,其中结果包括图的子集;以及

验证图的子集。

b2.根据条款b1的方法,其中当图的子集匹配图的对应的部分时,图的子集被验证。

b3.根据条款b1或b2的方法,其中验证涉及将图的子集与图的预定义的子集相比较。

b4.根据条款b1至b3中的任一项的方法,其中当图的子集包括边的期望的子集时,图的子集被验证。

b5.根据条款b1至b4中的任一项的方法,其中验证包括:

针对图数据库执行另一查询;

响应于查询来接收另一结果,其中另一结果包括图的另一子集;以及

将图的另一结果与图的子集相比较。

b6.根据条款b5的方法,其中当在图的子集的重叠部分与图的另一子集之间存在匹配时,图的子集被验证。

b7.根据条款b1的方法,其中验证涉及:

针对图数据库执行另一查询;

响应于查询来接收另一结果,其中结果包括与边的子集对应的信息;以及

将信息和边的子集相比较。

b8.根据条款b1的方法,其中方法还包括基于期望信息来生成查询。

b9.根据条款b1的方法,其中方法还包括:

接收与和图数据库不同的数据库的类型兼容的另一查询;

将另一查询转换为查询。

b10.根据条款b1的方法,其中方法还包括:

接收与javascript对象表示法兼容的另一查询;以及

将另一查询转换为查询。

b11.一种装置,包括:

一个或多个处理器;

存储器;以及

程序模块,其中程序模块被存储在存储器中,并且在装置的操作期间,程序模块由一个或多个处理器执行以从图数据库请求期望信息,程序模块包括:

用于针对存储图的图数据库执行查询的指令,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;

用于响应于查询来接收结果的指令,其中结果包括图的子集;以及

用于验证图的子集的指令。

b12.根据条款b11的装置,其中当图的子集匹配图的对应的部分时,图的子集被验证。

b13.根据条款b11至b12中的任一项的装置,其中用于验证的指令包括用于将图的子集与图的预定义的子集相比较的指令。

b14.根据条款b11至b13中的任一项的装置,其中当图的子集包括边的期望的子集时,图的子集被验证。

b15.根据条款b11的装置,其中用于验证的指令包括用于以下的指令:

针对图数据库执行另一查询;

响应于查询来接收另一结果,其中另一结果包括图的另一子集;以及

将图的另一子集与图的子集相比较。

b16.根据条款b15的装置,其中当在图的子集的重叠部分与图的另一子集之间存在匹配时,图的子集被验证。

b17.根据条款b11的装置,其中用于验证的指令包括用于以下的指令:

针对图数据库执行另一查询;

响应于查询来接收另一结果,其中结果包括对应于边的子集的信息;以及

将信息和边的子集相比较。

b18.根据条款b11的装置,其中程序模块还包括用于基于期望信息来生成查询的指令。

b19.根据条款b11的装置,其中程序模块还包括用于以下的指令:

接收与和图数据库不同的数据库的类型兼容的另一查询;

将另一查询转换为查询。

b20.一种系统,包括:

处理模块,其包括存储指令的非暂时性计算机可读介质,指令当被执行时,使得系统:

针对存储图的图数据库执行查询,其中:

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;

响应于查询来接收结果,其中结果包括图的子集;以及

验证图的子集。

c1.一种用于将第一查询转译为边查询的计算机系统实现的方法,方法包括:

接收与第一类型的数据库相关联的第一查询;

通过使用基元将第一查询转译为与存储图的图数据库相关联的边查询,其中:

第一类型的数据库具有与图数据库不同的数据模型;

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

基元包括:表达第一类型的数据库中的关系模式的、基于图中的边的规则,以及与指定与第一类型的数据库中的表对应的图中的节点、边和谓语之间的关系的复合键相关联的信息;

针对图数据库执行边查询,其中边查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;以及

响应于边查询来接收结果,其中结果包括图的子集。

c2.根据条款c1的方法,其中第一类型的数据库包括以下之一:关系数据库和分层数据库

c3.根据条款c1的方法,其中第一类型的数据库与关系数据库不同。

c4.根据条款c1至c3中的任一项的方法,其中第一查询与结构化查询语言兼容。

c5.根据条款c1至c4中的任一项的方法,其中边查询与数据记录兼容。

c6.根据条款c1的方法,其中边查询与声明式查询语言兼容,查询语言是声明式的使得其在未表达相关联的控制流的情况下表达计算逻辑,并且查询语言是完整的使得任意计算由查询语言表示。

c7.根据条款c1的方法,其中方法还包括确定基元。

c8.一种装置,包括:

一个或多个处理器;

存储器;以及

程序模块,其中程序模块被存储在存储器中,并且在装置的操作期间,程序模块由一个或多个处理器执行以将第一查询转译为边查询,程序模块包括:

用于接收与第一类型的数据库相关联的第一查询的指令;

用于通过使用基元将第一查询转译为与存储图的图数据库相关联的边查询的指令,其中:

第一类型的数据库具有与图数据库不同的数据模型;

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

基元包括:表达第一类型的数据库中的关系模式的、基于图中的边的规则,以及与指定与第一类型的数据库中的表对应的图中的节点、边和谓语之间的关系的复合键相关联的信息;

用于针对图数据库执行边查询的指令,其中边查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;以及

用于响应于边查询来接收结果的指令,其中结果包括图的子集。

c9.根据条款c8的装置,其中第一类型的数据库包括以下之一:关系数据库和分层数据库

c10.根据条款c8的装置,其中第一类型的数据库与关系数据库不同。

c11.根据条款c8至c10中的任一项的装置,其中第一查询与结构化查询语言兼容。

c12.根据条款c8至c11中的任一项的装置,其中边查询与数据记录兼容。

c13.根据条款c8的装置,其中边查询与查询语言兼容,查询语言是声明式的使得其在未表达相关联的控制流的情况下表达计算逻辑,并且查询语言是完整的使得任意计算由查询语言表示。

c14.根据条款c8的装置,其中程序模块还包括用于确定基元的指令。

c15.一种系统,包括:

处理模块,其包括存储指令的非暂时性计算机可读介质,指令当被执行时,使得系统:

接收与第一类型的数据库相关联的第一查询;

通过使用基元将第一查询转译为与存储图的图数据库相关联的边查询,其中:

第一类型的数据库具有与图数据库不同的数据模型;

图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据;以及

基元包括:表达第一类型的数据库中的关系模式的、基于图中的边的规则,以及与指定与第一类型的数据库中的表对应的图中的节点、边和谓语之间的关系的复合键相关联的信息;

针对图数据库执行边查询,其中边查询标识与指定图中的节点中的一个或多个节点的谓语相关联的边;以及

响应于边查询来接收结果,其中结果包括图的子集。

c16.根据条款c15的系统,其中第一类型的数据库包括以下之一:关系数据库和分层数据库

c17.根据条款c15的系统,其中第一类型的数据库与关系数据库不同。

c18.根据条款c15至c17中的任一项的系统,其中第一查询与结构化查询语言兼容。

c19.根据条款c15的系统,其中边查询与查询语言兼容,查询语言是声明式的使得其在未表达相关联的控制流的情况下表达计算逻辑,并且查询语言是完整的使得任意计算由查询语言表示。

c20.根据条款c15的系统,其中非暂时性计算机可读介质还存储指令,指令当被执行时,使得系统确定基元。

d1.一种用于表示存储在图数据库中的图中的复合关系的计算机系统实现的方法,方法包括:

基于与图中的两个或两个以上节点之间的两个或两个以上边相关联的两个或两个以上谓语来定义复合关系;以及

在图中生成中心节点,中心节点对应于复合关系并且具有对图的用户隐藏的标识符。

d2.根据条款d1的方法,其中方法还包括生成具有包括两个或两个以上谓语的边的查询;以及

其中两个或两个以上谓语指定中心节点的标识符。

d3.根据条款d2的方法,其中方法还包括针对图数据库执行查询。

d4.根据条款d1的方法,其中方法还包括基于两个或两个以上谓语向中心节点指派标识符,标识符是局部标识符。

d5.根据条款d4的方法,其中方法还包括添加以下边,该边与中心节点和包括局部标识符的节点之间的标识符谓语相关联。

d6.根据条款d1的方法,其中方法还包括添加以下边,该边与中心节点和包括两个或两个以上节点中的一个节点的属性的节点之间的属性谓语相关联。

d7.根据条款d6的方法,其中方法还包括当属性谓语的基数大于一时,添加与中心节点和包括两个或两个以上节点中的一个节点的更新属性的另一节点之间的属性谓语相关联的另一边。

d8.根据条款d6的方法,其中方法还包括当属性谓语的基数等于一时,利用两个或两个以上节点中的一个节点的更新属性替换属性。

d9.根据条款d1至d8中的任一项的方法,其中中心节点的标识符对图的用户隐藏,使得中心节点的标识符在图数据库外部不可见。

d10.根据条款d1至d9中的任一项的方法,其中图包括节点、节点之间的边和谓语以表示并且存储具有无索引相邻性的数据。

d11.一种装置,包括:

一个或多个处理器;

存储器;以及

程序模块,其中程序模块被存储在存储器中,并且在装置的操作期间,程序模块由一个或多个处理器执行以表示存储在图数据库中的图中的复合关系,程序模块包括:

用于基于与图中的两个或两个以上节点之间的两个或两个以上边相关联的两个或两个以上谓语来定义复合关系的指令;以及用于在图中生成对应于复合关系并且具有对图的用户隐藏的标识符的中心节点的指令。

d12.根据条款d11的装置,其中程序模块还包括用于生成具有包括两个或两个以上谓语的边的查询的指令;以及

其中两个或两个以上谓语指定中心节点的标识符。

d13.根据条款d12的装置,其中程序模块还包括用于针对图数据库执行查询的指令。

d14.根据条款d11的装置,其中程序模块还包括用于基于两个或两个以上谓语而向中心节点指派标识符的指令,标识符是局部标识符。

d15.根据条款d14的装置,其中程序模块还包括用于添加与中心节点和包括局部标识符的节点之间的标识符谓语相关联的边的指令。

d16.根据条款d11的装置,其中程序模块还包括用于添加与中心节点和包括两个或两个以上节点中的一个节点的属性的节点之间的属性谓语相关联的边的指令。

d17.根据条款d16的装置,其中程序模块还包括用于当属性谓语的基数大于一时,添加与中心节点与包括两个或两个以上节点中的一个节点的更新属性的另一节点之间的属性谓语相关联的另一边的指令。

d18.根据条款d16的装置,其中程序模块还包括用于当属性谓语的基数等于一时,利用两个或两个以上节点中的一个节点的更新属性替换属性的指令。

d19.根据条款d11至d18中的任一项的装置,其中中心节点的标识符对图的用户隐藏,使得中心节点的标识符在图数据库外部不可见。

d20.一种系统,包括:

处理模块,其包括存储指令的非暂时性计算机可读介质,指令当被执行时,使得系统:

定义表示存储在图数据库中的图中的复合关系的复合关系,其中复合关系基于与图中的两个或两个以上节点之间的两个或两个以上边相关联的两个或两个以上谓语;以及

在图中生成中心节点,中心节点对应于复合关系并且具有对图的用户隐藏的标识符。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1