多数据库
本节说明如何将驱动程序与多个数据库一起使用。
随着 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();
} );
}