跳转至

CREATE SPACEGraph

图空间是NebulaGraph中彼此隔离的图数据集合,与MySQL中的database概念类似。CREATE SPACE语句可以通过指定名称创建一个新的图空间。

前提条件Graph

只有God角色的用户可以执行CREATE SPACE语句。详情请参见Graph。

语法Graph

CREATE SPACE [IF NOT EXISTS] <graph_space_name>
    [(partition_num = <partition_number>, 
    replica_factor = <replica_number>, 
    vid_type = {FIXED_STRING(<N>) | INT64})];

IF NOT EXISTSGraph

IF NOT EXISTS关键字可以检测待创建的图空间是否存在,只有不存在时,才会创建图空间。

Note

仅检测图空间的名称,不会检测具体属性。

图空间名称Graph

graph_space_name在NebulaGraph实例中唯一标识一个图空间。

自定义图空间选项Graph

用户可以为新的图空间设置如下选项:

  • partition_num

    指定图空间的分片数量。建议设置为5倍的集群硬盘数量。例如集群中有3个硬盘,建议设置15个分片。默认值为100。

  • replica_factor

    指定每个分片的副本数量。建议在生产环境中设置为3,在测试环境中设置为1。由于需要基于多数表决,副本数量必须是奇数。默认值为1。

    Caution

    如果将副本数设置为1,用户将无法使用Graph命令为NebulaGraph的存储服务平衡负载或扩容。

  • vid_type

    指定点ID的数据类型。可选值为FIXED_STRING(<N>)INT64FIXED_STRING(<N>)表示数据类型为字符串,最大长度为N,超出长度会报错;INT64表示数据类型为整数。默认值为FIXED_STRING(8)

如果没有指定选项,NebulaGraph会使用默认值创建图空间。

示例Graph

# 使用默认值。
nebula> CREATE SPACE my_space_1; 

# 指定分片数量。
nebula> CREATE SPACE my_space_2(partition_num=10); 

# 指定副本数量。
nebula> CREATE SPACE my_space_3(replica_factor=1); 

# 指定点ID最大长度。
nebula> CREATE SPACE my_space_4(vid_type = FIXED_STRING(30)); 

创建图空间说明Graph

尝试使用新创建的图空间可能会失败,因为创建是异步实现的。

NebulaGraph将在下一个心跳周期内完成图空间的创建,为了确保创建成功,可以使用如下方法之一:

  • 在Graph语句的结果中查找新的图空间,如果找不到,请等待几秒重试。
  • 等待两个心跳周期,例如20秒。

如果需要修改心跳间隔,请为Graph修改参数heartbeat_interval_secs

检查分片分布情况Graph

在大型集群中,由于启动时间不同,分片的分布可能不均衡。用户可以执行如下命令检查分片的分布情况:

nebula> SHOW HOSTS;
+-----------+-------+--------+--------------+----------------------------------+-------------------------------------+
| Host      | Port  | Status | Leader count | Leader distribution              | Partition distribution              |
+-----------+-------+--------+--------------+----------------------------------+-------------------------------------+
| storaged0 | 9779  | ONLINE | 1            | basketballplayer:5               | basketballplayer:5                  |
+-----------+-------+--------+--------------+----------------------------------+-------------------------------------+
| storaged1 | 9779  | ONLINE | 2            | test:1, basketballplayer:5       | basketballplayer:5, test:1          |
+-----------+-------+--------+--------------+----------------------------------+-------------------------------------+
| storaged2 | 9779  | ONLINE | 1            | basketballplayer:5               | basketballplayer:5                  |
+-----------+-------+--------+--------------+----------------------------------+-------------------------------------+

如果需要均衡负载,请执行如下命令:

nebula> BALANCE LEADER;

最后更新: 2021年5月14日
Back to top