查询路由决策
查询路由是决定使用哪个 Cypher 执行器(数据库)以及在哪个物理位置执行查询的过程。每个到达 Neo4j 服务器的查询(通过 Bolt 协议从驱动程序传入)都会经历这里描述的过程。
路由决策树
在执行查询之前,以下是在查询路由阶段做出的决定
- 步骤 1:确定目标数据库的名称
-
选择以下第一个有值的选项
-
-
请注意,管理命令隐式地包含
USE system
。
-
-
- 步骤 2:重用打开的事务
-
-
如果已经存在一个打开的事务连接到目标数据库(本地或远程),则继续执行步骤 6。
-
如果没有,则继续执行步骤 3。
-
- 步骤 3:确定目标数据库的类型(执行上下文类型)
- 步骤 4:确定执行位置
-
-
如果上下文类型为 内部
-
如果上下文类型为 复合,则位置为 本地(对于此查询的这一部分)。
-
如果上下文类型为 外部,则位置为 远程(使用配置中给定的 URI 和数据库)。
-
- 步骤 5:打开事务
-
-
如果位置为 本地,则在本服务器上打开一个连接到该数据库的事务。
-
如果位置为 远程,则使用步骤 4 中确定的 URI 打开一个连接到该数据库的驱动程序事务。
-
- 步骤 6:执行查询
-
-
在打开的事务中执行查询。
-