通俗易懂了解什么是數據倉庫


什么是數據倉庫

數據倉庫(下文以“數倉”稱),顧名思義,存放數據的倉庫,它集合了各個業務系統的數據,以金融業為例,數倉包含了貸款業務、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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM