概述InfinigraphAura 不可用2025.12 版本引入
属性分片(Property sharding)是 Infinigraph 的一部分,Infinigraph 是 Neo4j 的分布式图架构,它利用分片技术将图的属性数据分布到集群的不同成员中。图在逻辑上保持完整,查询行为符合预期,应用程序无需更改代码或进行手动调整即可实现扩展。
|
属性分片不包含在标准版 Neo4j 企业版中,需要订阅 Infinigraph 服务。请联系 Neo4j 销售部门以获取访问权限。 |
什么是属性分片?
属性分片涉及将节点和关系关联的属性解耦,并将其存储在独立的图中。图结构(包含节点和关系)存储在一个“图分片”(graph shard)中。与这些节点和关系关联的属性则分布在多个“属性分片”(property shards)中。这种架构实现了属性数据的独立扩展,允许处理海量属性数据,而不会影响图结构的性能。
同时,它还允许对图数据进行存储优化,因为图分片旨在存储更多以图为中心的信息,而没有属性带来的开销。
分片后的属性数据库表现得像标准数据库一样。它提供写入事务的 ACID 保障以及完整的 API 支持,即 Cypher 语言查询、驱动程序 API 和 Neo4j Java 内部 API。
工作原理
图分片仅包含节点和关系,不包含属性。每个分片本质上就是一个具有某些自定义行为的 Neo4j 标准数据库。
所有节点和关系属性通过分片(哈希)函数均匀分布在各个属性分片中。每个属性分片包含等效的非连接节点和关系,每个节点或关系都具有与图分片中相同的唯一标识符,并存储与这些元素关联的属性。这意味着图分片中的每个实体在某个属性分片中都有且仅有一个对应的实体,并且该属性分片将负责处理该实体的所有请求。
整个系统部署在 Neo4j 集群中,图分片是一个常规的 Raft 组(请参阅 领导力、路由和负载均衡)。此设置提供了所有的故障转移和可用性保障,并允许像在普通 Neo4j 集群中一样添加主节点(primaries)和从节点(secondaries)。
属性分片使用副本(属性分片副本)来实现数据冗余和故障转移。每个属性分片可以有多个副本以确保数据可用性。如果一个属性分片副本发生故障,另一个副本可以接管其职责。
事务处理完全在图分片上使用 Raft 共识机制来处理,方式与标准数据库相同。但是,图分片和属性分片的副本必须相互通信,以确保维持 ACID 合规性。内部书签用于确保集群能够读取其自身的写入内容。