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