本文主要从以下几个方面来概述JanusGraph:
什么是图计算? 什么是TinkerPop? 什么是JanusGraph? TinkerPop和JanusGraph的关系
1、什么是图计算
就如程序=数据结构+算法一样,图计算=Structure+Process Structure,即图形结构,图数据库或图计算框架常用的图形结构通常是基于属性图模型: 一个图由Vertex(顶点、节点、实体)和Edge(边,线,关系)组成。顶点通过边连接,边有方向,也就是说一条边有一个起始节点和一个结束节点。 其中顶点和边上都可以包含属性(键值对形式,键一般是字符串,值可以是任意类型的数据) 顶点和边都有标签label进行标记,用于分类,顶点可以有多个label,边通常只有一个label。 Process,即处理过程,图处理过程是分析图结构的手段,图过程的典型形式称为遍历(Traversal)
2、什么是TinkerPop
Apache TinkerPop? is a graph computing framework for both graph databases (OLTP) and graph analytic systems (OLAP). TinkerPop的核心Gremlin是什么?- Gremlin is Gremlin is 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处理器)
转载:TinkerPop与JanusGraph概述
|