图数据库之TinkerPop Provider
Apache TinkerPop 提供了图数据库的抽象接口,方便第三方实现自己的图数据库以接入TinkerPop 技术栈,享受TinkerPop 的Gremlin、算法等福利。TinkerPop将这些第三方称为“Provider ”,知名的Provider包含janusGraph、neo4j、hugegraph等。
Provider包含:
-
Graph System Provider
-
Graph Database Provider
-
Graph Processor Provider
-
-
Graph Driver Provider
-
Graph Language Provider
-
Graph Plugin Provider
Graph Structure API(图谱数据结构)#
Graph最高层的抽象数据结构包含 Graph(图), Vertex(顶点), Edge(边), VertexProperty(属性) and Property.
基于这些基础数据结构,就可以对进行基本的图谱操作。
Graph graph = TinkerGraph.open(); //1
Vertex marko = graph.addVertex(T.label, "person", T.id, 1, "name", "marko", "age", 29); //2
Vertex vadas = graph.addVertex(T.label, "person", T.id, 2, "name", "vadas", "age", 27);
Vertex lop = graph.addVertex(T.label, "software", T.id, 3, "name", "lop", "lang", "java");
Vertex josh = graph.addVertex(T.label, "person", T.id, 4, "name", "josh", "age", 32);
Vertex ripple = graph.addVertex(T.label, "software", T.id, 5, "name", "ripple", "lang", "java");
Vertex peter = graph.addVertex(T.label, "person", T.id, 6, "name", "peter", "age", 35);
marko.addEdge("knows", vadas, T.id, 7, "weight", 0.5f); //3
marko.addEdge("knows", josh, T.id, 8, "weight", 1.0f);
marko.addEdge("created", lop, T.id, 9, "weight", 0.4f);
josh.addEdge("created", ripple, T.id, 10, "weight", 1.0f);
josh.addEdge("created", lop, T.id, 11, "weight", 0.4f);
peter.addEdge("created", lop, T.id, 12, "weight", 0.2f);
- 创建一个基于内存存储的TinkerGraph 实例(TinkerGraph是官方实现的,基于内存的Graph)
2 .创建一个顶点
- 创建边
上面的代码构建了一个基本的图,下面的代码演示如何进行图谱的操作。
实现 Gremlin-Core#
一个标准的Graph Provider需要实现OLTP 和OLAP两类接口,官方推荐学习TinkerGraph(in-memory OLTP and OLAP in tinkergraph-gremlin),以及 Neo4jGraph (OLTP w/ transactions in neo4j-gremlin) ,还有
Neo4jGraph (OLTP w/ transactions in neo4j-gremlin) ,还有 HadoopGraph (OLAP in hadoop-gremlin) 。
- 在线事务处理 Graph Systems (OLTP)
1. 数据结构 API: `Graph`, `Element`, `Vertex`, `Edge`, `Property` and `Transaction` (if transactions are supported).
2. 处理API : `TraversalStrategy` instances for optimizing Gremlin traversals to the provider’s graph system (i.e. `TinkerGraphStepStrategy`).
-
在线分析 图系统 (OLAP)
-
Everything required of OLTP is required of OLAP (but not vice versa).
-
GraphComputer API:
GraphComputer
,Messenger
,Memory
.
-
OLTP 实现#
需要实现structure包下的interface,包含Graph
, Vertex
, Edge
, Property
, Transaction
等等。
Graph
实现时,需要命名为XXXGraph
(举例: TinkerGraph, Neo4jGraph, HadoopGraph, etc.).- 需要兼容
GraphFactory
,也就是提供一个静态的Graph open(Configuration)
方法。
- 需要兼容
OLAP 实现#
需要实现:
-
GraphComputer
: 图计算器,提供隔离环境,执行VertexProgram,和MapReduce任务. -
Memory
: A global blackboard for ANDing, ORing, INCRing, and SETing values for specified keys. -
Messenger
: The system that collects and distributes messages being propagated by vertices executing the VertexProgram application. -
MapReduce.MapEmitter
: The system that collects key/value pairs being emitted by the MapReduce applications map-phase. -
MapReduce.ReduceEmitter
: The system that collects key/value pairs being emitted by the MapReduce applications combine- and reduce-phases.
关注作者
作者: JadePeng
出处:https://www.cnblogs.com/xiaoqi/p/tinkerPop-Provider.html
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际(欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接) 」知识共享许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了