第1 部分 MongoDB 入門
01 什麼是MongoDB
1.1 認識MongoDB
1.2 類比SQL 模型
02 體驗MongoDB
2.1 安裝MongoDB
2.2 使用mongo shell
2.3 插入文件
2.4 查詢文件
2.5 更新文件
2.6 刪除文件
2.7 使用聚合
2.8 計算文件大小
2.9 小技巧—定義mongo shell 環境
03 資料模型
3.1 BSON 協定與類型
3.2 使用日期
3.3 ObjectId 生成器
3.4 陣列、內嵌
3.5 固定集合
3.6 小技巧—使用固定集合實現FIFO 佇列
04 索引介紹
4.1 索引簡述
4.2 單鍵、複合索引
4.3 陣列索引
4.4 地理空間索引
4.5 唯一性約束
4.6 TTL 索引
4.7 其他索引特性
4.8 小技巧—使用explain 命令驗證最佳化
05 複本集
5.1 複本集架構
5.2 叢集選舉
5.3 即時複製
5.4 自動容錯移轉
5.5 架設複本集
5.6 小技巧—檢查複製的延遲情況
06 分片
6.1 分片叢集架構
6.2 分片策略
6.3 讀寫分發模式
6.4 資料均衡
6.5 使用mtools 架設叢集
6.6 使用分片叢集
6.7 小技巧—使用標籤
第2 部分 MongoDB 微服務開發
07 微服務入門
7.1 微服務定義
7.2 微服務基礎設施
7.3 CAP 與BASE 理論
7.4 為什麼MongoDB 適合微服務
08 使用Java 操作MongoDB
8.1 架設Java 開發環境
8.2 安裝Robo 3T
8.3 使用MongoDB Java Driver
8.4 實例:文章列表的儲存與檢索
8.5 非同步驅動
8.6 使用CommandListener檢測慢操作
8.7 MongoDB Java Driver 的工作原理
8.8 小技巧—如何監視驅動的連接數
09 SpringBoot 框架整合
9.1 SpringBoot 簡介
9.2 第一個SpringBoot 專案
9.3 Spring Data 框架介紹
9.4 使用Spring Data MongoDB操作資料庫
9.5 進階操作
9.6 自訂設定
9.7 實現單元測試
9.8 多資料來源
9.9 使用稽核功能
9.10 小技巧—自訂資料序列化方式
10 專案實戰
10.1 初始化專案
10.2 實現資源抓取
10.3 發佈RssFeed
10.4 統計功能
10.5 開發門戶介面
10.6 打包應用程式
第3 部分 MongoDB 高效進階
11 性能基準
11.1 性能基準
11.2 WiredTiger 讀寫模型
11.3 性能監控工具
11.4 使用YCSB 測試MongoDB性能
11.5 使用 nmon 監視伺服器性能
12 合理使用索引
12.1 索引檢索原理
12.2 索引檢索範例
12.3 覆蓋索引
12.4 查詢計畫
12.5 實戰:查詢案例分析
12.6 查詢快取原理
12.7 強制命中
12.8 索引正交
12.9 使用MongoDB Compass
12.10 最佳化原則
13 併發最佳化
13.1 MongoDB 的鎖模式
13.2 MVCC
13.3 原子性操作
13.4 樂觀鎖
13.5 緩解行鎖競爭
13.6 避免重複資料
13.7 那些影響併發的操作
14 應用設計最佳化
14.1 應用範式設計
14.2 巢狀結構設計
14.3 桶模式
14.4 巨量資料分頁
14.5 批次操作
14.6 讀寫分離與一致性
14.7 聚合範例
15 進階特性
15.1 Change Stream 介紹
15.2 Change Stream 案例:資料移轉
15.3 多文件交易
15.4 基於Spring 開發交易
15.5 交易實現原理
15.6 寫入衝突模式
15.7 使用交易的限制
第4 部分MongoDB 架構管理
16 安全管理
16.1 MongoDB 如何身份驗證
16.2 角色管理
16.3 最小許可權原則
16.4 安全最佳實踐
17 高可用性
17.1 節點部署最佳化
17.2 叢集高可用性
17.3 應用層高可用性
17.4 備份可用性
17.5 災難恢復可用性
18 治理經驗
18.1 強化約束
18.2 使用Mongobee 實現升級
18.3 規範與自動化
18.4 運行維護管理