1.后端存储
Nebula Graph使用自行开发的KVStore,使用RocksDB作为本地存储引擎,Nebula Graph的存储分为Meta和Storage两部分。
Meta(配置详情)负责存储用户账号和权限信息、存储存储分片的位置信息、存储图空间的元数据(在官方文档中图空间和Schema是分开描述的)、负责存储Schema的相关信息、TTL、作业等。
![](https://img.haomeiwen.com/i5295864/272902115dd9a4bc.png)
Storage(配置详情)负责存储图的主要数据,主要是点和边,将点和边的信息存储为key,同时将点和边的属性信息存储在value中。(分片策略采用静态 Hash的方式)
![](https://img.haomeiwen.com/i5295864/a9d42207fa0b95ec.png)
2.模式管理
2.1 Schema
一个Nebula Graph实例由一个或多个图空间(可以常规理解为一个数据库)组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。为了在图空间中插入数据,需要为图数据库定义一个Schema(从可视化界面操作来看,一个图空间只可以定一个schema)。
![](https://img.haomeiwen.com/i5295864/d58297b18898ca25.png)
Nebula Graph的Schema是由如下几部分组成
![](https://img.haomeiwen.com/i5295864/a79630fbdcbfe116.png)
2.2 点/边
Nebula Graph中的数据模型在Schema(Space图空间)之下还有点、边、标签、边类型、属性。标签预先定义点的类型、属性,边类型预先定义边的类型和属性。
标签Tag可以理解为概念模型中的本体,比如人;点可以对比实体,理解为具备属性信息的实例化后的本体。在Tag中定义一个“player”,具备name属性,则导入“palyer001, David”的数据就是点。同理理解边类型和边。
![](https://img.haomeiwen.com/i5295864/e9532291361aaeb5.png)
![](https://img.haomeiwen.com/i5295864/3225433676af8b27.png)
2.3 模式的可视化编辑
提供属性编辑功能,但是在已入库数据的情况下,所修改的属性不会与已入库数据保持一致。比如player节点的name属性入库的数据是string类型,在入库数据后修改为int型成功,但已入库数据仍为string类型,没有做一致性检查。
![](https://img.haomeiwen.com/i5295864/13cd0ac2fcf4e269.png)
提供属性删除功能,但是在已入库数据的情况下,删除属性的同时并不会删除已入库的该属性的数据。比如player节点的age属性入库的数据的前提下,删除age属性,通过查询可视化无法查询出该属性;然后再新增age属性,不导入数据,重新查询,数据又可以查出来了,可见删除属性并不影响该属性已入库的数据。
3. Studio
-
提供简单的路径检索算法交互,在Nebula Graph中将路径分为walk(无限路径,即改路径可以形成一个圆)、trail(节点可以重复但边不可以重复的有限路径)、path(节点和边都不可以重复的路径)三类。
FIND ALL PATH FROM "palyer100" TO "team204" over *
-
提供点击节点对该节点进行拓展的交互
可视化的图拓展
- 控制台,编写nGQL,支持大部分openCypher 9图查询语法(不支持修改和控制语法)
网友评论