使用 Neo4j 进行扩展

Neo4j 提供多种扩展选项,可针对特定用例和需求进行定制。您可以混合并搭配这些策略,创建满足您需求的扩展解决方案。

以下是部分受支持的扩展策略

  • 通过 Neo4j 分析集群进行数据复制(读取扩展) — Neo4j 集群是一个支持多数据库的高可用性集群。它是由一组运行 Neo4j 并配置为相互通信的服务器组成的集合。这意味着服务器和数据库是解耦的:服务器为数据库的使用提供计算和存储能力。每个数据库依赖于其自身的集群架构,组织为主要成员(至少 3 个以实现高可用性)和次要成员(用于读取扩展)。扩展性、分配/重新分配、服务弹性、负载均衡和自动路由功能是自动提供的(也可以进行精细控制)。

    Neo4j 分析集群 适用于

    • 横向读取扩展

    • 始终在线、高可用,支持灾难恢复和滚动升级(Neo4j 5.0+)。

    • 从单一副本到同一数据库的多个副本,基础架构灵活。

    • 服务器可以是特定于服务的(分析/事务工作负载、数据科学、报告等)。多区域、多租户、SaaS 风格的扩展性。

  • 通过复合数据库进行数据联合和分片 — 通过使用联邦查询,Neo4j 允许您通过单个查询查询多个 Neo4j 数据库。数据被分区为更小、更易于管理的片段,称为分片 (shards)。每个分片可以存储在单独的服务器上,从而分担资源和存储压力。或者,您可以将分片部署在不同的位置,以便独立管理它们或分担网络流量负载。复合数据库适用于

    • 访问远程数据库,对联合数据执行查询。

    • 对大数据量进行并行子查询执行。

    • 横向,读写扩展。

      分片逻辑采用分片函数、基于时间的最优分片以及其他分片键。其主要优势在于结合了 Neo4j 集群和复合数据库。

  • 通过 Infinigraph 进行数据分布 — 使用分布式图架构来扩展单个系统,而无需对图进行分段。

    属性分片(Infinigraph 的一部分)允许您将附加到节点和关系的属性解耦,并将它们存储在单独的图中。这种架构支持属性数据的独立扩展,从而能够处理大量数据、繁重的查询以及高读取并发。

下表总结了分析集群、复合数据库和属性分片数据库之间的异同

表 1. 分析集群、复合数据库和属性分片数据库之间的异同
分析集群 复合数据库 属性分片数据库

典型用例

高可用性
GDS 专用服务器

联邦数据
基于时间的分片
基于应用程序的访问

具有大量属性的图
非常适合向量和全文搜索

可扩展性

数据量:受限于单台服务器大小
读取并发:在多个实例上横向扩展

数据量:无限制
读取并发:在多个实例上横向扩展
写入并发:根据图模型横向扩展

数据量:最高可达 100TB
读取并发:在多个实例上横向扩展
写入并发:单实例

事务

因果一致性
标准事务管理

并行读事务
单分片写事务
CALL {} IN TRANSACTION 用于多个独立的读/写事务,并进行手动错误处理

所有分片上的并行读写事务
标准事务管理

数据加载

通过 neo4j-admin 和 Aura 导入器进行初始和增量数据导入

手动编排导入
即席、基于项目的分片导入

通过 neo4j-admin 和 Aura 导入器进行初始和增量数据导入

Cypher 查询

单数据库查询。

分片上的并行执行。
单数据库查询必须根据分片规则进行修改。
使用分片函数自动进行分片裁剪。

分片上的并行执行。
单数据库查询按原样运行。
基于节点选择的自动分片裁剪。

用户工具

支持所有工具。

支持 Browser 和 Cypher Shell。
复合数据库不支持在单个分片上使用的工具以及 Bloom。

支持所有工具。

管理工具

支持所有工具。

复合数据库不支持在单个分片上使用的工具。

支持所有工具。

支持所有库。

在单个分片上受支持。

支持所有库。