查询路由决策企业版
查询路由是决定应使用哪个 Cypher 执行器(数据库)以及在哪个物理位置执行查询的过程。每个通过 Bolt 协议从驱动程序到达 Neo4j 服务器的查询,都会经历此处描述的过程。
路由决策树
在执行查询之前,会在查询路由阶段做出以下决策
- 第 1 步:确定目标数据库名称
-
选择以下列表中第一个有值的项
-
-
请注意,管理命令隐式使用
USE system。
-
-
- 第 2 步:重用打开的事务
-
-
如果已存在指向目标数据库(本地或远程)的打开事务,则继续执行第 6 步。
-
如果不存在,则继续执行第 3 步。
-
- 第 3 步:确定目标数据库的类型(执行上下文类型)
-
-
如果目标数据库是当前 DBMS 中的数据库,则上下文类型为内部 (Internal)。
-
如果目标数据库是组合数据库 (Composite database),则上下文类型为组合 (Composite)。
这也允许查询针对多个数据库。
-
如果目标数据库是远程别名 (Remote Alias),则上下文类型为外部 (External)。
-
- 第 4 步:确定执行位置
-
-
如果上下文类型为内部 (Internal)
-
如果上下文类型为组合 (Composite),则位置为本地 (Local)(对于查询的此部分)。
-
如果上下文类型为外部 (External),则位置为远程 (Remote)(使用配置中提供的URI 和数据库)。
-
- 第 5 步:打开事务
-
-
如果位置为本地 (Local),则打开指向此服务器上数据库的事务。
-
如果位置为远程 (Remote),则使用第 4 步中确定的 URI 打开指向数据库的驱动程序事务。
-
- 第 6 步:执行查询
-
-
在打开的事务中执行查询。
-