3.3.2 图存储模式
更新于 2026年10月10日
版权声明
3.3.2 图存储模式
巨型图的存储,总体上有边分割和点分割两种存储方式。2013年,GraphLab2.0将其存储方式由边分割变为点分割,在性能上取得重大提升,后来被业界广泛接受并使用。
边分割(Edge⁃Cut):每个顶点都存储一次,但有的边会被打断分到两台机器上,如图3⁃18所示。这样做的好处是节省存储空间;坏处是对图进行基于边的计算时,对于一条两个顶点被分到不同机器上的边来说,就需要跨机器通信传输数据,内网通信流量大。
点分割(Vertex⁃Cut):每条边只存储一次,都只会出现在一台机器上,如图3⁃19所示。坏处就是邻居多的点会被复制到多台机器上,增加了存储开销,同时会引发数据同步问题。好处是可以大幅减少内网通信量。

图3⁃18 边分割 图3⁃19 点分割(https://www.daowen.com)
虽然两种方法各有利弊,但是点分割占上风,各种分布式图计算框架都将自己底层的存储形式变成了点分割。主要原因有以下两个:
①磁盘价格下降,存储空间就不再是问题,但内网的通信资源却很有限,导致进行集群计算时,降低内网传输时间就显得更加宝贵。这点就类似于常见的空间换时间的策略。
②在应用场景中,绝大多数网络都是“无尺度网络”,遵循幂律分布,不同点的邻居数量相差非常悬殊。而边分割会使那些多邻居的点所相连的边大多数被分到不同的机器上,这样的数据分布会使得内网带宽更加捉襟见肘,于是边分割存储方式被渐渐抛弃了。