本文參考了部分互聯網公司的實時數倉模型,結合目前所掌握的數倉建設的知識,簡單介紹一下如何建設一個實時數倉。
一、實時數倉建設的背景
隨著互聯網的發展,越來越多的業務指標需要實時查看,以便于更好的進行業務分析,尤其在舉行活動的時候,能夠更好的把握活動的各項指標趨勢,從而更好的調整策略,達到活動的目標。
二、技術選型
與flink實時處理最密不可分的就是kafka,其次flink實時數據存儲還有mysql、hbase、es、Druid等還有部分公司內部開發的數據存儲。作為剛開始的公司構建實時數倉,選用市面上開源的數據庫就足夠可以使用了。
三、數據倉庫的建設
1、實時數倉的層級
在離線數倉中,大部分都會分為數據源、數據明細層、數據匯總層、面向業務層。而在實時數倉中,數據源和面向業務層直接配置成一種可實時傳輸數據的數據存儲就好,不做過多處理,因為實時中間處理層越多,數據準確性也會越低,這邊實時數倉主要內容是在數據明細層和數據匯總層。
2、實時數倉各層級的技術選型
數據源:直接配置為kafka實時消息傳輸;
數據明細層:一般也會選擇kafka作為數據存儲,如果是這層做成大寬表的話,可以選擇druid,或者hbase
數據匯總層:對數據進行高度匯總后的數據,這層一般也會選擇kafka作為數據存儲,這樣需要保證各層級的數據通過kafka能夠產生依賴。
應用層:應用層根據不同的業務類型選用不同的數據存儲,如果結果需要能夠快速搜索,可以選用es,如果結果需要進行多維數據統計分析,可以選用druid,如果結果數據量不是很大的話,最好選用mysql,相對來說,mysql的穩定性要好一點。
維度存儲:維度如果是穩定并且數據量不大的情況下可以選擇mysql,但是如果維度經常變動或者字段經常增加的話,最好選用hbase進行存儲。
3、實時數倉的模型設計