多数据库
本节解释了如何将驱动程序与多数据库一起使用。
随着 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 社区版不支持除 `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();
} );
}