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排名