1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        如何理解數(shù)據(jù)質(zhì)量?

        共 4270字,需瀏覽 9分鐘

         ·

        2020-09-24 23:09

        數(shù)據(jù)質(zhì)量該如何理解

        |0x00 題外話:架構(gòu)推導(dǎo)思路

        說起數(shù)據(jù)質(zhì)量,其實是一個很寬泛的問題,類似于寫數(shù)據(jù)建模一樣,是一個抽象概念為主的事情,對于程序員群體來說,總是難以解答和回答的。這里針對數(shù)據(jù)質(zhì)量等類似的、在數(shù)據(jù)倉庫平臺中必須提及的概念,提供一種解答的思路,就是架構(gòu)推導(dǎo)理論。

        先說一下基本的架構(gòu)推導(dǎo)理論。根據(jù)ISO/IEC 42010:20072中的定義,架構(gòu) = 組件模塊+關(guān)聯(lián)關(guān)系+約束&指導(dǎo)原則。我們用一張圖來解釋架構(gòu)在系統(tǒng)中的作用:

        從上圖可以看出,架構(gòu)是介于產(chǎn)品和業(yè)務(wù)之間的橋梁,從任意維度出發(fā),通過架構(gòu),能夠推導(dǎo)出另一維度的相關(guān)信息。因而,架構(gòu)的推導(dǎo)也有兩種思路:自頂向下和自底向上。

        先說一下自頂向下的思路:假設(shè)我們目前有一個問題“豬為什么適合當(dāng)寵物”,我們可以設(shè)想一下受眾的疑問,從觀察者的角度出發(fā)總結(jié)出幾條經(jīng)驗,例如性格好、身材好和用途多。在總結(jié)出基本結(jié)論的基礎(chǔ)上,我們再進行深一步的挖掘,例如“為什么豬的性格好”,我們可能得出“因為豬的性格很溫順”,再例如“為什么豬的身材好”,我們可能得出“因為豬的皮膚白、屁股翹”。由此我們再針對每一個細節(jié)深挖,就得到了我們要的系統(tǒng)架構(gòu)細節(jié)。用一張圖描述這個問題,如下:

        再說一下自底向上的思路:假設(shè)我們目前有很多的用例集合,例如“我們需要監(jiān)控用戶瀏覽頁面的行為”、“用戶在頁面中的某種點擊行為需要記錄”、“點擊行為需要與展現(xiàn)行為進行關(guān)聯(lián)”,等等。在此基礎(chǔ)上,我們將大段的產(chǎn)品文檔進行梳理,抽象出幾個關(guān)鍵的概念模型,例如“產(chǎn)品需要分別統(tǒng)計點擊和展現(xiàn)日志”、“點擊和展現(xiàn)日志需要通過某種ID進行關(guān)聯(lián)”這樣的架構(gòu)概念,最后按照系統(tǒng)的職責(zé),設(shè)定好一個具體的思路,并分別實現(xiàn)。用一張圖描述這個問題,如下:

        通過這兩種方式,我們可以先采用自底向上的方式,來分拆產(chǎn)品描述的細節(jié),總結(jié)出初步的觀點,再按照程序員的思路進行自頂向下的拆分,最后再進行一輪自底向上的總結(jié),基本上就可以確定一套系統(tǒng)應(yīng)該有的架構(gòu)和細節(jié)。

        說了這么多,其實核心思想很簡單,針對任何一類問題,都有兩種思考它的方法:自頂向下和自底向上。在此基礎(chǔ)上,可以多次組合這兩種方法,來得到一個問題完整的多方面回答。

        |0x01 從程序員視角看數(shù)據(jù)質(zhì)量

        那么數(shù)據(jù)質(zhì)量應(yīng)該怎么思考,首先從程序員的角度出發(fā),進行自底向上總結(jié)。

        第一步,從程序員的日常工作出發(fā)。數(shù)據(jù)倉庫工作中,開發(fā)占了絕大部分的比重,因此代碼規(guī)范肯定是非常有必要的,其次應(yīng)該是具體技術(shù)的應(yīng)用細節(jié),例如注意數(shù)據(jù)傾斜等問題,再次要對業(yè)務(wù)的概念非常熟悉,避免與產(chǎn)品思路上的差異,最后就是要熟練應(yīng)用各種開發(fā)工具。把這些事情的各種細節(jié)做總結(jié),升華一下概念,就是開發(fā)質(zhì)量

        第二步,從配合人員的工作出發(fā)。如果團隊稍微大一些的話,肯定有相應(yīng)的測試或者運維人員,對于我們開發(fā)的代碼和運行進行配合。例如業(yè)務(wù)邏輯的二次check、數(shù)據(jù)的運行結(jié)果之間一致性是否有保障,同時如果已開發(fā)的過程存在了問題,如何回溯歷史數(shù)據(jù)、優(yōu)化老代碼也屬于這個范疇。總結(jié)一下,就是需要測試的配合。

        第三步,從流程角度出發(fā)避免人為失誤?;旧险?guī)一些的公司都會強調(diào)上線規(guī)范,做好數(shù)據(jù)校驗、回滾方案、上下游監(jiān)控等工作。

        第四步,從維護角度出發(fā)及時發(fā)現(xiàn)問題。數(shù)據(jù)倉庫其實最主要的一個問題,就是針對每一個問題,都要有相應(yīng)的開發(fā)人員來檢查問題,因此要有詳細的值周規(guī)約,能夠在第一時間出問題時有人介入。此外還需要配合各種完善的報警與監(jiān)控平臺,針對數(shù)據(jù)倉庫日常的整體狀況進行一個全面的監(jiān)控。

        總結(jié)這四個細節(jié)問題的匯總,可以得到四個角度的回答:易讀易擴展易維護;上線無失誤;報警及時處理;業(yè)務(wù)邏輯清晰。這四條其實就可以看作是數(shù)據(jù)質(zhì)量的一個大的概念,用一張圖來總結(jié)更為清晰一些:


        |0x02 從理論層面看數(shù)據(jù)質(zhì)量

        雖然說從程序員的角度出發(fā),數(shù)據(jù)質(zhì)量的問題描述的已經(jīng)比較清晰了,但是對于非數(shù)據(jù)開發(fā)的程序員,以及產(chǎn)品和運營人員來說,這些還是有些難以讀懂。因此很多時候要求我們用更抽象的角度出發(fā),來進行問題的拆解。這里常見的描述問題方式,參照CAP與BASE原則,我們可以仿照別人的概念,來組織和細化一個屬于我們自己的概念,這里也算是自頂向下思路的一種實現(xiàn)。

        從筆者自身的角度出發(fā),我總結(jié)了大概八條原則,詳情如下:

        1. 數(shù)據(jù)的完整性:數(shù)據(jù)的完整性比較易于理解,主要作用在數(shù)據(jù)倉庫架構(gòu)中的數(shù)據(jù)采集環(huán)節(jié)中,對應(yīng)到數(shù)據(jù)分層理論是DWD層,例如要剔除掉數(shù)據(jù)的缺失信息,注意采集過程中的數(shù)據(jù)偏移現(xiàn)象并糾正,等等;

        2. 數(shù)據(jù)的準(zhǔn)確性:數(shù)據(jù)的準(zhǔn)確性不太常見,但比較關(guān)鍵,例如記錄消費金額的信息不能為負值,要加入校驗邏輯以防止業(yè)務(wù)部門的數(shù)據(jù)修正操作,對應(yīng)到數(shù)據(jù)分層理論是DWD層,另外需要引入反作弊系統(tǒng)的支持,過濾掉那些無效的作弊數(shù)據(jù),防止統(tǒng)計結(jié)果出現(xiàn)偏差,對應(yīng)到數(shù)據(jù)分層理論是ODS層,;

        3. 數(shù)據(jù)的一致性:數(shù)據(jù)的一致性主要作用在離線開發(fā)環(huán)節(jié)中,對應(yīng)的數(shù)據(jù)分層理論是DWS層,針對同一主題下的數(shù)據(jù)統(tǒng)計,確保統(tǒng)計的數(shù)據(jù)源是一致的,例如在搜索引擎系統(tǒng)中,由于搜索日志、廣告展現(xiàn)日志是分開記錄的,那么統(tǒng)計廣告的展現(xiàn)量應(yīng)該以廣告展現(xiàn)日志為基準(zhǔn)進行統(tǒng)計,盡管搜索日志帶有廣告展示的信息,但它的統(tǒng)計結(jié)果會因為各種問題與廣告展現(xiàn)日志的結(jié)果對不上,這里不可以采信;

        4. 數(shù)據(jù)的及時性:比較完整一些的數(shù)據(jù)平臺都包括了實時數(shù)據(jù)統(tǒng)計、小時級數(shù)據(jù)統(tǒng)計及天級數(shù)據(jù)統(tǒng)計,其實數(shù)據(jù)準(zhǔn)時產(chǎn)出也算是數(shù)據(jù)質(zhì)量原則的一部分,應(yīng)該每天早上8點統(tǒng)計好前一天的數(shù)據(jù),如果你延遲到了10點,肯定會有很多客戶投訴你,盡管數(shù)據(jù)是準(zhǔn)確的,但這種引起客戶投訴的情況,也需要歸到數(shù)據(jù)質(zhì)量原則中來;

        5. 數(shù)據(jù)的安全性:假設(shè)團隊規(guī)模較大,涉及了多個業(yè)務(wù)線的數(shù)據(jù),那么權(quán)限與安全問題也需要值得注意,因為消費金額這一類的數(shù)據(jù),在任何一家公司都屬于敏感信息,在對外暴露時需要做脫敏的處理,提供點擊展現(xiàn)等信息也應(yīng)該有權(quán)限申請的步驟,這個環(huán)節(jié)既可以作用在數(shù)據(jù)分層理論的ADS層,也可以作用在DWS層;

        6. 數(shù)據(jù)的自查性:數(shù)據(jù)倉庫并不是說我開發(fā)好了,就放在那里不管了,也不能說我需要指定一個人,天天去盯著有沒有問題,數(shù)據(jù)倉庫的架構(gòu)中應(yīng)該有對自身運行情況自動檢查的特性,作用在數(shù)據(jù)分層理論的ADS層,例如在重點步驟之后添加校驗環(huán)節(jié),統(tǒng)計同比/環(huán)比信息,波動過大時主動報警等;

        7. 數(shù)據(jù)的周期性:數(shù)據(jù)質(zhì)量不僅與開發(fā)過程密切相關(guān),也與存儲數(shù)據(jù)的硬件息息相關(guān),在很多場景下,由于服務(wù)器資源的有限增長與數(shù)據(jù)資產(chǎn)的無限增加,必然到了一定的時間就會產(chǎn)生成本壓力,因此定期刪除無用數(shù)據(jù),針對一些冷門數(shù)據(jù)做極限壓縮,都是有效保障數(shù)據(jù)長期穩(wěn)定運行的基石;

        8. 數(shù)據(jù)的可追蹤性:數(shù)據(jù)的可追蹤性,與元數(shù)據(jù)平臺的搭建息息相關(guān),可以說因為有了元數(shù)據(jù)平臺,能夠看到每一個過程的上下游血緣信息,因此在排查問題時,能夠快速及時定位出問題的步驟,這非常關(guān)鍵。

        |0x03 從架構(gòu)的環(huán)節(jié)看數(shù)據(jù)質(zhì)量

        但其實總結(jié)出理論還是很抽象,一些Boss或者Leader會要求你結(jié)合具體的場景來解釋這些概念,這個時候從一次普通的業(yè)務(wù)開發(fā)出發(fā),完整的闡述從數(shù)據(jù)采集、同步、開發(fā),到最后的數(shù)據(jù)展現(xiàn),我們都做了哪些事情,就十分有必要了,這也是從架構(gòu)角度看數(shù)據(jù)質(zhì)量如何保障的具體實現(xiàn)。

        首當(dāng)其沖的是業(yè)務(wù)信息的變更,例如增加某種統(tǒng)計字段,或者是重新改變某種指標(biāo)的計算方式。業(yè)務(wù)信息的變化不僅是需要開發(fā)人員的主動介入,也需要平臺工具的相關(guān)支持。例如Mysql數(shù)據(jù)庫表發(fā)生信息變更時,通過Canal等組件可以感知數(shù)據(jù)表的DDL變化情況,離線根據(jù)DDL信息變更對應(yīng)Hive表的信息。

        其次是代碼提交的校驗環(huán)節(jié),因為數(shù)據(jù)質(zhì)量是一個很冰冷的詞匯,代碼出了問題就是質(zhì)量不好,因此如何最大程度上避免人為錯誤,就成了數(shù)據(jù)質(zhì)量保障的重要工作。還是兩個方面的思路,一個是交叉檢驗,既然一個人容易出問題,那么兩人及以上來校驗,出錯的概率就會大幅降低,因此需要搭建一個可行的測試環(huán)境,如果沒有,可以在線上平臺搭建一個相同的測試表,導(dǎo)入少量的數(shù)據(jù),這時安排測試人員介入邏輯的檢查,并且做相應(yīng)的回歸測試。另一個是進行靜態(tài)的SQL代碼檢查,針對大表掃描、空值校驗等檢查,提示開發(fā)人員對應(yīng)的錯誤風(fēng)險。在數(shù)據(jù)采集環(huán)節(jié),還可以加入一些與具體業(yè)務(wù)緊密相連的監(jiān)控規(guī)則,例如訂單拍下時間不大于當(dāng)天時間,等等。

        再次是搭建一些機制完善的輔助平臺,例如可以調(diào)整任務(wù)優(yōu)先級的調(diào)度平臺,例如可以準(zhǔn)時發(fā)現(xiàn)問題并提醒的報警平臺,例如可以檢測任務(wù)依賴死鎖的開發(fā)平臺,等等,針對數(shù)據(jù)的延遲監(jiān)控、作業(yè)調(diào)度的合理性等情況做輔助的技術(shù)保障。

        最后是要有完善的開發(fā)組織工作,針對每一次出現(xiàn)的數(shù)據(jù)故障,都得安排對應(yīng)的事件回顧,每周安排例行會議進行典型開發(fā)代碼的Code Review,有詳細的數(shù)據(jù)問題應(yīng)對手冊以供新入職的開發(fā)人員熟悉,等等。

        |0x04 數(shù)據(jù)資產(chǎn)評估

        既然提到了數(shù)據(jù)質(zhì)量,那么質(zhì)量便有好壞的區(qū)分,像數(shù)據(jù)平臺百萬級的數(shù)據(jù)表,總有高質(zhì)量與低質(zhì)量的區(qū)分,這時候需要進行相應(yīng)的數(shù)據(jù)資產(chǎn)評估,高質(zhì)量的表需要更高的優(yōu)先級來進行處理。

        這里提供幾個參考的制定標(biāo)準(zhǔn):

        1. 數(shù)據(jù)更新頻率,定時更新的肯定好過偶爾更新的;

        2. 數(shù)據(jù)丟失后果,假設(shè)某張表數(shù)據(jù)丟失,會引起重大資產(chǎn)損失,它肯定是好數(shù)據(jù)

        3. 數(shù)據(jù)依賴程度,被跨部門依賴、被重要數(shù)據(jù)依賴,優(yōu)先級肯定很高;

        4. 數(shù)據(jù)業(yè)務(wù)屬性,帶“金額”這種字段的數(shù)據(jù),相應(yīng)的重要性要高;

        5. 數(shù)據(jù)使用頻率,有些表被調(diào)用次數(shù)很多,說明它很有存在的必要性;

        6. 數(shù)據(jù)故障次數(shù),當(dāng)一張表出過問題時,要及時標(biāo)注,便于依賴它的任務(wù)知道可不可靠。

        |0xFF 如何評估數(shù)據(jù)質(zhì)量

        這里提供一些常見場景:

        1. 通過數(shù)據(jù)資產(chǎn)評估體系,制定高、中、低三種數(shù)據(jù)標(biāo)準(zhǔn),以季度為周期,統(tǒng)計三種標(biāo)準(zhǔn)問題次數(shù);

        2. 規(guī)定詳細的數(shù)據(jù)產(chǎn)出時間,假設(shè)數(shù)據(jù)產(chǎn)出延時,計算延遲時間及問題,并進行記錄;

        3. 通過產(chǎn)品、客戶、數(shù)據(jù)使用人員及配合部門反饋意見,發(fā)現(xiàn)數(shù)據(jù)不一致等問題,及時反饋,確認(rèn)后計入問題清單;

        4. 通過監(jiān)控及報警平臺,統(tǒng)計每日異常信息,分類產(chǎn)出報告

        5. 針對每位開發(fā)人員,測試人員檢查發(fā)現(xiàn)問題后,如果確認(rèn)問題存在,計入開發(fā)問題,最后匯總常見問題場景;

        6. 定期掃描開發(fā)代碼,發(fā)現(xiàn)問題及時發(fā)出報警。

        --end--


        掃描下方二維碼
        添加好友,備注【交流群
        拉你到學(xué)習(xí)路線和資源豐富的交流群

        瀏覽 48
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            男女免费视频观看 | 三级大片视频 | 国产欧美亚洲精品 | 啊~喷水了~嗯~高潮了视频 | 国产美女作爱 | 日韩欧美精品在线观看 | 午夜视频在线观看网站 | 欧美三级手机在线 | 人人操人人人 | 久久久久久亚洲成人电影 |