阿男的小窝

View the Project on GitHub

各种图数据引擎的使用体会

最近摸了一遍市面上的图书库引擎,记录如下。

tinkerpop

很好很强大:

之前写过的三篇介绍文章可以看看:

agensgraph

基于postgresql的原生图数据引擎,支持图数据与关系型数据的混合查询。初步使用感觉非常好,准备下个项目用这个。之前写过的介绍文章:

redisgraph

基于Redis的图数据引擎:

用于高速缓存场景下场景下保存图数据:

有很强的使用价值。

neo4j

还没怎么看,有空准备试试它的sandbox:

但是要讲的是neo4j定义了一种标准的图数据查询语言,叫做Cypher

这是一种通用的图数据查询语言(The Neo4j Cypher Manual v3.5),其中redisgraphagensgraph都默认使用Cyper语言进行图数据的查询。此外,虽然tinkerpop默认有自己原生的查询语言,它针对Cypher也有扩展支持(GitHub - opencypher/cypher-for-gremlin: Cypher for Gremlin adds Cypher support to any Gremlin graph database.):

GraphQL

graphql不是一个图数据引擎,而是一个基于图论的webservice引擎。它可以很灵活地进行自定制的数据查询,可以说是对REST的一个有效补充:

很多时候,我们需要灵活定制要通过webservice接口查询的数据,而自己些的rest接口可能没那么灵活,而使用graphql的查询语句就很方便:

有空可以玩玩看github提供的graphql查询接口:

上面是最近摸的一些图数据相关的应用的总结。可以说图数据用于描述数据关系的时候,和关系型数据是完全不同的思维方式,应用场景也不同。图数据是一个非常重要的数据模型,图论在数据查询和分析领域的重要性必然会日益增长。可以重点学习和应用,提早布局。