tinkerpop的核心架构分析
tinkerpop的核心就是gremlin的图数据引擎,这套引擎定义了图数据的查询接口,图数据的数据结构,图数据的存储接口。它的源代码在这里:
拿下来代码以后,看下它的项目目录结构:
tinkerpop
的源代码结构组织的很清晰,有几个目录可以重点看下:
gremlin-core
- gremlin图数据引擎的核心,包括一些通用的,底层的classes。tinkergraph-gremlin
- 这个tinkergraph
子项是描述图数据结构的,很重要,值得仔细看。引擎默认会用这个tinkergraph
提供的in memory store来保存图数据,同时接入的各种数据库接口也是要扩展实现tinkergraph
定义的一些接口规范。spark-gremlin
- gremlin引擎的spark接口,可以让图数据查询api在spark平台上工作。spark-neo4j
- 跟spark-gremlin
差不多,gremlin的neo4j接口。spark-gremlin
和spark-neo4j
接口都是依赖于tinkergraph-gremlin
实现的。
除了上面介绍的这些组件,还有这些组件值得仔细看:
gremlin-server
- tinkerpop的服务端。tinkerpop
的整体设计拆分成客户端与服务端,服务端负责接收图数据的增删改查的请求。拆成服务端与客户端是为的是部署的可扩展性,服务端背后再去接入各种数据平台。gremlin-console
- tinkerpop的客户端默认终端,基于groovy
语言的。gremlin-python
- tinkerpop默认提供的python接口,之前写文章介绍过(tinkerpop的使用(中))。gremlin-groovy
- 客户端的groovy
接口,这个是默认接口,gremlin-console
会使用它。
以上就是对tinkerpop这个项目源代码架构的大概分析。下面具体看看一些核心组件的类图。
Storage
下面是gremlin-core
当中定义的Storage
接口。默认实现的两个classes包括FileSystemStorage
和SparkContextStorage
:
这个接口也可以用来扩展给filesystem和spark以外的存储系统用来接入。
TinkerGraph
tinker-graph
是gremlin
引擎的核心数据结构。上面的classes里,可以看到围绕着TinkerGraph
这个class展开的设计。具体的使用可以查看文档:
SparkGremlinPlugin
spark-gremlin
的设计:
上面的设计可以看到,gremlin通过实现spark的RDD
数据结构来实现对spark平台的接入。
以上是对tinkerpop源代码分析的一些记录,实际上tinkerpop这个平台还有很多可以深挖的东西,后续还会慢慢写一些学习笔记。
- 上一篇 各种图数据引擎的使用体会
- 下一篇 macos环境下的go开发环境搭建