《MongoDB实战》简介:
内容简介:
MongoDB是为处理大数据而生的一款面向文档的数据库,由10gen公司开发和维护。本书作者Kyle Banker曾在该公司负责MongoDB驱动程序的维护,对各方面技术细节都了如指掌,本书也是在大量第一手资料的基础上形成的,其权威性毋庸置疑。
本书基于MongoDB 2.0+,全面系统地讲解了设计、实现、安装和维护MongoDB的各方面内容。全书分三部分,第一部分从基于文档的数据与传统关系型数据库的差别讲起,介绍了MongoDB的基本概念及安装使用。第二部分是一个实战式教程,结合示例讲解了MongoDB的CRUD操作,以及实现系统安全、灵活和高效的设计原则及模式。第三部分侧重数据库的维护和管理,深入到MongoDB背后的技术细节,给出了对管理员和开发者都极有价值的建议。
本书篇幅适中,内容深浅得当,文字通俗易懂,再配以直观形象的插图和贴近实战的代码示例,非常适合MongoDB学习者、开发人员及管理员学习参考。
本书内容:
MongoDB介绍及其优劣势
MongoDB的Shell界面
使用MongoDB的简单应用
如何通过以文档为中心的方式看待数据
编写查询,以MapReduce方式聚合数据
更新和删除数据及相关性能考量
寻找和改进慢查询
MongoDB的复制与分片
MongoDB的监控、备份及恢复
《MongoDB实战》摘录:
9.3.2 Indexing You just saw some examples of how indexed queries work in a sharded cluster. If you’re ever unsure about how a given query will resolve, use explain() to get the answer. This is usually straightforward, but a few more points about indexes should be kept in mind when running a sharded cluster. I’ll enumerate them here: 1 Each shard maintains its own indexes. This should be obvious, but to be clear, know that when you declare an index on a sharded collection, each shard builds a separate index for its portion of the collection. For example, when you issued the db.spreasheets.ensureIndex() command via mongos in the previous section, each individual shard processed the index creation command individually. 2 It follows that the sharded collections on each shard should have the sa...
《MongoDB实战》目录:
目 录
第一部分 入门指南
第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 Shell 12
1.3.3 数据库驱动 12
1.3.4 命令行工具 13
1.4 为什么选择MongoDB 13
1.4.1 MongoDB与其他数据库的对比 14
1.4.2 使用场景和生产部署 16
1.5 提示与局限 18
1.6 小结 18
第2章 MongoDB JavaScript Shell 19
2.1 深入MongoDB Shell 19
2.1.1 启动Shell 20
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使用MongoDB 32
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 BSON 38
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 根据地域对订单应用MapReduce 81
5.4 详解聚合 82
5.4.1 max()与min() 82
5.4.2 distinct 83
5.4.3 group 83
5.4.4 map-reduce 84
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 二进制数据与GridFS 226
附录D 在PHP、Java与C++中使用MongoDB 232
附录E 空间索引 240
· · · · · ·