有人說數據庫與數據倉庫它們的名字不同,肯定不同。哈哈哈哈,這話也對,那麼在講兩者之間的區别之前,我們先來了解一下什麼是數據倉庫。
一、數據倉庫誕生的原因數據倉庫,英文名稱為Data Warehouse,可簡寫為DW或DWH。數據倉庫顧名思義,是一個很大的數據存儲集合,出于企業的分析性報告和決策支持目的而創建,對多樣的業務數據進行篩選與整合。它為企業提供一定的BI(商業智能)能力,指導業務流程改進、監視時間、成本、質量以及控制。
數據倉庫将各個異構的數據源數據庫的數據給統一管理起來,并且完成了質量較差的數據的剔除、格式轉換,最終按照一種合理的建模方式來完成源數據組織形式的轉變,以更好的支持到前端的可視化分析。數據倉庫的輸入方式是各種各樣的數據源,最終的輸出用于企業的數據分析、數據挖掘、數據報表等方向。
三、數據倉庫的主要特征數據倉庫是面向主題的(Subject-Oriented )、集成的(Integrated)、穩定的(Non-Volatile)和時變的(Time-Variant )數據集合,面向數據分析,用以支持管理決策。
1.主題性
不同于傳統數據庫對應于某一個或多個項目,數據倉庫根據使用者實際需求,将不同數據源的數據在一個較高的抽象層次上做整合,所有數據都圍繞某一主題來組織。
2.集成性
數據倉庫中存儲的數據是來源于多個數據源的集成,原始數據來自不同的數據源,存儲方式各不相同。要整合成為最終的數據集合,需要從數據源經過一系列抽取、清洗、轉換的過程。
3.穩定性
數據倉庫中保存的數據是一系列曆史快照,不允許被修改。用戶隻能通過分析工具進行查詢和分析。這裡說明一點,數據倉庫基本上是不許允許用戶進行修改,删除操作的。大多數的場景是用來查詢分析數據。
4.時變性
數據倉庫會定期接收新的集成數據,反應出最新的數據變化。這和穩定特點并不矛盾。
另外說明,上面我們已經說了數據倉庫中的曆史數據是不能修改的,那我們每天修改或新增的數據,從業務數據庫中導入數據倉庫中,可以以時間戳标記版本來标記最新數據,老舊的數據就可以定期删除,保證數據分析的準确性。
四、數據倉庫分層架構按照數據流入流出的過程,數據倉庫架構可分為三層——源數據、數據倉庫、數據應用。
數據倉庫的數據來源于不同的源數據,并提供多樣的數據應用,數據自下而上流入數據倉庫後向上層開放應用,而數據倉庫隻是中間集成化數據管理的一個平台。
五、數據倉庫之ETL建立OLAP應用之前,我們要想辦法把各個獨立系統的數據抽取出來,經過一定的轉換和過濾,存放到一個集中的地方,成為數據倉庫。這個抽取,轉換,加載的過程叫ETL(Extract, Transform,Load),目的是将企業中分散、零亂、标準不統一的數據整合到一起。
ETL是數據倉庫的流水線,也可以認為是數據倉庫的血液,它維系着數據倉庫中數據的新陳代謝,而數據倉庫日常的管理和維護工作的大部分精力就是保持ETL的正常和穩定。
1、抽取
抽取的數據源分為結構化數據、非結構化數據,半結構化數據。結構化一般采用JDBC、數據庫日志方式,非結構或半結構化數據會引發文件變動。
抽取方式:全量抽取:适用于數據量小且不容易判斷其數據發生改變的諸如關系表,維度表,配置表等,一般用于初始化數據。增量抽取:适用于數據量大,為了節省抽取時間而采用的抽取策略,一般用于數據更新
2、清洗
空值處理:将空值替換為特定值或直接過濾掉
驗證數據正确性:把不符合業務含義的數據做統一處理
規範數據格式:比如把所有日期都規範成YYYY-MM-DD的格式
數據轉碼:把一個源數據中用編碼表示的字段通過關聯編碼表轉換成代表其真實意義的值
數據标準統一:比如在源數據中表示男女的方式有很多種,在抽取的時候直接根據模型中定義的值做轉化。
注:主要是針對非結構化或半結構化數據
3、轉換和加載
轉換:用ODS中的增量或者全量數據來刷新DW中的表
加載:每insert數據到一張表都可以稱為數據加載,就是将處理完的數據導入到對應的目标源裡
六、ETL工具結構化數據ETL工具:
Sqoop、Kettle、Datastage、Informatica、Kafka
非|半結構化數據ETL工具:
Flume、Logstash
上面我已經介紹了數據倉庫的面貌,現在讓我們看一下它們之間的區别
數據庫與數據倉庫的區别數據庫:數據庫是面向交易的處理系統(業務系統),它是針對具體業務在數據庫聯機的日常操作,通常對記錄進行查詢、修改。用戶較為關心操作的響應時間、數據的安全性、完整性和并發支持的用戶數等問題。傳統的數據庫系統作為數據管理的主要手段,主要用于操作型處理,也被稱為聯機事務處理 OLTP(On-Line Transaction Processing)。
數據倉庫::數據倉庫一般針對某些主題的曆史數據進行分析,支持管理決策,又被稱為聯機分析處理 OLAP(On-Line Analytical Processing)。
首先要明白,數據倉庫的出現,并不是要取代數據庫。
數據倉庫VS數據庫
eg:以銀行業務為例,數據庫是事務系統的數據平台,客戶在銀行做的每筆交易都會寫入數據庫,被記錄下來,這裡,可以簡單地理解為用數據庫記賬。 而數據倉庫是分析系統的數據平台,它從事務系統獲取數據,并做彙總、加工,為決策者提供決策的依據。比如,某銀行某分行一個月發生多少交易,該分行當前存款餘額是多少。如果存款又多,消費交易又多,那麼該地區就有必要設立ATM了。
顯然,銀行的交易量是巨大的,通常以百萬甚至千萬次來計算。事務系統是實時的,這就要求時效性,客戶存一筆錢需要幾十秒是無法忍受的,這就要求數據庫隻能存儲很短一段時間的數據。而分析系統是事後的,它要提供關注時間段内所有的有效數據。這些數據是海量的,彙總計算起來也要慢一些,但是,隻要能夠提供有效的分析數據就達到目的了。數據倉庫,是在數據庫已經大量存在的情況下,為了進一步挖掘數據資源、為了決策需要而産生的,它決不是所謂的“大型數據庫”。
關于麥聰軟件
麥聰軟件是一家大數據分析和解決方案軟件研發企業,緻力于幫助中國大企業客戶構建數據平台,數據驅動業務分析,實現數據資産化和數據服務化,公司現有開放型數據中台産品和企業雲盤産品.
詳情訪問:麥聰軟件官網
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!