內容介紹
內容簡介:MongoDB是為處理大數據而生的一款面向文檔的資料庫,由10gen公司開發和維護。本書作者Kyle Banker曾在該公司負責MongoDB驅動程式的維護,對各方面技術細節都了如指掌,本書也是在大量第一手資料的基礎上形成的,其權威性毋庸置疑。
本書基於MongoDB 2.0+,全面系統地講解了設計、實現、安裝和維護MongoDB的各方面內容。全書分三部分,第一部分從基於文檔的數據與傳統關係型資料庫的差別講起,介紹了MongoDB的基本概念及安裝使用。第二部分是一個實戰式教程,結合示例講解了MongoDB的CRUD操作,以及實現系統安全、靈活和高效的設計原則及模式。第三部分側重資料庫的維護和管理,深入到MongoDB背後的技術細節,給出了對管理員和開發者都極有價值的建議。
本書篇幅適中,內容深淺得當,文字通俗易懂,再配以直觀形象的插圖和貼近實戰的代碼示例,非常適合MongoDB學習者、開發人員及管理員學習參考。
本書內容:
MongoDB介紹及其優劣勢
MongoDB的Shell界面?
使用MongoDB的簡單套用
如何通過以文檔為中心的方式看待數據?
編寫查詢,以MapReduce方式聚合數據
更新和刪除數據及相關性能考量?
尋找和改進慢查詢
MongoDB的複製與分片
MongoDB的監控、備份及恢復?
作者介紹
作者介紹:Kyle Banker軟體工程師,曾工作於10gen公司,負責維護Ruby及C語言的官方MongoDB驅動、領導MongoDB文檔項目並開發培訓課程,且為客戶提供諮詢、商業支持和培訓;現任職於Snapjoy(為用戶提供默認私有的線上照片備份和自動管理服務)。個人網站http://kylebanker.com/blog。
譯者介紹:
丁雪豐一線“攻城師”一枚,InfoQ中文站小編,滿江紅翻譯組核心成員,常年混跡於各種社區,業餘時間寫作、翻譯、漢化軟體,《RESTful Web Services Cookbook中文版》、《Spring攻略》等多部書的譯者。
作品目錄
目 錄第一部分 入門指南
第1章 為現代Web而生的資料庫2
1.1 生於雲端3
1.2 MongoDB的主要特性4
1.2.1 文檔數據模型4
1.2.2 即時查詢6
1.2.3 二級索引7
1.2.4 複製8
1.2.5 速度和持久性9
1.2.6 資料庫擴展10
1.3 MongoDB的核心伺服器和工具11
1.3.1 核心伺服器11
1.3.2 JavaScript Shell12
1.3.3 資料庫驅動12
1.3.4 命令行工具13
1.4 為什麼選擇MongoDB13
1.4.1 MongoDB與其他資料庫的對比14
1.4.2 使用場景和生產部署16
1.5 提示與局限18
1.6 小結18
第2章 MongoDB JavaScript Shell19
2.1 深入MongoDB Shell19
2.1.1 啟動Shell20
2.1.2 插入與查詢20
2.1.3 更新文檔22
2.1.4 刪除數據23
2.2 創建索引並查詢24
2.2.1 創建一個大集合24
2.2.2 索引與explain()25
2.3 基本管理27
2.3.1 獲取資料庫信息27
2.3.2 命令工作原理29
2.4 獲得幫助30
2.5 小結31
第3章 使用MongoDB編寫程式32
3.1 通過Ruby使用MongoDB32
3.1.1 安裝與連線33
3.1.2 用Ruby插入文檔34
3.1.3 查詢與游標34
3.1.4 更新與刪除35
3.1.5 資料庫命令36
3.2 驅動是如何工作的37
3.2.1 對象ID生成37
3.2.2 BSON38
3.2.3 網路傳輸40
3.3 構建簡單的應用程式41
3.3.1 配置41
3.3.2 收集數據42
3.3.3 查看歸檔43
3.4 小結46
第二部分 MongoDB與應用程式開發
第4章 面向文檔的數據48
4.1 Schema設計原則48
4.2 設計電子商務數據模型49
4.2.1 產品與分類50
4.2.2 用戶與訂單53
4.2.3 評論55
4.3 具體細節:資料庫、集合與文檔56
4.3.1 資料庫56
4.3.2 集合58
4.3.3 文檔與插入61
4.4 小結65
第5章 查詢與聚合66
5.1 電子商務查詢66
5.1.1 產品、分類與評論66
5.1.2 用戶與訂單68
5.2 MongoDB查詢語言70
5.2.1 查詢選擇器70
5.2.2 查詢選項78
5.3 聚合指令79
5.3.1 根據用戶對評論進行分組79
5.3.2 根據地域對訂單套用MapReduce81
5.4 詳解聚合82
5.4.1 max()與min()82
5.4.2 distinct83
5.4.3 group83
5.4.4 map-reduce84
5.5 小結86
第6章 更新、原子操作與刪除87
6.1 文檔更新入門87
6.2 電子商務數據模型中的更新89
6.2.1 產品與分類90
6.2.2 評論93
6.2.3 訂單94
6.3 原子文檔處理96
6.3.1 訂單狀態變遷97
6.3.2 庫存管理98
6.4 具體細節:MongoDB的更新與刪除101
6.4.1 更新類型與選項101
6.4.2 更新操作符103
6.4.3 findAndModify命令106
6.4.4 刪除106
6.4.5 並發性、原子性與隔離性107
6.4.6 更新性能說明107
6.5 小結109
第三部分 精通MongoDB
第7章 索引與查詢最佳化112
7.1 索引理論112
7.1.1 思想實驗112
7.1.2 核心索引概念115
7.1.3 B樹118
7.2 索引實踐119
7.2.1 索引類型119
7.2.2 索引管理121
7.3 查詢最佳化125
7.3.1 識別慢查詢125
7.3.2 分析慢查詢127
7.3.3 查詢模式133
7.4 小結134
第8章 複製135
8.1 複製概述135
8.1.1 為什麼複製很重要135
8.1.2 複製的使用場景136
8.2 副本集137
8.2.1 配置137
8.2.2 複製的工作原理141
8.2.3 管理146
8.3 主從複製152
8.4 驅動與複製152
8.4.1 連線與故障轉移153
8.4.2 寫關注154
8.4.3 讀擴展155
8.4.4 標籤156
8.5 小結158
第9章 分片159
9.1 分片概述159
9.1.1 何謂分片160
9.1.2 分片的工作原理161
9.2 示例分片集群164
9.2.1 配置164
9.2.2 寫入分片集群168
9.3 分片集群的查詢與索引173
9.3.1 分片查詢類型173
9.3.2 索引177
9.4 選擇分片鍵178
9.4.1 低效的分片鍵178
9.4.2 理想的分片鍵179
9.5 生產環境中的分片180
9.5.1 部署與配置180
9.5.2 管理184
9.6 小結188
第10章 部署與管理189
10.1 部署189
10.1.1 部署環境189
10.1.2 伺服器配置193
10.1.3 數據的導入與導出194
10.1.4 安全195
10.2 監控與診斷197
10.2.1 日誌197
10.2.2 監控工具198
10.2.3 外部監控應用程式201
10.2.4 診斷工具(mongosniff、bsondump)201
10.3 維護202
10.3.1 備份與恢復202
10.3.2 壓緊與修復204
10.3.3 升級205
10.4 性能調優205
10.4.1 為提升性能檢查索引和查詢206
10.4.2 添加記憶體206
10.4.3 提升磁碟性能207
10.4.4 水平擴展207
10.4.5 尋求專業幫助207
10.5 小結208
附錄A 安裝209
附錄B 設計模式216
附錄C 二進制數據與GridFS226
附錄D 在PHP、Java與C++中使用MongoDB232
附錄E 空間索引240