1 基本概念
- 圖形是一組節(jié)點和連接這些節(jié)點的關系
- 圖形以屬性的形式將數據存儲在節(jié)點和關系中;
- 屬性是用于表示數據的鍵值對;
- 圖庫的主要作用:
- 主要用于存儲更多的連接數據;
- RDBMS存儲更多連接的數據,不能提供用于遍歷大量數據的適當性能;在這情況下,Graph Database提高了應用程序性能;
- 在圖形理論中,我們可以表示一個帶有圓的節(jié)點,節(jié)點之間的關系用一個箭頭標記表示
- 單個節(jié)點:不包含任何屬性

1567565195539.png
- 帶有屬性的節(jié)點:屬性是一個名稱:值對

1567565223340.png
- 兩個節(jié)點之間創(chuàng)建關系:

1567565244714.png
- 節(jié)點關系:

1567565280118.png
- 單向關系:ABC到PQR
- 雙向關系: ABC到XYZ
2 數據模型
2.1 屬性圖模型規(guī)則
- 表示節(jié)點,關系和屬性中的數據
- 節(jié)點和關系都包含屬性
- 關系連接節(jié)點
- 屬性是鍵值對
- 節(jié)點用圓圈表示,關系用方向鍵表示
- 關系具有方向:單向和雙向。
- 每個關系包含“開始節(jié)點”或“從節(jié)點”和“到節(jié)點”或“結束節(jié)點”
Neo4j圖數據庫需要注意的事項:
- “關系應該是方向性的”:在屬性圖數據模型中,關系應該是定向的。如果我們嘗試創(chuàng)建沒有方向的關系,那么它將拋出一個錯誤消息;
- 將其所有數據存儲在節(jié)點和關系中。不需要任何額外的RRBMS數據庫或無SQL數據庫來存儲Neo4j數據庫數據。它以圖形的形式存儲其數據的本機格式;
- 本機GPE(圖形處理引擎)引擎來使用它的本機圖存儲格式
2.2 主要構建模塊
- 節(jié)點
- 關系
- 屬性

1567565602658.png
這里我們使用圓圈表示節(jié)點。 使用箭頭的關系。 關系是有方向性的。 我們可以用Properties(鍵值對)來表示Node的數據。 在這個例子中,我們在Node的Circle中表示了每個Node的Id屬性。
3 Neo4j 特點和優(yōu)勢
3.1 特點
- SQL就像簡單的查詢語言Neo4j CQL
- 它遵循屬性圖數據模型
- 它通過使用Apache Lucence支持索引
- 它支持UNIQUE約束
- 它包含一個用于執(zhí)行CQL命令的UI:Neo4j數據瀏覽器
- 它支持完整的ACID(原子性,一致性,隔離性和持久性)規(guī)則
- 它采用原生圖形庫與本地GPE(圖形處理引擎)
- 它支持查詢的數據導出到JSON和XLS格式
- 它提供了REST API,可以被任何編程語言(如Java,Spring,Scala等)訪問
- 它提供了可以通過任何UI MVC框架(如Node JS)訪問的Java腳本
- 它支持兩種Java API:Cypher API和Native Java API來開發(fā)Java應用程序
3.2 優(yōu)點
- 它很容易表示連接的數據
- 檢索/遍歷/導航更多的連接數據是非常容易和快速的
- 它非常容易地表示半結構化數據
- Neo4j CQL查詢語言命令是人性化的可讀格式,非常容易學習
- 它使用簡單而強大的數據模型
- 它不需要復雜的連接來檢索連接的/相關的數據,因為它很容易檢索它的相鄰節(jié)點或關系細節(jié)沒有連接或索引
3.3 缺點或限制
- AS的Neo4j 2.1.3最新版本,它具有支持節(jié)點數,關系和屬性的限制。
- 它不支持Sharding。
4 Neo4j構建模塊
Neo4j主要有以下構建模塊:
- 節(jié)點:圖標的基本單位,具有鍵值對的屬性
- 如下是Node Name = “Employee”, 包含一組屬性作為鍵值對

1567578611502.png
-
屬性:描述圖節(jié)點和關系的鍵值對
- Key = 值
- Key是字符串
- 值可以用任意Neo4j數據類型表示
-
關系:另一個主要構建塊。 它連接兩個節(jié)點
- Emp和Dept是兩個不同的節(jié)點
- WORKS_FOR”是Emp和Dept節(jié)點之間的關系
- 從Emp到Dept的箭頭標記
- 每個關系包含一個起始節(jié)點和一個結束節(jié)點,這里“Emp”是一個起始節(jié)點,Dept”是結束節(jié)點。
- 由于該關系箭頭標記表示從“Emp”節(jié)點到“Dept”節(jié)點的關系,該關系被稱為“進入關系”到“Dept”節(jié)點
- 像節(jié)點一樣,關系也可以包含屬性作為鍵值對。
- 這里的“WORKS_FOR”關系有一個屬性作為鍵值對,它代表了這種關系的一個ID。

1567578987039.png
-
標簽:
- 將一個公共名稱與一組節(jié)點或關系相關聯
- 節(jié)點或關系可以包含一個或多個標簽
- 可以為現有節(jié)點或關系創(chuàng)建新標簽
- 可以從現有節(jié)點或關系中刪除現有標簽
- 從上圖可以觀察到:左側節(jié)點都有一個標簽:“EMP”,而右側節(jié)點都有一個標簽:“Dept”。
- 兩個節(jié)點之間的關系,也有一個標簽:“WORKS_FOR”
-
數據瀏覽器:
- 訪問鏈接:http://localhost:7474/browser/
- Neo4j數據瀏覽器用于執(zhí)行CQL命令并查看輸出輸出
- 在美元符號后鍵入命令,然后單擊“執(zhí)行”按鈕運行命令
- 與Neo4j數據庫服務器交互
- 使用“VI視圖”按鈕以圖形格式查看結果。 以“UI視圖”格式顯示結果。
- 使用“網格視圖”按鈕在網格視圖中查看結果
- CSV
- JSON