Nebula Graph 并进行基本操作指南
1. 启动 Nebula Graph 容器并进入 Console
首先确保你已经安装了 Docker,然后执行以下命令:
# 拉取 Nebula Graph 镜像
docker pull vesoft/nebula-graphd
# 启动 Nebula Graph 服务
docker run -it --rm --name nebula -p 9669:9669 vesoft/nebula-graphd
# 在另一个终端进入 Console (注意:需要等待服务完全启动,约30秒)
docker exec -it nebula /usr/local/nebula/bin/nebula-console -u root -p nebula --address=127.0.0.1 --port=9669
2. 基本数据库操作
创建空间(相当于数据库)
CREATE SPACE IF NOT EXISTS test_space (partition_num=10, replica_factor=1, vid_type=FIXED_STRING(32));
USE test_space;
创建 Tag(相当于表结构)
CREATE TAG IF NOT EXISTS person(name string, age int);
CREATE TAG IF NOT EXISTS company(name string);
创建 Edge type(关系类型)
CREATE EDGE IF NOT EXISTS works(start_date string, end_date string);
插入数据(创建点)
-- 插入人物顶点
INSERT VERTEX person(name, age) VALUES "p100":("张三", 30);
INSERT VERTEX person(name, age) VALUES "p101":("李四", 28);
-- 插入公司顶点
INSERT VERTEX company(name) VALUES "c200":("阿里巴巴");
INSERT VERTEX company(name) VALUES "c201":("腾讯");
创建边(关系)
-- 张三在阿里巴巴工作
INSERT EDGE works(start_date, end_date) VALUES "p100"->"c200":("2015-01-01", "2020-12-31");
-- 李四在腾讯工作
INSERT EDGE works(start_date, end_date) VALUES "p101"->"c201":("2018-06-01", "");
3. 查询数据
基本查询
-- 查询所有人物
FETCH PROP ON person "p100", "p101" YIELD properties(vertex).name AS name, properties(vertex).age AS age;
-- 查询所有公司
FETCH PROP ON company "c200", "c201" YIELD properties(vertex).name AS name;
使用 MATCH 查询(图查询)
-- 查询张三的工作经历
MATCH (v:person)-[e:works]->(v2:company)
WHERE id(v) == "p100"
RETURN v.person.name AS person_name, v2.company.name AS company_name, e.start_date AS start_date, e.works.end_date AS end_date;
-- 查询所有在阿里巴巴工作过的人
MATCH (v:person)-[e:works]->(v2:company)
WHERE v2.company.name == "阿里巴巴"
RETURN v.person.name AS name, v.person.age AS age, e.start_date AS start_date;
4. 更新和删除操作
更新顶点属性
UPDATE VERTEX "p100" SET person.age = 31;
更新边属性
UPDATE EDGE "p100" -> "c200" OF works SET end_date = "2021-01-15";
删除边
DELETE EDGE works "p100" -> "c200";
删除顶点
DELETE VERTEX "p101";
5. 索引操作
创建索引
CREATE TAG INDEX IF NOT EXISTS person_name_index ON person(name(20));
CREATE EDGE INDEX IF NOT EXISTS works_date_index ON works(start_date(10), end_date(10));
重建索引
REBUILD TAG INDEX person_name_index;
REBUILD EDGE INDEX works_date_index;
6. 退出 Console
EXIT;
7. 停止并删除容器
docker stop nebula
注意事项
-
Nebula Graph 的 SQL 语法与传统 SQL 有差异,需要适应图数据库的查询方式
-
在生产环境中需要配置更复杂的集群设置
-
数据持久化需要挂载卷:
-v /path/to/data:/usr/local/nebula/data -
默认认证用户是 root,密码是 nebula
-
对于复杂查询,建议使用 EXPLAIN 分析查询计划
以上命令涵盖了 Nebula Graph 的基本增删改查操作,可以根据实际需求扩展更复杂的图查询和分析。
郭慕荣博客园

浙公网安备 33010602011771号