摘要
本文簡單介紹了使用 Microsoft 數據倉庫架構的數據倉庫
討論了數據倉庫能夠實現的功能
使用數據倉庫的恰當時機
以及如何將數據倉庫與系統體系結構合成一體
簡介
年發布的
版 Microsoft® SQL Server
; 中已經包含數據倉庫軟件
如果您對數據倉庫比較陌生
您可能會問
它能夠干什麼?什麼時候使用數據倉庫比較合適?怎樣才能將數據倉庫與系統體系結構合為一體?
本文將簡要介紹使用 Microsoft 數據倉庫架構的數據倉庫
數據倉庫
在軟件行業相對短暫的歷史中
數據庫已經成為收集和分布信息的系統的基礎
這些數據庫深層隱藏的是統計學或測量方法
戰略家們可以對其進行研究
以提高系統的整體效率
數據采集是這類信息的重要部分
目的在於根據數據庫內容進行正確決策
直到最近
這種努力還需要昂貴而笨重的數據采集軟件包
或能夠將信息請求精確翻譯成可使用的
更有效的查詢的數據庫專家
除特大型的機構以外
對其他所有人來說
這兩種方案的成本都極為昂貴
就數據采集的目的而言
能夠有效用於產品分類
庫存控制和訂單條目系統的普通關系數據庫可能並不是最佳的設計
跨表和跨數據庫(有時甚至是跨服務器)匯總輸出可能會非常復雜
而這種復雜是可以避免的
需要進行數據采集時
創建一個可供數據分析查詢用的信息中心儲備庫將更有意義
這就是數據倉庫的含義
來自系統不同部分的信息被集成到數據倉庫中
以便於訪問
作為數據倉庫模型的立方體
用立方體作為數據倉庫儲備庫的名稱雖然不完美
但比較令人滿意
如何區分數據倉庫立方體和幾何立方體呢?這兩種立方體之間存在幾個重要的不同之處
數據倉庫立方體由任意數量的維度定義(並不限於三維
有時數據倉庫立方體可能少於三維)
描述數據倉庫立方體的維度與描述幾何立方體的長
寬和高一樣
如果需要
可以將維度組合成任意數量的級別
兩維間的關系可以用網格定型
維度類似於網格坐標軸上的標記
單元格才是內容
內容對應於立方體每個維度的交叉結果
單元格中的數據是一個計量單位
計量單位是判斷立方體的全部依據
如果立方體是關於售出項目的數目
則計量單位就是已出售項目數量的計數
要重復網格示例
計量單位便是您在網格單元格中找到的數目
圖
上圖顯示的是兩維立方體的組織結構
在該示例中
產品
和
地區
是維度
椰菜
肥皂
俄勒岡
華盛頓
西雅圖
和
斯波坎
是各個維度的級別
包含不同圖表的單元格就是內容
內容單元格中的單個數據就是計量值
在該示例中
立方體中共使用了三種計量單位
維度和級別
對於為雜貨店設計的數據倉庫立方體
其維度可能包括產品
優惠
時間(營業天數)和地區等內容
可能還包括雇員維度和客戶維度(某些雜貨店可能有會員帳戶)
級別用於將維度按需要組織為更小的單位
根據級別在立方體中的配置
它們還可能包含其他級別
例如
假設有一個區域維
也許這個雜貨店在三個州營業
並且使用州界作為分界線
假設區域維包含三個級別
加利福尼亞
俄勒岡和華盛頓
如果該店在華盛頓州還包括其他子區域(例如西雅圖
奧林匹亞
亞基馬和斯波坎)
即使加利福尼亞和俄勒岡區域沒有這樣的情況
這些級別仍可以作為子級別添加到華盛頓區域
級別只是組織維度內容的一種便利方法
內容和計量單位
內容是由各個維度組合而成的
定位內容類似於使用坐標系
就象數學立方體中的原點可以表示為 (x=
y=
z=
)
內容將由特定的維度組合(例如 (Product=broccoli
Region=Seattle
Time=Wednesday))表示
生成一個有關星期三在西雅圖銷售椰菜的內容
根據立方體的使用方法
內容可能顯示一個類似於
售出
單位物品
或
銷售額為 $
的計量單位
計量單位的含義取決於立方體的定義方式
在本例中
可能有多種椰菜或在西雅圖地區有多個商店
該值將表示定義組的匯總
立方體內的計量單位可能是數字
對於一個雜貨店
計量單位可能會是產品價格
淨銷售額
銷售數量
商品成本等
匯總
計數和總計的數學運算是數據倉庫之所以有用的重要原因之一
屬於匯總功能
維度組織完畢並已對立方體進行處理後
將開始計算匯總
通常
在立方體初始填充後或對立方體的內容進行更改後
將立刻進行匯總
使用數據倉庫進行決策
假設一個雜貨店的情形
假定某種促銷已經進行了好幾天
店主需要決定是否要再次進行促銷
店主可能會產生如下疑問
促銷期間賣出的產品比促銷前賣出的產品多嗎?
在使用普通結構的事務數據庫中
雜貨店庫存系統可以記錄價格
產品
銷售和促銷等情況
庫存系統在插入和更新記錄方面進行了優化
並且在簡單的程式化選擇(如檢索項目成本)方面可能也進行了優化
這種情況是不太可能的
系統的組織方式使得所生成的報告可以按天或按產品詳細描述某種銷售的有效性
事實上
為事務有效性而設計的系統和為查詢有效性而設計的系統間總是存在矛盾
這種情況下
就應該使用數據倉庫
數據倉庫是一個獨立的存儲庫
它使用已進行優化的結構中現有資源的相關數據
在此例中
使用數據倉庫將很容易回答店主的問題
通過使用產品
促銷和時間立方體維度
計量項目銷售量的內容記錄總和便可以生成所需的結果
與此技術相比
其他系統中的信息甚至可能不在同一數據庫中
庫存數據源可能和客戶數據源或雇員數據源不一樣
即使該系統位於同一數據庫中
建立一個查詢系統(該系統以一種可以生成正確答案的方式合並和匯總結果)也是非常繁瑣的
事實上
合並數據源和匯總結果正是數據倉庫軟件最擅長的
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)
使用 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]
本查詢的輸出為一個標記有
銷售額
的列
標記有
星期三
的行和交叉處包含銷售數字
$
的網格單元格
SQL Server Analysis Server Manager 包含一個接收 MDX 查詢的接口
此外
MDX 查詢也可以被集成到使用 DSO 的程序中
有關 MDX(包括簡單 MDX 查詢的基本結構和 SQL 與 MDX 之間的主要區別)的詳細信息
請參閱 MSDN Online 上的
MDX
Microsoft 數據倉庫架構
Microsoft 數據倉庫架構是一個易於集成到當前系統的開放式體系結構
Microsoft SQL Server DTS 工具用於導入
導出以及修復或轉換數據(如果需要)
該架構包含一個用於自定義數據倉庫實現的
以對象為中心的編程接口
還有一個用戶接口
即 Microsoft SQL Server Analysis Services Manager
可用於配置數據倉庫並填寫或更新立方體中的內容
它可用於安排任務
監視性能以及對數據倉庫執行查詢
您可以從 MSDN Online 了解有關如何使用 Microsoft SQL Server Analysis Services Manager 創建立方體的詳細信息
還可以了解設計和配置數據倉庫時要注意的原則
請查看
使用方法
一文
數據倉庫的其他應用
對於決策支持
數據倉庫是一個了不起的工具
但該軟件還具有其他實際用途
數據歸檔便是其中一種用法
某些系統的存儲能力可能有限
因此需要經常從這些系統中刪除舊數據
以便容納新數據
如果需要歸檔信息以便保存長期的歷史報表
請考慮將部分舊數據存入數據倉庫
數據倉庫將報告數據從運行系統中隔離出來
通過將查詢工作移動到更有效率的系統
這種隔離能夠提高
From:http://tw.wingwit.com/Article/os/xtgl/201311/9340.html