跳转至

NebulaGraph Console

NebulaGraph Console 是 NebulaGraph 的原生命令行客户端,用于连接 NebulaGraph 集群并执行查询,同时支持管理参数、导出命令的执行结果、导入测试数据集等功能。

版本对照表

参见Github

获取 NebulaGraph Console

NebulaGraph Console 的获取方式如下:

功能说明

连接 NebulaGraph

运行二进制文件 nebula-console 连接 NebulaGraph 的命令语法如下:

<path_of_console> -addr <ip> -port <port> -u <username> -p <password>
  • path_of_console是 NebulaGraph Console 二进制文件的存储路径。
  • 开启 SSL 加密后,需要双向认证时,连接时需要指定 SSL 相关参数。

示例如下:

  • 通过 HTTP/1.1 连接 NebulaGraph

    ./nebula-console -addr 192.168.8.100 -port 9669 -u root -p nebula
    
  • 开启 SSL 加密且使用私有 CA 证书连接

    ./nebula-console -addr 192.168.8.100 -port 9669 -u root  -p nebula -enable_ssl -ssl_root_ca_path /home/xxx/cert/root.crt -ssl_cert_path /home/xxx/cert/client.crt -ssl_private_key_path /home/xxx/cert/client.key
    
    - 开启 SSL 加密且使用受信任的 CA 证书连接

    ./nebula-console -addr nebula-graph-ncnj7ss1ssfnnb4eqq88g.aws.dev.cloud.nebula-graph.io -port 9669 -u root -p nebula -enable_ssl 
    

常用参数的说明如下。

参数 说明
-h/-help 显示帮助菜单。
-addr/-address 设置要连接的 Graph 服务的 IP 或主机名。默认地址为 127.0.0.1。
-P/-port 设置要连接的 Graph 服务的端口。默认端口为 9669。
-u/-user 设置 NebulaGraph 账号的用户名。未启用身份认证时,可以使用任意已存在的用户名(默认为root)。
-p/-password 设置用户名对应的密码。未启用身份认证时,密码可以填写任意字符。若不指定,会弹出密码输入提醒。
-t/-timeout 设置整数类型的连接超时时间。单位为毫秒,默认值为 120。
-e/-eval 设置字符串类型的 nGQL 语句。连接成功后会执行一次该语句并返回结果,然后自动断开连接。
-f/-file 设置存储 nGQL 语句的文件的路径。连接成功后会执行该文件内的 nGQL 语句并返回结果,执行完毕后自动断开连接。
-enable_ssl 连接 NebulaGraph 时使用 SSL 加密双向认证。
-ssl_root_ca_path 指定私有 CA 颁布的根证书的存储路径。
-ssl_cert_path 指定 SSL 客户端证书存储路径。
-ssl_private_key_path 指定 SSL 客户端密钥的存储路径。
-ssl_insecure_skip_verify 指定客户端是否跳过验证服务端的证书链和主机名。默认为false。如果设置为true,则接受服务端提供的任何证书链和主机名。

更多参数参见项目仓库

管理参数

NebulaGraph Console 可以保存参数,用于参数化查询。

Note

  • VID 不支持参数化查询。
  • SAMPLE子句中不支持参数化查询。
  • 会话释放后,参数不会保留。
  • 保存参数命令如下:

    nebula> :param <param_name> => <param_value>;
    

    示例:

    nebula> :param p1 => "Tim Duncan";
    nebula> MATCH (v:player{name:$p1})-[:follow]->(n)  RETURN v,n;
    +----------------------------------------------------+-------------------------------------------------------+
    | v                                                  | n                                                     |
    +----------------------------------------------------+-------------------------------------------------------+
    | ("player100" :player{age: 42, name: "Tim Duncan"}) | ("player125" :player{age: 41, name: "Manu Ginobili"}) |
    | ("player100" :player{age: 42, name: "Tim Duncan"}) | ("player101" :player{age: 36, name: "Tony Parker"})   |
    +----------------------------------------------------+-------------------------------------------------------+
    
    nebula> :param p2 => {"a":3,"b":false,"c":"Tim Duncan"};
    nebula> RETURN $p2.b AS b;
    +-------+
    | b     |
    +-------+
    | false |
    +-------+
    
  • 查看当前保存的所有参数,命令如下:

    nebula> :params;
    
  • 查看指定参数,命令如下:

    nebula> :params <param_name>;
    
  • 删除指定参数,命令如下:

    nebula> :param <param_name> =>;
    

导出执行结果

导出命令执行的返回结果,可以保存为 CSV 文件、 DOT 文件或者 Profile/Explain 结果。

Note

  • 文件保存在当前工作目录中,即 Linux 命令pwd显示的目录。
  • 命令只对下一条查询语句生效。
  • DOT 文件的内容可以复制后在 GraphvizOnline 网页中粘贴,生成可视化的执行计划图。
  • 导出 CSV 文件命令如下:

    nebula> :CSV <file_name.csv>;
    
  • 导出 DOT 文件命令如下:

    nebula> :dot <file_name.dot>;
    

    示例:

    nebula> :dot a.dot;
    nebula> PROFILE FORMAT="dot" GO FROM "player100" OVER follow;
    
  • 导出 PROFILE/EXPLAIN 结果到文件命令如下:

    nebula> :profile <file_name>;
    
    或者

    nebula> :explain <file_name>;
    

Note

相比于 Studio 中的截图、CSV 文件,因为保有更多信息量和拥有更好的可读性,经由此命令输出的文本文件内容是首推的在 GitHub issue、论坛中报告执行计划、图查询调优的方式。

示例:

nebula> :profile profile.log
nebula> PROFILE GO FROM "player102" OVER serve YIELD dst(edge);
nebula> :profile profile.dot
nebula> PROFILE FORMAT="dot" GO FROM "player102" OVER serve YIELD dst(edge);
nebula> :explain explain.log
nebula> EXPLAIN GO FROM "player102" OVER serve YIELD dst(edge);

加载测试数据集

测试数据集名称为 basketballplayer,详细 Schema 信息和数据信息请使用相关SHOW命令查看。

加载测试数据集命令如下:

nebula> :play basketballplayer;

重复执行语句

重复执行下一个命令 N 次,然后打印平均执行时间。命令如下:

nebula> :repeat N;

示例:

nebula> :repeat 3;
nebula> GO FROM "player100" OVER follow YIELD dst(edge);
+-------------+
| dst(EDGE)   |
+-------------+
| "player101" |
| "player125" |
+-------------+
Got 2 rows (time spent 2602/3214 us)

Fri, 20 Aug 2021 06:36:05 UTC

+-------------+
| dst(EDGE)   |
+-------------+
| "player101" |
| "player125" |
+-------------+
Got 2 rows (time spent 583/849 us)

Fri, 20 Aug 2021 06:36:05 UTC

+-------------+
| dst(EDGE)   |
+-------------+
| "player101" |
| "player125" |
+-------------+
Got 2 rows (time spent 496/671 us)

Fri, 20 Aug 2021 06:36:05 UTC

Executed 3 times, (total time spent 3681/4734 us), (average time spent 1227/1578 us)

睡眠

睡眠 N 秒。常用于修改 Schema 的操作中,因为修改 Schema 是异步实现的,需要在下一个心跳周期才同步数据。命令如下:

nebula> :sleep N;

断开连接

用户可以使用:EXIT或者:QUIT从 NebulaGraph 断开连接。为方便使用,NebulaGraph Console 支持使用不带冒号(:)的小写命令,例如quit

示例:

nebula> :QUIT;

Bye root!

最后更新: 2024年12月19日