1. 程式人生 > 其它 >頭條數倉模型開發工程師 -麵筋二

頭條數倉模型開發工程師 -麵筋二

技術標籤:麵筋哥大資料資料倉庫

  1. 為什麼叫BDM、為什麼叫FDM
    一、模型分層

  2. 緩衝資料模型 BDM (Buffer data model)
    源業務系統資料的快照,儲存細節資料,按天分割槽,會保持最近一段時間資料。一般情況下,每個BDM表對應著源業務系統的一個表或者一個日誌檔案,資料結構與線上基本是對應的。絕大多數的資料快照是經過增量抽取策略抽過來了,對於不支援增量抽取策略或者資料量極少的表採用全量抽取的策略。

  3. 基礎資料模型 FDM (Foundation data model)
    基礎資料模型,用來儲存源業務系統資料的快照,資料永久儲存。對於有更新操作的資料來說,採用拉鍊的方式優化儲存。對於沒有更新操作的資料來說,採用流水方式儲存。

  4. 通用資料模型 GDM (general data model )
    根據京東核心業務主題按照星型模型或雪花模型設計方式建設的最細業務粒度彙總層。在本層需要進行指標與維度的標準化,保證指標資料的唯一性。

  5. 聚合資料模型 ADM (aggregation data model)
    根據不同的業務需求採用星型或雪花型模型設計方法構建的按維度彙總資料。

  6. 維度模型 DIM (Dimension model)
    維度表可以看作是使用者來分析資料的視窗,維度表中包含事實資料表中事實記錄的特性,有些特性提供描述性資訊,有些特性指定如何彙總事實資料表資料,以便為分析者提供有用的資訊,維度表包含幫助彙總資料的特性的層次結構。例如,包含訂單資訊的維度表通常包含將訂單分為區域、省份、城市等若干類的層次結構。在維度表中,每個表都包含獨立於其他維度表的事實特性,例如,客戶維度表包含有關客戶級別的資料。維度表中的列欄位可以將資訊分為不同層次的結構級。

  7. 臨時層 TMP (temp)
    用來降低加工過程計算難度,提高執行效率的臨時表,用完即舍,不儲存歷史資料。
    7 中間層(操作資料模型) ODM (Operational data model)
    在加工通用模型的時候,對於多個模型都使用到的公共資料需要清洗轉換的時候,用來封裝清洗轉換邏輯儲存清洗後的資料,供加工通用模型使用,中間層資料儲存歷史狀態。

  8. 應用資料模型 APP (application)
    應用資料模型按照具體的需求進行設計,其資料直接供前端報表工具展現使用,或者推送到其他系統做相關的資料支撐。

  9. 看過阿里建模書了沒?

  10. 資料口徑如何實現統一?

    1. 梳理調研京東各業務線的指標口徑
    2. 對各個業務線口徑進行歸納,梳理,協商 以滿足大多業務線的口徑為最後的統一口徑
    3. 按統一後的口徑開發資料模型
    4. 開發完成推送至資料倉庫
    5. 下游從資料倉庫同步統一口徑表,
    6. 最終對內資料看版(黃金眼),實現口徑唯一
    7. 對外有經海路系統,資料指標目錄 - 詳細標明京東內部口徑解釋及對應adm表,
  11. 給一個場景。支付 和退款,如何設計模型及對應分割槽?
    傑哥說:搞一個拉鍊表,詳細記錄每個訂單狀態 就ok了

  12. 個人時間和收穫如何劃分?

    工作時間上: 50%資料倉庫。50%pass化工程開發
    收穫上:後50%對個人提升最大

  13. 資料傾斜解決方案:
    我腦癱了,當初直接答 mapjoin 和對key 進行隨機加鹽打勻處理 【這塊還得找個指令碼在領悟一哈】

  14. 如何知道是資料傾斜:
    答:web ui 和 group by

6 - 7 具體看資料傾斜總結

8: 個人傾向做什麼
1. 離線建模
2. 資料工程
3. 實時

實時 > 資料工程 > 離線建模 
  1. 給一個建模場景,讓設計模型如何分層:
    訂單支付 + 退款場景 阿里大資料之路 裡面有 原題 就是拉鍊表