數據庫構架設計中主要有Shared Everthting、Shared Nothing、和Shared Disk:
-
Shared Everthting:一般是針對單個主機,完全透明共享CPU/MEMORY/IO,並行處理能力是最差的,典型的代表SQLServer
-
Shared Disk:各個處理單元使用自己的私有 CPU和Memory,共享磁盤系統。典型的代表Oracle Rac, 它是數據共享,可通過增加節點來提高並行處理的能力,擴展能力較好。其類似於SMP(對稱多處理)模式,但是當存儲器接口達到飽和的時候,增加節點並不能獲得更高的性能 。
-
Shared Nothing:各個處理單元都有自己私有的CPU/內存/硬盤等,不存在共享資源,類似於MPP(大規模並行處理)模式,各處理單元之間通過協議通信,並行處理和擴展能力更好。典型代表DB2 DPF和Hadoop ,各節點相互獨立,各自處理自己的數據,處理后的結果可能向上層匯總或在節點間流轉。
我們常說的 Sharding 其實就是Share Nothing架構,它是把某個表從物理存儲上被水平分割,並分配給多台服務器(或多個實例),每台服務器可以獨立工作,具備共同的schema,比如MySQL Proxy和Google的各種架構,只需增加服務器數就可以增加處理能力和容量。
-
-
Shared nothing架構(shared nothing architecture)是一 種分布式計算架構。這種架構中的每一個節點( node)都是獨立、自給的,而且整個系統中沒有單點競爭。
-
在一個純Shared Nothing系統中,通過簡單地增加一些廉價的計算機做為系統的節點卻可以獲取幾乎無限的擴展。
-
Shared nothing系統通常需要將他的數據分布在多個節點的不同數據庫中(不同的計算機處理不同的用戶和查詢)或者要求每個節點通過使用某些協調協議來保留它自己的應用程序數據備份 ,這通常被成為數據庫Sharding。