TinkerPop与JanusGraph概述

数据库 Quarterback 104℃ 0评论

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

  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两方面的接口:
    • 图:这些基础接口定义了图,顶点,边和属性上的操作的语义。可以使用Gremlin OLTP立即查询存储图数据的数据系统。
    • GraphComputer:OLAP操作相关接口。
  • JanusGraph基于TinkerPop,最主要的好处是,可以使用Gremlin遍历语言进行图数据操作和分析,并且可以使用GTM执行Gremlin字节码
  • 另外,还可以使用TinkerPop技术栈相关的一些工具和技术,例如,TinkerGraph(基于内存的图形系统), Gremlin Console(Gremlin命令行控制台), Gremlin Server(提供HTTP和WebSocket协议的Gremlin服务器), SparkGraphComputer(结合Spark的OLAP处理器)


/* 本文属于原创文章,转载请注明作者和出处 quarterback.cn,请勿用于任何商业用途 */




喜欢 (0)or分享 (0)
Quarterback.cn 打赏作者
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址