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

注意事项

  1. Nebula Graph 的 SQL 语法与传统 SQL 有差异,需要适应图数据库的查询方式

  2. 在生产环境中需要配置更复杂的集群设置

  3. 数据持久化需要挂载卷:-v /path/to/data:/usr/local/nebula/data

  4. 默认认证用户是 root,密码是 nebula

  5. 对于复杂查询,建议使用 EXPLAIN 分析查询计划

以上命令涵盖了 Nebula Graph 的基本增删改查操作,可以根据实际需求扩展更复杂的图查询和分析。

posted @ 2025-07-28 11:15  郭慕荣  阅读(80)  评论(0)    收藏  举报