導(dǎo)讀:隨著有道旗下網(wǎng)易云課堂、中國(guó)大學(xué)mooc產(chǎn)品的迅速發(fā)展,對(duì)數(shù)據(jù)的需求日益增多,在提高數(shù)據(jù)服務(wù)質(zhì)量和數(shù)據(jù)使用效率、降低數(shù)據(jù)使用成本、數(shù)據(jù)賦能業(yè)務(wù)的背景下,我們從0到1建設(shè)成人教育數(shù)據(jù)倉(cāng)庫(kù)。
1 整體架構(gòu)
數(shù)據(jù)源:數(shù)據(jù)主要來(lái)自Mysql、ES、DDB的業(yè)務(wù)數(shù)據(jù),以及kafka的埋點(diǎn)日志數(shù)據(jù);
數(shù)據(jù)處理層:基于有數(shù)大數(shù)據(jù)平臺(tái)的存儲(chǔ)、計(jì)算能力之上建設(shè)數(shù)據(jù)倉(cāng)庫(kù);
查詢層:查詢層主要為應(yīng)用提供即席查詢、olap計(jì)算和存儲(chǔ)能力,根據(jù)具體的業(yè)務(wù)需求選擇presto、doris、es;
應(yīng)用服務(wù):目前數(shù)據(jù)倉(cāng)庫(kù)支撐了有數(shù)BI報(bào)表、個(gè)性化推薦、市場(chǎng)營(yíng)銷、數(shù)據(jù)分析、用戶畫(huà)像、用戶增長(zhǎng)等數(shù)據(jù)應(yīng)用。
2 數(shù)據(jù)倉(cāng)庫(kù)建設(shè)過(guò)程
2.1 業(yè)務(wù)調(diào)研
業(yè)務(wù)調(diào)研需要從自上而下和自上而下兩個(gè)方向去執(zhí)行:
自上而下:根據(jù)已有的報(bào)表需求和業(yè)務(wù)需求梳理這些數(shù)據(jù)的原始數(shù)據(jù)來(lái)源、數(shù)據(jù)總量和增量、結(jié)構(gòu)、計(jì)算邏輯和數(shù)據(jù)及時(shí)性等。
自下而上:現(xiàn)有的報(bào)表和需求有時(shí)候并不能覆蓋所有業(yè)務(wù)過(guò)程,需要從業(yè)務(wù)過(guò)程調(diào)研原始數(shù)據(jù),線上的業(yè)務(wù)過(guò)程會(huì)產(chǎn)生哪些數(shù)據(jù)。
自上而下和自上而下雙管齊下是為了更全面調(diào)研業(yè)務(wù)系統(tǒng)的數(shù)據(jù)。避免出現(xiàn)基于少量的業(yè)務(wù)調(diào)研設(shè)計(jì)的數(shù)倉(cāng)架構(gòu)和規(guī)范不滿足后面業(yè)務(wù)的擴(kuò)展,影響數(shù)倉(cāng)的穩(wěn)定性。
2.2 架構(gòu)設(shè)計(jì)
平臺(tái)架構(gòu):
平臺(tái)組件技術(shù)選型及架構(gòu)設(shè)計(jì),根據(jù)業(yè)務(wù)調(diào)研結(jié)果選型包括計(jì)算引擎、存儲(chǔ)、調(diào)度系統(tǒng)等組件。目前有數(shù)大數(shù)據(jù)平臺(tái)基本滿足離線數(shù)倉(cāng)的架構(gòu)需求。
數(shù)倉(cāng)分層架構(gòu):
ODS層 :數(shù)據(jù)操作層,存儲(chǔ)源數(shù)據(jù)最原始數(shù)據(jù);
DWD層:通過(guò)清洗、整合ODS層數(shù)據(jù)生成的最原子粒度的事實(shí)表,主要存儲(chǔ)原子指標(biāo)數(shù)據(jù);
DIM層 :存儲(chǔ)描述維度屬性的維度表,維度表多用于與事實(shí)表關(guān)聯(lián)匯總查詢;
DWS層:根據(jù)需求對(duì)原子指標(biāo)進(jìn)行周期+修飾詞(維度屬性)聚合匯總的輕度匯總層;
ADS層 :面向主題應(yīng)用的報(bào)表及服務(wù)結(jié)果層。
數(shù)倉(cāng)總線矩陣:
劃分?jǐn)?shù)據(jù)域,構(gòu)建業(yè)務(wù)過(guò)程與維度關(guān)系矩陣,總線矩陣中行表示業(yè)務(wù)過(guò)程,列表示維度,通過(guò)總線矩陣梳理業(yè)務(wù)過(guò)程和維度關(guān)系,是模型設(shè)計(jì)過(guò)程的基本工具,以此來(lái)保證維度跨多業(yè)務(wù)過(guò)程的一致性,以及防止在事實(shí)表設(shè)計(jì)時(shí)遺漏關(guān)聯(lián)維度。
2.3 模型設(shè)計(jì)
整個(gè)數(shù)倉(cāng)是按照kimball的維度建模方式建設(shè),設(shè)計(jì)步驟如下:
(1)選擇業(yè)務(wù)過(guò)程
選擇業(yè)務(wù)活動(dòng)行為的過(guò)程,如:下單、支付、看視頻。
(2)聲明粒度
粒度即事實(shí)表中每行數(shù)據(jù)代表什么,明細(xì)表中應(yīng)聲明業(yè)務(wù)過(guò)程最細(xì)的粒度,如:每個(gè)課程的訂單記錄,支付的每一筆錢(qián)記錄,每次打開(kāi)視頻的觀看記錄。
(3)確定維度
維度是用來(lái)描述業(yè)務(wù)過(guò)程發(fā)生的環(huán)境實(shí)體,如:誰(shuí)在什么時(shí)候什么地方以何種方式下單。
(4)確定事實(shí)
確定業(yè)務(wù)過(guò)程中的度量,即原子指標(biāo),如:下單金額、支付金額、觀看時(shí)間。
(5)冗余維度
冗余常用維度信息至事實(shí)表中,提高模型使用效率,冗余的過(guò)程中應(yīng)盡量使用已經(jīng)開(kāi)發(fā)好的維表,保證維度屬性的邏輯一致性。
通過(guò)上面的步驟我們大概能設(shè)計(jì)出圍繞一個(gè)業(yè)務(wù)過(guò)程的星型模型,當(dāng)多個(gè)星型模型通過(guò)事實(shí)表或者維度表相互連接時(shí),就形成了數(shù)倉(cāng)中常見(jiàn)的事實(shí)星座模型。
2.4 模型開(kāi)發(fā)
2.4.1 開(kāi)發(fā)原則
(1)高內(nèi)聚低耦合
將業(yè)務(wù)相近或者相關(guān)的數(shù)據(jù)、粒度相同數(shù)據(jù)設(shè)計(jì)為一個(gè)邏輯或者物理模型;將高概率同時(shí)訪問(wèn)的數(shù)據(jù)放在一起,將低概率同時(shí)訪問(wèn)的數(shù)據(jù)分開(kāi)存儲(chǔ)。
(2)核心模型與擴(kuò)展模型分離
在設(shè)計(jì)明細(xì)表和維度表的時(shí)候,采用垂直切分的方式,將常用字段保留在核心模型,將一些大字段、個(gè)性化或者少量應(yīng)用的字段剝離到擴(kuò)展模型,常用雜項(xiàng)維度的方式,保證核心模型的簡(jiǎn)潔
(3)公共處理邏輯下沉以及單一
將業(yè)務(wù)數(shù)據(jù)處理邏輯下沉至明細(xì)層進(jìn)行處理,不暴露給應(yīng)用層,并保證處理邏輯單一存在。
(4)適當(dāng)冗余
針對(duì)常用維度屬性冗余在明細(xì)層和匯總層,提高開(kāi)發(fā)效率。
(5)數(shù)據(jù)可回滾
處理邏輯不變,全量處理在不同時(shí)間多次運(yùn)行數(shù)據(jù)的結(jié)果需要確定不變,增量處理根據(jù)輸入時(shí)間變化可回刷歷史數(shù)據(jù)。
2.4.2 開(kāi)發(fā)規(guī)范
原則上層次調(diào)用關(guān)系為ODS>DWD>DWS>ADS,部分需要針對(duì)明細(xì)層的需求或者不穩(wěn)定的業(yè)務(wù)場(chǎng)景可遵循ODS>DWD>ADS。禁止反向依賴。比如DWS依賴ADS,造成任務(wù)深度多大,相互依賴等問(wèn)題;
ODS層不能被應(yīng)用層直接調(diào)用,如不確定數(shù)據(jù)處理邏輯的可先在明細(xì)層建立視圖,通過(guò)視圖訪問(wèn);
多個(gè)計(jì)算任務(wù)輸出至一個(gè)表時(shí),需要建立一個(gè)依賴這多個(gè)任務(wù)的虛擬節(jié)點(diǎn)進(jìn)行管理;
DWS層進(jìn)行粗粒度匯總時(shí),優(yōu)先調(diào)用已經(jīng)產(chǎn)出DWS較細(xì)粒度匯總,可避免直接從明細(xì)層計(jì)算,提高計(jì)算效率;
一個(gè)計(jì)算任務(wù)只能輸出至一個(gè)表;
一個(gè)計(jì)算任務(wù)中間使用的臨時(shí)表不得被其他任務(wù)使用;
建表必須對(duì)字段和表描述進(jìn)行中文描述;
指標(biāo)類的字段空值用零填充,維度屬性值為空的用-99(未知)填充。
2.4.3 表命名規(guī)范
ODS 層 :ods_{源庫(kù)標(biāo)識(shí)}_{源庫(kù)表名}_{周期存儲(chǔ)方式}
DIM 層 :dim_{業(yè)務(wù)/pub}_{維度定義}_{自定義命名}_{周期存儲(chǔ)方式}
DWD 層:dwd_{業(yè)務(wù)/pub}_{數(shù)據(jù)域}_{業(yè)務(wù)過(guò)程縮寫(xiě)}_[自定義命名]_{周期存儲(chǔ)方式}
DWS 層:dws_{業(yè)務(wù)/pub}_{數(shù)據(jù)域}_{自定義命名}_{時(shí)間粒度}_{周期存儲(chǔ)方式}
ADS 層:ads_{業(yè)務(wù)/pub}_{需求模塊名}_{自定義命名}_{周期存儲(chǔ)方式}
刷新周期縮寫(xiě):h:小時(shí)、d:天、m:月、y:年、rt實(shí)時(shí)
分區(qū)存儲(chǔ):f:全量、i增量
腳本內(nèi)臨時(shí)表命名規(guī)范:{project_name}.tmp_{產(chǎn)出表表名}_{n}。
2.4.4 測(cè)試與上線
在模型開(kāi)發(fā)完成后測(cè)試數(shù)據(jù)結(jié)果的準(zhǔn)確性、完整性、一致性和及時(shí)性,通過(guò)探查指標(biāo)、數(shù)據(jù)量、維度屬性分布,模型之間關(guān)聯(lián)情況,任務(wù)執(zhí)行效率等方式測(cè)試。上線后設(shè)置模型基線,配置數(shù)據(jù)質(zhì)量監(jiān)控。
3 未來(lái)展望
目前有道成人教育離線數(shù)據(jù)倉(cāng)庫(kù)已經(jīng)用于各個(gè)數(shù)據(jù)應(yīng)用場(chǎng)景,接下來(lái)的重點(diǎn)工作則是對(duì)數(shù)倉(cāng)長(zhǎng)期的數(shù)據(jù)治理工作,其中重點(diǎn)會(huì)放在數(shù)據(jù)規(guī)范方面。由于業(yè)務(wù)對(duì)實(shí)時(shí)的需求日益增多,目前也有嘗試使用sloth平臺(tái)開(kāi)發(fā)實(shí)時(shí)數(shù)倉(cāng),未來(lái)會(huì)往流批一體方向發(fā)展。
文章內(nèi)容僅供閱讀,不構(gòu)成投資建議,請(qǐng)謹(jǐn)慎對(duì)待。投資者據(jù)此操作,風(fēng)險(xiǎn)自擔(dān)。
近日,德國(guó)柏林國(guó)際電子消費(fèi)品展覽會(huì)(IFA2024)隆重舉辦。憑借在核心技術(shù)、產(chǎn)品設(shè)計(jì)及應(yīng)用方面的創(chuàng)新變革,全球領(lǐng)先的智能終端企業(yè)TCL實(shí)業(yè)成功斬獲兩項(xiàng)“IFA全球產(chǎn)品設(shè)計(jì)創(chuàng)新大獎(jiǎng)”金獎(jiǎng),有力證明了其在全球市場(chǎng)的強(qiáng)大影響力。
近日,中國(guó)家電及消費(fèi)電子博覽會(huì)(AWE 2024)隆重開(kāi)幕。全球領(lǐng)先的智能終端企業(yè)TCL實(shí)業(yè)攜多款創(chuàng)新技術(shù)和新品亮相,以敢為精神勇闖技術(shù)無(wú)人區(qū),斬獲四項(xiàng)AWE 2024艾普蘭大獎(jiǎng)。
“以前都要去窗口辦,一套流程下來(lái)都要半個(gè)月了,現(xiàn)在方便多了!”打開(kāi)“重慶公積金”微信小程序,按照提示流程提交相關(guān)材料,僅幾秒鐘,重慶市民曾某的賬戶就打進(jìn)了21600元。
由世界人工智能大會(huì)組委會(huì)、上海市經(jīng)信委、徐匯區(qū)政府、臨港新片區(qū)管委會(huì)共同指導(dǎo),由上海市人工智能行業(yè)協(xié)會(huì)聯(lián)合上海人工智能實(shí)驗(yàn)室、上海臨港經(jīng)濟(jì)發(fā)展(集團(tuán))有限公司、開(kāi)放原子開(kāi)源基金會(huì)主辦的“2024全球開(kāi)發(fā)者先鋒大會(huì)”,將于2024年3月23日至24日舉辦。