MongoDB進階與實戰:微服務整合、性能最佳化、架構管理

MongoDB進階與實戰:微服務整合、性能最佳化、架構管理

《MongoDB進階與實戰:微服務整合、性能最佳化、架構管理》是電子工業出版社出版圖書,作者是唐卓章。結合實踐案例,以開發管理者的角度對MongoDB技術進行系統梳理

基本介紹

  • 中文名:MongoDB進階與實戰:微服務整合、性能最佳化、架構管理
  • 作者:唐卓章
  • 出版社:電子工業出版社
  • 出版時間:2021年4月
  • 頁數:508 頁
  • 定價:118 元
  • 開本:16 開
  • ISBN:9787121408274
內容簡介,圖書目錄,作者簡介,

內容簡介

圍繞如何用好MongoDB 這個複雜命題,利用大部分篇幅講述了MongoDB 在套用開發方面的各種進階技巧,同時也介紹了MongoDB 4.0 版本的事務特性及微服務相關的技術範例。

圖書目錄

第1部分 MongoDB入門
第1章 什麼是MongoDB 1
1.1 認識MongoDB 1
1.1.1 面向文檔設計 1
1.1.2 特性 3
1.1.3 優勢 4
1.1.4 需要克服的困難 6
1.2 類比SQL模型 7
1.2.1 數據結構 7
1.2.2 類SQL語句 8
第2章 體驗MongoDB 11
2.1 安裝MongoDB 11
2.1.1 Linux環境下的安裝 11
2.1.2 Windows環境下的安裝 15
2.2 使用mongo shell 19
2.3 插入文檔 22
2.4 查詢文檔 24
2.4.1 查詢全部數據 24
2.4.2 指定條件查詢 25
2.4.3 排序、分頁 25
2.4.4 使用投射 25
2.4.5 查詢限定符 26
2.5 更新文檔 27
2.5.1 update 命令 27
2.5.2 findAndModify命令 29
2.5.3 更新操作符 30
2.6 刪除文檔 31
2.6.1 刪除單個文檔 31
2.6.2 刪除指定條件文檔 31
2.6.3 刪除全部文檔 32
2.6.4 返回被刪除文檔 32
2.7 使用聚合 33
2.8 計算文檔大小 34
2.8.1 查看集合大小 34
2.8.2 計算文檔大小 35
2.9 小技巧——定義mongo shell環境 36
第3章 數據模型 37
3.1 BSON協定與類型 37
3.1.1 JSON 標準 37
3.1.2 BSON和JSON 38
3.1.3 BSON的數據類型 39
3.2 使用日期 40
3.3 ObjectId生成器 41
3.4 數組、內嵌 44
3.4.1 內嵌文檔 45
3.4.2 數組 45
3.4.3 嵌套型的數組 47
3.5 固定集合 48
3.5.1 固定集合簡介 48
3.5.2 使用示例 49
3.5.3 特徵與限制 51
3.5.4 適用場景 52
3.6 小技巧——使用固定集合實現FIFO
佇列 52
第4章 索引介紹 56
4.1 索引簡述 56
4.2 單鍵、複合索引 57
4.2.1 單欄位索引 57
4.2.2 複合索引 58
4.3 數組索引 58
4.4 地理空間索引 59
4.6 TTL索引 63
4.7 其他索引特性 64
4.7.1 條件索引 64
4.7.2 稀疏索引(sparse=true) 65
4.7.3 文本索引 66
4.7.4 模糊索引 66
4.8 小技巧——使用explain命令驗證
最佳化 67
第5章 副本集 72
5.1 副本集架構 72
5.2 集群選舉 73
5.2.1 Raft選舉算法 73
5.2.2 MongoDB 實現的擴展 77
5.2.3 MongoDB選舉介紹 77
5.2.4 副本集模式 79
5.3 實時複製 81
5.3.1 oplog複製 81
5.3.2 冪等性 84
5.3.3 複製延遲 84
5.3.4 初始化同步 85
5.3.5 數據回滾 86
5.4 自動故障轉移 86
5.5 搭建副本集 89
5.5.1 安裝副本集 89
5.5.2 創建用戶 92
5.5.3 寫入數據 92
5.5.4 主備節點切換 93
5.6 小技巧——檢查複製的延遲情況 93
第6章 分片 97
6.1 分片集群架構 97
6.1.1 分片簡介 97
6.1.2 分片集群架構 97
6.2 分片策略 98
6.2.1 什麼是chunk 99
6.2.2 分片算法 100
6.2.3 分片鍵的選擇 101
6.3 讀寫分發模式 101
6.3.1 數據分發流程 101
6.3.2 避免廣播操作 103
6.4 數據均衡 104
6.4.1 均衡的方式 104
6.4.2 chunk 分裂 105
6.4.3 自動均衡 106
6.4.4 數據均衡帶來的問題 108
6.5 使用mtools搭建集群 108
6.5.1 mtools 介紹 109
6.5.2 準備工作 109
6.5.3 安裝 mtools 109
6.5.4 創建分片集群 110
6.5.5 停止、啟動 112
6.6 使用分片集群 112
6.7 小技巧——使用標籤 114
6.7.1 分片標籤 114
6.7.2 使用場景 115
第2部分 MongoDB微服務開發
第7章 微服務入門 117
7.1 微服務定義 117
7.1.1 什麼是微服務 117
7.1.2 理解微服務 117
7.1.3 微服務的通用特性 120
7.1.4 微服務不是“銀彈” 121
7.2 微服務基礎設施 121
7.2.1 服務註冊 121
7.2.2 服務發現 122
7.2.3 API網關 123
7.2.4 服務容錯 123
7.2.5 服務監控 124
7.2.6 配置中心 124
7.2.7 接口調用 124
7.2.8 容器化 125
7.3 CAP與BASE理論 125
7.3.1 CAP 理論 125
7.3.2 BASE 理論 126
7.4 為什麼MongoDB適合微服務 127
第8章 使用Java操作MongoDB 131
8.1 搭建Java開發環境 131
8.1.1 安裝JDK 131
8.1.2 安裝IDEA 132
8.2 安裝Robo 3T 134
8.2.1 Robo 3T介紹 134
8.2.2 下載安裝 134
8.2.3 連線資料庫 135
8.2.4 運算元據 136
8.3 使用MongoDB Java Driver 137
8.3.1 引入框架 137
8.3.2 連線資料庫 137
8.3.3 使用構建器 138
8.4 實例:文章列表的存儲與檢索 141
8.4.1 集合操作 141
8.4.2 文檔操作 143
8.5 異步驅動 146
8.5.1 理解回響式 146
8.5.2 使用回響式流 147
8.6 使用CommandListener檢測慢
操作 152
8.7 MongoDB Java Driver的工作原理 155
8.7.1 游標 155
8.7.2 連線池 158
8.7.3 故障轉移 160
8.7.4 連線池相關參數 161
8.8 小技巧——如何監視驅動的
連線數 161
第9章 SpringBoot框架整合 165
9.1 SpringBoot簡介 165
9.1.1 SpringBoot是什麼 165
9.1.2 “腳手架”風格 167
9.2 第一個SpringBoot項目 168
9.2.1 初始化項目 168
9.2.2 添加啟動類 172
9.2.3 編寫 Echo 接口 172
9.2.4 配置檔案 173
9.2.5 啟動程式 174
9.2.6 熱載入 175
9.3 Spring Data框架介紹 176
9.3.1 Spring Data 176
9.3.2 Spring Data MongoDB 178
9.4 使用Spring Data MongoDB操作
資料庫 179
9.4.1 引入依賴 179
9.4.2 配置檔案 180
9.4.3 數據模型 180
9.4.4 數據操作 181
9.4.5 啟動測試 183
9.5 高級操作 184
9.5.1 實現投射 184
9.5.2 使用 QBE 186
9.5.3 自定義 Repository 方法 187
9.6 自定義配置 190
9.6.1 Spring Boot 通用配置 190
9.6.2 JavaConfig 配置 191
9.6.3 自動配置的原理 192
9.7 實現單元測試 194
9.7.1 使用 flapdoodle.embed.mongo 194
9.7.2 原理解析 198
9.7.3 定製化集成 200
9.8 多數據源 203
9.9 使用審計功能 208
9.9.1 使用註解 208
9.9.2 實現審計 209
9.10 小技巧——自定義數據序列化
方式 210
第10章 項目實戰 215
10.1 初始化項目 215
10.2 實現資源抓取 219
10.3 發布RssFeed 229
10.4 統計功能 232
10.5 開發門戶界面 235
10.5.1 前端組件 235
10.5.2 RSS門戶套用 237
10.5.3 實現後台接口 249
10.6 打包應用程式 252
10.6.1 使用spring-boot-maven-
plugin外掛程式 252
10.6.2 使用 assembly 外掛程式 253
第3部分 MongoDB高效進階
第11章 性能基準 257
11.1 性能基準 257
11.1.1 了解基準測試 257
11.1.2 吞吐量、並發數、回響
時間 258
11.2 WiredTiger讀寫模型 259
11.2.1 讀快取 259
11.2.2 寫緩衝 260
11.2.3 快取頁管理 262
11.2.4 數據壓縮 264
11.2.5 小結 265
11.3 性能監控工具 265
11.3.1 mongostat 265
11.3.2 mongotop 267
11.3.3 Profiler模組 269
11.3.4 db.currentOp 272
11.4 使用YCSB測試MongoDB性能 277
11.4.1 YCSB 簡介 277
11.4.2 執行壓力測試 279
11.4.3 生成時序指標序列 284
11.5 使用 nmon監視伺服器性能 285
第12章 合理使用索引 288
12.1 索引檢索原理 288
12.2 索引檢索範例 291
12.3 覆蓋索引 295
12.4 查詢計畫 298
12.4.1 查詢計畫構成 298
12.4.2 explain 命令 299
12.5 實戰:查詢案例分析 304
12.6 查詢快取原理 322
12.6.1 工作流程 322
12.6.2 案例 323
12.6.3 內部原理 326
12.7 強制命中 328
12.7.1 使用 hint方法 328
12.7.2 使用IndexFilter方法 329
12.8 索引正交 331
12.9 使用MongoDB Compass 332
12.10 最佳化原則 333
第13章 並發最佳化 337
13.1 MongoDB的鎖模式 337
13.2 MVCC 340
13.3 原子性操作 342
13.4 樂觀鎖 345
13.4.1 電影院訂座的案例 345
13.4.2 版本號模式 348
13.5 緩解行鎖競爭 349
13.6 避免重複數據 353
13.7 那些影響並發的操作 356
第14章 套用設計調優 358
14.1 套用範式設計 358
14.1.1 什麼是範式 358
14.1.2 反範式設計 360
14.2 嵌套設計 362
14.2.1 在文檔內使用嵌套 362
14.2.2 表達關聯 363
14.3 桶模式 365
14.3.1 桶模式 365
14.3.2 桶模式案例 366
14.4 數據分頁 374
14.4.1 傳統分頁模式 375
14.4.2 使用偏移量 376
14.4.3 折中處理 380
14.5 批操作 381
14.5.1 批量讀 381
14.5.2 批量寫 383
14.6 讀寫分離與一致性 385
14.6.1 讀寫分離 385
14.6.2 讀寫關注 387
14.7 聚合範例 392
14.7.1 聚合框架介紹 392
14.7.2 找出重複數據 393
14.7.3 寫入中間表 393
14.7.4 表連線(join) 397
14.7.5 使用要點 401
第15章 高級特性 402
15.1 Change Stream介紹 402
15.2 Change Stream案例:數據遷移 408
15.2.1 關鍵點 409
15.2.2 實戰:使用 Change Stream
實現增量遷移 410
15.2.3 小結 420
15.3 多文檔事務 421
15.3.1 事務簡介 421
15.3.2 MongoDB 中的事務 422
15.4 基於Spring開發事務 426
15.4.1 在驅動中實現事務 426
15.4.2 使用 Spring Data 實現事務 428
15.5 事務實現原理 432
15.5.1 MVCC 與快照的一致性 432
15.5.2 事務持久性 434
15.5.3 讀寫隔離設定 435
15.6 寫衝突模式 437
15.7 使用事務的限制 440
第4部分 MongoDB架構管理
第16章 安全管理 441
16.1 MongoDB如何鑒權 441
16.1.1 初體驗 441
16.1.2 理解身份認證與授權 443
16.1.3 身份認證方式 443
16.1.4 RBAC 訪問控制 446
16.2 角色管理 447
16.2.1 角色管理命令 447
16.2.2 系統內置角色 448
16.2.3 創建自定義角色 449
16.3 最小許可權原則 450
16.4 安全最佳實踐 452
第17章 高可靠 457
17.1 節點部署最佳化 457
17.1.1 硬體規劃 457
17.1.2 系統調優 458
17.1.3 資料庫配置 460
17.2 集群高可靠 461
17.2.1 反親和部署 462
17.2.2 避免集中存儲 462
17.2.3 警惕資源超分 463
17.3 套用層高可靠 463
17.3.1 故障隔離 463
17.3.2 故障轉移/恢復 465
17.4 備份可靠性 466
17.4.1 邏輯備份 466
17.4.2 物理備份 468
17.4.3 增量備份 469
17.5 容災可靠性 470
17.5.1 同城災備 471
17.5.2 異地災備 472
17.5.3 異地多活 473
第18章 治理經驗 476
18.1 強化約束 476
18.1.1 使用 JSON Schema 476
18.1.2 管理文檔結構 478
18.2 使用Mongobee實現升級 478
18.2.1 模式演進 478
18.2.2 Mongobee 介紹 479
18.2.3 範例 480
18.3 規範與自動化 484
18.3.1 開發規範 485
18.3.2 實現自動化 486
18.4 運維管理 487
18.4.1 容量規劃 487
18.4.2 監控時關注哪些指標 490

作者簡介

唐卓章(部落格園ID:美碼師)。
十年研發老兵,持續關注NoSQL分散式資料庫技術,在系統高可用、彈性擴展、性能調優等方面有著豐富的實踐及管理經驗。
MongoDB中文社區核心成員之一。常活躍於Mongoing社區原創及問答板塊。
華為雲 MongoDB 技術專家。致力於萬物互聯事業,負責物聯網平台系統的架設及研發工作。

熱門詞條

聯絡我們