數據倉庫的誕生原因
隨著互聯網的普及,信息技術已經深入到各行各業,并逐步融入到企業的日常運營中。然而,當前企業在信息化建設過程中遇到了一些困境與挑戰。
1、歷史數據積存。過去企業的業務系統往往是在較長時間內建設的,很少進行大面積的改造或者升級,歷史數據留存在業務系統中。隨著業務的不斷增長,歷史數據使用頻率低,業務數據庫中的歷史數據越來越多,大量歷史數據堆積,從而影響了業務數據庫的性能。
2、信息系統分散。企業各個部門自己建立的獨立數據抽取系統會導致數據不一致,難以進行數據整合,不同系統的數據口徑不統一、不規范。這導致了數據結構復雜,開發難度大,分析難以標準化,數據應用難度大。

企業信息系統分散
業務數據庫面向于業務系統,而數據倉庫面向于業務分析。為了滿足企業數據分析需要,數據倉庫應運而生。
數據倉庫的基本特點
數據倉庫主要用來對寄存的歷史數據進行存儲和管理,并使用一些分析方法對數據進行分析和整理(如OLAP、數據分析),從而提供大量數據支持,為企業構建BI打下堅實基礎。
數據倉庫有以下特點:
1、集成的:原始數據是從多個數據源獲得,如文件、數據庫等。要將這些來源不同的原始數據整合到一個數據庫中,就必須對這些源進行抽取、清洗、轉換。
2、面向主題的:數據倉庫為數據分析提供服務,根據主題將原始數據集合在一起。

數倉特點:面向主題
3、時變性:數據倉庫會定期接受、集成新的數據,從而反映出數據的最新變化。
4、非易失性:數據倉庫中保存的數據是一系列歷史快照,一旦進入數據倉庫,就不允許被修改。同時,對數據倉庫中保存的數據進行查詢、分析時,也只能通過專門的工具進行。

數倉特點:非易失性
數據倉庫和數據庫的區別
數據庫是面向事務設計的,主要操作是隨機讀寫。在設計過程中,為了避免冗余,常采用符合范式的規范來設計。
數據倉庫是面向主題設計的,主要操作為批量讀取和寫入。數據倉庫關注數據整合和分析,會引入冗余,采用反范式的方式進行設計。

數據庫和數據倉庫的對比
數據倉庫建設方案
傳統數據倉庫和大數據數據倉庫是兩種不同類型的數據倉庫,需要采用不同的建設方案。
傳統數據倉庫通常是由關系型數據庫組成的 MPP (大規模并行處理)集群來進行數據存儲和運算,采用一定的數據模型,如星型模型、雪花模型等,來設計數據倉庫的結構。但是,隨著應用系統的發展,其擴展性受到了很大限制,并且隨著業務應用的不斷增加,也逐漸產生了一些熱點問題。

傳統數據倉庫的熱點問題
大數據數據倉庫通常采用分布式計算技術,如Hadoop、Spark等作為存儲和計算引擎,使用工具或編程語言設計處理邏輯,實現對不同數據源的匯聚、清洗、計算和分析。大數據數據倉庫利用了大數據天然的擴展性來完成海量數據的存放,同時也把SQL轉換成了針對大數據計算引擎的任務,實現數據的分析。雖然大數據數據倉庫具有很多優點,但是仍然存在一些挑戰和問題:
1. SQL的支持率比較低。大數據計算引擎有自己的語言和邏輯,所以有些SQL查詢無法很好地轉換成它們能夠理解的任務。
2. 缺少事務支持。因為大數據計算引擎本質上是分布式的,并且數據分散在多個節點上,所以很難實現完整的事務支持。
3. 數據量較少時計算速度可能比較慢。大數據數據倉庫可以通過計算資源的橫向擴展來提高計算速度,所以當數據量較少時,可能需要較長的時間來完成分析。

大數據數倉
現在企業的信息化建設和數據倉庫的構建面臨很多挑戰,需要根據企業的現狀和需要解決的問題,選擇合適的方案,不能一蹴而就。很顯然在目前的信息時代,借助類似于FineDataLink的這些工具,可以讓企業加速融入企業數據集成和分析的趨勢。