譯者序
序 言
前 言
作者簡介
第一部分 Neo4j概述
第1章 Neo4j數據庫的一個應用案例 3
1.1 為什麼要有Neo4j 4
1.2 關係數據庫中的圖形數據 4
1.3 Neo4j中的圖形數據 8
1.4 大數據下的SQL聯接操作與Neo4j圖形遍曆的對比 10
1.5 圖形 13
1.6 Neo4j在NoSQL領域的地位 13
1.6.1 主鍵值存儲 14
1.6.2 列族存儲 14
1.6.3 麵嚮文檔的數據庫 15
1.6.4 圖形數據庫 15
1.6.5 與NoSQL類數據庫的比較 15
1.7 Neo4j具有與ACID兼容的數據格式 16
1.8 本章小結 17
第2章 Neo4j的數據模型 18
2.1 Neo4j中數據模型的類型 18
2.1.1 圖錶建模的一個簡單實例 19
2.1.2 圖錶建模的一個復雜實例 20
2.2 領域建模 22
2.3 更多實例 26
2.3.1 地鐵車站實例 26
2.3.2 樂隊成員實例 27
2.4 本章小結 29
第3章 Neo4j開發入門 30
3.1 圖形數據結構建模 30
3.2 使用Neo4j API 34
3.2.1 創建節點 34
3.2.2 創建關係 36
3.2.3 為節點添加屬性 38
3.2.4 節點類型策略 40
3.2.5 為關係添加屬性 41
3.3 節點標簽 43
3.4 本章小結 46
第4章 強大的圖形遍曆功能 47
4.1 使用Neo4j核心Java API進行遍曆 47
4.1.1 尋找起始節點 48
4.1.2 遍曆直接關係 49
4.1.3 遍曆深度為2的關係 51
4.1.4 內存使用注意事項 53
4.2 使用Neo4j的遍曆API進行遍曆 55
4.2.1 使用Neo4j的內置遍曆結構 55
4.2.2 實現一個自定義評估函數 56
4.3 本章小結 59
第5章 數據索引 60
5.1 創建索引項 60
5.2 通過郵箱地址查找用戶 62
5.3 對多個匹配結果的處理 64
5.4 對索引過的數據進行修改的處理 65
5.5 自動索引 66
5.5.1 模式索引 66
5.5.2 自動索引 69
5.6 索引的成本/效益權衡 70
5.6.1 索引查詢的性能優勢 71
5.6.2 當更新和插入數據時索引對性能的影響 72
5.6.3 索引的存儲 73
5.7 本章小結 73
第二部分 Neo4j應用開發
第6章 Neo4j的查詢語言Cypher 77
6.1 Cypher簡介 77
6.1.1 Cypher入門 78
6.1.2 執行Cypher查詢 79
6.2 Cypher的基本句法 85
6.2.1 模式匹配 85
6.2.2 查找起始節點 89
6.2.3 過濾數據 92
6.2.4 獲得結果 93
6.3 用Cypher更新圖形數據 96
6.3.1 創建新圖形實體 97
6.3.2 刪除數據 99
6.3.3 更新節點和關係屬性 99
6.4 高級Cypher 100
6.4.1 聚閤 100
6.4.2 函數 101
6.4.3 with語句的管道功能 103
6.4.4 Cypher的兼容性 104
6.5 本章小結 104
第7章 事務 105
7.1 事務的基礎知識 105
7.1.1 添加事務 107
7.1.2 打好基礎,循序漸進 108
7.2 事務的高級功能 109
7.2.1 事務的語義 109
7.2.2 事務中的讀取與顯式讀鎖 111
7.2.3 事務中的寫入與顯式寫鎖 112
7.2.4 無效鎖的危害 114
7.3 與其他事務管理係統的集成 114
7.4 事務事件 116
7.5 本章小結 117
第8章 深度遍曆 118
8.1 遍曆的順序 118
8.1.1 深度優先 119
8.1.2 廣度優先 121
8.1.3 深度優先與廣度優先順序的比較 122
8.2 擴展關係 124
8.2.1 標準擴展器 124
8.2.2 用於擴展的順序關係 126
8.2.3 自定義擴展器 127
8.3 管理唯一性 130
8.3.1 NODE_GLOBAL唯一性 130
8.3.2 NODE_PATH唯一性 132
8.3.3 其他唯一性類型 133
8.4 雙嚮遍曆 134
8.5 本章小結 137
第9章 Spring Data Neo4j 138
9.1 SDN適閤做什麼 138
9.1.1 什麼是Spring以及Spring與SDN是怎樣關聯的 140
9.1.2 SDN適閤做什麼(及不適閤做什麼) 140
9.1.3 從哪裏獲得SDN 141
9.1.4 從哪裏獲得更多的信息 141
9.2 用SDN建模 141
9.2.1 原始POJO域建模 142
9.2.2 注釋域模型 144
9.2.3 建模節點實體 145
9.2.4 建模關係實體 148
9.2.5 建模節點實體之間的關係 150
9.3 訪問和持久化實體 152
9.3.1 支持Spring的配置 152
9.3.2 Neo4jTemplate類 153
9.3.3 資源庫 154
9.3.4 其他選項 157
9.4 對象圖形映射選項 158
9.4.1 簡單映射 158
9.4.2 基於AspectJ的高級映射 161
9.4.3 對象映射總結 164
9.5 執行查詢和遍曆 164
9.5.1 注釋查詢 164
9.5.2 動態派生查詢 166
9.5.3 遍曆 168
9.6 本章小結 168
第三部分 Neo4j應用實例
第10章 Neo4j的嵌入式模式與服務器模式 171
10.1 使用模式概述 171
10.2 嵌入式模式 173
10.2.1 核心Java集成 173
10.2.2 其他基於JVM的集成 176
10.3 服務器模式 177
10.3.1 Neo4j服務器概述 178
10.3.2 使用細粒度Neo4j服務器模式的REST API 179
10.3.3 使用Cypher Neo4j服務器模式REST API端點 181
10.3.4 使用遠程客戶端庫幫助訪問Neo4j服務器 182
10.3.5 服務器插件和非托管擴展 184
10.4 權衡選項 184
10.4.1 對架構的考慮 185
10.4.2 對性能的考慮 187
10.4.3 其他需要考慮的事項 190
10.5 充分利用服務器模式 190
10.5.1 避免細粒度操作 191
10.5.2 使用Cypher 192
10.5.3 服務器插件 194
10.5.4 非托管擴展 196
10.5.5 流REST API 198
10.6 本章小結 199
第11章 Neo4j的架構與應用 200
11.1 高層Neo4j架構 200
11.1.1 設置場景 202
11.1.2 硬盤 202
11.1.3 存儲文件 203
11.1.4 Neo4j緩存 205
11.1.5 事務日誌及可恢復性 210
11.1.6 編程API 211
11.2 Neo4j的高可用性 212
11.2.1 Neo4j集群概述 213
11.2.2 設置Neo4j集群 216
11.2.3 復製——讀和寫的策略 218
11.2.4 緩存分區 222
11.2.5 HA小結 224
11.3 備份 225
11.3.1 離綫備份 225
11.3.2 在綫備份 227
11.3.3 從備份中還原數據 229
11.4 本書可能沒有涵蓋但你可能會關注的問題 229
11.4.1 安全 229
11.4.2 監控 229
11.5 本章小結 230
11.6 最後的設想 230
附錄A 安裝Neo4j服務器 231
附錄B 設置和運行示例程序 236
附錄C 設置使用SDN的項目環境 241
附錄D 獲得更多的幫助 247
· · · · · · (
收起)