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