【數倉理論】

一、數倉建模方法論

1.1 ER模型(Entity Relationship、實體關系模型、范式模型)

ER模型是Bill Inmon提出的一種建模方法,實體關系模型將復雜的數據抽象為兩個概念 ---- 實體和關系
該模型在范式理論上符合3NF,這種模型目的是減少數據冗余,保證數據的一致性,這種模型不適合直接用于分析統計

范式一共有6種,范式級別越高,數據冗余越低:
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)
巴斯-科德范式(BCNF)、第四范式(4NF)、第五范式(5NF)

如下圖為根據ER模型所建立的模型,較為松散,物理表多(需多表join,所以不適合分析統計)
在這里插入圖片描述

1.1.1 第一范式(1NF)

第一范式(1NF)的核心原則:屬性不可切割
如下圖,“5臺電腦”要拆分為數量“5”和商品“電腦”兩個字段
在這里插入圖片描述

1.1.2 第二范式(2NF)

第二范式(1NF)的核心原則:不能存在非主鍵字段“部分函數依賴”于主鍵字段【除主鍵外其他字段完全依賴于主鍵】
如下圖,主鍵是(學號,課名),姓名完全依賴于學號,部分依賴于(學號,課名),因此是不滿足第二范式的,需將姓名拆分出來
在這里插入圖片描述

1.1.3 第三范式(3NF)

第三范式(1NF)的核心原則:不能存在傳遞函數依賴【決定某字段值的必須是主鍵】
如下圖,系主任傳遞依賴于學號(系主任依賴于系名,系名依賴于學號,因此為傳遞依賴)
在這里插入圖片描述

1.2 維度模型(重點)

維度模型是Ralph Kimball提出的一種建模方法,維度模型將復雜的業務抽象為兩個概念 ---- 事實和維度
該模型關注的重點在于用戶如何更快的完成需求分析及數據分析
如下圖為根據維度模型所建立的模型,中間是事實表,周圍是一圈維度表,模型更清晰、簡潔
在這里插入圖片描述

1.2.1 事實表

事實表是數據倉庫維度建模的核心,緊緊圍繞著業務過程來設計,其包含與該業務過程有關的維度引用(維度表外鍵)以及該業務過程的度量(通常是數字類型)
以上圖為例,維度表外鍵對應OderId,ProductId,LocationId等,度量對應SalesAmount
事實表的三種類型分為:事務事實表、周期快照事實表、累計快照事實表

事務事實表(重點)

事務型事實表用來記錄各業務過程,它保存的是各業務過程的最細粒度的操作事件。

設計事務事實表時一般可遵循以下四個步驟:
選擇業務過程→聲明粒度→確認維度(維度外鍵)→確認事實(度量)

周期快照事實表

周期快照事實表以具有規律性的、可預見的時間間隔來記錄事實,主要用于分析一些存量型(例如商品庫存,賬戶余額)或者狀態型(空氣溫度,行駛速度)指標。一般是直接從業務系統同步獲得。

比如有一張記錄賬戶余額變動的表,每次計算賬戶余額要進行聚合操作,而使用周期快照事實表則可以直接獲得其余額,不用再進行聚合操作
對于空氣溫度、行駛速度這些狀態型指標,由于它們的值是連續的,所以無法使用事務型事實表統計而只能定期對其進行采樣,構建周期型快照事實表。

累計快照事實表

累計快照事實表是基于一個業務流程中的多個關鍵業務過程聯合處理而構建的事實表,如交易流程中的下單、支付、發貨、確認收貨業務過程。
累積型快照事實表通常具有多個日期字段,每個日期對應業務流程中的一個關鍵業務過程(里程碑)。

訂單id用戶id下單日期支付日期發貨日期確認收貨日期訂單金額支付金額
100112342020-06-142020-06-152020-06-162020-06-1710001000

累積型快照事實表主要用于分析業務過程(里程碑)之間的時間間隔等需求。使用累積型快照事實表進行統計,就能避免事務事實表的關聯操作,從而變得十分簡單高效。

1.2.2 維度表

事實表圍繞業務過程進行設計,而維度表則圍繞業務過程所處的環境進行設計
維度表主要包含一個主鍵和各種維度字段維度字段稱為維度屬性

設計維度表時一般可遵循以下三個步驟:
確定維度表→確定主維表和相關維表→確定維度屬性

1)確定維度表:

確定與每個事實表相關的維度

  1. 如果存在多個事實表與同一個維度都相關的情況,這種情況需保證維度的唯一性,即只創建一張維度表。
  2. 如果某些維度表的維度屬性很少,例如只有一個**名稱,則可不創建該維度表,而把該表的維度屬性直接增加到與之相關的事實表中,這個操作稱為維度退化
2)確定主維表和相關維表:

主維表與相關維表指的是業務系統中某維度相關的表

3)確定維度屬性:

確定維度屬性即確定維度表字段。維度屬性主要來自于業務系統中與該維度對應的主維表和相關維表。維度屬性可直接從主維表或相關維表中選擇,也可通過進一步加工得到。

1.3 維度表的星型模型、雪花模型

規范化是指使用一系列范式設計數據庫的過程,其目的是減少數據冗余,增強數據的一致性。通常情況下,規范化之后,一張表的字段會拆分到多張表。
反規范化是指將多張表的數據冗余到一張表,其目的是減少join操作,提高查詢性能。

在設計維度表時,如果對其進行規范化,得到的維度模型稱為雪花模型,如果對其進行反規范化,得到的模型稱為星型模型
雪花模型與星型模型是針對于維度表來說的,區別在于是否進行規范化
如下圖,item表和location表,雪花模型對其進行了規范化,拆分出來了一張表
在這里插入圖片描述
數據倉庫系統的主要目的是用于數據分析和統計,所以是否方便用戶進行統計分析決定了模型的優劣。采用雪花模型,用戶在統計分析的過程中需要大量的關聯操作,而采用星型模型,則方便、易用且性能好。所以出于易用性和性能的考慮,維度表一般是很不規范化的

1.4 維度表的變化

維度屬性是會隨時間變化的,比如客戶的手機號。
保存維度數據的歷史狀態,通常有以下兩種做法,分別是全量快照表拉鏈表

全量快照表

離線數據倉庫的計算周期通常為每天一次,所以可以每天保存一份全量的維度數據。
優點: 簡單有效,方便理解和使用
缺點: 浪費存儲空間,尤其是當數據的變化比例比較低時。

拉鏈表

拉鏈表,記錄每條信息的生命周期,一旦生命周期結束,就重新開始一條新的記錄,把當前日期放入生效開始日期,如果當前信息至今有效,在生效結束日期中填入一個極大值(如9999-12-31)。
該方式更加高效的保存維度信息的歷史狀態。
在這里插入圖片描述
拉鏈表適合于:數據會發生變化,但是變化頻率不高的維度。

二、數據的同步策略

數據的同步策略有全量同步增量同步

2.1 全量同步

全量同步,就是每天都將業務數據庫中的全部數據同步一份到數據倉庫,這是保證兩側數據同步的最簡單的方式。

2.2 增量同步

增量同步,就是每天只將業務數據中的新增及變化數據同步到數據倉庫。采用每日增量同步的表,通常需要在首日先進行一次全量同步。

通常維度表使用全量同步,事實表使用增量同步

同步策略
事務事實表增量同步
周期快照事實表全量同步
累計快照事實表增量同步
維度表中的全量快照表全量同步
維度表中的拉鏈表增量同步

三、數倉設計

1.1 數倉分層規劃

在這里插入圖片描述
維度建模的事實表存放在DWD層,維度表存放在DIM層

1.2 數倉構建流程

在這里插入圖片描述
數據倉庫模型設計除橫向的分層外,通常也需要根據業務情況進行縱向劃分數據域。
劃分數據域的意義是便于數據的管理和應用。
通常可以根據業務過程或者部門進行劃分。

1.3 業務總線矩陣

業務總線矩陣中包含維度模型所需的所有事實(業務過程)以及維度,以及各業務過程與各維度的關系。
矩陣的行是一個個業務過程,矩陣的列是一個個的維度,行列的交點表示業務過程與維度的關系。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/214564.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/214564.shtml
英文地址,請注明出處:http://en.pswp.cn/news/214564.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

測距傳感器

測距傳感器 電子元器件百科 文章目錄 測距傳感器前言一、測距傳感器是什么二、測距傳感器的類別三、測距傳感器的應用實例四、測距傳感器的作用原理總結前言 測距傳感器廣泛應用于自動化控制、機器人導航、無人駕駛、測量儀器等領域。不同類型的測距傳感器具有不同的測距范圍、…

xtu oj 1178 Rectangle

題目描述 給你兩個平行于坐標軸的矩形,請判斷兩者是不是相交(面積有重合的部分)? 輸入 第一行是一個整數K,表示樣例數。 每個樣例占兩行,每行是4個整數,表示一個矩形的對角線點的坐標&#x…

重磅!2023中國高校計算機大賽-人工智能創意賽結果出爐

目錄 中國計算機大賽-人工智能創意賽現場C4-AI大賽頒獎及留影800個AI應用?這屆大學生真能“搞事情”AI原生時代,百度要再培養500萬大模型人才 中國計算機大賽-人工智能創意賽現場 12月8日,杭州,一位“白發老人”突然摔倒在地&…

[基礎IO]文件描述符{C庫函數\系統接口\初識fd}

文章目錄 1.基礎知識1.1對文件的認識1.2對系統調用接口的認識1.3如何理解LInux下一切皆文件? 2.C語言的庫函數2.1FILE *fopen(const char *path, const char *mode);2.2對fopen()的mode的w/a的深層認識2.3fclose()2.4size_t fwrite(const void *ptr, size_t size, size_t nmem…

測試經理主管面試題

測試專業技能 請談談您對軟件測試生命周期(STLC)的理解 需求分析:在這個階段,測試團隊仔細分析項目需求,理解產品功能和非功能需求。這有助于確定測試的范圍和目標,為后續階段奠定基礎。測試計劃&#xf…

【桌面應用開發】Tauri是什么?基于Rust的桌面應用

自我介紹 做一個簡單介紹,酒架年近48 ,有20多年IT工作經歷,目前在一家500強做企業架構.因為工作需要,另外也因為興趣涉獵比較廣,為了自己學習建立了三個博客,分別是【全球IT瞭望】,【…

深入.NET平臺和C#編程總結大全

第一章 簡單認識.NET框架 (1)首先我們得知道 .NET框架具有兩個主要組件:公共語言進行時CLR(Common Language Runtime)和框架類庫FCL(Framework Class Library) 配圖: (…

JSON

JSON指的是 JavaScript 對象表示法(JavaScript Object Notation) javascript對象:javascript中,除開JavaScript原始值(字符串,數字,布爾值,null,正則表達式)的都是javascript對象 JS…

Java - JVM內存區域的劃分

Java 程序運行時,需要在內存中分配空間。為了提高運算效率,就對空間進行了不同區域的劃分,因為每一片區域都有特定的處理數據方式和內存管理方式。 分配:通過關鍵字new創建對象分配內存空間,對象存在堆中。 釋放 &…

柔性數組詳解

前言:柔性數組是C99中新添加的概念,它是結構體里面的最后一個成員,因為它的大小未知,所以很靈活,稱之為柔 1 柔性數組占不占結構體的空間呢? 不占 typedef struct Stu {char y;int x;int arr[];//有些編譯器…

數據在內存中的存儲(整型篇)

1.辨析原碼反碼補碼: 1.原碼:有32位(int類四個字節,一個字節八個比特位),第一位是符號位,0正1負,其余為二進制位。 2.計算一般是對原碼進行計算,但在負數計算使用原碼會導…

強化學習(二)——Dueling Network(DQN改進)

與DNQ相比,使用優勢函數(A函數)和狀態價值函數(V)代替之前的Q(動作價值)函數, 最核心公式為 Q ? ( s , a ) A ? ( s , a ) V ? ( s ) ? max ? a A ? ( s , a ) Q^*(s,a)A^*(s,a)V^*(s)-\max_a A^*(s,a) Q?(s,a)A?(s,a)V…

高效利用內存資源之動態內存管理詳解

目錄 一、為什么存在動態內存分配 二、動態內存函數的介紹 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常見的動態內存錯誤 3.1對NULL指針的解引用操作 3.2對動態開辟空間的越界訪問 3.3對非動態開辟內存使用free釋放 3.4使用free釋放一塊動態開辟內存的一部分 3.…

Spring Boot 3 集成 Druid 連接池詳解

在現代的Java應用中,使用一個高效可靠的數據源是至關重要的。Druid連接池作為一款強大的數據庫連接池,提供了豐富的監控和管理功能,成為很多Java項目的首選。本文將詳細介紹如何在Spring Boot 3項目中配置數據源,集成Druid連接池&…

【ACM獨立出版、確定的ISBN號】第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024)

第三屆密碼學、網絡安全和通信技術國際會議(CNSCT 2024) 2024 3rd International Conference on Cryptography, Network Security and Communication Technology 隨著互聯網和網絡應用的不斷發展,網絡安全在計算機科學中的地位越來越重要&…

Android Kotlin 泛型:強大的類型抽象和重用利器

一、什么是泛型? 泛型是一種參數化類型的機制,它允許我們在定義類、接口和方法時使用類型參數,從而實現代碼的重用和類型安全。通過使用泛型,我們可以將類型作為參數傳遞給類或方法,在不同的場景中實現靈活的類型適配…

精選:免費且高效的郵件營銷軟件推薦

好用的郵件營銷軟件可以幫助企業獲取客戶、維系客戶關系。對于有想做郵件營銷想法,但是想先試試的企業來講,免費版郵件營銷軟件就是個不錯的選擇。當然,免費的郵件郵件營銷軟件雖然在價格上有極大的優勢,但是功能上會有各種限制。…

Java生態系統最受歡迎的工具類使用指南 ?

???? 博主貓頭虎(????)帶您 Go to New World??? ?? 博客首頁——????貓頭虎的博客?? ?? 《面試題大全專欄》 ?? 文章圖文并茂??生動形象??簡單易學!歡迎大家來踩踩~?? ?? 《IDEA開發秘籍專欄》 ?? 學會IDEA常用操作,工作效率翻倍~?? ?…

【小白專用】MySQL查詢數據庫所有表名及表結構其注釋

一、先了解下INFORMATION_SCHEMA 1、在MySQL中,把INFORMATION_SCHEMA看作是一個數據庫,確切說是信息數據庫。其中保存著關于MySQL服務器所維護的所有其他數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權 限等。在INF…

網絡安全——SSH密碼攻擊實驗

一、實驗目的要求: 二、實驗設備與環境: 三、實驗原理: 四、實驗步驟:? 五、實驗現象、結果記錄及整理: 六、分析討論與思考題解答: 一、實驗目的要求: 1、了解SSH密碼攻擊、FTP密碼攻擊…