圖數據庫的選擇與對比(Neo4j)


Neo4j是由Java和Scala寫成的一個NoSql數據庫,專門用於網絡圖的存儲。作為一個圖形數據庫Neo4j有以下優點

  • 更快的數據庫操作。當然,有一個前提條件,那就是數據量較大,在MySql中存儲的話需要許多表,並且表之間聯系較多
  • 數據更直觀,相應的SQL語句也更好寫(Neo4j使用Cypher語言,與傳統SQL相比語義清晰簡單)。
  • 更靈活。不管有什么新的數據需要存儲,都是一律的節點和邊,只需要考慮節點屬性和邊屬性。而MySql中即意味着新的表,還要考慮和其他表的關系。
  • 數據庫操作的速度並不會隨着數據庫的增大有明顯的降低。這得益於Neo4j特殊的數據存儲結構和專門優化的圖算法。

 ArangoDB是一個原生多模型數據庫,兼有key/value鍵/值對、graph圖和document文檔數據模型,提供了涵蓋三種數據模型的統一的數據庫查詢語言,並允許在單個查詢中混合使用三種模型。

ArangoDB是一個原生多模型數據庫,兼有key/value鍵/值對、graph圖和document文檔數據模型,提供了涵蓋三種數據模型的統一的數據庫查詢語言,並允許在單個查詢中混合使用三種模型。

ArangoDB的優點:

  • 可以靈活的使用鍵值對、文檔、圖及其組合構建你的數據模型。
  • 跟其它文檔型數據庫相比,ArangoDB占用的存儲空間更少,因為ArangoDB是模式自由的元數據模式。(空間利用率高)
  • 可通過JavaScript進行擴展

二者進行對比:

  • 數據存儲
    • Neo4j對於圖的存儲自然是經過特別優化的。不像傳統數據庫的一條記錄一條數據的存儲方式,Neo4j的存儲方式是:節點的類別,屬性,邊的類別,屬性等都是分開存儲的,這將大大有助於提高圖形數據庫的性能。
    • ArangoDB中的存儲格式非常類似JSON,叫做VelocyPack格式的二進制格式存儲。
  • 數據讀寫
    • Neo4j中,存儲節點時使用了"index-free adjacency",即每個節點都有指向其鄰居節點的指針,可以讓我們在O(1)的時間內找到鄰居節點。
    • ArangoDB中,默認的索引(節點,邊)是哈希索引,不能用於范圍查詢、排序。整體使用了查詢速度快也在O(1)左右
  • 易用性
    • 二者差不多,neo4j采用的是cypher語義清晰
    • arangoDB采用的是AQL易用性現在參考較少
  • 綜合
    • Neo4j作為較早的一批圖形數據庫之一,文檔和各種技術博客較多,技術成熟可用成功案例多。
    • Neo4j查詢的高性能表現、易於使用的特性及其設計的靈活性和開發的敏捷性,以及堅如磐石般的事務管理特性等特點,都充分說明了使用Neo4j是一個不錯的選擇。有關它的所有優點,總結起來,主要表現在以下幾個方面。

  (1)閃電般的讀/寫速度,無與倫比的高性能表現。

  (2)非結構化數據存儲方式,在數據庫設計上具有很大的靈活性。

  (3)能很好地適應需求變化,並適合使用敏捷開發方法。

  (4)很容易使用,可以用嵌入式、服務器模式、分布式模式等方式來使用數據庫。

  (5)使用簡單框圖就可以設計數據模型,方便建模。

  (6)圖數據的結構特點可以提供更多更優秀的算法設計。

  (7)完全支持ACID完整的事務管理特性。

  (8)提供分布式高可用模式,可以支持大規模的數據增長。

  (9)數據庫安全可靠,可以實時備份數據,很方便恢復數據。

  (10)圖的數據結構直觀而形象地表現了現實世界的應用場景

  • 硬件部署

  Neo4j如果沒有熱備、容錯的需求,一台普通的服務器就可以了,比如內存 32G,4 個內核。

 圖數據庫2015-2019排名

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM