图解Janusgraph系列-官方测试图:诸神之图(Graph of the gods)分析
在Janusgraph
中提供了一个用于测试
的图,美名其曰“诸神之图
”!英文名:Graph of the gods
; 响当当的名字哈哈~~
大家好,我是洋仔
,JanusGraph图解系列文章,实时更新
~
图数据库文章总目录:
- 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录
- 地址:https://liyangyang.blog.csdn.net/article/details/111031257
**
源码分析相关可查看github(码文不易,求个star~)
**: https://github.com/YYDreamer/janusgraph
下述流程高清大图地址:https://www.processon.com/view/link/5f471b2e7d9c086b9903b629
版本:JanusGraph-0.5.2
转载文章请保留以下声明:
作者:洋仔聊编程
微信公众号:匠心Java
原文地址:https://liyangyang.blog.csdn.net/
诸神之图
在Janusgraph
中提供了一个用于测试
的图,美名其曰“诸神之图
”!英文名:Graph of the gods
; 响当当的名字哈哈~~
图
如下图:
图中,对应的类型解释如下:
| 符号类型 | 含义 |
| —————- | ———————————————- |
| 粗体key | 图索引键 |
| 加粗 加星号的key | 图唯一索引键 |
| 下划线key | 顶点为中心的索引键,vertex-centric index |
| 空心箭头edge | 不可重复边,两个节点之间最多只能有一个该类型边 |
| 实心箭头edge | 单向边,只能A–>B,不可以B–>A |
包含类型
主要包含6种节点类型:
- location:位置(sky:天空,sea:海,tartarus:塔耳塔洛斯)
- titan:巨人(saturn:罗马神话中的农神)
- god:神(jupiter,neptune,pluto)
- demigod:半神(hercules)
- human:人类(alcmene)
- monster:怪物(nemean,hydra,cerberus)
主要包含6中边类型:
- father:父亲
- mother:母亲
- brother:兄弟
- battled:战斗
- lives:生活在
- pet:宠物
源码分析
源码在GraphOfTheGodsFactory
类的下述方法中:
1 | public static void load(final JanusGraph graph, String mixedIndexName, boolean uniqueNameCompositeIndex) {} |
我们接下来分析一下,创建语句源码,具体分析一下图中的组成:
详细解释,已经在代码中注释
1、获取图管理对象实例
1 | if (graph instanceof StandardJanusGraph) { |
2、创建属性和对应索引
1 | // ===创建name属性; String、唯一CompositeIndex、锁机制保证name的强一致性 |
3、创建edge类型和对应索引
1 | // 创建边类型:father, many to one |
4、创建vertex类型
1 | // 创建节点label |
5、提交创建的schema数据
1 | management.commit(); |
6、插入数据
获取图事务对象:
1 | JanusGraphTransaction tx = graph.newTransaction(); |
插入节点数据:
1 | // 插入节点 |
插入边数据:
1 | // 插入边数据 |
提交事务,持久化数据:
1 | // 提交事务,持久化提交的数据到磁盘 |
码字不易,求个赞和star~
图解Janusgraph系列-官方测试图:诸神之图(Graph of the gods)分析
http://coderstudy.vip/article/图解Janusgraph系列-官方测试图:诸神之图(Graph_of_the_gods)分析.html