本書系統(tǒng)地介紹了圖數(shù)據(jù)庫的歷史由來、建模方法、工作原理和一些真實(shí)的用戶用例,詳細(xì)地說明了圖數(shù)據(jù)解決的是什么樣的問題,并以Neo4j數(shù)據(jù)庫和Cypher查詢語言為例,闡述了圖數(shù)據(jù)庫的建模方法和領(lǐng)域用例,還介紹了圖數(shù)據(jù)庫的工作原理以及一些實(shí)用的圖論算法。
本書適合開發(fā)人員和數(shù)據(jù)庫管理人員了解和學(xué)習(xí)圖數(shù)據(jù)庫時閱讀,作為一門新的知識和獨(dú)特的數(shù)據(jù)庫領(lǐng)域來拓寬視野,也適合提供解決方案的負(fù)責(zé)人了解行業(yè)動向和新的解決問題的方式。通過閱讀本書,讀者可以對圖數(shù)據(jù)庫這一領(lǐng)域有一個透徹的了解。
世界上的大部分領(lǐng)域?qū)嶋H上都可以建模成圖,而軟件開發(fā)人員或是數(shù)據(jù)庫管理人員卻在辛辛苦苦地將這些圖轉(zhuǎn)化成關(guān)系型數(shù)據(jù)庫中的表。想象一下,假如你再也不用去做這樣的轉(zhuǎn)化,假如數(shù)據(jù)庫的遷移可以變得輕松簡單,你愿意去接受一個全新的數(shù)據(jù)庫嗎?圖數(shù)據(jù)庫就是這樣一個完全不同于關(guān)系型數(shù)據(jù)庫的新型數(shù)據(jù)庫,它處理的是大規(guī)模的數(shù)據(jù)和不斷變化的需求。
本書的三位作者均為Neo4j Technology公司的技術(shù)高手,他們對圖數(shù)據(jù)庫及其解決方案有豐富的經(jīng)驗(yàn),其中一位甚至還是Neo4j圖數(shù)據(jù)庫的聯(lián)合創(chuàng)始人。
本書揭秘圖數(shù)據(jù)庫是如何幫你管理和查詢高度關(guān)聯(lián)的數(shù)據(jù)的。有了這本實(shí)用的書,你將會學(xué)到如何設(shè)計(jì)和實(shí)施圖數(shù)據(jù)庫,在廣泛的問題域中展現(xiàn)“圖”的力量。無論你是想更快地響應(yīng)用戶查詢,還是想構(gòu)建快速適應(yīng)業(yè)務(wù)發(fā)展的數(shù)據(jù)庫,這本書都會向你將無模式(schema-free)的圖模型應(yīng)用于實(shí)際問題的具體方法。
閱讀這本書,你還可以學(xué)到不同的組織是如何使用圖數(shù)據(jù)庫擊敗其競爭對手的。有了本書中的數(shù)據(jù)建模、查詢和代碼示例,你很快就能實(shí)現(xiàn)一個自己的解決方案。
第1章 簡介 1
1.1 圖是什么 1
1.2 圖領(lǐng)域概覽 3
1.2.1 圖數(shù)據(jù)庫 4
1.2.2 圖計(jì)算引擎 6
1.3 圖數(shù)據(jù)庫的威力 7
1.3.1 性能 7
1.3.2 靈活性 7
1.3.3 敏捷性 7
1.4 小結(jié) 8
第2章 關(guān)聯(lián)數(shù)據(jù)的存儲選擇 9
2.1 關(guān)系型數(shù)據(jù)庫缺少聯(lián)系 9
2.2 NoSQL數(shù)據(jù)庫也缺少聯(lián)系 12
2.3 圖數(shù)據(jù)庫擁抱聯(lián)系 15
2.4 小結(jié) 20
第3章 使用圖進(jìn)行數(shù)據(jù)建!21
3.1 模型和目標(biāo) 21
3.2 帶標(biāo)簽的屬性圖模型 22
3.3 查詢圖:Cypher簡介 23
3.3.1 Cypher的理念 23
3.3.2 MATCH 25
3.3.3 RETURN 26
3.3.4 其他Cypher子句 26
3.4 關(guān)系建模和圖建模對比 27
3.4.1 系統(tǒng)管理領(lǐng)域中的關(guān)系建!29
3.4.2 系統(tǒng)管理領(lǐng)域中的圖建!32
3.4.3 測試模型 34
3.5 跨域模型 35
3.5.1 創(chuàng)建莎士比亞圖 38
3.5.2 開始查詢 40
3.5.3 聲明查找的信息模式 41
3.5.4 約束匹配 42
3.5.5 處理結(jié)果 43
3.5.6 查詢鏈 44
3.6 建模時常見的陷阱 45
3.6.1 電子郵件起源問題域 45
3.6.2 敏感的第一個迭代 45
3.6.3 第二次的魅力 47
3.6.4 發(fā)展中的領(lǐng)域 50
3.7 辨別節(jié)點(diǎn)和聯(lián)系 55
3.8 避免反模式 55
3.9 小結(jié) 56
第4章 構(gòu)建基于圖數(shù)據(jù)庫的應(yīng)用 57
4.1 數(shù)據(jù)建模 57
4.1.1 根據(jù)應(yīng)用程序的需要描述模型 57
4.1.2 用節(jié)點(diǎn)表示事物,用聯(lián)系表示結(jié)構(gòu) 58
4.1.3 細(xì)粒度聯(lián)系與通用聯(lián)系 59
4.1.4 將事實(shí)建模為節(jié)點(diǎn) 59
4.1.5 將復(fù)雜的值類型表示為節(jié)點(diǎn) 62
4.1.6 時間 62
4.1.7 迭代開發(fā)和增量開發(fā) 65
4.2 應(yīng)用程序架構(gòu) 66
4.2.1 嵌入式與服務(wù)器 66
4.2.2 集群 71
4.2.3 負(fù)載均衡 71
4.3 測試 74
4.3.1 測試驅(qū)動的數(shù)據(jù)模型開發(fā) 74
4.3.2 性能測試 80
4.4 容量規(guī)劃 83
4.4.1 優(yōu)化條件 84
4.4.2 性能 84
4.4.3 冗余 86
4.4.4 負(fù)載 86
4.5 導(dǎo)入和批量加載數(shù)據(jù) 87
4.5.1 初始導(dǎo)入 87
4.5.2 批量導(dǎo)入 88
4.6 小結(jié) 91
第5章 現(xiàn)實(shí)世界中的圖 92
5.1 為什么選擇圖 92
5.2 常見用例 93
5.2.1 社交 93
5.2.2 推薦 94
5.2.3 地理空間 95
5.2.4 主數(shù)據(jù)管理 95
5.2.5 網(wǎng)絡(luò)和數(shù)據(jù)中心管理 95
5.2.6 授權(quán)和訪問控制(通信) 96
5.3 實(shí)際示例 97
5.3.1 社交推薦(專業(yè)社交網(wǎng)絡(luò)) 97
5.3.2 授權(quán)和訪問控制 107
5.3.3 地理空間和物流 115
5.4 小結(jié) 127
第6章 圖數(shù)據(jù)庫的內(nèi)部結(jié)構(gòu) 128
6.1 原生圖處理 128
6.2 原生圖存儲 131
6.3 用于編程的API 135
6.3.1 內(nèi)核API 136
6.3.2 核心API 136
6.3.3 遍歷框架 137
6.4 非功能型特性 139
6.4.1 事務(wù) 139
6.4.2 可恢復(fù)性 140
6.4.3 可用性 141
6.4.4 可擴(kuò)展性 142
6.5 小結(jié) 145
第7章 使用圖論預(yù)分析 146
7.1 深度優(yōu)先搜索和廣度優(yōu)先搜索 146
7.2 使用Dijkstra算法尋找路徑 147
7.3 A*算法 155
7.4 圖論和預(yù)測建!155
7.4.1 三元閉包 156
7.4.2 結(jié)構(gòu)平衡 158
7.5 局部橋 161
7.6 小結(jié) 163
附錄 NoSQL概覽 164