鯨品堂|圖數據庫原理在構建實體血緣關系圖中的應用與實踐

2024-05-14 392

在當今復雜的數據驅動型應用中,理解和管理實體間的復雜關系變得日益重要。通過低代碼平臺進行配置的應用,因采用了DSL語言進行統一設計,要讓專業開發者和非專業開發者都能快速實現復雜應用的構建,實體之間的數據邏輯和關系梳理就尤為重要,這里涉及到頁面信息、事件信息、服務信息之間的數據流、業務流的追蹤和理解。因此利用血緣關系圖來實現數據、服務、流程等元素之間的依賴和影響鏈條,可以更好的幫助開發者理解和分析應用的開發過程。


01
實體血緣關系圖的實現挑戰


構建和維護復雜系統的實體血緣關系圖會面臨諸多挑戰,主要包括以下幾個方面:



數據模型復雜性:實體血緣關系圖通常要展示數據在不同的事件、流程和服務之間的流轉和變換邏輯,這要求我們能夠處理復雜的業務邏輯和數據模型,尤其在低代碼環境下,可能需要高度靈活且強大的數據建模能力。



集成能力:實體血緣關系圖往往跨越多個模塊、多個應用的服務,因此需要平臺具備具備強大的集成能力,能夠滿足廣泛連接器和適配器,同時還要求有高效的數據交換和同步能力。



高性能和高擴展性:隨著應用的不斷迭代,數據量和實體關系會持續增長,生成和實時更新血緣關系圖對平臺的性能和擴展性提出了更高的要求。



可視化復雜性:實體血緣關系圖可能非常復雜,如何清晰、直觀的呈現這種復雜性也是一個巨大的挑戰。平臺需要提供更高級的圖表組件和布局組件,滿足復雜的視圖展示。



實體血緣關系圖版本控制:隨著應用和數據的架構演變,實體血緣關系也會隨之變化,追蹤實體血緣關系的歷史和變更也是需要平臺面臨的挑戰之一。


02
實體血緣關系圖實現原理


在構建實體血緣關系圖的時我們也嘗試通過不同的方式和技術實現來解決面臨的一系列挑戰。最終我們發現可以將圖數據庫的實現原理和DDD領域驅動設計相結合,兩者的結合也凸顯了以下幾個優勢:



圖數據庫是以使用節點、邊和屬性來表示和存儲數據。節點可以代表一個實體(如頁面、服務),邊則可以表示實體間的關系(如觸發事件、依賴),而屬性信息則可以為節點和邊附加額外信息(如事件描述、時間戳)。圖數據庫體現的最大優勢就是可以隨時從任何一個節點找到與這個節點相關的所有數據,不管是自上而下還是自下而上查找,都可以快速檢索到相關的關聯和依賴數據。這種實現機制會讓我們對數據的操作和檢索會更加高效,而通過關系型數據庫的邏輯去建立關系數據時,都是通過表數據之間進行關聯,檢索時也是根據某個特定條件進行多表jion的關聯查詢。


圖片關鍵詞

關系型數據庫和圖數據庫實現原理分析



在實體血緣關系圖的設計過程中,我們也充分使用了DDD領域驅動設計的模式,將系統的設計劃分為不同的核心領域、子域和限界上下文。每個領域中也會定義實體、對象和實體關系,因此在實體血緣關系圖建立過程中,可以將頁面、服務、事件等與圖數據庫的節點、邊和屬性進行對應。


03
構建實體血緣關系圖


在構建實體血緣關系圖時,我們以頁面作為節點,事件作為關系紐帶,服務作為終點,參照圖數據庫的實現原理,在實體血緣關系圖中明確標識出每個頁面、事件和服務的名稱,并描繪出它們之間的連接方向和觸發順序,確保邏輯流暢可見。


面對復雜應用的挑戰,我們采取了層次化與模塊化策略進行視覺優化,利用分層、分模塊的方式進行可視化表示,以便清晰展示應用的整體結構和局部細節,從而能夠增強實體血緣關系圖的可讀性和科維護性。



核心實現一:血緣關系模型設計


參考圖數據庫實現機制,我們在設計血緣關系圖的關系數據模型時,會把涉及到的場景進行梳理并分類:

使用場景場景分類模型查詢舉例
頁面相互調用關系的數據建立和存儲
頁面關系

點:頁面

邊:頁面之間的關系

頁面引用數據查詢
頁面與事件調用關系的數據建立和存儲
頁面與事件關系

點:頁面、事件

邊:頁面與事件的關系

展示頁面觸發的事件
頁面與服務之間關系的數據建立和存儲
頁面與服務關系

點:頁面、服務

邊:頁面與服務的關系

展示頁面與服務之間調用關系
........................


梳理完業務場景后,我們參考圖數據庫的模式,將關系模型全部梳理清楚,然后建模成一張圖如下:

圖片關鍵詞

頁面關系建模示意


由于不同實體類型的屬性存在差異,采用為每種實體新增特定模型及其相關寫入程序的方法在實踐中顯得不太可行。為了解決這一問題,我們開發了一種通用的數據模型。該模型旨在統一定義各種數據類型,同時確保數據實例化后能夠順利映射到目標數據庫表中。


這種通用模型的設計允許我們以一種靈活且高效的方式處理不同實體的多樣化屬性,從而避免了頻繁地為每種新實體創建和維護獨立模型的繁瑣過程。通過這種方式,我們能夠實現數據存儲和管理的標準化,同時保持對不同數據類型的兼容性和適應性。



核心實現二:DSL數據解析


要建立實體血緣關系圖,就必須通過對低代碼平臺的DSL數據進行分析,對DSL各個數據節點進行充分理解,才能完整的建立頁面與服務、頁面與頁面等之間的實體調用關系。而為了更好的解析DSL數據結構,平臺構建了一套DSL解析的引擎,在該引擎中,我們首先定義了@Node和@NodeField 注解,前者用作 DSL 中的節點標識,定義了節點的 JSON Path 以及是否為根節點等信息;后者用作節點下字段標識,定義了字段在 DSL 中對應的鍵或 JSON Path。


平臺在構建血緣關系模型的時候,就需要考慮將@Node和@NodeField注解標記的節點與節點下的字段與關系模型對應起來。通過DSL解析引擎針對不同實體的DSL數據進行各自的解析實現。而在采集到 DSL數據后,能夠根據特征值自動匹配需要的解析邏輯,從而快速的將節點、邊等關系進行建立,并轉化成模型數據進行存儲。



核心實現三:數據關系快速構建


1)實體類型識別:系統需要識別出數據屬于哪種類型的實體。這是通過調用一個特定的解析器來完成的。

2) DSL片段定位:識別出實體類型后,解析器會利用JsonPath表達式來定位具有特定特征的領域特定語言(DSL)片段。

3) 數據匹配與實例化:接下來,解析器會根據規格表中定義的類型,將實例數據與這些類型進行匹配。一旦找到匹配項,系統將按照規格表中定義的實例化字段,將數據轉換成相應的對象,并將其存儲到數據庫中。

4) 關系數據建立:至于節點之間的關系數據,系統會自動通過實體的ID以及實體屬性的ID來建立。這些關系信息隨后會被寫入到關系表中,以此來維護實體/屬性間的聯系。


通過這個過程,系統能夠靈活地處理不同實體類型的數據,同時自動維護實體間的關聯關系,從而實現數據的高效管理和查詢。



核心實現四:血緣關系數據快速檢索


實體血緣關系圖從數據解析、存儲到查詢,總共分成三層:查詢引擎層、數據解析引擎層、存儲引擎層。


圖片關鍵詞

血緣關系圖三層處理


- 查詢引擎層

主要涉及到用戶 session 管理、服務的 proxy,其核心的一個功能是基于用戶發過來的請求,去做一個邏輯查詢計劃,并生成一個物理查詢計劃,然后通過執行器 executor 把對應的子查詢給分發出去,重高并發問題。


- 數據存儲層

我們會在這個模塊當中會考慮把數據做切片,分成一個個的數據塊,然后用一種特定的數據結構把它組織起來,同時這個數據結構要有相對來說比較良好且較低的讀寫放大能力,以及它能夠在磁盤的組織形式上對磁盤比較友好,然后是順序讀寫。在數據存儲時,我們選擇使用二級緩存模式,先通過KV方式將數據寫入到分布式緩存中,然后再持久化到ERM數據庫中。



核心實現五:血緣關系圖可視化處理


血緣關系圖在完成數據存儲引擎和數據檢索引擎的模塊建設后,最關鍵的一步就是要將數據以圖形化的方式進行展示。圖形化展示的幾個基本要求:

1)以任何一個節點可以展開上下游的數據節點關聯關系

2)界面圖層渲染時,需要考慮到界面渲染性能

3)界面自動布局能力需考慮用戶體驗感知


在構建圖形的時候,我們對節點的布局和邊的樣式經過特別的設計,同時引入了前端X6的引擎,并對X6的布局算法進行定制化改造和優化,從而保證圖的可讀性和美觀性。


交互設計方面,我們對交互進行了自定義的設計,包括拖拽、放大縮小、節點折疊等功能的拓展和自定義。從而滿足平臺的復雜性和個性化需求。


主要實現內容如下:

1) 節點類型識別:為不同的節點定義類型,并為每種類型創建一個標識符。

2) 自定義節點樣式:根據節點類型,使用 X6 提供的圖形和樣式定制功能來自定義節點的外觀。

3) 定義連線邏輯:為不同類型的節點定義它們之間的連接方式。我們使用圖形語法來定義節點之間的連線樣式和路徑。

4)  節點跳轉邏輯:為節點定義交互邏輯,比如點擊某個節點時觸發的動作或跳轉到另一個實體。通過事件處理器,為節點添加點擊事件來實現跳轉邏輯。

5) 動態數據綁定:實現一個機制,使得當增加新的節點類型時,只需添加相應的樣式定義和跳轉邏輯,而無需重寫現有代碼。

6)  性能優化:考慮到數據量大時的性能問題,我們采用虛擬滾動、節點懶加載等技術來優化用戶體驗。


圖片關鍵詞

血緣關系圖展示處理示意


04
應用成效和價值


實體血緣關系圖的建設,不僅能夠顯著提升平臺可管理性和透明度,還能給平臺帶來更多方面的長遠價值:



增強系統的透明度和可追溯性:實體血緣關系圖清晰展示了數據、服務、流程等實體間的依賴關系,使得專業開發和非專業開發人員都能快速理解系統的工作原理和數據流向。這對新員工培訓和應用的后期運維都尤為重要,并且可以大幅減少溝通和協調成本,降低應用二次開發的成本。



優化故障排查和問題解決:當問題出現時,血緣關系圖能夠快速幫助定位問題根源。通過追蹤受影響的實體上下游關系,迅速識別出問題所在環節或者服務,縮短排障時間。



優化設計與重構:血緣關系圖揭示了系統的復雜度和潛在的瓶頸,為系統設計和重構提供可視化依據。在進行系統優化或遷移時,可以幫助團隊識別冗余的組件、服務依賴,以及過度耦合的部分。


官方微信公眾號

浩鯨云計算科技股份有限公司 版權所有 2003-2023

蘇ICP備10224443號-6       蘇公網安備 32011402011374號

亚洲精品免费视频_热99re6久精品国产首页青柠_精品国产专区91在线_亚洲美洲欧洲偷拍片区