說點大家都能懂的干貨。請點贊收藏。
先講講來龍去脈
很久以前是沒有數據倉庫這個概念的,只有數據庫,數據庫就是很多數據表的集合,這樣把存放不同內容的表放在一起,就能滿足一些基本的查詢了。
比如提取2019年6月18日在淘寶購買Bose耳機的用戶,只要幾張表關聯一下查詢就出結果了。
后來在實際工作中人們發現當你在海量數據中做非常復雜的分析的時候,效率就很低了:
所以隨著數據體量增大,查詢條件越來越復雜,大家一看不行啊,需要提高效率。所以數據倉庫出現了。
數據倉庫和數據庫相比,有啥特點
上面的例子告訴我們,數據倉庫是為了某一個/某一類特定的分析任務將數據重新聚合起來的,而數據庫只是數據存儲表的集合,所以數據倉庫有主題性。同時也因為有主題的概念,數據倉庫會根據你預設的邏輯,自動化的完成各個作業之間的調度,最終自動化的把結果輸出給你。所以數據倉庫也會有數據流和作業流的概念。
數據庫本質就是很多數據表,所以數據表嘛,就要兼顧增刪改查這些操作,但是數據倉庫將數據重新組合,是為了讓你更高效的查詢并且支持你的分析工作的,所以數據庫一般只讓「查詢」的效率最大化,「增刪改」的效率不做主要考慮。
上面舉的例子中,要查詢淘寶2018年和2019年兩年的雙11數據,所以跨度很大。一般數據庫只能存近期的數據,太久遠的數據放不下,效率也低。但是數據倉庫可以將某些維度的歷史信息統一抽取出來以更合理的存儲結構放到數據倉庫中,這樣查詢跨年的數據時直接查詢就行了,效率極大的提升。
一家公司,一般是現有幾張數據表,后來數據表集合成了數據庫,再后來數據庫不滿足需求了,才有了數據倉庫。所以數據表,數據庫,數據倉庫之間是有依賴關系的,不是割裂的。
怎么建立數據倉庫
分析你為了哪個目的建立數據倉庫,數據倉庫需要哪些維度的數據,這些數據表都在哪里是否能訪問。
2.ETL
將你所有需要的數據表都找到,然后根據你的需求將需要的字段都提取出來并對數據格式進行清洗加工轉換。保證數據原料是合格可用的
包括維度表,事實表的設計,是否要用列式存儲代替行式存儲,是否需要將數據分層(詳細可查詢OLAP方面的數據模型),總之就是要保證數據查詢的效率
每一個你看到的數據背后,都是多個數據表被一系列腳本調用最終計算而成,所以多個作業之間肯定涉及調度關系,過程監控,結果監控等。所以要保證邏輯正確和執行正確。
以上4步完成后,一個數據倉庫的雛形就有了,剩下的數據管理,計算管理,元數據等如果有需要可以在此基礎上不斷添加完善。