目錄
一、圖數據庫如何工作
二、為什么使用圖數據庫
????????Neo4j 圖數據庫以節點、關系和屬性的形式存儲數據,而不是用表或文檔進行數據存儲。這意味著用戶可以像在白板上畫草圖那樣來組織數據。而且,由于圖數據庫不受限于預先定義的數據模型,因此在使用它們時,用戶可以采用更加靈活的方法和策略。
一、圖數據庫如何工作
圖數據庫是通過節點和關系來構建的。
1、節點是圖中的實體,可以:
- 用標簽標記,以表示它們在某個領域中的不同角色(例如,Person,表示“人”)。
- 擁有任意數量的屬性,每個屬性為鍵值對(例如,name,表示“名字”)。
- 可以被建立索引,并受約束條件的限制。
2、關系為兩個節點之間提供了帶名稱的連接(例如,Person - LOVES - Person),且它們:
- 必須始終有一個起始節點、一個終止節點,以及且只有一個類型。
- 必須具有方向性。
- 像節點一樣,也可以有屬性。
節點可以擁有多種類型的多個關系,并不會影響性能。
總的來說,節點和關系作為存儲數據的方式,高效且靈活,因為它們能夠讓用戶:
- 在大型圖中進行深度和廣度的遍歷。
- 將數據庫擴展到數十億個節點。
- 設計可隨著時間演變的靈活的屬性圖數據模型。
二、為什么使用圖數據庫
????????項目通常需要處理大量且復雜的數據,圖數據庫可以成為強大的工具。目前也有其他方式來以“對象和連接”形式存儲數據,比如關系型數據庫。然而,關系型數據庫要實現這種連接,通常需要計算開銷很大的 JOIN 操作或交叉查詢,并且往往受限于結構僵化的數據模型。
????????圖數據庫并不使用 JOIN。相反,圖數據庫以更靈活的方式將關系與數據元素(節點)原生地存儲在一起,這樣可以優化數據的遍歷操作,使每秒可以訪問上百萬個連接。
????????此外,許多任務其實都可以用“圖”的視角來看待,因為圖讓用戶:
- 穿越深層次的層級關系;
- 發現遙遠對象之間隱藏的聯系;
- 感受事物之間的各種關聯關系。