CN106547809B - 将复合关系表示在图数据库中 - Google Patents
将复合关系表示在图数据库中 Download PDFInfo
- Publication number
- CN106547809B CN106547809B CN201510965364.8A CN201510965364A CN106547809B CN 106547809 B CN106547809 B CN 106547809B CN 201510965364 A CN201510965364 A CN 201510965364A CN 106547809 B CN106547809 B CN 106547809B
- Authority
- CN
- China
- Prior art keywords
- graph
- query
- database
- nodes
- node
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/248—Presentation of query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
为了促进对数据的高效存储和提取,一种系统可以将复合关系表示在存储在图数据库中的图中。具体地,该系统(或用户)可以基于与图中的两个或更多个节点之间的两个或更多个边缘相关联的两个或更多个谓词来定义复合关系。之后,该系统可以在图中生成与复合关系相对应的并且具有对图的用户隐藏的标识符的中心节点,使得该中心节点的标识符在图数据库外部不可见。此外,可以在查询中使用两个或更多个谓词来指定该中心节点的标识符,由此允许与复合关系相关联的数据容易地被标识、被修改和/或被提取。
Description
技术领域
所描述的实施例涉及用于将信息表示在数据库中的技术。更具体地,所描述的实施例涉及用于使用中心节点来将复合关系表示在图数据库中的技术。
背景技术
与应用相关联的数据常常被组织并被存储在数据库中。例如,在关系数据库中,数据基于关系模型而被组织到具有行和列的一个或多个表中,其中行表示数据实体的类型的实例而列表示相关联的值。能够使用以结构化查询语言(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提供了根据本公开的实施例的定义复合关系的命令集。
注意,类似的附图标记指代附图中的对应的部分。此外,相同部分的多个实例通过由破折号与实例编号分开的常见前缀来指定。
具体实施方式
为了从图数据库请求期望信息,一种系统执行针对图数据库的查询(其有时被称为“边缘查询”)。图数据库可以存储图,该图包括节点、节点之间的边缘以及用于利用无索引邻接来表示并存储数据的谓词。此外,该查询可以标识与指定图中的节点中的一个或多个节点的谓词相关联的第一边缘。响应于该查询,系统接收包括图的子集的结果。具体地,图的子集通常必须包括在图的相关联的结构内表达的期望信息。
另外,查询的结果可以被使用在查询的串联或顺序集合中。具体地,系统可以针对响应于原始查询接收到的图的子集执行第二查询。该第二查询可以标识与指定节点中的一个或多个节点的第二谓词相关联的第二边缘。之后,响应于第二查询,系统接收包括图的第二子集的第二结果。
附加地,系统可以验证响应于查询返回的图的子集。具体地,所述系统可以验证图的子集包括一个或多个特定边缘,诸如与查询中的谓词相对应的边缘。更一般地,系统可以验证图的子集包括在图的部分中的数据和/或相关联的结构。
为了促进从图数据库请求期望信息,系统可以将初始查询转换成能够针对图数据库来执行的查询。具体地,使用原语(primitive),系统可以将与除了图数据库之外的一种类型的数据库(诸如关系数据库)相关联的初始查询转换成该查询。注意,原语可以包括将关系模式或模型表达在所述类型的数据库中的、基于图中的边缘的规则,以及与复合键相关联的信息,该复合键指定与所述类型的数据库中的表相对应的图中的节点、边缘和谓词之间的关系。
此外,为了促进对数据的高效存储和提取,系统可以将复合关系表示在存储在图数据库中的图中。具体地,系统(或用户)可以基于与在图中的节点中的两个或更多个节点之间的边缘中的两个或更多个边缘相关联的谓词中的两个或更多个谓词来定义该复合关系。之后,系统可以在图中生成与该复合关系相对应的并且对图的用户隐藏的中心节点,使得该中心节点的标识符在图数据库外部不可见。注意,可以在查询中使用两个或更多个谓词来指定该中心节点的标识符,由此允许与所述复合关系相关联的数据容易地被标识、被修改和/或被提取。
以这种方式,该图存储技术可以允许从图数据库高效地提取与复杂的关系相关联的信息。具体地,代替执行多个查询,将中间结果存储在数据存储库中,并且之后将中间结果进行结合以获得期望信息,对图数据库执行的查询的结果可以在没有结合的情况下提供期望信息。因此,该图存储技术可以减少计算机系统相对于诸如关系数据库或键值存储的其他类型的数据库针对应用从图数据库提取期望信息所需要的计算时间和存储器要求。此外,该图存储技术可以改进在不改变应用访问图数据库中的数据的方式的情况下提高使用图数据库的应用的性能(即,通过将数据视为存储器中的具有相关联的指针的对象的层次结构)。另外,改进的应用的性能还可以改进在使用应用时的用户体验。
在下面的讨论中,个体或用户可以是个人(例如,社交网络的现有用户或社交网络的新用户)。此外或代替地,图存储技术可以由任何类型的组织(诸如商业组织)使用,其应当被理解为包括盈利性企业、非盈利企业、个体的组(或团体)、独资企业、政府机构、合伙企业等。
我们现在描述系统和其使用的实施例。图1呈现了示出执行图存储技术的系统100的框图。在该系统中,电子设备110的用户可以使用至少部分使用执行在系统100中的一个或多个软件产品或应用提供的服务。如下面进一步描述的,应用可以由系统100中的引擎执行。
此外,服务可以至少部分使用驻存并执行在电子设备110上的软件应用的实例来提供。在一些实施方式中,用户可以经由网络112与由通信服务器114提供的网页交互,并且该网页由电子设备110上的web浏览器渲染。例如,执行在电子设备110上的软件应用的至少一部分可以是被嵌入在网页中并在网络浏览器的虚拟环境中执行的应用工具。因此,应用工具可以经由客户端-服务器架构被提供给用户。
由用户操作的软件应用可以是独立应用或驻存并执行在电子设备110上的另一应用的一部分(诸如,由通信服务器114提供并被安装和执行在电子设备110上的软件应用)。
各种服务可以使用系统100来提供。在下面的讨论中,社交网络(并且更一般地,用户的网络),诸如促进用户之间的交互的专业社交网络被用作说明性示例。此外,使用电子设备110之一(诸如电子设备110-1)作为说明性示例,电子设备的用户可以使用软件应用和由系统100中的引擎执行的应用中的一个或多个应用来与社交网络中的其他用户交互。例如,管理员引擎118可以处理用户账户和用户简档简档,活动引擎120可以跟踪并聚集社交网络中的随时间的用户行为,内容引擎122可以接收用户提供的内容(音频、视频、文本、图形、多媒体内容、口头信息、书面信息和/或记录的信息)并且可以将文档(诸如幻灯片、电子数据表、文字处理文档、网页、等等)提供给用户,并且存储系统124可以将数据结构维持在计算机可读存储器中,该计算机可读存储器可以包含多个设备,即大规模存储系统。
注意,社交网络的用户中的每个用户可以具有包括个人和专业特性和经历(其有时统称为‘属性’或‘特性’)的相关联的用户简档。例如,用户简档可以包括:人口统计信息(诸如年龄和性别)、地理位置、当前雇主的工作行业、雇佣开始日期、可选的雇佣结束日期、职能范围(例如,工程、销售、咨询)、组织中的工龄、雇主规模、教育(诸如就读的学校和获得的学位)、雇佣历史(诸如先前雇主和当前雇主)、专业发展、兴趣段、用户隶属于或用户跟踪或跟随的组、职位、附加专业属性(诸如技能)和/或推测的属性(其可以包括或基于用户行为)。此外,用户行为可以包括:登录频率、搜索频率、搜索话题、浏览特定网页、与用户相关联的位置(诸如IP地址)、呈现给用户的广告或推荐、对广告或推荐的用户响应、由用户交换的喜好或分享、喜好或分享的兴趣段和/或当使用社交网络时的用户活动的历史。另外,用户之间的交互可以帮助定义社交图,在社交图中节点与用户相对应并且节点之间的边缘与用户的交互、相互关系和/或连接相对应。然而,如下面进一步描述的,存储在图数据库中的图中的节点可以与除了社交网络的成员(诸如,用户、公司等等)的附加的或不同的信息相对应。例如,节点可以与用户的属性、性质或特性相对应。
如之前指出的,对于应用而言可能难以将数据存储在存储系统124中的现有数据库中并在存储系统124中的现有数据库中对数据进行检索,因为应用可能不具有对与特定关系数据库相关联的关系模型的访问(其有时被称为‘对象关系阻抗失配’)。此外,如果应用将关系数据库或键值库作为存储器中的具有相关联的指针的对象的层次结构,则针对现有数据库执行的查询可能不以最佳方式来执行。例如,当应用请求与复杂的关系(其可以涉及两个或更多个边缘,并且其有时被称为‘复合关系’)相关联的数据时,一组查询可以被执行并且之后将结果链接或结合。为了说明该问题,针对博客渲染网页可以涉及针对三个最近博客帖子的第一查询、针对任何相关联的评论的第二查询和针对关于评论的作者的信息的第三查询。因为该组查询可能是次优的,因此获得结果可能是耗时的。该降低的性能可以继而降低在使用应用和/或社交网络时的用户体验。
为了解决这些问题,存储系统124可以包括存储图的图数据库(例如,作为信息存储和检索系统或引擎的部分)。注意,图可以允许针对涉及快速结合的数据(诸如针对具有偏斜或存储系统124中的大‘扇出’的复杂的关系)来获得任意准确数据模型,其逼近指向存储器位置的指针的速度(并且因此可以很好地适合于由应用使用的方法)。
图2呈现了图示了存储在(图1的)系统100中的图数据库200中的图210。图210可以包括节点212、节点212之间的边缘214和用于利用无索引邻接来表示并存储数据的谓词216(其是指定或标记边缘214的主键),即使得图210中的每个节点212包括到其邻接节点的直接边缘而不使用索引查找。
注意,图数据库200可以是具有恒定时间导航的关系模型的实施方式,即与大小N无关,与随log(N)变化相反。此外,图数据库200中的所有关系可以是第一类(即,相等)。相反,在关系数据库中,表中的行可以是第一类,但是涉及将表结合的关系可以是第二类。另外,图数据库200中的模式改变(诸如添加或删除关系数据库中的列的等效行为)可以以恒定时间来执行(在关系数据库中,改变模式可以是有问题的,因为模式常常被嵌入在相关联的应用中)。附加地,针对图数据库200,查询的结果可以是保全图210的子集的结构(即,节点、边缘)的图210的子集。
图存储技术可以包括允许与应用和/或社交网络相关联的数据有效地被存储在图数据库200并从图数据库200检索的方法的实施例。例如,如下面参考图3和图4所描述的,图存储技术可以获得响应于查询提供图210的子集。此外,如下面参考图5和图6所描述的,查询的结果可以被使用在串联查询或顺序查询中。具体地,代替独立地应用对图数据库200的第一查询和第二查询,第二查询可以被应用到第一查询的结果(其包括图210的子集)。以这种方式,复杂的关系能够在没有对中间结果的后续结合或链接的情况下直接被获得,由此减少获得期望信息所需要的时间和用于获得期望信息的系统资源。
另外,如下面参考图7和图8所描述的,针对图数据库200执行的查询的结果可以通过将结果与已知或预期信息进行比较来验证。例如,因为查询的结果包括图210的子集,所以它们能够基于图210的预定义结构或子集中的特定信息(诸如与查询中的那些匹配的边缘或谓词)来验证。
在一些实施例中,如下面参考图9-11所描述的,与另一类型的数据库或以与和图数据库200相关联的语言不同的语言(例如JavaScript对象符号或JSON)的查询可以被转换成在执行针对图数据库200的查询之前关于图数据库200使用的基于边缘的格式。另外,如下面参考图12-14所描述的,复杂的关系可以通过在图210中定义复合关系来被表示在图数据库200中,图210包括对图数据库200的用户隐藏的中心节点的标识符。例如,中心节点的标识符可以在图数据库200的外部不可见。相反,中心节点的标识符(以及因此复合关系)可以基于能够被包含在查询中的两个或更多个边缘来指定或标识。
参考回到图1,本文中描述的图存储技术可以允许系统100高效地且快速地(例如,最佳地)存储并检索与应用和社交网络相关联的数据而不要求应用具有被实施在图数据库200中的关系模型的知识。因此,图存储技术可以改进应用、社交网络和系统100的可用性和性能或功能,其可以减少用户挫折并且其可以改进用户体验。因此,图存储技术可以增加与社交网络的契约或社交网络的使用,并且因此可以增加社交网络的提供商的收益。
注意,系统100中的信息可以被存储在一个或多个位置处(即,本地地和/或远程地)。此外,因为该数据在本质上可能是敏感的,所以其可以被加密。例如,存储的数据和/或经由网络112和/或网络116通信的数据可以被加密。
我们现在描述图存储技术的实施例。图3呈现了图示用于从图数据库请求期望信息的方法300的流程图,方法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可以将结果420(其可以与结果418或结果418的一部分相同)提供给应用410。
在示范性实施例中,图数据库具有使用指定第一类关系的三元组(主体,谓词,对象)来描述边缘的模式。将三元组用作数据中的基本关系提供能够由人类直接消费的意义。在一些实施例中,四元组被用于捕获/表示附加信息,诸如所有权或出处。然而,在其他实施例中,在图中使用可变长度关系。
注意,三元组中的每个字段可以具有相关联的整数‘实体标识符’。该边缘结构可以允许在整数的域中进行结合,特别是在由逆向索引编排的整数的集合中进行结合。此外,该域可以允许简洁的表述以及快速结合实施方式。另外,三元组可以被映射成结构层次,诸如常常在栈的上游使用的JSON或超文本标记语言(HTML)模板。因此,查询结果可以以JSON来转换。
在图数据库中,可以不存在‘属性’的单独符号。相反,两种不同的边缘类型可以通过具有共同中间节点的两个不同的三元组来表示。例如,在社交网络中的成员1234与成员4567之间的成员到成员连接可以被表示为Edge(x,‘左成员’,‘成员/1234’)、Edge(x,‘左得分’,6.7)、Edge(x,‘右成员’,‘成员/4567’)、Edge(x,‘右得分’,23.78)和Edge(x,‘创建日期’,‘2014年9月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而另一个反向。原则上,可能需要全部六种排列,但是实际上对于大部分查询四种可能是足够的。
在去标准化的一些实施例中,针对社交网络中的一些或全部实体(个体成员、公司等等)创建图。在该示例中,图可以包括一阶连接的完整邻域,具有数十或者甚至成百数千个边缘。尽管该方法将复制大量数据,但是可能不需要索引。相反,边缘的单个顺序扫描可以被存储在存储器中。
图可以大于单个机器所能够原样存储的,使得图可以被拆分成分片,其中一个机器专用于每个分片。在一些实施例中,混合式分片方法被使用,其中大索引集合被拆分在许多机器上以允许并行化,而同时将小索引集合一起保持在单个机器上使得查询评估能够基于‘局部封闭世界’来做出决策。例如,这样的图划分可以具有在一个分片中的娱乐行业、在另一分片中的计算机程序员、在另一分片中的金融等等。相反(因为其是大索引集合),对于专业社交网络的有影响力的成员,诸如Richard Branson,数百万跟随者边缘可以被分布在多个分片上。
通过指定每个分片本身就是数据库,并且使初始顶级查询评估者与数据库的联盟一起工作,可以获得分片实施方式中的灵活性。具体地,联盟的查询评估可以通过将完整查询提供给具有每个分片将返回其知道的关于结果或回答的一切的期望的所有分片来开始。因此,响应的范围可以从完整回答到社交网络中的可以在结果中发挥作用的成员到成员链接的集合。
在一些实施例中,图数据库(或数据库)使用静态查询计划。在这些实施例中,优化器可以检查查询并且借助于来自数据和索引的统计数据来产生之后被执行的计划。该静态方法可以在开始或停止执行的开销很大时(诸如当数据从硬盘驱动器被流传输时)有效并且数据可以容易地使用统计数据来概括。
然而,因为存储在存储器中的图数据通常不具有这些性质(其通常决不仅仅是来自处理器的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中,表2示出了针对博客帖子的按日期降序排序的JSON查询。如表3中示出的,初始查询可以被转换为或被表达为与图数据库兼容的边缘查询(诸如使用Datalog或Prolog表达的边缘查询)。在该边缘查询中,来自初始查询的键变成谓词,例如‘文本’、‘评论’和‘作者’。此外,边缘查询可以包括字符串(例如‘评论’)和/或变量(例如‘P’或‘C’)。例如,边缘查询可以包括指定日期、按日期的顺序、三个博客帖子的限制等等的语法。在表3中,注意在‘:-’左边的内容被已知为规则或被称为规则。在边缘查询格式中,相同规则的多个定义是析取(OR),并且由逗号分开的内容是合取(AND)。
表2
表3
表4示出了针对边缘查询的结果,其包括图的子集中的边缘的组,其中的每个边缘由主体、谓词和对象指示。注意,一般地,边缘查询是要被施加到数据库的一组约束,并且输出或结果是满足约束(而没有层次结构或关系约束)的图的一部分或子集。因为结果包括(具有其相关联的结构的)图的部分,所以结果能够在没有被实施在图数据库中的关系模型的模式或知识的情况下来使用。例如,查询能够被应用到结果(即,查询的输出),并且可能将获得相同结果。这样的合取查询通常不能够利用针对关系数据库的SQL查询来进行。
表4
因为针对查询的输出或结果包括图的子集(而不损失相关联的结构),所以查询能够被串联并被应用到前面的结果而非被应用到整个图。这被示出在图5中,图5呈现图示了用于从图数据库请求期望信息的方法500的流程图,方法500可以由计算机系统(诸如图1中的系统100或图15中的计算机系统1500)来执行。在操作期间,计算机系统执行针对存储图的图数据库的查询(操作316)。注意,图可以包括节点、节点之间的边缘和用于利用无索引邻接来表示并存储数据的谓词。此外,查询可以标识与指定图中的节点中的一个或多个节点的谓词相关联的第一边缘。之后,计算机系统响应于该查询来接收结果(操作318),其中结果包括图的子集。
注意,计算机系统执行针对图的子集的第二查询(操作510),其中第二查询标识与指定节点中的一个或多个节点的第二谓词相关联的第二边缘。另外,计算机系统响应于第二查询来接收第二结果(操作512),其中第二结果包括图的第二子集。注意,执行对图的第一子集的第二查询可以消除执行对图数据库的第二查询的需求。
在方法500中的操作可以被重复。例如,计算机系统可以执行对图的子集的一个或多个附加查询和/或可以执行对图的第二子集的第三查询。
注意,如前面参考图3所描述的,在操作316的查询可以由计算机系统生成,或者可以被接收和/或被转换。
参考回图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)涉及计算机系统:执行针对图数据库的另一查询;响应于该查询来接收另一结果,其中结果包括与边缘的子集(诸如与特定谓词相关联的一个或多个边缘或节点)相对应的信息;并且将该信息与边缘的子集进行比较。
注意,如前面参考图3所描述的,在操作316的查询可以由计算机系统生成,或者可以被接收和/或被转换。
参考回图4,计算机系统412可以对结果418或420进行验证424。例如,基于查询414中的谓词,计算机系统412可以验证一个或多个期望边缘或节点被包含在结果418或结果420中。该验证还被图示在图8中。具体地,可以将针对图数据库810的查询812的结果814与预定义或预定结果816进行比较。因此,如果查询812包括针对公司的谓词,则结果814应当包括公司的至少一个雇员,并且这能够通过将结果814与预定结果816中的公司的雇员的列表进行比较来验证。更一般地,如果查询812包括谓词,对结果814进行验证可以涉及查找结果816中的特定边缘的存在。
如之前所讨论的,图存储技术可以涉及转换。这被示出在图9中,图9呈现了图示了用于将第一查询转换成边缘查询的方法900的流程图,方法900可以由计算机系统(例如图1中的系统100或图15中的计算机系统1500)来执行。在操作期间,计算机系统接收与第一类型的数据库(例如,关系数据库、层次数据库或另一类型的数据库,诸如与SQL兼容的数据库)相关联的并且更一般地具有另一数据模型或不同的数据模型的第一查询(操作910)。之后,计算机系统使用原语将所述第一查询转换成与存储图的图数据库相关联的边缘查询(操作914)。
注意,第一类型的数据库具有与图数据库不同的数据模型和/或与图数据库不同(例如,第一类型的数据库可以使用SQL),并且图包括节点、节点之间的边缘和用于利用无索引邻接来表示并存储数据的谓词。此外,原语包括:将关系模式表达在第一类型的数据库中的基于图中的边缘的规则,以及与复合键相关联的信息,该复合键指定与所述第一类型的数据库中的表相对应的图中的节点、边缘和谓词之间的关系。下面提供关于使用原语来将查询转换成与图数据库兼容的形式的查询的进一步讨论。
接下来,计算机系统执行针对图数据库的边缘查询(操作916),其中边缘查询标识与指定图中的节点中的一个或多个节点的谓词相关联的边缘。另外,计算机系统响应于该边缘查询来接收结果(操作918),其中结果包括图的子集。
例如,边缘查询可以与数据记录兼容。更一般地,边缘查询可以与查询语言兼容,查询语言是声明性的使得其表达计算逻辑而不表达相关联的控制流并且查询语言可以是完备的使得任意计算由该查询语言表示。
在一些实施例中,计算机系统可选地确定原语(操作912)。
在示范性实施例中,使用计算机系统中的彼此交互的一个或多个应用和存储系统(或引擎)来实施方法900。这被图示在图10中。在该方法中,执行在计算机系统412中的应用410可以向存储子系统124提供初始查询1010。初始查询1010可以是以与图数据库416不兼容的不同的语言进行的。之后,存储子系统124(或向存储子系统124馈送边缘或图的评价器层)可以使用原语1012来将初始查询1010转换成边缘查询1014(其与图数据库416兼容)。注意,原语1012可以是预定的或者可以可选地由计算机系统412确定。
之后,存储子系统124可以执行针对图数据库416的边缘查询1014以获得结果418(其可以包括存储在图数据库416中的图的子集)。接下来,存储子系统124可以将结果420(其可以与结果418或结果418的一部分相同)提供给应用410。
在示范性实施例中,边缘查询从初始查询被转换为通用声明性查询语言(即,向计算机系统指示期望结果而不指定其应当如何被实现的语言,使得其能够被优化)。该查询语言可以基于数据记录或与数据记录兼容。此外,查询语言可以是根据可表达性与SQL可比较的。换句话说,查询语言可以是完备的,使得任意计算能够被表示或被表达。查询语言可以具有诸如以下的特征:转换、合成和通过举例的查询。
图转换可以是获取复杂的图并产生更简单的图的任意函数。一般地,在管理数据的人与出于某种目的使用数据的人之间存在自然张力。应用开发者通常想要特定粗粒度信息(例如,成员的当前雇主),但是管理的简便常常要求仅仅不改变的事实被记录。如果当前雇主被直接存储,则可以创建开放式管理责任(即,检查成员的雇佣状态)。尽管管理是更可行的,但是其还是更复杂的雇佣关系,涉及不随时间改变的雇员、雇主、开始日期和结束日期、晋升等等。能够得到的复杂的图能够之后被转换成用户所期望的更简单的结构。图转换的常见示例是距离标记。具体地,两跳关系可以被转换成单个‘标记’边缘,其对象是序数‘2’。
图合成允许用户通过参考更简单的查询来构建复杂的查询。假定底层图数据常常是丰富而复杂的,可以对存在封装查询以供重用的需要。例如,针对‘数据库行业资深人员’(诸如具有数据库行业中的十年经验、来自数据库行业中的其他人的针对数据库相关技术人员的至少一次推销和认可的人)的查询可以是在诸如以下的查询中可重用的:‘数据库行业资深人员的最频繁的毕业学校’、‘由…频繁参加的会议’和‘在过去一年中吸引…的旧金山湾区创业企业’。
在通过举例的查询中,常见的简单合取查询可以容易地通过构建希望找到更多的数据的排序的示例来表达。注意,在通过举例的查询中,可以使用谓词名称的层次结构。此外,通过举例的查询可以提供用于与关系数据库的高级交互的机制。
图存储技术中的查询语言可以允许计算机系统支持许多不同的初始查询(利用不同的相关联的数据库)而不执行对每个初始查询语言的优化。此外,图存储技术可以涉及使用原语来表达初始查询的简单核(或基于原语的)语言查询编译和评估编译器。原语可以包括表达或施加在第一类型的数据库中的关系模式的基于图中的边缘的规则。例如,基于成员到成员关系a到b和b到c的规则可以与a、b和c相关。另外,原语可以包括复合键或与复合键相关联的信息,该复合键指定与第一类型的数据库中的表相对应的图中的节点、边缘和谓词之间的关系。(然而,使用复合键可以取决于实施方式。更一般地,用户使用语言原语来定义复合关系。之后,在实施层,数据库可以生成复合键来标识复合关系。因此,系统的用户可能没有意识到复合键的存在。)具体地,表可以包括与谓词相对应的属性。例如,复合键可以定义节点与到成员的边缘和边缘的属性(例如开始日期和结束日期、指示成员如何被连接的得分等等)之间的一种或多种关系。
初始查询或第一查询(诸如SQL查询)可以使用原语被转换成边缘查询(诸如数据记录兼容的查询)。例如,SQL查询可以与具有列的一个或多个表相关联,并且可以被分解成引用表(例如,列可以是规则头中的变量)的联合组成(例如,select*x,y,z U select*a,b,c)。之后,SQL查询可以根据一个或多个规则来被显式地表达,或者利用一个或多个复合键(其可以基于图数据库中的一个或多个常见节点)来被隐式地表示。该过程被示出在图11中,该图呈现了图示了将第一查询转换成边缘查询的绘图。
例如,在SQL中,表可以被定义为:M2M,列a和b。同样地,在图中该关系可以被表达为:M2M(a,b):-Edge(a,‘lin’,h),Edge(b,‘rin’,h)。之后,SQL查询select a,b from M2M,MFC(with columns a,b and c)where a=‘Sri’,M2M.a=MFC.c变成M2M(a,b)、Equal(a,‘Sri’)、MFC(a2,b2,c2)、Equal(a,c2)。在另一示例中,SQL查询select a,b from M2Munion select a,b from MFC可以被表达为query(a,b):-M2M(a,b),query(a,b):-MFC(a,b),具有一组规则和R(‘Sri’,_)?的query(_,_)?。
注意,转换还能够以从边缘查询到以诸如SQL的不同格式的查询的反向顺序来运行。例如,初始边缘查询可以是create view M2M(a,b),select e1.s,e2.s from edge e1,edge e2where e1.O=e2.O,e1.P=‘lin’and 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,“得分”,“456”),使用在“lm”与“rm”之间的复合关系,计算机系统可以将中心节点标识为被创建在第一写入中的中心节点并且可以将新的“得分”属性添加到该中心节点。)
取决于如何定义或配置属性谓词,属性谓词能够被更新或被替换。例如,当属性谓词的基数大于一时,计算机系统可以在中心节点与包括两个或更多个节点中的一个节点的经更新的属性的另一节点之间添加与属性谓词相关联的另一边缘。备选地,当属性谓词的基数等于一时,计算机系统可以利用两个或更多个节点中的一个节点的经更新的属性来替换属性。
在示范性实施例中,使用计算机系统中的彼此交互的一个或多个应用和存储系统(或引擎)来实施方法1200。这被图示在图13中。在该方法期间,存储子系统124可以基于两个或更多个谓词来将复合关系1310定义在图数据库416中。
之后,在计算机系统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中,并且计算机系统可以使用这些写入来生成如{公司:公司A,开始日期:0/2/11/09,雇员:Karen}(即,基于三个谓词)的复合标识符。
表5
表6
因为复合节点h是隐藏的(并且由复合标识符标识),可能不存在用户如何从图数据库查询上的改变(即,查询可以包括表6中示出的头三个边缘)。因此,复合关系可以用于提供呈现图数据库中的关系的便利方式,而无需用户知道复合关系和/或中心节点的标识符。
在一些实施例中,除了使用多个谓词来定义复合关系之外,存在元数据。该元数据可以包括主体元数据(诸如节点的类型和基数)和/或对象元数据(诸如节点的类型和基数)。例如,个体可以仅仅由复合关系中的一个公司雇佣,因此公司的基数可以为一。然而,多个个体可以在相同的开始日期开始工作,因此开始日期的基数可以是无限的。
在一些实施例中,图数据库包括不同类型的复合关系。边缘复合关系可以是易变的,使得边缘复合关系中的边缘能够被添加或被移除,并且更一般地复合关系能够被删除。(然而,指定标识符的边缘不可以被添加或被移除)。文字复合关系可以是不可变的。文字复合关系的内容可以不被改变,并且文字复合关系可以仅仅在没有其他实体吸收由文字复合关系指定的关系时被删除。例如,公司位于其中的建筑物的位置(纬度和经度)可以被包含在文字复合关系中。该文字复合关系可以仅仅在另一公司位于建筑物中时被删除。
在方法300(图3和图4)、方法500(图5)、方法700(图7)、方法900(图9和图10)和方法1200(图12和图13)的一些实施例中,可以存在附加的或更少的操作。此外,可以改变操作的顺序,和/或两个或更多个操作可以被组合到单个操作中。
我们现在描述用于执行图存储技术的计算机系统及其使用的实施例。图15呈现了图示了诸如图1中的系统100的执行方法300(图3和图4)、方法500(图5)、方法700(图7)、方法900(图9和图10)和方法1200(图12和图13)的计算机系统1500的框图。计算机系统1500包括一个或多个处理单元或处理器1510(其有时被称为‘处理模块’)、通信接口1512、用户接口1514、存储器1524和将这些部件耦合在一起的一条或多条信号线1522。注意,一个或多个处理器1510可以支持并行处理和/或多线程操作,通信接口1512可以具有持久通信连接,并且一条或多条信号线1522可以构成通信总线。此外,用户接口1514可以包括:显示器1516(诸如触摸屏)、键盘1518和/或指示器(诸如鼠标)。
计算机系统1500中的存储器1524可以包括易失性存储器和/或非易失性存储器。更具体地,存储器1524可以包括:ROM、RAM、EPROM、EEPROM、闪速存储器、一个或多个智能卡、一个或多个磁盘存储设备和/或一个或多个光学存储设备。存储器1524可以存储包括用于处理各种基本系统服务以执行依赖于硬件的任务的流程(或指令集)的操作系统1526。存储器1524还可以将流程(或指令集)存储在通信模块1528中。这些通信流程可以被用于与一个或多个计算机和/或服务器通信,包括相对于计算机系统1500被远程定位的计算机和/或服务器通信。
存储器1524还可以包括多个程序模块,包括:社交网络模块1530、管理员模块1532、活动模块1534、存储模块1536和/或加密模块1538。注意,这些程序模块(或指令集)中的一个或多个程序模块可以构成计算机程序机制,即软件。
在计算机系统1500的操作期间,由社交网络模块1530促进的社交网络的用户可以使用管理员模块1532设置并管理账户。此外,社交网络模块1530可以经由通信模块1528和通信接口1512促进在用户之间的交互。这些交互可以通过活动模块1534来跟踪,例如在查看被提供在使用社交网络模块1530实施的社交网络中的文档(并且更一般地,查看内容)时查看用户的行为。
存储模块1536可以将与社交网络相关联的数据存储在存储具有节点1544、边缘1546和谓词1548的图1542的图数据库1540中。当存储模块1536从应用1552接收查询1554时,存储模块1536可以执行针对图数据库1540的查询1554以获得结果1556,结果1556可以包括图1542的子集。此外,存储模块1536可以执行针对结果1556而非图1542的后续查询1558。注意,存储模块1536可以通过基于查询1554中的谓词1548中的一个或多个谓词将结果1556的至少一部分与期望或预定(或预定义)结果1560(诸如边缘1546中的一个或多个边缘的存在)进行比较来验证结果1556。
在一些实施例中,存储模块1536在执行针对图数据库1540的查询1554之前使用一个或多个规则或一个或多个复合键将从应用1552接收到的初始查询1562转换成查询1554。例如,初始查询1562可以与除了图数据库1540之外的另一类型的数据库相关联,并且查询1554可以为边缘查询。
附加地,存储模块1536可以通过使用边缘1546中的两个或更多个边缘定义中心节点1550的标识符来将复合关系1564表示在图数据库15340中。
因为计算机系统1500中的信息可以本质上是敏感的,所以在一些实施例中,存储在存储器1524中的数据中的至少一些数据和/或使用通信模块1528通信的数据中的至少一些数据使用加密模块1538被加密。
存储器1524中的各种模块中的指令可以以高级过程式语言、面向对象编程语言和/或以汇编或机器语言来实施。注意,编程语言可以被编译或被解释、例如可配置或被配置为要由一个或多个处理器执行。
尽管计算机系统1500被图示为具有许多分立项,但是图15旨在为对可以被呈现在计算机系统1500而非本文中描述的实施例的结构示意中的各种特征的功能描述。在实践中并且如由本领域技术人员意识到的,计算机系统1500的功能可以被分布在大量服务器或计算机上,其中服务器或计算机的各个组执行功能的特定子集。在一些实施例中,计算机系统1500的功能中的一些或全部功能被实施在一个或多个专用集成电路(ASIC)和/或一个或多个数字信号处理器(DSP)中。
计算机系统(例如计算机系统1500)以及(图1的)系统100中的电子设备、计算机和服务器可以包括能够操纵计算机可读数据或通过网络在两个或更多个计算系统之间通信这样的数据的各种设备,包括:个人计算机、膝上型计算机、平板计算机、大型计算机、便携式电子设备(诸如蜂窝电话或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.根据条款B5所述的装置,其中所述图的所述子集在存在所述图的所述子集的交叠部分与所述图的所述另一子集之间的匹配时得到验证。
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到C10中的任一项所述的装置,其中所述边缘查询与数据记录兼容。
C13.根据条款C8所述的装置,其中所述边缘查询与查询语言兼容,所述查询语言是声明性的使得其表达计算逻辑而不表达相关联的控制流并且所述查询语言是完备的使得任意计算由所述查询语言表示。
C14.根据条款C8所述的装置,其中所述程序模块还包括用于确定所述原语的指令。
C15.一种系统,包括:
处理模块,所述处理模块包括存储指令的非瞬态计算机可读介质,所述指令当被执行时使得所述系统:
接收与第一类型的数据库相关联的所述第一查询;
使用原语将所述第一查询转换成与存储图的图数据库相关联的所述边缘查询,其中:
所述第一类型的数据库具有与所述图数据库不同的数据模型;
所述图包括节点、所述节点之间的边缘以及用于利用无索引邻接来表示并存储数据的谓词;并且
所述原语包括:将关系模式表达在所述第一类型的数据库中的基于所述图中的边缘的规则,以及与在所述第一类型的数据库中的表相对应的所述图中指定所述节点、所述边缘和所述谓词之间的关系的复合键相关联的信息;
执行针对所述图数据库的所述边缘查询,其中所述边缘查询标识与指定所述图中的所述节点中的一个或多个节点的谓词的边缘;以及
响应于所述边缘查询来接收结果,其中所述结果包括所述图的子集。
C16.根据条款C15所述的系统,其中所述第一类型的数据库包括以下的任一种:关系数据库以及层次数据库。
C17.根据条款C15所述的系统,其中所述第一类型的数据库与关系数据库不同。
C18.根据条款C15到C17中的任一项所述的系统,其中所述第一查询与结构化查询语言兼容。
C19.根据条款C15所述的系统,其中所述边缘查询与查询语言兼容,所述查询语言是声明性的使得其表达计算逻辑而不表达相关联的控制流并且所述查询语言是完备的使得任意计算由所述查询语言表示。
C20.根据条款C15所述的系统,其中所述非瞬态计算机可读介质还存储指令,所述指令当被执行时使得所述系统确定所述原语。
D1.一种用于操作图数据库的计算机系统实施的方法,所述方法包括:
执行针对所述图数据库的对于期望信息的查询,其中:
所述图数据库存储图,所述图包括节点、所述节点之间的边缘以及用于利用无索引邻接来表示并存储数据的谓词;并且
所述查询标识与指定所述图中的所述节点中的一个或多个节点的第一谓词相关联的第一边缘;以及
响应于所述查询来接收结果,其中所述结果包括所述图的子集。
D2.根据条款D1所述的方法,其中:
所述方法还包括基于所述期望信息来生成所述查询;并且
所述查询包括主体、谓词和对象。
D3.根据条款D2所述的方法,其中所述主体和所述对象表示由所述图表示的专业网络中的实体。
D4.根据条款D1所述的方法,还包括:
接收标识与第二谓词相关联的第二边缘的后续查询;以及
执行针对所述图的所述子集的所述后续查询;
其中所述后续查询的结果是所述图的第二子集。
D5.根据条款D1所述的方法,还包括:
基于与所述图中的至少两个边缘相关联的至少两个谓词来定义复合关系;以及
在所述图中生成与所述复合关系相对应的中心节点;
其中所述中心节点对所述图的用户隐藏。
D6.根据条款D1所述的方法,还包括:
接收一种类型的数据库兼容的另一查询,所述类型的数据库与所述图数据库不同;以及
将所述另一查询转变成所述查询。
D7.根据条款D6所述的方法,其中所述类型的数据库包括以下的任一种:关系数据库以及层次数据库。
D8.根据前述条款中的任一项所述的方法,其中所述图的所述子集包括在所述图的相关联的结构内表达的所述期望信息。
D9.根据条款D1所述的方法,其中所述方法还包括:
接收与JavaScript对象符号兼容的另一查询;以及
将所述另一查询转变成所述查询。
D10.根据条款D1所述的方法,其中所述结果包括层次约束和关系约束。
D11.一种装置,包括:
一个或多个处理器;
存储器;以及
程序模块,其中所述程序模块被存储在所述存储器中,并且在所述装置的操作期间,所述程序模块由所述一个或多个处理器执行以从图数据库请求期望信息,所述程序模块包括:
用于执行针对所述图数据库的对于期望信息的查询的指令,其中:
所述图数据库存储图,所述图包括节点、所述节点之间的边缘以及用于利用无索引邻接来表示并存储数据的谓词;并且
所述查询标识与指定所述图中的所述节点中的一个或多个节点的第一谓词相关联的第一边缘;以及
用于响应于所述查询来接收结果的指令,其中所述结果包括所述图的子集。
D12.根据条款D11所述的装置,其中:
所述程序模块还包括用于基于所述期望信息来生成所述查询的指令;并且
所述查询包括主体、谓词和对象。
D13.根据条款D12所述的装置,其中所述主体和所述对象表示由所述图表示的专业网络中的实体。
D14.根据条款D11所述的装置,其中所述程序模块还包括用于进行以下操作的指令:
接收标识与第二谓词相关联的第二边缘的后续查询;以及
执行针对所述图的所述子集的所述后续查询;
其中所述后续查询的结果是所述图的第二子集。
D15.根据条款D11所述的装置,其中所述程序模块还包括用于进行以下操作的指令:
基于与所述图中的至少两个边缘相关联的至少两个谓词来定义复合关系;以及
在所述图中生成与所述复合关系相对应的中心节点;
其中所述中心节点对所述图的用户隐藏。
D16.根据条款D11所述的装置,其中所述程序模块还包括用于进行以下操作的指令:
接收一种类型的数据库兼容的另一查询,所述类型的数据库与所述图数据库不同;以及
将所述另一查询转变成所述查询。
D17.根据条款D16所述的装置,其中所述类型的数据库包括以下的任一种:关系数据库以及层次数据库。
D18.根据条款D11所述的装置,其中所述程序模块还包括用于进行以下操作的指令:
接收与JavaScript对象符号兼容的另一查询;以及
将所述另一查询转变成所述查询。
D19.根据条款D11到D18中的任一项所述的装置,其中所述图的所述子集包括在所述图的相关联的结构内表达的所述期望信息。
D20.根据条款D11所述的装置,其中所述结果包括层次约束和关系约束。
Claims (16)
1.一种用于将复合关系表示在存储在图数据库中的图中的计算机系统实施的方法,所述方法包括:
基于与所述图中的两个或更多个节点之间的两个或更多个边缘相关联的两个或更多个谓词来定义所述复合关系,其中所述复合关系表示所述两个或更多个边缘之间的关系;
在所述图中生成与所述复合关系相对应并且具有对所述图的用户隐藏的标识符的中心节点;
在所述中心节点与包括所述两个或更多个节点中的一个节点的属性的节点之间添加与属性谓词相关联的边缘;以及
当所述属性谓词的基数等于一时,利用所述两个或更多个节点中的所述一个节点的经更新的属性来替换所述属性。
2.根据权利要求1所述的方法,还包括:
利用包括所述两个或更多个谓词的边缘来生成查询;并且
其中所述两个或更多个谓词指定所述中心节点的所述标识符。
3.根据权利要求2所述的方法,还包括针对所述图数据库执行所述查询。
4.根据权利要求1所述的方法,还包括:
基于所述两个或更多个谓词来将所述标识符分配到所述中心节点,所述标识符是局部标识符。
5.根据权利要求4所述的方法,还包括:
在所述中心节点与包括所述局部标识符的节点之间添加与标识符谓词相关联的边缘。
6.根据权利要求1所述的方法,还包括:
当所述属性谓词的基数大于一时,在所述中心节点与包括所述两个或更多个节点中的所述一个节点的经更新的属性的另一节点之间添加与所述属性谓词相关联的另一边缘。
7.根据权利要求1所述的方法,其中所述中心节点的所述标识符对所述图的所述用户隐藏,使得所述中心节点的所述标识符在所述图数据库外部不可见。
8.根据权利要求1所述的方法,其中所述图包括所述节点、在所述节点之间的所述边缘以及用于利用无索引邻接来表示并存储数据的所述谓词。
9.一种用于将复合关系表示在存储在图数据库中的图中的装置,包括:
一个或多个处理器;
存储器;以及
程序模块,其中所述程序模块被存储在所述存储器中,并且在所述装置的操作期间,所述程序模块由所述一个或多个处理器执行以将所述复合关系表示在存储在图数据库中的图中,所述程序模块包括:
用于基于与所述图中的两个或更多个节点之间的两个或更多个边缘相关联的两个或更多个谓词来定义所述复合关系的指令,其中所述复合关系表示所述两个或更多个边缘之间的关系;
用于在所述图中生成与所述复合关系相对应并且具有对所述图的用户隐藏的标识符的中心节点的指令;
用于在所述中心节点与包括所述两个或更多个节点中的一个节点的属性的节点之间添加与属性谓词相关联的边缘的指令;以及
用于当所述属性谓词的基数等于一时,利用所述两个或更多个节点中的所述一个节点的经更新的属性来替换所述属性的指令。
10.根据权利要求9所述的装置,其中所述程序模块还包括用于利用包括所述两个或更多个谓词的边缘来生成查询的指令;并且
其中所述两个或更多个谓词指定所述中心节点的所述标识符。
11.根据权利要求10所述的装置,其中所述程序模块还包括用于针对所述图数据库执行所述查询的指令。
12.根据权利要求9所述的装置,其中所述程序模块还包括用于基于所述两个或更多个谓词来将所述标识符分配到所述中心节点的指令,所述标识符是局部标识符。
13.根据权利要求12所述的装置,其中所述程序模块还包括用于在所述中心节点与包括所述局部标识符的节点之间添加与标识符谓词相关联的边缘的指令。
14.根据权利要求9所述的装置,其中所述程序模块还包括用于当所述属性谓词的基数大于一时,在所述中心节点与包括所述两个或更多个节点中的所述一个节点的经更新的属性的另一节点之间添加与所述属性谓词相关联的另一边缘的指令。
15.根据权利要求9所述的装置,其中所述中心节点的所述标识符对所述图的所述用户隐藏,使得所述中心节点的所述标识符在所述图数据库外部不可见。
16.一种用于将复合关系表示在存储在图数据库中的图中的系统,包括:
处理模块,所述处理模块包括存储指令的非瞬态计算机可读介质,所述指令当被执行时使得所述系统:
基于与所述图中的两个或更多个节点之间的两个或更多个边缘相关联的两个或更多个谓词来定义所述复合关系,其中所述复合关系表示所述两个或更多个边缘之间的关系;
在所述图中生成与所述复合关系相对应并且具有对所述图的用户隐藏的标识符的中心节点;
在所述中心节点与包括所述两个或更多个节点中的一个节点的属性的节点之间添加与属性谓词相关联的边缘;以及
当所述属性谓词的基数等于一时,利用所述两个或更多个节点中的所述一个节点的经更新的属性来替换所述属性。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/858,225 | 2015-09-18 | ||
US14/858,225 US9378303B1 (en) | 2015-09-18 | 2015-09-18 | Representing compound relationships in a graph database |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547809A CN106547809A (zh) | 2017-03-29 |
CN106547809B true CN106547809B (zh) | 2022-04-01 |
Family
ID=54850429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510965364.8A Active CN106547809B (zh) | 2015-09-18 | 2015-12-21 | 将复合关系表示在图数据库中 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9378303B1 (zh) |
EP (1) | EP3144826B1 (zh) |
CN (1) | CN106547809B (zh) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10387496B2 (en) * | 2015-05-21 | 2019-08-20 | International Business Machines Corporation | Storing graph data in a relational database |
US9535963B1 (en) | 2015-09-18 | 2017-01-03 | Linkedin Corporation | Graph-based queries |
US9330138B1 (en) | 2015-09-18 | 2016-05-03 | Linkedin Corporation | Translating queries into graph queries using primitives |
US9514247B1 (en) * | 2015-10-28 | 2016-12-06 | Linkedin Corporation | Message passing in a distributed graph database |
US10180992B2 (en) | 2016-03-01 | 2019-01-15 | Microsoft Technology Licensing, Llc | Atomic updating of graph database index structures |
US10789295B2 (en) | 2016-09-28 | 2020-09-29 | Microsoft Technology Licensing, Llc | Pattern-based searching of log-based representations of graph databases |
US10754859B2 (en) | 2016-10-28 | 2020-08-25 | Microsoft Technology Licensing, Llc | Encoding edges in graph databases |
US10162881B2 (en) * | 2017-01-17 | 2018-12-25 | Maana, Inc. | Machine-assisted key discovery and join generation |
US10838819B2 (en) | 2017-01-18 | 2020-11-17 | Microsoft Technology Licensing, Llc | Including personal relationship metadata within duplicated resources shared across partitioned storage |
US10536465B2 (en) | 2017-01-18 | 2020-01-14 | Microsoft Technology Licensing, Llc | Security for accessing stored resources |
US10542088B2 (en) | 2017-01-18 | 2020-01-21 | Microsoft Technology Licensing, Llc | Modifying data resources within party-partitioned storage areas |
US12019684B2 (en) | 2017-01-18 | 2024-06-25 | Microsoft Technology Licensing, Llc | Application programming interface arranged to interface with a plurality of data sources |
US10445321B2 (en) | 2017-02-21 | 2019-10-15 | Microsoft Technology Licensing, Llc | Multi-tenant distribution of graph database caches |
CN107391533B (zh) * | 2017-04-18 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 生成图形数据库查询结果的方法及装置 |
US10671671B2 (en) | 2017-06-09 | 2020-06-02 | Microsoft Technology Licensing, Llc | Supporting tuples in log-based representations of graph databases |
US20180357328A1 (en) * | 2017-06-09 | 2018-12-13 | Linkedin Corporation | Functional equivalence of tuples and edges in graph databases |
US10445370B2 (en) | 2017-06-09 | 2019-10-15 | Microsoft Technology Licensing, Llc | Compound indexes for graph databases |
US10628492B2 (en) * | 2017-07-20 | 2020-04-21 | Microsoft Technology Licensing, Llc | Distributed graph database writes |
US10983997B2 (en) | 2018-03-28 | 2021-04-20 | Microsoft Technology Licensing, Llc | Path query evaluation in graph databases |
CN109213747B (zh) * | 2018-08-08 | 2021-11-16 | 麒麟合盛网络技术股份有限公司 | 一种数据管理方法及装置 |
CN110209914B (zh) * | 2019-06-13 | 2024-04-12 | 腾讯科技(成都)有限公司 | 一种信息查询方法及相关装置 |
US11567995B2 (en) | 2019-07-26 | 2023-01-31 | Microsoft Technology Licensing, Llc | Branch threading in graph databases |
US11269867B2 (en) | 2019-08-30 | 2022-03-08 | Microsoft Technology Licensing, Llc | Generating data retrieval queries using a knowledge graph |
US11113267B2 (en) | 2019-09-30 | 2021-09-07 | Microsoft Technology Licensing, Llc | Enforcing path consistency in graph database path query evaluation |
CN110825743B (zh) * | 2019-10-31 | 2022-03-01 | 北京百度网讯科技有限公司 | 一种图数据库的数据导入方法、装置、电子设备和介质 |
CN111125265B (zh) * | 2019-12-13 | 2020-10-02 | 四川蜀天梦图数据科技有限公司 | 一种基于关系型数据库数据生成图数据的方法和装置 |
US11169979B2 (en) * | 2019-12-31 | 2021-11-09 | Intuit, Inc. | Database-documentation propagation via temporal log backtracking |
CN111506737B (zh) * | 2020-04-08 | 2023-12-19 | 北京百度网讯科技有限公司 | 图数据处理方法、检索方法、装置及电子设备 |
US11308104B2 (en) | 2020-06-25 | 2022-04-19 | Microsoft Technology Licensing, Llc | Knowledge graph-based lineage tracking |
JP2023548532A (ja) * | 2020-11-03 | 2023-11-17 | ライブランプ インコーポレーテッド | アイデンティティ・グラフ・データ構造におけるアサートされた関係マッチング |
CN112579709B (zh) * | 2020-12-17 | 2023-07-28 | 中国农业银行股份有限公司 | 一种数据表识别方法、装置、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851696A (zh) * | 2005-10-26 | 2006-10-25 | 华为技术有限公司 | 一种关联查询的系统及其方法 |
CN101682541A (zh) * | 2007-04-13 | 2010-03-24 | Hart通信基金会 | 使用有向图在网络上路由包 |
CN102163218A (zh) * | 2011-03-28 | 2011-08-24 | 武汉大学 | 基于图索引的图数据库关键词邻近搜索方法 |
US8185558B1 (en) * | 2010-04-19 | 2012-05-22 | Facebook, Inc. | Automatically generating nodes and edges in an integrated social graph |
CN103177066A (zh) * | 2011-12-20 | 2013-06-26 | Sap门户以色列有限公司 | 分析和表示人际关系 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6912524B2 (en) | 1998-05-20 | 2005-06-28 | Lucent Technologies, Inc. | Join synopsis-based approximate query answering |
US20050210023A1 (en) * | 2004-03-18 | 2005-09-22 | Renato Barrera | Query optimizer using implied predicates |
US7698267B2 (en) | 2004-08-27 | 2010-04-13 | The Regents Of The University Of California | Searching digital information and databases |
WO2007100834A2 (en) | 2006-02-27 | 2007-09-07 | The Regents Of The University Of California | Graph querying, graph motif mining and the discovery of clusters |
US7870087B2 (en) | 2006-11-02 | 2011-01-11 | D-Wave Systems Inc. | Processing relational database problems using analog processors |
US8868620B2 (en) * | 2007-06-08 | 2014-10-21 | International Business Machines Corporation | Techniques for composing data queries |
US8156134B2 (en) | 2007-11-15 | 2012-04-10 | International Business Machines Corporation | Using different groups of query graph transform modules to generate execution plans for queries for different database types |
US8095515B2 (en) | 2008-03-19 | 2012-01-10 | Semmle Limited | Approximating relation sizes using field dependencies |
US8326847B2 (en) | 2008-03-22 | 2012-12-04 | International Business Machines Corporation | Graph search system and method for querying loosely integrated data |
US8219591B2 (en) | 2010-05-03 | 2012-07-10 | Hewlett-Packard Development Company, L.P. | Graph query adaptation |
US9495429B2 (en) | 2010-07-09 | 2016-11-15 | Daniel Paul Miranker | Automatic synthesis and presentation of OLAP cubes from semantically enriched data sources |
US8983990B2 (en) | 2010-08-17 | 2015-03-17 | International Business Machines Corporation | Enforcing query policies over resource description framework data |
US20120096043A1 (en) | 2010-10-19 | 2012-04-19 | 7 Degrees, Inc. | Data graph cloud system and method |
JP5100820B2 (ja) | 2010-11-25 | 2012-12-19 | 株式会社東芝 | 問合せ式変換装置、方法およびプログラム |
US8489649B2 (en) * | 2010-12-13 | 2013-07-16 | Oracle International Corporation | Extensible RDF databases |
US9116955B2 (en) | 2011-05-02 | 2015-08-25 | Ab Initio Technology Llc | Managing data queries |
US8773437B1 (en) | 2011-07-12 | 2014-07-08 | Relationship Science LLC | Weighting paths in a social graph based on time |
US8977611B2 (en) * | 2011-10-18 | 2015-03-10 | Facebook, Inc. | Ranking objects by social relevance |
US20150026158A1 (en) | 2012-01-31 | 2015-01-22 | Kent State University | Systems, methods, and software for unified analytics environments |
US8533182B1 (en) | 2012-05-31 | 2013-09-10 | David P. Charboneau | Apparatuses, systems, and methods for efficient graph pattern matching and querying |
EP2731022B1 (en) * | 2012-11-07 | 2015-02-18 | Fujitsu Limited | Method and apparatus for storing encoded graph data |
US9053210B2 (en) * | 2012-12-14 | 2015-06-09 | Microsoft Technology Licensing, Llc | Graph query processing using plurality of engines |
EP2755148A1 (en) * | 2013-01-15 | 2014-07-16 | Fujitsu Limited | Data storage system, and program and method for execution in a data storage system |
US10713261B2 (en) * | 2013-03-13 | 2020-07-14 | Google Llc | Generating insightful connections between graph entities |
US20140310302A1 (en) | 2013-04-12 | 2014-10-16 | Oracle International Corporation | Storing and querying graph data in a key-value store |
US20140330867A1 (en) | 2013-05-01 | 2014-11-06 | Silicon Graphics International Corp. | Software design pattern for adapting a graph database visualization software |
US20140337373A1 (en) | 2013-05-07 | 2014-11-13 | Magnet Systems, Inc. | System for managing graph queries on relationships among entities using graph index |
US9317557B2 (en) | 2013-10-24 | 2016-04-19 | Microsoft Technology Licensing, Llc | Answering relational database queries using graph exploration |
US20150120717A1 (en) | 2013-10-25 | 2015-04-30 | Marketwire L.P. | Systems and methods for determining influencers in a social data network and ranking data objects based on influencers |
US9542440B2 (en) | 2013-11-04 | 2017-01-10 | Microsoft Technology Licensing, Llc | Enterprise graph search based on object and actor relationships |
IN2013CH05115A (zh) * | 2013-11-12 | 2015-05-29 | Inmobi Pte Ltd | |
US20150302300A1 (en) * | 2014-04-18 | 2015-10-22 | Voalte, Inc. | Efficient graph-based rule engine for complex, dynamic, unstructured data |
US20150302063A1 (en) * | 2014-04-21 | 2015-10-22 | Linkedln Corporation | System and method for searching a distributed node-sharded graph |
-
2015
- 2015-09-18 US US14/858,225 patent/US9378303B1/en active Active
- 2015-12-18 EP EP15201256.3A patent/EP3144826B1/en active Active
- 2015-12-21 CN CN201510965364.8A patent/CN106547809B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1851696A (zh) * | 2005-10-26 | 2006-10-25 | 华为技术有限公司 | 一种关联查询的系统及其方法 |
CN101682541A (zh) * | 2007-04-13 | 2010-03-24 | Hart通信基金会 | 使用有向图在网络上路由包 |
US8185558B1 (en) * | 2010-04-19 | 2012-05-22 | Facebook, Inc. | Automatically generating nodes and edges in an integrated social graph |
CN102163218A (zh) * | 2011-03-28 | 2011-08-24 | 武汉大学 | 基于图索引的图数据库关键词邻近搜索方法 |
CN103177066A (zh) * | 2011-12-20 | 2013-06-26 | Sap门户以色列有限公司 | 分析和表示人际关系 |
Also Published As
Publication number | Publication date |
---|---|
EP3144826A1 (en) | 2017-03-22 |
CN106547809A (zh) | 2017-03-29 |
EP3144826B1 (en) | 2022-11-16 |
US9378303B1 (en) | 2016-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106547809B (zh) | 将复合关系表示在图数据库中 | |
US9672247B2 (en) | Translating queries into graph queries using primitives | |
US9535963B1 (en) | Graph-based queries | |
US9378241B1 (en) | Concatenated queries based on graph-query results | |
US9686086B1 (en) | Distributed data framework for data analytics | |
US10180992B2 (en) | Atomic updating of graph database index structures | |
US9378239B1 (en) | Verifying graph-based queries | |
US10671671B2 (en) | Supporting tuples in log-based representations of graph databases | |
US20170139991A1 (en) | Dynamic query plan based on skew | |
US20170212945A1 (en) | Branchable graph databases | |
US9990443B2 (en) | Message passing in a distributed graph database | |
US20170255708A1 (en) | Index structures for graph databases | |
US11567995B2 (en) | Branch threading in graph databases | |
US11500865B1 (en) | Multiple stage filtering for natural language query processing pipelines | |
US20200097615A1 (en) | Difference-based comparisons in log-structured graph databases | |
US11720543B2 (en) | Enforcing path consistency in graph database path query evaluation | |
US9807169B2 (en) | Distributed tagging of data in a hybrid cloud environment | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
US11604794B1 (en) | Interactive assistance for executing natural language queries to data sets | |
CN110720097A (zh) | 图数据库中元组和边的功能性等价 | |
US20180113908A1 (en) | Transforming and evaluating missing values in graph databases | |
US10417439B2 (en) | Post-hoc management of datasets | |
US11726994B1 (en) | Providing query restatements for explaining natural language query results | |
Angelis et al. | Generating and exploiting semantically enriched, integrated, linked and open museum data | |
US11893001B2 (en) | Systems and methods for storing blend objects |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20180509 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: California Applicant before: LINKEDIN CORPORATION |
|
TA01 | Transfer of patent application right | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |