图数据库能做些什么?查询语言说了算
新一代图数据库已经在市场上站稳脚跟,与之相伴的一代查询语言也应运而生。包括Gremlin、Cypher以及GQL等在内的各类图数据库查询语言,专门资助用户解包图内信息。https://p5.toutiaoimg.com/large/pgc-image/096801d09da94410bed92d9baa061924
从本质上讲,统统数据库都必要一种与客户交流的方式,而查询语言的职责正是界说数据库能够做些什么。精良的图数据库查询语言应该以尽可能简单的方式资助开发职员根据数据库内界说的网络提出复杂问题,进而释放出图数据库的强大气力。最初,这些语言各自面向不同的新数据库以专有方案的形式存在,但最近一段时间各查询语言间的开放标准正在加快创建。
在关系数据库领域,SQL(布局化查询语言)多年以来不绝是行业的主导标准。它界说了一种在表内搜索符合特定条件的数据行的核心方法。如果数据跨越多个表,SQL还提供一种表对齐方法,以便将所有信息连接至统一的集合之内。SQL特别擅长查找包含与某些规定相匹配的特定字段的特定条目集合,但也就仅此而已了。
经典关系数据库也能存储图,因此在图数据库出现之前,这也是开发职员所能仰仗的唯一选择。SQL能够回答一部分底子问题,但传统查询语言却往往处理不了那些最有用、最具吸引力的问题。事实上,关系数据库在表达极度复杂关系方面远远不及图数据库,而关系数据库查询的唯一解决方案就是返回大块数据以供客户端软件运行进一步分析。
以是大家应该理解了,图查询语言的诞生是为了回答更为复杂的问题,例如:
[*]在一棵家谱树中,某人有多少个远房表亲?
[*]在记载朋侪或关注者信息的社交媒体图片中,两个用户之间的分离程度是多少?
[*]在企业的供应链中,工厂与客户之间的最长跳数是多少?
[*]在一系列银行交易中,哪些人与欺诈交易间的关系高于平均程度?
[*]在计算机网络中,哪些具有更高带宽的新连接可用于解决性能瓶颈?
图数据库必要多种不同模子,此中某些查询必要跟踪多条链接或跳点。最初,每种图数据库都使用自己的专有查询语言。好在最近几年,图数据库厂商开始添加新的实现并致力于推动开源标准以实现交叉支持。目前最常见的图查询语言包括:
[*]Gremlin——最初为Apache Tinkerpop项目开发的图搜索语言,可实现过程性或声明性查询。
[*]Cypher——最初由Neo4J创建,之后以OpenCypher的形式得到普及,这种声明性语言可用于搜索匹配特定属性的顶点和边。
[*]GQL——一项标准倡议,致力于将Cyher、GSQL以及PSQL统一起来。
[*]SPARQL——一种为了查询RDF格式知识图谱而创建的标准。
[*]PGQL——甲骨文的原创语言,用于从符合规范的顶点当中搜索并收集信息。
[*]GSQL——TigerGraph的原创过程语言。
[*]AQL——ArangoDB的原创过程语言。
GraphQL——顾名思义,它肯定支持图查询;但GraphQL实际是一种更为通用的查询语言,能够高效搜索大部分文档与关系数据库。它固然也能发掘出一部分图数据库用途,但总体来讲执偾在支持与关系数据库相同的常规查询。
不同查询语言之间存在着一系列本质差别。有些查询语言属于“声明性”,另一些则属于“过程性”。也就是说,有些是让开发者通过编写界说子集的简单规则来声明自己“想干什么”,再由数据库应用这些规则、使用可用的索引构建搜索筹划、再找到统统可能的匹配项。
<span style="color: #333333; --tt-darkmode-color: #A3A3A3;">例如,用户可能必要查找相距10英里之内的所有超过10000美元的银行交易举动,或者是搜索互有接洽而且在过去两周之内没发过新帖的社交媒体用户。这些规则可以包括对标准查询语言(“WHERE AGE
页:
[1]