多数据库
本节解释如何在多数据库环境中使用驱动程序。
随着 4.0 引入多数据库功能,您现在可以指定要使用的数据库。在构建会话时,可以在会话配置中指定会话关联的数据库。随后,查询将在该数据库上执行直至会话结束。若未指定数据库,则会话将连接到服务器配置中规定的默认数据库,参见 操作手册 → 默认数据库。在使用 4.0 驱动连接 4.0 Neo4j 服务器时,建议显式指定每个会话的数据库。
示例 1:为会话选择数据库。
import org.neo4j.driver.Driver;
import org.neo4j.driver.Session;
import org.neo4j.driver.SessionConfig;
...
try ( Session session = driver.session( SessionConfig.forDatabase( "neo4j" ) ) ) {...}
|
Neo4j Community Edition 不支持除 `system` 和默认数据库之外的多数据库。 |
欲了解更多关于在 Neo4j 中管理多数据库的信息,请参见 操作手册 → `system` 数据库 和 Cypher® 手册 → 管理。
书签
|
书签通常由驱动程序在内部处理。应用程序在链式会话时会直接使用书签。 |
在多数据库上下文中,书签只能在同一数据库的会话之间传递。因为在 Neo4j 4.x 中,书签(以及/或事务)不能跨多个数据库传播,除非它们是由 `system` 数据库生成的。
示例 2:在另一个数据库中使用系统书签,以确保系统状态已更新。
import org.neo4j.driver.Bookmark;
import org.neo4j.driver.Driver;
import org.neo4j.driver.Result;
import org.neo4j.driver.Session;
import org.neo4j.driver.SessionConfig;
...
Bookmark sysBookmark;
try ( Session session = driver.session( SessionConfig.forDatabase( "system" ) ) )
{
session.writeTransaction( tx -> {
Result result = tx.run( "CREATE database foo" );
return result.consume();
} );
sysBookmark = session.lastBookmark();
}
try ( Session session = driver.session( SessionConfig.builder().withDatabase( "foo" ).withBookmarks( sysBookmark ).build() ) )
{
session.writeTransaction( tx -> {
Result result = tx.run( "CREATE (n)" );
return result.consume();
} );
}