Neo4j 配置#
支持的 URI#
liquibase-neo4j
仅接受 JDBC 格式的 URI。
仅支持通过 Bolt 协议变体进行的连接。该扩展不支持通过 HTTP 或嵌入式方式进行的连接。
- ✅ 支持
jdbc:neo4j:bolt://host:port
- ✅ 支持
jdbc:neo4j:bolt+s://host:port
- ✅ 支持
jdbc:neo4j:bolt+ssc://host:port
- ✅ 支持
jdbc:neo4j:neo4j://host:port
- ✅ 支持
jdbc:neo4j:neo4j+s://host:port
- ✅ 支持
jdbc:neo4j:neo4j+ssc://host:port
- ❌ 不支持
jdbc:neo4j:http://host:port
- ❌ 不支持
jdbc:neo4j:https://host:port
- ❌ 不支持
jdbc:neo4j:file:///path/to/neo4j
在 Neo4j 驱动程序手册中阅读更多关于每个 URI 方案的含义。
JDBC 连接性#
对于 4.18.0.1 及更早版本,Neo4j 扩展依赖于第三方 JDBC 连接器。此连接器的配置参数可在此链接中找到。
从 4.19.0 版本开始,该扩展定义了其自己的内置 JDBC 连接器。
内置连接器更简单,更容易理解,因为 Liquibase 只需要一个连接来执行一次操作,并依赖于一组特定的、有限的 JDBC API。
这个新连接器与第三方连接器有一些关键区别。
内置连接器的序列化和反序列化逻辑更严格。
警告
如果您尝试将第三方连接器与最新版本的扩展一起使用,可能会出现此问题。
由于它是专为 Liquibase 使用而定制的,因此新连接器不会通过标准 JDBC 机制进行注册。
import java.sql.Connection;
import java.sql.DriverManager;
// [...]
Connection connection = DriverManager.getConnection("jdbc:neo4j:neo4j://localhost", "neo4j", "<redacted>");
// this will not work! see below
如果您需要访问 JDBC Connection
实例以编程方式配置 Liquibase,要运行的代码如下所示
import liquibase.ext.neo4j.database.jdbc.Neo4jDriver;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
// [...]
Properties properties = new Properties();
properties.setProperty("user", "neo4j");
properties.setProperty("password", "<redacted>");
Connection connection = new Neo4jDriver().connect(
"jdbc:neo4j:neo4j://localhost",
properties
);
spring.liquibase.driver-class-name=liquibase.ext.neo4j.database.jdbc.Neo4jDriver
spring.liquibase.url=jdbc:neo4j:bolt://localhost
spring.liquibase.user=neo4j
spring.liquibase.password=<redacted>
import javax.sql.DataSource;
import liquibase.ext.neo4j.database.jdbc.Neo4jDriver;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.jdbc.datasource.SimpleDriverDataSource;
// [...]
@LiquibaseDataSource
@Bean
public DataSource liquibaseNeo4jDataSource() {
// SimpleDriverDataSource is a great fit for Liquibase
// since it does not need any connection pooling
// note: you can set properties instead of hardcoding credentials
SimpleDriverDataSource dataSource = new SimpleDriverDataSource(
new Neo4jDriver(),
"jdbc:neo4j:bolt://localhost"
);
dataSource.setUsername("neo4j");
dataSource.setPassword("<redacted>");
return dataSource;
}
配置#
您可以通过配置以下任何设置来微调 JDBC 驱动程序或底层 Java Bolt 驱动程序的行为。
重要提示
第三方 JDBC 连接器支持的某些设置尚未得到支持。如果您碰巧需要其中一个设置,请打开一个问题并说明在您的情况下需要它的原因。
设置 | 描述 | 允许的值 | URL 中? | Properties 中? | 备注 |
---|---|---|---|---|---|
database |
设置数据库名称 | 任何有效的数据库名称 | 是 | 是 | 此设置仅适用于 Neo4j 4+ 服务器 |
nossl |
禁用加密 | - [空] - "true" |
是 | 是 | "false" 无效。 将此设置与 encryption 一起使用或与不兼容的 URI 方案一起使用是未定义的行为。请优先使用相应的 URL 方案( bolt 或 neo4j ) |
encryption |
设置流量是否应该加密 | - [空] - "true" - "false" |
是 | 是 | 将此设置与 nossl 一起使用是未定义的行为。请优先使用相应的 URL 方案 |
trust.strategy |
配置底层驱动程序如何处理证书 | - "TRUST_ALL_CERTIFICATES" - "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" - "TRUST_SYSTEM_CA_SIGNED_CERTIFICATES" |
是 | 是 | "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" 需要设置 "trusted.certificate.file" |
trusted.certificate.file |
自定义证书文件名 | 有效的路径 | 是 | 是 | 仅与 "TRUST_CUSTOM_CA_SIGNED_CERTIFICATES" 信任策略结合使用 |
connection.acquisition.timeout |
设置整个连接池获取连接所需的最长时间 | 任何整数值 | 是 | 是 | 该值以毫秒为单位。 |
connection.liveness.check.timeout |
设置空闲连接在再次获取之前进行活跃性测试的阈值 | 任何整数值 | 是 | 是 | 该值以分钟为单位。 |
connection.timeout |
设置套接字连接超时 | 任何正整数值 | 是 | 是 | |
leaked.sessions.logging |
启用泄露会话日志记录(即未正确关闭的会话,泄露底层连接,导致 OOM) | - [空] - "true" |
是 | 是 | "false" 无效 |
max.connection.lifetime |
设置连接不再被再次获取的阈值 | 任何整数值 | 是 | 是 | 该值以毫秒为单位 |
max.connection.poolsize |
设置底层驱动程序的连接池的最大大小 | 任何整数值 | 是 | 是 | 该扩展现在将驱动程序的默认连接池大小覆盖为 1(自 4.22.0.1 起) |
max.transaction.retry.time |
设置事务可以重试的最大时间 | 任何正整数值 | 是 | 是 | 该值以毫秒为单位。 此设置目前无效,因为专用 JDBC 连接器不依赖于事务函数 |
fetch.size |
设置每次批处理获取的记录数 | -1 或任何严格的正整数值 | 是 | 是 | 此设置仅适用于 Neo4j 4+ 服务器 -1 禁用批处理(并可能导致内存问题,请谨慎使用) |
impersonated.user |
设置要模拟的用户名 | 任何有效的用户名 | 是 | 是 | 此设置仅适用于 Neo4j 4.4+ 服务器 |
driver.logging.console.level |
按名称或数值设置 java.util.logging.Level ,并将驱动程序日志重定向到标准错误输出流 |
任何有效的级别名称或数值 | 是 | 是 | 此设置自包含 4.22.0.1 版本起可用 |
driver.logging.jul.level |
按名称或数值设置内置 Java Util Logging 系统要使用的 java.util.logging.Level |
任何有效的级别名称或数值 | 是 | 是 | 此设置自包含 4.22.0.1 版本起可用 |
driver.logging.slf4j |
将驱动程序日志设置为 SLF4J | - [空] - "true" |
是 | 是 | 此设置自包含 4.22.0.1 版本起可用 |
driver.logging.none |
禁用驱动程序日志记录 | - [空] - "true" |
是 | 是 | 此设置自包含 4.22.0.1 版本起可用 |
重要提示
- 设置名称被规范化为小写(根据英语 locale 大小写规则)。
- 如果设置通过 URL 和 properties 同时表达,则 URL 中指定的设置具有更高的优先级。
- URL 中没有值的设置被视为等同于值为
true
的布尔标志。