概念
复合数据库是一种特殊类型的数据库。复合数据库是使用单个 Cypher 查询访问分区数据或图的方法。
复合数据库不独立存储数据。它们包含指向本地或远程数据库(即所谓的组成部分)的数据库别名。本地数据库别名指向同一 DBMS 内的数据库,而远程数据库别名指向来自另一个 Neo4j DBMS 的数据库。有关更多信息,请参阅管理复合数据库中的数据库别名。
复合数据库使用 Cypher 管理命令进行管理。有关如何创建复合数据库并向其添加数据库别名的详细示例,请参阅设置和查询复合数据库。
复合数据库无法保证不同 Neo4j 版本组成的兼容性。没有重大变更的版本组成应该可以正常工作,除了新添加的功能。如果引入了新功能,其可用性将限于复合数据库所定义的 DBMS 上可用功能的交集,以及其所有组成部分的功能交集。
复合数据库具有以下特点:
-
提供对其他数据库(本地或远程)中图的访问。
-
不独立存储数据。
-
可部署在独立和集群部署中。
-
使用 Cypher 命令进行管理,例如
CREATE COMPOSITE DATABASE
和CREATE ALIAS
。 -
你可以借助
neo4j-admin copy
命令对现有数据库进行分片。有关详细信息,请参阅使用 copy 命令分片数据。 -
对于本地组成部分,使用现有用户;对于远程组成部分,使用远程别名定义的凭据。
-
不支持权限、索引和约束管理命令。这些必须在各自 DBMS 的组成目标数据库上定义。
-
仅允许包含从多个图读取查询的事务,或从多个图读取并写入单个图的事务。
-
不支持嵌入在 Java 应用程序中的 Neo4j。复合数据库只能在典型的客户端/服务器模式下使用,即用户通过 Bolt 或 HTTP 协议从其客户端应用程序或工具连接到 Neo4j DBMS 时。
使用复合数据库时需要理解的主要概念有:
- 数据联邦
-
数据联邦是指您的数据位于两个不相交的图中,具有不同的标签和关系类型。例如,您拥有关于用户及其位置的数据,以及用户在不同论坛上帖子数据的,并且您希望将它们一起查询。
- 数据分片
-
数据分片是指您拥有两个图,它们共享相同的模型(相同的标签和关系类型),但包含不同的数据。例如,您可以在单独的服务器上部署分片,从而分担资源和存储的负载。或者,您可以将分片部署在不同的位置,以便独立管理它们或分担网络流量负载。借助
neo4j-admin database copy
命令可以对现有数据库进行分片。有关示例,请参阅使用 copy 命令分片数据。 - 跨图连接数据
-
由于关系不能跨图,因此要查询数据,必须使用代理节点建模模式来联邦化图,即具有特定标签的节点必须存在于两个联邦域中。
在一个图中,具有特定标签的节点包含与该标签相关的所有数据,而在另一个图中,相同的标签与一个仅包含
<node>ID
属性的代理节点相关联。<node>ID
属性允许您在此联邦中跨图链接数据。

有关如何设置和使用包含联邦和分片数据的复合数据库的分步教程,请参阅教程 → 设置和使用复合数据库。 |