圖數據庫實戰 Graph Databases in Action

Dave Bechberger,Josh Perryman

  • 圖數據庫實戰-preview-1
  • 圖數據庫實戰-preview-2
圖數據庫實戰-preview-1

買這商品的人也買了...

商品描述

現實世界中的數據往往並不是能以行列形式呈現的表格型數據,而是富含關系信息的復雜網絡。對於挖掘這類數據的潛在價值,圖數據庫具有明顯的優勢。本書介紹如何針對真實場景設計和實現圖數據庫。你將學習圖論的基礎知識,並嘗試構建基於圖數據庫的社交網絡應用程序和推薦引擎等。你將掌握圖數據庫開發的所有重要概念,包括遞歸遍歷、圖數據建模、查詢調優、性能調優、圖分析,以及如何避免超級節點等反模式。學完本書後,你將有能力構建基於圖數據庫的應用程序,從而顯著地提升數據價值。本書

示例採用開源圖計算框架TinkerPop及其查詢語言Gremlin,但所述概念均適用於Neo4j等基於Cypher的圖數據庫。

作者簡介

【作者簡介】
戴夫·貝克伯傑(Dave Bechberger)
AWS圖架構師,在分佈式數據架構方面擁有豐富經驗,受邀在各種國際會議上發表了大量與圖技術相關的演講。


喬希·佩里曼(Josh Perryman)
數據架構師,擁有20餘年的複雜系統構建和維護經驗,近年來專注於圖數據庫在分佈式環境中的應用。工作之餘,他還設計了惠及全球學生的Gremlin培訓課程。


【譯者簡介】
葉偉民
曾在美國舊金山工作,是“神機妙算Fintech信息匯總”站長和主要開發人員,另譯有《.NET並發編程實戰》《.NET內存管理寶典》等書。


劉華
匯豐軟件開發(廣東)有限公司(匯豐科技中國)雲平台工程主管,著有《獵豹行動:硝煙中的敏捷轉型之旅》和《軟件交付那些事兒》,有20年的軟件開發經驗,以及16年的項目和團隊管理經驗。阿里雲、谷歌云認證架構師,熟悉知識圖譜、圖數據庫、Gremlin,曾在GDevOps、中國DevOps社區、中國軟件技術大會、ArchSummit、Top 100等論壇發表過主題演講。 “敏於思 捷於行”博主。

目錄大綱

第 一部分 圖數據庫入門
第 1章 初識圖 2
1.1 什麽是圖 3
1.1.1 什麽是圖數據庫 4
1.1.2 與其他類型數據庫的比較 5
1.1.3 為什麽不能使用SQL 6
1.2 我的問題適合用圖數據庫嗎 13
1.2.1 探究疑問 14
1.2.2 如果仍無法確定 16
1.3 小結 19

第 2章 圖數據建模 20
2.1 數據建模過程 20
2.1.1 數據建模術語 21
2.1.2 數據建模的四個步驟 22
2.2 理解問題 23
2.2.1 關於領域和範圍的疑問 24
2.2.2 關於業務實體的疑問 25
2.2.3 關於功能的疑問 26
2.3 構建概念數據模型 27
2.3.1 對實體進行識別和歸類 27
2.3.2 識別實體間的關系 28
2.4 構建邏輯數據模型 30
2.4.1 將實體轉換為頂點 32
2.4.2 將關系轉換為邊 34
2.4.3 尋找並分配屬性 42
2.5 檢查模型 43
2.6 小結 44

第3章 基本遍歷和遞歸遍歷 45
3.1 建立開發環境 45
3.1.1 啟動Gremlin Server 46
3.1.2 啟動Gremlin Console,連接Gremlin Server,加載數據 46
3.2 遍歷圖 47
3.2.1 使用邏輯數據模型(模式)來規劃遍歷 48
3.2.2 通過圖數據來計劃操作 49
3.2.3 遍歷圖的基本概念 51
3.2.4 使用Gremlin編寫遍歷 52
3.2.5 使用值操作檢索屬性 56
3.3 遞歸遍歷 57
3.3.1 使用遞歸邏輯 57
3.3.2 使用Gremlin編寫遞歸遍歷 60
3.4 小結 66

第4章 尋路遍歷與圖變異 67
4.1 圖變異 68
4.1.1 添加頂點和邊 69
4.1.2 從圖中刪除數據 72
4.1.3 修改圖 73
4.1.4 擴展圖 79
4.2 路徑 82
4.2.1 圖中的環 83
4.2.2 查找簡單路徑 85
4.3 遍歷和篩選邊 86
4.3.1 遍歷邊的E操作和V操作 86
4.3.2 通過屬性篩選邊 90
4.3.3 在路徑結果中包括邊 91
4.3.4 實現邊的計數和反規範化 92
4.4 小結 93

第5章 格式化結果 94
5.1 回顧值操作 94
5.2 構建結果 99
5.2.1 在Gremlin中應用別名 101
5.2.2 投射結果而不應用別名 106
5.3 對結果進行組織 110
5.3.1 對圖遍歷返回的結果排序 110
5.3.2 對圖遍歷返回的結果分組 112
5.3.3 限制結果記錄的數量 114
5.4 將操作組合成復雜的遍歷 115
5.5 小結 119

第6章 開發應用程序 120
6.1 開始項目 121
6.1.1 選擇工具 121
6.1.2 設置項目 122
6.1.3 選擇驅動程序 122
6.1.4 準備數據庫服務器實例 123
6.2 連接數據庫 124
6.2.1 集群配置 124
6.2.2 建立GraphTraversal Source 125
6.3 獲取數據 127
6.3.1 獲取一個頂點 128
6.3.2 使用Gremlin語言變體 129
6.3.3 增加終點操作 130
6.3.4 在應用程序中創建Java方法 132
6.4.1 添加頂點 132
6.4.2 添加邊 133
6.4.3 修改屬性 135
6.4.4 刪除元素 136
6.5 轉換清單和路徑遍歷 138
6.5.1 獲取結果的清單 138
6.5.2 實現遞歸遍歷 139
6.5.3 實現路徑 140
6.6 小結 141

第二部分 使用圖數據庫構建應用程序
第7章 高級數據建模技術 144
7.1 回顧當前數據模型 145
7.2 擴展邏輯數據模型 146
7.3 將實體轉換為頂點 148
7.3.1 使用通用標簽 149
7.3.2 反規範化圖數據 154
7.3.3 將關系轉換為邊 158
7.3.4 查找和分配屬性 160
7.3.5 將屬性移到邊 160
7.3.6 檢查模型 163
7.4 針對個性化用例擴展數據模型 163
7.5 比較結果 165
7.6 小結 166

第8章 使用熟路構建遍歷 167
8.1 開發遍歷的準備工作 168
8.1.1 識別所需的元素 168
8.1.2 選擇起點 171
8.1.3 準備測試數據 172
8.2 編寫第 一個遍歷 173
8.2.1 設計遍歷 174
8.2.2 開發遍歷代碼 176
8.3 分頁和圖數據庫 180
8.3.1 調用range()前為輸入排序的重要性 181
8.3.2 排序是昂貴的操作 182
8.4 推薦評分最高的餐廳 184
8.4.1 設計遍歷 184
8.4.2 開發遍歷代碼 186
8.5 編寫最後的推薦引擎遍歷 194
8.5.1 設計遍歷 196
8.5.2 添加遍歷到應用程序中 198
8.6 小結 199

第9章 子圖 200
9.1 使用子圖 201
9.1.1 提取子圖 201
9.1.2 遍歷子圖 206
9.2 針對個性化用例構建子圖 208
9.3 構建遍歷 213
9.3.1 反轉遍歷方向 214
9.3.2 計算子圖各自的結果 215
9.4 連接服務器的子圖 217
9.4.1 使用TinkerPop的Client連接集群 217
9.4.2 將遍歷添加到應用程序中 219
9.5 小結 219

第三部分 進階
第 10章 性能、陷阱和反模式 222
10.1 執行緩慢的遍歷 222
10.1.1 解釋遍歷 223
10.1.2 分析遍歷 224
10.1.3 索引 226
10.2 處理超級節點 227
10.2.1 和實例數據有關 227
10.2.2 和數據庫有關 228
10.2.3 什麽導致了超級節點 228
10.2.4 監控超級節點 229
10.2.5 有超級節點怎麽辦 230
10.3 應用程序的反模式 234
10.3.1 對非圖用例使用圖 234
10.3.2 臟數據 235
10.3.3 缺乏充分的測試 236
10.4 遍歷反模式 237
10.4.1 不使用參數化的遍歷 237
10.4.2 使用沒有標簽的篩選操作 241

第 11章 下一段旅程:圖分析、機器學習和資源 242
11.1 圖分析 242
11.1.1 尋路 243
11.1.2 中心性 245
11.1.3 群體檢測 247
11.1.4 圖和機器學習 250
11.1.5 其他資源 251
11.2 寫在最後 253
11.3 小結 253

附錄Apache TinkerPop概述和安裝 254