## 說明
> + 本手冊主要記錄TigerGragh學習過程中遇到的一些疑惑和心得
> + 帶領大家從搭建環境開始到實戰使用,完全沒接觸過圖數據庫的新手也可輕松入門。
> + 本手冊為我實際操作過程中的總結,更全面的可查看官方文檔
 
## 圖數據庫簡介
* 定義:a database that uses graph structures for semantic queries with nodes, edges and properties to represent and store data – independent of the way the data is stored internally. It’s really the model and the implemented algorithms that matter.(使用圖形結構進行語義查詢的數據庫,包含節點、邊和屬性來表示和存儲數據——與數據在內部存儲的方式無關。真正重要的是模型和實現的算法。)
 
## 圖形數據庫和關系數據庫分析對比
```
簡單的說:
圖形數據庫是NoSQL數據庫的一種,
但和其它的NoSQL數據庫非常不同:
豐富的關系表示,完整的事務支持,卻沒有一個純正的橫向擴展解決方案。
```
* NoSQL(Not Only SQL)數據庫泛指非關系型的數據庫。數據庫常常可以用來處理傳統的關系型數據庫所難以解決的一系列問題。通常情況下,這些NoSQL數據庫分為Graph,Document,Column Family以及Key-Value Store等四種,這四種類型的數據庫分別使用了不同的數據結構來記錄數據,所適用的場景也不盡相同。
* 在使用關系型數據庫時常常會遇到一系列非常復雜的設計問題。這種彼此關聯的關系常常會非常復雜,而且在兩個實體之間常常同時存在著多個不同的關系。在嘗試使用關系型數據庫對這些關系進行建模時,我們首先需要建立表示各種實體的一系列表,這些表常常需要通過一系列關聯表將它們關聯起來,我們需要大量的關聯表來記錄這一系列復雜的關系。在更多實體引入之后,我們將需要越來越多的關聯表,從而使得基于關系型數據庫的解決方案繁瑣易錯。
* 在需要描述大量關系時,傳統的關系型數據庫已經不堪重負。它所能承擔的是較多實體但是實體間關系略顯簡單的情況。而對于這種實體間關系非常復雜,常常需要在關系之中記錄數據,而且大部分對數據的操作都與關系有關的情況,原生支持了關系的圖形數據庫才是正確的選擇。它不僅僅可以為我們帶來運行性能的提升,更可以大大提高系統開發效率,減少維護成本。
## 舉例說明
+ 圖形數據庫對數據進行抽象的方式實際上和關系型數據庫非常接近。
+ 每個結點仍具有標示自己所屬實體類型的標簽,也既是其所屬的結點集,并記錄一系列描述該結點特性的屬性。
+ 除此之外,我們還可以通過關系來連接各個結點。
**簡單數據關系**


**復雜數據關系**

 
可以看到,在傳統數據庫中,需要表示多對多關系時,我們常常需要創建一個關聯表來記錄不同實體的多對多關系,而且這些關聯表常常不用來記錄信息。如果兩個實體之間擁有多種關系,那么我們就需要在它們之間創建多個關聯表。**而在一個圖形數據庫中**,我們只需要標明兩者之間存在著不同的關系,例如用DirectBy關系指向電影的導演,或用ActBy關系來指定參與電影拍攝的各個演員。同時在ActBy關系中,我們更可以通過關系中的屬性來表示其是否是該電影的主演。而且從上面所展示的關系的名稱上可以看出,關系是有向的。如果希望在兩個結點集間建立雙向關系,我們就需要為每個方向定義一個關系。
+ 也就是說,相對于關系數據庫中的各種關聯表,圖形數據庫中的關系可以通過關系能夠包含屬性這一功能來提供更為豐富的關系展現方式