標籤:
Mysql多維資料倉儲指南
第一篇基本原理
章節列表:
第1章:基本組成
第2章:維度曆史
第3章:維度可加性
第4章:維度查詢
本篇概述
你將運用關聯式資料庫來實施一個維度資料倉儲。事實表和維表這兩種類型的關係表構成了一個資料倉儲模式的基本部分,在本書的第一部分,你將用mysql資料庫建立這些基本部分。
第1章:基本組成
概述
本章將瞭解兩個重要的主題:星型模式和代理鍵。星型模式是一種維度資料倉儲的資料結構。代理鍵是在資料倉儲中添加到事實表以作為主鍵的欄位。
在本章你將開始一個關於建立真實資料倉儲的漫長旅程。一些任務需要在本章完成:
n 建立一個資料庫使用者。
n 建立兩個關聯式資料庫,一個作為資料倉儲,另外一個作為來源資料庫。
n 為資料倉儲建立資料庫表。
n 產生代理鍵:
你需要建立一個來源資料庫是因為你的資料倉儲還沒有來源資料。實際應用中這一步並不是必要的,因為你的資料倉儲很有可能是基於已有的資料來源建立的。你將在本書的第二篇開始使用這個來源資料庫。
第1節星型模式
一個好的維度資料倉儲需要有簡潔的資料結構。從技術角度看,一個簡潔的結構將意味著更快速的查詢。在一個維度資料倉儲,關聯式資料庫的實施中有兩種類型的表,事實表和維度資料表。事實表包含商業事實資料(或者稱為度量值)。維度資料表包含查詢該資料庫的種類。
注意在看完本書前面兩個章節後,你對事實表和維度資料表將有更好的理解。
這些表在資料倉儲中的聯絡模式看起來象星星狀,因此該模式的術語就稱為星型模式。
注意除了星型模式外,雪花模式也會用於資料倉儲中。但是較之星型結構,其建模更為困難。而且,雪花模式不容易理解和應用,而且其查詢效能也低於星型模式。這些缺陷是雪花模式不適合建立維度資料倉儲,因此本書只是涉及星型模式。
一個星型模式包含一個事實表,該事實表環繞著兩個甚至更多的維表。單星結構只有一個事實表,而多星結構則是每個星有多個的事實表,另外,維度資料表可以為多個事實表所共用。本章只包括單星結構,讀者將會在19章“多星模式”中學習到多星結構。
圖1-1 展示了一個單星結構的維度模式,這是一個我們將會在本書中擴充的銷售訂單的資料倉儲。
圖1-1一個單星型的維度模式
事實表名稱的尾碼通常是fact,而dim(維度dimension的縮寫)通常用於維度資料表的尾碼。根據這種命名規則,很明顯,圖1-1 中有一個事實表(銷售訂單事實表sales_order_fact)和四個維度資料表(客戶維customer_dim,訂單維 order_dim,產品維 product_dim, 以及日期維date_dim)。事實表包含一個或者多個可測的事實值(一個可以測的事實值簡稱為度量),而維表則對度量進行分類。
每個維表有且只有一個代理鍵欄位,代理鍵欄位名稱的尾碼是sk。維表中的每個代理鍵欄位在事實表中都會有對應的相同的欄位,這樣使得資料庫的查詢更為容易。但是,事實表中以sk為尾碼的欄位並不是代表一個代理鍵欄位。
圖1-1中串連事實表sales_order_fact和四個維表的線指明了查詢這些表的串連關係。這些串連是基於維表的代理鍵欄位的。
當建立一個維度資料倉儲的時候,你將會在資料倉儲中自己產生代理鍵的值,這些代理索引值不是從來源資料得到的。代理鍵的值是連續的數值。
注意 後面關於“代理鍵”的章節將對代理鍵進行詳細的說明。
現在你已經知道了星型模式,事實表,維表的概念,我們來看一個例子,如果我們對訂單的訂單金額感興趣,並且決定用圖1-1 中sales_order_fact表的order_amount欄位作為度量。表1-1顯示sales_order_fact表的一個抽樣記錄。
表1-1:一個事實表的抽樣
將資料用試算表形式展現:
customer_sk |
product_sk |
date_sk |
order_sk |
order_amount |
1 |
1 |
1 |
1 |
1000 |
表1-1所關聯的維表中相應的資料記錄將在表1-2到1-5中展示。
表1-2:客戶維表中關聯的行
customer_sk |
customer_no |
customer_name |
1 |
1 |
Dons Limited |
表1-3:產品維表中關聯的行
product_sk |
product_code |
product_name |
1 |
1 |
Cangcung Hard Disk |
表1-4:時間維表中關聯的行
表1-5:訂單維表中關聯的行
order_sk |
order_number |
1 |
1 |
事實表的行說明該訂單的金額是$1,000。這是事實的度量。sales_order_fact表中的customer_sk欄位值為1表示對應customer_dim維表中customer_sk欄位值為1的行。這個關聯表示,提交這個訂單的是名為Dons Limited的客戶。用事實表中的product_sk欄位的值可以在產品維表中追蹤到產品資訊。通過將事實表和date_dim時間表的date_sk欄位進行關聯,你可以得到訂單日期。同樣,通過將事實表和order_dim訂單維表中的order_sk欄位進行關聯,你可以得到訂單號。
第2節代理鍵
維表中的代理鍵欄位是維表的主鍵。代理鍵的值通常是連續的數值而不代表任何商業意義。相比之下,許多來自來源資料的索引值都有商業含義。
你將在你的資料倉儲內部產生代理索引值;你不可以從來源資料得到代理索引值,在第2章“維度曆史”中我將說明這麼做的目的。
在mysql中,你可以通過設定代理鍵欄位的AUTO INCREMENT自增屬性產生代理值。通過將自增欄位用null值代替來插入一個遞增的整數。
已經有足夠的原理讓我們可以開始建立我們的資料倉儲了。接下來的這節,“任務”闡述了你需要在本章完成的任務的詳細步驟。
----------------------------------------------------------------------------------------------------------------------------------------------
原帖地址:http://blog.chinaunix.net/uid-43642-id-2124571.html
【轉帖】Mysql多維資料倉儲指南 第一篇 第1章