MongoDB 核心原理與實踐

郭遠威

  • 出版商: 電子工業
  • 出版日期: 2022-03-01
  • 售價: $630
  • 貴賓價: 9.5$599
  • 語言: 簡體中文
  • 頁數: 404
  • ISBN: 7121430002
  • ISBN-13: 9787121430008
  • 相關分類: NoSQLMongoDB
  • 立即出貨

買這商品的人也買了...

商品描述

本書主要包括MongoDB安裝部署、增刪改查、索引、聚集框架等基礎知識;WiredTiger存儲引擎、事務、復制集、分片集群等高階知識;MongoDB的導入導出、備份恢復、性能監控、權限控制等運維管理知識;MongoDB的驅動、應用開發、來自中文社區的精選案例與問答等一線實踐知識等。本書在滿足現實中的數據庫管理及應用需求的基礎上,重點突出WiredTiger存儲引擎和實踐案例的講解。

目錄大綱

目錄 第1篇 MongoDB基礎知識 第1章 初識MongoDB 2 1.1 MongoDB的發展與現狀 2 1.2 MongoDB與Hadoop比較 5 1.3 關鍵特性 8 1.4 安裝部署 10 1.4.1 在Windows中安裝MongoDB 11 1.4.2 在Linux中安裝MongoDB 11 1.4.3 在Docker中安裝MongoDB 13 1.5 幾個重要的可執行文件 16 1.6 適合的業務 19 1.6.1 高並發Web應用 19 1.6.2 實時計算類的應用 20 1.6.3 數據中台 20 1.6.4 游戲類應用 21 1.6.5 日誌分析類系統 22 1.6.6 AI應用場景 22 1.7 小結 24 第2章 CRUD操作 25 2.1 查詢操作 25 2.1.1 查詢條件 27 2.1.2 比較操作符 28 2.1.3 邏輯操作符 30 2.1.4 字段名匹配 31 2.1.5 文本查詢 32 2.1.6 正則表達式 34 2.1.7 嵌套文檔查詢 34 2.1.8 數組查詢 35 2.1.9 地理位置查詢 38 2.1.10 查詢投射與排序 40 2.2 插入操作 41 2.2.1 insertOne 41 2.2.2 insertMany 42 2.2.3 insert 44 2.3 修改操作 45 2.3.1 updateOne 45 2.3.2 updateMany 48 2.3.3 replaceOne 52 2.3.4 update 53 2.4 刪除操作 55 2.4.1 deleteOne 55 2.4.2 deleteMany 55 2.5 批量寫操作 56 2.6 小結 58 第3章 索引 59 3.1 索引原理 59 3.2 創建索引 61 3.3 單個字段的索引 61 3.4 多字段的復合索引 63 3.5 數組的多鍵索引 65 3.6 查詢計劃分析 66 3.7 索引覆蓋查詢 70 3.8 全文索引 71 3.9 地理位置索引 72 3.10 Hash索引 73 3.11 刪除索引 73 3.12 TTL索引 74 3.13 小結 76 第4章 聚集操作 77 4.1 單個集合中的基礎聚集函數 77 4.1.1 count()函數 77 4.1.2 estimatedDocumentCount()函數 79 4.1.3 countDocuments()函數 80 4.1.4 distinct()函數 80 4.2 管道聚集框架 82 4.2.1 $group分組 84 4.2.2 $addFields添加新字段 85 4.2.3 $lookup關聯查詢 86 4.2.4 $project投射 88 4.2.5 $out將結果輸出到新集合 88 4.2.6 MongoDB聚集操作語句與SQL語句的比較 89 4.3 MapReduce編程 89 4.4 小結 92 第2篇 深入理解MongoDB 第5章 WiredTiger存儲引擎 94 5.1 存儲引擎的數據結構 95 5.1.1 典型的B-Tree數據結構 95 5.1.2 磁盤中的基礎數據結構 96 5.1.3 內存中的基礎數據結構 97 5.1.4 page的其他數據結構 99 5.2 page eviction頁面淘汰 100 5.3 page reconcile將數據寫入磁盤 101 5.4 Cache的分配規則 102 5.5 page的生命周期、狀態、大小 103 5.5.1 page的生命周期 104 5.5.2 page的各種狀態 105 5.5.3 page的大小參數 105 5.6 checkpoint的原理 107 5.6.1 checkpoint包含的關鍵信息 108 5.6.2 checkpoint執行流程與觸發時機 109 5.7 wt工具和磁盤中的元數據文件 111 5.7.1 wt工具 111 5.7.2 元數據相關文件 112 5.8 事務 115 5.8.1 事務的基本原理 115 5.8.2 與事務相關的數據結構 118 5.8.3 事務的snapshot隔離 119 5.8.4 MVCC並發控制機制 120 5.8.5 事務日誌(Journal) 122 5.9 一個完整的寫操作流程 123 5.10 小結 124 第6章 復制集 125 6.1 復制集功能概述 125 6.2 復制集部署架構 126 6.2.1 典型的3節點復制集部署架構 126 6.2.2 多數據中心復制集部署架構 128 6.3 完整部署一個復制集 129 6.3.1 創建每個節點上存儲數據的目錄 129 6.3.2 創建每個節點的日誌文件 130 6.3.3 創建每個節點啟動時的配置文件 130 6.3.4 啟動每個節點上的mongod實例 131 6.3.5 初始化復制集 131 6.3.6 將其他節點添加到復制集 132 6.3.7 觀察復制集的運行狀態 132 6.4 復制集的維護 137 6.4.1 刪除節點 137 6.4.2 添加Secondary節點 138 6.4.3 添加Arbiter節點 140 6.4.4 復制集的配置信息 140 6.4.5 重新配置復制集 143 6.4.6 故障轉移Failover分析 145 6.5 復制集選舉Primary節點的機制 149 6.5.1 復制集中的投票節點和非投票節點 149 6.5.2 選舉觸發條件和選舉為Primary節點的因素 150 6.5.3 復制集能正常完成選舉的條件 152 6.6 基於Oplog的數據同步機制 154 6.6.1 Oplog集合包含的內容分析 155 6.6.2 Oplog的默認大小及性能影響 156 6.6.3 Oplog集合大小的修改 158 6.6.4 使用initial sync解決Oplog嚴重落後的問題 159 6.7 寫關註(writeConcern)模式 162 6.7.1 默認的“寫關註”場景 162 6.7.2 配置寫關註 162 6.8 讀參考(readPreference)模式 165 6.8.1 讀參考常見的應用場景 166 6.8.2 讀參考的幾種模式分析 167 6.8.3 設置tags標簽使讀請求指向特定節點 168 6.8.4 如何從多個匹配的節點中選擇一個目標 169 6.9 讀關註(readConcern)模式 171 6.9.1 Primary節點切換可能導致數據回滾 171 6.9.2 設置讀關註避免讀到的數據被回滾 172 6.10 Change Streams實現數據實時同步 176 6.10.1 實現原理 176 6.10.2 實時數據流的格式 177 6.10.3 打開實時數據流 178 6.10.4 控制實時數據流的輸出 179 6.11 小結 181 第7章 分片集群 182 7.1 分片集群的部署架構 182 7.2 手動部署一個分片集群 184 7.2.1 分片shard1配置 184 7.2.2 分片shard2配置 186 7.2.3 config服務器配置 187 7.2.4 mongos路由配置 188 7.2.5 啟動分片集群 189 7.2.6 配置集合使其分片 192 7.2.7 正確關閉和重啟集群 194 7.3 片鍵及選擇策略 195 7.3.1 片鍵選擇策略 197 7.3.2 基於Hash分片 200 7.3.3 基於範圍的分片 203 7.4 chunk 204 7.4.1 chunk的分割 204 7.4.2 chunk大小的修改 209 7.5 Balancer 210 7.5.1 一個完整的chunk遷移過程 212 7.5.2 Balancer的管理 214 7.5.3 存儲元數據的config數據庫 217 7.6 小結 220 第8章 分佈式文件存儲GridFS 221 8.1 什麽是GridFS 222 8.2 使用GridFS的場景 226 8.3 GridFS常用操作 227 8.3.1 上傳文件 228 8.3.2 下載文件 229 8.3.3 刪除文件 230 8.3.4 查詢文件 230 8.4 小結 231 第3篇 MongoDB運維管理 第9章 管理與監控 234 9.1 數據導入/導出 234 9.1.1 導出工具mongoexport 235 9.1.2 導入工具mongoimport 237 9.2 數據備份/恢復 240 9.2.1 備份工具mongodump 241 9.2.2 恢復工具mongorestore 243 9.3 命令行工具監控管理 245 9.3.1 mongotop 246 9.3.2 mongostat 247 9.3.3 db.stats() 249 9.3.4 db.serverStatus() 251 9.4 可視化數據庫操作 256 9.4.1 Compass工具的安裝與連接 256 9.4.2 可視化性能監控 257 9.4.3 可視化數據庫操作 258 9.4.4 可視化聚集操作 262 9.4.5 內嵌mongoshell開發環境 263 9.5 小結 264 第10章 權限控制 265 10.1 基於角色與權限控制原理 265 10.2 啟動角色權限控制功能 267 10.3 MongoDB默認提供的角色 271 10.3.1 針對特定數據庫中的讀/寫角色 271 10.3.2 針對特定數據庫中的管理角色 272 10.3.3 針對所有數據庫中的角色 272 10.3.4 超級用戶角色 273 10.4 用戶管理 274 10.4.1 查看數據庫中的用戶 274 10.4.2 創建新用戶 275 10.4.3 修改用戶的角色 276 10.4.4 刪除用戶 276 10.5 角色管理 277 10.5.1 查看數據庫中的角色 278 10.5.2 查看角色對應的權限信息 278 10.5.3 創建一個自定義角色 280 10.5.4 驗證自定義角色的權限 282 10.5.5 刪除自定義的角色 283 10.6 小結 283 第4篇 MongoDB應用實踐 第11章 MongoDB應用開發 286 11.1 基於Python的開發 286 11.1.1 單實例中的CRUD操作 287 11.1.2 復制集中的操作 290 11.1.3 分片集群中的操作 291 11.1.4 GridFS分佈式文件操作 292 11.2 基於.net core的開發 294 11.2.1 CRUD操作 296 11.2.2 GridFS分佈式文件操作 298 11.3 基於Java和Spring Boot框架的開發 301 11.3.1 開發框架介紹 301 11.3.2 CRUD操作 304 11.4 小結 306 第12章 基於MongoDB的數據中台案例 308 12.1 現代企業數據架構及痛點 308 12.2 什麽是數據中台 309 12.3 數據中台的價值 312 12.4 數據中台的技術模塊 313 12.5 基於MongoDB的數據中台方案 320 12.6 數據中台方案選型 327 12.7 小結 328 第13章 百萬級高並發集群性能提高案例 329 13.1 背景 329 13.2 軟件優化 330 13.2.1 業務層面優化 330 13.2.2 MongoDB線程模型優化 331 13.2.3 WiredTiger存儲引擎優化 333 13.3 解決服務器系統磁盤I/O問題 342 13.3.1 服務器I/O硬件問題背景 342 13.3.2 服務器I/O硬件問題解決後性能對比 343 13.4 主節點硬件升級後續優化 346 13.4.1 readConcern配置優化 346 13.4.2 替換從節點服務器為升級後的高I/O服務器 350 13.4.3 結論 351 13.4.4 繼續優化調整存儲引起參數 352 13.5 小結 353 第14章 基於MongoDB的金融系統案例 355 14.1 項目背景 355 14.2 面臨的主要挑戰 355 14.3 技術選型 356 14.4 方案介紹 356 14.5 技術創新 358 14.6 技術特點 359 14.7 運營情況 360 14.8 項目成效 360 14.9 小結 361 第15章 雲原生MongoDB部署案例 363 15.1 部署環境準備 363 15.2 Docker安裝 364 15.3 Kubernetes組件安裝 365 15.4 集群Master節點初始化 366 15.5 將Work節點添加到集群 369 15.6 分佈式網絡文件系統安裝 369 15.7 PV、PVC、Deployment配置 372 15.8 小結 374 第16章 常見問題分析 375 16.1 集合與關系型數據庫表的區別 375 16.2 是否支持事務 376 16.3 鎖的類型及粒度有哪些 377 16.4 服務器的內存多大合適 378 16.5 如何解決join查詢需求 379 16.6 創建索引對性能的影響 380 16.7 GridFS適合什麽應用場景 381 16.8 Journaling、Oplog、Log三種日誌的區別 382 16.9 連接數設置為多少合適 383 16.10 集合被分片後是否可以修改片鍵 387 16.11 為什麽分片集合中的文檔記錄沒有分佈到所有分片上 387 16.12 通過mongos連接集群時連接數分析 387 16.13 復制集節點之間是否可以使用不同的存儲引擎 388