1.3.2 圖數據模型的優勢
在圖數據庫中,關系是最重要的元素。通過關系我們能夠將節點相互關聯起來,以構建與我們問題領域密切相關的復雜模型。
圖數據庫模型中的每個節點都直接包含一個關系列表,該關系列表存放此節點與其他節點的關系記錄。這些關系記錄按類型和方向組織起來,并且可以保存附加屬性。無論何時運行類似關系數據庫的連接(Join)操作時,圖數據庫都將使用此列表來直接訪問連接的節點,無須進行記錄的搜索、匹配計算操作。
將關系預先保存到關系列表中的這種能力,使Neo4j能夠提供比關系數據庫高幾個數量級的性能,特別是對于復雜連接的查詢,Neo4j能夠實現毫秒級的響應。
使用圖數據庫來組織數據所得到的數據模型,比使用傳統關系或其他NoSQL數據庫的數據模型更簡單,同時更具有表現力。
圖數據庫支持非常靈活和細粒度的數據模型,可以用簡單直觀的方式對數據應用進行建模和管理,可以更方便地將數據單元小型化、規范化;同時還能實現豐富的關系連接,這樣在對數據查詢時可以用任何可想象到的方式進行查詢操作。可見,與關系數據庫相比,圖數據庫可支持更多類型的用例,如圖1-7所示。

圖1-7 圖數據庫中關系的豐富表現
眾所周知,數據庫為確保數據的正確性,創造性地引入了事務概念,即ACID特性。像Neo4j這樣的圖數據庫完全支持ACID事務,包括預寫式日志(write-ahead logs)的恢復和異常終止后的恢復,所以永遠不會丟失已經被加入數據庫的數據。
下面是一個用關系數據模型和圖數據模型建模的實例,通過兩個E-R圖(Entity Relationship Diagram,實體-關系圖),可以看出使用圖數據庫能夠更加簡潔明了地描述數據之間的關系。
如圖1-8所示,要使用關系數據庫創建一個項目部門組織的存儲結構,必須為項目、部門、組織、人員單獨創建表結構,各個表結構之間通過外鍵約束相互關聯,對于多對多的復雜關系還必須創建中間表(如Department_Members表),通過E-R圖可以看出,各個表結構中創建了大量的主鍵、外鍵,并創建了中間表來維護復雜關系,這消耗了大量的系統資源。

圖1-8 關系數據模型
如果采用圖數據庫創建一個項目部門組織的存儲結構,則容易得多,只需要為項目、部門、組織、人員創建節點,并且節點不需要主鍵、外鍵,也不需要中間表,只保留必要的屬性即可。各個節點直接通過關系指向來表達節點之間的復雜關系。使用圖數據庫可以更加簡潔、明確地描述數據間的復雜關系,如圖1-9所示。

圖1-9 圖數據模型
- 達夢數據庫編程指南
- DB29forLinux,UNIX,Windows數據庫管理認證指南
- SQL Server 2008數據庫應用技術(第二版)
- App+軟件+游戲+網站界面設計教程
- 數據要素五論:信息、權屬、價值、安全、交易
- Starling Game Development Essentials
- 數字媒體交互設計(初級):Web產品交互設計方法與案例
- Python金融數據分析(原書第2版)
- 聯動Oracle:設計思想、架構實現與AWR報告
- 大數據技術原理與應用:概念、存儲、處理、分析與應用
- Access數據庫開發從入門到精通
- 數據挖掘競賽實戰:方法與案例
- 大數據測試技術:數據采集、分析與測試實踐(在線實驗+在線自測)
- SOLIDWORKS 2018中文版機械設計基礎與實例教程
- AI Crash Course