CN110720097A - 图数据库中元组和边的功能性等价 - Google Patents
图数据库中元组和边的功能性等价 Download PDFInfo
- Publication number
- CN110720097A CN110720097A CN201780091814.2A CN201780091814A CN110720097A CN 110720097 A CN110720097 A CN 110720097A CN 201780091814 A CN201780091814 A CN 201780091814A CN 110720097 A CN110720097 A CN 110720097A
- Authority
- CN
- China
- Prior art keywords
- tuple
- edges
- query
- subset
- nodes
- 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.)
- Withdrawn
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/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- 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/903—Querying
- G06F16/90335—Query processing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
所公开的实施例提供了一种用于处理对图数据库的查询的系统。在操作期间,系统执行用于处理对存储图的图数据库的查询的一组过程,其中,该图包括一组节点、节点对之间的边、和一组谓语。接下来,系统获得包含第一元组的第一查询以及包含边的第一子集的第二查询。系统将第一元组转换成边的第二子集,并将边的第一子集转换成第二元组。最后,系统使用边的第二子集来生成第一查询的第一结果,并使用第二元组来生成第二查询的第二结果,并且在对第一查询的第一响应中提供第一结果并在对第二查询的第二响应中提供第二结果。
Description
技术领域
所公开的实施例涉及图数据库。更加具体地,所公开的实施例涉及图数据库中的元组和边的功能性等价。
背景技术
与应用相关联的数据常常被组织并存储在数据库中。例如,在关系数据库中,数据基于关系模型而被组织成有行和列的一个或多个表格,其中,行表示数据实体类型的实例,而列表示相关联的值。可以使用以结构化查询语言(SQL)表示的查询来从关系数据库中提取信息。
原则上,通过将不同表格中的行进行链接或关联,可以在关系数据库中表示复杂的关系。实际上,提取这样复杂的关系通常需要执行一组查询,并且接着确定结果的交集或者加入结果。通常而言,通过利用底层关系模型的知识,所述一组查询可以被识别并且接着以最佳方式被执行。
然而,应用通常不知道关系数据库中的关系模型。替代地,从应用的角度来看,数据通常被视为存储器中具有相关联指针的对象(宾语)的层级结构。因此,许多应用以零碎的方式生成查询,这可能使得难以以最佳方式在关系数据库上识别或执行一组查询。在使用应用时,这可能会降低性能和用户体验。
在尝试解决该问题时已经使用了各种方法,包括使用宾语关系映射器,以使得应用有效地具有对关系数据库中的关系模型的理解或知识。然而,通常很难生成和保存宾语-关系映射器,尤其是对于大型的、实时的应用而言。
可替代地,可以使用键值存储单元(例如,NoSQL数据库)而代替关系数据库。键值存储单元可以包括宾语或记录以及具有记录值的相关联的字段的集合。可以使用唯一地标识记录的键来存储或获取键值存储单元中的数据。通过避免使用预先定义的关系模型,键值存储单元可以允许应用使用相关联的指针(即,以与应用的观点一致的方式)将数据作为存储器中的宾语来访问。然而,缺少关系模型意味着可能难以优化键值存储单元。因此,从键值存储单元中提取复杂的关系也很困难(例如,可能需要多个查询),这也会在使用应用时降低性能和用户体验。
附图说明
图1示出了根据所公开的实施例的系统的示意图。
图2示出了根据所公开的实施例的图数据库中的图。
图3示出了根据所公开的实施例的用于处理对图数据库的查询的系统。
图4示出了根据所公开的实施例的图数据库中的元组和一组边的功能性等价。
图5示出了根据所公开的实施例的与图数据库中的元组相关联的写操作的处理。
图6示出了流程图,该流程图示出了根据所公开的实施例的对图数据库的查询的处理。
图7示出了流程图,该流程图示出了根据所公开的实施例的对图数据库的查询的处理。
图8示出了根据所公开的实施例的计算机系统。
在附图中,相似的附图标记指代相同的附图元素。
具体实施方式
以下描述被呈现以使得任何本领域技术人员能够制造和使用所述实施例,并且在特定应用及其要求的上下文中被提供。对于所公开的实施例的各种修改对于本领域技术人员而言将是显而易见的,并且在不脱离本公开的精神和范围的情况下,本文中定义的一般原理可以应用于其他实施例和应用。因此,本发明不限于所示出的实施例,而是应当被赋予与本文所公开的原理和特征相一致的最宽范围。
在该详细描述中所描述的数据结构和代码通常被存储在计算机可读存储介质上,该计算机可读存储介质可以是能够存储由计算机系统使用的代码和/或数据的任何设备或介质。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、磁和光存储设备(例如,盘驱动器、磁带、CD(压缩盘)、DVD(数字通用盘或数字视频盘)),或者能够存储目前已知或以后开发的代码和/或数据的其他介质。
在详细描述部分中描述的方法和过程可以被实施为代码和/或数据,其可以被存储在如上所述的计算机可读存储介质中。当计算机系统读取并执行存储在计算机可读存储介质上的代码和/或数据时,计算机系统执行被实施为数据结构和代码并被存储在计算机可读存储介质内的方法和过程。
此外,本文描述的方法和过程可以被包括在硬件模块或装置中。这些模块或装置可以包括但不限于专用集成电路(ASIC)芯片、现场可编程门阵列(FPGA)、在特定时间执行特定软件模块或一段代码的专用或共享处理器、和/或现在已知或以后开发的其他可编程逻辑设备。当硬件模块或装置被激活时,它们执行在其中包括的方法和过程。
所公开的实施例提供了一种用于处理对图数据库的查询的方法、装置、和系统。在图1中示出了用于执行图存储技术的系统100。在此系统中,电子设备110的用户可以使用至少部分地使用在系统100中执行的一个或多个软件产品或应用提供的服务。如下文进一步所述,应用可以由系统100中的引擎执行。
此外,可以使用驻留在电子设备110上并在其上执行的软件应用的实例来至少部分地提供该服务。在一些实现中,用户可以与由通信服务器114经由网络112提供并且由电子设备110上的web浏览器呈现的网页进行交互。例如,在电子设备110上执行的软件应用的至少一部分可以是嵌入在网页中并且在web浏览器的虚拟环境中执行的应用工具。因此,该应用工具可以经由客户端-服务器架构被提供给用户。
用户操作的软件应用可以是独立的应用,或者可以是驻留在电子设备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中以及从图数据库200获取的方法的实施例。这样的方法在美国专利No.9,535,963(2017年1月3日发布)中被描述,该美国专利的发明人为Srinath Shankar、RobStephenson、Andrew Carter、Maverick Lee和Scott Meyer,标题为“基于图的查询(Graph-Based Queries)”,其通过引用并入在本文中。
参考回图1,在本文中所描述的图存储技术可以允许系统100高效且快速(例如,最佳地)存储和获取与应用和社交网络相关联的数据,而不需要应用具有在图数据库200中实现的关系模型的知识。因此,图存储技术可以改进应用、社交网络和系统100的可用性以及性能或功能,这可以减少用户的挫败感并且可以改进用户体验。因此,图存储技术可以增加对社交网络的参与或使用,并且因此可以增加社交网络的提供者的收入。
注意,系统100中的信息可以被存储在一个或多个位置(即,本地和/或远程)。此外,因为该数据性质上可能是敏感的,因此其可以被加密。例如,所存储的数据和/或经由网络112和/或116传送的数据可以被加密。
在一个或多个实施例中,图数据库200包括用于转换和评估与图数据库的节点、边、和/或其他组件相关联的缺失值的功能。如在图3中所示,可以从图数据库200的真相来源334获得图210以及与图210相关联的一个或多个模式306。例如,可以从关系数据库、分布式文件系统、和/或提供真相来源的其他存储机制获取图210和模式306。
如上所述,图210可以包括一组节点316、节点对之间的一组边318、以及描述节点和/或边的一组谓语320。可以以(主语,谓语,宾语)三元组来指定图中的每个边。例如,可以使用以下语句指定表示名为“Alice”和“Bob”的两个成员之间的连接的边:
Edge(“Alice”,“ConnectedTo”,“Bob”).
在上面的语句中,“Alice”是主语,“Bob”是宾语,“ConnectedTo(连接至)”是谓语。“Edge(边)”语句之后的句号可以表示断言,该断言用于将边写至图数据库200。相反,该句号可以用问号代替,以从该图数据库中读取与该主语、谓语、和宾语相匹配的任何边:
Edge(“Alice”,“ConnectedTo”,“Bob”)?
随后的语句可以使用波浪号来修改初始语句,以指示从图数据库200中删除边:
Edge~(“Alice”,“ConnectedTo”,“Bob”).
此外,可以使用模式306来定义图210中的特定类型的边和/或复杂关系。继续先前的示例,可以使用以下项来定义在公司内某个位置的成员的雇用模式:
DefPred(″employ/company″,″1″,″node″,″0″,″node″).
DefPred(″employ/member″,″1″,″node″,″0″,″node″).
DefPred(″employ/start″,″1″,″node″,″0″,″date″).
DefPred(″employ/end_date″,″1″,″node″,″0″,″dete″).
M2C@(e,memberId,companyId,start,end):-
Edge(e,″employ/member″,memberId),
Edge(e,″employ/company″,companyId),
Edge(e,″employ/start″,start),
Edge(e,″employ/end_date″,end)
在以上方案中,针对雇用的复合结构由“@”符号表示,并且具有“M2C”的复合词类型。所述复合词还由四个谓语表示,并且后跟有使用谓语的四个边的规则。谓语包括表示公司雇用的第一谓语(例如“employ/company(雇用/公司)”),表示成员雇用的第二谓语(例如“employ/member(雇用/成员)”),表示雇用开始日期的第三谓语(例如“employ/start(雇用/开始)”)以及表示该雇用的结束日期的第四谓语(例如“employ/end_date”)。在规则中,第一边使用第二谓语来指定由“memberId”表示的成员的雇用,第二边使用第一谓语来指定以“companyId”表示的公司的雇用。规则的第三边使用第三谓语指定雇用的“开始”日期,规则的第四边使用第四谓语指定雇用的“结束”日期。所有四个边共享一个由“e”表示的共同主语,该主语充当链接边以形成复合关系的中心节点。
因此,查询308中或以其他方式存储在图数据库200中的复合词(例如,复合词310),可以使用图数据库200中的一组基本类型(例如,包含二进制边318的多组边330)来建模复杂的关系(例如,在公司内某个位置雇用成员)。更加具体地,每个复合词可以表示图中的n元关系,其中关系的每个“分量”使用边的谓语和宾语(或主语)被标识。接着,可以使用被设置为表示该复合词的中心节点的公共主语(或宾语),将对关系进行建模的一组“n”个边链接至该复合词。进而,可以通过指定将复合结构与模式306中的基本类型相关联的关系,将新的复合词动态地添加至图数据库200中,而无需改变在图数据库200中使用的基本类型。
图210和模式306可以另外用于填充图数据库200,以针对该图处理查询308。更加具体地,可以从真相来源334获得节点316、边318、和谓语320的表示并且将其存储在图数据库中的日志312中。可以通过将对图210的改变附加到日志末尾来实现对图数据库的无锁访问,而不需要修改事实来源中的现有记录。进而,图数据库可以提供对日志312和索引314的存储器中高速缓存,以用于对图的高效和/或灵活的查询。
节点316、边318和谓语320可以作为偏移量被存储在日志312中。例如,用于在名为“Alice”和“Bob”的两个成员之间创建连接的示例性边语句可以使用以下格式被存储在二进制日志312中:
256 Alice
261 Bob
264 ConnectedTo
275 (256,264,261)
在上述格式中,日志中的每个条目都以数字(例如,整数)偏移量开头,以表示该条目与日志开头分开的字节数。第一条目“Alice”具有256的偏移量,第二条目“Bob”具有261的偏移量,第三条目“ConnectedTo”具有264的偏移量。第四条目具有275的偏移量并且将“Alice”和“Bob”之间的连接存储为前三个条目的偏移量,顺序是在用于创建连接的语句中指定对应字段的顺序(例如,Edge(“Alice”,“ConnectedTo”,“Bob”))。
因为对图的改变的顺序被保留在日志312中,所以日志中的偏移量可以被用作图中虚拟时间的表示。更加具体地,每个偏移量可以表示图中的不同虚拟时间,并且可以使用日志中多至偏移量的改变以在虚拟时间处建立图的状态。例如,可以以改变被写的顺序应用从日志开始直到大于0的给定偏移量的改变序列,以在由偏移量表示的虚拟时间构造图的表示。
图数据库200还可以包括存储器中索引314,其使能通过主语、谓语、宾语、和/或其他键或参数310来高效地查找边318。在共同未决的非临时申请中描述了图数据库的索引结构,所述申请的发明人为SungJu Cho、Jiahong Zhu、Yinyi Wang、Roman Averbukh、ScottMeyer、Shyam Shankar、Qingpeng Niu、和Karan Parikh,标题为“Index Structures forGraph Databases(针对图数据库的索引结构)”,序号为15/058,028,申请日为2016年3月1日(代理人案号LI-P1662.LNK.US),该申请通过引用并入本文。
在一个或多个实施例中,图3的系统包括处理图210中包含复合词310的查询308的功能。如上所述和在上文引用的申请中,每个复合词可以将n元关系建模为符合模式(例如,模式306)的一系列边。该复合词还可以被包含在一个或多个查询308中,所述查询308在图数据库200中读取和/或写入记录。例如,可以使用上述示例性雇用模式和以下查询来创建图数据库200中的一个或多个记录:
M2C@(e,″5678″,″9012″,″1443657600″,″2147483647″)。
上述查询末尾的句号可用于在图数据库200中写入包含“memberID”为“5678”的成员在“companyID”为“9012”的公司的雇用信息的记录。雇用信息还包括以新纪元(epoch)时间为“1443657600”的开始日期和以新纪元时间为“2147483647”的结束日期。
相反,可以使用以下查询从图数据库200中读取记录:
M2C@(e,″5678″,″9012″,″1443657600″,″2147483647″)?
上述查询末尾的问号可用于从图数据库200中获取与以下四个边表示的对应的雇用信息相匹配的记录:
Edge(e,″employ/member″,″5678″)
Edge(e,″employ/company,″9012″)
Edge(e,″employ/start″,″1443657600″)
Edge(e,″employ/end_date″,″2147483647″)
四个边共享中心节点“e”作为公共主语,包括上述“M2C”规则中指定的谓语,并具有与查询参数相匹配的宾语。
如上所述,复合词310可以被表示和/或存储为图数据库200中的边集合330(即,多组边),其中,每一组边包含共享作为共同主语(或者可替代地,共同的宾语)的中心节点的边。所述一组边中的每个边还可以包括在对应复合词的模式(例如,模式306)中指定的谓语,以及包含该谓语表示的属性的值的宾语(或主语)。
可替代地,复合词310可以被格式化和/或存储为图数据库328中的元组328。每个元组可以包括具有与元组有关的信息的头部,该信息包括元组的长度、与复合词相关联的写操作(例如,添加或删除)、和/或与复合词中的谓语相关的一组基数(cardinality)。头部之后可以是对应的复合词的复合词类型和一组身份赋予节点,其中每个身份赋予节点都包含谓语-宾语对,该谓语-宾语对表示复合词中的对应属性。因此,元组可以是高效地被引用且被存储在日志312的单个条目内的复合词的紧凑表示。此外,元组在功能上可以等同于包含中心节点的一组边,所述中心节点标识该元组和该元组中的谓语-宾语对。
为了促进对包含复合词310的查询308的处理,转换装置302可以使用元组328与相应边集合330之间的功能等同,以将查询308中的复合词310在元组328与边集合330之间进行转换。转换装置302可以使用来自查询的复合词来从日志312和/或索引314中获取元组,将该元组转换成对应的一组边,并响应于查询而返回该一组边。在另一个示例中,转换装置302可以将具有相同中心节点的一组边映射至元组,并且将该元组写入日志312和/或索引314。下文参考图4进一步详细描述了图数据库中的元组和边集合的功能性等价。
在查询308被接收并且可选地被转换之后,转换设备302和/或与图数据库200相关联的另一查询处理组件可以使用查询308和图数据库200来生成查询结果326。例如,该组件可以将查询308中的复合词310映射至日志312和/或索引314中的元组328和/或边集合330。该组件还可以在查询308的处理期间在元组328和/或边集合330之间进行转换,以使得查询结果326以默认和/或指定格式被存储在日志312中和/或在对查询308的响应中被返回。
本领域技术人员将认识到,图3的系统可以以各种方式来实现。首先,可以由单个物理机器、多个计算机系统、一个或多个虚拟机、网格、一个或多个数据库、一个或多个文件系统、和/或云计算系统来提供转换装置302、图数据库200、和/或事实来源334。转换装置302和图数据库200可以另外由一个或多个硬件和/或软件组件和/或层一起和/或分开地实现。
第二,系统的功能可以与其他类型的数据库和/或数据一起使用。例如,复合词310、元组328、边集合330、和/或查询308的转换可以与支持灵活模式和/或查询的其他系统一起被执行。
图4示出了根据所公开的实施例的图数据库中的元组404和一组边(例如,边1406,边n 408)的功能性等价。如上所述,元组404和/或所述一组边可以从使用针对图数据库的模式定义的复合词402创建。换句话说,复合词402可以用作图数据库中给定数据类型或结构的模板,并且从复合词402创建的每个元组404和/或每组边可以表示所述数据类型或结构的实例。
此外,复合词402可以定义元组404和一组边之间的功能性等价。如图4所示,复合词402可以包括复合词类型412和一组谓语(例如,谓语1 414,谓语n 416)。复合词类型412可以标识表示复合词402的数据类型,并且谓语可以指定为复合词402赋予身份的数据类型。即,复合词402中声明的谓语可以是强制性的“身份赋予”属性,其用于区分在不同元组、边集合和/或由复合词402表示的n元关系的其他实例。
用于复合词402的模式可以指定复合词类型412、谓语、以及谓语映射到的一组边。例如,复合词402可以包括用于认可在线专业网络中的技能的以下模式:
DefPred(″endorser″,″1″,″node″,″0″,″node″).
DefPred(″endorsee″,″1″,″node″,″0″,″node″).
DefPred(″skill″,″1″,″node″,″0″,″node″).
Endorsement@(h,Endorser,Endorsee,Skill):-
Edge(h,″endorser″,Endorser),
Edge(h,″endorsee″,Endorsee),
Edge(h,″skill″,Skill).
在以上模式中,使用“@”符号声明复合词402,并将“Endorsement(认可)”指定为复合词类型412。复合词402由被定义为“endorser(认可者)”、“endorsee(被认可者)”和“skill(技能)”的三个谓语表示。“endorser”谓语可以表示进行认可的成员,“endorsee”谓语可以表示接受认可的成员,“skill”谓语可以表示针对其给予认可的技能。声明之后是将三个谓语映射到三个边的规则。第一边使用第一谓语将endorser标识为在“Endorser”参数中指定的值,第二边使用第二谓语将endorsee标识为在“Endorsee”参数中指定的值,第三边使用第三谓语将skill指定为在“Skill”参数中指定的值。所有三个边共享由“h”表示的公共主语,该主语充当链接边以形成复合关系的中心节点410。因此,该模式可以声明“Endorsement”复合词402的三元关系,该关系由具有“endorser”、“endorsee”和“skill”的类型的身份赋予属性所定义,并且值被附加在对应的谓语上。
作为结果,可以将在模式中为复合词402指定的谓语复制到对复合词402的实例建模的边(例如,边1406,边n 408)的谓语436-438。边中的宾语444-446可以存储与由谓语436-438表示的身份赋予属性有关的值,并且可以将中心节点410包括为所有边共享的共同主语。
例如,可以使用以下语句创建“Endorsement”复合词的实例:
Endorsement@(h,″Alice″,″Bob″,″C++″)。
该语句可以作为查询被执行,该查询在图数据库中创建以下一组边:
Edge(h,″endorser″,″Alice″)
Edge(h,″endorsee″,″Bob″)
Edge(h,″skill″,″C++″)
复合词402表示的关系的实例也可以或者替代地使用元组404被建模或存储。为了标识每个实例,可以在元组404中指定复合词类型412。元组404还可以作为一组身份赋予节点(例如,身份赋予节点1420,身份赋予节点n 422)包括可变数量的重复键值对,其中每个键设置为复合词402中的谓语,而值设置为根据复合词402创建的等效边中的对应的宾语。
继续先前的示例,“Endorsement”语句可以作为查询被执行,该查询在元组404中创建身份赋予节点的以下表示:
[(″endorser″,″Alice″),(″endorsee″,″Bob″),
(″skill″,″C++″)]
上面的表示包括与元组404中的三个身份赋予节点相对应的三个键值对。第一键值对存储一组边中第一边的谓语和宾语(“endorser”和“Alice”),第二键值对存储一组边中第二边的谓语和宾语(“endorsee”和“Bob”),第三键值对存储一组边中第三边的谓语和宾语(“skill”和“C++”)。因此,可以将复合词402的边表示形式中的谓语和宾语(例如,边1406,边n 408)直接映射至元组404的身份赋予节点中的键值对。
元组404可以另外使用中心节点410映射到等效边表示。例如,中心节点410的标识符可以被设置为图数据库的基于日志的表示中的元组404的偏移量。接着,可以将相同的标识符作为主语被包括在对元组404中存储的复合词402的实例中的n元关系进行建模的边中。此外,边中的谓语436-438和宾语444-446可以具有与来自元组404的身份赋予节点的对应的键值对相同的值。进而,可以使用中心节点410和元组404的标识符之间的映射以及元组404中的边和身份赋予节点中的谓语436-438和宾语444-446之间的另外的映射,在边表示和元组404之间转换复合词402的每个实例。
中心节点410和/或元组404的标识符还可以用于将另外的非身份赋予属性链接至由复合词402表示的n元关系。另外的属性可以被建模为边(例如,边a 432,边x 434),其包含中心节点410作为主语,但具有与复合词402中的谓语和宾语对不同的谓语440-442和宾语448-450的对。另外的属性也可以或者替代地被存储为元组404中的身份赋予节点之后的键值对。
继续先前的示例,可以使用以下内容补充“Endorsement”语句:
Endorsement@(h,″Alice″,″Bob″,″C++″),
Edge(h,″score″,″3.0″).
在上面的经修改的语句中,可以在“Endorsement”复合词402的实例中补充包含谓语“score(分数)”和宾语“3.0”的另外的边。作为三元关系的另外“可选”属性,另外的边可以存储表示对应认可的强度的数字分数3.0。因为相对于“Endorsement”复合词402,“score”谓语是非给定身份的,所以可以独立于认可实例来创建或更新分数(例如,随着分数被计算或被离线更新)。“Score”谓语还可以具有基数一,以使得具有被设置为认可实例和“score”谓语的中心节点的主语的随后的边用相同的主语和谓语替换先前的边。
可选地,可以使用以下方式指定修改后的语句:
Edge(Endorsement@(h,″Alice″,″Bob″,″C++″),
″score″,″3.0″).
在上面的语句中,“Endorsement”复合实例的声明被嵌套在用于指定与该实例关联的另外的属性的边的语句内。
为了将元组404进一步定义为复合词402的实例,元组404中的身份赋予节点可以符合预定的顺序。例如,身份赋予节点中的谓语可以按字母顺序、通过基数、和/或根据其他标准而被排序。进而,排序可以使元组中元素的固有排序与边的无序集合一致,作为图数据库中复合关系的两种不同表示形式。
元组404还包括具有用于处理与元组404和/或复合词402有关的查询的另外信息的头418。首先,头部418指定与身份赋予节点相关联的一组基数424。如果属性也存储在元组404中,则可以可选地为非身份赋予的可选属性(例如,分数)指定基数424。例如,基数424可以包括用于区分基数等于1的谓语与基数大于1的谓语的位、标签、和/或其他指示符。作为结果,具有等于一的基数的谓语(例如,生日)只能在整个元组404中被找到一次,而具有大于一的基数的谓语(例如,朋友或关系)可以在元组404中出现多次。
第二,头部418包括元组404的长度426。例如,长度426可以指定头部418之后元组404占用的字节数。在另一个示例中,长度426可以包括身份赋予节点数,以及可选地,元组404中身份赋予节点之后的非身份赋予属性的数量。进而,长度426和/或基数424可以允许元组404适应于具有不同基数的任意元数和/或谓语的复合关系。
第三,头部418包括与图数据库中的写操作有关的多个指示。如在图4中所示,该指示包括添加/删除428指示和非断言426指示。添加/删除428可以是位、标志和/或其他数据类型,其将元组404标识为复合词402的对应实例向图数据库的添加或该实例从图数据库的删除。
非断言426可以用于指示或“声明”复合词402的实例,而无需断言该实例在图数据库中被添加或删除。作为结果,在不改变图中实例存在的情况下,可以使用非断言426来引用图数据库中的实例。例如,可以在以下查询中使用非断言426:
Endorsement@&(h,″Alice″,″Bob″,″C++″),
Edge(h,″score″,″3.0″)。
在上面的查询中,“Endorsement”复合词402声明为和符号“&”,表示要对“Endorsement”应用非断言426。该声明可用于标识后续“score”边所引用的复合词402实例,而无需修改实例在图中的当前状态。因此,如果实例已经存在于图数据库中(即,如果可以在图数据库中找到表示该实例的元组或一组边),则将边写入图数据库,而无需修改实例在图中的现有状态(例如,添加,删除或非断言)。相反,如果实例在图数据库中不存在(即,如果在图数据库中找不到表示该实例的元组或一组边),则将该实例作为元组404和/或一组边写入图数据库中,并且实例包括非断言430的指示(例如,位或标志)。非断言430的指示可以允许“score”边引用实例,而无需断言实例中的边和/或身份赋予节点已经被添加到图中或从图中被删除。
可以基于图数据库中实例402的状态来处理复合词402给定实例的随后查询。特别地,实例的第一添加或非断言430可以使实例以对应的状态(即,添加或非断言)被写入图数据库。接着,可以基于实例的现有状态以及以该写入应用于实例的状态来断言或重复实例向图数据库的随后写入,如下文相对于图5更详细地描述的。
图5示出了根据所公开的实施例的与图数据库中的元组相关联的写操作的处理。如上所述,元组可以在图数据库中存储或建模复合词的实例,例如图4的复合词402。该实例可以可替代地或另外地被表示为图数据库中的边集合。因此,代替对功能等效的元组应用相同的处理或者作为将相同的处理应用于功能等效的元组的补充,以下描述的写操作的处理可以应用于所述边集合。
可以基于图中实例的先前状态来断言、去重复、和/或写入在图数据库中写或修改元组的状态(或边的功能上等效的集合)的查询。如在图5中所示出的,元组的状态可以包括元组的添加504、元组的删除506、和/或元组的非断言502。
在查询中声明实例之前,元组在图和图数据库中都可以具有不存在的状态500。也就是说,图和图数据库都可以缺少标识元组的数据。作为结果,可以断言(即,应用)指定对元组的添加504的查询。例如,可以通过将包含元组的条目写入图数据库并且在该条目中包括添加504的指示,将该实例的状态从不存在500改变为添加504。
将实例的状态从不存在500改变为非断言502的查询可以导致将元组写入图数据库并在该元组中设置非断言502的指示。因为实例处于非断言状态502,所以可以使用元组来标识实例,而无需将实例添加至存储在图数据库中的图。作为结果,即使当元组的给定身份属性与读取查询的参数匹配时,也可以从随后读取查询的结果中省略非断言的实例。另一方面,元组是实例在图数据库的基于日志的表示中的首次出现,因此可以充当实例在图数据库中的“声明”。作为结果,非断言元组的偏移量可用作实例的标识符(例如,在改变实例状态的随后的写中)。该偏移量还可以为表示实例的一组边定义中心节点。
最后,可以将将实例状态从不存在500改变为删除506的查询进行去重复。例如,可以丢弃指定从图数据库中删除506不存在的实例的查询。
在实例的初始非断言502之后的实例的添加504可以导致添加504的断言。例如,可以将包含元组的条目或对初始非断言元组的引用附加到图数据库的基于日志的表示中,并且在条目中可以包括添加504的指示。因为附加条目发生在实例的较早的非断言502之后,所以可以将附加条目中的实例的添加504作为对图数据库的改变来应用,其覆盖实例的先前的非断言502。
在断言了元组的添加504之后,可以对实例的随后添加和非断言进行去重复(例如,通过不对图数据库进行对应的写操作)。类似地,在将实例的初始非断言502写至数据库之后,可以对该实例的随后非断言和删除进行去重复。
可以断言在添加504之后指定删除506的查询。例如,包含元组或对元组的标识符的引用的条目可以被附加至图数据库的基于日志的表示,并且删除指示506可以被包括在该条目中。进而,附加条目可能导致实例的较早添加504被删除506修改。
类似地,可以断言在元组先前被删除之后指定添加504的查询。例如,可以将包含元组或对元组的标识符的引用的条目附加到图数据库的基于日志的表示中,并且可以在元组中包括添加504的指示。因此,通过将实例重新添加到图,附加条目可以撤消先前的删除506。
图6示出了图示根据所公开的实施例的图数据库的查询的处理的流程图。更加具体地,图6的流程图包括流程图示出了在查询处理期间图数据库中的元组和一组边之间的转换。在一个或多个实施例中,可以以不同的顺序省略、重复和/或执行一个或多个步骤。由此,图6所示的步骤的具体布置不应当被解释为限制该技术的范围。
最初,将查询与元组或一组边进行匹配(操作602)。例如,查询可以将图数据库中的复合关系指定为元组或一组边。该复合词可以被嵌套在查询中的另一个语句内。可替代地,查询可以指定一个或多个与图数据库中复合词的实例相关联的身份赋予属性。接着,可以基于查询的参数、图数据库的配置参数、和/或复合词的默认表示,将身份赋予属性与元组或一组边进行匹配。
如果查询与元组相匹配,则将元组转换成对应的一组边。首先,从元组获得一组谓语-宾语对(操作604),并将其包括在一组边中(操作606)。例如,可以从元组中的身份赋予节点列表中获得谓语-宾语对,并且来自元组的每个谓语-宾语对可以用于填充单独的边。
接下来,表示元组的中心节点被包括作为由边共享的主语(操作608)。例如,图数据库的基于日志的表示中的元组的偏移量可以用作中心节点的标识符,并且每个边的主语可以被设置为该标识符。接着,将所述边用于生成查询的结果(操作610)。例如,所述边可以被包括在结果中,被写入图数据库,用于生成“符号图”作为存储在图数据库中的图的子集,和/或以其他方式用于查询的处理。与元组相关联的写操作也可以被传播至所述边。例如,可以在边中的一个或多个位、标志、和/或其他指示中指定元组的添加、删除、或非断言。
如果查询与一组边匹配,则将边转换成元组。首先,从边获得一组谓语-宾语对,以及由边作为主语共享的中心节点(操作612)。谓语-宾语对可以指定有助于复合词实例的身份的身份赋予属性,并且中心节点可以标识复合词实例。
接下来,中心节点用于标识元组(操作614),并且谓语-宾语对被包括在元组中的身份赋予节点的预定排序中(操作616)。例如,可以从中心节点的标识符获得偏移量,其指定元组在图数据库的基于日志的表示中的位置。可以将偏移量设置为元组的标识符,并且可以将谓语-宾语对填充元组,作为表示身份赋予节点的重复键值对。可以将预先指定的排序应用于谓语-宾语对的谓语,以确保以可预测的方式从边的无序集合生成元组。接着将元组用于生成查询结果(操作618)。例如,元组可以被包括在结果中,被写入图数据库,和/或以其他方式用于查询的处理。与边相关的写操作也可以被传播至元组。
用于复合词的规则可以用于在元组和边之间进行转换。例如,该规则可以将元组中的身份赋予节点映射到边中的值,从而允许将复合词的元组表示转换为功能上等效的一组边,并将一组边部转换为该元组。
最后,在对查询的响应中提供结果(操作620)。例如,结果可以包括在先前操作中生成的元组和/或一组边。可替代地,结果可以包括指示元组和/或一组边已成功写入图数据库的指示,以及包含元组和/或一组边的图数据库条目的一个或多个标识符。
图7示出了图示根据所公开的实施例的图数据库的查询的处理的流程图。特别地,图7的流程图示出了在图数据库的基于日志的表示中使用元组来处理查询。在一个或多个实施例中,可以以不同的顺序省略、重复、和/或执行一个或多个步骤。由此,图7所示的步骤的具体布置不应当被解释为限制技术的范围。
首先,从查询获得复合词(操作702)。复合词可以在图数据库中对n元关系建模,例如定义该关系的一组相关属性。例如,该复合词可以描述成员在公司的雇用,并包括身份赋予属性,例如成员、公司、成员在公司雇用的开始日期、和成员在公司雇用的结束日期。在另一个示例中,复合词可以对认可进行建模,并包括认可者、被认可者、和认可适用的技能的身份赋予属性。
接下来,使用复合词和图数据库访问元组(操作704)。例如,该复合词可以包括与基于日志的表示中的现有元组匹配和/或用于将元组写入基于日志的表示中的一个或多个身份赋予属性的值。
接着,使用元组来生成查询结果(操作706)。例如,可以根据复合词中身份赋予节点的预先指定的顺序,将元组写至基于日志的表示。在另一示例中,可以在将查询的参数匹配到元组中的一个或多个给定节点和/或可选属性之后,从基于日志的表示中读取元组。在第三示例中,元组可以被转换为一组边,并且所述边可以被包括在结果中。
查询还可以包括对复合词的非断言(操作708)。可以使用非断言来“声明”复合词,而不会影响图数据库中存储的图中复合词的现有状态。例如,即使该元组尚未添加到图或图数据库或已从图中被删除(例如,使用图数据库中的删除操作),非断言也可用于将引用元组的非身份赋予属性添加至图数据库。
如果查询不包括该复合词的非断言,则在对查询的响应中提供结果(操作712),而不修改结果。例如,结果可以包括当元组与读取查询的一个或多个参数匹配时存储在元组中的值。在另一个示例中,结果可以包括与处理将元组或与该元组关联的属性写至(例如,添加或删除)该图数据库的写查询相关联的处理状态(例如,成功,不成功等)。
如果查询包括非断言,则在响应中提供结果之前(操作712),使用非断言来修改结果(操作710)。当元组不存在于图数据库中时,元组和引用该复合词的属性将添加到图数据库,并且元组中将包括非断言的指示。元组的偏移量也作为复合词的标识符被包含在结果中。非断言指示可以防止在图数据库的随后查询中元组被无意地“断言”(例如,被解释为添加或删除)。当元组存在于图数据库中时,将对非断言进行去重复。进而,可以在不修改图或图数据库中的元组的状态(例如,添加,删除或断言)的情况下,将引用复合词的属性添加至图数据库。
图8示出了根据所公开的实施例的计算机系统。计算机系统800可以对应于一种装置,该装置包括处理器802、存储器804、存储装置806和/或电子计算设备中发现的其他组件。处理器802可以支持与计算机系统800中的其他处理器的并行处理和/或多线程操作。计算机系统800还可以包括输入/输出(I/O)设备,例如键盘808、鼠标810和显示器812。
计算机系统800可以包括执行本实施例的各种组件的功能。特别地,计算机系统800可以包括操作系统(未示出),该操作系统协调计算机系统800上的硬件和软件资源的使用,以及为用户执行专门任务的一个或多个应用的使用。为了为用户执行任务,应用可以从操作系统获得对计算机系统800上硬件资源的使用,并通过操作系统提供的硬件和/或软件框架与用户进行交互。
在一个或多个实施例中,计算机系统800提供一种用于处理对图数据库的查询的系统。该系统包括一组过程,该过程可以包括单个写入过程和多个读取过程。当接收到图数据库的查询时,一个或多个过程可以通过从查询中获取包含复合词类型和一组身份赋予节点的复合词来处理查询。接下来,一个或多个过程可以使用该复合词来访问元组以在图数据库的基于日志的表示中进行存储。然后,一个或多个过程可以使用元组来生成查询的结果,并在对查询的响应中提供结果。
所述过程还可以或者替代地获得包含第一元组的第一查询以及包含第一边集合的第二查询。接下来,一个或多个过程可以将第一元组转换为第二边集合,并且将第一边集合转换为第二元组。然后,过程可以使用边的第二子集来生成第一查询的第一结果,并使用第二元组来生成第二查询的第二结果。最后,一个或多个过程可以在对第一查询的第一响应中提供第一结果,并且在对第二查询的第二响应中提供第二结果。
另外,计算机系统1000的一个或多个组件可以通过网络远程定位并连接到其他组件。本实施例的部分(例如,日志、索引、转换装置、图数据库等)也可以位于实现实施例的分布式系统的不同节点上。例如,可以使用云计算系统来实现本实施例,该云计算系统处理来自一组远程用户和/或客户端的分布式图数据库的查询。
仅出于说明和描述的目的给出了各种实施例的前述描述。它们并非旨在穷举或将本发明限制为所公开的形式。因此,许多修改和变化对于本领域技术人员将是显而易见的。另外,以上公开内容并非旨在限制本发明。
在以下编号的条款中公开了各种实施例。
A1.一种方法,包括:执行用于处理对存储图的图数据库的查询的一组过程,其中,所述图包括一组节点,所述一组节点中的节点对之间的一组边,以及一组谓语;并且
从查询中获得包括复合词类型和一组身份赋予节点的复合词;
使用复合词和图形数据库来访问包括复合词类型和身份赋予节点的元组;
使用所述元组来生成所述查询的结果;以及
在对所述查询的响应中提供所述结果。
A2.条款A1的方法,还包括:
从查询中获得该复合词的非断言;以及
使用该非断言来修改查询的结果。
A3.条款A2的方法,其中使用非断言来修改结果包括:
当元组在图数据库中不存在时:
将元组和引用该复合词的属性添加至图数据库;以及
在所述元组中包括对非断言的指示。
A4.条款A3的方法,其中,使用非断言来修改结果还包括:
在结果中包括元组的偏移量作为复合词的标识符。
A5.条款A2的方法,其中,使用非断言来修改结果包括:
当元组存在于图数据库中时,将引用复合词的属性添加至图数据库,而无需修改图数据库中元组的状态。
A6.条款A5的方法,其中,元组的状态是以下至少之一:
非断言;
添加;以及
删除。
A7.条款A1的方法,其中,使用元组来生成查询结果包括:
根据复合词中的身份赋予节点的预先指定的顺序,将元组写至图数据库的基于日志的表示中。
A8.条款A1的方法,其中,使用元组来生成查询结果还包括:
将元组中的身份赋予节点转换为一组边;并且
在结果中包括边。
A9.条款A1的方法,其中,所述一组身份赋予节点中的每个节点包括:
谓语-宾语对;以及
与谓语-宾语对中的谓语相关联的基数。
A10.条款A1的方法,其中,元组还包括长度。
A11.一种存储指令的非暂时性计算机可读介质,该指令在由处理器执行时使得处理器执行任何前述权利要求的方法。
A12.一种装置,包括:
一个或多个处理器;以及
存储指令存储器,所述指令当由一个或多个处理器执行所述指令时,使得该装置执行以下操作:
执行用于提供存储图的图数据库一个或多个过程,其中,所述图包括一组节点、一组节点中的节点对之间的一组边、以及一组谓语;
从对图数据库的查询中获得包括复合词类型和一组身份赋予节点的复合词;
使用复合词和图数据库来访问包括复合词类型和一组身份赋予节点的元组;
使用该元组来生成查询结果;以及
在对查询的响应中提供该结果。
A13.条款A12的装置,其中,该存储器还存储指令,该指令在由一个或多个处理器执行时使得该装置:
从查询中获得对该复合词的非断言;并且
使用非断言来修改查询结果。
A14.条款A13的装置,其中,使用非断言来修改结果包括:
当元组在图数据库中不存在时:
将元组和引用该复合词的属性添加至图数据库;并且
在元组中包括对非断言的指示。
A15.条款A14的装置,其中,使用非断言来修改结果还包括:
在结果中包括元组的偏移量作为该复合词的标识符。
A16.条款A13的装置,其中,使用非断言来修改结果包括:
当元组存在于图数据库中时,将引用复合词的属性添加至图数据库,而无需修改图数据库中元组的状态。
A17.条款A16的装置,其中,元组的状态是以下至少之一:
非断言;
添加;以及
删除。
A18.条款A12的装置,其中,元组还包括以下一项或多项:
长度;以及
与身份赋予节点中的谓语关联的基数。
A19.一种系统,包括:
存储图的图数据库,其中,该图包括一组节点,一组节点中节点对之间的一组边,以及一组谓语;以及
包括非暂时性计算机可读介质的处理模块,该非暂时性计算机可读介质包括指令,该指令在被执行时使得系统使用一个或多个过程来通过以下操作处理对图数据库的查询:
从查询中获得包括复合词类型和一组身份赋予节点的复合词;
使用复合词和图数据库来访问包括复合词类型和身份赋予节点的元组;
使用元组来生成查询结果;以及
在对查询的响应中提供结果。
A20.条款A19的系统,其中,元组还包括:
对元组的非断言的指示;
长度;以及
与身份赋予节点中的谓语相关联的基数。
Claims (20)
1.一种方法,包括:
在计算机系统上执行用于提供存储图的图数据库的一个或多个过程,其中,所述图包括一组节点、所述一组节点中的节点对之间的一组边、和一组谓语;以及
当接收到对所述图数据库的查询时,通过以下操作来使用所述过程中的一个或多个过程以处理所述查询:
将所述查询与元组进行匹配,所述元组包括复合词类型和所述图数据库中的一组身份赋予节点;
将所述元组转换成所述边的子集;
使用所述边的所述子集来生成所述查询的结果;以及
在对所述查询的响应中提供所述结果。
2.根据权利要求1所述的方法,还包括:
将另外的查询与所述边的所述子集进行匹配;
将所述边的所述子集转换成所述元组;以及
使用所述元组来处理所述另外的查询。
3.根据权利要求2所述的方法,其中,将所述边的子集转换成所述元组包括:
将所述边的所述子集转换成所述元组中的所述身份赋予节点的预先指定的顺序。
4.根据权利要求1所述的方法,其中,将所述查询与所述元组进行匹配包括:
获得复合词,所述复合词将所述元组表示为所述查询内的嵌套语句。
5.根据权利要求1所述的方法,其中,将所述元组转换成所述边的所述子集包括:
从所述元组中获得表示所述身份赋予节点的一组谓语-宾语对;以及
将所述谓语-宾语对包括在所述边的所述子集中。
6.根据权利要求5所述的方法,其中,将所述元组转换成所述边的所述子集还包括:
包括中心节点,所述中心节点将所述元组表示为由所述边的所述子集共享的主语。
7.根据权利要求6所述的方法,其中,所述中心节点的标识符包括所述图数据库的基于日志的表示中的所述元组的偏移量。
8.根据权利要求1所述的方法,其中,使用所述边的所述子集来生成所述查询的所述结果包括:
将与所述元组相关联的写操作传播至所述边的所述子集。
9.根据权利要求8所述的方法,其中,所述写操作是以下中的至少一个:
添加;
删除;以及
非断言。
10.根据权利要求1所述的方法,其中,将所述元组转换成所述边的所述子集包括:
获得包含所述复合词类型的复合词的规则;以及
使用所述规则将所述元组转换成所述边的所述子集。
11.一种方法,包括:
在计算机系统上执行用于提供存储图的图数据库的一个或多个过程,其中,所述图包括一组节点、所述一组节点中的节点对之间的一组边、和一组谓语;以及
当接收到对所述图数据库的查询时,通过以下操作来使用所述过程中的一个或多个过程以处理所述查询:
将所述查询与所述图数据库中的所述边的子集进行匹配;
将所述边的所述子集转换成包括复合词类型和一组身份赋予节点的元组;
使用所述元组来生成所述查询的结果;以及
在对所述查询的响应中提供所述结果。
12.根据权利要求11所述的方法,还包括:
将另外的查询与所述边的另外的子集进行匹配;
将所述边的所述另外的子集转换成另一元组;以及
使用所述另一元组来处理所述另外的查询。
13.根据权利要求11所述的方法,其中,将所述边的所述子集转换成所述元组包括:
从所述边的所述子集中获得一组谓语-宾语对;以及
将所述谓语-宾语对包括在所述元组的所述身份赋予节点中。
14.根据权利要求13所述的方法,其中,将所述谓语-宾语对包括在所述元组的所述身份赋予节点中包括:
用所述身份赋予节点的预先指定的顺序来填充所述元组。
15.根据权利要求13所述的方法,其中,将所述边的所述子集转换成所述元组还包括:
获得作为由所述边的所述子集共享的主语的中心节点;以及
使用所述中心节点来标识所述元组。
16.根据权利要求13所述的方法,其中,使用所述元组来生成所述查询的所述结果包括:
将与所述边的所述子集相关联的写操作传播至所述元组,其中,所述写操作包括以下中的至少一个:
添加;
删除;以及
非断言。
17.一种存储指令的非暂时性计算机可读介质,所述指令当由处理器执行时,使得所述处理器执行根据任何前述权利要求所述的方法。
18.一种装置,包括:
一个或多个处理器;以及
存储指令的存储器,所述指令当由所述一个或多个处理器执行时,使得所述装置进行以下操作:
执行用于提供存储图的图数据库的一个或多个过程,其中,所述图包括一组节点、所述一组节点中的节点对之间的一组边、和一组谓语;
获得包括第一元组的第一查询和包括所述边的第一子集的第二查询,其中,所述第一元组包括复合词类型和所述图数据库中的一组身份赋予节点;
将所述第一元组转换成所述边的第二子集,并且将所述边的所述第一子集转换成第二元组;
使用所述边的所述第二子集来生成所述第一查询的第一结果,并且使用所述第二元组来生成所述第二查询的第二结果;以及
在对所述第一查询的第一响应中提供所述第一结果,并且在对所述第二查询的第二响应中提供所述第二结果。
19.根据权利要求18所述的装置,其中,将所述第一元组转换成所述边的所述第二子集包括:
从所述第一元组中获得表示所述身份赋予节点的一组谓语-宾语对;
将所述谓语-宾语对包括在所述边的所述第二子集中;以及
包括中心节点,所述中心节点将所述第一元组表示为由所述边的所述第二子集共享的主语。
20.根据权利要求18所述的装置,其中,将所述边的所述第一子集转换成所述第二元组包括:
用来自所述边的所述第一子集的谓语-宾语对的预先指定的顺序来填充所述第二元组。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/618,235 | 2017-06-09 | ||
US15/618,235 US20180357328A1 (en) | 2017-06-09 | 2017-06-09 | Functional equivalence of tuples and edges in graph databases |
PCT/US2017/067866 WO2018226255A1 (en) | 2017-06-09 | 2017-12-21 | Functional equivalence of tuples and edges in graph databases |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110720097A true CN110720097A (zh) | 2020-01-21 |
Family
ID=64563400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780091814.2A Withdrawn CN110720097A (zh) | 2017-06-09 | 2017-12-21 | 图数据库中元组和边的功能性等价 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20180357328A1 (zh) |
EP (1) | EP3635580A4 (zh) |
CN (1) | CN110720097A (zh) |
WO (1) | WO2018226255A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10671671B2 (en) | 2017-06-09 | 2020-06-02 | Microsoft Technology Licensing, Llc | Supporting tuples in log-based representations of graph databases |
US10445370B2 (en) | 2017-06-09 | 2019-10-15 | Microsoft Technology Licensing, Llc | Compound indexes for graph databases |
US11170085B2 (en) | 2018-06-03 | 2021-11-09 | Apple Inc. | Implementation of biometric authentication |
CN114169288B (zh) * | 2022-02-11 | 2022-06-07 | 中节能晶和智慧城市科技(浙江)有限公司 | 一种基于配电箱施工图的仿真回路生成方法 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8812487B2 (en) | 2008-03-06 | 2014-08-19 | Cisco Technology, Inc. | Addition and processing of continuous SQL queries in a streaming relational database management system |
US8935293B2 (en) * | 2009-03-02 | 2015-01-13 | Oracle International Corporation | Framework for dynamically generating tuple and page classes |
US8688683B2 (en) * | 2009-11-30 | 2014-04-01 | Business Objects Software Ltd. | Query plan reformulation |
US9262479B2 (en) * | 2012-09-28 | 2016-02-16 | Oracle International Corporation | Join operations for continuous queries over archived views |
US9665633B2 (en) * | 2014-02-19 | 2017-05-30 | Snowflake Computing, Inc. | Data management systems and methods |
KR101525529B1 (ko) * | 2014-09-30 | 2015-06-05 | 주식회사 비트나인 | 데이터 처리장치 및 그 데이터 매핑방법 |
US9378303B1 (en) * | 2015-09-18 | 2016-06-28 | Linkedin Corporation | Representing compound relationships in a graph database |
US10114859B2 (en) * | 2015-11-19 | 2018-10-30 | Sap Se | Extensions of structured query language for database-native support of graph data |
-
2017
- 2017-06-09 US US15/618,235 patent/US20180357328A1/en not_active Abandoned
- 2017-12-21 EP EP17912562.0A patent/EP3635580A4/en not_active Withdrawn
- 2017-12-21 CN CN201780091814.2A patent/CN110720097A/zh not_active Withdrawn
- 2017-12-21 WO PCT/US2017/067866 patent/WO2018226255A1/en active Application Filing
Also Published As
Publication number | Publication date |
---|---|
EP3635580A4 (en) | 2020-10-28 |
US20180357328A1 (en) | 2018-12-13 |
EP3635580A1 (en) | 2020-04-15 |
WO2018226255A1 (en) | 2018-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10671671B2 (en) | Supporting tuples in log-based representations of graph databases | |
US10445321B2 (en) | Multi-tenant distribution of graph database caches | |
CN106547809B (zh) | 将复合关系表示在图数据库中 | |
US10180992B2 (en) | Atomic updating of graph database index structures | |
US11188537B2 (en) | Data processing | |
US10628492B2 (en) | Distributed graph database writes | |
US20180144061A1 (en) | Edge store designs for graph databases | |
US10789295B2 (en) | Pattern-based searching of log-based representations of graph databases | |
US20170255708A1 (en) | Index structures for graph databases | |
US11567995B2 (en) | Branch threading in graph databases | |
US20170212945A1 (en) | Branchable graph databases | |
US10445370B2 (en) | Compound indexes for graph databases | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
US20200097615A1 (en) | Difference-based comparisons in log-structured graph databases | |
US20180089252A1 (en) | Verifying correctness in graph databases | |
US11720543B2 (en) | Enforcing path consistency in graph database path query evaluation | |
CN110720097A (zh) | 图数据库中元组和边的功能性等价 | |
US10146881B2 (en) | Scalable processing of heterogeneous user-generated content | |
US20200110838A1 (en) | Intelligent visualization of unstructed data in column-oriented data tables | |
US10983997B2 (en) | Path query evaluation in graph databases | |
US10754859B2 (en) | Encoding edges in graph databases | |
US20180349443A1 (en) | Edge store compression in graph databases | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
US10417230B2 (en) | Transforming and evaluating missing values in graph databases | |
WO2022098886A1 (en) | Techniques to generate and store graph models from structured and unstructured data in a cloud-based graph database system |
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 | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20200121 |
|
WW01 | Invention patent application withdrawn after publication |