MongoDB權威指南 第3版 MongoDB: The Definitive Guide: Powerful and Scalable Data Storage, 3/e

Shannon Bradshaw,Eoin Brazil,Kristina Chodorow

  • MongoDB權威指南 第3版-preview-1
MongoDB權威指南 第3版-preview-1

商品描述

與傳統的關系數據庫不同,MongoDB是一種面向文檔的數據庫。本書這一版共分為6個部分,涵蓋開發、管理以及部署等各個方面。這一版對TTL和聚合管道等新特性進行了講解,還增加了配置MongoDB的章節,涵蓋面向文檔的存儲方式及利用MongoDB的無模式數據模型處理文檔、集合和多個數據庫,以及監控、安全性和身份驗證、備份和修復、水平擴展MongoDB數據庫等多方面的內容。

作者簡介

香農.布拉德肖(Shannon Bradshaw)是MongoDB公司培訓部門副總裁,負責管理MongoDB專業認證項目提供的培訓產品。


約恩.布拉齊爾(Eoin Brazil)是MongoDB公司高級課程工程師,致力於開發與MongoDB相關的在線培訓產品。


克里斯蒂娜.霍多羅夫(Kristina Chodorow)是軟件工程師,曾深度參與MongoDB的內核開發工作。她領導了MongoDB副本集功能的開發並編寫了PHP和Perl的驅動程序。


【譯者介紹】
牟天壘,架構師,MongoDB官方認證雙證持有者,MongoDB官方中文社區核心成員,MongoDB生態工具Tapdata創始工程師,致力於實時數據服務理念的實現。


王明輝,本科就讀於同濟大學,從事全棧開發多年,參與過數個創業項目,也對開源社區有所貢獻,現就職於微軟(亞洲)互聯網工程院。

目錄大綱

前言 xvii
第 一部分 MongoDB入門
第 1 章 MongoDB簡介 3
1.1 易於使用 3
1.2 易於擴展 3
1.3 功能豐富 4
1.4 性能卓越 5
1.5 設計理念 5
第 2 章 入門指南 6
2.1 文檔 6
2.2 集合 7
2.2.1 動態模式 7
2.2.2 命名 8
2.3 數據庫 8
2.4 啟動MongoDB 9
2.5 MongoDB shell介紹 10
2.5.1 運行shell 10
2.5.2 MongoDB客戶端 11
2.5.3 shell中的基本操作 12
2.6 數據類型 14
2.6.1 基本數據類型 14
2.6.2 日期 15
2.6.3 數組 16
2.6.4 內嵌文檔 16
2.6.5 ObjectId和_id 17
2.7 使用MongoDB shell 18
2.7.1 shell使用技巧 19
2.7.2 使用shell執行腳本 19
2.7.3 創建. mongorc. js文件 21
2.7.4 定制shell提示信息 22
2.7.5 編輯複雜變量 23
2.7.6 不便使用的集合名稱 23
第 3 章 創建、更新和刪除文檔 25
3.1 插入文檔 25
3.1.1 insertMany 25
3.1.2 插入校驗 28
3.1.3 插入 28
3.2 刪除文檔 28
3.3 更新文檔 30
3.3.1 文檔替換 30
3.3.2 使用更新運算符 31
3.3.3 upsert 40
3.3.4 更新多個文檔 42
3.3.5 返回被更新的文檔 42
第 4 章 查詢 45
4.1 find簡介 45
4.1.1 指定要返回的鍵 46
4.1.2 限制 46
4.2 查詢條件 47
4.2.1 查詢條件 47
4.2.2 OR查詢 47
4.2.3 $not 48
4.3 特定類型的查詢 48
4.3.1 null 49
4.3.2 正則表達式 49
4.3.3 查詢數組 50
4.3.4 查詢內嵌文檔 54
4.4 $where查詢 55
4.5 游標 56
4.5.1 limit、skip和sort 57
4.5.2 避免略過大量結果 58
4.5.3 游標生命週期 59
第二部分 設計應用程序
第 5 章 索引 63
5.1 索引簡介 63
5.1.1 創建索引 65
5.1.2 複合索引簡介 68
5.1.3 MongoDB如何選擇索引 71
5.1.4 使用複合索引 72
5.1.5 $運算符如何使用索引 88
5.1.6 索引對象和數組 97
5.1.7 索引基數 99
5.2 explain輸出 99
5.3 何時不使用索引 106
5.4 索引類型 107
5.4.1 唯一索引 107
5.4.2 部分索引 109
5.5 索引管理 110
5.5.1 標識索引 111
5.5.2 修改索引 111
第 6 章 特殊的索引和集合類型 112
6.1 地理空間索引 112
6.1.1 地理空間查詢的類型 113
6.1.2 使用地理空間索引 114
6.1.3 複合地理空間索引 120
6.1.4 2d索引 121
6.2 全文搜索索引 123
6.2.1 創建文本索引 123
6.2.2 文本查詢 124
6.2.3 優化全文本搜索 126
6.2.4 在其他語言中搜索 126
6.3 固定集合 127
6.3.1 創建固定集合 129
6.3.2 可追加游標 129
6.4 TTL索引 130
6.5 使用GridFS存儲文件 130
6.5.1 GridFS入門:mongofiles 131
6.5.2 在MongoDB驅動程序中使用GridFS 131
6.5.3 GridFS的底層機制 132
第 7 章 聚合框架 134
7.1 管道、階段和可調參數 134
7.2 階段入門:常見操作 136
7.3 表達式 140
7.4 $project 140
7.5 $unwind 145
7.6 數組表達式 151
7.7 累加器 155
7.8 分組簡介 57
7.8.1 分組階段中的_id字段 161
7.8.2 分組與投射 163
7.9 將聚合管道結果寫入集合中 166
第 8 章 事務 167
8.1 事務簡介 167
8.2 如何使用事務 168
8.3 對應用程序的事務限制進行調優 171
第 9 章 應用程序設計 173
9.1 模式設計注意事項 173
9.2 範式化與反範式化 176
9.2.1 數據表示的示例 176
9.2.2 基數 180
9.2.3 好友、粉絲以及其他麻煩事項 180
9.3 優化數據操作 182
9.4 數據庫和集合的設計 183
9.5 一致性管理 183
9.6 模式遷移 184
9.7 模式管理 185
9.8 不適合使用MongoDB的場景 185
第三部分 複製
第 10 章 創建副本集 189
10.1 複製簡介 189
10.2 建立副本集(一) 190
10.3 網絡注意事項 191
10.4 安全注意事項 191
10.5 建立副本集(二) 191
10.6 觀察副本集 194
10.7 更改副本集配置 199
10.8 如何設計副本集 201
10.9 成員配置選項 203
10.9.1 優先級 204
10.9.2 隱藏成員 204
10.9.3 選舉仲裁者 205
10.9.4 創建索引 206
第 11 章 副本集的組成 207
11.1 同步 207
11.1.1 初始化同步 209
11.1.2 複製 210
11.1.3 處理過時數據 210
11.2 心跳 210
11.3 選舉 212
11.4 回滾 212
第 12 章 從應用程序連接副本集 216
12.1 客戶端到副本集的連接行為 216
12.2 在寫入時等待複製 218
12.3 自定義復制保證規則 219
12.3.1 保證複製到每個數據中心的一台服務器上 219
12.3.2 保證寫操作被複製到大多數非隱藏節點 220
12.3.3 創建其他保證規則 221
12.4 將讀請求發送到從節點 221
12.4.1 一致性考慮 222
12.4.2 負載考慮 222
12.4.3 由從節點讀取數據的場景 223
第 13 章 管理 224
13.1 以單機模式啟動成員 224
13.2 副本集配置 225
13.2.1 創建副本集 225
13.2.2 更改副本集成員 225
13.2.3 創建比較大的副本集 226
13.2.4 強制重新配置 226
13.3 控製成員狀態 227
13.3.1 把主節點變為從節點 227
13.3.2 阻止選舉 227
13.4 監控複製 228
13.4.1 獲取狀態 228
13.4.2 可視化複製圖譜 231
13.4.3 複製循環 232
13.4.4 禁用複制鏈 232
13.4.5 計算延遲 233
13.4.6 調整oplog大小 234
13.4.7 創建索引 234
13.4.8 在預算有限的情況下進行複制 235
第四部分 分片
第 14 章 分片簡介 239
14.1 什麼是分片 239
14.2 理解集群組件 240
14.3 在單機集群上進行分片 241
第 15 章 配置分片 250
15.1 何時分片 250
15.2 啟動服務器 251
15.2.1 配置服務器 251
15.2.2 mongos進程 252
15.2.3 將副本集轉換為分片 252
15.2.4 增加集群容量 256
15.2.5 數據分片 256
15.3 MongoDB如何追踪集群數據 256
15.3.1 塊範圍 257
15.3.2 拆分塊 259
15.4 均衡器 261
15.5 排序規則 261
15.6 變更流 261
第 16 章 選擇片鍵 263
16.1 評估使用情況 263
16.2 描繪分發情況 264
16.2.1 升序片鍵 264
16.2.2 隨機分發的片鍵 266
16.2.3 基於位置的片鍵 267
16.3 片鍵策略 268
16.3.1 哈希片鍵 268
16.3.2 GridFS的哈希片鍵 270
16.3.3 消防水管策略 270
16.3.4 多熱點 271
16.4 片鍵規則和指導方針 273
16.4.1 片鍵的限制 273
16.4.2 片鍵的基數 273
16.5 控制數據分發 273
16.5.1 對多個數據庫和集合使用一個集群 273
16.5.2 手動分片 275
第 17 章 分片管理 276
17.1 查看當前狀態 276
17.1.1 使用sh. status()查看摘要信息 276
17.1.2 查看配置信息 278
17.2 跟踪網絡連接 283
17.2.1 獲取連接統計 284
17.2.2 限制連接數量 289
17.3 服務器管理 290
17.3.1 添加服務器 291
17.3.2 修改分片中的服務器 291
17.3.3 刪除分片 291
17.4 數據均衡 294
17.4.1 均衡器 294
17.4.2 修改塊的大小 295
17.4.3 移動塊 296
17.4.4 超大塊 298
17.4.5 刷新配置 300
第五部分 應用程序管理
第 18 章 了解應用程序的動態 303
18.1 查看當前操作 303
18.1.1 尋找有問題的操作 306
18.1.2 終止操作 306
18.1.3 假象 307
18.1.4 防止幻像操作 307
18.2 使用系統分析器 307
18.3 計算大小 310
18.3.1 文檔 310
18.3.2 集合 311
18.3.3 數據庫 315
18.4 使用mongotop和mongostat 316
第 19 章 MongoDB安全介紹 318
19.1 MongoDB的身份驗證和授權 318
19.1.1 身份驗證機制 318
19.1.2 授權 319
19.1.3 使用x. 509證書對成員和客戶端進行身份驗證 320
19.2 MongoDB的認證和傳輸層加密教程 323
19.2.1 建立CA 323
19.2.2 生成並簽名成員證書 327
19.2.3 生成並簽名客戶端證書 328
19.2.4 在不啟用身份驗證和授權的情況下啟動副本集 328
19.2.5 創建admin用戶 329
19.2.6 啟用身份驗證和授權並重新啟動副本集 330
第 20 章 持久性 332
20.1 使用日誌機制的成員級別持久性 332
20.2 使用寫關注的集群級別持久性 333
20.2.1 writeConcern的w和wtimeout選項 334
20.2.2 writeConcern的j(日誌)選項 334
20.3 使用讀關注的集群級別持久性 335
20.4 使用寫關注的事務持久性 335
20.5 MongoDB不能保證什麼 336
20.6 檢查數據損壞 336
第六部分 服務器端管理
第 21 章 在生產環境中設置MongoDB 341
21.1 從命令行啟動 341
21.2 停止MongoDB 345
21.3 安全性 346
21.3.1 數據加密 347
21.3.2 SSL連接 347
21.4 日誌 348
第 22 章 監控MongoDB 349
22.1 監控內存使用情況 349
22.1.1 計算機內存簡介 349
22.1.2 跟踪內存使用情況 350
22.1.3 跟踪缺頁錯誤 351
22.1.4 I/O 等待 352
22.2 計算工作集的大小 352
22.3 跟踪性能情況 354
22.4 跟踪剩餘空間 355
22.5 監控複製情況 356
第 23 章 備份 359
23.1 備份方法 359
23.2 對服務器進行備份 360
23.2.1 文件系統快照 360
23.2.2 複製數據文件 363
23.2.3 使用mongodump 364
23.3副本集的特殊注意事項 366
23.4 分片集群的特殊注意事項 366
23.4.1 備份和恢復整個集群 367
23.4.2 備份和恢復單個分片 367
第 24 章 部署MongoDB 368
24.1 系統設計 368
24.1.1 選擇存儲介質 368
24.1.2 推薦的RAID配置 369
24.1.3 CPU 370
24.1.4 操作系統 370
24.1.5 交換空間 370
21.1.6 文件系統 371
24.2 虛擬化 371
24.2.1 內存過度分配 371
24.2.2 神秘的內存 371
24.2.3 處理網絡磁盤的I/O 問題 372
24.2.4 使用非網絡磁盤 373
24.3 配置系統設置 373
24.3.1 關閉NUMA 373
24.3.2 設置預讀 375
24.3.3 禁用透明大內存頁(THP) 375
24.3.4 選擇磁盤調度算法 376
24.3.5 禁用訪問時間跟踪 376
24.3.6 修改限制 377
24.4 網絡配置 378
24.5 系統管理 379
24.5.1 時鐘同步 379
24.5.2 OOM killer 379
24.5.3 關閉定期任務 379
附錄A 安裝MongoDB 380
附錄B 深入MongoDB 384