什麼是資料倉儲
資料倉儲(下文以“數倉”稱),顧名思義,存放資料的倉庫,它集合了各個業務系統的資料,以金融業為例,數倉包含了貸款業務、CRM、存款業務等資料。用於企業做資料分析、出報告、做決策;在有些公司也作為各業務系統的資料來源。
從邏輯上理解,資料庫和數倉沒有區別,都是通過資料庫軟體實現存放資料的地方,只不過從資料量來說,資料倉儲要比資料庫更龐大。
他們最主要的區別在於,傳統事務型資料庫如 MySQL 用於做聯機事務處理(OLTP),例如交易事件的發生等;而資料倉儲主要用於聯機分析處理(OLAP),例如出報表等。
有些同學可能想,資料分析、出報表等工作也可以直接通過業務資料庫完成呀,資料倉儲似乎也不是必需品。
如果是簡單的系統,比如初創時期,業務量少,使用者和資料少,幾臺伺服器和幾個MySQL組成的系統,那確實可以實現。但當業務越做越多,使用者和資料量很龐大,出報表需要跨叢集關聯多個系統的資料實現的話,那數倉還是很有必要的。
如果還不能理解,先想幾個問題
-
如果你要的資料分別存放在很多個不同的資料庫,甚至存在於各種日誌檔案中,你要如何獲取這些資料?
-
如果你從各資料來源中取出了你要的資料,但是發現格式不一樣,或者資料型別不一樣,你要怎麼規範?
-
如果有一天你需要在業務系統查歷史資料,但發現這些資料被修改過的,你要怎麼辦?
-
如果要跨叢集關聯各個不同業務系統的資料,要怎麼做?怎麼優化查詢時間?
-
……
數倉的出現,可以很好的解決上面這些問題。它通過資料抽取和清洗,將各個業務系統的資料整合落地到一個系統(數倉),規範化資料,方便在出報表做決策的時候獲取資料。
數倉的特點
- 整合性
數倉中儲存的資料來源於多個資料來源,原始資料在不同資料來源中的儲存方式各不相同。要整合成為最終的資料集合,需要從資料來源經過一系列抽取、清洗、轉換的過程。
- 穩定性
數倉中儲存的資料是歷史記錄,不允許被修改。使用者只能通過分析工具進行查詢和分析。
- 動態性
數倉的資料會隨時間變化而定期更新,這裡的定期更新不是指修改資料,一般是將業務系統發生變化的資料定期同步到數倉,和穩定性不衝突。不可更新是針對應用而言,即使用者分析處理時不更新資料。
- 主題性
傳統資料庫對應的業務不同,數倉需要根據需求,將不同資料來源的資料進行整合,即資料一般都圍繞某一業務主題進行建模。例如“貸款”主題、“存款”主題等。
數倉分層
數倉一般是分層的,而且各個公司都基於自己的業務場景進行分層,目前的分層可以說是五花八門,沒有標準答案。但是最主流的還是按照這樣進行分層:
可能有些同學又要問了,直接取需要的資料落地到表就行了,為什麼要分層?有啥好處?
試想一下,如果不做分層,你按照需求從各個源系統抽取資料落地了一張表,哪一天老闆讓你在原來的基礎上加個欄位,你怎麼做?
或者哪天這張表的資料出問題了,你如何定位是哪個模組或者環節出了問題?
數倉分層的意義在於
- 減少重複開發,在資料開發的過程中可以產生中間層,將公共邏輯下沉,減少重複計算;
- 清晰資料結構,每個分層分工明確,方便開發人員理解;
- 方便定位問題,通過分層瞭解資料血緣關係,在出問題的時候通過回溯定位問題;
- 簡單化複雜問題,和分治法思想類似,分而治之,將複雜的問題簡單化,還能解耦
總結
本文簡單介紹了數倉的概念和數倉的作用,以及數倉的分層和分層的優點,也算是簡單的入門。
後續如果有機會,我會繼續產出數倉和大資料相關的文章,如果覺得對你有幫助,可以點個贊再隨手關注,防止迷路。
轉載請註明來源: Author:Maxim
部落格園: https://www.cnblogs.com/lyuzt/articles/15155931.html
CDSN: https://blog.csdn.net/weixin_43596734/article/details/119784553