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


