數據庫技術叢書 : MongoDB 遊記之輕鬆入門到進階
內容描述
MongoDB作為受歡迎的文檔存儲類型的NoSQL數據庫,越來越多的公司在使用它。本書以符合初學者的思維方式,系統全面、層層遞進地介紹了MongoDB數據庫,通過本書的學習,讀者能夠勝任實際工作環境中MongoDB的相關開發管理工作。
本書共分四個部分23章,第一部分講解了MongoDB的相關概念和原理以及其內部工作機制,可以讓讀者對MongoDB有一個全面的認識。第二部分和第三部分從應用角度,結合實例講解了MongoDB的安裝、配置、部署、開發、集群部署和管理等在實際工作中會用到的技能。第四部分是經驗部分,這部分是作者多年使用MongoDB後總結的技巧,對讀者在工作中使用MongoDB有極大的參考價值。
本書適合MongoDB的初學者,希望深入瞭解MongoDB安裝部署、開發優化的軟件工程師,希望深入瞭解MongoDB管理、集群擴展的數據運維管理員,以及任何對MongoDB相關技術感興趣的讀者。
海報:
目錄大綱
第一部分基礎與架構理論篇
第1章初識MongoDB 3
1.1 MongoDB簡介3
1.1.1 MongoDB是什麼3
1.1.2 MongoDB的歷史3
1.1.3 MongoDB的發展情況4
1.1.4哪些公司在用MongoDB 5
1.2 MongoDB的特點5
1.3 MongoDB應用場景6
1.3.1 MongoDB適用於以下場景6
1.3.2 MongoDB不適合的場景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集合的特點—無模式9
2.2.3集合命名9
2.2.4子集合10
2.3固定集合(Capped) 10
2.3. 1 Capped簡介10
2.3.2 Capped屬性特點10
2.3.3 Capped應用場景10
2.4文檔11
2.4.1文檔簡介11
2.4.2文檔的特點11
2.4.3文檔的鍵名命名規則11
2.5數據類型11
2.5.1基本數據類型11
2.5.2數字類型說明12
2.5.3日期類型說明14
2.5.4數組類型說明16
2.5.5內嵌文檔類型說明16
2.5.6 _id鍵和ObjectId對像說明17
2.5.7二進制類型說明——小文件存儲19
2.6索引簡介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簡介22
3.2 GridFS原理23
3.3 GridFS應用場景24
3.4 GridFS的局限性24
第4章MongoDB的分佈式運算模型MapReduce 25
4.1 MapReduce簡介25
4.2 MapReduce原理26
4.3 MapReduce應用場景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未來的引擎34
第6章了解MongoDB複製集35
6.1複製集簡介35
6.1.1主從復制和副本集35
6.1.2副本集的特點38
6.2副本集工作原理38
6.2.1 oplog(操作日誌) 38
6.2.2數據同步39
6.2.3複製狀態和本地數據庫39
6.2.4阻塞複製40
6.2.5心跳機制40
6.2.6選舉機制41
6.2.7數據回滾42
第7章了解MongoDB分片43
7.1分片的簡介43
7.2分片的工作原理44
7.2.1數據分流44
7.2.2 chunkSize和塊的拆分47
7.2.3平衡器和塊的遷移47
7.3分片的應用場景48
第二部分管理與開發入門篇
第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查看安裝環境53
8.2.2安裝步驟53
8.2.3目錄文件了解55
8.3 Linux系統安裝MongoDB 56
8.3.1虛擬機簡介56
8.3.2虛擬機安裝以及安裝Linux系統58
8.3.3安裝MongoDB 67
8.4 Mac OSX系統安裝MongoDB 73
8.4.1查看安裝環境73
8.4.2官網安裝包安裝73
8.4.3 Mac軟件倉庫安裝74
第9章啟動和停止MongoDB 75
9.1命令行方式啟動和參數75
9.1.1 Windows系統命令行啟動MongoDB 75
9.1.2 Linux系統命令行啟動MongoDB 76
9.1.3 Mac OS系統命令行啟動MongoDB 79
9.2啟動參數80
9.3配置文件方式啟動82
9.4啟動MongoDB客戶端84
9.5關閉MongoDB 84
9.5.1 Windows系統設置MongoDB關閉84
9.5.2 Linux系統設置MongoDB關閉86
9.5.3 Mac OS系統設置MongoDB關閉87
9.6設置MongoDB開機啟動88
9.6.1 Windows系統設置MongoDB開機啟動88
9.6.2 Linux系統設置MongoDB開機啟動89
9.6.3 Mac OS系統設置MongoDB開機啟動93
9.7修復未正常關閉的MongoDB 96
第10章基本命令97
10.1數據庫常用命令97
10.2集合99
10.3文檔101
10.4索引104
10.5基本查詢106
10.5.1 find簡介106
10.5.2游標107
10.6條件查詢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類型查詢$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特定類型查詢110
10.7.1 null 110
10.7.2正則查詢(模糊查詢) 110
10.7.3嵌套文檔112
10.7.4數組112
10.8高級查詢$where 115
10.8.1 JavaScript語言簡介115
10.8.2 JavaScript編程簡單例子115
10.8.3 JavaScript與$where結合使用115
10.9查詢輔助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數量查詢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工具簡介144
11.2 Robomongo基本操作144
11.2.1連接MongoDB 145
11.2.2創建刪除數據庫145
11.2.3插入文檔145
11.2.4查詢文檔146
11.2.5更新文檔146
11.2.6創建索引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章安全和訪問控制153
13.1綁定監聽ip 153
13.2設置監聽端口154
13.3用戶認證154
13.3.1啟用認證154
13.3.2添加用戶155
13.3.3用戶權限控制155
13.3.4用戶登錄157
13.3.5修改密碼157
13.3.6刪除用戶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驅動161
15.1 MongoDB驅動支持的開發語言161
15.2驅動使用流程163
第16章Java操作MongoDB 165
16.1安裝JDK 165
16.2 Eclipse安裝166
16.3加載驅動167
16.4查閱Java操作語法167
16.5測試操作168
16.5.1連接數據庫168
16.5.2插入數據169
16.5.3查詢數據170
16.5.4更新數據170
16.5.5刪除數據171
16.5.6聚合方法執行171
16.5.7操作GridFS 172
16.5.8運行示例173
第三部分管理與開發進階篇
第17章副本集部署177
17.1總體思路177
17.2 MongoDB環境準備178
17.3創建目錄181
17.4創建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創建3個Shard Server 201
18.2.1創建目錄201
18.2 .2以分片Shard Server模式啟動201
18.3啟動Config Server 202
18.3.1創建目錄202
18.3.2以分片Config Server模式啟動202
18.4啟動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創建3個複制集215
19.2.1創建目錄215
19.2.2以複製集模式啟動215
19.2.3初始化複製集216
19.3創建分片需要的Config Server與Route Process 217
19.3.1創建目錄217
19.3.2啟動Config Server、Route Process 218
19.4配置分片219
第20章springMVC+ maven+MongoDB框架搭建221
20.1 SpringMVC和Maven簡介221
20.2 Eclipse安裝Maven插件221
20.3新建Maven類型的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創建index.jsp和IndexController 232
20.4.6啟動Web項目233
第21章註冊登錄功能的實現235
21.1 UI框架Bootstrap 235
21.1.1簡介235
21.1.2應用Bootstrap 235
21.2新建用戶實體236
21.3註冊功能編寫237
21.3.1註冊頁面代碼237
21.3.2註冊後端代碼239
21.4登錄功能編寫241
21.4.1登錄頁面代碼241
21.4.2登錄後端代碼243
21.5運行測試244
21.6 Sping Data MongoDB操作246
21.6.1插入數據247
21.6.2查詢數據247
21.6.3更新數據249
21.6. 4刪除數據250
21.6.5聚合方法執行250
21.6.6操作GridFS 251
21.6.7運行示例253
第四部分管理與開發經驗篇
第22章MongoDB開發的經驗257
22.1盡量選取穩定新版本64位的MongoDB 257
22.2數據結構的設計257
22.3查詢的技巧259
22.4安全寫入數據262
22.5索引設置的技巧264
22.6不要用GridFS處理小的二進製文件268
22.7優化器profiler 269
第23章MongoDB管理的經驗271
23.1 MongoDB安全管理271
23.2不要將MongoDB與其他服務部署到同一台機器上273
23.3單機開啟日誌Journal,多機器使用副本集274
23.4生產環境不要信任repair恢復的數據275
23.5副本集管理276
23.6副本集回滾丟失的數據278
23.7分片的管理279
23.8 MongoDB鎖280
附錄A MongoDB地理位置距離單位285
附錄B相關網址287
作者介紹
作者:張澤泉
張澤泉,畢業於四川理工學院,數據工程師、中級職稱軟件設計師、CSDN博客專家。致力於數據採集、數據分析、數據分佈式運算架構等技術的應用與研究。多年一線MongoDB數據庫存儲、部署、開發經驗,以及將其應用於房地產數據分析、金融數據分析、基因數據分析等領域行業經驗。