概念
复合数据库是 Neo4j 5 中引入的一种特殊类型的数据库。它取代了 Neo4j 4.x 中之前的 Fabric 实现。
在 Neo4j 5 中,fabric 作为概念得到了扩展,现在指的是统一系统的架构设计,该系统为本地或分布式图数据提供单个访问点。
复合数据库是使用单个 Cypher 查询访问此分区数据或图的方法。
复合数据库**不独立存储数据**。它们包含指向构成 fabric 设置的本地或远程数据库(即所谓的**组成部分**)的数据库别名。本地数据库别名指向同一 DBMS 中的数据库,而远程数据库别名指向另一个 Neo4j DBMS 中的数据库。有关更多信息,请参阅管理复合数据库中的数据库别名。
复合数据库使用 Cypher 管理命令进行管理。因此,您可以像在 Neo4j 独立和集群部署中创建任何其他数据库一样创建它们,而无需部署专用代理服务器(如 Neo4j 4 中的 Fabric)。有关如何创建复合数据库并向其添加数据库别名的详细示例,请参阅设置和查询复合数据库。
复合数据库无法保证来自不同主要版本的 Neo4j 的组成部分之间的兼容性。因此,所有组成部分都应属于相同的主要版本。如果引入了新功能,则其可用性将限于所有组成部分可用功能的交集。
下表总结了 Neo4j 5 中的复合数据库和 Neo4j 4 中的 Fabric 之间的异同点
复合数据库 (Neo4j 5) | Fabric (Neo4j 4) | |
---|---|---|
数据访问 |
提供对其他数据库(本地或远程)上的图的访问。 |
|
数据存储 |
不独立存储数据。 |
|
部署 |
支持独立和集群部署。 |
支持独立和集群部署。但是,在集群部署中,fabric 代理必须部署在专用机器上。 |
配置 |
使用 Cypher 命令进行管理。复合数据库使用 |
通过配置设置进行管理。承载相同fabric数据库的 Neo4j DBMS 必须具有相同的配置设置。配置必须始终保持同步。 |
现有数据库的分片 |
借助 |
|
安全凭证 |
复合数据库使用与数据库别名相同的用户凭证。 |
承载相同 Fabric 虚拟数据库的 Neo4j DBMS 必须具有相同的用户凭证。对 Fabric 中机器上的密码进行的任何更改都必须保持同步并应用于所有属于 Fabric 的 Neo4j DBMS。 |
数据库管理 |
不支持数据库管理。任何数据库管理命令、索引和约束管理命令或用户和安全管理命令都必须直接发送到 DBMS 和数据库,而不是复合数据库。 |
|
事务 |
仅允许读取多个图或读取多个图并写入单个图的查询的事务。 |
|
Neo4j 嵌入式 |
当 Neo4j 用作 Java 应用程序中的嵌入式数据库时不可用。它仅可在典型的客户端/服务器模式下使用,此时用户通过 Bolt 或 HTTP 协议从其客户端应用程序或工具连接到 Neo4j DBMS。 |
使用复合数据库时,需要了解的主要概念是
- 数据联合
-
数据联合是指数据位于两个不相交的图中,且具有不同的标签和关系类型。例如,您拥有关于用户及其位置的数据,以及关于用户在不同论坛上发布帖子的数据,并且您希望将它们一起查询。
- 数据分片
-
数据分片是指您有两个图共享相同的模型(相同的标签和关系类型),但包含不同的数据。例如,您可以在单独的服务器上部署分片,从而分散资源和存储的负载。或者,您可以在不同的位置部署分片,以便能够独立地管理它们或分散网络流量的负载。可以使用
neo4j-admin database copy
命令对现有数据库进行分片。例如,请参阅 使用 copy 命令进行数据分片。 - 跨图连接数据
-
由于关系不能跨图存在,因此要查询您的数据,您必须使用代理节点建模模式联合图,其中具有特定标签的节点必须存在于两个联合域中。
在一个图中,具有该特定标签的节点包含与该标签相关的所有数据,而在另一个图中,相同的标签与仅包含
<node>ID
属性的代理节点相关联。<node>ID
属性允许您在此联合中跨图链接数据。
有关设置和使用具有联合和分片数据的复合数据库的分步教程,请参阅 设置和使用复合数据库。 |