管理标准数据库的数据库别名AuraDB Business CriticalAuraDB Virtual Dedicated CloudEnterprise Edition
数据库别名有两种:本地和远程。本地数据库别名只能指向同一 DBMS 中的数据库。远程数据库别名可以指向另一个 Neo4j DBMS 中的数据库。当对数据库别名运行查询时,它将被重定向到目标数据库。用户的“主数据库”可以设置为别名,在使用时它将解析为目标数据库。
此页面介绍了如何管理标准数据库的数据库别名。本地和远程数据库别名也可以作为 复合数据库的一部分创建。有关更多信息,请参见 在复合数据库中管理数据库别名。
本地数据库别名可以在所有其他 Cypher 命令中代替目标数据库使用。请注意,本地数据库别名将在执行命令时解析。权限是在数据库上定义的,而不是在本地数据库别名上定义的。
远程数据库别名可用于连接到远程 Neo4j DBMS 的数据库、USE
子句、设置用户的“主数据库”以及定义对远程数据库的访问权限。远程数据库别名需要配置才能安全地连接到远程目标,这在 连接远程数据库中进行了描述。无法通过远程数据库别名模拟远程数据库上的用户或执行对远程数据库的管理命令。
可以使用针对system
数据库执行的一组 Cypher 管理命令来创建和管理数据库别名。所需权限在 DBMS ALIAS MANAGEMENT 权限中进行了描述。当通过 Bolt 连接到 DBMS 时,管理命令会自动路由到system
数据库。
如果事务修改了数据库别名,则同时针对该别名执行的其他事务可能会中止并回滚以确保安全。这可以防止出现对同一别名的多个目标数据库执行事务等问题。 |
列出数据库别名
可以使用 SHOW ALIASES FOR DATABASE
查看可用的数据库别名。所需权限在 DBMS 别名管理权限 中描述。
SHOW ALIASES FOR DATABASE
将生成一个包含以下列的数据库别名表
列 | 描述 | 类型 |
---|---|---|
|
数据库别名的完全限定名。 默认输出 |
|
|
此别名所属的复合数据库的名称,如果别名不属于复合数据库,则为 |
|
|
目标数据库的名称。 默认输出 此列根据用户的
如果用户没有被授予目标数据库的 |
|
|
数据库的位置,可以是 |
|
|
目标位置,如果目标是本地的,则为 |
|
|
连接到远程数据库的用户,如果目标数据库是本地的,则为 |
|
|
连接到远程数据库的驱动程序选项,如果目标数据库是本地的,则为 |
|
|
在数据库别名上设置的任何属性。 |
|
可以使用命令 SHOW ALIASES FOR DATABASE YIELD *
显示特定数据库别名的详细信息。当提供 YIELD *
子句时,将返回完整的列集。
显示数据库的所有别名
可以使用命令 SHOW ALIASES FOR DATABASE
显示所有可用数据库别名的摘要。此命令将显示标准数据库和复合数据库的数据库别名。
SHOW ALIASES FOR DATABASE
+--------------------------------------------------------------------------------------------+ | name | composite | database | location | url | user | +--------------------------------------------------------------------------------------------+ | "films" | NULL | "movies" | "local" | NULL | NULL | | "motion pictures" | NULL | "movies" | "local" | NULL | NULL | | "movie scripts" | NULL | "scripts" | "remote" | "neo4j+s://location:7687" | "alice" | +--------------------------------------------------------------------------------------------+
显示数据库的特定别名
要仅列出单个数据库别名,SHOW ALIASES
命令需要一个别名;
SHOW ALIAS films FOR DATABASES
+---------------------------------------------------------+ | name | composite | database | location | url | user | +---------------------------------------------------------+ | "films" | NULL | "movies" | "local" | NULL | NULL | +---------------------------------------------------------+
显示数据库的详细别名信息
SHOW ALIASES FOR DATABASE YIELD *
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | composite | database | location | url | user | driver | properties | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "films" | NULL | "movies" | "local" | NULL | NULL | NULL | {} | | "motion pictures" | NULL | "movies" | "local" | NULL | NULL | NULL | {namecontainsspace: TRUE} | | "movie scripts" | NULL | "scripts" | "remote" | "neo4j+s://location:7687" | "alice" | {connection_pool_idle_test: PT2M, connection_pool_max_size: 10, logging_level: "INFO", ssl_enforced: TRUE, connection_pool_acquisition_timeout: PT1M, connection_timeout: PT5S, connection_max_lifetime: PT1H} | {} | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
显示数据库的别名 count
可以使用 count()
聚合以及 YIELD
和 RETURN
查看数据库别名的数量。
SHOW ALIASES FOR DATABASE YIELD *
RETURN count(*) as count
+-------+ | count | +-------+ | 3 | +-------+
显示数据库的已过滤别名信息
可以使用 YIELD
、ORDER BY
和 WHERE
来过滤和排序结果。
SHOW ALIASES FOR DATABASE YIELD name, url, database
ORDER BY database
WHERE name CONTAINS 'e'
在本例中
-
使用
YIELD
子句减少了返回的列数。 -
返回列的顺序已更改。
-
结果使用
ORDER BY
按database
列排序。 -
结果已过滤,仅显示包含
'e'
的数据库别名。
还可以使用 SKIP
和 LIMIT
对结果进行分页。
+-----------------------------------------------------------+ | name | url | database | +-----------------------------------------------------------+ | "motion pictures" | NULL | "movies" | | "movie scripts" | "neo4j+s://location:7687" | "scripts" | +-----------------------------------------------------------+
创建数据库别名
可以使用 CREATE ALIAS
创建数据库别名。该命令支持创建本地和远程数据库别名。有关作为复合数据库一部分的本地和远程数据库别名的更多信息,请参阅 在复合数据库中创建数据库别名。
所需权限在 DBMS 别名管理权限 中描述。
数据库别名必须符合 别名名称 部分中指定的规则。 |
为本地数据库创建数据库别名
本地数据库别名将目标指向同一 DBMS 中的数据库。
CREATE ALIAS `northwind` FOR DATABASE `northwind-graph-2021`
创建本地数据库别名后,它将显示在命令 SHOW DATABASES
提供的 aliases
列中,以及 SHOW ALIASES FOR DATABASE
命令中。
SHOW DATABASE `northwind`
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | "northwind-graph-2021" | "standard" | ["northwind"] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] | +-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
SHOW ALIAS `northwind` FOR DATABASE
+---------------------------------------------------------------------------+ | name | composite | database | location | url | user | +---------------------------------------------------------------------------+ | "northwind" | NULL | "northwind-graph-2021" | "local" | NULL | NULL | +---------------------------------------------------------------------------+
在创建数据库别名时使用 IF EXISTS
或 OR REPLACE
CREATE ALIAS
命令可以选择性地是幂等的,其默认行为是在数据库别名已存在的情况下失败并报错。有两种方法可以规避此行为。
首先,将 IF NOT EXISTS
附加到命令确保在数据库别名已存在的情况下不返回任何错误,也不会发生任何操作。
CREATE ALIAS `northwind` IF NOT EXISTS FOR DATABASE `northwind-graph-2021`
其次,将 OR REPLACE
添加到命令会导致任何现有的数据库被删除并创建一个新的数据库。
CREATE OR REPLACE ALIAS `northwind` FOR DATABASE `northwind-graph-2021`
这等效于运行 DROP ALIAS `northwind` IF EXISTS FOR DATABASE
后跟 CREATE ALIAS `northwind` FOR DATABASE
northwind-graph-2021
++`。
这些命令的 IF NOT EXISTS
和 OR REPLACE
部分不能一起使用。
为本地数据库别名设置属性
本地数据库别名也可以被赋予属性。然后,这些属性可以在查询中与 graph.propertiesByName()
函数 一起使用。
查询CREATE ALIAS `northwind-2022`
FOR DATABASE `northwind-graph-2022`
PROPERTIES { newestNorthwind: true, index: 3 }
然后,这些属性将显示在 SHOW ALIASES FOR DATABASE YIELD …
命令中。
查询SHOW ALIAS `northwind-2022` FOR DATABASE YIELD name, properties
结果
+------------------------------------------------------+
| name | properties |
+------------------------------------------------------+
| "northwind-2022" | {index: 3, newestnorthwind: TRUE} |
+------------------------------------------------------+
为远程数据库创建数据库别名
数据库别名可以通过提供 URL 和远程 Neo4j DBMS 上用户的凭据来将目标指向远程数据库。有关必要配置,请参阅 配置远程数据库别名。
与本地数据库别名一样,创建远程数据库别名也允许 IF NOT EXISTS
和 OR REPLACE
子句。两者都检查任何远程或本地数据库别名。
查询CREATE ALIAS `remote-northwind` FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
USER alice
PASSWORD 'example_secret'
创建指向远程数据库的数据库别名后,可以使用 SHOW ALIASES FOR DATABASE
命令查看其详细信息。
查询SHOW ALIAS `remote-northwind`
FOR DATABASE
结果
+----------------------------------------------------------------------------------------------------------+
| name | composite | database | location | url | user |
+----------------------------------------------------------------------------------------------------------+
| "remote-northwind" | NULL | "northwind-graph-2020" | "remote" | "neo4j+s://location:7687" | "alice" |
+----------------------------------------------------------------------------------------------------------+
使用驱动程序设置创建远程数据库别名
可以按数据库别名覆盖默认驱动程序设置,这些设置用于连接到远程数据库。
以下是允许用于远程数据库别名的驱动程序设置列表
-
ssl_enforced (默认值:true
) — 远程数据库别名驱动程序的 SSL 通过目标 URL 方案进行配置。如果 ssl_enforced
设置为 true,则强制使用安全的 URL 方案。这将在执行命令时进行验证。
-
connection_timeout — 有关详细信息,请参阅 dbms.routing.driver.connection.connect_timeout
-
connection_max_lifetime — 有关详细信息,请参阅 dbms.routing.driver.connection.max_lifetime。
-
connection_pool_acquisition_timeout — 有关详细信息,请参阅 dbms.routing.driver.connection_pool_acquisition_timeout。
-
connection_pool_idle_test — 有关详细信息,请参阅 dbms.routing.driver.connection_pool_idle_test。
-
connection_pool_max_size — 有关详细信息,请参阅 dbms.routing.driver.connection.pool.max_size。
-
logging_level (有关详细信息,请参阅 dbms.routing.driver.logging.level)
驱动程序设置是在 CREATE ALIAS
或 ALTER ALIAS
命令的 DRIVER
子句中设置的。例如,以下查询使用驱动程序设置 connection_timeout
和 connection_pool_max_size
创建一个远程数据库别名,用于连接到远程数据库 northwind-graph-2020
查询CREATE ALIAS `remote-with-driver-settings` FOR DATABASE `northwind-graph-2020`
AT "neo4j+s://location:7687"
USER alice
PASSWORD 'example_secret'
DRIVER {
connection_timeout: duration({minutes: 1}),
connection_pool_max_size: 10
}
创建指向远程数据库的数据库别名后,可以使用 SHOW ALIASES FOR DATABASE
命令查看其详细信息。
查询SHOW ALIAS `remote-with-driver-settings` FOR DATABASE YIELD *
结果
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | composite | database | location | url | user | driver | properties |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "remote-with-driver-settings" | NULL | "northwind-graph-2020" | "remote" | "neo4j+s://location:7687" | "alice" | {connection_pool_max_size: 10, connection_timeout: PT1M} | {} |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
为远程数据库别名设置属性
与本地数据库别名一样,远程数据库别名也可以被赋予属性。然后,这些属性可以在查询中与 graph.propertiesByName()
函数 一起使用。
查询CREATE ALIAS `remote-northwind-2021` FOR DATABASE `northwind-graph-2021` AT 'neo4j+s://location:7687'
USER alice PASSWORD 'password'
PROPERTIES { newestNorthwind: false, index: 6 }
然后,这些属性将显示在 SHOW ALIASES FOR DATABASE YIELD …
命令中。
查询SHOW ALIAS `remote-northwind-2021` FOR DATABASE YIELD name, properties
结果
+--------------------------------------------------------------+
| name | properties |
+--------------------------------------------------------------+
| "remote-northwind-2021" | {index: 6, newestnorthwind: FALSE} |
+--------------------------------------------------------------+
修改数据库别名
可以使用 ALTER ALIAS
修改数据库别名,以更改其数据库目标、属性、URL、用户凭据或驱动程序设置。所需权限在 DBMS 别名管理权限 中描述。仅会更改使用的子句。
本地数据库别名不能更改为远程别名,反之亦然。
修改本地数据库别名
修改本地数据库别名目标的示例。
查询ALTER ALIAS `northwind`
SET DATABASE TARGET `northwind-graph-2021`
修改本地数据库别名后,它将显示在命令 SHOW DATABASES
提供的目标数据库的 aliases
列中。
查询SHOW DATABASE `northwind-graph-2021`
结果
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "northwind-graph-2021" | "standard" | ["northwind"] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
修改远程数据库别名
修改远程数据库别名目标的示例。
查询ALTER ALIAS `remote-northwind` SET DATABASE
TARGET `northwind-graph-2020` AT "neo4j+s://other-location:7687"
修改远程数据库别名的远程凭据和驱动程序设置
修改远程数据库别名凭据和驱动程序设置的示例。
查询ALTER ALIAS `remote-with-driver-settings` SET DATABASE
USER bob
PASSWORD 'new_example_secret'
DRIVER {
connection_timeout: duration({ minutes: 1}),
logging_level: 'debug'
}
所有驱动程序设置都将被新的设置替换。在本例中,由于没有重复驱动程序设置 connection_pool_max_size
,因此该值将被删除并回退到默认值。
从远程数据库别名中删除自定义驱动程序设置
修改远程数据库别名以删除所有自定义驱动程序设置的示例。
查询ALTER ALIAS `movie scripts` SET DATABASE
DRIVER {}
修改本地和远程数据库别名的属性
修改本地和远程数据库别名属性的示例。
查询ALTER ALIAS `motion pictures` SET DATABASE PROPERTIES { nameContainsSpace: true, moreInfo: 'no, not really' }
查询ALTER ALIAS `movie scripts` SET DATABASE PROPERTIES { nameContainsSpace: true }
然后,更新后的属性可以在查询中与 graph.propertiesByName()
函数 一起使用。
删除数据库别名
可以使用 DROP ALIAS
命令删除本地和远程数据库别名。所需权限在 DBMS 别名管理权限 中描述。
删除本地数据库别名
删除本地数据库别名。
查询DROP ALIAS `northwind` FOR DATABASE
当数据库别名被删除后,它将不再显示在SHOW DATABASES
命令提供的aliases
列中。
查询SHOW DATABASE `northwind-graph-2021`
结果
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| name | type | aliases | access | address | role | writer | requestedStatus | currentStatus | statusMessage | default | home | constituents |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| "northwind-graph-2021" | "standard" | [] | "read-write" | "localhost:7687" | "primary" | TRUE | "online" | "online" | "" | FALSE | FALSE | [] |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
删除远程数据库别名
删除远程数据库别名。
查询DROP ALIAS `remote-northwind` FOR DATABASE
当数据库别名被删除后,它将不再显示在SHOW ALIASES FOR DATABASE
命令中。
查询SHOW ALIASES `remote-northwind` FOR DATABASE
结果
+-----------------------------------------------------+
| name | composite | database | location | url | user |
+-----------------------------------------------------+
+-----------------------------------------------------+