數(shù)倉規(guī)范詳解文檔(2)
統(tǒng)一規(guī)范
- 采用蛇形命名法,即采用一個(gè)下劃線分隔詞根。
- 優(yōu)先使用詞根中已有關(guān)鍵字(數(shù)倉標(biāo)準(zhǔn)配置中的詞根管理),- - 定期 Review 新增命名的不合理性。
- 禁止采用非標(biāo)準(zhǔn)的縮寫。
- 命名一律采用小寫,只能以字母開頭。
- 命名不宜過長。專有規(guī)范
- 表
- 分層-分域-分詞根-分時(shí)間周期
- 正式表,所在層級名稱+數(shù)據(jù)域+表描述+時(shí)間周期或加載策略,如增量、快照、拉鏈/小時(shí)、日、周、月、季、年
- 中間表,對應(yīng)正式表+_mid+阿拉伯?dāng)?shù)字
- 臨時(shí)表,z+創(chuàng)建者姓名檢查+表名
- 視圖
- 參照表命名規(guī)范+_v
- 字段
- 優(yōu)先從詞根中取,多次出現(xiàn)的要增加到詞根庫
- 任務(wù)
- 與目標(biāo)表名相同
- 指標(biāo)
- 一個(gè)原子指標(biāo)+多個(gè)修飾詞(可選)+時(shí)間周期
- 原子指標(biāo)+時(shí)間周期(可選)
- 原子指標(biāo)
業(yè)務(wù)修飾詞 + 詞根 - 衍生指標(biāo)
- 派生指標(biāo)
代碼設(shè)計(jì)規(guī)范
- 腳本是否有備注、復(fù)雜計(jì)算邏輯是否有注釋釋。
- 任務(wù)是否支持多次重跑而輸出不變,不能有 insert into 語句。
- 分區(qū)表是否使用分區(qū)鍵過濾并且有有效裁剪。
- 外連接的過逑條件是否使用正確,例如在左連接的 where 語句存在右表的過濾條件。
- 關(guān)聯(lián)小表,是否使用/*+ map join * /。
- 不允許引用別的計(jì)算任務(wù)臨時(shí)表。
- 原則上不允許存在一個(gè)任務(wù)更新多個(gè)目標(biāo)表。
- 是否存在笛卡爾積。
- 禁止在代碼里面使用 drop、create、rename 等 DDL 語句。
- 使用動態(tài)分區(qū)時(shí),有沒有檢查分區(qū)鍵值為 NULL 的情況。
- 對于重要的任務(wù) DQC 質(zhì)量監(jiān)控規(guī)則是否配置,嚴(yán)禁裸奔。
- 代碼中有沒有進(jìn)行適當(dāng)?shù)囊?guī)避數(shù)據(jù)傾斜語句。
指標(biāo)體系建設(shè)
- 指標(biāo)層級劃分方式
- 一級分類
- 二級分類
- 三級分類
- 一級分類
- 二級分類
- 按分析主題
- 按業(yè)務(wù)過程
- 指標(biāo)定義
- 原子指標(biāo)(某一業(yè)務(wù)事件行為下的度量,不可再拆分的指標(biāo)) 例如:訂單金額
- 衍生指標(biāo)(對原子指標(biāo)進(jìn)行四則運(yùn)算)
- 派生指標(biāo)(統(tǒng)計(jì)周期+統(tǒng)計(jì)粒度+業(yè)務(wù)限定+原子指標(biāo))例如:最近一天+新創(chuàng)建的+訂單個(gè)數(shù)(阿里大數(shù)據(jù)之路對于派生指標(biāo)的定義:派生指標(biāo)=原子指標(biāo)+時(shí)間周期修飾詞+其它修飾詞。唯一歸屬于某一個(gè)原子指標(biāo),繼承原子指標(biāo)的數(shù)據(jù)域)
- 唯一性
- 可擴(kuò)展
- 易理解
- 所屬分類
- 指標(biāo)類別
- 名稱
- 描述
- 口徑/算法
- 計(jì)量單位
- 適用維度
- ...
- 內(nèi)容
- 原則
- 類別
- 說明:網(wǎng)上對于指標(biāo)分類說法不統(tǒng)一,大家知道咋回事兒就行了。搜了一下阿里的大數(shù)據(jù)之路,沒有衍生指標(biāo)的概念。說法一:衍生指標(biāo)=派生指標(biāo)。那么用我上邊派生指標(biāo)的定義即可。說法二:衍生指標(biāo)是對原子指標(biāo)進(jìn)行四則運(yùn)算得到的。那么衍生指標(biāo)就是原子指標(biāo)增加減少幾個(gè)修飾詞或者時(shí)間周期擴(kuò)大縮小后得到的。所以感覺衍生指標(biāo)有點(diǎn)雞肋搞不好就變成原子/派生指標(biāo)了。
- 指標(biāo)管理流程
- 指標(biāo)新增申請
- 初審:明確指標(biāo)口徑,檢查指標(biāo)庫是否包含
- 二審:審核指標(biāo)定義需要的各項(xiàng)元素是否準(zhǔn)確完備
- 入指標(biāo)庫
這里,我把數(shù)倉規(guī)范,一共分為四大類:設(shè)計(jì)規(guī)范、流程規(guī)范、質(zhì)量管理規(guī)范、安全規(guī)范。
設(shè)計(jì)規(guī)范,又劃分為四部分:數(shù)據(jù)模型設(shè)計(jì)、命名規(guī)范、指標(biāo)體系設(shè)計(jì)、詞根庫。
流程規(guī)范,主要是從數(shù)倉管理的角度,對數(shù)倉場景下的各種流程進(jìn)行約束。核心流程一共提煉出來五類:需求提交、模型設(shè)計(jì)、ETL開發(fā)、前端開發(fā)、上線流程。
質(zhì)量管控規(guī)范,之所以單獨(dú)列出來,是因?yàn)閿?shù)據(jù)質(zhì)量,跟模型設(shè)計(jì)一樣,對數(shù)倉建設(shè)的成敗關(guān)系極大。試想下,一個(gè)數(shù)據(jù)質(zhì)量都無法保證的數(shù)據(jù)倉庫,有誰會用? 數(shù)據(jù)質(zhì)量規(guī)范,主要是從數(shù)據(jù)流動的角度分為三類:源端管控、數(shù)倉管理、應(yīng)用管控。
安全規(guī)范,隨著國家、社會、企業(yè)對數(shù)據(jù)的越來越重視,另一方面隨著互聯(lián)網(wǎng)的普及使得個(gè)人隱私變的越來越難以保證,數(shù)據(jù)泄露時(shí)有發(fā)生。數(shù)據(jù)安全對于數(shù)據(jù)倉庫的重要程度急速提升,所以安全規(guī)范被單列了出來。從大的層面上安全規(guī)范分為三類:網(wǎng)絡(luò)安全、賬號安全、數(shù)據(jù)安全。
橫向分層
- 說明
- 分層設(shè)計(jì)是數(shù)據(jù)架構(gòu)設(shè)計(jì)的產(chǎn)出之一,在模型設(shè)計(jì)環(huán)節(jié)做為強(qiáng)制規(guī)范遵守。
- 分層規(guī)范
- 應(yīng)用層,面向最終應(yīng)用。
- 主題域劃分,依據(jù)是最終應(yīng)用。生命周期也與應(yīng)用同步。
- 匯總數(shù)據(jù)層+主題寬表。
- 數(shù)據(jù)域劃分,依據(jù)參考下邊的縱向分域。
- 對數(shù)據(jù)源做清洗、轉(zhuǎn)換、補(bǔ)全、編碼轉(zhuǎn)換后加載到明細(xì)數(shù)據(jù)層。
- 數(shù)據(jù)域劃分,依據(jù)參考下邊的縱向分域。
- 貼源層,原始數(shù)據(jù)不做變化或者僅做最簡單的補(bǔ)全后存入。
- 數(shù)據(jù)域劃分,依據(jù)是數(shù)據(jù)源。
- ODS
- DWD
- DWS
- ADS
- 層次調(diào)用規(guī)范
- 禁止反向調(diào)用
- ODS 只能被 DWD 調(diào)用。
- DWD 可以被 DWS 和 ADS 調(diào)用。
- DWS 只能被 ADS 調(diào)用。
- 數(shù)據(jù)應(yīng)用可以調(diào)用 DWD、DWS、ADS,但建議優(yōu)先考慮使用匯總度高的數(shù)據(jù)。
- ODS->DWD->DWS>ADS
- ODS->DWD->ADS
- 定義
- 主題域通常是聯(lián)系較為緊密的數(shù)據(jù)主題的集合,方便尋找和使用數(shù)據(jù)。
- 基本原則
- 高內(nèi)聚、低耦合。
- 數(shù)量不能太多。建議不超過十個(gè)。
- 必須保持穩(wěn)定。既能涵蓋當(dāng) 前所有的業(yè)務(wù)需求,又能在新業(yè)務(wù)進(jìn)入時(shí)無影響地被包含進(jìn)已有的數(shù)據(jù)域中或擴(kuò)展新的數(shù)據(jù)域。
- 需要結(jié)合團(tuán)隊(duì)和業(yè)務(wù)的實(shí)際情況,比如業(yè)務(wù)是否穩(wěn)定、團(tuán)隊(duì)成員建模水平等。
- 適度的抽象。太低不好適應(yīng)變化,太高不易于理解使用。
- 分類
- 面向分析場景,實(shí)現(xiàn)較難,對業(yè)務(wù)理解、抽象能力等要求高。
- 依據(jù)業(yè)務(wù)流程劃分,實(shí)現(xiàn)相對容易。
- 數(shù)據(jù)/業(yè)務(wù)主題域
- 分析主體域
- 劃分依據(jù)
- 按照業(yè)務(wù)或業(yè)務(wù)過程劃分:比如一個(gè)靠銷售廣告位置的門戶網(wǎng)站主題域可能會有廣告域,客戶域等,而廣告域可能就會有廣告的庫存,銷售分析、內(nèi)部投放分析等主題。
- 根據(jù)需求方劃分:比如需求方為財(cái)務(wù)部,就可以設(shè)定對應(yīng)的財(cái)務(wù)主題域,而財(cái)務(wù)主題域里面可能就會有員工工資分析,投資回報(bào)比分析等主題。
- 按照功能或應(yīng)用劃分:比如微信中的朋友圈數(shù)據(jù)域、群聊數(shù)據(jù)域等,而朋友圈數(shù)據(jù)域可能就會有用戶動態(tài)信息主題、廣告主題等。
- 按照部門劃分:比如可能會有運(yùn)營域、技術(shù)域等,運(yùn)營域中可能會有工資支出分析、活動宣傳效果分析等主題。基本原則
- 高內(nèi)聚和低耦合
- 核心模型與擴(kuò)展模型分離
- 公共處理邏輯下沉及單一
- 成本與性能平衡
- 數(shù)據(jù)可回滾
- 一致性
縱向分域
命名清晰、可理解附加字段
- 維表:創(chuàng)建時(shí)間、更新時(shí)間
- 事實(shí)表:ETL 日期、更新時(shí)間
其它要求
- 表、字段的備注信息,必須言簡意賅,在描述清楚的前提下盡量簡潔。
- 字段類型的約束:比如字符串用 String,數(shù)值用 Int,年月日都用 String 比如 yyyyMMdd 等。
命名規(guī)范
統(tǒng)一規(guī)范
- 采用蛇形命名法,即采用一個(gè)下劃線分隔詞根。
- 優(yōu)先使用詞根中已有關(guān)鍵字(數(shù)倉標(biāo)準(zhǔn)配置中的詞根管理),- - 定期 Review 新增命名的不合理性。
- 禁止采用非標(biāo)準(zhǔn)的縮寫。
- 命名一律采用小寫,只能以字母開頭。
- 命名不宜過長。專有規(guī)范
- 表
- 分層-分域-分詞根-分時(shí)間周期
- 正式表,所在層級名稱+數(shù)據(jù)域+表描述+時(shí)間周期或加載策略,如增量、快照、拉鏈/小時(shí)、日、周、月、季、年
- 中間表,對應(yīng)正式表+_mid+阿拉伯?dāng)?shù)字
- 臨時(shí)表,z+創(chuàng)建者姓名檢查+表名
- 視圖
- 參照表命名規(guī)范+_v
- 字段
- 優(yōu)先從詞根中取,多次出現(xiàn)的要增加到詞根庫
- 任務(wù)
- 與目標(biāo)表名相同
- 指標(biāo)
- 一個(gè)原子指標(biāo)+多個(gè)修飾詞(可選)+時(shí)間周期
- 原子指標(biāo)+時(shí)間周期(可選)
- 原子指標(biāo)
- 衍生指標(biāo)
- 派生指標(biāo)
代碼設(shè)計(jì)規(guī)范
- 腳本是否有備注、復(fù)雜計(jì)算邏輯是否有注釋釋。
- 任務(wù)是否支持多次重跑而輸出不變,不能有 insert into 語句。
- 分區(qū)表是否使用分區(qū)鍵過濾并且有有效裁剪。
- 外連接的過逑條件是否使用正確,例如在左連接的 where 語句存在右表的過濾條件。
- 關(guān)聯(lián)小表,是否使用/*+ map join * /。
- 不允許引用別的計(jì)算任務(wù)臨時(shí)表。
- 原則上不允許存在一個(gè)任務(wù)更新多個(gè)目標(biāo)表。
- 是否存在笛卡爾積。
- 禁止在代碼里面使用 drop、create、rename 等 DDL 語句。
- 使用動態(tài)分區(qū)時(shí),有沒有檢查分區(qū)鍵值為 NULL 的情況。
- 對于重要的任務(wù) DQC 質(zhì)量監(jiān)控規(guī)則是否配置,嚴(yán)禁裸奔。
- 代碼中有沒有進(jìn)行適當(dāng)?shù)囊?guī)避數(shù)據(jù)傾斜語句。
指標(biāo)體系建設(shè)
- 指標(biāo)層級劃分方式
- 一級分類
- 二級分類
- 三級分類
- 一級分類
- 二級分類
- 按分析主題
- 按業(yè)務(wù)過程
- 指標(biāo)定義
- 原子指標(biāo)(某一業(yè)務(wù)事件行為下的度量,不可再拆分的指標(biāo)) 例如:訂單金額
- 衍生指標(biāo)(對原子指標(biāo)進(jìn)行四則運(yùn)算)
- 派生指標(biāo)(統(tǒng)計(jì)周期+統(tǒng)計(jì)粒度+業(yè)務(wù)限定+原子指標(biāo))例如:最近一天+新創(chuàng)建的+訂單個(gè)數(shù)(阿里大數(shù)據(jù)之路對于派生指標(biāo)的定義:派生指標(biāo)=原子指標(biāo)+時(shí)間周期修飾詞+其它修飾詞。唯一歸屬于某一個(gè)原子指標(biāo),繼承原子指標(biāo)的數(shù)據(jù)域)
- 唯一性
- 可擴(kuò)展
- 易理解
- 所屬分類
- 指標(biāo)類別
- 名稱
- 描述
- 口徑/算法
- 計(jì)量單位
- 適用維度
- ...
- 內(nèi)容
- 原則
- 類別
- 說明:網(wǎng)上對于指標(biāo)分類說法不統(tǒng)一,大家知道咋回事兒就行了。搜了一下阿里的大數(shù)據(jù)之路,沒有衍生指標(biāo)的概念。說法一:衍生指標(biāo)=派生指標(biāo)。那么用我上邊派生指標(biāo)的定義即可。說法二:衍生指標(biāo)是對原子指標(biāo)進(jìn)行四則運(yùn)算得到的。那么衍生指標(biāo)就是原子指標(biāo)增加減少幾個(gè)修飾詞或者時(shí)間周期擴(kuò)大縮小后得到的。所以感覺衍生指標(biāo)有點(diǎn)雞肋搞不好就變成原子/派生指標(biāo)了。
- 指標(biāo)管理流程
- 指標(biāo)新增申請
- 初審:明確指標(biāo)口徑,檢查指標(biāo)庫是否包含
- 二審:審核指標(biāo)定義需要的各項(xiàng)元素是否準(zhǔn)確完備
- 入指標(biāo)庫
詞根庫
- 定義
- 把可能會多次用到的短語,集中命名,保證全局范圍內(nèi)的命名含義一致性。
- 內(nèi)容
- 所屬分類
- 名稱
- 英文簡稱
- 數(shù)據(jù)類型
- 備注
- 分類
- 普通詞根:描述事物的最小單元體,如:交易-trade。
- 專有詞根:具備約定成俗或行業(yè)專屬的描述體,如:美元-USD。
- 公共字段
流程規(guī)范
公共字段=詞根組合+其它關(guān)鍵詞。
公共字段放入詞根庫不太嚴(yán)謹(jǐn),但字段命名時(shí)候可以直接取用,降低了命名不一致的風(fēng)險(xiǎn),所以工具化不太完善的公司推薦這樣使用。
- 提出需求
- 需求提出人:以文檔的形式提出需求(寫清楚需求內(nèi)容、交付物、期望交付日期),發(fā)給數(shù)倉 Leader。
- 溝通需求
- 數(shù)倉 Leader 將需求分配給相關(guān)人承接,同時(shí)協(xié)商好實(shí)際交付日期。
- 如果需求提出人的交付日期與數(shù)倉 Leader 的交付日期不一致,雙方需要進(jìn)一步協(xié)商一致。
- 開發(fā)交付
- 需求承接人,需按照協(xié)商一致的交付日期,按期交付。
模型設(shè)計(jì)流程
- 數(shù)據(jù)調(diào)研、業(yè)務(wù)調(diào)研、需求調(diào)研
- 數(shù)據(jù)建模
- 確定業(yè)務(wù)過程->聲明粒度->確定維度->確定事實(shí)
- 業(yè)務(wù)建模->邏輯建模->物理建模
- 構(gòu)建總線矩陣
- 構(gòu)建指標(biāo)體系
- 根據(jù)已有的分層分域,分治、各個(gè)擊破。
- 總體思路
- 多種方式結(jié)合使用
- 評審
- 除了模型設(shè)計(jì),還需要拉上必要的開發(fā)、業(yè)務(wù)、分析師、產(chǎn)品經(jīng)理、數(shù)倉運(yùn)維等。
- 上線、迭代、完善
ETL開發(fā)流程
- 需求理解
- 數(shù)據(jù)探查
- 程序開發(fā)
- 流程依賴
- 配置調(diào)度
- 接口規(guī)范
- 代碼部署規(guī)范
上線流程
- 申請
- 上線時(shí)間
- 上線功能范圍
- 對其它模塊、上下游依賴的影響
- 上線支持團(tuán)隊(duì)清單
- 上線詳細(xì)操作步驟
- 測試報(bào)告
- 回滾方案
- 評審
- 代碼 Review
- 上下游影響分析
- 上線
質(zhì)量管控規(guī)范
- 上線支持團(tuán)隊(duì)就緒
- 嚴(yán)格按照上線操作步驟執(zhí)行
- 失敗回滾
- 源端變動,必須提前通知數(shù)倉側(cè)。
- 有條件的話,使用工具監(jiān)控源端重點(diǎn)內(nèi)容的變動。
數(shù)倉管理
- 對已有規(guī)范沒有貫徹的給予警告、處罰:建模規(guī)范、開發(fā)規(guī)范、上線規(guī)范
- 使用工具加強(qiáng)數(shù)據(jù)質(zhì)量監(jiān)控,發(fā)現(xiàn)問題及時(shí)通知、告警。建立數(shù)據(jù)質(zhì)量解決機(jī)制,責(zé)任到人。
- 定期復(fù)盤
- 重要常見問題入告警規(guī)則
- 源端數(shù)據(jù)質(zhì)量問題,協(xié)調(diào)源端解決
- 存儲模型、ETL開發(fā)、上線流程等引起的問題,需要制定合適的解決方案
應(yīng)用管控
- 統(tǒng)一指標(biāo)定義
- 統(tǒng)一指標(biāo)口徑
- 統(tǒng)一外部數(shù)據(jù)輸出歸口
安全規(guī)范
內(nèi)外網(wǎng)隔離,外網(wǎng)環(huán)境訪問內(nèi)網(wǎng)需要登錄 VPN;
核心數(shù)據(jù)存儲、功能模塊,只開放給特定的少部分人。
賬號安全
每個(gè)人分配獨(dú)立的賬號,賦予合理的權(quán)限,禁止相互借用。
數(shù)據(jù)庫、大數(shù)據(jù)組件開通多個(gè)角色賬號。比如只讀、部分表讀寫、管理員等。當(dāng)然還可以按實(shí)際需求細(xì)分。Hive、ODPS 的話也是可以實(shí)現(xiàn)單人單號的。
服務(wù)器登錄。也是單人單號
公司內(nèi)部應(yīng)用賬號。單人單號。
數(shù)據(jù)安全
至少做到表級別的權(quán)限控制,實(shí)在不行就分庫。
ODS 層不對外開放,只對 ODS-DWD 層相關(guān)部分開發(fā)人員可見。
特別敏感數(shù)據(jù),如用戶年齡、號碼、身份證好、地址等,應(yīng)該放到專門的數(shù)據(jù)庫里,數(shù)倉主庫只存放用戶 ID 和其它必須字段。例如年齡應(yīng)該脫敏成年齡區(qū)間或開發(fā)特定的 UDF 轉(zhuǎn)化函數(shù)。
我們分別從設(shè)計(jì)規(guī)范、流程規(guī)范、質(zhì)量管控、數(shù)據(jù)安全四個(gè)方面,詳細(xì)闡述了數(shù)倉規(guī)范。應(yīng)該已經(jīng)涵蓋了數(shù)倉規(guī)范的方方面面。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。