1. 前置工作

基本就是照着下面的中文文档走了一遍,直接去看文档是最好的!!!!

1.1 Ubuntu 20.04上安装

下载地址:https://www.nebula-graph.com.cn/download/
中文文档:✅https://docs.nebula-graph.com.cn/2.6.1/

下载链接形式:

我这里下载最新版本,如果要下载历史版本,去这里

# 下载release的2.6.1版本
wget https://oss-cdn.nebula-graph.com.cn/package/2.6.1/nebula-graph-2.6.1.ubuntu2004.amd64.deb

# 安装deb包
sudo dpkg -i nebula-graph-2.6.1.ubuntu2004.amd64.deb

如果不指定安装位置的话,这个nebula默认位于:/usr/local/nebula/
在这里插入图片描述

1.2 启动 Nebula Graph 服务

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

  • nebula.service的默认路径是/usr/local/nebula/scripts,如果修改过安装路径,请使用实际路径。
    在这里插入图片描述
    其实可以打开这个文件看看,就是一个可执行文件,或者直接去github上看,也有,点击这里

    #! /bin/bash	  
    function usage { echo "Usage: ${USAGE_INFO}"}	
    [[ -z ${USAGE_INFO} ]] && USAGE_INFO="${0} [-v] [-c /path/to/config] <start|stop|restart|status|kill> <metad|graphd|storaged|all>"
    
  • 最重要的几个命令,如下:

    # 启动所有服务(一般都是启动所有,也可以单独启动某个服务)
    sudo /usr/local/nebula/scripts/nebula.service start all
    
    # 停止所有服务
    sudo /usr/local/nebula/scripts/nebula.service stop all
    
    # 查看服务状态
    sudo /usr/local/nebula/scripts/nebula.service status all
    

    注意:如果使用kill -9 命令强制终止进程,可能较小概率出现数据丢失。
    在这里插入图片描述

  • 另外,脚本nebula.service的使用语法如下([ ]中括号是可选,尖括号是必选):

    sudo /usr/local/nebula/scripts/nebula.service[-v] 
    [-c <config_file_path>]
    <start|stop|restart|kill|status>
    <metad|graphd|storaged|all>
    

    在这里插入图片描述
    在这里插入图片描述

1.3 连接Nebula Graph

  • 就好像neo4j提供了一个neo4j browser来进行命令行的调用;
  • nebula也提供了一个原生CLI客户端 ——Nebula Console,也是连接了就可以使用。其实使用别的也可以,就好像Navicat可以连接mysql等数据库。
  • 其实就是一个管理工具/CLI控制台命令行工具

直接按照文档的推荐去下载Nebula Console,windows版本的。github的release地址,点击这里

  1. 在 Windows 系统中,重命名为nebula-console.exe。
  2. 确保Nebula Graph 服务已启动,sudo /usr/local/nebula/scripts/nebula.service start all
  3. 确保安装了Nebula Console的机器可以访问安装了Nebula Graph的服务器(比如端口9669等要开放)

使用以下命令

# 基本语法
nebula-console.exe -addr <ip> -port <port> -u <username> -p <password>
  [-t 120] [-e "nGQL_statement" | -f filename.nGQL]

# 运行时,应该是类似
nebula-console.exe -addr 127.0.0.1 -port 9669 -u root -p 123456
# 尖括号必选,方括号可选,可以只连接,什么都不执行。

在这里插入图片描述

  • 上面的-port,默认是9669,其实就是Nebula Graph Service启动之后,查看状态时[INFO] nebula-graphd(de03025): Running as 30206, Listening on 9669。即nebula-graph这个服务,运行在端口9669。
  • 如果用windows自带的powershell,
    • 切换到nebula-console.exe这个程序所在的文件夹,直接输入nebula-console.exe -addr 127.0.0.1 -port 9669 -u root -p 123456这个命令会报错。。
    • 需要改成./nebula-console.exe -addr 127.0.0.1 -port 9669 -u root -p 123456
    • 连接成功后显示如下
      在这里插入图片描述
    • 但是是真的丑。
  • 断开连接,直接输入:QUIT或者:EXIT
    在这里插入图片描述

1.4 使用常用 nGQL(CRUD 命令)

增删改查:增加(Create)、检索(Retrieve)、更新(Update)和删除(Delete)

1.4.1 对Nebula Graph的基本认识

  • 一个 Nebula Graph 实例由一个或多个图空间组成。每个图空间都是物理隔离的,用户可以在同一个实例中使用不同的图空间存储不同的数据集。
  • 为了在图空间中插入数据,需要为图数据库定义一个 Schema。Nebula Graph 的 Schema 是由如下几部分组成。简单来说,就是点和点的类型(标签/实体类型),边和边的类型
    在这里插入图片描述

1.4.2 检查 Nebula Graph 集群的机器状态

首先建议检查机器状态,确保所有的 Storage 服务连接到了 Meta 服务。执行命令SHOW HOSTS查看机器状态。在这里插入图片描述
可以看到,Status这列,是ONLINE表示Storage服务在线。(这里只有一个存储,所以只列出了一项)

1.4.3 异步实现创建和修改

  • Nebula Graph 中执行如下创建和修改操作,是异步实现的。要在下一个心跳周期之后才能生效;否则访问会报错。
    • 对于常见的六种数据结构:space(空间)、vertex(点)、edge(边)、tag(标签)、edge type(边类型)、properties(属性)
    • 除了创建图(create space),在对点(实体)和边(关系)进行创建/修改/添加索引时,都是异步实现的!
    • create/alter tag/edgecreate tag/edge index
  • 默认心跳周期是 10 秒。修改心跳周期参数heartbeat_interval_secs,请参见配置简介
    • 简单来说,就是与schema相关的操作就比较耗时,是异步操作。
    • 其他添加数据的操作,这种照样还是实时的,所以也没有很大的必要去修改心跳周期

1.4.4 创建图空间(数据库),创建点和边类型

我没有打算用命令行的方式去创建图。。。累

2. 相关

2.1 工具介绍

参考:企业版和社区版的区别

由于比较穷,所以只能看看社区版有啥工具,🤐🤐🤐。这些东西都可以对标neo4j的,名字都差不多。

  • Nebula Graph,
    • 大部分特性都支持,企业版的都是集群那种功能
  • Nebula Studio,
    • 可视化 Schema 管理、可视化数据导入、nGQL 查询控制台
    • 社区版和企业版都有(功能一模一样)
  • Nebula Explorer
    • 只有企业版有,社区版别想了
  • Nebula Dashboard
    • 主要是监控资源
    • 社区版只有几个功能,企业版多一些
  • 图算法
    • 社区版和企业版支持的一模一样

+


另外,关于工具的介绍,也可以看:生态工具概览

2.2 Nebula Graph数据结构

关于Nebula Graph中的数据结构,可以查看这里
在这里插入图片描述
和neo4j相比:

  • Nebula Graph 中没有无向边,只支持有向边
  • neo4j中有有向边和无向边,还有双向和单向的分别。

2.3 Nebula Graph设计架构

参考:Nebula Graph 架构总览

  • Nebula Graph 由三种服务构成:Graph 服务、Meta 服务和 Storage 服务,是一种存储与计算分离的架构。
  • 每个服务都有可执行的二进制文件和对应进程,用户可以使用这些二进制文件在一个或多个计算机上部署 Nebula Graph 集群。如下图

在这里插入图片描述

  • Meta 服务是由 nebula-metad 进程提供的,负责数据管理,例如 Schema 操作、集群管理和用户权限管理等。(元数据管理
  • Nebula Graph 采用计算存储分离架构。Graph 服务负责处理计算请求,Storage 服务负责存储数据。它们由不同的进程提供,Graph 服务是由 nebula-graphd 进程提供,Storage 服务是由 nebula-storaged 进程提供。

2.4 Nebula Studio安装和使用

2.4.1 安装

  • Nebula Studio其实也是安装在linux端,然后提供一个网页接口,去访问这个网页,就可以访问Nebula Studio这个服务。
  • 参考:部署 Studio

安装之前的准备:

  1. Nebula Graph所有的服务都已经打开
  2. linux系统上安装有 v10.12.0 以上的 Node.js
  3. 以下两个端口不能被占用(可以使用sudo lsof -i:7001这个命令看一下有没有占用)
    7001端口:Studio 提供的 web 服务
    8080端口:Nebula-http-gateway,Client 的 HTTP 服务

如果没有安装nodejs,参考:

# 直接安装最新版
curl -fsSL https://deb.nodesource.com/setup_17.x 
# 这句会直接安装nodejs和npm
sudo apt-get install -y nodejs
# 安好了看看版本
node -v
npm -v

这里存在一个坑,不能安装最新版本,只能是12~14之间的版本。

参考:nebula-graph-studio-3.1.0.x86_64.rpm安装报错 【这个很奇怪,百度搜中文确实比google好一些,哈哈】

# 移除nodejs和npm
sudo apt-get remove nodejs
sudo apt autoremove

参考:Ubuntu系统中安装升级卸载nodejs和npm
重新安装12-14之间的版本

curl -fsSL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

# 查看版本
node -v

满足基本条件后,就可以开始进行安装了

  • 由于是Ubuntu,所以只能通过tar的方式进行安装。
    # 默认下载包位于home目录下
    wget https://oss-cdn.nebula-graph.com.cn/nebula-graph-studio/3.1.0/nebula-graph-studio-3.1.0.x86_64.tar.gz
    # 解压到当前文件夹
    tar -xvf nebula-graph-studio-3.1.0.x86_64.tar.gz
    

2.4.2 启动和停止服务

  • 根目录 nebula-graph-studio 下一共有两个安装包:nebula-graph-studionebula-http-gateway。用户需要在同一台机器上分别部署并启动服务,才能完成 Studio 的部署。
    在这里插入图片描述
    # 部署 nebula-http-gateway 并启动
    cd nebula-http-gateway
    nohup ./nebula-httpd & # 放到后台运行
    # 部署 nebula-graph-studio 并启动
    cd ../nebula-graph-studio
    npm run start
    
  • 出现一下提示:
    在这里插入图片描述
  • 然后就去浏览器访问:ip:7001就可以看到以下内容了,代表配置成功!

在这里插入图片描述

  • 停止服务的方式也很简单:
    kill $(lsof -t -i :8080) # stop nebula-http-gateway
    cd nebula-graph-studio
    npm run stop # stop nebula-graph-studio
    
    在这里插入图片描述

2.4.3 使用

需要确保已经有space(空间/图数据库),如果没有,可以使用命令行创建一个
在这里插入图片描述
这里配置数据库部分,三个字段,其实和使用Nebula Console连接Nebula Graph是一样的。

nebula-console.exe -addr 127.0.0.1 -port 9669 -u root -p 123456
  • 即使 Nebula Graph 数据库与 Studio 部署在同一台机器上,用户也必须在 Host 字段填写这台机器的本机 IP 地址,而不是 127.0.0.1 或者 localhost。
  • 一次连接会话持续 30 分钟。如果超过 30 分钟没有操作,会话即断开,用户需要重新登录数据库。
  • 登陆成功后,就会让你选择图(space),所以必须提前使用命令行建立一个图,然后才可以继续使用Nebula Studio进行操作。

使用限制

  • Studio 上传数据仅支持上传无表头的 CSV 文件,但是,单个文件大小及保存时间不受限制,而且数据总量以本地存储容量为准。
  • 目前仅支持在 控制台 上以 CSV 格式导出查询结果和 图探索页面 上以 CSV 格式和图片形式导出数据,不支持其他数据备份方式。
  • 除以下内容外,用户可以在 控制台 上执行所有 nGQL 语句:
    • USE <space_name>:只能在 Space 下拉列表中选择图空间,不能运行这个语句选择图空间。
    • 控制台 上使用 nGQL 语句时,用户可以直接回车换行,不能使用换行符。

剩下都是可视化,自己点点就好了


其他


参考:

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐