日日碰狠狠躁久久躁96avv-97久久超碰国产精品最新-婷婷丁香五月天在线播放,狠狠色噜噜色狠狠狠综合久久 ,爱做久久久久久,高h喷水荡肉爽文np肉色学校

睿治

智能數據治理平臺

睿治作為國內功能最全的數據治理產品之一,入選IDC企業數據治理實施部署指南。同時,在IDC發布的《中國數據治理市場份額》報告中,連續四年蟬聯數據治理解決方案市場份額第一。

自動化生成數據血緣關系研究與實踐

時間:2023-10-19來源:亞洲首帥瀏覽數:1061

各行業使用不同的數據庫語言編寫代碼,一方面需要明確加工邏輯與業務邏輯的一致性,另一方面也增加了數據表字段加工帶來的數據復雜性,這種復雜性會導致系統維護數據表字段關系過多,層級過深,進而難以追溯和定位數據表字段出現問題的根本原因。本文旨在研究一種自動化生成數據血緣關系方法,根據加工批量腳本中出現的數據表各個字段的語法分析結果,對數據表字段關系進行血緣分析,這樣既可以實現對加工表字段進行來源表字段或目標表字段關系的存儲,又可以降低對來源表字段和目標表字段追溯和定位的成本,同時,血緣分析算法與數據庫加工批量存儲、計算和查詢邏輯松耦合,使得血緣分析算法具有可替換性、可更新性。


一、數據血緣分析概述

數據血緣分析可以對數據表字段間關系進行追溯,進而分析上下游加工表數據發生變化時的影響。在數據編織方面,也可以通過數據血緣分析將數據中大量有價值的信息有邏輯地提取和分析。然而,對于大量的后臺加工批量腳本而言,數據庫數據表及字段間血緣關系仍然需要通過研究算法和生產實踐來進行捕獲和驗證,尤其對于涉及到作業調度管理的批量服務系統而言,自動化生成數據血緣關系則可以動態記錄數據表及字段間血緣關系。目前針對業務查詢后臺加工批量系統而言,自動化生成數據血緣關系面臨以下挑戰。

一是后臺加工批量數量大,血緣分析周期長。

二是表加工方式多樣,一些表僅需要分析來源表字段關系,一些表則需要分析多個子查詢多個關聯表字段關系,還有一些表需要分析包含UNION關鍵字的加工表字段關系。

三是SQL代碼中字段所屬表不夠具體,基于文本級別的血緣分析對于不寫或漏寫表別名的來源字段,無法定位該字段的來源表歸屬,進而無法進行血緣分析。

四是血緣分析需要驗證數據表字段的真實存在性,但數據表被刪除則無法進行驗證。

五是血緣分析過程需保證不影響后臺加工批量服務的連續性。


二、行業實踐情況

針對數據血緣分析存在的這些難題,國內諸多行業企業設計并搭建數據血緣分析系統和平臺,以解決數據規模大、數據質量差、數據檢測難等問題。

在互聯網行業,字節跳動在數據血緣建設過程中遇到了數據源種類多、數據處理邏輯復雜、數據規模大等問題,對此,其通過設計合理的數據血緣模型和優化方案實現了數據血緣的存儲和導出,并提供了多種數據血緣的具體用例,例如數據質量監控、數據安全審計、數據價值評估等。

在物流行業,滿幫集團采用了先采集后解析的方案,對各個計算引擎的SQL進行血緣解析,并使用圖數據庫進行血緣存儲和檢索。滿幫集團使用數據血緣技術實現了全鏈路數據治理,提升了數據質量、數據安全和數據價值。

在銀行業,微眾銀行為了對全局數據的來源及影響范圍進行實時檢測和深度分析,目前全行AIOps都已經接入NebulaGraph平臺用于數據血緣治理。


三、相關技術

1.詞法分析

詞法分析是計算機科學中將字符序列轉換為單詞Token序列的過程,序列可以是關鍵字、標識符、運算符、標點符號等。詞法分析階段是編譯過程的第一個階段,從左到右逐個字符進行掃描,然后根據構詞規則識別單詞。單詞可以直接匹配,也可以使用正則表達式進行定義后匹配。對于復雜單詞序列,當定義好單詞對應的正則表達式,就可以通過掃描并進行正則表達式匹配來獲取程序中所有單詞序列。數據庫語言進行詞法分析的流程示意如圖1所示。

圖1 數據庫語言詞法分析流程示意

2.語法分析

語法分析是編譯過程的一個邏輯階段。通過語法分析,程序代碼段被解析成若干個語法分析樹,樹節點包含了所有單詞序列的上下級關系。數據庫語言語法分析按照分號劃分代碼段,每個代碼段中的所有單詞都會被解析并賦予類型,例如SELECT就是DML語言Keyword關鍵字,而字段名和表名則為Identifier。SQL語法分析過程樣例如圖2所示。

圖2 SQL語法分析過程樣例

3.血緣分析

(1)基于文本級的SQL血緣分析方法

基于文本級的SQL血緣分析方法依舊可以獲得絕大部分的數據表字段關系,甚至可以設計出適用于絕大部分SQL語言的血緣分析方法,具有便捷性和高準確性。基于文本級的SQL血緣分析方法流程示意如圖3所示。

圖3 基于文本級的SQL血緣分析方法流程示意

(2)基于底層編譯的SQL血緣分析方法

數據庫系統根據SQL底層編譯執行邏輯維護一系列血緣關系表,通過SQL程序編譯邏輯直接獲取表字段關系,具有高效性和高準確性。但因為數據庫系統設計閉源,此方法并非主流的血緣分析方法。基于底層編譯的SQL血緣分析方法流程示意圖如圖4所示。

圖4 基于底層編譯的SQL血緣分析方法流程示意

4.有向圖

有向圖是一幅具有方向性的圖,每條方向的邊都連接著一對有序的頂點。在血緣關系圖中,有方向的邊代表數據流向,與之對應的有序頂點分別代表了來源數據表或字段和目標數據表或字段。有向圖和血緣關系有向圖樣例如圖5所示。

圖5 有向圖和血緣關系有向圖樣例

其中圖(a)為1到9節點構成的有向圖,圖(b)為數據血緣關系圖,字母代表數據表或者數據表字段,其中A為來源表或來源字段,B到E為中間表或中間字段,F到I為目標表或目標字段,數據流向如箭頭指向所示。


四、整體架構設計

本文提出的自動化生成數據血緣關系總體流程分為以下四個方面。

一是程序代碼語法分析,根據后臺加工批量腳本中存在的數據表及其各個字段的語法分析結果,將其中加工表間邏輯、字段加工方式等信息進行結構化存儲。

二是數據表字段血緣分析,根據語法分析生成的結果將需要解析的數據表字段進行提取和計算拓撲關系后存儲到有向圖中。

三是血緣關系存儲,將需要存儲的數據表字段血緣關系按照圖數據庫存儲方式寫回元數據庫中。

四是血緣分析調用,根據后臺加工批量的調度邏輯,將需要血緣分析的數據表字段進行動態存儲后,返回上層應用。

五是血緣關系可視化,通過構建前臺可視化查詢界面,大幅度提升開發人員查找加工表與上游表鏈路關系和上游數據表來源的效率。


1.程序代碼語法分析

(1)設計詞法分析表

語法分析通過詞法分析將程序中出現的字母數字等符號組合的單詞序列進行解析,構建單詞序列和單詞類型的“詞法分析表”。對于關鍵字匹配,可直接通過字符串掃描得到程序代碼中的關鍵字,例如AND、FROM、LIKE等。對于數字、標點符號和運算符而言,則需要通過正則表達式進行匹配。自主設計的詞法分析表見表1。

表1 詞法分析表

(2)切割存在關鍵字UNION的代碼段

UNION關鍵字用于合并兩個或多個SELECT語句的結果集,UNION內部的SELECT語句必須擁有相同數量的列,列也必須擁有相似的數據類型,同時每條SELECT語句中列的順序必須相同。對于UNION ALL語法而言,UNION結果集中的列名總是等于UNION中第一個SELECT語句中的列名。基于以上概念,在血緣分析之前,可以根據UNION數量切割SQL代碼段,拆分成若干個單一的代碼段,以便進行語法分析。以UNION ALL語法的切割樣例如圖6所示。

圖6 UNION ALL語法的切割樣例

(3)自動填充加工字段所屬表別名

無表別名字段的SQL代碼樣例如圖7所示。

圖7 無表別名字段的SQL代碼樣例

自動填充字段所屬表別名需要處理兩種情況,一是數據庫數據表的字段表別名填充,二是子查詢的字段表別名填充。數據庫數據表的字段表別名填充只需要查詢數據表的字段結構即可確定加工表字段所屬數據表關系,而子查詢的字段表別名填充則需要對子查詢中的數據表進行別名映射,同樣需要查詢數據表的字段結構。如果子查詢中包含子查詢,則需要進行數據表遞歸映射,可構建對應的數據結構遍歷所有數據表。由于子查詢中可能存在多個數據表或嵌套子查詢,因此數據表字段映射關系需要逐層進行傳遞,進而填充最外層的字段所屬數據表別名。以上這些情況處理相對復雜,實現難度較大。

2.數字表字段血緣分析

數據表字段血緣分析流程如圖8所示。

圖8 數據表字段血緣分析流程

其中,①表示通過語法分析提取程序代碼中每個代碼段包含的表字段信息,并構建對應的有向圖。

②表示在有向圖中,根據入度為0和出度為0分別得到多個來源點和多個目標點,它們之間存在著互相連接的有向邊,代表當前代碼段的表字段間關系。

③表示在有向圖中,通過尋找源點到目標點的所有簡單路徑的算法,得到每個代碼段中所有表字段間血緣關系路徑。

④表示通過合并每個代碼段出現的相同表字段所在路徑,簡化得到最終的血緣分析路徑。


(1)生成數據表字段關系有向圖

生成數據表字段關系有向圖前,通過語法分析過程,可以得到當前程序中每個代碼段對應的語法分析樹,并通過提取表字段信息,構建每個代碼段對應的有向圖。有向圖中每個點代表當前代碼段中每個數據表字段,根據入度為0和出度為0分別得到多個來源點和多個目標點。數據表字段關系有向圖樣例如圖9所示。

圖9 數據表字段關系有向圖樣例

(2)合并數據表字段血緣分析路徑

通過尋找源點到目標點的所有簡單路徑的算法,可以得到當前代碼段中所有表字段間血緣關系路徑,其中簡單路徑是沒有重復節點的路徑,因此可以通過集合的并集操作合并代碼段中出現相同表字段所在路徑,得到最終的血緣分析路徑,目的是提煉和簡化血緣分析結果。

3.血緣關系存儲

血緣分析關系存儲需要設計血緣分析表。血緣分析表示例見表2。

表2 血緣分析表示例

以上表格中顯示的血緣路徑示例為:

在存儲表字段級兩點間血緣關系前,還需要進行血緣路徑遞歸校驗,防止存儲的點對點路徑出現錯誤或者遺漏。數據表字段血緣關系存儲流程如圖10所示。

圖10 數據表字段血緣關系存儲流程

其中,①表示根據血緣分析路徑結果,通過訪問數據庫得到表字段類型名稱,如果血緣路徑中表和字段名無法對應,則排除該血緣分析結果。

②表示血緣分析路徑中表字段與字段類型名稱以及批量名稱共同作為一組血緣關系數據,并按照“目標-來源”表字段關系方式進行數據存儲

③表示在存儲表字段級兩點間血緣關系前,還需要進行血緣路徑遞歸校驗,防止存儲的點對點路徑出現錯誤或者遺漏。

④表示將校驗正確的血緣關系數據存儲至元數據庫中,作為元數據進行管理。


4.血緣關系調用

血緣分析算法與數據庫加工批量存儲、計算和查詢邏輯松耦合。血緣分析算法可以在批量編譯執行完成后執行,即使數據表在之后的加工批量中被刪除,也可以記錄到數據表字段類型信息,保證數據表血緣關系數據的完整性。數據表字段血緣分析調用的流程如圖11所示。

圖11 數據表字段血緣分析調用流程

5.血緣關系可視化

基于以上架構設計,編寫代碼實現了一種自動化生成數據血緣關系的應用。到目前為止,通過以上方式構建了大部分數據表字段血緣關系,并通過構建前臺可視化查詢界面,大幅度提升開發人員查找加工表與上游表鏈路關系的效率,同時也極大方便了業務人員查詢上游數據表來源。在可視化查詢結果圖中,節點代表加工表或者字段,點與點之間的箭頭代表表間或者字段間存在血緣加工關系,顏色越深表示數據來源層級越高,顏色越淺代表數據加工層次越高。數據表字段血緣關系可視化查詢效果示例如圖12所示。

圖12 數據表字段血緣關系可視化查詢效果示例


五、總結與未來展望

為有效解決實際生產中難以追溯數據表字段血緣關系的問題,本文提出了一種自動化生成數據血緣關系的方法。本文首先介紹了當前傳統血緣分析方法的技術原理,隨后結合行內的后臺加工批量的具體情況,著力描述了血緣分析的解析過程和血緣關系的存儲方法,然后針對研究與探索出的方案,詳細闡述關鍵部分的實現方式。

未來,將從以下幾個方面,繼續深化對“血緣分析”的應用實踐:

一是數據血緣分析可以將大數據和機器學習相結合,自動分析和優化數據,解決數據質量的問題。

二是數據血緣分析與區塊鏈技術相結合,完善數據交換和數據共享機制。

三是對UNION關鍵字的代碼重構血緣分析方法,使得新的血緣分析方法可以處理更為復雜的UNION關鍵字代碼。

四是加強對代碼規范的提示作用,可以根據血緣關系自動填充和更新血緣路徑中數據表字段元數據。

(部分內容來源網絡,如有侵權請聯系刪除)
立即申請數據分析/數據治理產品免費試用 我要試用
customer

在線咨詢

在線咨詢

點擊進入在線咨詢