数据库架构设计当前主要有三种模式,分别为Shared Nothing、Shared Everything、Shared Disk。

Share Nothing

各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2 DPF和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转。 我们常说的 Sharding 其实就是Share Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器可以独立工作,具备共同的schema,比如MySQL Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量。

Shared Nothing架构(shared nothing architecture)是一种分布式计算架构。这种架构中的每一个节点(node)都是独立、自给的,而且整个系统中没有单点竞争。 在一个纯Shared Nothing系统中,通过简单地增加一些廉价的计算机做为系统的节点即可以获取几乎无限的扩展。 Shared Nothing系统通常需要将他的数据分布在多个节点的不同数据库中(不同的计算机处理不同的用户和查询)或者要求每个节点通过使用某些协调协议来保留它自己的应用程序数据备份 ,这通常被称为数据库Sharding。

  • 优点:扩展性好,节点故障不会影响其他节点。
  • 缺点:数据一致性维护复杂,数据分片和分布式事务处理较难。
  • 示例:Cassandra、HBase、MongoDB。

Share Everything

一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,

  • 优点:资源利用率高,数据一致性容易维护。
  • 缺点:扩展性差,容易成为瓶颈。
  • 示例:传统的大型机数据库系统。典型的代表SQLServer, 单节点的mysql

Share Disk

各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表Oracle Rac, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口达到饱和的时候,增加节点并不能获得更高的性能 。

  • 优点:存储一致性容易维护,扩展性比 Share Everything 好。
  • 缺点:存储成为瓶颈,网络开销较大。
  • 示例:Oracle RAC(Real Application Clusters)。

数据库架构设计的三种模式_数据库架构设计现在的主流方式-CSDN博客

分布式数据库的Share Nothing / Share Disk / Share Storage - 知乎 (zhihu.com)