數據庫和數據倉庫的區別(個人理解)

一、從定義來看

  1. 數據庫,用來存儲結構化的數據,數據庫由多張表組成,每張表都有行列,是二維的。數據都是一行一行的插入到表中。

  2. 數據倉庫,其實也是存儲數據的,相對於數據庫來說存儲的數據量要更龐大。而且數據倉庫多是用於決策分析的。

舉個例子:
當我們註冊一個賬號的時候,後臺數據庫肯定有一張用戶表,這張表假設有一個用戶名字段和密碼字段。當我們註冊的時候,就會把信息一行一行的插入到表中。而當我們在前端登錄的時候,就需要填寫賬號密碼,這些數據就返回後臺跟用戶表進行比對,如果沒錯,就能登錄,這就是數據庫。數據庫都是跟業務掛鉤的,不同的業務會有不同的數據庫。

由於數據庫是跟業務掛鉤的,那麼每個業務功能就會對應有一個數據庫表,比如登錄功能就會對應有一個用戶表。

但是當我們想統計用戶登錄數量最多在哪個時間段?單單一個用戶表就無法得出結果。所以就需要重新設計數據庫的表結構,增加不同的指標進行分析,這就需要使用數據倉庫。數據倉庫的表是依照業務需求進行設計的。

  1. 從導入數據的操作來看
    1) 數據庫:一定會對要插入的數據進行嚴格的檢查,不滿足要求不能插入。
    2) 數據倉庫:對插入的數據不會檢查。Hive數據倉庫會存儲非常大量的數據,一次導入可能就是幾百G,幾十T,hive不檢查是不想讓導入的數據效率過於低下。

二、從整個流程架構來看

借用一張圖來看看:
在這裏插入圖片描述
數據倉庫是面向主題的,什麼是主題?對應上面這張圖就是分析OLAP階段。其實就是爲人做決策分析的。
數據倉庫一般只做查詢,不做修改。數據倉庫的數據是由數據庫中的數據抽取出來的。

因爲數據倉庫的每一個主題,不一定都只對應一個數據庫,每個主題所需要的源數據可能分佈在不同的數據庫中,因此需要對數據庫進行提取轉換再存入到數據倉庫。

對應上圖來說:
源數據OLTP(數據庫)收集存儲各種數據,是底層的原始數據,通過ETL對數據進行抽取、轉換、裝載,放入到ODS層。
ODS層的功能:清洗垃圾數據,更改不能入庫的格式爲數倉支持的格式或優化後的格式。

通過sql、python等手段將數據進行整合、重定義,剔除數據冗餘等,存放到EDW層。

根據業務需求,構建所需的指標,組建分析主題,存放到DM層。

構建面向一個一個不同主題進行分析OLAP,最後進行可視化。

三、實際就是OLTP和OLAP的區別

1、 OLTP(On-Line Transaction Processing),聯機事務處理。針對具體業務在數據庫聯機的日常操作。
2、 OLAP(On-Line Analytical Processing),聯機分析處理。針對主題歷史數據進行決策分析。

數據庫OLTP 數據倉庫OLAP
操作型 分析型
實體-關係(E-R)模型 星型模型或雪花模型
不停存儲新數據 存儲歷史數據,不包含最近的數據
可更新數據 只讀,只追加數據
面向事務 面向分析
數據量相對較小 數據量相對較大
舉例:用戶登錄驗證 舉例:用戶登錄時間分析

.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章