從體系結構來看,目前廣泛應用于關鍵業務領域的商用服務器大體可以分為三類,即對稱多處理器結構(SMP:Symmetric Multi-Processor),非一致存儲訪問結構(NUMA:Non-Uniform Memory Access) 以及海量并行處理結構(MPP:Massive Parallel Processing)。
SMP結構是指服務器中多個CPU對稱工作,無主次或從屬關系。各CPU共享相同的物理內存,每個CPU訪問內存中的任何地址所需時間是相同的,因此SMP也被稱為一致存儲器訪問結構。對SMP服務器進行擴展的方式包括:增加內存、使用更快的CPU、增加CPU、擴充I/O、更多的外部設備 (通常是磁盤存儲)。SMP服務器的主要特征是共享,系統中所有資源(CPU、內存、I/O等)都是共享的。也正是由于這種特征,導致了SMP服務器的主要問題,那就是它的擴展能力非常有限:每一個共享的環節都可能造成SMP服務器擴展時的瓶頸;對SMP而言,最受限制的是內存,每個CPU必須通過相同的內存總線訪問相同的內存資源;隨著CPU數量的增加,內存訪問沖突將迅速增加,造成CPU資源的浪費,CPU性能的有效性大大降低。
由于SMP在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構建大型系統的技術,NUMA就是這種努力下的結果之一。利用NUMA技術,可以把幾十個CPU(甚至上百個CPU)組合在一個服務器內。

NUMA服務器的基本特征是:具有多個CPU模塊(或稱為Building Block、節點);每個CPU模塊由多個CPU(如4個)組成,并且具有獨立的本地內存、I/O槽口等;節點之間通過互連模塊進行連接和信息交互;每個CPU可以訪問整個系統的內存,顯然,訪問本地內存的速度將遠遠高于訪問遠地內存(系統內其他節點的內存)的速度,這也是非一致存儲訪問NUMA的由來。由于這個特點,為了更好地發揮系統性能,開發應用程序時需要盡量減少不同CPU模塊之間的信息交互。
利用NUMA技術,可以較好地解決原來SMP系統的擴展問題,在一個物理服務器內可以支持上百個CPU。
NUMA技術的主要問題是,由于訪問遠地內存的延時遠遠超過本地內存,因此當CPU數量增加時,系統性能無法線性增加。
和NUMA不同,MPP提供了另外一種進行系統擴展的方式,它由多個SMP服務器通過一定的節點互聯網絡進行連接,協同工作,完成相同的任務,從用戶的角度來看是一個服務器系統。其基本特征如下:由多個SMP服務器(每個SMP服務器稱節點)通過節點互連網絡連接而成,每個節點只訪問自己的本地資源(內存、存儲等),是一種完全無共享結構;擴展能力最好,理論上其擴展無限制,目前的技術可實現512個節點互連。
在MPP系統中,每個SMP節點也可以運行自己的操作系統、數據庫等,但和NUMA不同的是,它不存在異地內存訪問的問題。換言之,每個節點內的CPU不能訪問另一個節點的內存。節點之間的信息交互是通過節點互聯網絡實現的,這個過程一般稱為數據重分配(Data Redistribution)。
MPP服務器的主要問題是:需要一種復雜的機制來調度和平衡各個節點的負載和并行處理過程。目前一些基于MPP技術的服務器往往通過系統級軟件(如數據庫)來屏蔽這種復雜性?;诖祟?A href="http://www.chinahtml.com/databases/" target=_blank>數據庫來開發應用時,不管后臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不需要考慮如何調度其中某幾個節點的負載。
NUMA與MPP的區別
通過分析NUMA和MPP服務器的內部架構和工作原理不難發現其差異所在。
節點互聯機制不同。NUMA的節點互聯機制是在同一個物理服務器內部實現,當某個CPU需要進行遠地內存訪問時,它必須等待,這也是NUMA服務器無法實現CPU增加時性能線性擴展的主要原因。而MPP的節點互聯機制是在不同的SMP服務器外部通過I/O實現的,每個節點只訪問本地內存和存儲,節點之間的信息交互與節點本身的處理是并行進行的。因此,MPP在增加節點時性能基本上可以實現線性擴展。
內存訪問機制不同。在NUMA服務器內部,任何一個CPU可以訪問整個系統的內存,但遠地訪問的性能遠遠低于本地內存訪問,因此在開發應用程序時應該盡量避免遠地內存訪問。在MPP服務器中,每個節點只訪問本地內存,不存在遠地內存訪問的問題。

哪種服務器技術更適合于數據倉庫環境?
回答這個問題,需要從數據倉庫環境本身的負載特征入手。典型的數據倉庫環境具有大量復雜的數據處理和綜合分析,要求系統具有很高的I/O處理能力,并且存儲系統需要提供足夠的I/O帶寬與之匹配。
從NUMA架構來看,它可以在一個物理服務器內集成許多CPU,使系統具有較高的事務處理能力,由于遠地內存訪問時延遠長于本地內存訪問,因此需要盡量減少不同CPU模塊之間的數據交互。顯然,NUMA架構當用于數據倉庫環境時,由于大量復雜的數據處理必然導致大量的數據交互,將使CPU的利用率大大降低。
相對而言,MPP服務器架構的并行處理能力更優越,更適合于復雜的數據綜合分析與處理環境。當然,它需要借助于支持MPP技術的關系數據庫系統來屏蔽節點之間負載平衡與調度的復雜性。另外,這種并行處理能力也與節點互聯網絡有很大的關系。顯然,適應于數據倉庫環境的MPP服務器,其節點互聯網絡的I/O性能應該非常突出,才能充分發揮整個系統的性能。