內容簡介
MongoDB如何幫你管理通過Web套用收集的海量數據呢?通過本書的權威解讀,你會了解面向文檔資料庫的諸多優點,會發現MongoDB如此穩定、性能優越甚至能夠無限水平擴展背後的原因。
本書的兩位作者均來自開發並支持開源資料庫mongodb的公司10gen。資料庫開發人員可將此書作為參考指南,系統管理員可以從本書中找到高級配置技巧,其他用戶可以了解一些基本概念和用例。你會發現,將數據組織成自包含的JSON風格的文檔比組織成關係型資料庫中的記錄要容易得多。
目錄
錄
中文版序一 XI
中文版序二 XIII
序 XV
前言 XVII
第1章 簡介 1
1.1 豐富的數據模型 1
1.2 容易擴展 1
1.3 豐富的功能 2
1.4 不犧牲速度 3
1.5 簡便的管理 3
1.6 其他內容 3
第2章 入門 5
2.1 文檔 5
2.2 集合 6
2.2.1 無模式 6
2.2.2 命名 7
2.3 資料庫 8
2.4 啟動MongoDB 9
2.5 MongoDBshell 10
2.5.1 運行shell 10
2.5.2 MongoDB客戶端 11
2.5.3 shell中的基本操作 11
2.5.4 使用shell的竅門 13
2.6 數據類型 15
2.6.1 基本數據類型 15
2.6.2 數字 17
2.6.3 日期 18
2.6.4 數組 19
2.6.5 內嵌文檔 19
2.6.6 _id和ObjectId 20
第3章 創建、更新及刪除文檔 23
3.1 插入並保存文檔 23
3.1.1 批量插入 23
3.1.2 插入:原理和作用 24
3.2 刪除文檔 24
3.3 更新文檔 25
3.3.1 文檔替換 26
3.3.2 使用修改器 27
3.3.3 upsert 36
3.3.4 更新多個文檔 38
3.3.5 返回已更新的文檔 38
3.4 瞬間完成 41
3.4.1 安全操作 41
3.4.2 捕獲“常規”錯誤 42
3.5 請求和連線 43
第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.2.4 條件句的規則 49
4.3 特定於類型的查詢 49
4.3.1 null 49
4.3.2 正則表達式 50
4.3.3 查詢數組 51
4.3.4 查詢內嵌文檔 53
4.4 $where查詢 55
4.5 游標 56
4.5.1 limit、skip和sort 57
4.5.2 避免使用skip略過大量結果 58
4.5.3 高級查詢選項 60
4.5.4 獲取一致結果 61
4.6 游標內幕 63
第5章 索引 65
5.1 索引簡介 65
5.1.1 擴展索引 67
5.1.2 索引內嵌文檔中的鍵 68
5.1.3 為排序創建索引 68
5.1.4 索引名稱 69
5.2 唯一索引 69
5.2.1 消除重複 69
5.2.2 複合唯一索引 70
5.3 使用explain和hint 70
5.4 索引管理 75
5.5 地理空間索引76
5.5.1 複合地理空間索引 78
5.5.2 地球不是二維平面 78
第6章 聚合 79
6.1 count 79
6.2 distinct 79
6.3 group 80
6.3.1 使用完成器 82
6.3.2 將函式做為鍵使用 84
6.4MapReduce84
6.4.1 例1:找出集合中的所有鍵 85
6.4.2 例2:網頁分類 87
6.4.3 MongoDB和MapReduce 87
第7章 進階指南 91
7.1 資料庫命令 91
7.1.1 命令的工作原理 92
7.1.2 命令參考 93
7.2 固定集合 95
7.2.1 屬性及用法 96
7.2.2 創建固定集合 96
7.2.3 自然排序 97
7.2.4 尾部游標 98
7.3GridFS:存儲檔案 99
7.3.1 開始使用GridFS:mongofiles 99
7.3.2 通過MongoDB驅動程式操作GridFS100
7.3.3 內部原理 100
7.4 伺服器端腳本 101
7.4.1 dbeval 101
7.4.2 存儲JavaScript 102
7.4.3 安全性 103
7.5 資料庫引用 104
7.5.1 什麼是DBRef 104
7.5.2 示例模式 104
7.5.3 驅動對DBRef的支持 105
7.5.4 什麼時候該使用DBRef呢 106
第8章 管理 107
8.1 啟動和停止MongoDB 107
8.1.1 從命令行啟動 107
8.1.2 配置檔案 109
8.1.3 停止MongoDB 110
8.2 監控 110
8.2.1 使用管理接口 110
8.2.2 serverStatus 112
8.2.3 mongostat 113
8.2.4 第三方外掛程式 113
8.3 安全和認證 114
8.3.1 認證的基礎知識 114
8.3.2 認證的工作原理 115
8.3.3 其他安全考慮 116
8.4 備份和修復 116
8.4.1 數據檔案備份 117
8.4.2 mongodump和mongorestore117
8.4.3fsync和鎖 118
8.4.4 從屬備份 119
8.4.5 修復 119
第9章 複製 121
9.1 主從複製 121
9.1.1 選項 122
9.1.2 添加及刪除源 123
9.2 副本集 124
9.2.1 初始化副本集 125
9.2.2 副本集中的節點 127
9.2.3 故障切換和活躍節點選舉 128
9.3 在從伺服器上執行操作 129
9.3.1 讀擴展 130
9.3.2 用從節點做數據處理 130
9.4 工作原理 130
9.4.1 oplog 131
9.4.2 同步 131
9.4.3 複製狀態和本地資料庫 132
9.4.4 阻塞複製 132
9.5 管理 133
9.5.1 診斷 133
9.5.2 變更oplog的大小 134
9.5.3 複製的認證問題 134
第10章 分片 135
10.1 分片簡介 135
10.2 MongoDB中的自動分片 135
10.3 片鍵 137
10.3.1 將已有的集合分片 137
10.3.2 遞增片鍵還是隨機片鍵 137
10.3.3 片鍵對操作的影響 138
10.4 建立分片 139
10.4.1 啟動伺服器 139
10.4.2 切分數據 140
10.5生產配置140
10.5.1 健壯的配置 141
10.5.2 多個mongos 141
10.5.3 健壯的片 141
10.5.4 物理伺服器 142
10.6 管理分片 142
10.6.1 配置集合 142
10.6.2 分片命令 143
第11章 套用舉例 145
11.1 化學品搜尋引擎:Java 145
11.1.1 安裝Java驅動程式 145
11.1.2 使用Java驅動程式 145
11.1.3 模式設計 146
11.1.4 用Java實現 148
11.1.5 一些問題 149
11.2 新聞聚合器:PHP 149
11.2.1 安裝PHP驅動程式 150
11.2.2 使用PHP驅動程式 151
11.2.3 設計新聞聚集器 151
11.2.4 評論樹 152
11.2.5 投票 153
11.3 自定義提交表單:Ruby 154
11.3.1 安裝Ruby驅動 154
11.3.2 使用Ruby驅動 155
11.3.3 自定義表單提交 155
11.3.4 Ruby的對象映射和在Rails中使用MongoDB157
11.4 實時分析:Python 157
11.4.1 安裝PyMongo 157
11.4.2 使用PyMongo 158
11.4.3 用於實時分析的MongoDB 158
11.4.4 模式 159
11.4.5 處理請求 159
11.4.6 使用分析數據 160
11.4.7 其他因素 160
附錄A 安裝MongoDB 163
附錄B mongo:MongoDBshell 167
附錄C 深入MongoDB內部 169
關於封面 172