图数据库能做些什么 数据库画图( 二 )


传统用户如何快速适应图查询语言?
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完全问题,但可能难以通过图查询语言得到有效解决 。随着问题规模的扩大,寻找答案的时间往往呈指数级增长——换句话说,这些问题不具备可扩展性 。如果错误使用图查询语言,我们很可能在不经意间写出一条需要极长时间才能解决的高成本查询 。