【實戰講解】數據血緣落地實施

?在復雜的社會分工協作體系中,我們需要明確個人定位,才能更好的發揮價值,數據也是一樣,于是,數據血緣應運而生。

今天這篇文章會全方位的講解數據血緣,并且給出具體的落地實施方案。

一、數據血緣是什么

數據血緣是在數據的加工、流轉過程產生的數據與數據之間的關系。

提供一種探查數據關系的手段,用于跟蹤數據流經路徑。

二、數據血緣的組成

1、數據節點

數據血緣中的節點,可以理解為數據流轉中的一個個實體,用于承載數據功能業務。例如數據庫、數據表、數據字段都是數據節點;從廣義上來說,與數據業務相關的實體都可以作為節點納入血緣圖中,例如指標、報表、業務系統等。

按照血緣關系劃分節點,主要有以下三類:流出節點->中間節點->流入節點

流出節點:?數據提供方,血緣關系的源端節點。

中間節點:?血緣關系中類型最多的節點,既承接流入數據,又對外流出數據。

流入節點:?血緣關系的終端節點,一般為應用層,例如可視化報表、儀表板或業務系統。

2、節點屬性

當前節點的屬性信息,例如表名,字段名,注釋,說明等。

3、流轉路徑

數據流轉路徑通過表現數據流動方向、數據更新量級、數據更新頻率三個維度的信息,標明了數據的流入流出信息:

數據流動方向:?通過箭頭的方式表明數據流動方向

數據更新量級:?數據更新的量級越大,血緣線條越粗,說明數據的重要性越高。

數據更新頻率:?數據更新的頻率越高,血緣線條越短,變化越頻繁,重要性越高。

4、流轉規則-屬性

流轉規則體現了數據流轉過程中發生的變化,屬性則記錄了當前路徑對數據的操作內容,用戶可通過流轉路徑查看該路徑規則與屬性,規則可以是直接映射關系,也可以是復雜的規則,例如:

數據映射:?不對數據做任何變動,直接抽取。

數據清洗:?表現數據流轉過程中的篩選標準。例如要求數據不能為空值、符合特定格式等。

數據轉換:?數據流轉過程中,流出實體的數據需要進行特殊處理才能接入到數據需求方。

數據調度:?體現當前數據的調度依賴關系。

數據應用:?為報表與應用提供數據。

三、我們為什么需要數據血緣

1、日益龐大的數據開發導致表間關系混亂,管理成本與使用成本激增

數據血緣產生最本質的需求。大數據開發作為數據匯集與數據服務提供方,龐大的數據與混亂的數據依賴導致管理成本與使用成本飆升。

2、數據價值評估,數據質量難以推進

表的優先級劃分,計算資源的傾斜,表級數據質量監控,如何制定一個明確且科學的標準。

3、什么表該刪,什么表不能刪,下架無依據

業務庫,數倉庫,中間庫,開發庫,測試庫等眾多庫表,是否存在數據冗余(一定存在)。以及存儲資源如何釋放?

4、動了一張表,錯了一堆表

你改了一張表的字段,第二天醒來發現郵件里一堆任務異常告警。

5ETL任務異常時的歸因分析、影響分析、恢復

承接上個問題,如果存在任務異常或者ETL故障,我們如何定位異常原因,并且進行影響分析,以及下游受影響節點的快速恢復。

6、調度依賴混亂

數據依賴混亂必然會帶來調度任務的依賴混亂,如何構建一個健壯的調度依賴。

7、數據安全審計難以開展

針對銀行、保險、政府等對安全關注度較高的行業,數據安全-數據泄露-數據合規性需要重點關注。

由于數據存在ETL鏈路操作,下游表的數據來源于上游表,所以需要基于數據全鏈路來進行安全審計,否則可能會出現下游數據安全等級較低,導致上游部分核心數據泄露。

四、數據血緣可以做什么

1、流程定位,追蹤溯源

通過可視化方式,將目標表的上下游依賴進行展示,一目了然。

2、確定影響范圍

通過當前節點的下游節點數量以及類型可以確定其影響范圍,可避免出現上游表的修改導致下游表的報錯。

3、評估數據價值、推動數據質量

通過對所有表節點的下游節點進行匯總,排序,作為數據評估依據,可重點關注輸出數量較多的數據節點,并添加數據質量監控。

4、提供數據下架依據

例如以下數據節點,無任何下游輸出節點,且并無任何存檔需求,則可以考慮將其下架刪除。

5、歸因分析,快速恢復

當某個任務出現問題時,通過查看血緣上游的節點,排查出造成問題的根因是什么。同時根據當前任務節點的下游節點進行任務的快速恢復。

6、梳理調度依賴

可以將血緣節點與調度節點綁定,通過血緣依賴進行ETL調度。

7、數據安全審計

數據本身具有權限與安全等級,下游數據的安全等級不應該低于上游的安全等級,否則會有權限泄露風險。

可以基于血緣,通過掃描高安全等級節點的下游,查看下游節點是否與上游節點權限保持一致,來排除權限泄露、數據泄露等安全合規風險。

五、數據血緣落地方案

目前業內常見的落地數據血緣系統以及應用,主要有以下三種方式:

1、采用開源系統:

AtlasMetacatDatahub

采用開源系統最大的優點是投入成本較低,但是缺點主要包括?

1、適配性較差,開源方案無法完全匹配公司現有痛點。

2、二開成本高,需要根據開源版本進行定制化開發。

2、廠商收費平臺:

億信華辰,網易數帆等

此類數據平臺中會內置數據血緣管理系統,功能較為全面,使用方便。但是同樣也有以下缺點:

1、貴

2、需要ALL IN平臺,為保障數據血緣的使用,數據業務需要全部遷移到廠商平臺中。

3、自建

通過圖數據庫、后端、前端自建數據血緣管理系統,此方案開發投入較大,但是有以下優點

1、因地制宜,可根據核心痛點定制化開發元數據及數據血緣系統。

2、技術積累,對于開發人員來說,從0-1開發數據血緣系統,可以更深刻的理解數據業務。

3、平臺解耦,獨立于數據平臺之外,數據血緣的開發不會對正常業務造成影響。

接下來我們講講如何自建數據血緣系統

六、如何構建數據血緣系統

1、明確需求,確定邊界

在進行血緣系統構建之前,需要進行需求調研,明確血緣系統的主要功能,從而確定血緣系統的最細節點粒度,實體邊界范圍。

例如節點粒度是否需要精確到字段級,或是表級。一般來說,表級粒度血緣可以解決75%左右的痛點需求,?字段級血緣復雜度較表級血緣高出許多,如果部門人數較少,可以考慮只精確到表級粒度血緣。

常見的實體節點包括:任務節點、庫節點、表節點、字段節點、指標節點、報表節點、部門節點等。血緣系統可以擴展數據相關的實體節點,可以從不同的場景查看數據走向,例如表與指標,指標與報表的血緣關系。但是實體節點的范圍需要明確,不可無限制的擴展下去。

明確需求,確定節點粒度與范圍之后,才可根據痛點問題給出準確的解決方案,不至于血緣系統越建越臃腫,提高ROI(投入產出比)

2、構建元數據管理系統

目前市面上所有的血緣系統都需要依賴于元數據管理系統而存在。

元數據作為血緣的基礎,一是用于構建節點間的關聯關系,二是用于填充節點的屬性,三是血緣系統的應用需要基于元數據才能發揮出最大的價值。所以構建血緣系統的前提一定是有一個較全面的元數據。

3、技術選型:圖數據庫

目前業內通常采用圖數據庫進行血緣關系的存儲。

對于血緣關系這種層級較深,嵌套次數較多的應用場景,關系型數據庫必須進行表連接的操作,表連接次數隨著查詢的深度增大而增多,會極大影響查詢的響應速度。

而在圖數據庫中,應用程序不必使用外鍵約束實現表間的相互引用,而是利用關系作為連接跳板進行查詢,在查詢關系時性能極佳,而且利用圖的方式來表達血緣關系更為直接。

下圖為圖數據庫與關系型數據庫在查詢人脈時的邏輯對比:

4、血緣關系錄入:自動解析and手動登記

自動解析:

獲取到元數據之后,首先可以根據元數據表中的SQL抽取語句,通過SQL解析器可自動化獲取到當前表的來源表【SQL解析器推薦jsqlparse】,并進行血緣關系錄入。

手動登記:

如果當前表無SQL抽取語句,數據來源為手動導入、代碼寫入、SparkRDD方式等無法通過自動化方式確定來源表的時候,我們需要對來源表進行手動登記,然后進行血緣關系的錄入。

5、血緣可視化

血緣系統構建完成后,為了能夠更好的體現血緣價值,量化產出,需要進行血緣可視化的開發,分為兩步:

1)鏈路-屬性展示:

根據具體節點,通過點擊操作,逐級展示血緣節點間的鏈路走向與涉及到的節點屬性信息。

2)節點操作:

基于可視化的血緣節點與當前節點附帶的元數據屬性,我們可以設想一些自動化操作例如:

節點調度:直接基于血緣開啟當前表節點的調度任務?

屬性修改:通過前端修改當前節點的元數據屬性并保存

6、血緣統計分析

數據血緣構建完成后,我們可以做一些統計分析的操作,從不同層面查看數據的分布與使用情況,從而支撐業務更好更快更清晰。

以我們團隊舉例,在工作過程中,我們需要以下血緣統計用于支撐數據業務,例如:

數據節點下游節點數量排序,用于評估數據價值及其影響范圍

查詢當前節點的所有上游節點,用于業務追蹤溯源

數據節點輸出報表信息詳情統計,用于報表的上架與更新

查詢孤島節點,即無上下游節點的節點,用于數據刪除的依據

7、血緣驅動業務開展

數據血緣構建完成,統計分析結果也有了,業務痛點也明確了,接下來我們即可利用數據血緣驅動業務更好更快開展。

我們團隊目前落地的血緣相關業務有以下幾點:

1)影響范圍告警:

將血緣關系與調度任務打通,監測當前血緣節點的調度任務,如果當前節點調度出現異常,則對當前節點的所有下游節點進行告警。

2)異常原因探查:

還是將血緣關系與調度任務打通,監測當前血緣節點的調度任務,如果當前節點調度出現異常,則會給出當前節點的直接上游節點,用于探查異常原因。

3)異常鏈路一鍵恢復:

基于上一應用,異常原因定位并且修復完成之后,可以通過血緣系統,一鍵恢復當前數據節點的所有下游節點調度任務,真正實現一鍵操作。

?4)支撐數據下架:

目前團隊已經根據探查孤島節點即無上下游節點的節點,累計歸檔數據表628張,節省了13%的存儲空間。

5)數據質量監控:

對當前血緣中所有節點輸出的下游節點數量進行排序,可以精確的判斷某張表的影響范圍大小,從而可以根據此對高排序表進行數據質量的監控。

6)數據標準化監控:

如果當前公司制定了基于庫、表、字段的命名規范,我們可以通過探查血緣中的所有數據節點,并命名規范進行匹配,得到不符合規范的庫、表、字段進行整改。

當然了,此業務僅基于元數據也可實現,放在此處屬于博主強行升華了。

7)數據安全審計:

團隊基于用戶職級、部門、操作行為等權重對目前的庫表進行了數據權限等級劃分,權限等級越高,當前表的安全級別越高。

團隊基于血緣進行數據全鏈路的安全等級監測,如果發現下游節點安全等級低于上游節點,則會進行告警并提示整改。確保因為安全等級混亂導致數據泄露。

八、血緣系統評價標準

在推動數據血緣落地過程中,經常會有用戶詢問:血緣質量如何?覆蓋場景是否全面?能否解決他們的痛點?做出來好用嗎?

于是我也在思考,市面上血緣系統方案那么多,我們自建系統的核心優勢在哪里,血緣系統的優劣從哪些層次進行評價,于是我們團隊量化出了以下三個技術指標:

1、準確率

定義:?假設一個任務實際的輸入和產出與血緣中該任務的上游和下游相符,既不缺失也不多余,則認為這個任務的血緣是準確的,血緣準確的任務占全量任務的比例即為血緣準確率。

準確率是數據血緣中最核心的指標,例如影響范圍告警,血緣的缺失有可能會造成重要任務沒有被通知,造成線上事故。

我們在實踐中通過兩種途徑,盡早發現有問題的血緣節點:

人工校驗:?通過構造測試用例來驗證其他系統一樣,血緣的準確性問題也可以通過構造用例來驗證。實際操作時,我們會從線上運行的任務中采樣出一部分,人工校驗解析結果是否正確。

用戶反饋:?全量血緣集合的準確性驗證是個漫長的過程,但是具體到某個用戶的某個業務場景,問題就簡化多了。實際操作中,我們會與一些業務方深入的合作,一起校驗血緣準確性,并修復問題。

2、覆蓋率

定義:?當有數據資產錄入血緣系統時,則代表數據血緣覆蓋了當前數據資產。被血緣覆蓋到的數據資產占所有數據資產的比例即為血緣覆蓋率。

血緣覆蓋率是比較粗粒度的指標。作為準確率的補充,用戶通過覆蓋率可以知道當前已經支持的數據資產類型和任務類型,以及每種覆蓋的范圍。

在內部,我們定義覆蓋率指標的目的有兩個,一是我方比較關注的數據資產集合,二是尋找當前業務流程中尚未覆蓋的數據資產集合,以便于后續血緣優化。

當血緣覆蓋率低時,血緣系統的應用范圍一定是不全面的,通過關注血緣覆蓋率,我們可以知曉血緣的落地進度,推進數據血緣的有序落地。

3、時效性

定義:?從數據資產新增和任務發生修改的時間節點,到最終新增或變更的血緣關系錄入到血緣系統的端到端延時。

對于一些用戶場景來說,血緣的時效性并沒有特別重要,屬于加分項,但是有一些場景是強依賴。不同任務類型的時效性會有差異。

例如:故障影響范圍告警以及恢復,是對血緣實時性要求很高的場景之一。如果血緣系統只能定時更新T-1的狀態,可能會導致嚴重業務事故。

提升時效性的瓶頸,需要業務系統可以近實時的將任務相關的修改,以通知形式發送出來,并由血緣系統進行更新。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35383.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35383.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35383.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JAVA多線程和并發基礎面試問答(翻譯)

JAVA多線程和并發基礎面試問答(翻譯) java多線程面試問題 1. 進程和線程之間有什么不同? 一個進程是一個獨立(self contained)的運行環境,它可以被看作一個程序或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不同的類和程序…

蘇州OV泛域名RSA加密算法https

RSA加密算法是一種非對稱加密算法,它被廣泛應用于信息安全領域。與對稱加密算法不同,RSA加密算法使用了兩個密鑰,一個公鑰和一個私鑰。公鑰可以公開,任何人都可以使用它加密信息,但只有私鑰的持有者才能解密信息。RSA加…

php如何對接偽原創api

在了解偽原創api的各種應用形態之后,我們繼續探討智能寫作背后的核心技術。需要說明的是,智能寫作和自然語言生成、自然語言理解、知識圖譜、多模算法等各類人工智能算法都有緊密的關聯,在百度的智能寫作實踐中,常根據實際需求將多…

全球勞動力革命,Papaya Global 打破薪資界限

員工需求和勞動力結構的進一步變化,只會增加對更加自動化和全面的全球薪資解決方案的需求。 遠程工作潮流與全球勞動力的蓬勃發展,使得企業在全球范圍內,尋找最優秀的人才成為可能。然而,隨之而來的復雜薪資管理挑戰,也…

優雅地處理RabbitMQ中的消息丟失

目錄 一、異常處理 二、消息重試機制 三、錯誤日志記錄 四、死信隊列 五、監控與告警 優雅地處理RabbitMQ中的消息丟失對于構建可靠的消息系統至關重要。下面將介紹一些優雅處理消息丟失的方案,包括異常處理、重試機制、錯誤日志記錄、死信隊列和監控告警等。…

BUUCTF題目Web部分wp(持續更新)

關于SQL注入的一些通用辦法 可以訪問哪些表 如有權限,查詢當前用戶可以訪問的所有表 --Oracle查詢當前用戶可訪問的所有表 select owner, table_name from all_tables order by table_name; --MySQL查詢用戶可訪問的所有數據庫和表 select table_sche…

爬蟲017_urllib庫_get請求的quote方法_urlencode方法_---python工作筆記036

按行來看get請求方式 比如這個地址 上面這個地址復制粘貼過來以后 可以看到周杰倫變成了一堆的Unicode編碼了 所以這個時候我們看,我們說https這里,用了UA反爬,所以這里 我們構建一個自定義的Request對象,里面要包含Us

電腦mfc140u.dll丟失的怎么辦呢?這個方法親測可以解決

修復mfc140u.dll是我最近遇到的一個技術問題,雖然在解決過程中遇到了一些困難,但最終的成功修復讓我對技術的力量有了更深的體會。 首先,我想談談遇到問題時的困惑。當我嘗試運行一個應用程序時,突然彈出一個錯誤提示,…

Docker Dirtypipe(CVE-2022-0847)漏洞復現與分析容器逃逸

安裝環境 ./metarget cnv install cve-2022-0847 --verbose 原理 同臟牛,通過寫只讀內存,對映射的內存做篡改 EXP docker run --rm -it -v $(pwd):/exp --cap-addCAP_DAC_READ_SEARCH ubuntu如果提示 Unknown capability to add: "CAP_CAP_DAC_RE…

第五十二天

HTML5 ●MathML 是數學標記語言,是一種基于XML(標準通用標記語言的子集)的標準,用來在互聯網上書寫數學符號和公式的置標語言。 ●拖放 拖放是一種常見的特性,即抓取對象以后拖到另一個位置。 在 HTML5 中&#xf…

YAMLException: java.nio.charset.MalformedInputException: Input length = 1

springboot項目啟動的時候提示這個錯誤:YAMLException: java.nio.charset.MalformedInputException: Input length 1 根據異常信息提示,是YAML文件有問題。 原因是yml配置文件的編碼有問題。 需要修改項目的編碼格式,一般統一為UTF-8。 或…

分別用python和go語言來實現的風靡一時的2048 游戲,包含完整代碼

目錄 1、Python實現2、Go實現 2048 游戲實現主要包括以下幾個步驟: 創建一個棋盤,通常使用二維列表表示。實現棋子的移動規則,左移、右移、上移、下移。判斷游戲是否結束,即棋盤是否已滿或者無空位可移動。實現游戲界面的顯示。 …

【Android】ViewBinding+DataBinding+MVVM新手快速上手

為什么寫這篇博客 網上大部分博客,代碼量都比較大,把實際的業務都代入進去了 這篇博客的目的,就是為了講解基本原理和使用思路,然后給出一個最簡單的Demo 這里不講解具體用法,那樣篇幅會太長,直接看Demo…

TENNECO EDI 項目——X12與XML之間的轉換

近期為了幫助廣大用戶更好地使用 EDI 系統,我們根據以往的項目實施經驗,將成熟的 EDI 項目進行開源。用戶安裝好知行之橋EDI系統之后,只需要下載我們整理好的示例代碼,并放置在知行之橋指定的工作區中,即可開始使用。 …

YOLOv5入門實踐(3)— 手把手教你如何去劃分數據集

前言:Hello大家好,我是小哥談。數據集標注完成之后,下一步就是對這些數據集進行劃分了。面對繁雜的數據集,如果手動劃分的話,不僅麻煩而且不能保持隨機性。本節課就給大家介紹一種方法,即使用代碼去劃分數據…

Xcode升級導致關聯庫報錯

想辦法找到對應的庫 然后到 Build Phases -- LinkBinary With Libraries中點擊,選擇對應的framework即可,就像我工程的報錯 Undefined symbol: _OBJC_CLASS_$_ADClient _OBJC_CLASS_$_ASIdentifierManager 缺失的庫是AdSupport.framework 添加后再次編…

Elasticsearch6.x和7.x的區別

Elasticsearch6.x和7.x的區別 1、查找方面的區別 在增刪改方面,6.x和7.x是一樣的,在查找方面(分為普通查找和有高亮的查找),6.x和7.x有區別。 在7.x的es中: org.springframework.data.elasticsearch.cor…

Styled-components,另一種css in js的方案

介紹 Styled-components是一種流行的CSS-in-JS庫,它為React和React Native應用程序提供了一種優雅的方式來管理組件的樣式。它的設計理念是將CSS樣式與組件邏輯緊密綁定在一起,從而使樣式在組件層級中作用更加清晰和可維護 使用 安裝Styled-components…

【C語言】操作符詳解

目錄 一、算數操作符 二、移位操作符 1.左移操作符 2.右移操作符 (1) 邏輯右移 (2) 算術右移 (3)小總結 三、位操作符 四、賦值操作符 五、單目操作符 六、關系操作符 七、邏輯操作符 八、 條件操作符 九、逗號表達式 十、下標引用、函數調用和結構成員 1. [ ]下…

QT-如何使用RS232進行讀寫通訊

以下是一個使用Qt進行RS232通訊的具體示例&#xff0c;包括讀取和寫入數據的操作&#xff1a; #include <QCoreApplication> #include <QDebug> #include <QSerialPort> #include <QTimer>QSerialPort serial; // 串口對象void readData() {QByteArra…