全面講解MongoDB的相關(guān)知識,使讀者對MongoDB有全面的認識
以*直接、*細致的方式指導讀者輕松掌握MongoDB的安裝、部署與使用
以實(shí)際工作框架為例子進(jìn)行講解,使讀者真正能勝任MongoDB的開(kāi)發(fā)管理工作
由淺入深,層層遞進(jìn),路線(xiàn)清晰
MongoDB作為*受歡迎的文檔存儲類(lèi)型的NoSQL數據庫,越來(lái)越多的公司在使用它。本書(shū)以符合初學(xué)者的思維方式,系統全面、層層遞進(jìn)地介紹了MongoDB數據庫,通過(guò)本書(shū)的學(xué)習,讀者能夠勝任實(shí)際工作環(huán)境中MongoDB的相關(guān)開(kāi)發(fā)管理工作。
本書(shū)共分四個(gè)部分23章,第一部分講解了MongoDB的相關(guān)概念和原理以及其內部工作機制,可以讓讀者對MongoDB有一個(gè)全面的認識。第二部分和第三部分從應用角度,結合實(shí)例講解了MongoDB的安裝、配置、部署、開(kāi)發(fā)、集群部署和管理等在實(shí)際工作中會(huì )用到的技能。第四部分是經(jīng)驗部分,這部分是作者多年使用MongoDB后總結的技巧,對讀者在工作中使用MongoDB有極大的參考價(jià)值。
本書(shū)適合MongoDB的初學(xué)者,希望深入了解MongoDB安裝部署、開(kāi)發(fā)優(yōu)化的軟件工程師,希望深入了解MongoDB管理、集群擴展的數據運維管理員,以及任何對MongoDB相關(guān)技術(shù)感興趣的讀者。
張澤泉,畢業(yè)于四川理工學(xué)院,數據工程師、中級職稱(chēng)軟件設計師、CSDN博客專(zhuān)家。致力于數據采集、數據分析、數據分布式運算架構等技術(shù)的應用與研究。多年一線(xiàn)MongoDB數據庫存儲、部署、開(kāi)發(fā)經(jīng)驗,以及將其應用于房地產(chǎn)數據分析、金融數據分析、基因數據分析等領(lǐng)域行業(yè)經(jīng)驗。
第一部分 基礎與架構理論篇
第1章 初識MongoDB 3
1.1 MongoDB簡(jiǎn)介 3
1.1.1 MongoDB是什么 3
1.1.2 MongoDB的歷史 3
1.1.3 MongoDB的發(fā)展情況 4
1.1.4 哪些公司在用MongoDB 5
1.2 MongoDB的特點(diǎn) 5
1.3 MongoDB應用場(chǎng)景 6
1.3.1 MongoDB適用于以下場(chǎng)景 6
1.3.2 MongoDB不適合的場(chǎng)景 7
第2章 MongoDB的結構 8
2.1 數據庫 8
2.1.1 數據庫的層次 8
2.1.2 數據的命名 8
2.1.3 自帶數據庫 9
2.2 普通集合 9
2.2.1 集合是什么 9
2.2.2 集合的特點(diǎn)—無(wú)模式 9
2.2.3 集合命名 9
2.2.4 子集合 10
2.3 固定集合(Capped) 10
2.3.1 Capped簡(jiǎn)介 10
2.3.2 Capped屬性特點(diǎn) 10
2.3.3 Capped應用場(chǎng)景 10
2.4 文檔 11
2.4.1 文檔簡(jiǎn)介 11
2.4.2 文檔的特點(diǎn) 11
2.4.3 文檔的鍵名命名規則 11
2.5 數據類(lèi)型 11
2.5.1 基本數據類(lèi)型 11
2.5.2 數字類(lèi)型說(shuō)明 12
2.5.3 日期類(lèi)型說(shuō)明 14
2.5.4 數組類(lèi)型說(shuō)明 16
2.5.5 內嵌文檔類(lèi)型說(shuō)明 16
2.5.6 _id鍵和ObjectId對象說(shuō)明 17
2.5.7 二進(jìn)制類(lèi)型說(shuō)明——小文件存儲 19
2.6 索引簡(jiǎn)介 19
2.6.1 什么是索引 19
2.6.2 索引的作用 20
2.6.3 普通索引 20
2.6.4 唯一索引 20
2.6.5 地理空間索引 21
第3章 MongoDB的大文件存儲規范GridFs 22
3.1 GridFS簡(jiǎn)介 22
3.2 GridFS原理 23
3.3 GridFS應用場(chǎng)景 24
3.4 GridFS的局限性 24
第4章 MongoDB的分布式運算模型MapReduce 25
4.1 MapReduce簡(jiǎn)介 25
4.2 MapReduce原理 26
4.3 MapReduce應用場(chǎng)景 28
第5章 MongoDB存儲原理 29
5.1 存取工作流程 29
5.2 存儲引擎 30
5.2.1 MMAP引擎 31
5.2.2 MMAPv1引擎 31
5.2.3 WiredTiger引擎 32
5.2.4 In-Memory 33
5.2.5 引擎的選擇 34
5.2.6 未來(lái)的引擎 34
第6章 了解MongoDB復制集 35
6.1 復制集簡(jiǎn)介 35
6.1.1 主從復制和副本集 35
6.1.2 副本集的特點(diǎn) 38
6.2 副本集工作原理 38
6.2.1 oplog(操作日志) 38
6.2.2 數據同步 39
6.2.3 復制狀態(tài)和本地數據庫 39
6.2.4 阻塞復制 40
6.2.5 心跳機制 40
6.2.6 選舉機制 41
6.2.7 數據回滾 42
第7章 了解MongoDB分片 43
7.1 分片的簡(jiǎn)介 43
7.2 分片的工作原理 44
7.2.1 數據分流 44
7.2.2 chunkSize和塊的拆分 47
7.2.3 平衡器和塊的遷移 47
7.3 分片的應用場(chǎng)景 48
第二部分 管理與開(kāi)發(fā)入門(mén)篇
第8章 安裝MongoDB 51
8.1 版本和平臺的選擇 51
8.1.1 版本的選擇 51
8.1.2 平臺的選擇 52
8.1.3 32位和64位 52
8.2 Windows系統安裝MongoDB 53
8.2.1 查看安裝環(huán)境 53
8.2.2 安裝步驟 53
8.2.3 目錄文件了解 55
8.3 Linux系統安裝MongoDB 56
8.3.1 虛擬機簡(jiǎn)介 56
8.3.2 虛擬機安裝以及安裝Linux系統 58
8.3.3 安裝MongoDB 67
8.4 Mac OSX系統安裝MongoDB 73
8.4.1 查看安裝環(huán)境 73
8.4.2 官網(wǎng)安裝包安裝 73
8.4.3 Mac軟件倉庫安裝 74
第9章 啟動(dòng)和停止MongoDB 75
9.1 命令行方式啟動(dòng)和參數 75
9.1.1 Windows系統命令行啟動(dòng)MongoDB 75
9.1.2 Linux系統命令行啟動(dòng)MongoDB 76
9.1.3 Mac OS 系統命令行啟動(dòng)MongoDB 79
9.2 啟動(dòng)參數 80
9.3 配置文件方式啟動(dòng) 82
9.4 啟動(dòng)MongoDB客戶(hù)端 84
9.5 關(guān)閉MongoDB 84
9.5.1 Windows系統設置MongoDB關(guān)閉 84
9.5.2 Linux系統設置MongoDB關(guān)閉 86
9.5.3 Mac OS系統設置MongoDB關(guān)閉 87
9.6 設置MongoDB開(kāi)機啟動(dòng) 88
9.6.1 Windows系統設置MongoDB開(kāi)機啟動(dòng) 88
9.6.2 Linux系統設置MongoDB開(kāi)機啟動(dòng) 89
9.6.3 Mac OS系統設置MongoDB開(kāi)機啟動(dòng) 93
9.7 修復未正常關(guān)閉的MongoDB 96
第10章 基本命令 97
10.1 數據庫常用命令 97
10.2 集合 99
10.3 文檔 101
10.4 索引 104
10.5 基本查詢(xún) 106
10.5.1 find簡(jiǎn)介 106
10.5.2 游標 107
10.6 條件查詢(xún) 108
10.6.1 與操作 108
10.6.2 或操作$or 108
10.6.3 大于$gt 108
10.6.4 小于$lt 108
10.6.5 大于等于$gte 108
10.6.6 小于等于$lte 108
10.6.7 類(lèi)型查詢(xún)$type 108
10.6.8 是否存在$exists 109
10.6.9 取模$mod 109
10.6.10 不等于$ne 109
10.6.11 包含$in 110
10.6.12 不包含$nin 110
10.6.13 $not: 反匹配 110
10.7 特定類(lèi)型查詢(xún) 110
10.7.1 null 110
10.7.2 正則查詢(xún)(模糊查詢(xún)) 110
10.7.3 嵌套文檔 112
10.7.4 數組 112
10.8 高級查詢(xún)$where 115
10.8.1 JavaScript語(yǔ)言簡(jiǎn)介 115
10.8.2 JavaScript編程簡(jiǎn)單例子 115
10.8.3 JavaScript與$where結合使用 115
10.9 查詢(xún)輔助 116
10.9.1 條數限制limit 116
10.9.2 起始位置skip 116
10.9.3 排序sort 116
10.10 修改器 116
10.10.1 $set 116
10.10.2 $unset 117
10.10.3 $inc 117
10.10.4 $push 117
10.10.5 $pushAll 117
10.10.6 $pull 117
10.10.7 $addToSet 118
10.10.8 $pop 118
10.10.9 $rename 118
10.10.10 $bit 118
10.11 原生聚合運算 119
10.11.1 數量查詢(xún)count 119
10.11.2 不同值distinct 119
10.11.3 分組group 120
10.11.4 靈活統計MapReduce 123
10.12 聚合管道 127
10.12.1 aggregate用法 127
10.12.2 管道操作器 128
10.12.3 管道表達式 139
10.12.4 復合使用示例 141
第11章 GUI工具:數據庫外部管理工具 144
11.1 MongoDB的GUI工具簡(jiǎn)介 144
11.2 Robomongo基本操作 144
11.2.1 連接MongoDB 145
11.2.2 創(chuàng )建刪除數據庫 145
11.2.3 插入文檔 145
11.2.4 查詢(xún)文檔 146
11.2.5 更新文檔 146
11.2.6 創(chuàng )建索引 147
11.2.7 執行JavaScript 148
第12章 監控 149
12.1 原生管理接口監控 149
12.2 使用serverStatus在Shell監控 150
12.3 使用mongostat在Shell監控 151
12.4 使用第三方插件監控 152
第13章 安全和訪(fǎng)問(wèn)控制 153
13.1 綁定監聽(tīng)ip 153
13.2 設置監聽(tīng)端口 154
13.3 用戶(hù)認證 154
13.3.1 啟用認證 154
13.3.2 添加用戶(hù) 155
13.3.3 用戶(hù)權限控制 155
13.3.4 用戶(hù)登錄 157
13.3.5 修改密碼 157
13.3.6 刪除用戶(hù) 157
第14章 數據管理 158
14.1 數據備份mongodump 158
14.2 數據恢復mongorestore 159
14.3 數據導出mongoexport 159
14.3.1 導出JSON格式 159
14.3.2 導出CSV格式 159
14.4 數據導入mongoimport 160
14.4.1 JSON格式導入 160
14.4.2 CSV格式導入 160
第15章 MongoDB驅動(dòng) 161
15.1 MongoDB驅動(dòng)支持的開(kāi)發(fā)語(yǔ)言 161
15.2 驅動(dòng)使用流程 163
第16章 Java操作MongoDB 165
16.1 安裝JDK 165
16.2 Eclipse安裝 166
16.3 加載驅動(dòng) 167
16.4 查閱Java操作語(yǔ)法 167
16.5 測試操作 168
16.5.1 連接數據庫 168
16.5.2 插入數據 169
16.5.3 查詢(xún)數據 170
16.5.4 更新數據 170
16.5.5 刪除數據 171
16.5.6 聚合方法執行 171
16.5.7 操作GridFS 172
16.5.8 運行示例 173
第三部分 管理與開(kāi)發(fā)進(jìn)階篇
第17章 副本集部署 177
17.1 總體思路 177
17.2 MongoDB環(huán)境準備 178
17.3 創(chuàng )建目錄 181
17.4 創(chuàng )建Key 182
17.5 初始化副本集 183
17.6 數據同步測試 190
17.7 故障切換測試 192
17.8 Java程序連接MongoDB副本集測試 194
17.9 主從復制部署 196
第18章 分片部署 198
18.1 總體思路 198
18.2 創(chuàng )建3個(gè)Shard Server 201
18.2.1 創(chuàng )建目錄 201
18.2.2 以分片Shard Server模式啟動(dòng) 201
18.3 啟動(dòng)Config Server 202
18.3.1 創(chuàng )建目錄 202
18.3.2 以分片Config Server模式啟動(dòng) 202
18.4 啟動(dòng)Route Process 203
18.5 配置sharding 204
18.6 對數據庫mytest啟用分片 205
18.7 集合啟用分片 206
18.8 分片集群插入數據測試 208
18.9 分片的管理 209
18.9.1 移除Shard Server,回收數據 209
18.9.2 新增Shard Server 211
第19章 分片+副本集部署 212
19.1 總體思路 212
19.2 創(chuàng )建3個(gè)復制集 215
19.2.1 創(chuàng )建目錄 215
19.2.2 以復制集模式啟動(dòng) 215
19.2.3 初始化復制集 216
19.3 創(chuàng )建分片需要的Config Server與Route Process 217
19.3.1 創(chuàng )建目錄 217
19.3.2 啟動(dòng)Config Server、Route Process 218
19.4 配置分片 219
第20章 springMVC+maven+MongoDB框架搭建 221
20.1 SpringMVC和Maven簡(jiǎn)介 221
20.2 Eclipse安裝Maven插件 221
20.3 新建Maven類(lèi)型的Web項目 222
20.4 搭建SpringMVC+MongoDB框架 224
20.4.1 jar包引入 224
20.4.2 新建SpringMVC配置文件 228
20.4.3 新建MongoDB配置文件 230
20.4.4 配置web.xml 231
20.4.5 創(chuàng )建index.jsp和IndexController 232
20.4.6 啟動(dòng)Web項目 233
第21章 注冊登錄功能的實(shí)現 235
21.1 UI框架Bootstrap 235
21.1.1 簡(jiǎn)介 235
21.1.2 應用Bootstrap 235
21.2 新建用戶(hù)實(shí)體 236
21.3 注冊功能編寫(xiě) 237
21.3.1 注冊頁(yè)面代碼 237
21.3.2 注冊后端代碼 239
21.4 登錄功能編寫(xiě) 241
21.4.1 登錄頁(yè)面代碼 241
21.4.2 登錄后端代碼 243
21.5 運行測試 244
21.6 Sping Data MongoDB操作 246
21.6.1 插入數據 247
21.6.2 查詢(xún)數據 247
21.6.3 更新數據 249
21.6.4 刪除數據 250
21.6.5 聚合方法執行 250
21.6.6 操作GridFS 251
21.6.7 運行示例 253
第四部分 管理與開(kāi)發(fā)經(jīng)驗篇
第22章 MongoDB開(kāi)發(fā)的經(jīng)驗 257
22.1 盡量選取穩定新版本64位的MongoDB 257
22.2 數據結構的設計 257
22.3 查詢(xún)的技巧 259
22.4 安全寫(xiě)入數據 262
22.5 索引設置的技巧 264
22.6 不要用GridFS處理小的二進(jìn)制文件 268
22.7 優(yōu)化器profiler 269
第23章 MongoDB管理的經(jīng)驗 271
23.1 MongoDB安全管理 271
23.2 不要將MongoDB與其他服務(wù)部署到同一臺機器上 273
23.3 單機開(kāi)啟日志Journal,多機器使用副本集 274
23.4 生產(chǎn)環(huán)境不要信任repair恢復的數據 275
23.5 副本集管理 276
23.6 副本集回滾丟失的數據 278
23.7 分片的管理 279
23.8 MongoDB鎖 280
附錄 A MongoDB地理位置距離單位 285
附錄 B 相關(guān)網(wǎng)址 287