關係網絡技術與圖數據庫技術的發展

關係網絡技術與圖數據庫發展

真是好久都沒有更新自己在CSDN的博客了,這幾年一直在做知識圖譜相關的項目開發,主要聚焦在銀行金融領域。最近公司的品牌小姐姐希望我幫公司的公衆號出一些文章,所以藉此機會也更新一下自己的博客吧,先寫寫自己對知識圖譜技術和圖數據庫的理解吧,前段時間也在挖開源圖數據庫的代碼,過段時間把一些源碼閱讀的筆記也更新上來。

關係網絡技術的發展

隨着社交網絡和搜索引擎技術的發展,以及人工智能技術領域從感知智能向認知智能的邁進,語義網技術以及其衍生出來的關係網絡技術開始得到關注和快速的發展,也順勢推動了社交關係圈分析,個性推薦,智能問答,WEB語義分析,金融風險反欺詐分析以及金融資金關係圈分析等新興應用的快速增長。

關係網絡,又稱知識圖譜或者大規模語義網(下文全部統一爲關係網絡),是用關係和節點組成的大規模知識表示形式,包含實體(Entity),概念(Concept)及其之間的各種語義關係。關係網絡爲真實世界的各個業務場景直觀地建模,通過不同的知識關聯性形成一個網絡狀的知識結構。形成關係網絡的過程就是在建立認知,理解世界,理解領域,理解客觀業務事實的過程,並組織成機器易於讀取和分析的結構,讓機器形成認知能力,去理解這個世界。

人類的外顯記憶用的就是基於語義分析的記憶形式,因此關係網絡的數據組織形式更加貼合人類對信息的分析習慣。早在20世紀70年代,因爲關係網絡數據模型的表達能力強,數據管理領域的研究人員就已經開始嘗試使用關係網絡模型對客觀世界進行建模,非常直觀和自然地表達出現實世界的各種客觀實體概念以及他們之間的關係。2000年以後,隨着互聯網數據的井噴式增長,更高效的搜索引擎數據檢索,社交網絡數據分析以及其它應用需求的推動,再加上大數據技術的逐漸成熟,並以2012年Google公司第一次將“知識圖譜”技術帶入公衆視野中爲契機,關係網絡技術的研究工作重新成爲人工智能領域的研究重點。

在這裏插入圖片描述關係網絡發展到如今,其內涵已經遠遠超出語義網絡的範疇,它更多代表的是一種技術體系,指代基於大數據技術和人工智能技術等一系列知識工程的技術總和,也是構建現實世界業務客觀事實模型的過程。隨着近幾年關係網絡技術在工業界逐漸成熟和落地,關係網絡類型也逐步從GKG(General-purpose Knowledge Graph)演化成爲領域或者行業的關係網絡類型DKG(Domain-specific Knowledge Graph)。

目前在工業界,比如銀行金融領域,保險領域,電商領域,社交網絡領域,都落地了很多基於DKG的成功項目,並真正爲企業帶來了巨大的成效,豐富了企業的數據分析維度。而基於GKG類型的項目,更多是在智能問答領域,以及教科研學術界有更多的落地案例。從實際成功落地的項目案例來看,更多的企業傾向於在特定垂直領域構建行業關係網絡,基於具體的業務場景的關係網絡去做數據挖掘工作。構建整個企業生態的關係網絡大圖,也就是GKG,然後再從關係網絡大圖生成特定業務的關係網絡子圖去做具體的分析應用,也是不少企業正在嘗試的實施路徑,但同時會面臨着更多的挑戰,這些挑戰不光來自技術層面,還有概念層面如何做到和實際業務的統一併保證完整。

正是因爲關係網絡技術的發展,工業界在傳統的基於統計和概率的數據分析維度上,開始重視數據實體間的關係分析。目前,我們內部對數據挖掘分爲三個大方向,一是基於統計和概率分析,二是基於時序分析,三是基於關係數據分析;並採用分類,聚類,關聯分析,異常檢測等多種技術手段。

圖數據庫技術發展

關係網絡的數據需要完成基本的圖結構數據存儲,同時也要支持上層應用對關係網絡中的數據進行實時查詢,知識推理,離線大規模圖計算甚至是實時大規模圖計算等,所以專門針對關係網絡數據存儲做了優化的圖數據庫成了關鍵的組件。目前工業界的圖數據庫基本都是基於帶標籤的屬性圖表示結構來設計的。

爲什麼要使用專門的圖數據庫來對關係網絡數據進行存儲?這裏必須提到圖數據庫和關係型數據庫的區別。關係型數據庫存儲的是一件客觀事實的描述,比如用戶購買了某件具體的商品,客戶申請了一筆貸款,它根據關係型數據庫的四範式設計原則構建在關係模型之上。關係型數據庫和圖數據庫的主要差異是數據存儲的方式,關係型數據天然就是表格式的,因此存儲在數據表的行和列中。數據表可以彼此關聯協作存儲,也很容易提取數據,尤其在查找某個區間內的數據組很有優勢,但是確無法清晰直觀地體現出數據之間包含的潛在關係。關係型數據庫是以實體建模這一基礎理念設計的。實體之間的關係需要創建一個關聯表來維護,當需要描述大量關係時,傳統的關係型數據庫已經不堪重負; 聯繫確實存在於關係型數據庫自身的術語中,但只出現在建模階段,作爲連接表的手段,但對於關聯關係確什麼都做不了。所以經過特別設計的數據存儲結構,能加快實體之間的關係查詢,這也是圖數據庫的優勢所在。

圖數據庫的發展主要有兩個階段,第一個階段主要是解決關係網絡數據的存儲,查詢和分析問題,能支持上層應用對關係網絡數據的OLTP業務需求以及離線大規模圖數據的OLAP業務需求。第二階段的圖數據庫不光滿足OLTP業務和離線OLAP業務,採用內置的MPP計算引擎,實現實時大規模圖數據的OLAP業務。

在這裏插入圖片描述 【DB-Engines網站2020年圖數據庫使用率排名】

爲了滿足關係網絡數據的存儲,查詢和大規模圖分析的性能,圖數據庫在其底層數據結構的設計上也儘量貼合關係數據的搜索習慣,減少磁盤的I/O時間。傳統關係型數據庫的B+樹數據結構適合範圍數據的檢索以及隨機數據讀取上有優秀的性能,而對於關係數據的遍歷則顯得相形見絀了。圖數據庫針對關係網絡的數據特點,採用了免索引領接,鄰接表,點邊數據以KCV的形式組織等等方式存儲關係網絡數據,其根本目的在於對鄰邊和鄰節點的快速查詢遍歷,減少隨機讀寫的磁盤尋道時間,提升關係網絡數據的I/O性能。原生圖數據庫不僅在數據存儲文件的組織形式上做了優化,在計算機物理存儲層面也充分利用內存緩存來減少數據的讀取延遲甚至是提升寫入效率。

NEO4J是最早在工業界大規模使用的圖數據庫,也是由NEO4J最早提出原生圖數據庫的概念,NEO4J認爲原生圖數據庫應該具備原生圖存儲和免索引領接兩個特性。原生圖存儲是指在存儲層面針對關係網絡數據的存儲和管理而設計優化的;而免索引領接就是上面提到的,在搜索鄰邊和鄰節點時減少磁盤尋道時間提升I/O性能,NEO4J主要通過固定存儲單元大小以及雙向鏈表的技術來實現。同時NEO4J也是非分佈式的數據存儲和處理的圖數據庫,因爲NEO4J認爲單機下沒有分佈式的網絡I/O和聚合操作所帶來的時間損耗,再加上對磁盤,內存和CPU的優化,查詢性能可以達到最優。即使是NEO4J的集羣模式,也是數據副本拷貝的形式,如果理解NEO4J存儲結構的話也不難明白爲什麼其單機性能最優。Neo4J同時提供了社區版和商業版。
在這裏插入圖片描述【Neo4J存儲端數據結構】

ArangoDB是基於C++的多數據模型數據庫,支持Document, K-V, Graph等多種數據模型的存儲。ArangoDB和Wikipedia社區都反對了NEO4J提出的原生圖數據的定義,他們認爲原生圖數據庫應該是使用具有點,邊和屬性表示的圖數據結構進行存儲和語義查詢的數據庫,而與內部的數據文件存儲形式無關,更重要的應該在於數據模型和算法的使用。ArangoDB採用基於HASH和鏈表的混合索引形式組織圖數據,Arango將所有的邊數據都存儲在一張大的哈希表中,同時將每個節點關聯的所有鄰邊都存儲在一個雙向鏈表中。該數據結構在保證圖遍歷性能的同時,對圖數據的修改和刪除也提供了很好的性能。同時ArangoDB是支持橫向拓展的分佈式數據庫,並提供了社區版和商業版。

在這裏插入圖片描述【ArangoDB存儲端數據結構】

Titan是一個開源的分佈式圖數據存儲引擎,向下支持多種基於Google Bigtable 的KCV數據模型的數據庫,包括 Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB;向上支持Gremlin 圖查詢語言對業務系統提供關係網絡數據查詢,同時兼容Spark 分佈式計算框架,提供對大規模關係網絡數據進行離線OLAP 分析。2015年Titan被DataStax公司收購,進行商業化改造,開源社區開發者新fork出一個分支,封裝成JanusGraph項目並持續維護。JanusGraph基於Google Bigtable 的KCV數據模型設計,採用邊切割的方式存儲關係網絡數據,將點的屬性,邊的屬性,鄰節點key信息存在一起封裝成KCV的數據結構,通過key進行索引,減少鄰邊和鄰節點的遍歷時間。其關係網絡數據處理的時間複雜度還是需要根據其具體的存儲層組件來進行分析,如果是採用HBase做爲存儲端,那顯而易見在關係網絡數據寫入方面會有一定的優勢。JanusGraph也是許多國內一線大廠封裝自己圖數據庫的基本開源框架,基於商業敏感性這裏也就不一一列舉了。國內廠商對於JanusGraph的二次封裝優化策略主要在於ID的分配機制,邊的索引優化等。

在這裏插入圖片描述【JanusGraph存儲端數據結構】

TigerGraph是商業圖數據庫,其採用C++語言開發,在關係網絡數據的存儲和查詢方面做了物理層的優化,充分使用了計算機的緩存資源,同時也提供了高壓縮比的數據存儲策略。通過內置圖存儲引擎和圖計算引擎並存的技術,採用MPP計算模型,實現實時的OLAP分析。相比JanusGraph採用Spark框架實現MPP計算,TigerGraph的圖中每個頂點和邊同時作爲存儲和計算的並行單元,能提供更高的計算效率和性能。

微軟的Azure雲計算服務的Cosmos DB,亞馬遜雲計算服務的Neptune以及阿里雲的GDB圖數據庫,都是各個雲廠商推出的雲上圖數據庫服務。目前,圖數據庫的技術發展還沒形成一套完整的工業標準,但是隨着關係網絡技術的發展和普及,多元化的圖數據庫共存在市場上的局面還暫時不會改變, 實時大規模關係網絡OLAP技術也將是未來發展的趨勢。

參考書籍:
[1] 圖數據庫 lan Robinson, Jim Webber, Emil Eiferm 著 劉璐,梁越譯
[2] 知識圖譜概念與技術 肖仰華 等編著

參考網絡材料:
[1] https://www.arangodb.com/2016/04/index-free-adjacency-hybrid-indexes-graph-databases
[2] https://www.cnblogs.com/zhangzl419/p/9100498.html
[3] https://zhuanlan.zhihu.com/p/36183004

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章