1.5 Neo4j概述
Neo4j是一個用Java實現的開源NoSQL圖數據庫。自2003年開始研發,直到2007年正式發布第一版。Neo4j的源代碼托管在GitHub上,技術支持托管在Stack Overflow和Neo4j Google討論組上。Neo4j如今已經被各種行業的數十萬家公司和組織采用。Neo4j的使用案例涵蓋了網絡管理、軟件分析、科學研究、路由分析、組織和項目管理、決策制定、社交網絡等諸多方面。
Neo4j實現了專業數據庫級別的圖數據模型的存儲。與普通的圖處理或內存數據庫不同,Neo4j提供了完整的數據庫特性,包括ACID事務的支持、集群支持、備份與故障轉移等,這使其適合于企業級生產環境下的各種應用。
另外,Neo4j一些特殊功能使得Neo4j在用戶、開發人員和DBA中非常受歡迎(見圖1-15)。
● 擅于處理關系:Neo4j自底向上構建成一個圖數據庫。它的體系結構旨在優化快速管理、存儲和遍歷節點和關系。在Neo4j中,關系是數據庫中最重要的元素,它代表節點之間的相互聯系。眾所周知,在關系數據庫領域中,“關系”用于多個不同表之間的連接操作,這種操作的性能下降與關系的數量呈指數級別的,但在Neo4j中則是用于從一個節點指向另一個節點,其性能是線性級別的。
● 界面友好:Neo4j提供了一個查詢與展示一體化的Web操作界面,能夠非常形象地展示了數據模型的節點和關系。
● 聲明式圖查詢語言:Cypher是一種聲明式圖數據庫查詢語言,它表現力豐富,查詢效率高,其地位和作用與關系數據庫中的SQL語言(Structured Query Language,結構化查詢語言)類似。Cypher還具有良好的擴展性,用戶可以定制自己的查詢方式(如自定義過程)。
● ACID事務:Neo4j通過ACID事務提供真正的數據安全,Neo4j使用事務來保證數據在硬件故障或系統崩潰的情況下不會丟失。
● 高性能:Neo4j使用多副本主從復制的方式構建高可靠性集群,支持大數據集合并且可以不斷擴展其容量,可存儲數百萬億個實體。也就是說,Neo4j可部署在一個可容錯、可擴展的集群上。此外,Neo4j還提供熱備份和性能監控功能。
● 代碼開源:Neo4j將源代碼公布到GitHub,任何人都可以去Neo4j的GitHub主頁下載源代碼。

圖1-15 Neo4j支持的特性
當然,傳統的關系數據庫經過長期的發展,其特性、性能已經被企業級應用認可,并且新興的其他NoSQL數據庫也越來越多地被使用在企業級項目的數據存儲解決方案中;那么Neo4j這種圖數據庫與關系數據庫、NoSQL數據庫對比,其優勢是什么呢?Neo4j與其他數據庫的對比情況如表1-4所示。
表1-4 Neo4j與其他數據庫的對比

- 漫話大數據
- Google Visualization API Essentials
- SQL查詢:從入門到實踐(第4版)
- 數據庫應用基礎教程(Visual FoxPro 9.0)
- INSTANT Cytoscape Complex Network Analysis How-to
- 數據庫技術及應用教程
- Power BI商業數據分析完全自學教程
- 數據庫技術實用教程
- Apache Kylin權威指南
- 科研統計思維與方法:SPSS實戰
- 數據科學實戰指南
- Chef Essentials
- Mastering LOB Development for Silverlight 5:A Case Study in Action
- 貫通SQL Server 2008數據庫系統開發
- 區塊鏈+:落地場景與應用實戰