數據倉庫與模型體系及相關概念
數據倉庫與數據庫的區別可參考:數據庫與數據倉庫的區別及關系_數據倉庫和數據庫-CSDN博客
總之,數據庫是為捕獲數據而設計,數據倉庫是為分析數據而設計
數據倉庫集成工具
在一些大廠中,其會有自己的數據倉庫集成工具。如京東內部數倉集成工具為數據星圖,我們可以通過該工具拿到各領域的模型,字段,實時消息,生產庫表等數據。
數據倉庫架構
下圖是一個標準數據倉庫架構的示例圖,可能不是很準確。
對于我們來講只需要了解數倉數據提取的步驟:
- 數倉中的數據經數據源提測到一個緩存層(按天分區,大致保存7天數據)一般采用增量抽取策略
- 再由緩沖層提取至基礎數據層。一般采用拉鏈抽取方式。
- 可定義表名以chain結尾的表示為拉鏈存儲形式,不是所有數據都適合拉鏈更新,像流量這種沒有變更概念的數據,比較適合采用增量存儲的形式。
- 拉鏈表存儲的數據較多,如何區分最新有效的數據?
答: 用dp=active
分區中的數據,該分區標記最新且有效的數據
什么是增量抽取,全量抽取,拉鏈抽取?請接著往下看!
數據倉庫抽取策略
數據倉庫中的數據由數據集成平臺將源數據庫中的表,數據抽取過來。我們需要定義抽取策略,主要抽取策略有全量抽取,增量抽取,拉鏈抽取這三類。
全量抽取比較好理解每次將源數據庫中所有數據全部抽取到數據倉庫,會覆蓋數據倉庫之前的數據。
主要講下增量抽取,拉拉鏈抽取二者的區別
- 增量抽取:增量抽取是指每次只抽取自上次抽取以來源數據庫中新增或修改的數據。通常需要源數據庫中存在能夠標識數據變化的字段,如時間戳字段(記錄數據的創建時間或最后修改時間)或自增的版本號字段等。例如,在一個訂單表中,有一個
update_time
字段記錄訂單的最后修改時間,增量抽取時可以通過比較這個時間戳,只抽取update_time
大于上次抽取時間的數據。 - 拉鏈抽取:拉鏈抽取不是基于數據的增量變化,而是基于數據的生命周期來記錄數據的歷史變化。它會在數據倉庫中為每一條數據記錄維護一個生效時間和失效時間(或截止時間),通過這兩個時間字段來標識數據在歷史上的有效性。例如,員工的職位信息可能會發生變化,每次變化時,拉鏈抽取會在數據倉庫中插入一條新記錄,記錄變化后的職位信息,并更新上一條記錄的失效時間,同時新記錄的生效時間為變化發生的時間,失效時間為無窮大(或一個特定的未來時間)。