官术网_书友最值得收藏!

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 圖數據模型

主站蜘蛛池模板: 长丰县| 三河市| 宁化县| 宜春市| 秭归县| 曲周县| 太白县| 阜城县| 紫云| 贵定县| 永州市| 辽源市| 六盘水市| 宝兴县| 镶黄旗| 揭阳市| 内乡县| 澄城县| 循化| 岳普湖县| 丹东市| 嘉荫县| 韩城市| 乌兰浩特市| 平和县| 辛集市| 叙永县| 云林县| 聊城市| 泸定县| 凤翔县| 天祝| 哈尔滨市| 永和县| 灵山县| 龙井市| 轮台县| 湖南省| 淮滨县| 监利县| 泰来县|