<cite id="37d7p"><p id="37d7p"><thead id="37d7p"></thead></p></cite>
    <del id="37d7p"><span id="37d7p"></span></del>

    <mark id="37d7p"></mark>

  1. 首頁 > 企業IT頻道 > 數字化建設

    網易有道成人教育數倉建設實踐

    2022年08月19日 18:05:35   來源:IT168

      導讀:隨著有道旗下網易云課堂、中國大學mooc產品的迅速發展,對數據的需求日益增多,在提高數據服務質量和數據使用效率、降低數據使用成本、數據賦能業務的背景下,我們從0到1建設成人教育數據倉庫。

      1 整體架構

      數據源:數據主要來自Mysql、ES、DDB的業務數據,以及kafka的埋點日志數據;

      數據處理層:基于有數大數據平臺的存儲、計算能力之上建設數據倉庫;

      查詢層:查詢層主要為應用提供即席查詢、olap計算和存儲能力,根據具體的業務需求選擇presto、doris、es;

      應用服務:目前數據倉庫支撐了有數BI報表、個性化推薦、市場營銷、數據分析、用戶畫像、用戶增長等數據應用。

      2 數據倉庫建設過程

      2.1 業務調研

      業務調研需要從自上而下和自上而下兩個方向去執行:

      自上而下:根據已有的報表需求和業務需求梳理這些數據的原始數據來源、數據總量和增量、結構、計算邏輯和數據及時性等。

      自下而上:現有的報表和需求有時候并不能覆蓋所有業務過程,需要從業務過程調研原始數據,線上的業務過程會產生哪些數據。

      自上而下和自上而下雙管齊下是為了更全面調研業務系統的數據。避免出現基于少量的業務調研設計的數倉架構和規范不滿足后面業務的擴展,影響數倉的穩定性。

      2.2 架構設計

      平臺架構:

      平臺組件技術選型及架構設計,根據業務調研結果選型包括計算引擎、存儲、調度系統等組件。目前有數大數據平臺基本滿足離線數倉的架構需求。

      數倉分層架構:

      ODS層 :數據操作層,存儲源數據最原始數據;

      DWD層:通過清洗、整合ODS層數據生成的最原子粒度的事實表,主要存儲原子指標數據;

      DIM層 :存儲描述維度屬性的維度表,維度表多用于與事實表關聯匯總查詢;

      DWS層:根據需求對原子指標進行周期+修飾詞(維度屬性)聚合匯總的輕度匯總層;

      ADS層 :面向主題應用的報表及服務結果層。

      數倉總線矩陣:

      劃分數據域,構建業務過程與維度關系矩陣,總線矩陣中行表示業務過程,列表示維度,通過總線矩陣梳理業務過程和維度關系,是模型設計過程的基本工具,以此來保證維度跨多業務過程的一致性,以及防止在事實表設計時遺漏關聯維度。

      2.3 模型設計

      整個數倉是按照kimball的維度建模方式建設,設計步驟如下:

      (1)選擇業務過程

      選擇業務活動行為的過程,如:下單、支付、看視頻。

      (2)聲明粒度

      粒度即事實表中每行數據代表什么,明細表中應聲明業務過程最細的粒度,如:每個課程的訂單記錄,支付的每一筆錢記錄,每次打開視頻的觀看記錄。

      (3)確定維度

      維度是用來描述業務過程發生的環境實體,如:誰在什么時候什么地方以何種方式下單。

      (4)確定事實

      確定業務過程中的度量,即原子指標,如:下單金額、支付金額、觀看時間。

      (5)冗余維度

      冗余常用維度信息至事實表中,提高模型使用效率,冗余的過程中應盡量使用已經開發好的維表,保證維度屬性的邏輯一致性。

      通過上面的步驟我們大概能設計出圍繞一個業務過程的星型模型,當多個星型模型通過事實表或者維度表相互連接時,就形成了數倉中常見的事實星座模型。

      2.4 模型開發

      2.4.1 開發原則

      (1)高內聚低耦合

      將業務相近或者相關的數據、粒度相同數據設計為一個邏輯或者物理模型;將高概率同時訪問的數據放在一起,將低概率同時訪問的數據分開存儲。

      (2)核心模型與擴展模型分離

      在設計明細表和維度表的時候,采用垂直切分的方式,將常用字段保留在核心模型,將一些大字段、個性化或者少量應用的字段剝離到擴展模型,常用雜項維度的方式,保證核心模型的簡潔

      (3)公共處理邏輯下沉以及單一

      將業務數據處理邏輯下沉至明細層進行處理,不暴露給應用層,并保證處理邏輯單一存在。

      (4)適當冗余

      針對常用維度屬性冗余在明細層和匯總層,提高開發效率。

      (5)數據可回滾

      處理邏輯不變,全量處理在不同時間多次運行數據的結果需要確定不變,增量處理根據輸入時間變化可回刷歷史數據。

      2.4.2 開發規范

      原則上層次調用關系為ODS>DWD>DWS>ADS,部分需要針對明細層的需求或者不穩定的業務場景可遵循ODS>DWD>ADS。禁止反向依賴。比如DWS依賴ADS,造成任務深度多大,相互依賴等問題;

      ODS層不能被應用層直接調用,如不確定數據處理邏輯的可先在明細層建立視圖,通過視圖訪問;

      多個計算任務輸出至一個表時,需要建立一個依賴這多個任務的虛擬節點進行管理;

      DWS層進行粗粒度匯總時,優先調用已經產出DWS較細粒度匯總,可避免直接從明細層計算,提高計算效率;

      一個計算任務只能輸出至一個表;

      一個計算任務中間使用的臨時表不得被其他任務使用;

      建表必須對字段和表描述進行中文描述;

      指標類的字段空值用零填充,維度屬性值為空的用-99(未知)填充。

      2.4.3 表命名規范

      ODS 層 :ods_{源庫標識}_{源庫表名}_{周期存儲方式}

      DIM 層 :dim_{業務/pub}_{維度定義}_{自定義命名}_{周期存儲方式}

      DWD 層:dwd_{業務/pub}_{數據域}_{業務過程縮寫}_[自定義命名]_{周期存儲方式}

      DWS 層:dws_{業務/pub}_{數據域}_{自定義命名}_{時間粒度}_{周期存儲方式}

      ADS 層:ads_{業務/pub}_{需求模塊名}_{自定義命名}_{周期存儲方式}

      刷新周期縮寫:h:小時、d:天、m:月、y:年、rt實時

      分區存儲:f:全量、i增量

      腳本內臨時表命名規范:{project_name}.tmp_{產出表表名}_{n}。

      2.4.4 測試與上線

      在模型開發完成后測試數據結果的準確性、完整性、一致性和及時性,通過探查指標、數據量、維度屬性分布,模型之間關聯情況,任務執行效率等方式測試。上線后設置模型基線,配置數據質量監控。

      3 未來展望

      目前有道成人教育離線數據倉庫已經用于各個數據應用場景,接下來的重點工作則是對數倉長期的數據治理工作,其中重點會放在數據規范方面。由于業務對實時的需求日益增多,目前也有嘗試使用sloth平臺開發實時數倉,未來會往流批一體方向發展。

      文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據此操作,風險自擔。

    [編號: ]
    分享到微信

    即時

    新聞

    騰訊前三季研發投入454.75億元 前沿科技加速落地服務

    11月16日,騰訊控股(HK.00700)發布2022年Q3財報,騰訊實現營業收入1400.93億元,非國際會計準則凈利潤(Non-IFRS)322.54億元,同比恢復增長,多個主營業務板塊收入亦呈現環比企穩跡象。

    企業IT

    今日影像,今日推送!星圖地球今日影像正式發布,開

    每一次火箭升空、衛星發射都能引起全國人民的關注,那你可曾想過,有朝一日每個人都能召喚衛星為自己服務?

    研究

    IDC發布中國數字政府IT安全軟硬件市場份額報告

    IDC《中國數字政府IT安全硬件市場份額,2021》報告顯示,中國數字政府IT安全硬件市場的規模達到64.9億元人民幣,同比增長31.5%。

    雯雯被四个男人拖进工地

      <cite id="37d7p"><p id="37d7p"><thead id="37d7p"></thead></p></cite>
      <del id="37d7p"><span id="37d7p"></span></del>

      <mark id="37d7p"></mark>