高级连接信息

连接 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 实例提供的凭据。

const driver = neo4j.driver(URI, neo4j.auth.basic(USER, PASSWORD))

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

Kerberos 身份验证

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

const driver = neo4j.driver(URI, neo4j.auth.kerberos(ticket))

Bearer 身份验证

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

const driver = neo4j.driver(URI, neo4j.auth.bearer(token))
Bearer 身份验证方案需要 在服务器上配置单点登录。配置后,客户端可以通过 发现 API 发现 Neo4j 的配置。

自定义身份验证

如果服务器配备了自定义身份验证方案,请使用 neo4j.auth.custom

const driver = neo4j.driver(
  URI,
  neo4j.auth.custom(principal, credentials, realm, scheme, parameters)
)

无身份验证

如果服务器上禁用了身份验证,则可以完全省略身份验证参数。

自定义地址解析器

创建 Driver 对象时,可以指定一个 解析器 函数来解析驱动程序初始化时使用的连接地址。请注意,驱动程序在路由表中接收到的地址不会使用自定义解析器解析。

连接到 example.com 端口 9999 解析为 localhost 端口 7687
let URI = 'neo4j://example.com:9999'
let addresses = [
  'localhost:7687'
]
let driver = neo4j.driver(URI, neo4j.auth.basic(USER, PASSWORD), {
  resolver: address => addresses
})

其他连接参数

你可以在 API 文档 中找到所有 Driver 配置参数。

术语表

LTS

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

Aura

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

Cypher

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

APOC

Cypher 上的强大过程 (APOC) 是一个包含(许多)函数的库,这些函数无法轻松地在 Cypher 本身中表达。

Bolt

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

ACID

原子性、一致性、隔离性、持久性 (ACID) 是保证数据库事务可靠处理的属性。符合 ACID 的 DBMS 确保数据库中的数据在出现故障的情况下仍然准确且一致。

最终一致性

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

因果一致性

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

NULL

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

事务

事务是工作单元,可以 全部提交 也可以在失败时 回滚。一个例子是银行转账:它涉及多个步骤,但它们必须 全部 成功或被恢复,以避免从一个帐户中扣除资金,但没有添加到另一个帐户。

背压

背压是一种反对数据流动的力量。它确保客户端不会被它无法处理的速度更快的数据所淹没。

事务函数

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

驱动程序

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