偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

數(shù)倉(cāng) | Kimball的維度建模過(guò)時(shí)了嗎?

大數(shù)據(jù)
Inmon和Kimball是兩大主要陣營(yíng),但是Kimball的維度建模理論對(duì)于現(xiàn)代數(shù)倉(cāng)建設(shè)的影響可謂是非常深遠(yuǎn)的,所以本文主要討論維度建模的相關(guān)問(wèn)題。

[[416770]]

本文轉(zhuǎn)載自微信公眾號(hào)「大數(shù)據(jù)技術(shù)與數(shù)倉(cāng)」,作者西貝。轉(zhuǎn)載本文請(qǐng)聯(lián)系大數(shù)據(jù)技術(shù)與數(shù)倉(cāng)公眾號(hào)。

從20世紀(jì)80年代中期以來(lái),kimball一直是數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能行業(yè)維度建模方法的思想開(kāi)拓者。維度建模之初假設(shè)數(shù)據(jù)倉(cāng)庫(kù)僅限于單服務(wù)器數(shù)據(jù)庫(kù),隨著大數(shù)據(jù)時(shí)代的到來(lái),分布式計(jì)算和分式存儲(chǔ)成為了新的趨勢(shì),所以Ralph Kimball所普及的維度數(shù)據(jù)建模方法和技術(shù)需要一些修訂,這樣才能更好地滿足大數(shù)據(jù)建模的需求。需要注意的是,在數(shù)據(jù)倉(cāng)庫(kù)領(lǐng)域, Inmon和Kimball是兩大主要陣營(yíng),但是Kimball的維度建模理論對(duì)于現(xiàn)代數(shù)倉(cāng)建設(shè)的影響可謂是非常深遠(yuǎn)的,所以本文主要討論維度建模的相關(guān)問(wèn)題。

不要使用代理鍵

在KimBall的維度建模中,必須使用代理鍵作為每個(gè)維表的主鍵,用于處理緩慢變化維。

這個(gè)問(wèn)題對(duì)于初學(xué)數(shù)倉(cāng)維度建模的人而言,很容易陷入Kimball提出的代理鍵的漩渦之中,以至于把時(shí)間都浪費(fèi)了。其實(shí)代理鍵在大數(shù)據(jù)倉(cāng)庫(kù)環(huán)境下顯得很不合時(shí)宜,并且很難維護(hù)。在實(shí)際的建模中使用自然鍵是一個(gè)很好的選擇,如果維度有一個(gè)復(fù)合主鍵,只需將它們與合理的分隔符連接在一起,即可根據(jù)多個(gè)自然鍵生成單個(gè)鍵。

總結(jié)下來(lái)不使用代理鍵主要有一下兩個(gè)原因:

  • 分布式計(jì)算系統(tǒng),淡化了事務(wù)的概念,生成代理鍵的代價(jià)會(huì)很高
  • 代理鍵會(huì)大大增加ETL的復(fù)雜性,對(duì)于ETL任務(wù)的開(kāi)發(fā)和維護(hù)成本很高

避免使用 Type-2 SCD

緩慢變化維是維度建模理論的一個(gè)非常重要的概念,大多數(shù)情況下,Type-0 或 Type-1 SCD 可以解決問(wèn)題。除非有特別關(guān)鍵的原因,否則我會(huì)避免使用 Type-2 SCD。尤其是在大數(shù)據(jù)環(huán)境下的數(shù)據(jù)建模,幾乎很少使用Type-2 SCD。

關(guān)于SCD的解釋如下:

  • SCD1:通過(guò)更新維度記錄直接覆蓋已存在的值,它不維護(hù)記錄的歷史。SCD1一般用于修改錯(cuò)誤的數(shù)據(jù)。
  • SCD2:在源數(shù)據(jù)發(fā)生變化時(shí),給維度記錄建立一個(gè)新的“版本”記錄,從而維護(hù)維度歷史。SCD2不刪除、修改已存在的數(shù)據(jù)。
  • SCD3:通常用作保持維度記錄的幾個(gè)版本。它通過(guò)給某個(gè)數(shù)據(jù)單元增加多個(gè)列來(lái)維護(hù)歷史。例如,為了記錄客戶地址的變化,customer_dim維度表有一個(gè) customer_address列和一個(gè)previous_customer_address列,分別記錄當(dāng)前和上一個(gè)版本的地址。SCD3可以有效維護(hù)有限的歷史,而不像SCD2那樣保存全部歷史。SCD3 很少使用。它只適用于數(shù)據(jù)的存儲(chǔ)空間不足并且用戶接受有限維度歷史的情況。

如果非得需要實(shí)現(xiàn) Type-2 SCD(不建議使用),也不要使用代理鍵。相反,將自然鍵與表示 SCD 中的有效日期和到期日期字段結(jié)合使用。這只是查詢稍微復(fù)雜一點(diǎn),但更靈活,更容易實(shí)現(xiàn),并且避免了對(duì)代理鍵的需要。

維表快照

在關(guān)系型數(shù)據(jù)倉(cāng)庫(kù)時(shí)代,快照維度顯得沒(méi)有意義,但在大數(shù)據(jù)環(huán)境中卻非常有意義。簡(jiǎn)單將就是使用分區(qū)表,每個(gè)分區(qū)內(nèi)存儲(chǔ)的是截止當(dāng)前時(shí)間的全量維度信息。

通過(guò)快照的方式處理緩慢變化維,是在大數(shù)據(jù)環(huán)境的數(shù)據(jù)倉(cāng)庫(kù)實(shí)踐中常用的方式。以離線數(shù)倉(cāng)為例,計(jì)算周期一般是每天一次,基于此周期,處理緩慢變化維的方式就是每天保留一份全量的快照數(shù)據(jù)。以商品維度為例,就是每天保留一份全量的商品快照數(shù)據(jù)。在下游的使用過(guò)程中,可以獲取每天的維度信息,使用起來(lái)非常方便。

優(yōu)點(diǎn)

  • 簡(jiǎn)單,開(kāi)發(fā)和維護(hù)成本低
  • 方便,很容易理解,下游使用數(shù)據(jù)時(shí)只需要限定所需要的日期即可

缺點(diǎn)

  • 存儲(chǔ)浪費(fèi)
  • 綜合看來(lái),由于存儲(chǔ)成本遠(yuǎn)低于CPU、內(nèi)存的成本,此方法是犧牲存儲(chǔ)獲取ETL效率優(yōu)化和邏輯上的簡(jiǎn)單,顯然是利大于弊的。

數(shù)據(jù)建模的非規(guī)范化

所謂的非規(guī)范化,即是將某些維度屬性冗余至事實(shí)表。過(guò)去之所以不贊成這樣做,部分原因是因?yàn)?RDBMS 將數(shù)據(jù)存儲(chǔ)在表中的方式。隨著 Parquet 和 ORC 等列式數(shù)據(jù)存儲(chǔ)格式的出現(xiàn);這不再是一個(gè)大問(wèn)題。

在傳統(tǒng)的維度建模的星型模型中,對(duì)于維度的處理是將其單獨(dú)存放在專門(mén)的維表中,然后通過(guò)事實(shí)表的外鍵獲取維度。這樣做的目的是為了減少事實(shí)表的冗余,從而減少存儲(chǔ)消耗。

但是在大數(shù)據(jù)背景下,考慮到提高下游任務(wù)的使用效率,降低獲取數(shù)據(jù)的復(fù)雜性,減少關(guān)聯(lián)表的數(shù)量,通常的做法是將常用的維度冗余至事實(shí)表中。

善于使用復(fù)雜的數(shù)據(jù)類型

通常,作為數(shù)據(jù)工程師,我們的工作是將非結(jié)構(gòu)化數(shù)據(jù)集重新組織為結(jié)構(gòu)化(或半結(jié)構(gòu)化)數(shù)據(jù)集,但是在一些場(chǎng)景下,非結(jié)構(gòu)化是一個(gè)很好的選擇。

復(fù)雜的數(shù)據(jù)類型違反了最重要的范式(原子列)規(guī)則,其實(shí)你會(huì)發(fā)現(xiàn),維度數(shù)據(jù)建模的許多傳統(tǒng)理論都違反了其中的一些規(guī)則。由于復(fù)雜數(shù)據(jù)類型使用起來(lái)非常靈活,其在現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)中功能是非常強(qiáng)大的。

當(dāng)某個(gè)實(shí)體的詳細(xì)信息在不久的將來(lái)發(fā)生變化時(shí),使用一個(gè) JSON來(lái)保存這些字段是很有必要的,直到schema的細(xì)節(jié)可以固化。

對(duì)于一對(duì)多的情況,使用數(shù)組或許是一個(gè)很好的方案,例如,如果在商品維度中存儲(chǔ)一些標(biāo)簽字段,我們就可以將這些字段存在在一個(gè)數(shù)組字段中,而不是將標(biāo)簽存儲(chǔ)在 一張標(biāo)簽表中。

值得注意的是,對(duì)于一些特殊的場(chǎng)景,要善于使用復(fù)雜類型,而不是濫用復(fù)雜數(shù)據(jù)類型。結(jié)構(gòu)化依然是建模過(guò)程中需要考慮的重點(diǎn)。

總結(jié) 

Ralph Kimball的維度建模理論對(duì)于當(dāng)今數(shù)據(jù)倉(cāng)庫(kù)建模的影響可謂是非常深遠(yuǎn)的,我們現(xiàn)在主流的數(shù)倉(cāng)建模都是基于維度建模的。隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,維度建模的一些方法需求隨之做出一些調(diào)整,但是其核心思想是不變的。另外,作為數(shù)倉(cāng)開(kāi)發(fā)者,我們要遵循一個(gè)準(zhǔn)則:數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)是為了業(yè)務(wù)服務(wù)的,是為了發(fā)揮數(shù)據(jù)運(yùn)營(yíng)的優(yōu)勢(shì)而存在的,所以彰顯數(shù)據(jù)價(jià)值,賦能業(yè)務(wù)增長(zhǎng)才是我們需要考慮的最根本問(wèn)題。

 

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)技術(shù)與數(shù)倉(cāng)
相關(guān)推薦

2024-04-30 00:00:00

數(shù)倉(cāng)維度建模

2023-11-23 16:59:37

數(shù)據(jù)倉(cāng)庫(kù)建模

2017-10-25 14:15:55

大數(shù)據(jù)Hadoop維度建模

2017-10-26 09:31:14

Hadoop維度建模Kimball

2021-12-02 08:41:30

數(shù)倉(cāng)建模設(shè)計(jì)

2022-03-01 17:16:16

數(shù)倉(cāng)建模ID Mapping

2023-08-15 08:12:12

數(shù)倉(cāng)建模數(shù)倉(cāng)建設(shè)

2012-01-12 12:53:25

2019-03-10 16:21:05

大數(shù)據(jù)深度學(xué)習(xí)人工智能

2020-12-15 08:16:44

Vite工具系統(tǒng)

2016-11-21 12:26:58

編程代碼

2023-11-15 13:36:00

數(shù)倉(cāng)建設(shè)數(shù)據(jù)中臺(tái)

2024-08-13 08:14:55

2023-09-11 08:00:00

代碼審查開(kāi)發(fā)

2022-08-22 17:46:56

虛擬數(shù)倉(cāng)Impala

2022-07-26 15:38:58

數(shù)據(jù)倉(cāng)數(shù)據(jù)治理數(shù)據(jù)團(tuán)隊(duì)

2022-11-04 18:28:31

數(shù)倉(cāng)建模大數(shù)據(jù)

2020-04-09 15:32:20

數(shù)據(jù)科學(xué)AutoML代智能

2021-01-31 23:54:23

數(shù)倉(cāng)模型

2022-04-26 08:10:33

MySQL存儲(chǔ)InnoDB
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)