一、數倉建模的目標
訪問效能:能夠快速查詢所需的資料,減少資料i/o。
資料成本:減少不必要的資料冗餘,實現計算結果資料復用,降低大資料系統中的儲存成本和計算成本。
使用效率:改善使用者應用體驗,提高使用資料的效率。
資料質量:改善資料統計口徑的不一致性,減少資料計算錯誤的可能性,提供高質量的、一致的資料訪問平台。
所以,大資料的數倉建模需要通過建模的方法更好的組織、儲存資料,以便在效能、成本、效率和資料質量之間找到最佳平衡點。
二、關係模式正規化
關係型資料庫設計時,遵照一定的規範要求,目的在於降低資料的冗餘性和資料的一致性,目前業界正規化有:
第一正規化(1nf)
第二正規化(2nf)
第三正規化(3nf)
巴斯-科德正規化(bcnf)
第四正規化(4nf)
第五正規化(5nf)
第一正規化(1nf):
域都是原子性的,即資料庫表的每一列都是不可分割的原子資料項。
例如下面這張表:
id商品
商家id
使用者id
14件毛衣
b0001
u00001
「商品」欄位就不是原子性的,可以分割成「4件」和「毛衣」。
第二正規化(2nf):
在1nf的基礎上,實體的屬性完全依賴於主關鍵字,不能存在僅依賴主關鍵字一部分的屬性,也就是不存在區域性依賴。
例如下面這張表:
學生id
所屬系系主任
所修課程
分數s001
物理系張三
c001
90s001
物理系張三
c002
100主鍵id為「學生id,所修課程」,但是字段「所屬系」只依賴於「學生id」,不符合2nf。
第三正規化(3nf):
在2nf的基礎上,任何非主屬性不依賴於其它非主屬性,也就是不存在傳遞依賴。
例如下面這張表:
訂單id
商品id
商品顏色
商家id
使用者id
o00001
g0001
白色b0001
u00001
主鍵為「訂單id」,但是字段「商品顏色」依賴於「商品id」,不符合3nf。
三、四種建模方法
1、er實體模型
在資訊系統中,將事務抽象為「實體」(entity)、「屬性」(property)、「關係」(relationship)來表示資料關聯和事物描述,這種對資料的抽象建模通常被稱為er實體關係模型。
實體:通常為參與到過程中的主體,客觀存在的,比如商品、倉庫、貨位、汽車,此實體非資料庫表的實體表。
屬性:對主體的描述、修飾即為屬性,比如商品的屬性有商品名稱、顏色、尺寸、重量、產地等。
關係:現實的物理事件是依附於實體的,比如商品入庫事件,依附實體商品、貨位,就會有「庫存」的屬性產生;使用者購買商品,依附實體使用者、商品,就會有「購買數量」、「金額」的屬性產品。
實體之間建立關係時,存在對照關係:
1:1:即1對1的關係
1:n:即1對多的關係
n:m:即多對多的關係
在日常建模中,「實體」用矩形表示,「關係」用菱形,「屬性」用橢圓形。er實體關係模型也稱為e-r關係圖。
應用場景:
1、er模型是資料庫設計的理論基礎,當前幾乎所有的oltp系統設計都採用er模型建模的方式。
2、bill inom提出的數倉理論,推薦採用er關係模型進行建模。
3、bi架構提出分層架構,數倉底層ods、dwd也多採用er關係模型進行設計。
2、維度建模
維度建模源自資料集市,主要面向分析場景。ralph kimball推崇資料集市的集合為資料倉儲,同時也提出了對資料集市的維度建模,將資料倉儲中的表劃分為事實表、維度表兩種型別。
事實表:
在er模型中抽象出了有實體、關係、屬性三種類別,在現實世界中,每乙個操作型事件,基本都是發生在實體之間的,伴隨著這種操作事件的發生,會產生可度量的值,而這個過程就產生了乙個事實表,儲存了每乙個可度量的事件。
維度表:
維度,顧名思義,看待事物的角度。比如從顏色、尺寸的角度來比較手機的外觀,從cpu、記憶體等角度比較手機效能。
維度表一般為單一主鍵,在er模型中,實體為客觀存在的事務,會帶有自己的描述性屬性,屬性一般為文本性、描述性的,這些描述被稱為維度。
比如商品,單一主鍵:商品id,屬性包括產地、顏色、材質、尺寸、單價等,但並非屬性一定是文字,比如單價、尺寸,均為數值型描述性的,日常主要的維度抽象包括:時間維度表、地理區域維度表等。
維度建模通常又分為星型模型和雪花模型。
星型模型:
雪花模型:
星型模型和雪花模型的主要區別在於對維度表的拆分,對於雪花模型,維度表的設計更加規範,一般符合3nf;而星型模型,一般採用降維的操作,利用冗餘來避免模型過於複雜,提高易用性和分析效率。
雪花、星型模型對比:
2、效能:雪花模型由於存在維度間的關聯,採用3nf降低冗餘,通常在使用過程中,需要連線更多的維度表,導致效能偏低;星型模型反三正規化,採用降維的操作將維度整合,以儲存空間為代價有效降低維度表連線數,效能較雪花模型高。
3、etl:雪花模型符合業務er模型設計原則,在etl過程中相對簡單,但是由於附屬模型的限制,etl任務並行化較低;星型模型在設計維度表時反正規化設計,所以在etl過程中整合業務資料到維度表有一定難度,但由於避免附屬維度,可並行化處理。
大資料和傳統關係型資料庫的計算框架不一樣,例如對比mapreduce和oracle,在mapreduce裡面,每多乙個表的關聯,就多乙個job。mapreduce的每個任務進來,要申請資源,分配容器,各節點通訊等。有可能yarn排程時長大於任務執行時間,例如排程需要5秒才能申請到資源,而表之間的join只需要2秒。hive優化裡面,要盡可能減少job任務數,也就是減少表之間的關聯,可以用適當的冗餘來避免低效的查詢方式,這是和oracle等其他關係型資料庫不同的地方。
(點此了解:mapreduce作業執行機制)
3、data vault模型
data vault是在er模型的基礎上衍生而來,模型設計的初衷是有效的組織基礎資料層,使之易擴充套件,靈活應對業務變化,同時強調歷史性、可追溯性和原子性,不要求對資料進行過度的一致性處理,並非針對分析場景所設計。
data vault模型是一種中心輻射式模型,其設計重點圍繞著業務鍵的整合模式。這些業務鍵是儲存在多個系統中的、針對各種資訊的鍵,用於定位和唯一標識記錄或資料。
data vault模型包含三種基本結構:
1)中心表-hub:唯一業務鍵的列表,唯一標識企業實際業務,企業的業務主體集合。
3)衛星表-satellite:歷史的描述性資料,資料倉儲中資料的真正載體。
data vault是對er模型更進一步的規範化,由於對資料的拆解更偏向於基礎資料組織,在處理分析類場景時相對複雜,適合數倉底層構建,目前實際應用場景較少。
4、anchor
anchor是對data vault模型做了更進一步的規範化處理,初衷是為了設計高度可擴充套件的模型,核心思想是所有的擴張只新增而不修改,於是設計出的模型基本變成了k-v結構的模型,模型正規化達到了6nf。
由於過度規範化,使用中牽涉到太多的join操作,目前沒有實際案例,僅作了解。
四種基本建模方法對比:
當前主流建模方法為:er模型、維度建模。
1)er模型
er模型常用於oltp資料庫建模,應用到構建數倉時更偏重資料整合,站在企業整體考慮,將各個系統的資料按相似性一致性進行合併處理,為資料分析、決策服務,但並不便於直接用來支援分析。
問題:a)需要全面梳理企業所有的業務和資料流;
b)實施周期長;
c)對建模人員要求高。
2)維度模型
維度建模是面向分析場景而生,針對分析場景構建數倉模型,重點關注快速、靈活的解決分析需求,同時能夠提供大規模資料的快速響應效能。針對性強,主要應用於資料倉儲構建和olap引擎底層資料模型。
模型選擇和設計的原則:
a)數倉模型的選擇是靈活的,不侷限於某一種模型方法;
b)數倉模型的設計也是靈活的,以實際需求場景為導向;
c)模型設計要兼顧靈活性,可擴充套件,而對終端使用者透明性;
d)模型設計要考慮技術可靠性和實現成本。
完畢。
資料倉儲 資料倉儲部署
1 首先用下面的語句查詢是否有要建立的表空間 hospdw tab 和 hospdw idx 如果沒有,則把d database zyhip改為對應的路徑,有的話直接建立使用者 select tablespace name,file name,round bytes 1024 1024 0 size...
資料倉儲,什麼是資料倉儲?
資料倉儲,英文名稱為data warehouse,可簡寫為dw或dwh。資料倉儲是為企業所有級別的決策制定過程提供支援的所有型別資料的戰略集合。它是單個資料儲存,出於分析性報告和決策支援的目的而建立。為企業提供需要業務智慧型來指導業務流程改進和監視時間 成本 質量和控制。資料倉儲是決策支援系統 ds...
資料倉儲和資料倉儲分層
資料倉儲 data warehouse 可簡寫為dw或dwh。資料倉儲,是為企業所有級別的決策制定過程,提供所有型別資料支援的戰略集合。它是單個資料儲存,出於分析性報告和決策支援目的而建立。為需要業務智慧型的企業,提供指導業務流程改進 監視時間 成本 質量以及控制。1 問題簡單化,將乙個複雜的問題分...