Microsoft 數據倉庫架構 !
2024-07-21 02:11:30
供稿:網友
microsoft 數據倉庫架構
摘要:本文簡單介紹了使用 microsoft 數據倉庫架構的數據倉庫,討論了數據倉庫能夠實現的功能,使用數據倉庫的恰當時機,以及如何將數據倉庫與系統體系結構合成一體。
目錄
簡介
數據倉庫
作為數據倉庫模型的立方體
使用數據倉庫進行決策
查看立方體片段和編程接口
microsoft 數據倉庫架構
數據倉庫的其他應用
實現數據倉庫易犯的錯誤
總結
簡介
1998 年發布的 7.0 版 microsoft® sql server™ 中已經包含數據倉庫軟件。如果您對數據倉庫比較陌生,您可能會問:“它能夠干什么?什么時候使用數據倉庫比較合適?怎樣才能將數據倉庫與系統體系結構合為一體?”本文將簡要介紹使用 microsoft 數據倉庫架構的數據倉庫。
數據倉庫
在軟件行業相對短暫的歷史中,數據庫已經成為收集和分布信息的系統的基礎。這些數據庫深層隱藏的是統計學或測量方法,戰略家們可以對其進行研究,以提高系統的整體效率。數據采集是這類信息的重要部分,目的在于根據數據庫內容進行正確決策。直到最近,這種努力還需要昂貴而笨重的數據采集軟件包,或能夠將信息請求精確翻譯成可使用的、更有效的查詢的數據庫專家。除特大型的機構以外,對其他所有人來說,這兩種方案的成本都極為昂貴。
就數據采集的目的而言,能夠有效用于產品分類、庫存控制和訂單條目系統的普通關系數據庫可能并不是最佳的設計。跨表和跨數據庫(有時甚至是跨服務器)匯總輸出可能會非常復雜,而這種復雜是可以避免的。需要進行數據采集時,創建一個可供數據分析查詢用的信息中心儲備庫將更有意義。這就是數據倉庫的含義。來自系統不同部分的信息被集成到數據倉庫中,以便于訪問。
作為數據倉庫模型的立方體
用立方體作為數據倉庫儲備庫的名稱雖然不完美,但比較令人滿意。如何區分數據倉庫立方體和幾何立方體呢?這兩種立方體之間存在幾個重要的不同之處。數據倉庫立方體由任意數量的維度定義(并不限于三維,有時數據倉庫立方體可能少于三維)。描述數據倉庫立方體的維度與描述幾何立方體的長、寬和高一樣。如果需要,可以將維度組合成任意數量的級別。
兩維間的關系可以用網格定型。維度類似于網格坐標軸上的標記。單元格才是內容。內容對應于立方體每個維度的交叉結果。單元格中的數據是一個計量單位。計量單位是判斷立方體的全部依據。如果立方體是關于售出項目的數目,則計量單位就是已出售項目數量的計數。要重復網格示例,計量單位便是您在網格單元格中找到的數目。
圖 1:上圖顯示的是兩維立方體的組織結構。在該示例中,“產品”和“地區”是維度;“椰菜”、“肥皂”、“俄勒岡”、“華盛頓”、“西雅圖”和“斯波坎”是各個維度的級別。包含不同圖表的單元格就是內容。內容單元格中的單個數據就是計量值。在該示例中,立方體中共使用了三種計量單位。
維度和級別
對于為雜貨店設計的數據倉庫立方體,其維度可能包括產品、優惠、時間(營業天數)和地區等內容。可能還包括雇員維度和客戶維度(某些雜貨店可能有會員帳戶)。
級別用于將維度按需要組織為更小的單位。根據級別在立方體中的配置,它們還可能包含其他級別。例如,假設有一個區域維。也許這個雜貨店在三個州營業,并且使用州界作為分界線。假設區域維包含三個級別:加利福尼亞、俄勒岡和華盛頓。如果該店在華盛頓州還包括其他子區域(例如西雅圖、奧林匹亞、亞基馬和斯波坎),即使加利福尼亞和俄勒岡區域沒有這樣的情況,這些級別仍可以作為子級別添加到華盛頓區域。級別只是組織維度內容的一種便利方法。
內容和計量單位
內容是由各個維度組合而成的。定位內容類似于使用坐標系。就象數學立方體中的原點可以表示為 (x=0,y=0,z=0),內容將由特定的維度組合(例如 (product=broccoli, region=seattle, time=wednesday))表示,生成一個有關星期三在西雅圖銷售椰菜的內容。根據立方體的使用方法,內容可能顯示一個類似于“售出 580 單位物品”或“銷售額為 $860.00”的計量單位。計量單位的含義取決于立方體的定義方式。在本例中,可能有多種椰菜或在西雅圖地區有多個商店。該值將表示定義組的匯總。立方體內的計量單位可能是數字。對于一個雜貨店,計量單位可能會是產品價格、凈銷售額、銷售數量、商品成本等。
匯總
計數和總計的數學運算是數據倉庫之所以有用的重要原因之一,屬于匯總功能。維度組織完畢并已對立方體進行處理后,將開始計算匯總。通常,在立方體初始填充后或對立方體的內容進行更改后,將立刻進行匯總。
使用數據倉庫進行決策
假設一個雜貨店的情形。假定某種促銷已經進行了好幾天,店主需要決定是否要再次進行促銷。店主可能會產生如下疑問:“促銷期間賣出的產品比促銷前賣出的產品多嗎?”
在使用普通結構的事務數據庫中,雜貨店庫存系統可以記錄價格、產品、銷售和促銷等情況。庫存系統在插入和更新記錄方面進行了優化,并且在簡單的程式化選擇(如檢索項目成本)方面可能也進行了優化。這種情況是不太可能的:系統的組織方式使得所生成的報告可以按天或按產品詳細描述某種銷售的有效性。事實上,為事務有效性而設計的系統和為查詢有效性而設計的系統間總是存在矛盾。這種情況下,就應該使用數據倉庫。數據倉庫是一個獨立的存儲庫,它使用已進行優化的結構中現有資源的相關數據。
在此例中,使用數據倉庫將很容易回答店主的問題。通過使用產品、促銷和時間立方體維度,計量項目銷售量的內容記錄總和便可以生成所需的結果。
與此技術相比,其他系統中的信息甚至可能不在同一數據庫中。庫存數據源可能和客戶數據源或雇員數據源不一樣。即使該系統位于同一數據庫中,建立一個查詢系統(該系統以一種可以生成正確答案的方式合并和匯總結果)也是非常繁瑣的。事實上,合并數據源和匯總結果正是數據倉庫軟件最擅長的。
foodmart 示例立方體包含在 microsoft sql server analysis services 軟件,即 microsoft 的數據倉庫軟件中。對于了解使用數據倉庫時可以使用什么樣的信息,這是一個非常好的資源。foodmart 示例使用雜貨店作為模型。
查看立方體片段和編程接口
雖然將數據倉庫構建成多維可能是簡單的設計選擇,并且對于處理器來說,執行跨越多個維度生成結果的查詢也不是特別的復雜,但是多維輸出的結構顯示起來卻非常困難。圖表、圖形和表格通常都是使用兩維顯示的。雖然有一些好的三維圖表工具,但圖表會變得難以看懂。查看多維輸出的常用技術是一次查看立方體的一個兩維輸出“片段”。這也是 microsoft sql server analysis tool 顯示輸出的方式。
使用 dso
幸運的是,輸出并不局限于兩維。microsoft sql server analysis services 為多維數據倉庫輸出提供了編程接口:dso,決策支持對象 (decision support object)。dso 能夠用于編程訪問多個維度。
有關包含對象模型和程序員參考的 dso 的詳細信息,請閱讀 msdn online 上的“決策支持對象 (decision support object)”。該鏈接位于 http://msdn.microsoft.com/library/psdk/sql/prabout_84a4.htm(英文)。
使用 mdx
mdx(多維擴展)是為查詢多維對象和數據而設計的語法。對這樣的系統來說,使用 mdx 要比使用 sql(為完全不同的對象集而設計)更有效也更有意義。mdx 查詢的語法與 sql 查詢的語法類似。請注意觀察下面的 mdx 查詢,它將選用前面示例中的銷售數字(星期三在西雅圖銷售的椰菜):
select [measures].[sales] on columns [time].[wednesday] on rows from mysalescube where [region].[washington].[seattle] and [product].[vegetable].[broccholi]
本查詢的輸出為一個標記有“銷售額”的列,標記有“星期三”的行和交叉處包含銷售數字“$860.00”的網格單元格。
sql server analysis server manager 包含一個接收 mdx 查詢的接口。此外,mdx 查詢也可以被集成到使用 dso 的程序中。有關 mdx(包括簡單 mdx 查詢的基本結構和 sql 與 mdx 之間的主要區別)的詳細信息,請參閱 msdn online 上的“mdx”。該鏈接位于 http://msdn.microsoft.com/library/psdk/sql/agmdxbasics_04qg.htm(英文)。
microsoft 數據倉庫架構
microsoft 數據倉庫架構是一個易于集成到當前系統的開放式體系結構。microsoft sql server dts 工具用于導入、導出以及修復或轉換數據(如果需要)。該架構包含一個用于自定義數據倉庫實現的、以對象為中心的編程接口。還有一個用戶接口,即 microsoft sql server analysis services manager,可用于配置數據倉庫并填寫或更新立方體中的內容。它可用于安排任務、監視性能以及對數據倉庫執行查詢。
您可以從 msdn online 了解有關如何使用 microsoft sql server analysis services manager 創建立方體的詳細信息,還可以了解設計和配置數據倉庫時要注意的原則。請查看位于 http://msdn.microsoft.com/library/psdk/sql/aghtintro_2vov.htm(英文)的“使用方法”一文。
數據倉庫的其他應用
對于決策支持,數據倉庫是一個了不起的工具,但該軟件還具有其他實際用途。
數據歸檔便是其中一種用法。某些系統的存儲能力可能有限。因此需要經常從這些系統中刪除舊數據,以便容納新數據。如果需要歸檔信息以便保存長期的歷史報表,請考慮將部分舊數據存入數據倉庫。
數據倉庫將報告數據從運行系統中隔離出來。通過將查詢工作移動到更有效率的系統,這種隔離能夠提高運行系統的性能。可以提高安全性。敏感信息將保存在不會暴露給查詢的運行數據庫中。由數據倉庫提供的提取級別簡化了對決策支持應用程序生成的統計表的訪問。
實現數據倉庫易犯的錯誤
數據倉庫可能在幾個方面使商業進程明顯復雜化。
它們倚賴于其他系統。如果數據倉庫所倚賴的數據源有所更改(例如,該數據源不再可用或已被新系統代替),那么也需要對向數據倉庫傳送數據的進程進行修改。設計一個向數據倉庫傳送數據的進程是創建數據倉庫過程中最費時間的任務。
有用數據的可用性非常關鍵。有時數據源內容對于決策支持沒有什么用處。如果數據源是臨時性的,或者帶有未定義結構,或者內容變化得太快,這些都將降低數據倉庫所需的穩定性。創建數據倉庫并不能解決有用數據收集過程中的問題。
總結
microsoft 數據倉庫架構提供了構造、填充、查看和訪問數據倉庫的工具。數據倉庫軟件的基本單位是立方體,它是來自現有數據源的集成信息儲備庫。