你应该了解的流行图数据库查询语言
用于图数据管理的查询语言称为图查询语言(GQL)。它们定义了一种提取和检索图模型数据的方法。所有数据库都需要与其客户端对话,查询语言定义了它们能做什么。
以下是流行的图数据库查询语言,它们提供了一种解压缩图中信息的方法。让我们深入了解流行查询语言的细节及其优缺点。
GraphQL
GraphQL 是基于 REST 架构的现代替代方案,旨在从客户端应用程序查询数据库。它规定了如何在 API 后端向客户端展示数据。它还提供了灵活性,并通过使客户端提出精确的数据请求来改善客户端与服务器之间的交互。
GraphQL 的优点
GraphQL 最适合复杂的微服务,您可以在其 API 背后集成多个系统。它的服务器可从现有系统中获取数据,并将其打包为 GraphQL 响应格式。因此,对于因规模庞大而难以处理和维护的第三方应用程序接口和传统基础设施来说,GraphQL 大有裨益。此外,GraphQL 还能将多个微服务合并为一个 GraphQL 模式,从而处理它们之间的通信。
REST 响应中的数据要么很少,要么有时不够用,因此需要再次请求。GraphQL 通过在一次请求中获取所需的数据来解决这个问题。
GraphQL 使文档与 API 变化保持同步。由于其 API 与代码紧密耦合,因此当查询、字段或类型发生变化时,文档也会随之变化。
GraphQL 的缺点
有时,当客户要求一次查询太多嵌套字段时,GraphQL 查询会遇到性能问题。因此,对于复杂的查询,最好使用 REST API。
GraphQL 规范中不包括文件上传功能,因为它不理解文件。
在 GraphQL 中实现简化缓存具有挑战性,因为即使对同一实体进行操作,每个查询也可能是不同的。
Gremlin
Gremlin 是 Apache TinkerPop 的一种图遍历语言,被许多图数据库解决方案所采用。由于它是一种面向路径的语言,因此可用于以下方面:
从图中检索数据
修改图数据
表达复杂的突变操作和图遍历 开发人员可以用 Python、Java、Javascript、Scala 和 Groovy 等多种编程语言编写 Gremlin 查询。
Gremlin 的优点
Gremlin 允许用户在图中进行命令式(过程式)和声明式(描述式)遍历。
Gremlin 遍历可以用任何支持函数组合和函数嵌套的编程语言编写。
Gremlin 的缺点
它是一种低级图遍历语言,不易阅读。
需要进行大量模式匹配的复杂查询可能难以编写,而且在 Gremlin 中表现不佳。
Cypher
Cypher 是一种图数据库查询语言,可以从图中检索数据。由于其直观性和与其他语言的相似性,容易学习。
Cypher 是 Neo4j 的查询语言,其独特之处在于它在很大程度上基于模式,并提供了一种可视化的方式来匹配关系和模式。你可以使用对象图映射器(OGM)将图中的关系和节点映射到领域模型中的引用和对象。
两个有名的 OGM 是:
Neo4j-OGM - 它与 Java 驱动程序一起使用 Cypher 查询语句,并将现有领域对象映射到 Neo4j。Neo4j-OGM 支持快速类元数据扫描和优化数据加载管理等功能。
GQLAlchemy - 对象图映射器是一个开源 Python 库,是 Python 对象与图数据库对象之间的链接。它为编写面向对象代码提供了开发人员友好的工作流程。您可以编写面向对象的代码,GQLAlchemy 会自动将其转换为 Cypher 查询。
Cypher 的优点
Cypher 查询语言简洁易学。它可以帮助用户编写直观、富有表现力的查询,以便快速检索结果。
数据丰富、可靠、安全,非常适合应用程序开发。
使用 ASCII-Art 语法匹配图中的节点和关系模式,因此具有可视化和逻辑性。
Cypher 的缺点
Neo4j Cypher内部不支持日期数据类型。
对于不需要大量连接或聚合的简单数据模型来说,它没有很好的性能优势。
在高写入负载的情况下,它不能很好地扩展写入。
SPARQL
SPARQL 是“SPARQL 协议和 RDF 查询语言”的缩写。它是一种查询语言,可让用户从数据库中查询可映射到 RDF(资源描述框架)的信息。SPARQL 有四种查询类型,即 ASK、SELECT、CONSTRUCT 和 DESCRIBE。SPARQL 查询中的数据在内部表示为由主语、谓语和宾语组成的三元组。
SPARQL 的优点
SPARQL 可以跨不同资源库联合查询。
既能访问 RDF 数据,也能访问关系数据。
SPARQL 可以整合数据,要求数据位于相互交叉的域中。
SPARQL 的缺点
SPARQL 不易阅读和理解。
不允许非绑定递归查询。
SPARQL 专为 RDF 数据而建,并非每个数据库都符合 RDF 数据的要求。
AQL
AQL 是“ArangoDB 查询语言”的首字母缩写,它允许用户检索和修改存储在 ArangoDB(一种完全可管理和可扩展的图数据库)中的数据。AQL 易于人类阅读,因为它使用的是英语中的关键字,而且是声明式的,这意味着查询描述的是应该实现的结果,而不是应该如何实现。
AQL 的优点
AQL 支持各种函数,如 ANALYZER()、BOOST() 和 EXISTS()等,允许进行复杂的计算。
可以帮助开发人员开发强大的应用程序,并将数据原生映射到数据库。
是一种灵活的语言,可帮助架构师以更少的工作量扩展和调整其架构,以适应不断变化的需求。
AQL 的缺点
不支持数据定义操作,如创建和删除集合或数据库。
初始执行计划中的执行节点不能超过四千个。
不能使用超过一千个结果寄存器。
结论
希望你对流行的图数据库查询语言有所了解。每种语言都有其优点和缺点。但是,使用哪种语言从图中提取数据取决于可用数据和语言支持的操作。我们无法说哪种语言最好,如下所示,它们在不同领域都有各自的用例:
GraphQL - 最适合复杂系统和微服务。
Gremlin - 允许用户进行过程性和描述性图遍历。
Cypher - 非常适合数据分析和应用程序开发。
SPARQL - 最适合整合来自不同交叉领域的数据。
AQL - 可分别帮助开发人员和架构师开发功能强大的应用程序和扩展架构。
作者:Memgraph
Ps:目前图查询语言还没有形成标准,不少人认为该标准的短缺减缓了图数据库的使用,不过这种情况可能很快得到改善,2018年,ISO/IEC 联合技术委员会提出推行图查询国际标准语言 ISO GQL 的提案,图数据库厂商也正在积极推进该标准制定,预计会在2024年发布。
栏目分类
- KIRA中文网
- CTP中文网