SQL Server 2008在資料倉儲方面的價值

drillchina發表於2008-07-05

今天我和一家為移動開發系統的公司進行交流的過程中討論到了SQL Server 2008。隨著SQL Server 2008 RC0的釋出,越來越多的開發人員和企業開始關注這個產品,儘管大家沿用著微軟產品的第一個版本不能生產部署的判斷,但是SQL Server 2008對大容量資料庫的支援確實是很多以SQL Server為資料平臺的應用系統帶來了不小的福音。

因為我關注SQL Server 2008已經有了一段時間,所以對SQL Server 2008的各項新特性也有了一定的認識,這裡和大家分享一些SQL Server 2008在資料倉儲方面的商業價值。

Resource Governor

最重要的也是最吸引眼球的應該是SQL Server 2008的Resource Governor,但個人對這項功能的評判為適中。

對於眾多中小型企業來說,這項功能確實不錯。因為在中小型企業中,通常由於硬體投入的限制,資料倉儲並不是常規意義的資料倉儲,因為在這些環境中資料倉儲通常承擔集中資料儲存、報表處理分析多項功能,甚至有些企業還在資料倉儲伺服器上執行交易型資料庫,或者將交易型資料和分析性資料儲存在一個資料庫內。

對於這種環境,Resource Governor無疑是一項非常重要的功能,因為Resource Governor可以有效地隔離不同應用目的的訪問載荷。通過為交易型資料操作、分析性資料訪問、資料倉儲的ETL分配不同的資源槽,可以確保各種應用都可以獲得一定的資源而不至於導致一種應用消耗完所有的資源。

資料壓縮

這項功能個人認為實用性較強,因為所有資料倉儲中最頭疼的問題之一就是海量資料對於儲存空間和IO頻寬的消耗。

通過資料壓縮,首先我們可以減少可觀的儲存空間消耗,同時由於資料壓縮帶來的IO效率提高也可以有效解決傳統儲存裝置IO頻寬的限制。

雖然這項功能需要以處理器資源作為代價,但是畢竟現在主流的PC伺服器在CPU和記憶體方面的成本要遠低於儲存的成本。想想現在4核處理器的普及以及記憶體價格的不斷走低就可以說明這一點了。

不過傳統PC伺服器在本地磁碟方面的限制卻使得磁碟IO的限制越來越明顯,如果要獲得更高的IO頻寬我們一般都要依賴於相對還是比較昂貴的SAN技術或者外部儲存技術,而這些技術和裝置代價一般都不菲。

因此通過資料壓縮來解決IO頻寬確實是那些還沒有計劃和預算實施SAN的企業的一個解決方案,至少是中短期內一個解決方案。

不過還不止如此,SQL Server 2008中資料壓縮功能是可以針對表甚至分割槽的。因此對於那些混合交易型資料和歷史資料的資料庫,我們完全可以對不同型別的資料採用不同的壓縮方式,例如對於交易型資料不進行壓縮以確保這些資料在修改時的效能;對於中期資料採用行壓縮來提高資料訪問效率和減少儲存空間,行壓縮也不至於在中期資料由於某些原因需要修改的時候會造成非常昂貴的IO代價;而對於遠期資料,由於幾乎不需要修改,則可以採用更為高效的頁面壓縮技術來進一步減少資料儲存空間消耗,並最大化IO效率。

因此資料壓縮對於資料倉儲來說,或者對於混合型資料庫來說,應該算的上是一項非常實用的技術。

資料更新跟蹤

SQL Server 2008中對資料更新的跟蹤其實應該算有兩種,一種叫CDR(Change Data Capture),而另外一種叫CT(Change Tracking)。

CDR

CDR技術我覺得還有一些問題,雖然這項技術可以通過日誌來析取被更新的資料,這樣就可以減少ETL在進行資料版本比較時的代價。

資料倉儲中對資料更新的跟蹤主要是為了滿足ETL的需求,因此CDR要發揮作用就需要配置在資料倉儲的資料來源,也就是那些交易資料庫中。這個限制就使得這項技術的商業實用性有所降低,因為要將交易型資料庫升級到SQL Server 2008比將資料倉儲升級到SQL Server 2008要困難的多。

不過如果客戶的環境中有用到資料集市,那麼資料倉儲與資料集市間的同步就可以使用到這項技術。畢竟,將這些分析型資料庫升級到SQL Server 2008要相對簡單一些。

還有一點,CDR技術雖然可以提供交易的完整資訊,而且其通過日誌析取操作歷史可以減少源資料訪問爭搶,但是這個方案需要在交易型資料庫上實施。如果有人想在資料倉儲上實施這個CDR,那麼就完全沒有必要了,因為資料倉儲的更新通常都是批量的,沒有必要考慮其資料更新操作的原始性,我們只要知道哪些資料被更新了以及這些資料的當前狀態,而不需要知道資料更新的完整過程。

CT

CT技術在SQL Server 2008中的定位其實不是用於ETL,而是用於資料同步的,這也使得其記錄的資訊不如CDR記錄的完備。CT技術之通過資料行的唯一主鍵來告知我們那些資料行被修改了。

不過這項技術如果用於多維資料庫以及資料集市與資料倉儲之間的同步確實是一個相對廉價的技術方案。在多維資料庫以及資料集市中如果實施了分割槽,那麼配合CT技術我們就是非常簡單地判斷出那些分割槽需要重新整理資料,這樣就可以減少對多維資料庫和資料集市進行全量重新整理的需要。

另外一點需要申明的是,CT技術與原來很多系統中利用觸發器跟蹤資料更新這種方案最大的區別就在於,CT是非同步的,因此它對交易併發能力的影響要減少很多。

因此,如果有需要在資料倉儲、資料集市以及多維資料庫之間同步資料的,CT技術可以列入被選方案中。

稀疏列及篩選索引

這兩項新特性在資料倉儲中也是非常有價值的。

資料倉儲中儲存的許多維度表都有列數眾多但是值非常稀疏的情況存在。我見過物流應用和零售應用中的商品資訊、CRM應用中的客戶資訊都需要在資料倉儲中儲存成百上千的屬性列,而這些資訊中的大多數的資料例項都不會擁有完整的資訊,例如在零售的資料倉儲中,衣服會有顏色、款式、尺寸這樣的資訊,而食品則為有包裝規格、口味、生產日期等資訊,電子類商品則會有型號、能耗等資訊,軟體類產品則由版本、硬體要求等資訊。

稀疏列對於在一張表中維護一個維度所有屬性的要求可以很方便的滿足,資料倉儲的設計人員再也不需要精心設計各種附加屬性表了。因為稀疏列最多可以在一張表中支援上萬列,對於幾乎所有的商業應用來說,一個維度上萬的屬性應該是足夠了。

如果客戶使用了稀疏列,那麼篩選索引就必不可少了。因為稀疏列一旦應用,就會出現表中大多數字段在大多數資料行上NULL的,比如說食品、電器、軟體在口味這一列上就都是NULL的。那麼如果客戶需要在口味列上建立索引,將這麼多的NULL值編入索引是毫無意義的,篩選索引就可以幫我們避免這種無意義的行為。

不過,這項技術也只是對新資料倉儲會有非常大的意義。如果客戶的資料倉儲已經投入生產環境,那麼這兩技術的應用代價還是比較昂貴的,因為這就意味著我們修改表結構,要修改ETL、報表、多維資料庫的設計。

其他技術

SQL Server 2008中對於資料倉儲的改進還有其他一些功能,但是這些功能相對革新不大,因此就放在一起說。

日期時間

SQL Server 2008中對日期資料的改變是支援僅日期和僅時間的資料型別,還有將日期時間的精度擴大到了100納秒。僅日期和時間的新資料型別可以幫助我們減少日期時間在資料倉儲中儲存的歧異性,不過想到這些資料型別需要使用特殊的.Net類來訪問,相比很多開發人員就會有些猶豫了。對於100納秒的精度,大多數商業應用是不需要的,對於一些自動化控制的應用來說,這個精度倒是會讓人為之一振。

Minimal Logging

這項技術對資料倉儲來說有些...,因為大多數資料倉儲的資料載入確實都是BULK LOAD,如果將資料倉儲的還原級別設定為簡單,這項技術就沒有多大意義了。

分割槽並行度

這項技術不錯,對於現在主流的多核心處理器,對分割槽表訪問執行計劃並行度的改進可以明顯提高訪問效率,而且這項技術是產品的內建特性,對現有應用不會產生任何影響。

MERGE

這個新的DML語句可以減少ETL程式碼的複雜度,而且在某些情況下也可以提高執行效率。

SSIS中的Data Profiling

這個新的任務流作業模組可以減少我們對資料質量校驗的設計複雜度,不過個人覺得這個模組還有些粗糙,因為它要配合指令碼程式碼對校驗結果進行分析。幸好微軟已經提供了範例指令碼。

LOOKUP轉換

SSIS中支援LOOKUP模組快取資料的持久化可以說也是一項值得期待的特性,因為對於大多數資料倉儲來說,執行查詢操作的引用資料集一般都比較大,PC伺服器那點可憐的記憶體非常容易被輕易耗盡。持久化後的快取資料無疑可以提高LOOKUP抓換的效率。

EDM和LINQ

呃~~~這兩項就不多說了,雖然這兩項技術都可以減少關係型資料在應用開發中進行表達和訪問的複雜度,但是對於資料倉儲來說沒有這個必要。因為資料倉儲的設計應該本來就已經相當偏向於業務描述了,至少資料集市和多維資料庫一定是,所以沒有必要用這兩項技術來訪問,而且這兩項技術對於大量密集的資料訪問載荷來說,效能還是堪憂的。

全文索引

全文索引服務的改進也對資料倉儲有一些幫助。因為在SQL Server 2008中全文檢索查詢條件和關係型資料查詢條件可以出現在同一個查詢語句中,那麼對於有文字型描述資訊的維度表來說,進行條件化查詢會變得簡單一些。 

Spatial

Spatial在SQL Server 2008中也是備受關注的,不過SQL Server 2008的Spatial相對還比較弱,僅支援二維,同時還有很多複雜的圖形計算不支援。不過對於常規的商業資料倉儲來說,SQL Server 2008的Spatial資料倒也是一個可以嘗試的特性。

至少例如零售、房產、物流這些行業中對於區域性資源分配、區域性競爭分析這樣的需求,確實需要Spatial支援。

總結

以上言論僅代表個人觀點,同時限於SQL Server 2008當前的RC狀態,因此在SQL Server 2008正式釋出後,有可能有些技術會有改進或者出現Bug,所以~~~。不過相信這些觀點應該商業味道不會像在Webcast和很多SQL Server 2008公開演講中那麼濃。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9079672/viewspace-372010/,如需轉載,請註明出處,否則將追究法律責任。

相關文章