大數據

Seraphdb: 輕量級圖計算引擎(一) 概述

隨著圖技術的不斷成熟,與大數據框架的融合也越來越緊密,使得使用圖的場景也越來越廣泛;安全領域裡很多的場景也開始用圖的相關技術來解決實際問題;如雲安全中心利用圖對關聯關係的遍歷能力,實現了基於進程鏈的安全檢測, 更大程度的檢測隱藏在正常操作背後的惡意行文, 為用戶的主機保駕護航;同時基於多種數據的關聯關係,可以實現安全事件的調查分析、溯源等;基於圖來分析解決安全問題更符合現實場景,也更容易被人理解和接受;

      但是由於圖數據庫需要龐大的圖存儲、圖計算的資源, 因此在專有云場景下,直接使用傳統的圖數據庫或者圖計算引擎,會給客戶帶來巨大的資源壓力;目前公有云上的基於圖的安全檢測、時間調查以及溯源功能,在專有云上是缺失的,而這部分功能對於安全能力又提升明顯,時間調查、溯源能力在護網場景下可以很大提升客戶分析處理問題的效率;所以圖技術落地專有云已經迫在眉睫;

      為了能夠將圖的能力應用在專有云的安全場景下,我們需要解決三個問題,圖數據的存儲問題,圖計算問題以及定時任務的執行問題,解決了這三個問題,就可以將圖在專有云的安全場景上落地,解決專有云的安全問題;

  

       上圖為Seraphdb的結構; 作為一個開放的圖引擎, 首先在存儲層,我們適配了大多數的存儲介質,比如ES等文檔型的存儲,RDS/MYSQL等關係型存儲以及RocksDB等KV型的存儲,這樣用戶可以基於現有的存儲資源來實現圖的能力; 

Reader/Model

Reader層提供統一的接口,向下對接底層數據存儲,向上提供數據存儲的基本操作,實現圖存儲對於圖操作的透明;而Model層則作為圖引擎與底層數據存儲的樞紐,將圖的基本操作如節點和邊的CRUD,圖的遍歷等以及圖的複雜算法如最短路徑等轉為Reader的操作;Reader層與Model層的結合,讓seraphdb的擴展變的更加輕鬆; 當需要對接一種新的存儲介質時,只需要基於Reader層的接口,構建新的實現類即可;

Schema

Schema層是seraphdb特有的邏輯層,它對於實現輕量級的圖引擎有著重要的意義; 在傳統的圖數據庫中,我們需要將數據按圖數據庫預先定義的數據格式寫入到圖數據庫,即便是我們現在的數據格式以及索引已經具備了圖遍歷的能力; 而通過Schema層,將圖的邏輯結構映射到底層物理存儲的結構上,不但減少了人工處理數據的流程,同時對於有向圖中的含有來、去向邊,可以基於同一結構來實現,大大降低了圖數據佔用的存儲;

計算邏輯層

計算邏輯層完全繼承了Tinkerpop的概念, Structure、DSL、Strategy、Step均來自Tinerpop,簡單介紹, Structure主要是用定義圖的基本結構,如Vertex,Edge,Graph, Property等;Process API中的TraversalSource以及Traversal主要是用於定義圖遍歷的邏輯,Strategy則提供了一系列的攔擊方法,用於在遍歷過程中更改執行的邏輯、方向等;而Step則提供了最基礎的執行算子;

為了能夠實現輕量級一體化的圖計算引擎,我們基於現有的功能做了一系列的擴展;

Steps

為了能夠在gremlin中擴展自己的算子, 我們實現了自己的TraversalSource以及Traversal, 並基於自身的Traversal提供了一系列數據寫出類的算子,如toJdbc(), toPrint(), toSlS(),toRocketmq()等, 滿足圖的遍歷結果直接寫到外部存儲的要求;

Strategy

Tinkerpop 自有的圖遍歷的邏輯,通常是一步一步的查,將上一步的查詢結果作為下一步查詢的輸入,這對於關係型數據存儲來說,會同時產生大量的數據庫查詢,尤其是對於遞歸遍歷而言,膨脹的查詢會給數據庫造成巨大的壓力;

為此我們構建自己的strategy,對在關係型數據庫上的圖查詢做了進一步的優化; 我們基於策略,實現了過濾條件提前的方式,這樣將過濾放在數據庫查詢階段,降低了返回的數據量; 同時我們對遞歸做了妥協, 強制用戶加入遞歸的層數,同時基於用戶的遞歸邏輯,將原來多次執行的簡單查詢做重建,構建為一個複雜的join查詢,大大降低了數據庫的壓力;

任務調度

Seraphdb基於quzrtz實現了一個輕量級的分佈式調度系統, 可幫助用戶定時調度圖的查詢任務,並將結果寫出,從而解決了專有云上圖任務的調度問題;

         

至此,Seraphdb 輕量級圖引擎方案在專有云上落地了; 後續我會繼續介紹seraphdb的用法,以及在業務中的發展;希望大家能加入到討論,提供更多的場景和方案;

       

Leave a Reply

Your email address will not be published. Required fields are marked *