基于圖數(shù)據(jù)庫的元數(shù)據(jù)血緣關(guān)系分析技術(shù)研究與實踐
1.背景
圖數(shù)據(jù)庫,不是存儲圖片的數(shù)據(jù)庫,而是以圖論為基礎(chǔ)存儲節(jié)點與節(jié)點間關(guān)系的數(shù)據(jù)庫。圖數(shù)據(jù)庫是近年來成長最快的數(shù)據(jù)庫分類,從社交網(wǎng)絡(luò)到金融關(guān)系,都會涉及大量的高度關(guān)聯(lián)數(shù)據(jù),因此圖數(shù)據(jù)庫很早就開始被Twitter,F(xiàn)acebook和Google等公司采用,也成為當今各行各業(yè)所推崇的主流技術(shù)。
較傳統(tǒng)關(guān)系型數(shù)據(jù)庫,關(guān)系在圖數(shù)據(jù)庫中是最重要的元素,應(yīng)用程序不必使用外鍵約束實現(xiàn)表間的相互引用。圖1分別展示了圖數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫在查找三度人脈關(guān)系時的工作原理,可以看出圖數(shù)據(jù)庫能夠充分發(fā)揮其存儲關(guān)系的優(yōu)勢,利用關(guān)系作為連接跳板進行查詢,而關(guān)系型數(shù)據(jù)庫必須進行表連接的操作,表連接次數(shù)隨著查詢的度數(shù)增大而增多,會極大影響查詢的響應(yīng)速度。
圖1 圖數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫查找三度人脈關(guān)系邏輯示例
圖數(shù)據(jù)庫支持非常靈活和細粒度的數(shù)據(jù)模型,可以用簡單直觀的方式對數(shù)據(jù)應(yīng)用進行建模和管理,利用圖的方式來表達現(xiàn)實世界的很多事物將更為直接、易于理解,同時圖數(shù)據(jù)庫在查詢關(guān)系時性能極佳,在深挖關(guān)系上極具潛力,具備挖掘數(shù)據(jù)潛在價值的能力,與關(guān)系數(shù)據(jù)庫相比,圖數(shù)據(jù)庫可支持更多類型的關(guān)系場景,本文將基于圖數(shù)據(jù)庫對元數(shù)據(jù)血緣關(guān)系進行研究和實踐。
1.1 元數(shù)據(jù)
大數(shù)據(jù)時代的到來,意味著數(shù)據(jù)的海量性和復雜性。隨著平臺應(yīng)用不斷推廣創(chuàng)新,基礎(chǔ)數(shù)據(jù)也會飛速增長,增長的數(shù)據(jù)就會存在血緣不清、重復存儲加工、口徑混亂、數(shù)據(jù)質(zhì)量參差不齊等一系列問題。元數(shù)據(jù)是描述數(shù)據(jù)的數(shù)據(jù),對數(shù)據(jù)及信息資源進行描述,是關(guān)于數(shù)據(jù)的更高層次抽象,通過對元數(shù)據(jù)的有效管理,能夠有效解決上述問題。
根據(jù)元數(shù)據(jù)描述對象的不同,可將其劃分為業(yè)務(wù)元數(shù)據(jù)、技術(shù)元數(shù)據(jù)和管理元數(shù)據(jù)。(1)業(yè)務(wù)元數(shù)據(jù)主要記錄在系統(tǒng)中業(yè)務(wù)的相關(guān)概念信息,包括業(yè)務(wù)術(shù)語、信息分類、指標定義、業(yè)務(wù)規(guī)則等。(2)技術(shù)元數(shù)據(jù)描述系統(tǒng)中技術(shù)領(lǐng)域的相關(guān)概念信息,包括數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)處理方面特征描述,以及數(shù)據(jù)源接口、數(shù)據(jù)倉庫、數(shù)據(jù)集市、存儲等全面數(shù)據(jù)處理環(huán)節(jié)的信息。(3)管理元數(shù)據(jù)定義系統(tǒng)中涉及管理領(lǐng)域的相關(guān)概念等信息,如對項目管理、IT運維、IT資源設(shè)備等相關(guān)信息的描述。
元數(shù)據(jù)實現(xiàn)了信息的描述和分類的格式化,能夠?qū)?shù)據(jù)資產(chǎn)進行有效管理,理清數(shù)據(jù)之間的關(guān)系。元數(shù)據(jù)可以幫助研發(fā)人員了解平臺的情況,例如平臺所包含的數(shù)據(jù)、數(shù)據(jù)存儲占用的空間、數(shù)據(jù)存儲位置、數(shù)據(jù)產(chǎn)出信息等,在此基礎(chǔ)上可以做一些運維報警工作。此外,它還有助于制定平臺數(shù)據(jù)統(tǒng)計的標準,梳理出統(tǒng)一的數(shù)據(jù)口徑、計算指標、上下游關(guān)聯(lián)關(guān)系,為數(shù)據(jù)質(zhì)量及維護可視化奠定基礎(chǔ)。
1.2 元數(shù)據(jù)應(yīng)用
元數(shù)據(jù)記錄了系統(tǒng)包含的數(shù)據(jù)、數(shù)據(jù)的表示、數(shù)據(jù)的來源,以及在系統(tǒng)中的流轉(zhuǎn)關(guān)系。元數(shù)據(jù)的應(yīng)用廣泛,可以使用其構(gòu)建業(yè)務(wù)術(shù)語、數(shù)據(jù)標準、數(shù)據(jù)字典、數(shù)據(jù)資產(chǎn)目錄、數(shù)據(jù)血緣關(guān)系以及數(shù)據(jù)地圖等。下面將主要介紹下文所涉及的數(shù)據(jù)血緣關(guān)系。
數(shù)據(jù)血緣能夠表示數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,反映數(shù)據(jù)在系統(tǒng)中的生產(chǎn)加工流程,主要包括集群血緣關(guān)系、系統(tǒng)血緣關(guān)系、表級血緣關(guān)系和字段血緣關(guān)系,當溯源數(shù)據(jù)的上游,即可查詢該數(shù)據(jù)的生成流程,對其來源進行跟蹤。當分析下游流向時,便具備影響度分析的功能。
在系統(tǒng)進行升級改造時,通過對依賴數(shù)據(jù)進行影響性分析,可以快速定位到下游受到影響的范圍,從而減少系統(tǒng)升級改造帶來的風險,如圖2快速定位改造影響系統(tǒng)范圍。當同時分析上游和下游流向時,即能獲得完整的數(shù)據(jù)流動鏈,依據(jù)此可以更好地分析依賴關(guān)系,輔助后續(xù)系統(tǒng)功能的增加。
圖2 快速定位改造影響系統(tǒng)范圍
2.元數(shù)據(jù)血緣關(guān)系實踐
使用圖數(shù)據(jù)庫存儲查詢元數(shù)據(jù)血緣關(guān)系,需要首先梳理出元數(shù)據(jù)之間的關(guān)聯(lián)關(guān)系建立圖模型,再以此為基礎(chǔ)整理出所需的數(shù)據(jù),并將數(shù)據(jù)加載進圖數(shù)據(jù)庫,之后即可設(shè)計關(guān)系模型進行鏈路匹配查詢。
本文基于農(nóng)業(yè)銀行人民銀行金融基礎(chǔ)數(shù)據(jù)報送系統(tǒng),梳理了系統(tǒng)中表、腳本、作業(yè)、作業(yè)鏈、應(yīng)用系統(tǒng)、主機、節(jié)點之間的關(guān)系,以構(gòu)建圖模型。在數(shù)據(jù)準備環(huán)節(jié),通過SQL腳本獲得腳本和表之間的關(guān)系以及表和表之間的關(guān)系,通過調(diào)度監(jiān)控臺中作業(yè)鏈相關(guān)信息,建立作業(yè)和腳本,作業(yè)鏈和作業(yè),父子作業(yè)等關(guān)系。隨后在圖數(shù)據(jù)庫平臺上進行操作,創(chuàng)建圖模型、建立模型與數(shù)據(jù)的映射關(guān)系,并執(zhí)行數(shù)據(jù)加載操作,完成從建模到數(shù)據(jù)裝載的過程。為了實現(xiàn)血緣關(guān)系的查詢,需要提前設(shè)定好圖的匹配模式,在此基礎(chǔ)上編寫相應(yīng)的圖查詢語句。結(jié)合現(xiàn)有的數(shù)據(jù),本文展示了三種關(guān)系分析模型。
2.1 圖模型定義
在圖模型的設(shè)計上,本文采用先建立實體,再以實體節(jié)點展開建立節(jié)點與節(jié)點之間的關(guān)系的方式。通過農(nóng)業(yè)銀行人民銀行金融基礎(chǔ)數(shù)據(jù)報送系統(tǒng)進行分析,建立作業(yè)鏈、作業(yè)、腳本等7種實體以及表之間的依賴關(guān)系、父子作業(yè)、作業(yè)鏈與作業(yè)的包含關(guān)系等10種關(guān)系,具體如下:
表1 圖模型schema定義
類型 | 名稱 | 中文名稱 |
實體 | ent_table | 表 |
ent_script | 腳本 | |
ent_job | 作業(yè) | |
ent_jobchain | 作業(yè)鏈 | |
ent_system | 應(yīng)用系統(tǒng) | |
ent_node | 節(jié)點 | |
ent_host | 主機 | |
關(guān)系 | rel_tab_dep | 表與表依賴關(guān)系 |
rel_script_input | 表輸入腳本關(guān)系 | |
rel_script_output | 腳本輸出表關(guān)系 | |
rel_job_excute | 作業(yè)執(zhí)行腳本關(guān)系 | |
rel_jobchain_contain | 作業(yè)鏈包含作業(yè)關(guān)系 | |
rel_job_place | 作業(yè)與節(jié)點存儲關(guān)系 | |
rel_job_runat | 作業(yè)與主機運行關(guān)系 | |
rel_job_follow | 作業(yè)之間父子關(guān)系 | |
rel_jobchain_follow | 作業(yè)鏈之間父子關(guān)系 | |
rel_jobchain_belongto | 作業(yè)鏈與系統(tǒng)所屬關(guān)系 |
圖3 元數(shù)據(jù)血緣關(guān)系圖模型示意圖
根據(jù)已定義的實體和關(guān)系,梳理如下信息:表基礎(chǔ)信息、腳本基礎(chǔ)信息、作業(yè)基礎(chǔ)信息、作業(yè)鏈基礎(chǔ)信息、應(yīng)用系統(tǒng)基礎(chǔ)信息、節(jié)點基礎(chǔ)信息、主機基礎(chǔ)信息、表與表依賴關(guān)系、表輸入腳本關(guān)系、腳本輸出表關(guān)系、作業(yè)執(zhí)行腳本關(guān)系、作業(yè)鏈包含作業(yè)關(guān)系、作業(yè)與節(jié)點存儲關(guān)系、作業(yè)與主機運行關(guān)系、作業(yè)之間父子關(guān)系、作業(yè)鏈之間父子關(guān)系以及作業(yè)鏈與系統(tǒng)所屬關(guān)系。
2.2 血緣關(guān)系模型定義
根據(jù)想要追溯的數(shù)據(jù)關(guān)系方向,將模型分為三類:向上追溯的依賴關(guān)系模型、向下流動的影響度分析模型以及串聯(lián)整個數(shù)據(jù)流向的數(shù)據(jù)加工模型,具體如下:
(1)依賴關(guān)系分析模型
對表級、作業(yè)級、作業(yè)鏈級依賴關(guān)系進行追溯。此三類的關(guān)系追溯處理邏輯相似,以表為例,選定一張表后不斷尋找該表的依賴表,直到找到源頭所在,形成向上的關(guān)系溯源。
(2)影響度分析模型
對其進行下游影響度分析時,需要不斷的進行查找當前節(jié)點被哪些節(jié)點依賴,以形成向下的完整關(guān)系鏈。
(3)數(shù)據(jù)加工模型
該模型能夠反映數(shù)據(jù)的生成加工過程,可查看表、腳本、作業(yè)、作業(yè)鏈、系統(tǒng)等不同級別的關(guān)聯(lián)關(guān)系,具體模型如圖4所示。從一張表出發(fā)展開與其相關(guān)的表的一度關(guān)系,并且關(guān)聯(lián)處理該表的腳本,追溯執(zhí)行腳本的作業(yè),展開該作業(yè)的父作業(yè)和子作業(yè)、運行節(jié)點和主機,查找包含該作業(yè)的作業(yè)鏈,并展開該作業(yè)鏈的所屬系統(tǒng),從而呈現(xiàn)完整的數(shù)據(jù)加工過程。
圖4 數(shù)據(jù)加工模型
2.3 結(jié)果可視化
Cypher是Neo4j圖數(shù)據(jù)庫描述性圖查詢語言,允許不必編寫圖形結(jié)構(gòu)的遍歷代碼實現(xiàn)對圖形存儲有表現(xiàn)力和效率的查詢,其語法形象易懂,編寫使用難度較低。開發(fā)人員只需關(guān)注如何找到數(shù)據(jù),不必關(guān)心查詢過程的具體細節(jié)。上文提到的各血緣關(guān)系以虛擬場景實現(xiàn)具體代碼及結(jié)果如下:
(1) 依賴關(guān)系分析(以查詢機構(gòu)信息表)為例)
MATCHdata=(na:TABLE{TABLE_NAME:'機構(gòu)信息表_當期表_歷史表'})<-[r:DEPENDANCE*]-(nb:TABLE)
RETURNdata
圖5 依賴關(guān)系分析查詢結(jié)果圖
(2) 影響度分析(以查詢客戶信息表為例)
MATCH data=(na:TABLE{TABLE_NAME:'客戶信息表_備份表_歷史表'})-[r:DEPENDANCE*]->(nb:TABLE)
RETURN data
圖6 影響度分析查詢結(jié)果圖
(3) 數(shù)據(jù)加工模型
MATCH
data1=(:TABLE{TABLE_NAME:'機構(gòu)信息表_當期表_歷史表'})<-[:DEPENDANCE*1..2]-(:TABLE),
data2=(:TABLE{TABLE_NAME:'機構(gòu)信息表_當期表_歷史表'})<-[:OUTPUT*]-(:SCRIPT)<-[:EXCUTE*]-(nJ:JOB)<-[:RELATION*]-(:JOB),
data3=(nJ)-[:BELONGTO*]->(:LINK)-[:PERTAINTO*]->(:SYS),
data4=(nJ)-[:RUNINGON|RUNNINGON*]->()
RETURNdata1,data2,data3,data4
圖7 數(shù)據(jù)加工查詢結(jié)果圖
圖5-圖7展示了上文各模型Cypher語句的查詢結(jié)果??梢钥闯隼脠D數(shù)據(jù)庫平臺能夠?qū)D查詢結(jié)果進行直觀地展示,并且支持查詢圖譜嵌入其他可視化系統(tǒng)。其作為輔助工具,能夠直觀地展示各個實體之間的關(guān)聯(lián)關(guān)系及屬性,有助于數(shù)據(jù)分析師、研發(fā)人員、業(yè)務(wù)人員進行分析探查。
以圖7為例,從表機構(gòu)信息表_當期表_歷史表出發(fā),它的加工處理依賴于表補錄表、地區(qū)表、賬號表。向左追溯,它是由腳本文件腳本_機構(gòu)信息表的執(zhí)行產(chǎn)出,該腳本由作業(yè)_機構(gòu)信息表執(zhí)行。它的父作業(yè)有作業(yè)_外部基礎(chǔ)信息表、作業(yè)_組織信息表、作業(yè)_代碼表等。該作業(yè)在節(jié)點_數(shù)據(jù)節(jié)點上,在主機_數(shù)據(jù)主機上。它包含于作業(yè)鏈_機構(gòu)信息表作業(yè)鏈,此作業(yè)鏈屬于數(shù)據(jù)系統(tǒng)應(yīng)用系統(tǒng)。以上就是查詢一張表的基本加工處理關(guān)系的全部過程。
3.總結(jié)與展望
本文基于圖數(shù)據(jù)庫對元數(shù)據(jù)的血緣關(guān)系進行研究和分析,通過建立圖模型、構(gòu)建數(shù)據(jù)映射關(guān)系、定義血緣關(guān)系模型以及編寫Cypher查詢語句以實現(xiàn)元數(shù)據(jù)血緣關(guān)系的存儲和展示。在進行系統(tǒng)升級、系統(tǒng)改造甚至表結(jié)構(gòu)變更等操作時通過該模型查詢結(jié)果的輔助,能夠快速、有效定位系統(tǒng)中受影響的范圍,大大減少了時間成本。目前,我行的數(shù)據(jù)湖建設(shè)正在有序推進,未來數(shù)據(jù)湖所涉及到大量的實時型、分析型計算,圖數(shù)據(jù)庫在關(guān)鍵路徑的分析中無疑會起到非常重要的作用。
圖數(shù)據(jù)庫在關(guān)系存儲上具有巨大的優(yōu)勢,使其作為近六年來使用增長最迅速的數(shù)據(jù)庫,得到各行各業(yè)的廣泛關(guān)注。在互聯(lián)網(wǎng)、5G、人工智能等數(shù)字化技術(shù)推動下,隨著數(shù)據(jù)技術(shù)與金融行業(yè)的融合發(fā)展,銀行金融業(yè)當前面臨以下兩個問題。(1)數(shù)據(jù)間關(guān)聯(lián)復雜度增加,數(shù)據(jù)本身的4V特性(Volume大量、Velocity高速、Variety多樣、Value價值)使得查詢性能成指數(shù)級惡化,但數(shù)據(jù)實時關(guān)聯(lián)已成為不可逆的趨勢。(2)金融欺詐風險不斷擴大,傳統(tǒng)反欺詐技術(shù)不斷遭受著沖擊與挑戰(zhàn)。欺詐閉環(huán)、反洗錢監(jiān)測、交易擔保識別等越來越多的場景需要多重維度、及時反饋的技術(shù)支持。圖數(shù)據(jù)庫的發(fā)展和興起正是解決這兩個問題的理想工具。積極推進圖計算平臺的搭建,積極探索圖數(shù)據(jù)庫在風控場景、營銷場景、智能搜索等場景的應(yīng)用,可以為進一步挖掘海量數(shù)據(jù)潛在的商業(yè)價值奠定堅實的基礎(chǔ)。