區分圖資料庫的標準是什麼?

來自專欄實時圖資料庫4 人贊了文章

圖資料庫由於其優於關係模型的優勢而備受關注(參見此處的討論)。然而,當不同的技術公司湧入這個領域,亞馬遜,微軟,甲骨文,IBM等時,當項目想要開始使用圖資料庫時,評估不同供應商的產品變得越來越具有挑戰性。

在這篇文章中,我將分享我的見解,以評估從對不同圖資料庫進行基準測試而獲得的心得。您可以在此處下載基準報告。

  • 裝載能力。如果您計劃使用圖資料庫處理實際問題,這是好的和壞的圖資料庫的第一個(也是重要的!)標準。我建議嘗試一個高於10億邊和5000萬-1億個頂點的公共數據集。檢查載入工作,包括載入語言/ API支持,載入速度(最大應在1小時內完成),增量/批量載入支持等。可以在此處找到不同圖資料庫供應商的一些載入腳本。如果你已經完成了這個最小的需求載入,並且結果令人滿意,那麼接下來要嘗試的是找到一個具有10個以上頂點類型和邊緣類型的圖,每個圖都有一些不同的類型屬性/屬性。你能輕鬆裝載嗎?它是否支持複雜的屬性類型,例如map,set和list?怎麼樣載入JSON文件?所有這些問題都是處理現實生活圖數據的實際障礙。
  • 是否支持實時更新。通過實時更新,這意味著更新可以在對資料庫進行查詢處理的同時進行。資料庫更新可以是新頂點/邊的插入/刪除,現有頂點/邊的屬性的upsert等。圖資料庫提供並發控制,使得不同的操作可以以交錯方式發生,但是最終結果是一致的,就像所有操作都按順序執行一樣。請注意,圖計算平臺與圖資料庫不同。由於HDFS的設計限制,大多數基於HDFS的圖平臺(例如Giraph,GraphX)不支持實時更新。
  • 磁碟存儲採用原生圖格式或非原生圖格式。許多圖資料庫都是非原生的,這意味著它們將圖數據存儲在磁碟上的關係模型,RDF三元組或鍵值對中。在內存中,它們提供中間層API來模擬圖遍歷。原生圖資料庫以圖模型格式 - 頂點和邊存儲圖數據。此類供應商中最受歡迎的是TigerGraph,Neo4j。原生圖存儲格式的優點在於它本身可以免費獲得圖模型的好處,因為圖模型是一個自然索引,每個查詢只觸及索引後的相關數據。
  • 查詢語言表達能力。圖語言可以是圖靈完全圖靈完整性 - 維基百科,意味著用戶可以使用它來編寫任何演算法,從而從數據中提取值。目前,還沒有標準的圖查詢語言,並且市場上的許多產品具有不同的表現力。TigerGraph的GSQL是一種用戶友好且高度表達的查詢語言,它更像是一種PL / SQL - 維基百科風格語言,用戶可以使用它來聲明性地編寫任何圖演算法。另一種聲明性語言是來自Neo4j的Cypher,然而,很難用它來編寫精細控制圖分析演算法。第三個是Gremlin https://arxiv.org/pdf/1508.03843 ......,高度表達,學習曲線不低,複雜度高。我不建議。簡單的查詢可以,稍微複雜的, 如多次反覆遍歷,就會顯現出使用的問題。用戶必須閱讀每個手冊,並詢問不同的查詢,以測試和欣賞每個語言的表達能力,學習曲線和設計理念等。關係資料庫專家可以閱讀本指南,瞭解和評估圖查詢語言。
  • 支持計算和/或存儲的橫向擴展和/或縱向擴展。一些圖資料庫可以在存儲上水平擴展(橫向擴展),這意味著將機器加倍,存儲可以加倍。但是,計算速度不會提高2倍。一些圖資料庫也可以在計算上擴展。如果他們這樣做,他們必須有一個 MPP建築。縱向擴展意味著在單個機器上,圖計算引擎可以探索多核並行化計算,並在添加更多核時實現加速。在你對這個項目勾選之前,請注意,永遠不要忘記載入工作。如果機器加倍會導致裝載工作量增加一倍或三倍,則不能將其視為合格的橫向擴展資料庫。TigerGraph擁有可以橫向擴展和擴展的MPP架構。亞馬遜海王星無法橫向擴展,它可以擁有主資料庫的副本以提高吞吐量。Janus Graph和ArangoDB可以橫向擴展存儲,但不能在同一查詢上橫向擴展計算。由於其單一伺服器架構,Neo4j無法擴展計算或存儲。
  • 支持OLTP,OLAP或HTAP 混合事務/分析處理(HTAP) - 維基百科。一些圖平臺純粹用於離線大規模處理,即OLAP Online分析處理 - 維基百科樣式,如PageRank - 維基百科,漸變下降,弱連接組件等。一些圖資料庫支持點遍歷查詢(例如返回給定人的3 -step neighbors)這是更多的OLTP風格。一個很好的衡量標準是看他們是否每秒談論QPS 查詢 - 維基百科,如果是的話,他們很可能支持OLTP。有些人可以同時支持HTAP。嘗試使用簡單的連通分量和頁面排名演算法,看看它們是否能在合理的時間內完成10億個邊緣圖。
  • 是否支持多圖。這是企業安全性和並發性要求,其中不同部門希望同時對同一伺服器/集羣上的不同圖/子圖進行獨佔或包含訪問。至於這篇文章,唯一的供應商支持原生多圖來自TigerGraph,它允許不同的圖共享子圖,這對於不同的功能單元來說很重要。Neo4j允許您為當前使用附加不同的圖存儲文件,但不允許同時使用具有相同伺服器實例的多個圖。默認情況下,亞馬遜海王星有1個內置圖表,不允許用戶擁有自己的圖表。
  • 模式或非模式。一些圖資料庫供應商聲稱他們不需要預定義的模式。其他圖資料庫供應商需要預定義的模式,如傳統的關係資料庫,並支持模式的在線演變。在我看來,預定義的模式對於企業實時應用程序非常重要,因為使用模式,您實際上迫使開發人員/架構師有一個設計時間來考慮放入什麼以及如何組織預先設置的圖。從數據實例中分離元數據是一種眾所周知的技術,可以在資料庫系統中獲得更好的性能。不幸的是,當前的圖資料庫市場過分強調元素類型的爆炸性數量,因此,提倡無模式作為應對這一挑戰的優勢,
  • 有機圖資料庫還是附加圖界面。這個很重要。作為一個資料庫構建者,我個人不同意一刀切的說法。我遵循工藝並相信提供最佳的專業資料庫,以實現最佳性能和用戶體驗。在當前的市場中,太多的供應商通過在現有核心的基礎上為新的市場趨勢添加新介面來擴展他們的產品,這些核心最初是為另一個市場開發和構建的。這種擺動很難在數據管理軟體領域提供最好的產品,並導致在所需企業中採用正確技術的摩擦。說實話,一個簡單的測試是對十億邊圖的三跳查詢。如果它們不是為圖數據管理而設計的,那麼很難實時獲得3跳查詢。這是一個12跳查詢示例。
  • 是否支持實時深層鏈接分析查詢。在今天的大多數圖資料庫中,查詢響應時間從3跳開始顯著降低。一個簡單的測試,看它是否是一個頂級圖資料庫是測試他們的3跳路徑鄰居計數查詢。對於十億邊圖,給定一個輸入頂點,圖資料庫能否找到所有具有到輸入頂點的k-hop路徑的鄰居頂點,並返回總計數?這個簡單的測試是區分好的和壞的圖資料庫的一個很好的標準。在我們即將推出的新基準測試中,我將揭示5個媒體流行圖資料庫的性能,只有一個可以完成這個簡單的測試。所有其他人都失敗了。這是因為從種子頂點開始,該頂點的鄰居對於遠離種子的每個額外跳躍而言指數變大。
  • 是否支持內置圖可視化。使用圖資料庫的一個很好的優點是面向對象的思想。與傳統的關係資料庫不同,從建模到查詢結果的所有內容都是表格格式,圖資料庫優雅地將現實世界的對象映射到頂點和邊緣,如果返回的結果可視化,人眼可以很容易地理解查詢結果。頂點邊圖。這是一個例子。

總而言之,圖資料庫很熱,並且隨處可見。在開始圖資料庫世界的冒險之前,建議購買者或從業者多瞭解!這並不意味著很難找到合適的資料庫。本文中的標準包含一些簡單且可實現的步驟,供讀者嘗試並瞭解真相。


推薦閱讀:
相關文章