nebula
将点与点连接的数据存储,并提供快速查询的能力。
核心概念: 图,vid,索引,点,边
通过vid,查找点与点的联系并将边一起带上返回
1. 图空间
#创建图空间
CREATE SPACE IF NOT EXISTS my_space_2 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(256));
### 图空间创建说明
# space名称:my_space_2
# partition_num空间分配数,建议为硬盘数量的20倍
# replica_factor 副本数 至少1,
# vid_type 指定vid的类型,FIXED_STRING(256)定长字符串超过会报错无法使用
# comment 描述
#使用图空间,跟mysql的use test一样;
use my_space_2;
2. VID
vid在同一个图空间中必须唯一,一个图空间只能选择一种vid类型,一种为int65
vid相当于mysql 中的主键,通过vid 查询点是效率最高的一种方式
vid 生成建议: 通过属性组成唯一的字符串来表达vid;
通过vid 查询时不需要走索引,vid查找时直接找的是vid因此比较快。nebula也推荐通过vid 方式查询,不推荐通过索引方式
demo 比如链路血缘中: type:database:table
3. 索引
省略
4. 点tag
#创建点
CREATE tag IF NOT EXISTS table (name string,type int DEFAULT 1) TTL_DURATION=100,TTL_COL="name";
# 点名称:
# TTL_DURATION 过期时间默认s
# TTL_COL 过期列
# vid_type 指定vid的类型,FIXED_STRING(256)
# comment 无描述
#使用图空间,跟mysql的use test一样;
use my_space_2;
5. 边
#创建点说明
CREATE edge IF NOT EXISTS task (name string,age int DEFAULT 20);
### 图空间创建说明
# 名称:
# partition_num空间分配数,建议为硬盘数量的20倍
# replica_factor 副本数 至少1,
# vid_type 指定vid的类型,FIXED_STRING(256)
# comment 无描述
#使用图空间,跟mysql的use test一样;
use my_space_2;
字段血缘
#插入边
'INSERT EDGE col_to_col (taskId, taskType, createTime) VALUES "%s"->"%s"@%s :("%s", "%s", %d)';
#插入点, 点就是tag
'insert VERTEX ON column "" SET createTime="", tableType="";'
# 插入多个点
INSERT VERTEX t2 (name, age) VALUES "13":("n3", 12), "14":("n4", 8);
demo
insert VERTEX column (createTime,tableType) values "2:bdp:dwd_plineage_test:ttttyyyy_11:namexiaoyu":(1710173220,"OTHER");
insert VERTEX column (createTime,tableType) values "2:bdp:dwd_plineage_test:ttttyyyy_11:nametian":(1710173220,"OTHER");
INSERT EDGE col_to_col (taskId, taskType, createTime) VALUES "2:bdp:dwd_plineage_test:ttttyyyy_11:nametian"->"2:bdp:dwd_plineage_test:ttttyyyy_11:namexiaoyu"@203884 :("203884","3", 1710173220)
//往下查询
GET SUBGRAPH WITH PROP 1 STEPS from "2:bdp:dwd_plineage_test:ttttyyyy_11:nametian" OUT col_to_col YIELD VERTICES as nodeInfo,EDGES AS edgeInfo;