Neo4j 爲什麼需要圖數據庫
隨着技術的發展,我們對數據的需求已經不再侷限於對數據本身的獲取了,我們還需要獲取數據與數據間的關係(也就是連接數據).
簡單地說,我們可以說圖數據庫主要用於存儲更多的連接數據(因爲圖結構相比其他數據結構而言,能保存更多的數據間的關係).
如果我們使用RDBMS數據庫來存儲更多連接的數據,那麼它們不能提供用於遍歷大量數據的適當性能.在這些情況下,Graph Database提高了應用程序性能.
如今,大多數社交網絡應用程序(如Facebook,Google+,Linkedln,Twitter,Yammer等)和視頻託管應用程序(如Goggle Youtube,Flickr,Yahoo Video等)都在使用更多連接的數據.
我們將觀察什麼是連接數據?以及這些應用程序如何與某些實時應用程序存儲數據.
Neo4j的特點:
- SQL就像簡單的查詢語言Neo4j CQL
- 它遵循屬性圖數據模型
- 它通過使用Apache Lucence支持索引
- 它支持UNIQUE約束
- 它包含一個用於執行CQL命令的UI: Neo4j數據瀏覽器
- 它支持完整的ACID (原子性,一致性,隔離性和持久性)規則
- 它採用原生圖形庫與本地GPE (圖形處理引擎)
- 它支持查詢的數據導出到JSON和XLS格式
- 它提供了REST API,可以被任何編程語言 (如Java,Spring,Scala等)訪問
- 它提供了可以通過任何UI MVC框架 (如Node JS) 訪問的Java腳本
- 它支持兩種Java API: Cypher API和Native Java API來開發Java應用程序
Neo4j的優點:
- 它很容易表示連接的數據
- 檢索/遍歷/導航更多的連接數據是非常容易和快速的
- 它非常容易地表示半結構化數據
- Neo4j CQL查詢語言命令是人性化的可讀格式,非常容易學習
- 使用簡單而強大的數據模型
- 它不需要複雜的連接來檢索連接的/相關的數據,因爲它很容易檢索它的相鄰節點或關係細節沒有連接或索引
Neo4j 屬性圖數據模型
屬性圖模型規則
- 表示節點,關係和屬性中的數據
- 節點和關係都包含屬性
- 關係連接節點
- 屬性是鍵值對
- 節點用圓圈表示,關係用方向鍵表示
- 關係具有方向: 單向和雙向
- 每個關係包含“開始節點”或“從節點”和“到節點”或“結束節點”