值得推薦的四款優(yōu)秀圖形數(shù)據(jù)庫
譯文
【51CTO.com快譯】圖形數(shù)據(jù)庫明確表達(dá)了節(jié)點之間的關(guān)系,在分析網(wǎng)絡(luò)(計算機、人類、地理或其他對象)時比關(guān)系數(shù)據(jù)庫更有效。這讓圖形數(shù)據(jù)庫在面對欺詐檢測和推薦系統(tǒng)等應(yīng)用場景時更勝一籌。
圖形數(shù)據(jù)庫的主要優(yōu)點之一是能夠運行圖形計算算法。這些算法用于不是很適合關(guān)系數(shù)據(jù)庫的任務(wù),比如圖形搜索、路徑尋找、中心性、PageRank和社區(qū)檢測。圖形算法主要在分析(OLAP和HTAP)圖形數(shù)據(jù)庫中受到支持,不過Neo4j等一些事務(wù)(OLTP)圖形數(shù)據(jù)庫也支持它們。
本文討論的所有圖形數(shù)據(jù)庫都有良好的橫向可擴展性。一些還支持讀取副本、全局分布和自動橫向分片。
1.Amazon Neptune
Amazon Neptune是一種完全托管的事務(wù)(OLTP)圖形數(shù)據(jù)庫服務(wù),擁有ACID屬性和即時一致性,其核心是一個定制的高性能圖形數(shù)據(jù)庫引擎,該引擎針對存儲數(shù)十億個關(guān)系,并查詢圖形(毫秒級延遲)進行了優(yōu)化。Neptune支持兩種流行的開源圖形查詢語言:Apache TinkerPop Gremlin和W3C SPARQL。
Neptune數(shù)據(jù)庫集群可以在跨三個可用區(qū)的六個數(shù)據(jù)副本中擁有高達(dá)64 TB的自動擴展存儲,如果你在另外的可用區(qū)使用讀取副本以啟用高可用性,可以使用更多的存儲容量。 Neptune會自動檢測數(shù)據(jù)庫崩潰,并重新啟動——通常在30秒或更短時間內(nèi),無需執(zhí)行崩潰恢復(fù)或重建數(shù)據(jù)庫緩存,因為緩存與數(shù)據(jù)庫進程隔離開來,重新啟動后繼續(xù)有效。如果整個主實例失效,Neptune會自動故障切換到最多15個讀取副本中的一個。備份不斷流式傳輸?shù)紸mazon S3。
可以通過修改實例來增減Neptune集群,或者通過添加所需大小的實例來避免停運,一旦數(shù)據(jù)副本遷移過去,將新實例提升為主實例,就可以關(guān)閉舊實例。Neptune虛擬機實例的大小從db.r4.large(2個vCPU和16 GiB的內(nèi)存)到db.r4.8xlarge(32個vCPU和244個GiB的內(nèi)存)不等,使Neptune的寫入動態(tài)范圍為16倍,讀取動態(tài)范圍為256倍(計數(shù)讀取副本)。
鏈接:
2.AnzoGraph
AnzoGraph是一種大規(guī)模并行的內(nèi)存中OLAP圖形數(shù)據(jù)庫,與企業(yè)數(shù)據(jù)源兼容,并行加載RDF和CSV格式的數(shù)據(jù)。AnzoGraph可以部署在單節(jié)點沙箱中,也可以部署在擁有生產(chǎn)環(huán)境所需的眾多節(jié)點的集群中。AnzoGraph擁有ACID事務(wù)屬性。
AnzoGraph使用W3C標(biāo)準(zhǔn)的RDF三元組和四元組數(shù)據(jù)及SPARQL 1.1查詢。它支持作為RDF存儲一部分的標(biāo)記屬性圖,符合提議的RDF *和SPARQL *標(biāo)準(zhǔn),它還有SPARQL的擴展件,以支持圖形算法、推理、窗口聚合、BI函數(shù)和命名視圖。計劃支持與Neo4j兼容的OpenCypher語言和Neo4j協(xié)議Bolt。
AnzoGraph擁有高性能圖形查詢執(zhí)行和可擴展性(可擴展至數(shù)十億甚至數(shù)萬億個三元組),以及不需要使數(shù)據(jù)庫下線的快速并行數(shù)據(jù)加載。AnzoGraph集群可以部署在CentOS、Kubernetes和AWS上。部署在谷歌云平臺和Azure上的AnzoGraph通常被當(dāng)作部署的Kubernetes來對待。AnzoGraph在綜合基準(zhǔn)測試中可以擴展至40個節(jié)點。
鏈接:
3.Neo4j
Neo4j是一種可擴展的OLTP圖形數(shù)據(jù)庫,擁有一些OLAP功能。Neo4j是最初的圖形數(shù)據(jù)庫,創(chuàng)建于1999年,如今繼續(xù)是市場領(lǐng)導(dǎo)者。
開源Neo4j社區(qū)版僅限于單臺服務(wù)器,Neo4j企業(yè)版卻讓你可以根據(jù)性能需要,為集群添加任意數(shù)量的節(jié)點。
Neo4j高可用性集群中的每個節(jié)點都包含數(shù)據(jù)庫和集群管理組件,集群則可以通過負(fù)載均衡系統(tǒng)來訪問。整個圖復(fù)制到集群的每個實例,每個HA集群的讀取能力隨服務(wù)器實例的數(shù)量呈線性增加。Neo4j每秒可以提交數(shù)萬次寫入,同時保持完整的ACID事務(wù)。
在Neo4j因果集群中,讀寫服務(wù)器的核心集群與一個或多個異步更新的讀取副本集群相結(jié)合。為任何應(yīng)用程序保證了因果一致性,這意味著即使硬件和網(wǎng)絡(luò)出現(xiàn)故障,也能保證至少讀取自己的寫入。因果集群中的讀取副本可能分布在不同地域,為靠近副本的用戶改進查詢性能。
鏈接:
4.TigerGraph
TigerGraph是一種實時原生并行HTAP圖形數(shù)據(jù)庫,可在云端或本地部署。TigerGraph支持ACID屬性,內(nèi)置數(shù)據(jù)壓縮,可自動分區(qū)集群內(nèi)的圖形,聲稱速度比競爭對手更快。它使用一種天生并行的消息傳遞架構(gòu),可隨數(shù)據(jù)大小而擴展。
TigerGraph旨在能夠執(zhí)行深度鏈接分析以及實時聯(lián)機事務(wù)處理和大批量數(shù)據(jù)加載。TigerGraph的“深度鏈接分析”是指從一個頂點開始遍歷圖,找到三個或更多的跳轉(zhuǎn)關(guān)系,并分析結(jié)果。
雖然幾種開源圖形查詢語言已得到廣泛采用,比如Cypher、Gremlin和SPARQL,但TigerGraph有一種新的查詢語言GSQL。GSQL結(jié)合了類似SQL的查詢語法和類似Cypher的圖形導(dǎo)航,以及過程編程和用戶定義的函數(shù)。TigerGrpah可以為遷離Neo4j數(shù)據(jù)庫的人將Cypher轉(zhuǎn)換成GSQL。
TigerGraph擁有托管云產(chǎn)品,目前處于有限預(yù)覽版狀態(tài)。結(jié)果表明,TigerGraph在運行有8臺機器的讀寫集群時速度可以提升6.7倍,但讀取副本或地理分布方面未透露任何信息。
鏈接:
原文標(biāo)題:The best graph databases,作者:Martin Heller
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】