图数据库——Nebula Graph安装部署(含示例)
一份Nebula Graph服务的安装部署以及Nebula Graph Studio的安装与使用教程。
背景
在进行Nebula Graph调研时,发现当前大量的安装教程,官方文档中的许多描述也较难理解,对于新手来说,部署起来令人十分头疼。因此整理出这份比较完整的安装文档,供大家学习参考。
Nebula Graph简介
Nebula Graph是一款开源的、分布式的、易扩展的原生图数据库,能够承载数千亿个点和数万亿条边的超大规模数据集,并且提供毫秒级查询。
测试环境
CentOS | 7.9 |
Nebula Graph | v3.2.0 |
Nebula Graph Studio | v3.4.0 |
Nebula Graph安装部署教程
进入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.x | 3.0.0 |
2.6.x | 3.1.x |
3.0.0 | 3.2.x |
3.1.0 | 3.3.2 |
3.0.0 ~ 3.2.0 | 3.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>:7001(IP地址填启动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官方文档。
更多推荐
所有评论(0)