Apache软件基金会最近宣布:TinkerPop 升级为顶级项目 TinkerPop 是一个图计算框架,用来进行实时的事务型处理,和批量的图分析,包含了一系列以 Gremlin 引擎为核心的子项目和模块 图计算已经有了丰富的历史,他有查询语言,和复杂的算法,例如 路径分析、点的类聚、排序、子图识别 …… 正是因为图具有灵活的数据结构,并包含了丰富的复杂算法,所以图结构被广泛应用于数据挖掘、数据分析 TinkerPop TinkerPop 的图处理引擎 Gremlin 非常强大,并支持非常多的开发语言,例如 Python, JavaScript, Scala, Go,选择自己熟悉的语言,即可运行图的遍历处理 TinkerPop 升级为顶级项目意味着Apache会对其注入更多的资源和关注,由更加精英化的流程来管理,所以,值得多熟悉一下 TinkerPop,有可能不久之后他会成长为一个非常流行的框架 TinkerPop官网 http ://tinkerpop.apache.org/
Apache TinkerPop 提供了图数据库的抽象接口,方便第三方实现自己的图数据库以接入TinkerPop 技术栈,享受TinkerPop 的Gremlin、算法等福利。 TinkerPop将这些第三方称为“Provider ”,知名的Provider包含janusGraph、neo4j、hugegraph等。
[active] ==>tinkerpop.gephi ==>tinkerpop.utilities[active] ==>tinkerpop.sugar ==>tinkerpop.credentials ==>tinkerpop.hadoop[active] ==>tinkerpop.spark[active] ==>tinkerpop.tinkergraph[active] # 使用 tinkerpop.gephi 插件 gremlin> :plugin use tinkerpop.gephi ==>tinkerpop.gephi activated gremlin> :plugin list ==>janusgraph.imports [active] ==>tinkerpop.server[active] ==>tinkerpop.gephi[active] ==>tinkerpop.utilities[active] ==>tinkerpop.sugar ==>tinkerpop.credentials ==>tinkerpop.hadoop[active] ==>tinkerpop.spark[active] ==>tinkerpop.tinkergraph
plugin activated: tinkerpop.hadoop plugin activated: tinkerpop.utilities plugin activated: janusgraph.imports plugin activated: tinkerpop.tinkergraph gremlin> :remote connect tinkerpop.server conf/remote.yaml = JanusGraph使用TinkerPop Gremlin Server 由于JanusGraph Server是一个包含JanusGraph配置文件的TinkerPop Gremlin Server, org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {}, org.apache.tinkerpop.gremlin.jsr223 请参阅相应的TinkerPop文档获取的更多详细信息。
本文首先介绍了Tinkerpop这种图计算框架,然后介绍了一种基于Tinkerpop的分布式图数据库JanusGraph。 二、Tinkerpop 1简介 图是由点和边组成的数据结构。 图2.1 属性图示例 Tinkerpop3是tinkerpop图计算框架的第三代产品。跟一般计算相似,图计算在结构(图)和处理(遍历)做了区分。图的结构是由点、边和属性定义的数据模型。 当一个图系统实现的TinkerPop3的结构和处理API,则该系统是支持TinkerPop3的并且跟其他支持TinkerPop3的图系统在时间复杂度和空间复杂度是没有区别的。 2Tinkerpop系统结构 ? 图2.2 Tinkerpop 系统框架 TinkerPop是由多个可共同操作的组件组成的架构。 最后,采用Gremlin Server使用用户连接支持Tinkerpop的图系统,Gremlin Server提供了可配置的交互接口和度量,这就是Tinkerpop。
TinkerPop与许多其他供应商兼容,包括Amazon Neptune、Microsoft Azure Cosmos DB和DataStax Enterprise Graph,不过请记住,许多TinkerPop 另一个对JanusGraph非常重要的项目是TinkerPop,我已经提到过几次了。因此,我建议新用户熟悉TinkerPop,最重要的是,熟悉它的图形查询语言Gremlin。 但是,很高兴你还提到了TinkerPop,因为JanusGraph的许多改进实际上来自TinkerPop,尤其是下一个主要版本TinkerPop 4的发布。 目前,人们还花费了大量精力为TinkerPop创建一个更抽象的数据模型,该模型并不特定于图形。这有可能使TinkerPop也可以用于非图形数据库和计算引擎。 所以,它真的可以增加支持tinkerpop的数据库的生态系统。
org.janusgraph.channelizers.JanusGraphNioChannelizer org.janusgraph.channelizers.JanusGraphWsAndHttpChannelizer 所有的channelizers都与TinkerPop 使用TinkerPop的withRemote功能 由于遍历引用绑定在JanusGraph服务上,因此我们可以使用TinkerPop的withRemote功能。 但是,TinkerPop还允许使用remoteGraph,如果你正在构建可轻松转移到多个实现的TinkerPop兼容图形基础结构,这可能很有用。 username: admin password: password connectionPool: { enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV3d0 , config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] }}
本文已经获得作者的授权转载,如需转载,请联系作者授权 名词解释 vetex:节点 edge:边 graph:图 Tinkerpop tinkerpop是一个图库标准,一个框架,学习图库,先从这个项目入手比较合适 plugin activated: tinkerpop.utilities plugin activated: tinkerpop.tinkergraph gremlin> ourist过程用到的数据库 内存图库(TinkerGraph)数据结构 首先必须明确tinkerpop自带的内存图库(TinkerGraph)是全内存存储,数据条目不会太多。 JanusGraph tinkerpop自带的图库基于内存,demo例子而已,我们看看其他一些供应商使用的一些持久化方案。 Native support for the popular property graph data model exposed by Apache TinkerPop.
下面是JanusGraph的架构图 Gremlin是Apache TinkerPop的一个模块。 实战笔记 JanusGraph的EdgeLabel和PropertyKey的name不能相同。 Conclusion JanusGraph provides native support for the property graph data model exposed by Apache TinkerPop http://tinkerpop.apache.org/docs/current/reference/#_gremlin_i_o You can load it like this: gremlin ") gremlin> graph.io(graphml()).readGraph("data/tinkerpop-modern.xml") gremlin> graph.io(graphson ()).readGraph("data/tinkerpop-modern.json") If you have some other format file, you'll need to write
对于JanusGraph Server,JanusGraph使用Apache TinkerPop的Gremlin Server来处理客户端请求。 janusgraph-berkeleyje.properties } scriptEngines: { gremlin-groovy: { plugins: { org.janusgraph.graphdb.tinkerpop.plugin.JanusGraphGremlinPlugin : {}, org.apache.tinkerpop.gremlin.server.jsr223.GremlinServerGremlinPlugin: {}, org.apache.tinkerpop.gremlin.tinkergraph.jsr223.TinkerGraphGremlinPlugin: {}, org.apache.tinkerpop.gremlin.jsr223 ImportGremlinPlugin: {classImports: [java.lang.Math], methodImports: [java.lang.Math#*]}, org.apache.tinkerpop.gremlin.jsr223
For the JanusGraph Server, JanusGraph 使用 Apache TinkerPop 的Gremlin Server 来服务client的请求。 remote-objects.yaml: hosts: [xx,xxx,xx] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 , config: { ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry] janusgraph-examples/example-remotegraph Use gremlin console to connect to gremlin-server :remote connect tinkerpop.server
JanusGraph官方文档并没有他提供数据备份与恢复的相关说明,所以我们是使用的Tinkerpop的备份与恢复命令。 Tinkerpop数据备份方式有三种: 1)GraphML 备份:graph.io(IoCore.graphml()).writeGraph("/usr/local/janusgraph-0.2.0-hadoop2
比如,浪尖最近想基于tinkerpop做知识图谱存储的框架,但是想新增一些策略,新增一个自研存储层,新增一些gremlin语法算子,那就需要你读懂源码,合理规划修改源码。 d.学习。 对于最近做的知识图谱存储,tinkerpop也是支持这两种类型的算子。只不过调用关系比spark 更乱,源码更难阅读,因为注释也比较差,后面有机会给大家品评。 tinkerpop自身为了表述逻辑,有四层类: traversal,类似于spark sql的dataset,代表迭代的顺序,会形成一个调用链。 traverser,该对象主要是保存tinkerpop的计算状态,及统计信息等。spark则没有。 如,tinkerpop,flink源码,注释很挫,而且很多地方引用关系,隐藏太深,还有各种优化策略,还有查询及执行逻辑不慎明了,命名规范问题等使得直接阅读比较困难,需要debug,梳理调用关系链,然后才能更好阅读成长
在图形中,节点和关系是最重要的实体; TinkerPop:TinkerPop是一种开源图计算框架,是 Apache 软件基金会旗下的一个顶级项目,该项目专注于为图数据库建立行业标准,包括一种名为Gremlin city rdf:type < http://abc.org/Capital > } Gremlin: g.V().hasLabel("Capital").values() TinkerPop & Gremlin TinkerPop 是一个图计算框架,用来进行实时的事务型处理,和批量的图分析,包含了一系列以 Gremlin 引擎为核心的子项目和模块。 下面是 TinkerPop 框架下属性图的一个例子: ? 参考资料 https://github.com/tinkerpop/gremlin 通过使用JanusGraph索引提高性能 PRACTICAL GREMLIN: An Apache TinkerPop
模块中的配置文件remote-objects.yaml为 hosts: [10.158.69.75] port: 8182 serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GryoMessageSerializerV1d0 bufferSize: 8192, useMapperFromGraph: graph, ioRegistries: [org.janusgraph.graphdb.tinkerpop.JanusGraphIoRegistry Cytoscape Apache TinkerPop的Gephi插件 KeyLines by Cambridge Intelligence Linkurious JanusGraph·上手JanusGraph
目录 一:简介 二:demo体验 三:OLTP 和 OLAP遍历 四:命令式和声明式遍历 五:无缝嵌入主语言 六:更多的信息 一:简介 本博文为翻译自官网的博文,官网:http://tinkerpop.apache.org /gremlin.html Gremlin是Apache TinkerPop 框架下的图遍历语言,而TinkerPop是JanusGraph的搜索引擎。 这意味着不仅所有的TinkerPop启用的图形系统都能执行Gremlin遍历,而且每个Gremlin遍历都可以被评估为实时数据库查询或批处理查询。 Gremlin旨在为用户提供表达查询的灵活性,并为系统提供者提供如何有效评估针对其启用TinkerPop的数据系统的遍历的灵活性。
Cassandra/HBase/BerkeleyDB等做存储,支持Solr/ES/Lucence等做图索引 支持Spark GraphX/Giraph等图分析计算引擎及Hadoop分布式计算框架 原生支持集成了Tinkerpop 采用很友好的Apache2.0协议,支持对接可视化组件如Cytoscape, plugin for Apache TinkerPop,Graphexp,KeyLines by Cambridge Intelligence ,Linkurious 【4】HugeGraph 王二铁:百度安全开源大规模图数据库HugeGraphzhuanlan.zhihu.com 图标 HugeGraph是支持Apache TinkerPop HugeGraph的主要特点包括: 基于TinkerPop 3 API实现,支持Gremlin图查询语言; 拥有完善的周边工具链和相关功能组件,可以满足图数据库开发的基本需求,提供易用高效的使用体验 Thanks to Tinkerpop, thanks to JanusGraph and Titan, thanks to DataStax.
/bin/titan.sh status 你会看到这个输出: Gremlin-Server (org.apache.tinkerpop.gremlin.server.GremlinServer) is /bin/gremlin.sh 您将看到类似于此的响应: \,,,/ (o o) -----oOOo-(3)-oOOo----- plugin activated: tinkerpop.server plugin activated: tinkerpop.hadoop plugin activated: tinkerpop.utilities plugin activated: aurelius.titan plugin activated: tinkerpop.tinkergraph gremlin> Gremlin控制台加载了几个插件以支持Titan和Gremlin特有的功能。
org.janusgraph.diskstorage.es.ElasticSearchIndex gremlin-driver 通过maven连接gremlin-server,前端应用出现没反应的状态,查看日志是apache.tinkerpop.gremlin.driver.exception.ResponseException
根据官网上的介绍,HugeGraph是一款易用、高效、通用的开源图数据库系统(Graph Database),实现了Apache TinkerPop3框架及完全兼容Gremlin查询语言,支持百亿以上的顶点和边快速导入 事务:遵循Tinkerpop事务规范,支持Read Committed级别事务。 多顶点ID策略:支持主键ID、支持自动生成ID、支持用户自定义字符串ID、支持用户自定义数字ID。 其它:支持图变量(Graph Variables)、兼容性上已通过Apache Tinkerpop官方测试用例90%兼容测试。 说了这么多,那么图库技术有什么用呢?