图数据库中有单机版,也有支持分布式。如果需要构建的图超过单机所能存储的上限,那么分布式就时必须的了。
分布式系统的基本问题
对于分布式系统来说,需要解决以下基本问题:数据副本,数据切分。
对于单机系统来说,数据副本很好理解:启动多个节点作为备份,一个主节点,多个备份节点,此时数据副本可以等同于备节点。
对于分布式系统,通常来说需要有以下表现:
- 数据存储以数据块为基本单元,一个数据块包含多条数据,通常以固定大小为一块,如:64MB,4KB等
- 一个节点可以存储多个数据块,每个数据块存储于多个节点
- 单节点故障,可以通过其他节点恢复数据,不会导致数据缺失
- 数据块与备份之间的数据一致性
- 节点的横向扩展,随时增加减少节点
- 合理的数据切分方式,使得数据写入时准确的切割和读取时再次组装
图数据库的切分
与关系数据库相比,图数据库的一个特点是:整个图是一个整体。如:人类社会关系图,前面构建的三体人物关系图,每个节点都会存在于该图中,每个节点都将于其他节点通过不同边相连,通常我们关注的是点与点之间的联系,而非孤立的某个点。
如此,对于图数据库,我们不同简单的以点id或者边id来做切分,分散存储在不同节点,因为需要尽量将一次图查询在一个节点中完成,而不是跨整个集群去查询。