MongoDB數(shù)據(jù)庫與傳統(tǒng)的關系數(shù)據(jù)庫不同,是一種面向文檔的、介于非關系數(shù)據(jù)庫和關系數(shù)據(jù)庫之間的數(shù)據(jù)庫!禡ongoDB基礎、運維與性能優(yōu)化》幫助讀者掌握MongoDB 8數(shù)據(jù)庫及其相關技術棧的開發(fā)知識,涵蓋MongoDB 8數(shù)據(jù)庫應用開發(fā)的要點!禡ongoDB基礎、運維與性能優(yōu)化》配套PPT課件。
《MongoDB基礎、運維與性能優(yōu)化》共分15章,內(nèi)容包括MongoDB數(shù)據(jù)庫基礎知識、系統(tǒng)安裝與環(huán)境搭建、可視化工具的使用、Shell工具的使用、基礎操作、聚合、數(shù)據(jù)模型、時間序列、事務、索引、副本集、分片、存儲、安全以及性能優(yōu)化。
《MongoDB基礎、運維與性能優(yōu)化》內(nèi)容翔實、代碼精練、重點突出、實例豐富,能夠幫助初學者快速掌握MongoDB數(shù)據(jù)庫運維和開發(fā)方法,對提高Web應用開發(fā)人員的技術水平也有非常積極的指導作用!禡ongoDB基礎、運維與性能優(yōu)化》也適用于高等院;蚋呗毟邔T盒W習MongoDB相關課程的學生。
(1)《MongoDB基礎、運維與性能優(yōu)化》內(nèi)容包括MongoDB數(shù)據(jù)庫基礎知識、系統(tǒng)安裝與環(huán)境搭建、可視化工具使用、Shell工具使用、基礎操作、聚合、數(shù)據(jù)模型、時間序列、事務、索引、副本集、分片、存儲、安全以及性能優(yōu)化。
(2)涵蓋MongoDB數(shù)據(jù)庫絕大部分的運維和開發(fā)要點,幫助讀者系統(tǒng)掌握MongoDB的全貌。
(3)全程知識點與應用示例相結合,幫助讀者快速學會MongoDB數(shù)據(jù)庫的運維技巧,并輕松應用到開發(fā)實踐中。
(4)全書知識點的講解按照類別進行合理劃分,方便讀者按需閱讀,并可作為查詢參考手冊。
(5)配套PPT課件、讀者微信交流群。
MongoDB數(shù)據(jù)庫是一個C 語言開發(fā)而成的、基于分布式文件存儲的數(shù)據(jù)庫,旨在為Web應用提供可擴展的高性能數(shù)據(jù)存儲解決方案。
嚴格來講,MongoDB是一個介于關系數(shù)據(jù)庫和非關系數(shù)據(jù)庫之間的產(chǎn)品,是非關系數(shù)據(jù)庫中功能最豐富、最像關系數(shù)據(jù)庫的NoSQL數(shù)據(jù)庫。MongoDB數(shù)據(jù)庫所支持的數(shù)據(jù)結構非常松散,類似于BSON格式(JSON的一種二進制表現(xiàn)形式),因此可以存儲比較復雜的數(shù)據(jù)類型。
MongoDB數(shù)據(jù)庫最大的特點是其支持的查詢語言非常強大,其語法有點類似于面向?qū)ο蟮牟樵冋Z言,幾乎可以實現(xiàn)類似關系數(shù)據(jù)庫單表查詢的絕大部分功能,而且還支持對數(shù)據(jù)建立索引。
MongoDB是一個高性能的數(shù)據(jù)庫
MongoDB數(shù)據(jù)庫采用內(nèi)存映射機制,能夠?qū)?shù)據(jù)直接存儲在內(nèi)存中,從而大大提高了讀寫性能。MongoDB數(shù)據(jù)庫還支持使用多線程進行讀寫操作,進一步提高了系統(tǒng)性能。MongoDB數(shù)據(jù)庫采用類似JSON的文檔數(shù)據(jù)模型,可以靈活地存儲和管理各種數(shù)據(jù)類型和結構。
MongoDB數(shù)據(jù)庫是一種分布式數(shù)據(jù)庫,可以方便地通過水平擴展來提高系統(tǒng)的存儲容量和性能,這種可擴展性使得MongoDB能夠應對大規(guī)模數(shù)據(jù)和高并發(fā)訪問的需求。同時,這種數(shù)據(jù)模型使得開發(fā)人員能夠更加方便地使用MongoDB來存儲和處理復雜的數(shù)據(jù)結構。
MongoDB數(shù)據(jù)庫提供了豐富的查詢語法和功能,可以支持各種復雜的查詢需求。通過使用豐富的查詢功能,開發(fā)人員可以輕松地實現(xiàn)數(shù)據(jù)的篩選、排序、分片等操作。MongoDB數(shù)據(jù)庫支持復制集架構,可以保證數(shù)據(jù)的可靠性和高可用性,復制集中的多個節(jié)點可以互相備份和協(xié)作,以確保數(shù)據(jù)的完整性和系統(tǒng)的穩(wěn)定性。
MongoDB數(shù)據(jù)庫提供了豐富的監(jiān)控和診斷工具,可以幫助開發(fā)人員及時發(fā)現(xiàn)和解決系統(tǒng)性能問題。這些工具包括實時監(jiān)控、性能分析、故障排除等,使得開發(fā)人員能夠更加方便地進行系統(tǒng)維護和管理。
近年來,MongoDB數(shù)據(jù)庫的發(fā)展勢頭非常迅猛,版本的更新迭代速度非常快,這得益于Web應用開發(fā)逐漸成為業(yè)界主流的開發(fā)方式。
本書是否適合你
本書涵蓋MongoDB 8數(shù)據(jù)庫絕大部分的運維和開發(fā)要點,全程做到將知識點與應用實例相結合,通過大量的實例幫助讀者快速掌握MongoDB 8數(shù)據(jù)庫的運維技巧,并將其應用到實踐開發(fā)之中。本書通過這種學以致用的方式來增強讀者的閱讀興趣,無論是基礎內(nèi)容還是提高內(nèi)容,相信讀者都能從中獲益。
本書特點
(1)本書從最簡單、最通用的MongoDB數(shù)據(jù)庫實例出發(fā),拋開枯燥的純理論知識介紹,通過實例講解的方式幫助讀者學習MongoDB數(shù)據(jù)庫運維與開發(fā)技巧。
(2)本書內(nèi)容涵蓋MongoDB數(shù)據(jù)庫運維和開發(fā)所涉及的大部分知識點,將這些內(nèi)容整合到一起可以系統(tǒng)地掌握MongoDB數(shù)據(jù)庫的全貌。
(3)本書對于實例中的知識難點做出詳細的分析,能夠幫助讀者有針對性地提高MongoDB數(shù)據(jù)庫的運維和開發(fā)技巧,并且通過多個實際的項目應用,盡量幫助讀者掌握MongoDB數(shù)據(jù)庫運維和開發(fā)涉及的要點。
(4)本書在MongoDB數(shù)據(jù)庫及其相關知識點上按照類別進行了合理的劃分,所有代碼實例都是獨立的,讀者可以從頭開始閱讀,也可以從中間開始閱讀,不會影響學習效果。
(5)本書代碼遵循重構原理,避免代碼污染,真心希望讀者能寫出優(yōu)秀的、簡潔的、可維護的代碼。
配套資源下載
本書配套PPT課件,讀者需要使用微信掃描下面的二維碼獲取。如果在閱讀過程中發(fā)現(xiàn)問題或有任何建議,請聯(lián)系下載資源中提供的相關電子郵箱或微信。
本書讀者
?MongoDB數(shù)據(jù)庫初學者
?NoSQL數(shù)據(jù)庫初學者
?Web框架應用開發(fā)人員
?具有一定基礎的全棧應用開發(fā)人員
?網(wǎng)站建設與網(wǎng)頁設計開發(fā)人員
?高等院校或高職高專院校的學生
著 者
2025年1月
王金柱,擁有10多年豐富的IT從業(yè)經(jīng)歷,對JavaScript、Vue.js、Node.js、React.js等Web前端開發(fā)有著獨到的經(jīng)驗,精通Python、Java等編程語言以及MySQL、NoSQL數(shù)據(jù)庫。曾從事過多家大型央企與上市公司的企業(yè)級Web應用系統(tǒng)開發(fā)工作。創(chuàng)作過多本前端、后端開發(fā)類的圖書,部分包括《MongoDB基礎、運維與性能優(yōu)化》《Vue.js Node.js全棧開發(fā)實戰(zhàn)(第2版)》《Django 5企業(yè)級Web應用開發(fā)實戰(zhàn)(視頻教學版)》《HTML5移動網(wǎng)站與App開發(fā)實戰(zhàn)》《Vue.js Node.js全棧開發(fā)實戰(zhàn)》《Netty實戰(zhàn)》《React.js 16從入門到實戰(zhàn)》。
第1章 MongoDB簡介 1
1.1 MongoDB概述 1
1.2 MongoDB的發(fā)展歷史 4
1.3 MongoDB的優(yōu)缺點 8
1.3.1 MongoDB的優(yōu)點 8
1.3.2 MongoDB的缺點 9
1.4 常用概念 10
1.5 數(shù)據(jù)類型 11
1.6 本章小結 12
第2章 MongoDB的安裝 13
2.1 在Windows系統(tǒng)上安裝MongoDB 13
2.1.1 安裝MongoDB 13
2.1.2 配置環(huán)境變量 20
2.1.3 其他安裝形式 21
2.1.4 常見問題和注意事項 21
2.2 在Linux系統(tǒng)上安裝MongoDB 22
2.2.1 使用yum方式安裝MongoDB 22
2.2.2 卸載MongoDB 25
2.2.3 使用其他方式安裝MongoDB 26
2.2.4 常見錯誤和注意事項 27
2.3 本章小結 27
第3章 MongoDB可視化管理工具 28
3.1 MongoDB Compass 28
3.1.1 MongoDB Compass的特點 28
3.1.2 MongoDB Compass的安裝與更新 29
3.1.3 MongoDB Compass的使用 30
3.1.4 注意事項 33
3.2 Navicat Premium 33
3.2.1 Navicat Premium的功能特點 34
3.2.2 Navicat Premium的安裝 35
3.2.3 Navicat Premium的使用 37
3.3 NoSQLBooster for MongoDB 40
3.3.1 NoSQLBooster for MongoDB的功能特點及使用場景 40
3.3.2 NoSQLBooster for MongoDB的安裝 41
3.3.3 NoSQLBooster for MongoDB的使用 42
3.4 本章小結 48
第4章 MongoDB Shell(mongosh) 49
4.1 MongoDB Shell的安裝 49
4.1.1 在Windows系統(tǒng)上安裝MongoDB Shell 50
4.1.2 在Linux系統(tǒng)上安裝MongoDB Shell 52
4.2 MongoDB Shell的配置 53
4.2.1 使用命令編輯器 53
4.2.2 配置設置 54
4.2.3 自定義mongosh提示 56
4.2.4 配置遠程數(shù)據(jù)搜集 58
4.3 MongoDB Shell的運行命令 58
4.4 使用MongoDB Shell進行簡單操作 59
4.4.1 新增 60
4.4.2 查詢 61
4.4.3 修改 63
4.4.4 刪除 66
4.5 客戶端字段級加密 67
4.6 腳本 69
4.6.1 運行JavaScript腳本 69
4.6.2 運行配置文件中的代碼 71
4.7 本章小結 73
第5章 數(shù)據(jù)庫操作 74
5.1 基礎操作 74
5.1.1 操作數(shù)據(jù)庫 74
5.1.2 操作集合或視圖 78
5.1.3 操作文檔 86
5.2 文本搜索 86
5.3 地理空間查詢 88
5.3.1 GeoJSON對象 88
5.3.2 傳統(tǒng)坐標對 89
5.3.3 2dsphere索引 89
5.3.4 2d索引 95
5.4 常用的操作符 97
5.4.1 查詢和投影操作符 97
5.4.2 更新操作符 100
5.4.3 聚合管道操作符 102
5.4.4 查詢修飾符 103
5.5 本章小結 104
第6章 聚合 105
6.1 聚合方法 105
6.2 聚合管道 106
6.2.1 管道和階段 107
6.2.2 管道操作符 107
6.2.3 管道表達式與表達式操作符 108
6.2.4 聚合操作 117
6.3 本章小結 124
第7章 數(shù)據(jù)模型 125
7.1 數(shù)據(jù)建模介紹 125
7.2 架構設計流程 126
7.2.1 確定工作負載 126
7.2.2 映射模式關系 127
7.2.3 應用設計模式 128
7.3 模型設計模式 130
7.3.1 分組數(shù)據(jù) 130
7.3.2 文檔和模式版本控制 136
7.4 數(shù)據(jù)一致性 143
7.4.1 用例描述 143
7.4.2 強制執(zhí)行事務的數(shù)據(jù)一致性 144
7.4.3 通過嵌入實現(xiàn)數(shù)據(jù)一致性 146
7.5 模式驗證 148
7.5.1 模式驗證使用場景 148
7.5.2 指定JSON schema驗證 149
7.5.3 指定允許的字段值 151
7.5.4 使用查詢運算符指定驗證 152
7.5.5 指定現(xiàn)有文檔的驗證級別 153
7.5.5 指定現(xiàn)有文檔的驗證級別 156
7.5.6 選擇如何處理無效文檔 159
7.6 本章小結 161
第8章 時間序列 162
8.1 時間序列介紹 162
8.2 創(chuàng)建和查詢時間序列集合 163
8.2.1 創(chuàng)建時間序列集合 163
8.2.2 在時間序列集合中插入測量值 164
8.2.3 查詢時間序列集合 165
8.2.4 在時間序列集合上運行聚合 165
8.3 列出數(shù)據(jù)庫中的時間序列集合 166
8.4 設置時間序列集合的自動刪除 167
8.5 設置時間序列數(shù)據(jù)的粒度 168
8.6 向時間序列集合添加從節(jié)點索引 170
8.6.1 創(chuàng)建二級索引 170
8.6.2 使用二級索引提高排序性能 171
8.6.3 時間序列集合的最新數(shù)據(jù)點查詢 172
8.7 本章小結 173
第9章 事務 174
9.1 事務基礎原理 174
9.2 驅(qū)動程序API 176
9.2.1 回調(diào)API 176
9.2.2 核心API 177
9.2.3 事務錯誤處理 178
9.3 事務與操作 180
9.3.1 事務操作基礎 180
9.3.2 在事務中創(chuàng)建集合和索引 180
9.3.3 計數(shù)、限制性與去重操作 181
9.4 讀取偏好與讀寫關注 181
9.4.1 事務和讀取偏好 181
9.4.2 事務和讀關注 182
9.4.3 事務和寫關注 182
9.5 本章小結 183
第10章 索引 184
10.1 索引介紹 184
10.2 創(chuàng)建索引 185
10.3 指定索引名稱 186
10.4 刪除索引 187
10.5 單字段索引 188
10.6 對嵌入式文檔創(chuàng)建索引 189
10.7 復合索引 190
10.7.1 復合索引介紹 190
10.7.2 創(chuàng)建復合索引 191
10.7.3 復合索引排序順序 192
10.8 多鍵索引 193
10.8.1 多鍵索引介紹 193
10.8.2 在數(shù)組字段上創(chuàng)建索引 195
10.8.3 為數(shù)組中的嵌入字段創(chuàng)建索引 196
10.8.4 多鍵索引邊界 198
10.8.5 多鍵索引的復合邊界 199
10.9 通配符索引 203
10.9.1 通配符索引介紹 203
10.9.2 對單個字段創(chuàng)建通配符索引 204
10.9.3 在通配符索引中包含或排除字段 205
10.9.4 對所有字段創(chuàng)建通配符索引 207
10.10 本章小結 209
第11章 副本集 210
11.1 副本集介紹 210
11.2 異步復制 212
11.3 自動故障轉(zhuǎn)移 212
11.4 讀取操作 213
11.4.1 讀取偏好 213
11.4.2 數(shù)據(jù)可見性 214
11.4.3 鏡像讀 214
11.5 操作日志 215
11.5.1 操作日志基礎 215
11.5.2 操作日志大小 215
11.5.3 最短操作日志保留期 216
11.5.4 可能需要更大操作日志的工作負載 216
11.5.5 操作日志狀態(tài) 217
11.6 本章小結 217
第12章 分片 218
12.1 分片基礎 218
12.1.1 分片介紹 218
12.1.2 分片鍵介紹 219
12.1.3 分片的優(yōu)點 219
12.2 分片集群 220
12.2.1 分片集群的組成 220
12.2.2 生產(chǎn)配置 220
12.2.3 開發(fā)配置 221
12.3 分片鍵的應用 222
12.3.1 分片鍵索引 222
12.3.2 將集合分片 223
12.3.3 選擇分片鍵 223
12.3.4 更改分片鍵 226
12.3.5 對集合重新分片 226
12.4 本章小結 229
第13章 存儲 230
13.1 存儲介紹 230
13.2 WiredTiger存儲引擎 231
13.2.1 WiredTiger存儲引擎介紹 231
13.2.2 事務(讀寫)并發(fā) 231
13.2.3 文檔級并發(fā)性 231
13.2.4 快照和檢查點 232
13.2.5 日志與壓縮 232
13.2.6 內(nèi)存使用 233
13.3 日志 233
13.3.1 日志和WiredTiger存儲引擎 233
13.3.2 日志記錄進程 234
13.3.3 Journal Files 234
13.3.4 日志和內(nèi)存存儲引擎 235
13.4 本章小結 235
第14章 安全性 236
14.1 安全性介紹 236
14.2 基于SCRAM的身份驗證 237
14.2.1 SCRAM機制 237
14.2.2 使用SCRAM對客戶端進行身份驗證 238
14.3 基于x.509的身份驗證 240
14.3.1 x.509機制 240
14.3.2 使用x.509對客戶端進行身份驗證 240
14.4 加密 242
14.4.1 加密方法 242
14.4.2 選擇正在使用的加密方法 242
14.4.3 靜態(tài)加密 243
14.4.4 TLS/SSL 244
14.5 本章小結 244
第15章 性能優(yōu)化 245
15.1 性能優(yōu)化概述 245
15.2 索引優(yōu)化 246
15.3 查詢優(yōu)化 247
15.4 資源管理優(yōu)化 248
15.5 本章小結 248