创建、启动和停止复合数据库
复合数据库使用 Cypher® 管理命令进行管理。请注意,无法修改复合数据库的访问选项或数据库拓扑,因为这些都是从组成数据库继承的。有关修改访问选项的信息,请参阅更改数据库访问模式。有关数据库拓扑的信息,请参阅在集群中创建数据库。
驱动程序和客户端应用程序连接复合数据库的方式与连接标准数据库相同。欲了解更多信息,请参阅不同Neo4j 驱动程序和应用程序的手册。
创建复合数据库
可以使用 `CREATE COMPOSITE DATABASE` 创建复合数据库。
复合数据库名称的命名规则与标准数据库相同。然而,一个不同之处在于,不使用反引号将名称括起来的已弃用语法不适用于复合数据库。在使用复合数据库时,点号和破折号都需要用反引号括起来。
不建议在复合数据库名称中使用点号 (`.`)。这是因为难以确定点号是复合数据库名称的一部分,还是复合数据库中数据库别名的分隔符。 |
CREATE COMPOSITE DATABASE inventory
创建复合数据库后,它将显示在 `SHOW DATABASES` 命令提供的列表中。
SHOW DATABASES
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "inventory" | "composite" | [] | "read-only" | "localhost:7687" | NULL | FALSE | "online" | "online" | "" | FALSE | FALSE | [] | | "library" | "composite" | [] | "read-only" | "localhost:7687" | NULL | FALSE | "online" | "online" | "" | FALSE | FALSE | ["library.sci-fi"] | | "neo4j" | "standard" | [] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | TRUE | TRUE | [] | | "sci-fi" | "standard" | ["library.sci-fi"] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | | "system" | "system" | [] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
有关此命令返回的列的完整描述,以及如何按特定列对结果进行排序,请参阅管理数据库。
要在复合数据库中创建数据库别名,请将复合数据库用作别名的命名空间。有关在复合数据库中创建别名的信息,请参阅管理复合数据库中的别名。
创建复合数据库时使用 `IF NOT EXISTS` 或 `OR REPLACE`
`CREATE COMPOSITE DATABASE` 命令是可选幂等的,默认行为是如果数据库已存在则会报错。有两种方法可以规避此行为。
首先,在命令后附加 `IF NOT EXISTS` 可确保如果数据库已存在,则不会返回错误且不执行任何操作。
CREATE COMPOSITE DATABASE inventory IF NOT EXISTS
这将不会创建新的复合数据库,因为名为 `inventory` 的复合数据库已经存在。
其次,向命令添加 `OR REPLACE` 将导致任何现有数据库被删除并创建一个新数据库。
CREATE OR REPLACE COMPOSITE DATABASE inventory
这等同于运行 `DROP DATABASE inventory IF EXISTS`,然后运行 `CREATE COMPOSITE DATABASE inventory`。
`IF NOT EXISTS` 和 `OR REPLACE` 的行为适用于标准数据库和复合数据库(例如,复合数据库可以替换标准数据库或另一个复合数据库)。
这些命令中的 `IF NOT EXISTS` 和 `OR REPLACE` 部分不能一起使用。 |
停止复合数据库
可以使用 `STOP DATABASE` 命令停止数据库。
STOP DATABASE inventory
标准数据库和复合数据库都可以使用此命令停止。 |
可以使用 `SHOW DATABASE name` 命令查看已停止数据库的状态。
SHOW DATABASE inventory YIELD name, requestedStatus, currentStatus
+-----------------------------------------------+ | name | requestedStatus | currentStatus | +-----------------------------------------------+ | "inventory" | "offline" | "offline" | +-----------------------------------------------+
启动复合数据库
可以使用 `START DATABASE` 命令启动数据库。
START DATABASE inventory
标准数据库和复合数据库都可以使用此命令启动。 |
可以使用 `SHOW DATABASE name` 命令查看已启动数据库的状态。
SHOW DATABASE inventory YIELD name, requestedStatus, currentStatus
+-----------------------------------------------+ | name | requestedStatus | currentStatus | +-----------------------------------------------+ | "inventory" | "online" | "online" | +-----------------------------------------------+