CREATE SPACE

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

前提条件

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

语法

  1. CREATE SPACE [IF NOT EXISTS] <graph_space_name> (
  2. [partition_num = <partition_number>,]
  3. [replica_factor = <replica_number>,]
  4. vid_type = {FIXED_STRING(<N>) | INT[64]}
  5. )
  6. [COMMENT = '<comment>'];
参数说明
IF NOT EXISTS检测待创建的图空间是否存在,只有不存在时,才会创建图空间。仅检测图空间的名称,不会检测具体属性。
<graph_space_name>在Nebula Graph实例中唯一标识一个图空间。图空间名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用关键字和保留字
partition_num指定图空间的分片数量。建议设置为5倍的集群硬盘数量。例如集群中有3个硬盘,建议设置15个分片。默认值为100。
replica_factor指定每个分片的副本数量。建议在生产环境中设置为3,在测试环境中设置为1。由于需要基于多数表决,副本数量必须是奇数。默认值为1。
vid_type必选参数。指定点ID的数据类型。可选值为FIXED_STRING(<N>)INT64INT等同于INT64FIXED_STRING(<N>)表示数据类型为字符串,最大长度为N,超出长度会报错;INT64表示数据类型为整数。
COMMENT图空间的描述。最大为256字节。默认无描述。

示例

  1. # 仅指定VID类型,其他选项使用默认值。
  2. nebula> CREATE SPACE my_space_1 (vid_type=FIXED_STRING(30));
  3. # 指定分片数量、副本数量和VID类型。
  4. nebula> CREATE SPACE my_space_2 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30));
  5. # 指定分片数量、副本数量和VID类型,并添加描述。
  6. nebula> CREATE SPACE my_space_3 (partition_num=15, replica_factor=1, vid_type=FIXED_STRING(30)) comment="测试图空间";

创建图空间说明

检查分片分布情况

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

  1. nebula> SHOW HOSTS;
  2. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  3. | Host | Port | Status | Leader count | Leader distribution | Partition distribution |
  4. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  5. | "storaged0" | 9779 | "ONLINE" | 8 | "basketballplayer:3, test:5" | "basketballplayer:10, test:10" |
  6. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  7. | "storaged1" | 9779 | "ONLINE" | 9 | "basketballplayer:4, test:5" | "basketballplayer:10, test:10" |
  8. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  9. | "storaged2" | 9779 | "ONLINE" | 3 | "basketballplayer:3" | "basketballplayer:10, test:10" |
  10. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  11. | "Total" | | | 20 | "basketballplayer:10, test:10" | "basketballplayer:30, test:30" |
  12. +-------------+------+----------+--------------+--------------------------------+--------------------------------+

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

  1. nebula> BALANCE LEADER;
  2. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  3. | Host | Port | Status | Leader count | Leader distribution | Partition distribution |
  4. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  5. | "storaged0" | 9779 | "ONLINE" | 7 | "basketballplayer:3, test:4" | "basketballplayer:10, test:10" |
  6. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  7. | "storaged1" | 9779 | "ONLINE" | 7 | "basketballplayer:4, test:3" | "basketballplayer:10, test:10" |
  8. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  9. | "storaged2" | 9779 | "ONLINE" | 6 | "basketballplayer:3, test:3" | "basketballplayer:10, test:10" |
  10. +-------------+------+----------+--------------+--------------------------------+--------------------------------+
  11. | "Total" | | | 20 | "basketballplayer:10, test:10" | "basketballplayer:30, test:30" |
  12. +-------------+------+----------+--------------+--------------------------------+--------------------------------+