背景

在进行Nebula Graph调研时,发现当前大量的安装教程,官方文档中的许多描述也较难理解,对于新手来说,部署起来令人十分头疼。因此整理出这份比较完整的安装文档,供大家学习参考。

Nebula Graph简介

Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
在这里插入图片描述

测试环境

CentOS7.9
Nebula Graphv3.2.0

Nebula Graph Studio

v3.4.0

Nebula Graph安装部署教程

前提条件:linux环境VMware16的安装和虚拟机配置

进入linux环境,在根目录下创建文件夹app/nebula并进入该文件目录下。

(也可以根据个人管理文件的习惯,安装在相应目录中)

下载Nebula Graph(release 版本

URL 格式如下:

//Centos 7

https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.el7.x86_64.rpm

//Centos 8

https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.el8.x86_64.rpm

//Ubuntu 2004

https://oss-cdn.nebula-graph.com.cn/package/<release_version>/nebula-graph-<release_version>.ubuntu2004.amd64.deb

在本示例中使用的是CentOS7,因此使用

$ wget https://oss-cdn.nebula-graph.com.cn/package/3.2.0/nebula-graph-3.2.0.el7.x86_64.rpm

 安装完成后,通过ll命令查看文件夹中是否存在rpm包

 下载成功。

安装 Nebula Graph

安装 RPM 包

$ sudo rpm -ivh --prefix=<installation_path> <package_name>

--prefix为可选项,用于指定安装路径。如不设置,系统会将 Nebula Graph 安装到默认路径/usr/local/nebula/

在这里,本示例就之前准备好的路径下安装3.2.0版本的 RPM 包,运行如下命令:

$ sudo rpm -ivh nebula-graph-3.2.0.el7.x86_64.rpm  --prefix=/app/nebula

Ps:若安装时忘记修改路径了,安装到了默认路径下,可以通过mv移动文件位置

若发现权限不够,输入指令su并输入密码以切换到root用户(密码不会显示出来,只管输就完了)

启动Nebula Graph服务:

使用脚本nebula.service管理服务,包括启动、停止、重启、中止和查看

启动服务:

#按照nebula.service的安装目录,下文同理

$ sudo /app/nebula/nebula-graph/scripts/nebula.service start all

查看服务:

$ sudo /app/nebula/nebula-graph/scripts/nebula.service status all

停止服务:

$ sudo /app/nebula/nebula-graph/scripts/nebula.service stop all

至此,Nebula Graph服务安装部署完成。

Nebula studio 安装与使用

这是可以通过 Web 访问的开源图数据库可视化工具,搭配 Nebula Graph 内核使用

Ps:Studio 版本发布节奏独立于 Nebula Graph 内核,其命名方式也不参照内核命名规则,两者兼容对应关系如下表。

Nebula Graph版本Studio版本
2.5.x3.0.0
2.6.x3.1.x
3.0.03.2.x
3.1.03.3.2
3.0.0 ~ 3.2.03.4.0

Nebula studio 下载

使用以下命令下载rpm包

$ wget https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/3.4.0/nebula-graph-studio-3.4.0.x86_64.rpm

安装rpm包

$ sudo rpm -i <rpm_name>

默认安装路径为/usr/local/nebula-graph-studio;

使用以下命令安装到指定路径(这里选择安装到/app/nebula目录下)

$ sudo rpm -i nebula-graph-studio-3.4.0.x86_64.rpm --prefix=/app/nebula

当屏幕返回以下信息时,表示 PRM 版 Studio 已经成功启动。

Start installing Nebula Studio now...

Nebula Studio has been installed.

Nebula Studio started automatically.

此时使用ll命令查看目录,如下

异常处理

如果在安装过程中自动启动失败或是需要手动启动或停止服务,请使用以下命令:

手动启动服务
$ bash /app/nebula/nebula-studio/scripts/rpm/start.sh
手动停止服务
$ bash /app/nebula/nebula-studio/scripts/rpm/stop.sh
卸载
$ sudo rpm -e nebula-graph-studio-3.4.0.x86_64

启动成功后,在浏览器地址栏输入 http://<ip address>:7001IP地址填启动Nebula Graph服务的服务器IP地址

如果在浏览器窗口中能看到以下登录界面,表示已经成功部署并启动 Studio:

连接Nebula Graph

Host:127.0.0.1:9669

Username:root

Password:nebula

点击连接即可进入Studio的用户界面。

Nebula Graph Studio使用示例

1.如图所示创建图空间“playground”

 2.点击上方console进入,并选择图空间

 3.在代码区写入如下代码:

#创建tag与edge type
CREATE tag `Student` (`StuName` string NULL,`StuAge` int NULL);
CREATE tag `Teacher` (`TeaName` string NULL,`TeaAge` int NULL);
CREATE edge `like`(`Degree` string NULL); 
CREATE edge `teach` ();

#创建节点与关系
INSERT VERTEX Student(StuName,StuAge) VALUES "Student_01":("Peter",9);
INSERT VERTEX Student(StuName,StuAge) VALUES "Student_02":("Tom",10);
INSERT VERTEX Student(StuName,StuAge) VALUES "Student_03":("Bob",8);
INSERT VERTEX Student(StuName,StuAge) VALUES "Student_04":("Micheal",8);
INSERT VERTEX Student(StuName,StuAge) VALUES "Student_05":("John",9);
INSERT VERTEX Teacher(TeaName,TeaAge) VALUES "Teacher_01":("Mr Wang",34);
INSERT VERTEX Teacher(TeaName,TeaAge) VALUES "Teacher_02":("Mrs Li",32);

INSERT EDGE teach() VALUES "Teacher_01" -> "Student_01":();
INSERT EDGE teach() VALUES "Teacher_01" -> "Student_02":();
INSERT EDGE teach() VALUES "Teacher_01" -> "Student_03":();
INSERT EDGE teach() VALUES "Teacher_02" -> "Student_04":();
INSERT EDGE teach() VALUES "Teacher_02" -> "Student_05":();

INSERT EDGE like(Degree) VALUES "Student_01" -> "Student_02":("little");
INSERT EDGE like(Degree) VALUES "Student_02" -> "Student_03":("little");
INSERT EDGE like(Degree) VALUES "Student_02" -> "Student_01":("very");

# 在 Tag 的 Name 属性和 Edge type teach 和 like 上创建索引。重建使索引生效
CREATE TAG INDEX IF NOT EXISTS StuName ON Student(StuName(20));
CREATE TAG INDEX IF NOT EXISTS TeaName ON Teacher(TeaName(20));
CREATE EDGE INDEX IF NOT EXISTS teach_index ON teach();
CREATE EDGE INDEX IF NOT EXISTS like_index ON like();
REBUILD TAG INDEX StuName;
REBUILD TAG INDEX TeaName;
REBUILD EDGE INDEX teach_index;
REBUILD EDGE INDEX like_index;

#点查询
MATCH (v) RETURN v LIMIT 7;
MATCH (v:Student) RETURN v LIMIT 4;
MATCH (v:Teacher) RETURN v LIMIT 2;
MATCH (v:Student) WHERE v.Student.StuAge > 8 RETURN v AS Student_over_eight;

#边查询
MATCH ()-[e:teach | :like]->() RETURN e LIMIT 8;
MATCH ()-[e:like{Degree:"little"}]->() RETURN e AS Ordinary_Friend;

#GO查询语句
GO FROM "Teacher_01" OVER teach YIELD dst(edge) AS Teacher_01_Student_List;
GO FROM "Teacher_02" OVER teach YIELD dst(edge) AS Teacher_02_Student_List;
GO FROM "Student_02" OVER like YIELD dst(edge) AS Liked_People, properties(edge).Degree AS Degree;
GO FROM "Student_01" OVER like YIELD dst(edge) AS Liked_People, properties(edge).Degree AS Degree;
GO 2 STEPS FROM "Student_01" OVER like YIELD dst(edge) AS Two_step;

#查看属性
FETCH PROP ON Student "Student_01","Student_02","Student_03","Teacher_01" YIELD properties(vertex);
FETCH PROP ON like "Student_01" -> "Student_02","Student_02" -> "Student_01" YIELD properties(edge);

4.点击运行便可看到查询结果

总结

Nebula Graph 是一款开源的、分布式的、易扩展的原生图数据库,除Nebula Graph Studio之外,还有一系列功能强大的周边工具,若要了解更多,请移步Nebula官方文档

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐