今天看了一下mysql cluster,其中提到 MySQL集群是一种在无共享架构(SNA,Share Nothing Architecture)
系统。顿时就对无共享架构的无共享产生疑问(为了防止单点故障,集群中会有数据的多个副本,每产生新的数据,管
控进程,会将数据共享到其他节点已备份,这不是和无共享矛盾吗?)后来查了相关资料,这里的共享是指,硬件资源
的共享,而非数据的共享。下面给出数据库结构设计的三种主要架构:
1.(完全共享)Shared Everthting:完全透明共享CPU/MEMORY/IO,也就是单个主机,并行处理能力比较差。代表
sql server
2(共享硬盘)Shared Disk:各个处理单元使用自己的私有 CPU和Memory,共享磁盘系统。典型的代表Oracle Rac, 它是数据共享,可通过增加节点来提高并行处理的能力,扩展能力较好。其类似于SMP(对称多处理)模式,但是当存储器接口达到饱和的时候,增加节点并不能获得更高的性能 。
3. (无共享)Shared Nothing:各个处理单元都有自己的CPU/内存/硬盘等,不存在共享资源,各处理单元之间通过
协议通信,并行处理和扩展能力更好。典型代表mysql cluster,DB2 DPF和Hadoop ,各节点相互独立,各自处理自
己的数据,处理后的结果可能向上层汇总或在节点间流转。我们常说的 (分片/分区)Sharding 其实就是Share
Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器可以独立
工作,具备共同的schema,比如MySQL Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量。
参考地址:http://blog.csdn.net/seteor/article/details/10532085