前言

未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于图数据库

研究了下这两个图数据库。

2,关于nebula-graph

是一个中国的企业开源的。apache 2.0 协议。
github地址:
https://github.com/vesoft-inc/nebula

nebula图数据库文档相当的丰富,同时还支持类似于mysql的命令行。
可以各种操作。

docker pull vesoft/nebula-graphd:latest

docker images | grep nebula
vesoft/nebula-graphd       latest              729508bff4bd        3 months ago        282MB

docker run -itd  -p 3699:3699 --name nebula vesoft/nebula-graphd:latest
docker run -it vesoft/nebula-console:v1.2.0 -addr xx.xx.0.1 -port 3699 -u root -p root

(root@nebula) [(none)]> SHOW HOSTS;
[ERROR (-8)]: RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused
Thu Dec 24 14:42:29 2020

(root@nebula) [(none)]> CREATE SPACE nba (partition_num=1, replica_factor=1);
[ERROR (-8)]: Create space `nba' failed: RPC failure in MetaClient: N6apache6thrift9transport19TTransportExceptionE: AsyncSocketException: connect failed, type = Socket not open, errno = 111 (Connection refused): Connection refused.
Thu Dec 24 14:43:03 2020

本地端口是3699,需要使用docker-compose 启动集群服务才可以。
但是可以用console连接到nebula上面了。

3,docker-compose启动

启动之后就可以使用 console 的命令行了:

ip查看:

docker inspect nebula-docker-compose_graphd0_1 | grep IPAddress
docker run -it vesoft/nebula-console:v1.2.0 -addr xxx.xxx.xx.xx -port 3699 -u root -p root

xxx.xxx.xx.xx 是宿主机IP才可以。

使用命令行执行:

SHOW HOSTS;
=============================================================================================
| Ip         | Port  | Status | Leader count | Leader distribution | Partition distribution |
=============================================================================================
| 172.28.2.1 | 44500 | online | 0            | No valid partition  | No valid partition     |
---------------------------------------------------------------------------------------------
| 172.28.2.2 | 44500 | online | 0            | No valid partition  | No valid partition     |
---------------------------------------------------------------------------------------------
| 172.28.2.3 | 44500 | online | 0            | No valid partition  | No valid partition     |
---------------------------------------------------------------------------------------------
| Total      |       |        | 0            |                     |                        |
---------------------------------------------------------------------------------------------
Got 4 rows (Time spent: 21.894/27.132 ms)

Thu Dec 24 14:56:38 2020

(root@nebula) [(none)]> CREATE SPACE nba (partition_num=1, replica_factor=1);
Execution succeeded (Time spent: 23.469/26.797 ms)

Thu Dec 24 14:57:04 2020

(root@nebula) [(none)]> SHOW HOSTS;
=============================================================================================
| Ip         | Port  | Status | Leader count | Leader distribution | Partition distribution |
=============================================================================================
| 172.28.2.1 | 44500 | online | 0            | No valid partition  | No valid partition     |
---------------------------------------------------------------------------------------------
| 172.28.2.2 | 44500 | online | 0            |                     | nba: 1                 |
---------------------------------------------------------------------------------------------
| 172.28.2.3 | 44500 | online | 0            | No valid partition  | No valid partition     |
---------------------------------------------------------------------------------------------
| Total      |       |        | 0            |                     | nba: 1                 |
---------------------------------------------------------------------------------------------
Got 4 rows (Time spent: 1.658/4.974 ms)

Thu Dec 24 14:57:12 2020

(root@nebula) [(none)]> USE nba;
Execution succeeded (Time spent: 11.215/14.906 ms)

Thu Dec 24 14:57:23 2020

(root@nebula) [nba]> SHOW SPACES;
========
| Name |
========
| nba  |
--------
Got 1 rows (Time spent: 1.525/7.606 ms)

Thu Dec 24 14:57:30 2020

(root@nebula) [nba]> CREATE TAG player(name string, age int);
Execution succeeded (Time spent: 26.199/30.046 ms)

Thu Dec 24 14:57:43 2020

(root@nebula) [nba]> CREATE TAG team(name string);
Execution succeeded (Time spent: 24.661/28.844 ms)

Thu Dec 24 14:57:50 2020

(root@nebula) [nba]> SHOW TAGS;
===============
| ID | Name   |
===============
| 2  | player |
---------------
| 3  | team   |
---------------
Got 2 rows (Time spent: 1.074/4.102 ms)

Thu Dec 24 14:58:00 2020

(root@nebula) [nba]> SHOW EDGES;
Empty set (Time spent: 1.336/4.656 ms)

Thu Dec 24 14:58:08 2020

(root@nebula) [nba]> DESCRIBE TAG player;
==================
| Field | Type   |
==================
| name  | string |
------------------
| age   | int    |
------------------
Got 2 rows (Time spent: 5.171/9.324 ms)

Thu Dec 24 14:58:19 2020

(root@nebula) [nba]> INSERT VERTEX player(name, age) VALUES 100:("Tim Duncan", 42);
Execution succeeded (Time spent: 12.409/16.585 ms)

Thu Dec 24 14:58:35 2020

(root@nebula) [nba]> INSERT VERTEX player(name, age) VALUES 101:("Tony Parker", 36);
Execution succeeded (Time spent: 4.928/7.612 ms)

Thu Dec 24 14:58:41 2020

(root@nebula) [nba]> INSERT VERTEX player(name, age) VALUES 100:("Tim Duncan", 42), \
                  ->         101:("Tony Parker", 36), 102:("LaMarcus Aldridge", 33);
Execution succeeded (Time spent: 3.451/7.338 ms)

Thu Dec 24 14:59:04 2020

(root@nebula) [nba]> FETCH PROP ON player 100;
=======================================
| VertexID | player.name | player.age |
=======================================
| 100      | Tim Duncan  | 42         |
---------------------------------------
Got 1 rows (Time spent: 5.038/7.898 ms)

Thu Dec 24 14:59:15 2020

4,总结

在使用上面nebula还是非常给力的,经过了很多公司的实际测试。
同时在本地跑起来需要使用docker-compose。启动之后直接使用。
同时配合使用console 可以很方便使用 查询语句,和 mysql 命令行比较像呢。要是能执行 jdbc 也不错呢。