图数据库能做些什么?查询语言说了算

从本质上讲,一切数据库都需要一种与客户交流的方式,而查询语言的职责正是定义数据库能够做些什么。
来源丨VentureBeat

编译丨科技行者

新一代图数据库已经在市场上站稳脚跟,与之相伴的一代查询语言也应运而生。包括Gremlin、Cypher以及GQL等在内的各类图数据库查询语言,专门帮助用户解包图内信息。

从本质上讲,一切数据库都需要一种与客户交流的方式,而查询语言的职责正是定义数据库能够做些什么。良好的图数据库查询语言应该以尽可能简单的方式帮助开发人员根据数据库内定义的网络提出复杂问题,进而释放出图数据库的强大力量。最初,这些语言各自面向不同的新数据库以专有方案的形式存在,但最近一段时间各查询语言间的开放标准正在加速建立。

在关系数据库领域,SQL(结构化查询语言)多年以来一直是行业的主导标准。它定义了一种在表内搜索符合特定条件的数据行的核心方法。如果数据跨越多个表,SQL还提供一种表对齐方法,以便将所有信息连接至统一的集合之内。SQL特别擅长查找包含与某些规定相匹配的特定字段的特定条目集合,但也就仅此而已了。

经典关系数据库也能存储图,因此在图数据库出现之前,这也是开发人员所能仰仗的唯一选择。SQL能够回答一部分基础问题,但传统查询语言却往往处理不了那些最有用、最具吸引力的问题。事实上,关系数据库在表达极端复杂关系方面远远不及图数据库,而关系数据库查询的唯一解决方案就是返回大块数据以供客户端软件运行进一步分析。

所以大家应该理解了,图查询语言的诞生是为了回答更为复杂的问题,例如:

  • 在一棵家谱树中,某人有多少个远房表亲?

  • 在记录朋友或关注者信息的社交媒体图片中,两个用户之间的分离程度是多少?

  • 在企业的供应链中,工厂与客户之间的最长跳数是多少?

  • 在一系列银行交易中,哪些人与欺诈交易间的关系高于平均水平?

  • 在计算机网络中,哪些具有更高带宽的新连接可用于解决性能瓶颈?

图数据库需要多种不同模型,其中某些查询需要跟踪多条链接或跳点。最初,每种图数据库都使用自己的专有查询语言。好在最近几年,图数据库厂商开始添加新的实现并致力于推动开源标准以实现交叉支持。目前最常见的图查询语言包括:

  • Gremlin——最初为Apache Tinkerpop项目开发的图搜索语言,可实现过程性或声明性查询。

  • Cypher——最初由Neo4J创建,之后以OpenCypher的形式得到普及,这种声明性语言可用于搜索匹配特定属性的顶点和边。

  • GQL——一项标准倡议,致力于将Cyher、GSQL以及PSQL统一起来。

  • SPARQL——一种为了查询RDF格式知识图谱而建立的标准。

  • PGQL——甲骨文的原创语言,用于从符合规范的顶点当中搜索并收集信息。

  • GSQL——TigerGraph的原创过程语言。

  • AQL——ArangoDB的原创过程语言。

GraphQL——顾名思义,它肯定支持图查询;但GraphQL实际是一种更为通用的查询语言,能够高效搜索大部分文档与关系数据库。它虽然也能发掘出一部分图数据库用途,但总体来讲只是在支持与关系数据库相同的常规查询。

不同查询语言之间存在着一系列本质差异。有些查询语言属于“声明性”,另一些则属于“过程性”。也就是说,有些是让开发者通过编写定义子集的简单规则来声明自己“想干什么”,再由数据库应用这些规则、使用可用的索引构建搜索计划、再找到一切可能的匹配项。

例如,用户可能需要查找相距10英里之内的所有超过10000美元的银行交易行为,或者是搜索互有联系而且在过去两周之内没发过新帖的社交媒体用户。这些规则可以包括对标准查询语言(“WHERE AGE<20”)中找到的值的所有过滤,再加上关于网络连接的其他复杂规则(“IS RELATED TO”)。一般来说,图查询语言在搜索关系图方面表现得最为突出。

而过程性查询语言则更接近于传统计算机语言,允许开发人员控制数据库搜索条目的具体方式,一般是编写循环或者其他控制结构。总的来讲,声明式语言更易于理解和使用,因为它隐藏掉了大部分搜索工作;但过程性语言则更为强大。一部分数据库能够同时支持这两种查询方式。

另一个主要区别,则来自数据库结构本身。有些数据库支持RDF,有些则支持所谓属性图。RDF模型属于W3C标准,最初用于对语义信息进行编码。属性图模型则往往更通用也更灵活。同样的,一部分数据库能够同时支持这两种模型。

传统用户如何快速适应图查询语言?

Oracle向常规SQL查询语言中添加了图搜索功能,由此为主数据库实现了图功能。这种名为PGQL(属性图查询语言)的扩展提供了一种简洁的方法,可供开发者快速搜索图片并创建关于匹配条件的顶点报告。其图分析框架以数十种常见算法为起点,通过扩展逐步为基础数据构建起复杂的摘要。另外,它还同时支持属性图与RDF图。

微软在2017年向其SQL Server添加了图功能,并使用匹配属性模式的MATCH子句扩展了其SQL版本。搜索操作可以通过命令式查询的存储过程进行扩展。Azure云中的Microsoft Cosmos数据库支持Apache TinkerPop API,因此能够支持所有Gremlin式查询。

亚马逊的主要图数据库为Amazon Neptune,同样支持属性图与RDF图。属性图可以使用Gremlin类查询进行搜索,而RDF图则适合由SPARQL进行搜索。

IBM公司一直与多家图数据库厂商合作,例如Neo4J,并在自家云中提供相关的产品即服务。此服务名为IBM Graph,除了使用支持Gremlin的TinkerPop API以外,这项服务还提供其他用于基础检索的简单API。

后起之秀们的故事

近年来,Neo4J已经成为最具影响力的图数据库之一,而且目前仍是这一领域的领导者。但其仍是一家独立企业,因此在本文中同样被纳入“后起之秀”的范畴。顺带一提,其实很多参与图数据库市场的厂商都有着悠久的发展历史。

Neo4J鼓励其他公司通过OpenCypher项目使用其查询语言Cypher。此外,Neo4J也是GQL标准化进程的主要推动者,同时支持使用GraphQL执行一部分查询。

TigerGraph选择的是存储属性图并使用GSQL进行查询的路线,这是一种简化并发处理工实现大规模数据集扩展能力的过程性方法。该数据库背后的厂商提供一款复杂的可视化工具GraphStudio,能够以产品及云服务的形式供用户探索并查询数据集内容。

OrientDB则是一套开源数据库,可使用Gremlin和SQL进行查询。它的缔造厂商已经被SQP所收购,因此相关产品目前正在与SAP自家产品线进行集成。

ArangoDB在设计上支持图与NoSQL文档数据集。这款开源数据库既提供社区版,也提供服务形式的付费商业版。其关联的查询语言被称为SQL,提供的是过程性数据搜索方法。

AllegoGraph存储RDF图,并使用SPARQL、RDFS++以及多种编程语言扩展(例如逻辑编程语言Prolog,以及Allegro Common LISP)实现查询。其知识图谱浏览器Gruff能够在常规网络浏览器中运行,借此实现可视化查询。该产品同时适用于本地安装和亚马逊云科技等公有云平台。

Ontotext专注于创建大型知识图谱,其GraphDB可支持对RDF图执行SPARQL查询。Ontotext提供三个版本(免费版、标准版与企业版),三者的功能基本相同,但免费版仅支持两项并发查询。

图数据库查询语言有哪些局限?

图查询语言的核心,在于提供一种简洁的方式以搜索匹配特定模式的特定条目组合。但有些问题,无论其内容多么明确,都很难通过图查询语言得到有效回答。

以查找“团”(即相互间高度连接的顶点子集)为例,虽然这个问题本身属于NP完全问题,但可能难以通过图查询语言得到有效解决。随着问题规模的扩大,寻找答案的时间往往呈指数级增长——换句话说,这些问题不具备可扩展性。如果错误使用图查询语言,我们很可能在不经意间写出一条需要极长时间才能解决的高成本查询。

(0)

相关推荐

  • 知识图谱在大数据中的应用

    随着移动互联网的发展,万物互联成为了可能,这种互联所产生的数据也在爆发式地增长,而这些数据恰好可以作为分析关系的有效原料.如果说以往的智能分析专注在每一个个体上,在移动互联网时代则除了个体,这种个体之 ...

  • 【Access】SQL查询

    SQL(Structure Query Language)的中文名称叫结构化查询语言.SQL是一种专门针对数据库操作的计算机语言.SQL查询是使用SQL语句创建的查询. 其实在Access数据库中,我 ...

  • Ecshop使用——SQL查询

    SQL查询 如图 1 所示: 图1  直接把要运行的语句贴进文本框,执行提交即可. Sql查询的功能,想相对比较高级的功能,这个功能是能方便用sql语句直接操作数据库.所以如果不是很了解sql语句的话 ...

  • SQL语言有哪些分类?linux数据库

    SQL是一种数据库查询和程序设计语言,用于访问数据和查询.更新和管理关系数据库系统.它也是数据库脚本文件的扩展.对于Linux运维人员来说,数据库是必须掌握的技能之一.那么SQL有哪些分类呢? SQL ...

  • 十张图让你明白,年轻时该做些什么

    梦想是石,敲出星星之火:梦想是火,点燃熄灭的灯:梦想是灯,照亮夜行的路:梦想是路,引你走到黎明.我们每个人都应该有梦想,梦想有多大,人生的舞台就有多大.在追梦的路上,我们将变得强大.勇敢,只要不懈努力 ...

  • 动图推演红军长征路上突破第一道封锁线时,战前做些啥战略部署?

    红军在突破第一道封锁线前都做了哪些战略部署? 一.此时的蒋军已经把第一道封锁线构筑完成. 第一道封锁线位置 二.根据二局破获的敌情,红军决定:由王母渡.韩坊.金鸡.新田地段突破粤军的封锁,向湘南前进. ...

  • 肿瘤及肿瘤治疗发展简史3-对于肿瘤防治我们自己能做些什么

    我们先将上期(肿瘤和肿瘤治疗里程碑2-21世纪的突破及隐患)所讲的内容做一个形象的比喻: 瘟疫:外来入侵者 肿瘤:内生的恐怖主义分子 化疗:恐怖主义分子出现,将他们全部消灭,误伤百姓,肿瘤干细胞复活 ...

  • 一个人如果不想生病,生活中应该做些什么?能做到这2点就行

    一个人如果不想生病,生活中应该做些什么?能做到这2点就行

  • 吴晓波对谈许知远、施展:这一届年轻人可以做些什么?

    立即订阅▲收听音频 开通/续费<每天听见吴晓波>会员年卡,立减41元 享周年庆活动价139元/年,加赠内部基金手册电子版 我们的责任就是提供多一些的多样性,让他看到生活的更多可能性,这是每 ...

  • 排污单位取得国家排污许可证后还要做些什么? | 0502

    排污单位在成功申领国家排污许可证后还需要做哪些方面的工作?具体在哪个平台上做怎样的操作? 1.在申领完国家排污许可证后还需做什么相关工作? 2.排污单位未做好相关自我管理需承担哪些法律责任? 3.排污 ...

  • 每天做些琐事,缓解焦虑

      ◆ ◆ ◆ 文丨曾瑞 2020-2-9 晨起天阴,午后太阳微露.往年早已返城,如今迫于疫情,开工又延迟.村里青壮悉皆滞留,遂结伴钓鱼. 挂饵,抛钩,坐等.满空鳞云,似大河奔流.太阳苍白若病,潜游云 ...

  • 钟南山:一个人在84岁的时候可以做些什么?

     No.516 "我这个人就是这样的,你给我机会,我就干." 这是已经84岁高龄的钟南山的人生信条. 当湖北武汉新冠肺炎爆发后,钟南山院士再次披挂上阵,不论是在赶往武汉的高铁餐车上 ...

  • 大二大三医学生可以为考研做些什么

    最近有低年级学弟学妹问我 "我想过一个比较开心放松的大学生活,但现在这么"卷',大二需要为考研做些什么吗?" "因为疫情影响,我生理学没好好学,只考了比较低的分 ...