一文了解TinkerPop和JanusGraph

Quarterback 2018年09月15日 1,341次浏览

本文主要讨论这几个问题:

  • 1.什么是图计算
  • 2.什么是TinkerPop
  • 3.什么是JanusGraph
  • 4.TinkerPop与JanusGraph的关系

1.什么是图计算

就如 程序=数据结构+算法 一样,
图计算=Structure+Process


Structure,即图结构,图数据库或图计算框架常用的图形结构通常是基于属性图模型:

  • 一个图由Vertex(顶点、节点、实体)和Edge(边,线,关系)组成。顶点通过边连接,边有方向,也就是说一条边有一个起始节点和一个结束节点。
  • 其中顶点和边上都可以包含属性(键值对形式,键一般是字符串,值可以是任意类型的数据)
  • 顶点和边都有标签label进行标记,用于分类,顶点可以有多个label,边通常只有一个label。

Process,即处理过程,图处理过程是分析图结构的手段,图过程的典型形式称为遍历(Traversal)

2.什么是TinkerPop

TinkerPop是一个面向实时事务处理(OLTP),以及批量图分析(OLAP)的图计算框架。

TinkerPop是一个总称,它包含若干子项目,以及与核心TinkerPop Gremlin引擎集成的模块。在版本TinkerPop2及之前,TinkerPop分为若干子项目,而从TinkerPop3起,都合并到了Gremlin:

  • Blueprints → Gremlin Structure API
  • Pipes → GraphTraversal
  • Frames → Traversal
  • Furnace → GraphComputer and VertexProgram
  • Rexster → GremlinServer

TinkerPop的核心Gremlin是什么?

 “Gremlin is Gremlin is Gremlin“

这句话是官方文档中,解释Gremlin最常出现的一句话,老外总是能把技术文档搞的好似哲学问题。。

理解Gremlin以及这句话的含义,可以将Gremlin大致类比为JDK,通过下面类比应该很容易理解Gremlin is Gremlin is Gremlin这句话,用户不管是通过哪种程序语言编写的Gremlin程序,不管是编写的OLTP程序还是OLAP程序,都是没有分别的,都可以通过编译为Gremlin字节码,在GTM(Gremlin Traversal Machine, Gremlin遍历机)上执行:

JDK = Java语言 + JVM + Java API类库
Gremlin = Gremlin语言 + GTM + TinkerPop结构API/过程API

TinkerPop不是一个完整的图数据系统,其提供了操作图数据的图形结构接口,图操作过程接口,以及编写图形操作程序的Gremlin语言,和执行图形遍历过程的GTM,但是其并不提供图数据持久化存储功能

3.什么是JanusGraph

JanusGraph是一个开源的分布式图形数据库,注意JanusGraph并不是一个真正意义上的分布式并行图计算数据库。这里的分布式主要是指JanusGraph可以使用HBase, Cassandra等分布式数据库作为后端数据存储,同时还可使用ElasticSearch或Solr等分布式全文检索系统作为索引后端,以及可以结合spark作为olap图分析处理。但是JanusGraph的oltp操作仍然是单机的,因为gremlin server虽然可以部署多台,但每个服务都是独立的,相关oltp操作只能在一台服务器上单机执行。

4.TinkerPop与JanusGraph的关系

JanusGraph是基于TinkerPop技术栈实现的,用TinkerPop的官方术语描述,JanusGraph属于TinkerPop-Enabled Data System Provider,即JanusGraph是启用TinkerPop功能的图数据系统。

每个启用TinkerPop的图数据系统的不同之处在于为在内存中,磁盘上或跨多机计算集群存储和表示其“图形”而进行的各种时间/空间权衡处理。JanusGraph默认可以选择将图数据存储在多种后端存储中,例如HBase, Cassandra, Berkeley DB中。

JanusGraph主要实现了TinkerPop两方面的接口:

  • Graph:这些基础接口定义了图,顶点,边和属性上的操作的语义。可以使用Gremlin OLTP立即查询存储图数据的数据系统。
  • GraphComputer:OLAP操作相关接口。

JanusGraph基于TinkerPop,最主要的好处是,可以使用Gremlin遍历语言进行图数据操作和分析,并且可以使用GTM执行Gremlin字节码

另外,还可以使用TinkerPop技术栈相关的一些工具和技术,例如,TinkerGraph(基于内存的图形系统), Gremlin Console(Gremlin命令行控制台), Gremlin Server(提供HTTP和WebSocket协议的Gremlin服务器), SparkGraphComputer(结合Spark的OLAP处理器)