事實(shí)表、維度表嗅回、維度、度量
事實(shí)表:一般為具有可統(tǒng)計(jì)量化的信息的表摧茴。如訂單表適合作為事實(shí)表绵载,其中有訂購(gòu)數(shù)量、訂單金額等可以被統(tǒng)計(jì)和量化的列苛白。
維度表:一般為表示分析的業(yè)務(wù)角度的表娃豹。如商品信息表適合作為維度表,其中有商品類別购裙、商品商標(biāo)等可以作為分析的業(yè)務(wù)角度的列懂版。時(shí)間表通常作為維度表使用,便于按日 / 周 / 月 / 季 / 年統(tǒng)計(jì)業(yè)務(wù)數(shù)據(jù)躏率。
維度:一般為可分析的業(yè)務(wù)角度定续,如訂單日期表示日期維度、商品 ID 表示商品維度禾锤。
度量:一般為可統(tǒng)計(jì)量化的數(shù)值信息私股,如銷售總額、銷售總量等恩掷。通常為可量化的列與函數(shù)一起配合使用倡鲸,如 SUM、COUNT黄娘、TOP_N 等峭状。
Index
索引,在數(shù)據(jù)加載時(shí)將構(gòu)建索引逼争,索引將被用于加速查詢优床。索引分為聚合索引與明細(xì)索引。
- Aggregate Index
聚合索引誓焦,本質(zhì)是多個(gè)維度和度量的組合胆敞,適合回答聚合查詢,比如某年的銷售總額杂伟。(sum函數(shù)等聚合函數(shù)) - Table Index
表明細(xì)索引移层,本質(zhì)是大寬表的多路索引,適合回答精確到記錄的明細(xì)查詢赫粥,比如某用戶的最近 100 筆交易观话。(select col1,col2 from a;col1,col2為明細(xì)索引)
星型模型:
星型模是一種多維的數(shù)據(jù)關(guān)系,它由一個(gè)事實(shí)表和一組維表組成越平。每個(gè)維表都有一個(gè)維作為主鍵频蛔,所有這些維的主鍵組合成事實(shí)表的主鍵灵迫。強(qiáng)調(diào)的是對(duì)維度進(jìn)行預(yù)處理,將多個(gè)維度集合到一個(gè)事實(shí)表晦溪,形成一個(gè)寬表龟再。這也是我們?cè)谑褂胔ive時(shí),經(jīng)常會(huì)看到一些大寬表的原因尼变,大寬表一般都是事實(shí)表利凑,包含了維度關(guān)聯(lián)的主鍵和一些度量信息,而維度表則是事實(shí)表里面維度的具體信息嫌术,使用時(shí)候一般通過join來組合數(shù)據(jù)哀澈,相對(duì)來說對(duì)OLAP的分析比較方便。
雪花模型:
當(dāng)有一個(gè)或多個(gè)維表沒有直接連接到事實(shí)表上度气,而是通過其他維表連接到事實(shí)表上時(shí)割按,其圖解就像多個(gè)雪花連接在一起,故稱雪花模型磷籍。雪花模型是對(duì)星型模型的擴(kuò)展适荣。它對(duì)星型模型的維表進(jìn)一步層次化,原有的各維表可能被擴(kuò)展為小的事實(shí)表院领,形成一些局部的 "層次 " 區(qū)域弛矛,這些被分解的表都連接到主維度表而不是事實(shí)表。雪花模型更加符合數(shù)據(jù)庫(kù)范式比然,減少數(shù)據(jù)冗余丈氓,但是在分析數(shù)據(jù)的時(shí)候,操作比較復(fù)雜强法,需要join的表比較多所以其性能并不一定比星型模型高万俗。
星型模型和雪花模型的優(yōu)劣對(duì)比:
屬性 | 星型模型 | 雪花模型 |
---|---|---|
數(shù)據(jù)總量 | 多 | 少 |
可讀性 | 容易 | 差 |
表個(gè)數(shù) | 少 | 多 |
查詢速度 | 快 | 慢 |
冗余度 | 高 | 低 |
對(duì)事實(shí)表的情況 | 增加寬度 | 字段比較少,冗余底 |
擴(kuò)展性 | 差 | 好 |
總結(jié):
通過上面的對(duì)比饮怯,我們可以發(fā)現(xiàn)數(shù)據(jù)倉(cāng)庫(kù)大多數(shù)時(shí)候是比較適合使用星型模型構(gòu)建底層數(shù)據(jù)Hive表闰歪,通過大量的冗余來提升查詢效率,星型模型對(duì)OLAP的分析引擎支持比較友好蓖墅,這一點(diǎn)在Kylin中比較能體現(xiàn)库倘。而雪花模型在關(guān)系型數(shù)據(jù)庫(kù)中如MySQL,Oracle中非常常見置媳,尤其像電商的數(shù)據(jù)庫(kù)表于樟。在數(shù)據(jù)倉(cāng)庫(kù)中雪花模型的應(yīng)用場(chǎng)景比較少,但也不是沒有拇囊,所以在具體設(shè)計(jì)的時(shí)候,可以考慮是不是能結(jié)合兩者的優(yōu)點(diǎn)參與設(shè)計(jì)靶橱,以此達(dá)到設(shè)計(jì)的最優(yōu)化目的寥袭。