CN110291517B - 图数据库中的查询语言互操作性 - Google Patents
图数据库中的查询语言互操作性 Download PDFInfo
- Publication number
- CN110291517B CN110291517B CN201880007710.3A CN201880007710A CN110291517B CN 110291517 B CN110291517 B CN 110291517B CN 201880007710 A CN201880007710 A CN 201880007710A CN 110291517 B CN110291517 B CN 110291517B
- Authority
- CN
- China
- Prior art keywords
- graph database
- query
- data elements
- data model
- data
- 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
- 238000013499 data model Methods 0.000 claims abstract description 174
- 238000000034 method Methods 0.000 claims abstract description 48
- 238000013507 mapping Methods 0.000 claims description 30
- 238000010586 diagram Methods 0.000 claims description 2
- 102100038367 Gremlin-1 Human genes 0.000 description 16
- 101001032872 Homo sapiens Gremlin-1 Proteins 0.000 description 16
- 230000008569 process Effects 0.000 description 11
- 238000004458 analytical method Methods 0.000 description 10
- 238000012423 maintenance Methods 0.000 description 10
- 238000012545 processing Methods 0.000 description 9
- 238000001514 detection method Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000007726 management method Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000010200 validation analysis Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 206010013710 Drug interaction Diseases 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 238000013523 data management Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000010926 purge Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2452—Query translation
-
- 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/2452—Query translation
- G06F16/24522—Translation of natural language queries to structured 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24542—Plan optimisation
-
- 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)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Operations Research (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
公开了用于图数据库中的查询语言互操作性的方法、系统和计算机可读媒体。使用多种图数据库查询语言中的一种或多种图数据库查询语言将数据元素插入到图数据库中。所述图数据库查询语言包括与第一数据模型相关联的第一图数据库查询语言和与第二数据模型相关联的第二图数据库查询语言。使用不同于所述第一数据模型和所述第二数据模型的内部数据模型将所述数据元素存储在所述图数据库中。至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素。使用与用于插入所述一个或多个所检索数据元素的所述图数据库查询语言不同的图数据库查询语言来表示所述查询。
Description
背景技术
随着生成的数据越来越多,存储和分析这种数据的需求也在增长。在如社交媒体、移动和消息app、web门户和物联网(IoT)等各种领域中,数据可能既丰富又高度连接。可以以高速率创建数据元素之间的新关系,并且对这种数据的有效分析通常可以包含对所述关系的分析。例如,对社交网络进行建模可以包含对人与人之间的关系进行建模。所述关系可能随时间变化,并且也可以随时间添加或修改与人本身有关的信息。寻求分析这种信息的应用程序可能需要迅速回答关于关系网络的复杂问题,如与特定人的朋友有关的购买行为或偏好的复杂问题。
附图说明
图1展示了根据一个实施例的用于图数据库中的全局列索引的示例系统环境。
图2A到图2C展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含为全局范围列名称创建每列索引。
图3展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含图数据库中的数据元素的关系视图。
图4展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含图数据库中的数据元素的实体视图。
图5展示了根据一个实施例的与用于全局范围列名称的每列索引相关联的统计数据的生成。
图6是展示了根据一个实施例的用于图数据库中的全局列索引的方法的流程图。
图7展示了根据一个实施例的用于图数据库中的查询语言互操作性的示例系统环境。
图8A、图8B和图8C展示了根据一个实施例的用于图数据库中的查询语言互操作性的示例系统环境的另外的方面,包含用于查询管道中的多种查询语言的单独组件。
图9展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含插入根据资源描述框架(RDF)数据模型表示的数据元素。
图10展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含插入根据属性图数据模型表示的数据元素。
图11展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含检索根据RDF数据模型表示的数据元素。
图12展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含检索根据属性图数据模型表示的数据元素。
图13是展示了根据一个实施例的用于实施图数据库中的查询语言互操作性的方法的流程图。
图14展示了根据一个实施例的示例计算装置。
尽管本文通过示例的方式针对若干实施例和说明性附图描述了实施例,但是本领域技术人员将认识到,实施例不限于所描述的实施例或附图。应当理解的是,附图和对其的详细描述并非旨在将实施例限制于所公开的特定形式,而相反,本发明将覆盖落入由所附权利要求限定的精神和范围内的所有修改、等效物和替代方案。本文所使用的标题只是出于组织目的,而不意图用于限制本说明书或权利要求的范围。如在本申请全文中使用的,单词“可以(may)”以允许的意义使用(即,意味着“具有潜力来”),而不是强制意义(即,意味着“必须(must)”)。类似地,单词“包含(include)”“包含(including)”以及“包含(includes)”意味着“包含但不限于”。
具体实施方式
描述了用于图数据库中的查询语言互操作性的方法、系统和计算机可读媒体的各个实施例。在一个实施例中,图数据库使用内部数据模型存储数据元素。在一个实施例中,例如,内部数据模型可以使用三元组表示数据元素,并且三元组可以包含主题标识符、列名称和值。在一个实施例中,图数据库中的三元组可以用于表示连接项图中的节点和边缘(关系)。在一个实施例中,图数据库可以使用多种查询语言提供对数据元素的访问,并且与查询语言相关联的数据模型可以不同于内部数据模型。在一个实施例中,图数据库可以支持以通常用于语义查询并且其数据模型将数据元素表示为包括主题、谓词和对象的资源描述框架(RDF)三元组的图数据库查询语言表示的查询。在一个实施例中,图数据库可以支持以通常用于图遍历查询并且其数据模型将数据元素表示为属性图的图数据库查询语言表示的查询。在一个实施例中,图数据库可以为多种查询语言和对应的多个数据模型提供互操作性。例如,在一个实施例中,以第一查询语言表示的查询可以将数据元素插入到图数据库中,其中所插入数据元素从第一数据模型映射到内部数据模型;可以使用以第二查询语言表示的查询来检索相同的数据元素,其中所检索数据元素从内部数据模型映射到第二数据模型。在一个实施例中,图数据库可以向用户提供与不同查询语言相关联的各种特征,同时使用统一的共同存储方案来维护底层数据。
在一个实施例中,内部数据模型中的列是强类型的,使得特定列中的值可以共享同一数据类型。在一个实施例中,列名称在图数据库的内部数据模型中是全局范围的,使得同一列名称在图数据库中表示的次数不超过一次并且同一列名称可以不限于图数据库的特定子表。在一个实施例中,图数据库服务使用分区索引方案来实现对图数据库的查询。在一个实施例中,为图数据库中的主表中的全局列创建索引并维护所述索引。在一个实施例中,每列索引可以是包含多行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,索引可以按列名称有效地分区。在一个实施例中,索引的生成和维护由图数据库服务自动地执行,例如而无需通过指示索引任务的用户输入直接提示。在一个实施例中,每列索引用于对图数据库执行查询。在一个实施例中,为了执行查询,查询计划程序可以参考对应于与查询相关联的列的索引。在一个实施例中,生成索引的统计数据并对其进行维护以优化查询。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,为了优化查询,可以(至少部分地)基于每列索引的统计数据确定要使用的索引顺序。在一个实施例中,可以自动地并且实时地或近实时地维护统计数据以使用最新信息实现优化的查询处理。
图1展示了根据一个实施例的用于图数据库中的全局列索引的示例系统环境。在一个实施例中,图数据库服务100将数据元素存储在图数据库140中。在一个实施例中,图数据库还可以被称为图数据存储区或三元组存储区。在一个实施例中,由图数据库服务100表示的图是适合于表示数据内的关系、连接和依赖性的数据结构。在一个实施例中,图可以对数据进行建模的域的典型实例可以包含社交网络或通信网络、生物网络、时间序列应用程序和元数据管理。在一个实施例中,图可以包含节点(顶点)和边缘(关系)以及与那些顶点和边缘相关联的属性。在一个实施例中,节点可以表示概念或对象。在一个实施例中,边缘可以表示顶点之间的关系。在一个实施例中,顶点可以具有如名称等各种属性。在一个实施例中,边缘可以具有如关系类型等各种属性。在一个实施例中,例如,在社交网络内的图中,用户1(User1)、用户2(User2)和用户3(User3)可以是实体,并且他们之间的“朋友(friendOf)”关系可以定义该小图的“边缘”。在一个实施例中,用户1、用户2和用户3实体可以具有如“姓名”和“年龄”等属性,并且关系属性可以包含“开始_日期(start_date)”、“源”等。在一个实施例中,可以由现代应用程序、移动和消息app以及IoT装置生成大量的这种连接数据。在一个实施例中,这种数据往往是动态的,使得关系、实体和其属性可能不断变化。
基于模式(schema-based)的关系数据存储区可能无法足够快速地变化;像键值存储区等无模式存储区(schema-less store)可能无法使用复杂的查询语言工作。传统的键值数据存储区和关系数据存储区通常可能难以管理丰富且高度连接的数据。在一个实施例中,例如,键值存储区可以支持访问不一定表示丰富数据或关系的离散对象。作为另一个实例,关系数据存储区可能太不灵活而不能充分地表示高度连接的数据中的流动关系。当关系数据库用于存储这种数据时,可能需要开发人员将数据存储在具有刚性结构(rigidstructure)的表中并且使用多个连接编写复杂的SQL查询。可能难以维护这种复杂查询,并且当在大数据集上运行时,这种复杂查询可能无法充分扩展。随着数据规模的增加,一些图可能成为对先前的硬件和软件解决方案构成挑战的十亿边缘(billion-edge)结构。在一个实施例中,图数据库服务100可以使用每列(属性范围)索引160A-160N高效地查询这种数据。尽管出于举例的目的展示了索引160A-160N,但是在各个实施例中可以在图数据库中使用任何适合数量和配置的索引。
在一个实施例中,图数据库中的数据元素可以以列格式表示三元组或行。在一个实施例中,如三元组151A到151Z等三元组可以存储在三元组表150中;三元组表可以表示图数据库中的主表。尽管出于举例的目的展示了三元组151A-151Z,但是在各个实施例中可以在图数据库中使用任何适合数量和配置的三元组。在一个实施例中,例如,三元组可以包含标识符、列名称和值。在一个实施例中,三元组可以包含不同于(例如,除了或代替)标识符、列名称和值的元素。在一个实施例中,标识符还可以被称为主题标识符。在一个实施例中,标识符可以指示保持三元组中的列名称和值的组合的特定行(例如,在数据的关系视图中)或记录。在一个实施例中,同一主题标识符可以重复用于多个三元组,例如,如果对应的行或记录包含多个类别中的值。在一个实施例中,列名称可以指示不同且单独的数据类别,并且值可以表示所述类别内的允许值之一。在一个实施例中,图数据库中的三元组可以用于表示连接项图中的节点和边缘(关系)。在一个实施例中,图数据库可以存储一个图或多个图。在一个实施例中,三元组还存储有图标识符,所述图标识符指示三元组所属的特定图或子图。
在一个实施例中,列是强类型的,使得特定列中的值可以共享同一数据类型,并且强制机制可以确保特定列中的值限于以与列相关联的数据类型表示。在一个实施例中,数据类型可以因列而不同。在一个实施例中,图数据库中的所有行和列可以有效地属于同一主表,例如,三元组表。在一个实施例中,列名称在图数据库中是全局范围的,使得同一列名称在图数据库中表示的次数不超过一次并且同一列名称可以不限于图数据库的特定子表。在一个实施例中,通过对比,常规关系数据库中的列名称通常局部地范围限定为多个表之一。
在一个实施例中,图数据库服务100使用分区索引方案来实现对图数据库的查询。在一个实施例中,索引创建组件110可以为图数据库中的主表中的每个全局列创建索引并维护所述索引。在一个实施例中,索引创建组件110可以为图数据库中的主表中的多个但不一定是所有的全局列(例如,为旨在是可查询或可搜索的列)创建索引并维护所述索引。在一个实施例中,每列索引可以是包含多行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,每列索引也可以称为属性范围索引。在一个实施例中,每列索引中的每一行还包含指向图数据库中的主表中的对应行的指针。在一个实施例中,索引160A-160N可以作为彼此分离并且与三元组表150分离的数据结构存储在例如由图数据库服务100管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引可以按列名称有效地分区。在一个实施例中,通过对比,由于可以在关系数据库管理系统中管理的局部范围列的数量非常大,因此常规关系数据库中的这种每列索引通常会极其昂贵。在一个实施例中,索引的生成和维护由图数据库服务100自动地执行,例如而无需通过指示索引任务的用户输入直接提示。在一个实施例中,通过对比,生成和维护常规关系数据库的索引通常是需要用户输入来定制索引的手动任务。
在一个实施例中,每列索引用于对图数据库执行查询。在一个实施例中,客户端180可以提供查询181并且从图数据库服务100接收查询结果182。在一个实施例中,为了执行查询,查询计划程序130可以参考对应于与查询相关联的列的索引。在一个实施例中,统计数据生成组件120生成索引的统计数据并对其进行维护以优化查询。在一个实施例中,统计数据生成组件120生成对应于单独索引的统计数据集,如对应于索引160A-160N的统计数据121A-121N,并对其进行维护。在一个实施例中,可以使用任何适合的存储技术来存储统计数据,例如,存储在由图数据库服务100管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,例如,统计数据可以指示在列内出现特定值的次数;在列内出现具有特定数值范围内的数值的三元组的数量;在列内出现具有以特定字符开始的字符串类型值的三元组的数量等。
在一个实施例中,为了优化查询,可以(至少部分地)基于每列索引的统计数据确定要使用的索引顺序。在一个实施例中,查询计划程序130首先使用最具约束性的索引,然后使用下一个最具约束性的索引,以此类推。在一个实施例中,可以实时地或近实时地维护统计数据以使用最新信息实现优化的查询处理。在一个实施例中,对索引的统计数据的生成和维护由图数据库服务100自动地执行,例如而无需通过指示统计任务的用户输入直接提示。在一个实施例中,客户端180可以向图数据库中的三元组提供更新183。在一个实施例中,图数据库服务100响应于图数据库中的对应列的一个或多个三元组的更新(例如,添加一个或多个三元组、删除一个或多个三元组或修改一个或多个三元组)而生成或更新索引和所述索引的统计数据。在一个实施例中,图数据库服务100提供查询提示机制以优化具体应用程序内的单独查询的执行。
在一个实施例中,图数据库的查询包含语义查询。在一个实施例中,语义查询可以允许基于在数据库中体现的句法、语义和结构信息从图数据库中检索以明确和隐含方式得到的信息。在一个实施例中,语义查询可以返回如单条信息等具体或精确的结果。在一个实施例中,语义查询可以通过模式匹配和机器逻辑返回对“更模糊”或不太具体的问题的答案。在一个实施例中,通过对图数据库中的三元组进行操作,语义查询可以处理信息之间的实际关系并且从图数据库中的连接网络中确定答案。在一个实施例中,语义查询可以对结构化数据进行操作并且利用如运算符(例如,>、<和=)、模式匹配等特征。在一个实施例中,图数据库的语义查询以如SPARQL等语义查询语言的语法格式化。在一个实施例中,可以在不了解图数据库中的数据库模式的情况下编写语义查询。在一个实施例中,图数据库的查询可以用如Neo4j或Gremlin等图遍历语言或图查询语言表示。
在一个实施例中,图数据库被设计成有效地捕获并分析具有复杂关系的丰富的动态数据结构。在一个实施例中,例如,如“找到用户1的朋友的所有朋友(find all thefriends of User1's friends)”等简单社交查询可以以如Gremlin等图遍历语言表示为图数据库中的单行遍历:g.V().has('name','User1').out('friend').out('friend').values('name').然而,使用SQL查询从关系数据库中检索同一信息可能要复杂得多,如以下查询:
SELECT p1.Person AS PERSON,p2.Person AS FRIEND_OF_FRIEND
FROM PersonFriend pf1JOIN Person p1
ON pf1.PersonID=p1.ID JOIN PersonFriend pf2
ON pf2.PersonID=pf1.FriendID JOIN Person p2
ON pf2.FriendID=p2.ID
WHERE p1.Person='User1'AND pf2.FriendID<>p1.ID
在一个实施例中,图数据库服务100可以支持对属性值的简单文本搜索。在一个实施例中,在属性图模型中,文本搜索可以搜索节点和边缘属性。在一个实施例中,在资源描述框架(RDF)模型中,文本搜索可以搜索字面值。在一个实施例中,图数据库服务100可以采用用于高效地压缩和存储数据,使得存储成本降低的逻辑。
在一个实施例中,图数据库服务100可以由如社交网络、推荐引擎、数据管理、网络和IT管理、欺诈检测、医疗应用程序、联机事务处理(OLTP)和联机分析处理(OLAP)工作负载等不同领域中的客户端使用。在一个实施例中,图数据库服务100可以用于处理丰富(例如,表示大量信息)且高度连接(例如,表示多种关系)的流数据。在一个实施例中,例如,金融部门中的客户端可以使用图数据库服务100将信用卡交易流处理为图查询以识别潜在的异常。在一个实施例中,作为更具体的实例,图数据库服务100的客户端可以提供图查询以检测在一个地理区域中发生并且五分钟之后在另一个地理区域中发生的购买。在一个实施例中,检测到顾客进行过时间上相近地发生但发生地相隔数千英里的两个交易时,图数据库服务100的客户端可以生成警报并且将其发送给顾客。在一个实施例中,作为另一个实例,零售公司可以使用图数据库服务100基于顾客朋友的购买行为向顾客做出购买推荐。在一个实施例中,作为又另一个实例,生命科学组织可以使用图数据库服务100来分析不同化学物质和化合物之间的关系以检测药物相互作用。
在一个实施例中,客户端可以使用图数据库服务100来组合和分析在客户端的OLTP和OLAP应用程序中聚合的大量关系信息。在一个实施例中,除了短交互式查询(例如,对于OLTP)和更长时间运行的复杂查询(例如,对于OLAP),使用图数据库服务100的图分析可以通过分析整个关系集合来产生新的见解。在一个实施例中,图分析可以使用迭代算法来处理非常大的图并且从中挖取新信息。在一个实施例中,这种图分析的实例可以包含使用搜索引擎算法来检测网页相关性;使用社区检测算法来检测来自大型社交网络的类似用户组;以及执行最短路径算法以在道路网络上找到从A点到B点的最低成本路线。对于常规数据库(例如,关系数据库)来说,这种任务可能在计算上具有挑战性,因为它们通常需要多次访问图中的所有关系(边缘)以收敛于结果。
在一个实施例中,图数据库服务100支持传入和传出图数据流。在一个实施例中,图数据库服务100可以与机器学习和深度学习应用程序和服务结合使用,使得可以分析图数据库中的关系丰富的数据以识别使用机器学习算法的区域。在一个实施例中,图数据库服务100可以用于表示和缩放知识图。在一个实施例中,图数据库服务100提供对处理大量关系信息的原生支持。在一个实施例中,图数据库服务100原生地支持属性图和资源描述框架(RDF)图模型二者,以允许在代表客户端对数据进行建模时具有灵活性。在一个实施例中,查询可以探索图的小部分(例如,如推荐系统的等OLTP应用程序);探索图的大部分(例如,如欺诈检测等轻量级OLAP应用程序);或者重复地检查整个图(例如,如通过网页排名确定相关性等图分析)。
在一个实施例中,图数据库服务100为提供商网络内的多个可用区提供支持;如果主群集节点发生故障,则图数据库服务100可以自动检测故障,从可用的备用群集节点中选择一个群集节点并且将备用群集节点提升为新的主群集节点。在一个实施例中,图数据库服务100可以传播所提升的副本的DNS变化,使得客户端的应用程序可以保持对主端点进行写入。在一个实施例中,图数据库服务100还可以预配新节点以替换故障主节点的同一可用区中的经提升的备用节点。在主节点由于临时可用区中断而发生故障的情况下,一旦该可用区已恢复,则图数据库服务100可以自动启动新的副本。在一个实施例中,图数据库服务100支持可以通过控制台和应用程序编程接口(API)恢复的快照(自动和按需)。
在一个实施例中,客户端180可以包含适合于向图数据库服务100提交数据和请求的任何类型的客户端。在一个实施例中,客户端可以是图数据库服务100的多个客户端之一。在一个实施例中,客户端可以包含寻求利用图数据库服务100的一个或多个服务或应用程序。在一个实施例中,客户端可以通过一个或多个网络向服务传达基于网络的服务请求。在各个实施例中,一个或多个网络可以包含在客户端与图数据库服务100之间建立基于网络的通信所必需的网络硬件和协议的任何适合组合。在一个实施例中,例如,一个或多个网络通常可以包含共同实施互联网的各种电信网络和服务提供商。在一个实施例中,一个或多个网络还可以包含如局域网(LAN)或广域网(WAN)等专用网络以及公共或专用无线网络。在一个实施例中,例如,客户端和图数据库服务100二者可以分别在具有自己的内部网络的企业内进行预配。在一个实施例中,一个或多个网络可以包含建立给定客户端与互联网之间以及互联网与图数据库服务100之间的网络链接所必需的硬件(例如,调制解调器、路由器、交换机、负载均衡器、代理服务器等)和软件(例如,协议栈、会计软件、防火墙/安全软件等)。在一个实施例中,客户端可以使用专用网络而非公共互联网与图数据库服务100通信。
在一个实施例中,图数据库服务100可以包含一个或多个计算装置和任何适合的存储资源,所述计算装置中的任何计算装置可以由图14中所示的示例计算装置3000来实施。类似地,在一个实施例中,可以使用图14中所示的示例计算装置3000来实施客户端。在各个实施例中,服务100、数据库140和/或客户端180的所描述功能的部分可以由同一计算装置或者由任何适合数量的不同计算装置提供。在一个实施例中,如果使用不同的计算装置来实施所述组件中的任何组件,则所述组件及其相应的计算装置可以例如通过网络通信地耦合。在一个实施例中,所示组件中的每个组件(如图数据库服务100及其组成组件)可以表示可用于执行其相应功能的软件和硬件的任何组合。在各个实施例中,图数据库服务100和/或图数据库可以包含未示出的另外组件、包含的组件可以比所示组件更少或可以包含所示组件的不同组合、配置或不同量的所述组件。
图2A展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含为全局范围的列名称创建每列索引。在一个实施例中,图数据库服务100将数据作为三元组存储在三元组表150中。在一个实施例中,图数据库服务100中使用的三元组可以与RDF图模型中的三元组不同,在RDF图模型中,三元组可以包含主题、谓词和对象。在一个实施例中,图数据库服务100使用的存储模型可以使用其内部三元组结构有效地存储和处理属性图模型和RDF模型二者。在一个实施例中,在所示实例中,三元组表至少包含所示的十一个三元组。在一个实施例中,三元组包含主题标识符201、列名称或属性202以及与列名称或属性相关联的值203。在一个实施例中,主题标识符可以被称为标识符或行标识符。在一个实施例中,标识符201可以指示保持三元组中的列名称和值的组合的特定行(例如,在数据的关系视图中)或记录。在一个实施例中,如图2A的实例所示,同一主题标识符可以重复用于多个三元组,例如,如果对应的行或记录包含多个类别中的值。在一个实施例中,列名称或属性202可以指示不同且单独的数据类别,并且值203可以表示所述类别内的允许值之一。在一个实施例中,三元组表中的三元组可以用于表示连接项图中的节点和边缘(关系)。在一个实施例中,例如,包含标识符P101的行可以表示具有如姓名“名(Firstname)姓(Lastname)”和年龄32等属性的特定人的节点。在一个实施例中,还可以将标识符P101的节点连接到个人地址(myAddr)A201的节点。在一个实施例中,如实例中所示,地址A201在三元组表中具有指示街道地址、城市和邮政编码属性的值的另外的三元组。类似地,在一个实施例中,包含标识符B101的行可以表示具有如名称“AtoZ公司”等属性的特定企业的节点以及与企业地址(busAddr)A202的节点的连接。
在一个实施例中,列是强类型的,使得特定列中的值可以共享同一数据类型,并且强制机制可以确保特定列中的值限于以与列相关联的数据类型表示。在一个实施例中,数据类型可以因列而不同。在一个实施例中,如图2A的实例所示,“名称”列可以与字符串数据类型相关联,而“邮编”列可以与数字数据类型相关联。在一个实施例中,允许客户端创建看起来是局部范围的但实际上在具有全局范围的图数据库中实施的列,例如,通过自动地将另外的项附加到潜在非唯一的列名称以确保所述组合在图数据库中是唯一的。
在一个实施例中,索引创建组件可以为三元组表中的每个全局列创建索引并维护所述索引。在一个实施例中,索引创建组件可以为三元组表中的多个但不一定是所有的全局列(例如,为旨在是可查询或可搜索的列)创建索引并维护所述索引。在一个实施例中,如图2A的实例所示,索引创建组件可以创建和维护对应于列名称或属性“名称”的“姓名”索引160A;对应于列名称或属性“城市”的“城市”索引160B;对应于列名称或属性“邮编”的“邮编”索引160C;对应于列名称或属性“年龄”的“年龄”索引160D;对应于列名称或属性“myAddr”的“myAddr”索引160E;对应于列名称或属性“busAddr”的“busAddr”索引160F;以及对应于列名称或属性“街道”的“街道”索引160G。在一个实施例中,每列或属性范围索引160A-160G可以是包含一个或多个行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,每列索引中的每一行还包含指向图数据库中的主表中的对应行的指针;指针可以采用主题标识符的形式。在一个实施例中,索引可以按列名称有效地分区。在一个实施例中,通过对比,由于可以在关系数据库管理系统中管理的局部范围列的数量非常大,因此常规关系数据库中的这种每列索引通常会极其昂贵。在一个实施例中,索引的生成和维护由图数据库服务100自动地执行,例如而无需通过指示索引任务的用户输入直接提示。在一个实施例中,通过对比,生成和维护常规关系数据库的索引通常是需要用户输入来定制索引的手动任务。
在各个实施例中,图数据库中的数据元素可以包含除了主题标识符、列名称(也被称为属性或谓词)和值(也被称为对象或关系)之外的元素。在一个实施例中,例如,当每行可能存储四个不同的数据单元时,可以将数据元素称为四元组。如图2B所示,在一个实施例中,数据元素还包含指示三元组所属的特定图或子图的图标识符204。如图2C所示,在一个实施例中,数据元素还包含一种或多种类型的注解205A-205G。在一个实施例中,三元组表150存储表征如三元组中的值等三元组的方面的注解。如图2C的实例所示,在一个实施例中,如注解205A到205G等一系列注解字段可以存储在三元组表中。然而,可以在各个实施例中的图数据库中使用任何适合数量和配置的注解字段。在各个实施例中,注解可以表示如数据质量值、访问权限、到期时间等数据方面的用户定义的或用户提供的值。在一个实施例中,对于给定的注解字段,并非所有三元组或行都可以包含所述注解字段的值。在图2C所示的实例中,在一个实施例中,仅“P101”-“姓名”-“名姓”和“B101”-“名称”-“AtoZ公司”三元组包含注解字段205A的值。同样在图2C所示的实例中,在一个实施例中,更大数量的三元组恰好具有注解字段205G的值。
图3展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含图数据库中的数据元素的关系视图。在一个实施例中,图数据库的灵活性足以描述丰富的相互关联对象和关系中心数据,同时还使用属性范围的强类型索引实现查询性能。在一个实施例中,如图3的实例所示,图数据库可以反映或表示数据的关系视图210及其相关联的每列属性范围索引。在一个实施例中,例如,包含标识符P101的行可以表示具有如姓名“名姓”、年龄32和个人地址(myAddr)A201等属性的特定人220的关系视图中的行。类似地,在一个实施例中,包含标识符B101的行可以表示具有如名称“AtoZ公司”和企业地址(busAddr)A202等属性的特定企业230的关系视图中的行。在一个实施例中,关系视图还可以包含在人220和企业230行中引用的地址240的表。
图4展示了根据一个实施例的可与示例系统环境一起使用的图数据库的实例,包含图数据库中的数据元素的实体视图。在一个实施例中,图数据库可以反映或表示数据的实体视图250及其相关联的每列属性范围索引。在一个实施例中,实体视图可以包含根据JavaScript对象表示法(JSON)表示的一个或多个实体。在一个实施例中,例如,包含标识符P101的行可以表示具有如姓名“名姓”、年龄32以及具有城市、街道和邮政编码的嵌套值的个人地址(myAddr)A201等属性的特定人的实体(JSON)视图中的实体260。类似地,在一个实施例中,包含标识符B101的行可以表示具有如名称“AtoZ公司”以及具有城市、街道和邮政编码的嵌套值的企业地址(busAddr)A202等属性的特定企业的实体(JSON)视图中的另一个实体270。
图5展示了根据一个实施例的与用于全局范围列名称的每列索引相关联的统计数据的生成。如先前在图2的实例中所示的,在一个实施例中,索引创建组件可以创建和维护对应于列名称或属性“名称”的“名称”索引160A;对应于列名称或属性“城市”的“城市”索引160B;对应于列名称或属性“邮编”的“邮编”索引160C;对应于列名称或属性“年龄”的“年龄”索引160D;对应于列名称或属性“myAddr”的“myAddr”索引160E;对应于列名称或属性“busAddr”的“busAddr”索引160F;以及对应于列名称或属性“街道”的“街道”索引160G。在一个实施例中,统计数据生成组件生成索引160A-160G的统计数据并对其进行维护以优化查询。在一个实施例中,通过在添加、删除或修改三元组时定期更新来递增地生成统计数据。在一个实施例中,统计数据生成组件生成对应于单独索引的统计数据集,如对应于索引160A-160G的统计数据121A-121G,并对其进行维护。在一个实施例中,可以使用任何适合的存储技术来存储统计数据,例如,存储在由图数据库服务100管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,例如,统计数据可以指示在列内出现特定值的次数;在列内出现具有特定数值范围内的数值的三元组的数量;在列内出现具有以特定字符开始的字符串类型值的三元组的数量等。
在一个实施例中,为了优化查询,可以(至少部分地)基于每列索引160A-160G的统计数据121A-121G确定要使用的索引顺序。在一个实施例中,查询计划程序130首先使用最具约束性的索引,然后使用下一个最具约束性的索引,以此类推。在一个实施例中,可以实时地或近实时地维护统计数据以使用最新信息实现优化的查询处理。在一个实施例中,对索引的统计数据的生成和维护由图数据库服务100自动地执行,例如而无需通过指示统计任务的用户输入直接提示。在一个实施例中,图数据库服务100响应于图数据库中的对应列的一个或多个三元组的更新(例如,添加一个或多个三元组、删除一个或多个三元组或修改一个或多个三元组)而更新索引和所述索引的对应统计数据。
图6是展示了根据一个实施例的用于图数据库中的全局列索引的方法的流程图。在一个实施例中,如610所示,可以将数据元素存储在图数据库中或更新图数据库中的数据元素。在一个实施例中,图数据库中的数据元素可以以列格式表示三元组或行。在一个实施例中,例如,三元组可以包含标识符、列名称和值。在一个实施例中,三元组可以包含不同于(例如,除了或代替)标识符、列名称和值的元素。在一个实施例中,标识符还可以被称为主题标识符。在一个实施例中,标识符可以指示保持三元组中的列名称和值的组合的特定行(例如,在数据的关系视图中)或记录。在一个实施例中,同一主题标识符可以重复用于多个三元组,例如,如果对应的行或记录包含多个类别中的值。在一个实施例中,列名称可以指示不同且单独的数据类别,并且值可以表示所述类别内的允许值之一。在一个实施例中,图数据库中的三元组可以用于表示连接项图中的节点和边缘(关系)。在一个实施例中,图数据库可以存储一个图或多个图。在一个实施例中,三元组还存储有图标识符,所述图标识符指示三元组所属的特定图。
在一个实施例中,列是强类型的,使得特定列中的值可以共享同一数据类型,并且强制机制可以确保特定列中的值限于以与列相关联的数据类型表示。在一个实施例中,数据类型可以因列而不同。在一个实施例中,图数据库中的所有行和列可以有效地属于同一主表。在一个实施例中,列名称在图数据库中是全局范围的,使得同一列名称在图数据库中表示的次数不超过一次并且同一列名称可以不限于图数据库的特定子表。在一个实施例中,通过对比,常规关系数据库中的列名称通常局部地范围限定为多个表之一。
在一个实施例中,如620所示,可以为图数据库中的主表中的全局范围列创建索引或更新所述索引。在一个实施例中,为图数据库中的主表中的多个但不一定是所有的全局列(例如,为旨在是可查询或可搜索的列)创建索引并维护所述索引。在一个实施例中,每列索引可以是包含多行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,每列索引也可以称为属性范围索引。在一个实施例中,每列索引中的每一行还包含指向图数据库中的主表中的行的指针。在一个实施例中,索引可以作为彼此分离并且与主表分离的数据结构存储在例如由图数据库服务管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引可以按列名称有效地分区。在一个实施例中,通过对比,由于可以在关系数据库管理系统中管理的局部范围列的数量非常大,因此常规关系数据库中的这种每列索引通常会极其昂贵。在一个实施例中,索引的生成和维护由图数据库服务自动地执行,例如而无需通过指示索引任务的用户输入直接提示。在一个实施例中,通过对比,生成和维护常规关系数据库的索引通常是需要用户输入来定制索引的手动任务。
在一个实施例中,如630所示,可以递增地为统计数据生成索引或更新所述索引例如以优化查询。在一个实施例中,可以使用任何适合的存储技术来存储统计数据,例如,存储在由图数据库服务管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,例如,统计数据可以指示在列内出现特定值的次数;在列内出现具有特定数值范围内的数值的三元组的数量;在列内出现具有以特定字符开始的字符串类型值的三元组的数量等。在一个实施例中,可以实时地或近实时地维护统计数据以使用最新信息实现优化的查询处理。在一个实施例中,对索引的统计数据的生成和维护由图数据库服务自动地执行,例如而无需通过指示统计任务的用户输入直接提示。在一个实施例中,图数据库服务响应于图数据库中的对应列的一个或多个三元组的更新(例如,添加一个或多个三元组、删除一个或多个三元组或修改一个或多个三元组)而更新索引和所述索引的统计数据。
在一个实施例中,如640所示,可以确定是否已经从例如客户端或具有向图数据库服务提交查询的适合访问权限的任何用户处接收到查询。如果未接收到查询,则在一个实施例中,所述方法可以等待对图数据库的更新请求并且最终返回到610以执行更新(例如,添加一个或多个三元组、删除一个或多个三元组或者修改一个或多个三元组)。在一个实施例中,如果已接收到查询,则如650所示,可以对图数据库执行查询。在一个实施例中,使用对应于与查询相关联的列名称的索引来(例如,由查询计划程序)执行查询。在一个实施例中,为了优化查询,可以(至少部分地)基于每列索引的统计数据确定要使用的索引顺序。在一个实施例中,查询计划程序首先使用最具约束性的索引,然后使用下一个最具约束性的索引,以此类推。在一个实施例中,查询可以从图数据库返回一个或多个数据元素,所述数据元素可能包含所述值中的一个或多个值。
图7展示了根据一个实施例的用于图数据库中的查询语言互操作性的示例系统环境。在一个实施例中,图7中所示的图数据库服务700的方面可以如以上关于图1所讨论的那样实施。在一个实施例中,例如,图数据库服务700可以包含索引创建组件110、统计数据生成组件120以及维护三元组表150和属性范围索引160A-160N的图数据库140。在一个实施例中,图数据库服务700使用内部数据模型将数据元素存储在图数据库中。在一个实施例中,图数据库服务700使用多种不同的查询语言提供对这种数据元素的访问。在一个实施例中,查询语言与各种数据模型相关联,并且与查询语言相关联的数据模型可以在至少一些方面与内部数据模型不同。
在一个实施例中,图数据库的内部数据模型可以以列格式将数据元素表示为三元组或行。在一个实施例中,如三元组151A到151Z等三元组可以根据内部数据模型表示并且存储在三元组表中;三元组表可以表示图数据库中的主表。尽管出于举例的目的展示了三元组151A-151Z,但是在各个实施例中可以在图数据库中使用任何适合数量和配置的三元组。在一个实施例中,例如,根据内部数据模型的三元组可以包含标识符、列名称和值。在一个实施例中,内部数据模型中的三元组可以包含如注解等不同于(例如,除了或代替)标识符、列名称以及值的元素。在一个实施例中,标识符还可以被称为主题标识符。在一个实施例中,标识符可以指示保持三元组中的列名称和值的组合的特定行(例如,在数据的关系视图中)或记录。在一个实施例中,同一主题标识符可以重复用于多个三元组,例如,如果对应的行或记录包含多个类别中的值。在一个实施例中,列名称可以指示不同且单独的数据类别,并且值可以表示所述类别内的允许值之一。在一个实施例中,内部数据模型中的三元组可以用于表示连接项图中的节点和边缘(关系)。在一个实施例中,图数据库可以存储一个图或多个图。在一个实施例中,内部数据模型的三元组还存储有图标识符,所述图标识符指示三元组所属的特定图或子图。
在一个实施例中,内部数据模型中的列是强类型的,使得特定列中的值可以共享同一数据类型,并且强制机制可以确保特定列中的值限于以与列相关联的数据类型表示。在一个实施例中,数据类型可以因内部数据模型中的列而不同。在一个实施例中,图数据库中的所有行和列可以有效地属于同一主表,例如,三元组表。在一个实施例中,内部数据模型中的列名称在图数据库中是全局范围的,使得同一列名称在图数据库中表示的次数不超过一次并且同一列名称可以不限于图数据库的特定子表。在一个实施例中,通过对比,常规关系数据库中的列名称通常局部地范围限定为多个表之一。
在各个实施例中,图数据库服务700可以使用各种所支持的查询语言提供对三元组151A-151Z的读取(或检索)和写入(或插入)访问。在一个实施例中,查询语言可以包含通常与查询图数据库相关联的图数据库查询语言。在各个实施例中,例如,图数据库服务700可以支持如SPARQL、Gremlin和/或GraphQL等图数据库查询语言。在一个实施例中,由图数据库服务700支持的查询语言可以包含通常与关系数据库相关联的查询语言,如结构化查询语言(SQL)。在一个实施例中,任何所支持的查询语言可以与对应的数据模型相关联,并且那些数据模型可以来往于图数据库的内部数据模型进行映射。在一个实施例中,所支持的查询语言的数据模型可以在至少一些方面与三元组表150的内部数据模型不同。在一个实施例中,图数据库服务700可以支持以通常用于语义查询并且其数据模型将数据元素表示为包括主题、谓词和对象的资源描述框架(RDF)三元组的图数据库查询语言表示(例如,SPARQL)的查询。在一个实施例中,图数据库服务700可以支持以通常用于图遍历查询并且其数据模型将数据元素表示为属性图的图数据库查询语言表示(例如,Gremlin)的查询。
在一个实施例中,图数据库服务700可以为所支持的查询语言和对应的数据模型提供互操作性。例如,在一个实施例中,以第一查询语言表示的查询可以将数据元素插入到图数据库中,其中所插入数据元素从第一数据模型映射到内部数据模型;可以使用以第二查询语言表示的查询来检索相同的数据元素,其中所检索数据元素从内部数据模型映射到第二数据模型。类似地,在一个实施例中,以第二查询语言表示的查询可以将数据元素插入到图数据库中,其中所插入数据元素从第二数据模型映射到内部数据模型;可以使用以第一查询语言表示的查询来检索相同的数据元素,其中将所检索数据元素从内部数据模型映射到第一数据模型。在一个实施例中,图数据库服务700可以向用户提供与不同查询语言相关联的各种特征,同时根据内部数据模型使用统一的共同存储方案来维护底层数据151A-151Z。
在一个实施例中,一个或多个客户端780可以提供查询并且从图数据库服务接收查询结果。在一个实施例中,如图7所示,一个或多个客户端780可以提供以第一查询语言表示的查询781,并且还提供以第二查询语言表示的另一个查询783。在一个实施例中,第一查询语言和第二查询语言可以与不同的数据模型相关联,并且因此所述两个查询的形式可以不同。在一个实施例中,所述两个查询781和783可以由一个或多个客户端以相对于彼此的任何顺序提供,或者可能以并发的方式提供。在各个实施例中,查询781和783可以表示数据元素的插入和/或检索。在一个实施例中,在图数据库服务700处理第一查询781之后,可以(至少部分地基于三元组表150)生成对应的查询结果782并且将其返回到所述客户端780中的适当客户端。在一个实施例中,在图数据库服务700处理第二查询783之后,可以(至少部分地基于三元组表150)生成对应的查询结果784并且将其返回到所述客户端780中的适当客户端。在一个实施例中,查询结果782和784可以根据对应查询的查询语言来表示并且因此形式可以有所不同。在一个实施例中,例如,如果根据SPARQL语言表示查询781,则可以以SPARQL格式返回结果782;类似地,如果根据Gremlin语言表示查询783,则可以以Gremlin格式返回结果784。在一个实施例中,采用一种查询语言的第一查询781可以将一个或多个数据元素插入到图数据库中,并且采用另一种查询语言(具有不同的数据模型)的第二查询783可以从图数据库中检索相同的元素(或其一部分)。
在一个实施例中,图数据库服务700包含支持多种查询语言的查询接口710。在一个实施例中,查询接口710表示用于根据在数据模型方面有所不同的多种查询语言接收查询并返回查询结果的统一接口。在一个实施例中,查询接口710可以包含图形用户接口(GUI)、命令行接口(CLI)、应用程序编程接口(API)、其它适合类型的用户接口和/或其它适合类型的可编程接口的任何适合元素。在一个实施例中,查询接口710接收采用各种查询语言的查询并且通过识别与查询语言相关联的任何关键字和/或语法来自动检测查询语言。在各个实施例中,查询接口710(或图数据库服务700的另一个适合组件)可以执行如查询解析、语法验证和/或语义验证等操作。在一个实施例中,查询解析、语法验证和/或语义验证可以特定于表示查询的查询语言。
在一个实施例中,图数据库服务700使用分区索引方案,使用所支持的查询语言中的任何查询语言来实现对图数据库的查询。在一个实施例中,索引创建组件110为图数据库中的主表中的每个全局列创建索引并维护所述索引。在一个实施例中,索引创建组件110可以为图数据库中的主表中的多个但不一定是所有的全局列(例如,为旨在是可查询或可搜索的列)创建索引并维护所述索引。在一个实施例中,每列索引可以是包含多行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,每列索引也可以称为属性范围索引。在一个实施例中,每列索引中的每一行还包含指向图数据库中的主表中的对应行的指针。在一个实施例中,索引160A-160N可以作为彼此分离并且与三元组表150分离的数据结构存储在例如由图数据库服务管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引可以按列名称有效地分区。在一个实施例中,通过对比,由于可以在关系数据库管理系统中管理的局部范围列的数量非常大,因此常规关系数据库中的这种每列索引通常会极其昂贵。在一个实施例中,索引的生成和维护由图数据库服务700自动地执行,例如而无需通过指示索引任务的用户输入直接提示。在一个实施例中,通过对比,生成和维护常规关系数据库的索引通常是需要用户输入来定制索引的手动任务。
在一个实施例中,图数据库服务700包含优化查询并且生成执行计划的查询计划程序730。在一个实施例中,为了执行查询,查询计划程序730可以参考对应于与查询相关联的列的索引。在一个实施例中,统计数据生成组件120生成索引的统计数据并对其进行维护以优化查询。在一个实施例中,统计数据生成组件120生成对应于单独索引的统计数据集,如对应于索引160A-160N的统计数据121A-121N,并对其进行维护。在一个实施例中,可以使用任何适合的存储技术来存储统计数据,例如,存储在由图数据库服务700管理或以其它方式可由所述图数据库服务访问的存储装置中。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,例如,统计数据可以指示在列内出现特定值的次数;在列内出现具有特定数值范围内的数值的三元组的数量;在列内出现具有以特定字符开始的字符串类型值的三元组的数量等。
在一个实施例中,为了使用查询计划程序730优化查询,可以(至少部分地)基于每列索引的统计数据确定要使用的索引顺序。在一个实施例中,查询计划程序730首先使用最具约束性的索引,然后使用下一个最具约束性的索引,以此类推。在一个实施例中,可以实时地或近实时地维护统计数据以使用最新信息实现优化的查询处理。在一个实施例中,对索引的统计数据的生成和维护由图数据库服务700自动地执行,例如而无需通过指示统计任务的用户输入直接提示。在一个实施例中,图数据库服务700响应于图数据库中的对应列的一个或多个三元组的更新(例如,添加一个或多个三元组、删除一个或多个三元组或修改一个或多个三元组)而生成或更新索引和所述索引的统计数据。在一个实施例中,图数据库服务700提供查询提示机制以优化具体应用程序内的单独查询的执行。
在一个实施例中,查询计划程序730可以生成查询计划。在一个实施例中,查询计划可以包含用于实施查询的任何适合的数据和/或指令,如执行路径树。在一个实施例中,用于查询语言有所不同的查询的执行计划可以采用基本上独立于起始查询语言和/或其数据模型的类似形式。在一个实施例中,图数据库服务700包含查询执行组件740,其也被称为执行引擎。在一个实施例中,执行引擎可以执行或以其它方式实施为查询语言有所不同的查询生成的执行计划。在一个实施例中,执行引擎可以表示用于执行数据模型有所不同的多种查询语言的查询的统一的共同平台。在一个实施例中,执行引擎可以与属性范围索引160A-160N交互以执行如将数据元素插入到三元组表150中以及从三元组表中检索数据元素等操作。
图8A展示了根据一个实施例的用于图数据库中的查询语言互操作性的示例系统环境的其它方面,包含用于查询管道中的多种查询语言的单独组件。在一个实施例中,可以将如以上所讨论的查询接口710的功能分布在多个语言特定的查询接口组件之间。在一个实施例中,例如,图数据库服务700包含查询接口710A到710E,所述查询接口中每个查询接口可以接收以一种或多种对应的查询语言表示的查询。在一个实施例中,所述一个或多个客户端780之一可以基于客户端寻求表示查询的查询语言来选择使用查询接口710A-710E中的哪个查询接口。在各个实施例中,可以在图数据库系统700中使用任何适合数量和配置的查询接口710A-710E。在一个实施例中,查询接口710A-710E可以以特定于与组件相关联的一种或多种查询语言的方式执行如查询解析、语法验证和/或语义验证等操作。
在一个实施例中,可以将如以上所讨论的查询计划程序730的功能分布在多个语言特定的查询计划程序组件之间。在一个实施例中,例如,图数据库服务700包含查询接口730A到730E,所述查询接口中的每个查询接口可以优化查询并且生成以一种或多种对应查询语言表示的查询的查询计划。在一个实施例中,查询接口730A-730E中的任何查询接口可以是查询管道的一部分,所述查询管道还包含语言特定的查询接口组件710A-710E之一。在一个实施例中,用于特定查询的查询计划程序730A-730E可以基于查询接口组件710A-710E而变化。在各个实施例中,可以在图数据库系统700中使用任何适合数量和配置的查询接口730A-730E。在一个实施例中,由各种查询计划组件730A-730E生成的执行计划可以采用基本上独立于起始查询语言和/或其数据模型的类似形式。在一个实施例中,使用查询计划组件730A-730E生成的查询计划可以由如以上关于图7所讨论的相同的执行引擎740执行。在一个实施例中,如图8B所示,多个语言特定的查询计划程序730A-730E可以在具有用于多种查询语言的统一查询接口710的管道中使用。在一个实施例中,如图8C所示,多个语言特定的查询接口710A-710E可以在具有用于多种查询语言的统一查询接口730的管道中使用。
在一个实施例中,图数据库的查询可以包含根据所支持的查询语言中的任何查询语言表示的语义查询。在一个实施例中,语义查询可以允许基于在数据库中体现的句法、语义和结构信息从图数据库中检索以明确和隐含方式得到的信息。在一个实施例中,语义查询可以返回如单条信息等具体或精确的结果。在一个实施例中,语义查询可以通过模式匹配和机器逻辑返回对“更模糊”或不太具体的问题的答案。在一个实施例中,通过对图数据库中的三元组进行操作,语义查询可以处理信息之间的实际关系并且从图数据库中的连接网络中确定答案。在一个实施例中,语义查询可以对结构化数据进行操作并且利用如运算符(例如,>、<和=)、模式匹配等特征。在一个实施例中,图数据库的语义查询以如SPARQL等特别适合于语义查询并且可以被称为语义查询语言的查询语言的语法格式化。在一个实施例中,可以在不了解图数据库中的数据库模式的情况下编写语义查询。在一个实施例中,图数据库的查询可以用如Gremlin等特别适合于图遍历查询并且可以被称为图遍历语言或图查询语言的查询语言表示。在一个实施例中,语义查询的形式可以与图遍历查询的形式不同。在一个实施例中,语义查询和图遍历查询二者都可以来往于图数据库的内部数据模型进行映射。在一个实施例中,图数据库服务700可以支持对属性值执行简单文本搜索的查询。在一个实施例中,在与如Gremlin等一种或多种查询语言相关联的属性图模型中,文本搜索可以搜索节点和边缘属性。在一个实施例中,在与如SPARQL等一种或多种查询语言相关联的资源描述框架(RDF)模型中,文本搜索可以搜索字面值。
在一个实施例中,图数据库服务700可以由如社交网络、推荐引擎、数据管理、网络和IT管理、欺诈检测、医疗应用程序、联机事务处理(OLTP)和联机分析处理(OLAP)工作负载等不同领域中的一个或多个客户端780使用。在一个实施例中,图数据库服务700可以用于处理丰富(例如,表示大量信息)且高度连接(例如,表示多种关系)的流数据。在一个实施例中,例如,金融部门中的客户端可以使用图数据库服务700将信用卡交易流处理为图查询以识别潜在的异常。在一个实施例中,作为更具体的实例,图数据库服务700的客户端可以提供图查询以检测在一个地理区域中发生并且五分钟之后在另一个地理区域中发生的购买。在一个实施例中,检测到顾客进行过时间上相近地发生但发生地相隔数千英里的两个交易时,图数据库服务700的客户端可以生成警报并且将其发送给顾客。在一个实施例中,作为另一个实例,零售公司可以使用图数据库服务700基于顾客朋友的购买行为向顾客做出购买推荐。在一个实施例中,作为又另一个实例,生命科学组织可以使用图数据库服务700来分析不同化学物质和化合物之间的关系以检测药物相互作用。在各个实施例中,可以使用来往于图数据库140的内部数据模型进行映射的一种或多种所支持的查询语言来实施这些用例。
在一个实施例中,一个或多个客户端780可以使用图数据库服务来组合和分析在客户端的OLTP和OLAP应用程序中聚合的大量关系信息。在一个实施例中,除了短交互式查询(例如,对于OLTP)和更长时间运行的复杂查询(例如,对于OLAP),使用图数据库服务的图分析可以通过分析整个关系集合来产生新的见解。在一个实施例中,图分析可以使用迭代算法来处理非常大的图并且从中挖取新信息。在一个实施例中,这种图分析的实例可以包含使用搜索引擎算法来检测网页相关性;使用社区检测算法来检测来自大型社交网络的类似用户组;以及执行最短路径算法以在道路网络上找到从A点到B点的最低成本路线。对于常规数据库(例如,关系数据库)来说,这种任务可能在计算上具有挑战性,因为它们通常需要多次访问图中的所有关系(边缘)以收敛于结果。在各个实施例中,可以使用来往于图数据库140的内部数据模型进行映射的一种或多种所支持的查询语言来实施这些图分析案例。
在一个实施例中,图数据库服务700支持传入和传出图数据流。在一个实施例中,图数据库服务700可以与机器学习和深度学习应用程序和服务结合使用,使得可以分析图数据库中的关系丰富的数据以识别使用机器学习算法的区域。在一个实施例中,图数据库服务700可以用于表示和缩放知识图。在一个实施例中,图数据库服务700提供对处理大量关系信息的原生支持。在一个实施例中,通过支持各种查询语言,图数据库服务700支持属性图和资源描述框架(RDF)图模型,以允许在代表客户端查询数据时具有灵活性。
在一个实施例中,一个或多个客户端780可以包含适合于向图数据库服务700提交数据和请求的任何类型的客户端。在一个实施例中,一个或多个客户端780可以包含寻求利用图数据库服务700的一个或多个服务或应用程序。在一个实施例中,一个或多个客户端780可以通过一个或多个网络向服务传达基于网络的服务请求。在各个实施例中,一个或多个网络可以包含在客户端与图数据库服务之间建立基于网络的通信所必需的网络硬件和协议的任何适合组合。在一个实施例中,例如,一个或多个网络通常可以包含共同实施互联网的各种电信网络和服务提供商。在一个实施例中,一个或多个网络还可以包含如局域网(LAN)或广域网(WAN)等专用网络以及公共或专用无线网络。在一个实施例中,例如,一个或多个客户端780和图数据库服务700二者可以分别在具有自己的内部网络的企业内进行预配。在一个实施例中,一个或多个网络可以包含建立给定客户端与互联网之间以及互联网与图数据库服务之间的网络链接所必需的硬件(例如,调制解调器、路由器、交换机、负载均衡器、代理服务器等)和软件(例如,协议栈、会计软件、防火墙/安全软件等)。在一个实施例中,一个或多个客户端780可以使用专用网络而非公共互联网与图数据库服务通信。
在一个实施例中,图数据库服务700可以包含一个或多个计算装置和任何适合的存储资源,所述计算装置中的任何计算装置可以由图14中所示的示例计算装置3000来实施。类似地,在一个实施例中,可以使用图14中所示的示例计算装置3000来实施一个或多个客户端780。在各个实施例中,服务700、数据库140和/或一个或多个客户端780的所描述功能的部分可以由同一计算装置或者由任何适合数量的不同计算装置提供。在一个实施例中,如果使用不同的计算装置来实施所述组件中的任何组件,则所述组件及其相应的计算装置可以例如通过网络通信地耦合。在一个实施例中,所示组件中的每个组件(如图数据库服务及其组成组件)可以表示可用于执行其相应功能的软件和硬件的任何组合。在各个实施例中,图数据库服务和/或图数据库可以包含未示出的另外组件、包含的组件可以比所示组件更少或可以包含所示组件的不同组合、配置或不同量的所述组件。
图9展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含插入根据资源描述框架(RDF)数据模型表示的数据元素。在一个实施例中,图数据库服务700可以支持以通常用于语义查询并且其数据模型将数据元素表示为包括主题、谓词和对象的资源描述框架(RDF)三元组的图数据库查询语言表示(例如,SPARQL)的查询。在一个实施例中,语义查询可以对结构化数据进行操作并且利用如运算符(例如,>、<和=)、模式匹配等特征。在一个实施例中,图数据库的语义查询以如SPARQL等特别适合于语义查询并且可以被称为语义查询语言的查询语言的语法格式化。在一个实施例中,可以在不了解图数据库中的数据库模式的情况下编写语义查询。在一个实施例中,图数据库服务700可以支持采用SPARQL或另一种语义查询语言的查询以将一个或多个三元组插入到图中,从图中删除一个或多个三元组,将表示图的文档的内容加载到图数据库中并且清除一个或多个图中的所有三元组。在一个实施例中,执行这种查询可以包含数据模型映射操作720,其中将查询的“源”数据模型中的数据元素映射到如在三元组表150的内部数据模型中表示的数据元素。在一个实施例中,如图9的实例所示,可以处理基于RDF的查询900(以如SPARQL等查询语言表示)以将三元组(主题、谓语、对象)作为至少一个主题ID、列名称和值插入在三元组表150中。
在各个实施例中,可以在基于RDF的查询与三元组表150之间使用任何适合的映射。在一个实施例中,例如,可以将基于RDF的查询中的主题映射到三元组表150中的主题ID,可以将谓词映射到列名称,并且可以将对象映射到值。在一个实施例中,可以将RDF图构造映射到三元组表150中的容器构造。在一个实施例中,可以根据以下实例来格式化基于RDF的插入查询900,其中可以将主题<P105>映射到三元组表150中的主题ID,可以将谓词(“类型”、“姓名”和“年龄”)映射到三元组表中的列名称,并且可以将那些谓词的对象映射到三元组表中的值:
插入数据
在一个实施例中,基于RDF的插入查询900可以包含如在以下实例中的一个或多个另外字段,其中三元组与映射到先前在图2B中所示的图ID的图标识符(http://customerList)相关联:
插入数据
图10展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含插入根据属性图数据模型表示的数据元素。在一个实施例中,图数据库服务700可以支持以通常用于图遍历查询并且其数据模型将数据元素表示为属性图的图数据库查询语言表示(例如,Gremlin)的查询。在一个实施例中,图遍历查询的形式可以与语义查询的形式不同。在一个实施例中,语义查询和图遍历查询二者都可以来往于图数据库的内部数据模型进行映射。在一个实施例中,如图10的实例所示,可以处理基于属性图的查询1000(以如Gremlin等查询语言表示)以将属性图的一个或多个节点或边缘(或其属性)作为至少一个主题ID、列名称和值插入在三元组表150中。在一个实施例中,执行这种查询可以包含数据模型映射操作720,其中将查询1000的“源”数据模型中的数据元素映射到如在三元组表150的内部数据模型中表示的数据元素。
在各个实施例中,可以在基于属性图的查询与三元组表150之间使用任何适合的映射。在一个实施例中,为了得到与基于RDF的插入查询900类似的结果,可以根据以下实例格式化基于属性图的插入查询1000:
graph.addVertex('type','Customer','id','<P105>','name','NameSurname','age','27')
在一个实施例中,基于属性图的插入查询1000可以包含如在以下实例中的一个或多个另外字段,其中所插入值与映射到先前在图2B中所示的图ID的图标识符(http://customerList)相关联:
graph.addVertex('type','Customer','id','<P105>','_container','<http://customerList>','name','Name Surname','age','27')
图11展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含检索根据RDF数据模型表示的数据元素。在一个实施例中,图数据库服务700可以支持对属性值执行简单文本搜索的查询。在一个实施例中,在与如SPARQL等一种或多种查询语言相关联的RDF模型中,文本搜索可以搜索字面值。在一个实施例中,图数据库服务700可以支持采用SPARQL或另一种语义查询语言的查询以从图数据库中选择值并且以表格格式返回所述值,构造从图数据库中提取的信息并且将其转换为RDF形式,请求查询的真/假结果并且描述从图数据库中提取的所提取RDF图。在一个实施例中,执行这种查询可以包含数据模型映射操作720,其中来往于如在与查询语言相关联的数据模型中表示的数据元素映射内部数据模型中的数据元素。在一个实施例中,如图11的实例所示,可以处理基于RDF的查询1100(以如SPARQL等查询语言表示)以从三元组表150中选择一个或多个三元组(主题、谓词、对象)。在一个实施例中,可以从三元组表中检索基于RDF的查询结果1105,使用数据模型映射720将所述结果映射到RDF三元组,并且将所述结果返回到适当的客户端。
图12展示了根据一个实施例的支持查询语言互操作性的图数据库的实例,包含检索根据属性图数据模型表示的数据元素。在一个实施例中,图数据库服务700可以支持对属性值执行简单文本搜索的查询。在一个实施例中,在与如Gremlin等一种或多种查询语言相关联的属性图模型中,文本搜索可以搜索节点和边缘属性。在一个实施例中,执行这种查询可以包含数据模型映射操作720,其中来往于如在与查询语言相关联的数据模型中表示的数据元素映射内部数据模型中的数据元素。在一个实施例中,如图12的实例所示,可以处理基于属性图的查询1200(以如Gremlin等查询语言表示)以从三元组表150中选择一个或多个节点、边缘或其属性。在一个实施例中,可以从三元组表中检索基于属性图的查询结果1205,使用数据模型映射720将所述结果映射到属性图数据模型,并且将所述结果返回到适当的客户端。
图13是展示了根据一个实施例的用于实施图数据库中的查询语言互操作性的方法的流程图。在一个实施例中,如1310所示,可以在图数据库服务或系统处接收第一查询。在一个实施例中,第一查询可以寻求将一个或多个数据元素插入到图数据库中。在一个实施例中,可以用所支持的一组查询语言中的一种特定查询语言表示第一查询。在一个实施例中,查询语言可以包含通常与查询图数据库相关联的至少两种图数据库查询语言。在各个实施例中,例如,可以用如SPARQL、Gremlin和/或GraphQL等图数据库查询语言访问图数据库。在一个实施例中,任何所支持的查询语言可以与对应的数据模型相关联。在一个实施例中,第一查询可以以通常用于语义查询并且其数据模型将数据元素表示为包括主题、谓词和对象的资源描述框架(RDF)三元组的的图数据库查询语言(例如,SPARQL)表示。在一个实施例中,第一查询可以以通常用于图遍历查询并且其数据模型将数据元素表示为属性图的图数据库查询语言(例如,Gremlin)表示。
在一个实施例中,如1320所示,可以使用内部数据模型将数据元素存储在图数据库中。在一个实施例中,内部数据模型在至少一些方面不同于与表示第一查询的查询语言相关联的数据模型。在一个实施例中,例如,内部数据模型将数据表示为主题标识符、列名称和值的三元组,而与第一查询相关联的数据模型可以将数据表示为RDF三元组(具有主题、谓词和对象)或属性图(具有节点和边缘)。在一个实施例中,数据元素可以从与第一查询相关联的数据模型映射到内部数据模型。
在一个实施例中,内部数据模型中的列是强类型的,使得特定列中的值可以共享同一数据类型,并且强制机制可以确保特定列中的值限于以与列相关联的数据类型表示。在一个实施例中,内部数据模型中的列名称在图数据库中是全局范围的,使得同一列名称在图数据库中表示的次数不超过一次并且同一列名称可以不限于图数据库的特定子表。在一个实施例中,可以为图数据库中的内部数据模型中的全局范围列创建索引或更新所述索引。在一个实施例中,为图数据库中的主表中的多个但不一定是所有的全局列(例如,为旨在是可查询或可搜索的列)创建索引并维护所述索引。在一个实施例中,每列索引可以是包含多行的表或其它列数据结构,并且每行可以包含与对应于索引的列相关联的值。在一个实施例中,可以递增地生成索引的统计数据或更新所述索引例如以优化查询。在一个实施例中,索引的统计数据可以表示对应列内的值分布。在一个实施例中,例如,统计数据可以指示在列内出现特定值的次数;在列内出现具有特定数值范围内的数值的三元组的数量;在列内出现具有以特定字符开始的字符串类型值的三元组的数量等。在一个实施例中,索引和统计数据的生成和维护由图数据库服务自动地执行,例如而无需通过指示索引任务的用户输入直接提示。
在一个实施例中,如1330所示,可以(至少部分地)基于第二查询从图数据库中检索使用第一查询插入的至少一些数据元素。在一个实施例中,以与表示第一查询的查询语言不同的查询语言表示第二查询。例如,在一个实施例中,可以使用以如SPARQL等语义查询语言表示的查询插入数据元素,并且(至少部分地)使用以如Gremlin等图遍历语言表示的查询检索数据元素。作为另一个实例,在一个实施例中,可以使用以如Gremlin等图遍历语言表示的查询插入数据元素,并且(至少部分地)使用以如SPARQL等语义查询语言表示的查询检索数据元素。在一个实施例中,数据元素可以从内部数据模型映射到与第二查询相关联的数据模型。在一个实施例中,使用对应于与查询相关联的列名称(如在内部数据模型中所表示的)的索引来(例如,通过查询计划程序)执行查询。在一个实施例中,为了优化查询,可以(至少部分地)基于每列索引的统计数据确定要使用的索引顺序。在一个实施例中,查询计划程序首先使用最具约束性的索引,然后使用下一个最具约束性的索引,以此类推。在一个实施例中,图数据库可以使用共同存储方案提供多种所支持的查询语言(及其相关联的数据模型)的互操作性。
可以根据以下条款描述本公开的实施例:
1.一种系统,其包括:
一个或多个处理器;
存储器,其用于存储计算机可执行指令,所述计算机可执行指令如果被执行则使所述一个或多个处理器:
使用多种图数据库查询语言中的一种或多种图数据库查询语言将多个数据元素插入到图数据库中,其中所述图数据库查询语言包括与第一数据模型相关联的第一图数据库查询语言和与第二数据模型相关联的第二图数据库查询语言;
使用内部数据模型将所述数据元素存储在所述图数据库中,其中所述内部数据模型与所述第一数据模型和所述第二数据模型不同,并且其中所述内部数据模型使用主题标识符、列名称和所述列名称的值表示所述数据元素;并且
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中所述查询使用所述第一图数据库查询语言来表示并且检索使用所述第二图数据库查询语言插入的一个或多个数据元素,或者其中所述查询使用所述第二图数据库查询语言来表示并且检索使用所述第一图数据库查询语言插入的一个或多个数据元素。
2.根据条款1所述的系统,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
3.根据条款2所述的系统,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
4.根据条款2所述的系统,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
5.一种方法,其包含:
使用多种查询语言中的一种或多种查询语言将多个数据元素插入到图数据库中,其中所述查询语言包括与第一数据模型相关联的第一查询语言和与第二数据模型相关联的第二查询语言,并且其中使用不同于所述第一数据模型和所述第二数据模型的内部数据模型将所述数据元素存储在所述图数据库中;以及
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中使用所述查询语言中与插入所述数据元素中的所述一个或多个数据元素时使用的查询语言不同的查询语言来表示所述查询。
6.根据条款5所述的方法,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
7.根据条款6所述的方法,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
8.根据条款6所述的方法,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
9.根据条款5所述的方法,其进一步包括:
至少部分地基于另外的查询从所述图数据库中检索所述数据元素中的另外的一个或多个数据元素,其中使用所述查询语言中的不同查询语言表示所述查询和所述另外的查询。
10.根据条款9所述的方法,其进一步包括:
至少部分地基于所述查询生成查询执行计划;
至少部分地基于所述另外的查询生成另外的查询执行计划;以及
使用执行引擎执行所述查询执行计划和所述另外的查询执行计划。
11.根据条款5所述的方法,其中所述内部数据模型使用主题标识符、列名称和所述列名称的值表示所述数据元素,其中所述列名称在所述图数据库中是全局范围的,并且其中所述列名称与所述值的相应数据类型相关联。
12.根据条款11所述的方法,其进一步包括:
创建对应于所述列名称的索引,其中所述索引中的单独索引包括所述值中与对应列名称相关联的一个或多个值,并且其中使用所述索引中对应于所述列名称中与所述查询相关联的一个或多个列名称的一个或多个索引来执行所述查询。
13.一种用于存储程序指令的计算机可读存储媒体,所述程序指令如果被执行则使一个或多个处理器执行以下操作:
使用多种图数据库查询语言中的一种或多种图数据库查询语言将多个数据元素插入到图数据库中,其中所述图数据库查询语言包括与第一数据模型相关联的第一图数据库查询语言和与第二数据模型相关联的第二图数据库查询语言,并且其中使用不同于所述第一数据模型和所述第二数据模型的内部数据模型将所述数据元素存储在所述图数据库中;以及
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中所述查询使用所述第一图数据库查询语言来表示并且检索使用所述第二图数据库查询语言插入的一个或多个数据元素,或者其中所述查询使用所述第二图数据库查询语言来表示并且检索使用所述第一图数据库查询语言插入的一个或多个数据元素。
14.根据条款13所述的计算机可读存储媒体,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
15.根据条款14所述的计算机可读存储媒体,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
16.根据条款14所述的计算机可读存储媒体,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
17.根据条款13所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
至少部分地基于另外的查询从所述图数据库中检索所述数据元素中的另外的一个或多个数据元素,其中使用所述图数据库查询语言中的不同图数据库查询语言表示所述查询和所述另外的查询。
18.根据条款17所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
至少部分地基于所述查询生成查询执行计划;
至少部分地基于所述另外的查询生成另外的查询执行计划;以及
使用执行引擎执行所述查询执行计划和所述另外的查询执行计划。
19.根据条款13所述的计算机可读存储媒体,其中所述内部数据模型使用主题标识符、列名称和所述列名称的值表示所述数据元素,其中所述列名称在所述图数据库中是全局范围的,并且其中所述列名称与所述值的相应数据类型相关联。
20.根据条款19所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
创建对应于所述列名称的索引,其中所述索引中的单独索引包括所述值中与对应列名称相关联的一个或多个值,并且其中使用所述索引中对应于所述列名称中与所述查询相关联的一个或多个列名称的一个或多个索引来执行所述查询。
说明性计算机系统
在一个实施例中,实施本文所描述的一种或多种技术的一部分或全部的计算机系统可以包含包括或者被配置成访问一个或多个计算机可读媒体的计算机系统。图14展示了一个实施例中的这种计算装置3000。在一个实施例中,计算装置3000包含通过输入/输出(I/O)接口3030耦合到系统存储器3020的一个或多个处理器3010A-3010N。在一个实施例中,计算装置3000进一步包含耦合到I/O接口3030的网络接口3040。
在各个实施例中,计算装置3000可以是包含一个处理器的单处理器系统或者包含若干处理器3010A-3010N(例如,两个、四个、八个或另一适合数量)的多处理器系统。在各个实施例中,处理器3010A-3010N可以包含能够执行指令的任何适合的处理器。例如,在各个实施例中,处理器3010A-3010N可以是实施如x86、PowerPC、SPARC、或MIPS ISA或任何其它适合的ISA等各种指令集架构(ISA)中的任何指令集架构的处理器。在一个实施例中,在多处理器系统中,处理器3010A-3010N中的每一个处理器通常可以但并不一定实施同一ISA。
在一个实施例中,系统存储器3020可以被配置成存储可由一个或多个处理器3010A-3010N访问的程序指令和数据。在各种实施例中,系统存储器3020可以使用如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存型存储器、或任何其它类型的存储器等任何适合的存储器技术来实施。在一个实施例中,实施一种或多种期望功能的程序指令和数据,如以上所描述的那些方法、技术和数据,被示出为以代码(即程序指令)3025和数据3026的形式存储在系统存储器3020内。
在一个实施例中,I/O接口3030可以被配置成协调处理器3010A-3010N、系统存储器3020与所述装置中包含网络接口3040或其它外围接口在内的任何外围装置之间的I/O流量。在一些实施例中,I/O接口3030可以执行任何必要的协议、定时或其它数据转换将来自一个部件(例如系统存储器3020)的数据信号转换为适合于另一部件(例如处理器3010)使用的格式。在一些实施例中,I/O接口3030可以包含例如对通过如外围部件互连(PCI)总线标准或通用串行总线(USB)标准的变体等各种类型的外围总线的所附接装置的支持。在一些实施例中,例如,I/O接口3030的功能可以分成如北桥和南桥等两个或更多个单独的部件。在一些实施例中,如到系统存储器3020的接口等I/O接口3030的功能中的一些或全部可以直接并入处理器3010A-3010N中。
在一个实施例中,网络接口3040可以被配置成允许数据在计算装置3000与附接到一个或多个网络3050的其它装置3060之间交换。在各种实施例中,例如,网络接口3040可以支持经由如以太网类型等任何适合的有线或无线通用数据网络的通信。在一个实施例中,网络接口3040可以支持通过如模拟语音网络或数字光纤通信网络等电信/电话网络、通过如光纤通道SAN等存储区域网络或者通过任何其它适合类型的网络和/或协议进行的通信。
在一些实施例中,系统存储器3020可以是计算机可读(即,计算机可访问)媒体的一个实施例,所述计算机可读媒体被配置成存储如以上所描述的用于实施相应方法和装置的实施例程序指令和数据。然而,在一些实施例中,程序指令和/或数据可以在不同类型的计算机可读媒体上接收、发送或存储。在一个实施例中,一般而言,计算机可读媒体可以包含如磁性或光学媒体等非暂时性存储媒体,例如,通过I/O接口3030耦合到计算装置3000的磁盘或DVD/CD。在一个实施例中,非暂时性计算机可读存储媒体还可以包含如RAM(例如,SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等任何易失性或非易失性媒体,所述媒体可以在一些实施例中作为系统存储器3020或存储器的另一种类型包含在计算装置3000中。在一个实施例中,计算机可读媒体可以包含如电信号、电磁信号或数字信号等通过如网络和/或无线链接(如可以通过网络接口3040来实施)等通信媒体来传送的传输媒体或信号。如图14中所示出计算装置等多个计算装置的部分或全部可以用于在各种实施例中实施所描述的功能;例如,在各种不同装置和服务器上运行的软件组件可以协作以提供功能。在一些实施例中,可以使用存储装置、网络装置或各种类型的计算机系统来实施所描述的功能的部分。在一个实施例中,术语“计算装置”指的是至少所有这些类型的装置,并且不限于这些类型的装置。
如附图中所示出的和本文所描述的各种方法代表方法的实施例的示例。在各个实施例中,所述方法可以以软件、硬件或其组合实施。在所述方法中的各种方法中,可以改变步骤的顺序,并且可以对各种元素进行添加、重新排序、组合、省略、修改等。在各个实施例中,可以自动地(例如,在没有由用户输入直接提示的情况下)和/或以编程方式(例如,根据程序指令)执行所述步骤中的各个步骤。
本文中对本发明的描述中所使用的术语仅用于描述特定实施例的目的,并且并不意在是对本发明的限制。如本发明和所附权利要求书的描述中所使用,单数形式“一(a)”和“所述(the)”意在还包含复数形式,除非上下文另有明确指示。还应理解,如本文所使用的术语“和/或”指的是并且包含一个或多个相关联的已列项的任何和全部可能的组合。将进一步理解的是,当在本说明书中使用术语“包含(includes)”、“包含(including)”、“包括(comprises)”和/或“包括(comprising)”时,指定所规定的特征、整数、步骤、操作、元素和/或组件的存在,但不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、组件和/或其组。
取决于上下文,如在本文所使用的,术语“如果”可以被解释成意指“当...时”或“在...时”或“响应于确定”或“响应于检测”。类似地,依赖于上下文,短语“如果被确定”或“如果\检测到[所规定的条件或事件]”可以被解释成意指“在确定…时”或“响应于确定”或“在检测到\(所规定的条件或事件)…时”或“响应于检测到\(所规定的条件或事件)”。
还应当理解的是,尽管本文可以使用术语第一、第二等来描述各种元素,但是这些元素不应受这些术语的限制。这些术语仅用来将一个元素与另一个元素相区分。例如,在不脱离本发明的范围的情况下,第一触点可以被称为第二触点,并且类似地,第二触点可以被称为第一触点;第一触点和第二触点二者均是触点,但是它们不是同一触点。
本文阐述了许多具体细节以提供对所要求的主题的透彻理解。然而,本领域技术人员将理解,可以在没有这些具体细节的情况下实践所要求的主题。在其它实例中,没有详细地介绍普通技术人员已知的方法、设备、或系统,以便不使所要求的主题晦涩难懂。可作出的各种修改和改变对具有本公开优点的本领域技术人员而言是显而易见的。旨在包含所有这些修改和变化并且,因此,以上所描述被认为是说明性的而不是限制性的。
Claims (20)
1.一种用于实现图数据库中的查询语言互操作性的系统,该系统包括:
一个或多个处理器;
存储器,用于存储计算机可执行指令,所述计算机可执行指令如果被执行则使所述一个或多个处理器:
使用多种图数据库查询语言中的一种或多种图数据库查询语言将多个数据元素插入到图数据库中,其中所述图数据库查询语言包括与第一数据模型相关联的第一图数据库查询语言和与第二数据模型相关联的第二图数据库查询语言,并且其中所述数据元素中的一个或多个是使用第一图数据库查询语言插入的并且所述数据元素的另外一个或多个是使用第二图数据库查询语言插入的;
使用内部数据模型将所述数据元素存储在所述图数据库中,其中所述内部数据模型与所述第一数据模型和所述第二数据模型不同,并且其中所述内部数据模型使用一个相应主题标识符、多个列名称和所述多个列名称的相应值表示所述数据元素中的各个数据元素;并且
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中所述查询使用所述第一图数据库查询语言来表示并且检索使用所述第二图数据库查询语言插入的一个或多个数据元素,或者其中所述查询使用所述第二图数据库查询语言来表示并且检索使用所述第一图数据库查询语言插入的一个或多个数据元素。
2.根据权利要求1所述的系统,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
3.根据权利要求2所述的系统,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
4.根据权利要求2所述的系统,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
5.一种用于实现图数据库中的查询语言互操作性的方法,该方法包含:
使用多种查询语言中的一种或多种查询语言将多个数据元素插入到图数据库中,其中所述查询语言包括与第一数据模型相关联的第一查询语言和与第二数据模型相关联的第二查询语言,其中所述数据元素中的一个或多个是使用第一查询语言插入的并且所述数据元素的另外一个或多个是使用第二查询语言插入的,其中使用不同于所述第一数据模型和所述第二数据模型的内部数据模型将所述数据元素存储在所述图数据库中,并且其中所述内部数据模型使用一个相应主题标识符、多个列名称和所述多个列名称的相应值表示所述数据元素中的各个数据元素;以及
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中使用所述查询语言中与插入所述数据元素中的所述一个或多个数据元素时使用的查询语言不同的查询语言来表示所述查询。
6.根据权利要求5所述的方法,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
7.根据权利要求6所述的方法,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
8.根据权利要求6所述的方法,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
9.根据权利要求5所述的方法,其进一步包括:
至少部分地基于另外的查询从所述图数据库中检索所述数据元素中的另外的一个或多个数据元素,其中使用所述查询语言中的不同查询语言表示所述查询和所述另外的查询。
10.根据权利要求9所述的方法,其进一步包括:
至少部分地基于所述查询生成查询执行计划;
至少部分地基于所述另外的查询生成另外的查询执行计划;以及
使用执行引擎执行所述查询执行计划和所述另外的查询执行计划。
11.根据权利要求5所述的方法,其中所述列名称在所述图数据库中是全局范围的,并且其中所述列名称与所述值的相应数据类型相关联。
12.根据权利要求11所述的方法,其进一步包括:
创建对应于所述列名称的索引,其中所述索引中的单独索引包括所述值中与对应列名称相关联的一个或多个值,并且其中使用所述索引中对应于所述列名称中与所述查询相关联的一个或多个列名称的一个或多个索引来执行所述查询。
13.一种用于存储程序指令的计算机可读存储媒体,所述程序指令如果被执行则使一个或多个处理器执行以下操作:
使用多种图数据库查询语言中的一种或多种图数据库查询语言将多个数据元素插入到图数据库中,其中所述图数据库查询语言包括与第一数据模型相关联的第一图数据库查询语言和与第二数据模型相关联的第二图数据库查询语言,其中所述数据元素中的一个或多个是使用第一图数据库查询语言插入的并且所述数据元素的另外一个或多个是使用第二图数据库查询语言插入的,其中使用不同于所述第一数据模型和所述第二数据模型的内部数据模型将所述数据元素存储在所述图数据库中,并且其中所述内部数据模型使用一个相应主题标识符、多个列名称和所述多个列名称的相应值表示所述数据元素中的各个数据元素;以及
至少部分地基于查询从所述图数据库中检索所述数据元素中的一个或多个数据元素,其中所述查询使用所述第一图数据库查询语言来表示并且检索使用所述第二图数据库查询语言插入的一个或多个数据元素,或者其中所述查询使用所述第二图数据库查询语言来表示并且检索使用所述第一图数据库查询语言插入的一个或多个数据元素。
14.根据权利要求13所述的计算机可读存储媒体,其中所述第一数据模型使用包括主题、谓词和对象的资源描述框架(RDF)三元组表示数据元素,并且其中所述第二数据模型使用属性图表示数据元素。
15.根据权利要求14所述的计算机可读存储媒体,其中至少部分地基于将一个或多个RDF三元组映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个属性图从所述图数据库中检索所述一组所述数据元素。
16.根据权利要求14所述的计算机可读存储媒体,其中至少部分地基于将一个或多个属性图映射到所述内部数据模型将一组所述数据元素插入到所述图数据库中,并且其中至少部分地基于将所述内部数据模型映射到一个或多个RDF三元组从所述图数据库中检索所述一组所述数据元素。
17.根据权利要求13所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
至少部分地基于另外的查询从所述图数据库中检索所述数据元素中的另外的一个或多个数据元素,其中使用所述图数据库查询语言中的不同图数据库查询语言表示所述查询和所述另外的查询。
18.根据权利要求17所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
至少部分地基于所述查询生成查询执行计划;
至少部分地基于所述另外的查询生成另外的查询执行计划;以及
使用执行引擎执行所述查询执行计划和所述另外的查询执行计划。
19.根据权利要求13所述的计算机可读存储媒体,其中所述列名称在所述图数据库中是全局范围的,并且其中所述列名称与所述值的相应数据类型相关联。
20.根据权利要求19所述的计算机可读存储媒体,其中所述程序指令能够由计算机进一步执行以执行以下操作:
创建对应于所述列名称的索引,其中所述索引中的单独索引包括所述值中与对应列名称相关联的一个或多个值,并且其中使用所述索引中对应于所述列名称中与所述查询相关联的一个或多个列名称的一个或多个索引来执行所述查询。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/411,596 | 2017-01-20 | ||
US15/411,596 US10963512B2 (en) | 2017-01-20 | 2017-01-20 | Query language interoperability in a graph database |
PCT/US2018/014470 WO2018136771A1 (en) | 2017-01-20 | 2018-01-19 | Query language interoperability in a graph database |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110291517A CN110291517A (zh) | 2019-09-27 |
CN110291517B true CN110291517B (zh) | 2023-10-31 |
Family
ID=61750508
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880007710.3A Active CN110291517B (zh) | 2017-01-20 | 2018-01-19 | 图数据库中的查询语言互操作性 |
Country Status (4)
Country | Link |
---|---|
US (3) | US10963512B2 (zh) |
EP (1) | EP3571606B1 (zh) |
CN (1) | CN110291517B (zh) |
WO (1) | WO2018136771A1 (zh) |
Families Citing this family (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10963512B2 (en) | 2017-01-20 | 2021-03-30 | Amazon Technologies, Inc. | Query language interoperability in a graph database |
CN109117429B (zh) * | 2017-06-22 | 2020-09-22 | 北京嘀嘀无限科技发展有限公司 | 数据库查询方法、装置和电子设备 |
US10990595B2 (en) * | 2018-05-18 | 2021-04-27 | Oracle International Corporation | Fast distributed graph query engine |
US11016966B2 (en) * | 2018-06-26 | 2021-05-25 | Adobe Inc. | Semantic analysis-based query result retrieval for natural language procedural queries |
US11226854B2 (en) | 2018-06-28 | 2022-01-18 | Atlassian Pty Ltd. | Automatic integration of multiple graph data structures |
US11256693B2 (en) * | 2018-09-21 | 2022-02-22 | International Business Machines Corporation | GraphQL management layer |
US20220269786A1 (en) * | 2019-08-09 | 2022-08-25 | Nec Corporation | Information processing apparatus, information processing system, information processing method, and computer-readable medium |
EP4022470A4 (en) * | 2019-08-28 | 2023-05-31 | Sparta Systems, Inc. | METHOD, APPARATUS AND COMPUTER READABLE MEDIUM FOR GENERATING AN AUDIT TRAIL OF AN ELECTRONIC DATA RECORD |
US11269867B2 (en) * | 2019-08-30 | 2022-03-08 | Microsoft Technology Licensing, Llc | Generating data retrieval queries using a knowledge graph |
CN112800288B (zh) * | 2019-11-14 | 2024-08-09 | 北京大学 | 图流数据处理的方法 |
EP3822826A1 (en) * | 2019-11-15 | 2021-05-19 | Siemens Energy Global GmbH & Co. KG | Database interaction and interpretation tool |
CN111274269B (zh) * | 2020-01-17 | 2023-07-07 | 广州至真信息科技有限公司 | 一种数据处理的方法及装置 |
US11675785B2 (en) | 2020-01-31 | 2023-06-13 | Oracle International Corporation | Dynamic asynchronous traversals for distributed graph queries |
CN111414378B (zh) * | 2020-03-17 | 2023-08-29 | 用友网络科技股份有限公司 | 一种基于GraphQL的类元数据框架 |
US11055282B1 (en) * | 2020-03-31 | 2021-07-06 | Atlassian Pty Ltd. | Translating graph queries into efficient network protocol requests |
US11288271B2 (en) * | 2020-05-28 | 2022-03-29 | Microsoft Technology Licensing, Llc | Data lake workload optimization through explaining and optimizing index recommendations |
CN111680193B (zh) * | 2020-05-28 | 2024-05-14 | 微软技术许可有限责任公司 | 针对不同图查询语言的查询转换 |
US11308104B2 (en) | 2020-06-25 | 2022-04-19 | Microsoft Technology Licensing, Llc | Knowledge graph-based lineage tracking |
US11650998B2 (en) * | 2020-06-30 | 2023-05-16 | Microsoft Technology Licensing, Llc | Determining authoritative documents based on implicit interlinking and communication signals |
US11423025B2 (en) * | 2020-07-27 | 2022-08-23 | International Business Machines Corporation | Direct data loading of middleware-generated records |
CN112507354A (zh) * | 2020-12-04 | 2021-03-16 | 北京神州泰岳软件股份有限公司 | 一种基于图数据库的权限管理的方法及系统 |
EP4248369A4 (en) * | 2020-12-08 | 2024-07-24 | Amazon Tech Inc | USING GRAPH QUERIES TO OBTAIN RESULTS FROM MACHINE LEARNING MODELS |
CN112559780B (zh) * | 2020-12-09 | 2024-10-01 | 南京航空航天大学 | 基于图形数据库Neo4j的RDF数据探寻方法 |
CN112818181B (zh) * | 2021-01-25 | 2023-03-10 | 杭州绿湾网络科技有限公司 | 图数据库检索方法、系统、计算机设备和存储介质 |
CN112800285B (zh) * | 2021-02-03 | 2024-10-18 | 京东科技控股股份有限公司 | 基于图数据库的数据查询方法、设备、存储介质及产品 |
US11720631B2 (en) * | 2021-04-21 | 2023-08-08 | Neo4J Sweden Ab | Tool to build and store a data model and queries for a graph database |
US11886448B2 (en) * | 2021-05-21 | 2024-01-30 | Airbnb, Inc. | Flexible listings searches |
CN115470377B (zh) * | 2021-06-11 | 2024-07-16 | 清华大学 | 流式图数据处理方法及系统 |
US11936435B2 (en) * | 2022-03-23 | 2024-03-19 | Aleksandar MILOJKOVIC | Systems and methods for combination telecommunications and power networks |
US12019630B2 (en) * | 2022-03-28 | 2024-06-25 | Infosys Limited | Method and system for converting graphql query into gremlin |
EP4300327A1 (de) * | 2022-06-29 | 2024-01-03 | Siemens Aktiengesellschaft | Verfahren zum bereitstellen von daten eines automatisierungssystems, suchverfahren zur ermittlung von daten eines automatisierungssystems, computerprogramm, computerlesbares medium und vorrichtung zur datenverarbeitung |
US12086128B2 (en) | 2022-07-08 | 2024-09-10 | Salesforce, Inc. | Mechanisms for serializing triples of a database store |
US20240012803A1 (en) * | 2022-07-08 | 2024-01-11 | Salesforce, Inc. | Mechanisms for deleting triples of a database store |
CN114996539B (zh) * | 2022-07-29 | 2022-11-01 | 昆仑智汇数据科技(北京)有限公司 | 一种信息处理方法、装置及设备 |
US20240104632A1 (en) * | 2022-09-27 | 2024-03-28 | Maplebear Inc. (Dba Instacart) | Item attribute determination using a co-engagement graph |
US20240111767A1 (en) * | 2022-10-03 | 2024-04-04 | Apollo Graph, Inc. | Infrastructure for graph linking |
US12038942B1 (en) | 2023-03-13 | 2024-07-16 | Northrop Grumman Systems Corporation | MBSE to graph database translator |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572970A (zh) * | 2014-12-31 | 2015-04-29 | 浙江大学 | 一种基于本体库内容的sparql查询语句生成系统 |
Family Cites Families (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4506326A (en) * | 1983-02-28 | 1985-03-19 | International Business Machines Corporation | Apparatus and method for synthesizing a query for accessing a relational data base |
US20110004488A1 (en) * | 1998-11-13 | 2011-01-06 | Anuthep Benja-Athon | Server-guidance of health-care I |
US20100299154A1 (en) * | 1998-11-13 | 2010-11-25 | Anuthep Benja-Athon | Intelligent computer-biological electronic-neural health-care system |
US6813618B1 (en) * | 2000-08-18 | 2004-11-02 | Alexander C. Loui | System and method for acquisition of related graphical material in a digital graphics album |
US7210095B1 (en) * | 2000-10-31 | 2007-04-24 | Cisco Technology, Inc. | Techniques for binding scalable vector graphics to associated information |
US7096231B2 (en) * | 2001-12-28 | 2006-08-22 | American Management Systems, Inc. | Export engine which builds relational database directly from object model |
US7519947B2 (en) * | 2003-07-14 | 2009-04-14 | Microsoft Corporation | Orchestration designer |
US20060224710A1 (en) * | 2005-03-18 | 2006-10-05 | Price Dana L | Hall monitor-method and apparatus for providing contact information and communications capability for an organization |
US7761591B2 (en) * | 2005-12-16 | 2010-07-20 | Jean A. Graham | Central work-product management system for coordinated collaboration with remote users |
US7774337B2 (en) * | 2006-07-11 | 2010-08-10 | Mediareif Moestl & Reif Kommunikations-Und Informationstechnologien Oeg | Method for controlling a relational database system |
US7773811B2 (en) * | 2006-12-06 | 2010-08-10 | D & S Consultants, Inc. | Method and system for searching a database of graphical data |
US8160999B2 (en) * | 2006-12-13 | 2012-04-17 | International Business Machines Corporation | Method and apparatus for using set based structured query language (SQL) to implement extract, transform, and load (ETL) splitter operation |
US7693812B2 (en) * | 2007-01-17 | 2010-04-06 | International Business Machines Corporation | Querying data and an associated ontology in a database management system |
US20090024590A1 (en) * | 2007-03-15 | 2009-01-22 | Sturge Timothy | User contributed knowledge database |
US8245122B2 (en) * | 2008-01-08 | 2012-08-14 | International Business Machines Corporation | Method and system for modeling user requests, applications and components used in dynamic application assembly |
US9158838B2 (en) * | 2008-12-15 | 2015-10-13 | Raytheon Company | Determining query return referents for concept types in conceptual graphs |
US9396283B2 (en) * | 2010-10-22 | 2016-07-19 | Daniel Paul Miranker | System for accessing a relational database using semantic queries |
US8819078B2 (en) * | 2012-07-13 | 2014-08-26 | Hewlett-Packard Development Company, L. P. | Event processing for graph-structured data |
US8984019B2 (en) * | 2012-11-20 | 2015-03-17 | International Business Machines Corporation | Scalable summarization of data graphs |
WO2014170762A2 (en) | 2013-03-15 | 2014-10-23 | James Webber | Graph database devices and methods for partitioning graphs |
US10740396B2 (en) * | 2013-05-24 | 2020-08-11 | Sap Se | Representing enterprise data in a knowledge graph |
US20140351241A1 (en) * | 2013-05-24 | 2014-11-27 | Sap Ag | Identifying and invoking applications based on data in a knowledge graph |
US9116975B2 (en) * | 2013-10-18 | 2015-08-25 | Palantir Technologies Inc. | Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores |
US9798829B1 (en) * | 2013-10-22 | 2017-10-24 | Google Inc. | Data graph interface |
KR101525529B1 (ko) * | 2014-09-30 | 2015-06-05 | 주식회사 비트나인 | 데이터 처리장치 및 그 데이터 매핑방법 |
US9916187B2 (en) * | 2014-10-27 | 2018-03-13 | Oracle International Corporation | Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language |
CN107111617B (zh) * | 2014-12-19 | 2021-06-08 | 微软技术许可有限责任公司 | 数据库中的图处理 |
US10387496B2 (en) * | 2015-05-21 | 2019-08-20 | International Business Machines Corporation | Storing graph data in a relational database |
US9378241B1 (en) | 2015-09-18 | 2016-06-28 | Linkedin Corporation | Concatenated queries based on graph-query results |
US9330138B1 (en) | 2015-09-18 | 2016-05-03 | Linkedin Corporation | Translating queries into graph queries using primitives |
US9704277B2 (en) * | 2015-10-15 | 2017-07-11 | International Business Machines Corporation | Vectorized graph processing |
US10803034B2 (en) | 2016-11-23 | 2020-10-13 | Amazon Technologies, Inc. | Global column indexing in a graph database |
US10963512B2 (en) | 2017-01-20 | 2021-03-30 | Amazon Technologies, Inc. | Query language interoperability in a graph database |
-
2017
- 2017-01-20 US US15/411,596 patent/US10963512B2/en active Active
-
2018
- 2018-01-19 CN CN201880007710.3A patent/CN110291517B/zh active Active
- 2018-01-19 EP EP18712734.5A patent/EP3571606B1/en active Active
- 2018-01-19 WO PCT/US2018/014470 patent/WO2018136771A1/en unknown
-
2021
- 2021-03-26 US US17/214,334 patent/US11567997B2/en active Active
-
2023
- 2023-01-27 US US18/160,955 patent/US11995124B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572970A (zh) * | 2014-12-31 | 2015-04-29 | 浙江大学 | 一种基于本体库内容的sparql查询语句生成系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2018136771A1 (en) | 2018-07-26 |
US20180210966A1 (en) | 2018-07-26 |
US10963512B2 (en) | 2021-03-30 |
US20230169117A1 (en) | 2023-06-01 |
CN110291517A (zh) | 2019-09-27 |
US20210286848A1 (en) | 2021-09-16 |
US11567997B2 (en) | 2023-01-31 |
EP3571606B1 (en) | 2021-03-10 |
EP3571606A1 (en) | 2019-11-27 |
US11995124B2 (en) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110291517B (zh) | 图数据库中的查询语言互操作性 | |
US11971867B2 (en) | Global column indexing in a graph database | |
US20200183932A1 (en) | Optimizing write operations in object schema-based application programming interfaces (apis) | |
US10116725B2 (en) | Processing data retrieval requests in a graph projection of an application programming interfaces (API) | |
US20180232262A1 (en) | Mapping heterogeneous application-program interfaces to a database | |
US20180144061A1 (en) | Edge store designs for graph databases | |
US10042956B2 (en) | Facilitating application processes defined using application objects to operate based on structured and unstructured data stores | |
US10019537B1 (en) | System and method for data search in a graph database | |
CN114461603A (zh) | 多源异构数据融合方法及装置 | |
EP4196887A1 (en) | Data exchange availability, listing visibility, and listing fulfillment | |
US20230334046A1 (en) | Obtaining inferences to perform access requests at a non-relational database system | |
US10445370B2 (en) | Compound indexes for graph databases | |
US11238084B1 (en) | Semantic translation of data sets | |
US20210397601A1 (en) | Enforcing path consistency in graph database path query evaluation | |
WO2016159819A1 (en) | System and method for data search in a graph database | |
US20180144060A1 (en) | Processing deleted edges in graph databases | |
EP4083819A1 (en) | Sharing of data share metrics to customers | |
Liu et al. | Modeling fuzzy relational database in HBase | |
US20240220876A1 (en) | Artificial intelligence (ai) based data product provisioning | |
Nagireddy | Job recommendation system with NoSQL databases: Neo4j, MongoDB, DynamoDB, Cassandra and their critical comparison | |
Bhardwaj | Graph Database | |
CN117194380A (zh) | 基于多源异构数据的业务建模方法、装置、设备及介质 | |
CN118821201A (zh) | 半结构化数据和非结构化数据的数据库编辑 | |
CN115422367A (zh) | 用户数据图谱化构建方法、系统、电子设备及存储介质 | |
Salas | OLAP2Datacube: An On-Demand transformation Framework from OLAP to RDF Data Cubes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |