微軟並行數據倉庫(Parallel Data Warehouse,簡稱PDW)去年同SQL Server 2008 R2一同發布,該產品設計初衷是為了同Oracle Exadata和Teradata等展開競 爭。PDW真正意義上實現了混合工作負載的能力,用戶可以在使用熟悉的SQL Server數據庫引擎的情況下,將數據從多個物理服務器上進行擴展。
並行 數據倉庫並不是一款軟件系統產品,在購買之後你不能簡單地將其安裝在硬件上 。PDW最基本的配置是雙機架,其中一個機架是管理服務器,作為管理節點、控制 節點、lzone節點和備份節點。另一個機架將存放所謂的計算節點,用來真正存儲 數據,我們將其稱為一個數據機架,它裡面是一個10核芯片服務器(具體情況具體 分析)和專有的SAN存儲設備。對PDW進行擴展十分簡單,添加更多的數據機架即可 。
控制節點提供了一系列的功能,最重要的是,它們提供了查詢並行數據 倉庫的功能。你連接到控制節點時,並不是使用熟悉的SQL Server Management Studio(SSMS),而是使用一款第三方工具——Nexus Chameleon,它是包含在PDW 安裝之內的。由於SSMS不能夠直接連接到PDW控制節點,因此用戶在使用PDW之前 需要熟悉這款工具。
運行在控制節點上的是一個特殊版本的SQL Server數 據庫,它能夠將Transact-SQL查詢送到PDW計算節點來執行。事實上,來自數據倉 庫的數據並不會存儲在這個實例上,取而代之,它會存放數據庫設置方面的元數 據,並提供暫存空間作為臨時數據庫。
除了處理數據查詢請求之外,控制 節點還會處理你的數據加載過程。數據加載能夠通過幾種不同的方式來完成,最 簡單的一種就是使用Business Intelligence Development Studio (BIDS)工具和 最新SQL Server集成服務(SSIS)的目標連接對象,後者是特別針對PDW研發出的產 品;另外一種方式是將數據加載到所謂的磁頭停放區(landing zone),然後使用一 個新的工具叫做DWLOADER來批量加載數據到PDW。DWLOADER的工作原理同bcp工具 非常相似,它可以將數據快速地加載到目標table中。
許多人認為,微軟 並行數據倉庫同SQL Server或者Oracle的分區表相類似,雖然二者的概念聽上去 很像,但實際上有著很大的差別。分區表是指你講特定區域的數據分割到單獨的 分區上,這樣在查詢的時候就可以只查詢一個分區就夠了;而PDW中的原理則是截 然相反的,你是將當前數據推送到系統中的每一個計算節點上,這樣當你查詢數 據的時候實際是由多個計算節點來響應數據請求的。
因此,當使用所有的 計算節點時,你可以增加CPU的數量並提高一次生成的I/O總數。這樣的設計增加 了大量的計算資源,可以很大程度上減小響應時間。之前需要幾天來完成的操作 ,在使用PDW時僅需幾分鐘,傳統SQL Server實例無法運行的報表,PDW可以快速 地完成。
但是並行數據倉庫並不是萬能的,它也有自身的缺點。比如在 PDW運行插入insert操作會比傳統SQL Server更慢,由於數據插入PDW時,每一行 都需要進行檢測才能夠決定存儲在哪些計算節點上。當在PDW內部創建一個表時, 你需要明確數據是否需要復制到所有存儲節點上;往往一個維度表可以這樣設置。
第二個表設置選項將用來在計算節點之間發布數據,並具體根據每一列來 決定。當數據加載之後,聲明過的列被hash,而hash值將同一個內部表進行比較 ,以決定哪個控制節點存儲該數據。由於數據是通過控制節點來加載到系統之內 的,所以必須經過hash過程。然後行數據將從控制節點轉移到計算節點進行存儲 。
另外一個PDW的缺點就是聚合功能。根據編寫的查詢,所有被聚合的數 據需要從計算節點轉移到控制節點,並存儲在臨時數據庫中,當轉移完成後再進 行聚合。如果數據量非常大的話,這個過程將是非常耗費時間的,因為數據的轉 移需要網絡連接來完成。在一定程度上,用戶可以避免此類情況的發生,因此我 們需要對表進行特別的設計,並重新審視我們的查詢語句。如果你打算做一個聚 合日志,那麼一定要確保徹底測試所有的查詢。
並行數據倉庫的基礎架構 是高度冗余的, PDW內幾乎所有的組件都有備份內建在幾家之內。兩個管理節點 作為並行數據倉庫的主控制器可以允許系統管理員對其他服務器進行相應配置 (PDW擁有自身的動態目錄,可以將機器同其他任何組策略進行隔絕)。控制節點起 到了一個主動/被動Windows集群的作用,計算節點也可以配置為一個單獨的集群 ,因此如果物理服務器宕機,PDW將不會失去所有的CPU計算資源。
微軟的 並行數據倉庫是一個非常強大的系統,企業可以根據自身需求將其的價值發揮到 最大。但記住PDW並不是SQL Server實例的替代品,二者在工作原理上並不相同。 企業在購買並行數據倉庫之前,一定要理解本文中所講到的內容,以避免操作不 當帶來的不必要的麻煩。