高级连接信息

连接 URI

驱动程序支持连接到以下格式的 URI

<SCHEME>://<HOST>[:<PORT>[?policy=<POLICY-NAME>]]
  • <SCHEME> 可以是 neo4jneo4j+sneo4j+sscboltbolt+sbolt+ssc 之一。

  • <HOST> 是 Neo4j 服务器所在的主机名。

  • <PORT> 是可选的,表示 Bolt 协议可用的端口。

  • <POLICY-NAME> 是可选的服务器策略名称。 服务器策略需要在使用前设置。

驱动程序不支持连接到嵌套路径,例如 example.com/neo4j/。必须能够从域根访问服务器。

连接协议和安全性

驱动程序和服务器之间的通信由 Bolt 介导。服务器 URI 的方案确定连接是否加密,以及如果加密,接受哪种类型的证书。

URL 方案 加密 注释

neo4j

本地设置的默认值

neo4j+s

(仅限 CA 签名的证书)

Aura 的默认值

neo4j+ssc

(CA 和自签名证书)

无论实例是正确的集群环境还是单机环境,驱动程序在成功连接后都会从服务器接收路由表。驱动程序的路由行为与 Neo4j 的集群协同工作,将读/写事务定向到适当的集群成员。如果要定位特定机器,请改用 boltbolt+sbolt+ssc URI 方案。

要使用的连接方案不是您的选择,而是由服务器要求决定的。您必须提前知道正确的服务器方案,因为在连接之前不会公开任何元数据。如果您不确定,请咨询数据库管理员。

身份验证方法

基本身份验证

基本身份验证方案依赖于传统的用户名和密码。这些可以是您本地安装的凭据,也可以是 Aura 实例提供的凭据。

driver, err := neo4j.NewDriverWithContext(
    dbUri,
    neo4j.BasicAuth(dbUser, dbPassword, ""))

基本身份验证方案也可用于针对 LDAP 服务器进行身份验证(仅限企业版)。

Kerberos 身份验证

Kerberos 身份验证方案需要一个 base64 编码的票证。只有在服务器安装了 Kerberos 附加组件 时才能使用它。

driver, err := neo4j.NewDriverWithContext(dbUri, neo4j.KerberosAuth(ticket))

Bearer 身份验证

Bearer 身份验证方案需要一个由身份提供者通过 Neo4j 的 单点登录功能提供的 base64 编码的令牌。

driver, err := neo4j.NewDriverWithContext(dbUri, neo4j.BearerAuth(token))
Bearer 身份验证方案需要 在服务器上配置单点登录。配置完成后,客户端可以通过 发现 API发现 Neo4j 的配置。

自定义身份验证

使用函数 CustomAuth登录到具有自定义身份验证方案的服务器。

无身份验证

使用函数 NoAuth访问已禁用身份验证的服务器。

driver, err := neo4j.NewDriverWithContext(dbUri, neo4j.NoAuth())

自定义地址解析器

在创建 DriverWithContext 对象时,您可以指定一个解析器函数来解析驱动程序初始化时使用的连接地址。请注意,驱动程序在路由表中接收到的地址不会使用自定义解析器进行解析。您的解析器函数将使用 ServerAddress 对象调用,并应返回 ServerAddress 对象列表。

端口 9999example.com 的连接解析为端口 7687 上的 localhost
// import "github.com/neo4j/neo4j-go-driver/v5/neo4j/config"

driver, err := neo4j.NewDriverWithContext(
    "neo4j://example.com:9999", neo4j.BasicAuth(dbUser, dbPassword, ""),
    func(conf *config.Config) {
        conf.AddressResolver = func(address config.ServerAddress) []config.ServerAddress {
            return []config.ServerAddress{
                neo4j.NewServerAddress("localhost", "7687"),
            }
        }
})
defer driver.Close(ctx)

更多连接参数

您可以在 API 文档 → config 包中找到所有 DriverWithContext 配置参数。

词汇表

LTS

长期支持版本是保证支持一定年限的版本。Neo4j 4.4 是 LTS 版本,Neo4j 5 也将有一个 LTS 版本。

Aura

Aura 是 Neo4j 的完全托管的云服务。它提供免费和付费计划。

Cypher

Cypher 是 Neo4j 的图查询语言,可用于从数据库中检索数据。它类似于 SQL,但用于图。

APOC

Awesome Procedures On Cypher (APOC) 是一个包含(许多)函数的库,这些函数本身无法在 Cypher 中轻松表达。

Bolt

Bolt 是用于 Neo4j 实例和驱动程序之间交互的协议。它默认监听端口 7687。

ACID

原子性、一致性、隔离性和持久性 (ACID) 是保证数据库事务可靠处理的特性。符合 ACID 的 DBMS 确保数据库中的数据在发生故障时仍然准确且一致。

最终一致性

如果数据库保证所有集群成员将在某个时间点存储数据的最新版本,则该数据库最终一致。

因果一致性

如果读和写查询在每个集群成员中以相同的顺序显示,则数据库因果一致。这比最终一致性更强。

NULL

空标记不是类型,而是值不存在的占位符。有关更多信息,请参阅 Cypher → 使用null

事务

事务是工作单元,可以全部提交或在发生故障时回滚。例如银行转账:它涉及多个步骤,但它们必须全部成功或被撤消,以避免从一个帐户中扣除资金但未添加到另一个帐户中。

背压

背压是反对数据流的力。它确保客户端不会因数据速度过快而无法处理而不堪重负。

事务函数

事务函数是 ExecuteReadExecuteWrite 调用执行的回调函数。如果服务器发生故障,驱动程序会自动重新执行回调函数。

DriverWithContext

DriverWithContext 对象包含建立与 Neo4j 数据库连接所需的详细信息。