编辑推荐

  

  上一版广受好评,新版本在此基础上大幅扩充,内容更加全面、深入
  MongoDB项目组成员倾力打造
  MongoDB基础知识、进阶内容、高级管理任务一应俱全

内容简介

  与传统的关系型数据库不同,MongoDB是一种面向文档的数据库。这一版共分为六部分,涵盖开发、管理以及部署的各个方面。展示MongoDB基础知识、核心概念。第二部分介绍使用MongoDB进行开发,包括索引的概念以及各种特殊索引和集合的用法等。第三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。第四部讨论分片,包括分片的配置,片键的选择,集群的管理。第五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。一部分集中说明服务器管理。

作者简介

  KristinaChodorow,谷歌软件工程师,曾有5年是MongoDB项目的核心成员。她领导了MongoDB的副本集开发,并编写了PHP和Perl驱动程序。

  译者简介:
  邓强,软件工程师,常年关注互联网行业,对互联网产品和技术兴趣浓厚,Apple粉、Google粉。职业生涯的前几年一直从事金融行业软件系统开发,后来不顾一切投身互联网。目前在一个新成立的互联网创业小团队任职。

精彩书评

  “《MongoDB权威指南 第2版》非常棒!作者用极富实用价值的示例清楚地解释了各个复杂主题,一学就会。”
  ——读者评论

  上一版评论:
  “如同MongoDB本身一样,《MongoDB权威指南 第2版》简明扼要、通俗易懂。所有想一探MongoDB的人都需要这本不可或缺的参考手册。”
  ——《高性能MySQL》作者JeremyZawodny

目录

序XV
前言XVII
第一部分MongoDB介绍
第1章MongoDB简介
1.1易于使用
1.2易于扩展
1.3丰富的功能
1.4卓越的性能
1.5小结
第2章MongoDB基础知识
2.1文档
2.2集合
2.2.1动态模式
2.2.2命名
2.3数据库
2.4启动MongoDB
2.5MongoDBshell简介
2.5.1运行shell
2.5.2MongoDB客户端
2.5.3shell中的基本操作
2.6数据类型
2.6.1基本数据类型
2.6.2日期
2.6.3数组
2.6.4内嵌文档
2.6.5_id和ObjectId
2.7使用MongoDBshell
2.7.1shell小贴士
2.7.2使用shell执行脚本
2.7.3创建.mongorc.js文件
2.7.4定制shell提示
2.7.5编辑复合变量
2.7.6集合命名注意事项
第3章创建、更新和删除文档
3.1插入并保存文档
3.1.1批量插入
3.1.2插入校验
3.2删除文档
3.3更新文档
3.3.1文档替换
3.3.2使用修改器
3.3.3upsert
3.3.4更新多个文档
3.3.5返回被更新的文档
3.4写入安全机制
第4章查询
4.1find简介
4.1.1指定需要返回的键
4.1.2限制
4.2查询条件
4.2.1查询条件
4.2.2OR查询
4.2.3$not
4.2.4条件语义
4.3特定类型的查询
4.3.1null
4.3.2正则表达式
4.3.3查询数组
4.3.4查询内嵌文档
4.4$where查询
4.5游标
4.5.1limit、skip和sort
4.5.2避免使用skip略过大量结果
4.5.3高级查询选项
4.5.4获取一致结果
4.5.5游标生命周期
4.6数据库命令

第二部分设计应用
第5章索引
5.1索引简介
5.1.1复合索引简介
5.1.2使用复合索引
5.1.3$操作符如何使用索引
5.1.4索引对象和数组
5.1.5索引基数
5.2使用explain()和hint()
5.3何时不应该使用索引
5.4索引类型
5.4.1唯一索引
5.4.2稀疏索引
5.5索引管理
5.5.1标识索引
5.5.2修改索引
第6章特殊的索引和集合
6.1固定集合
6.1.1创建固定集合
6.1.2自然排序
6.1.3循环游标
6.1.4没有_id索引的集合
6.2TTL索引
6.3全文本索引
6.3.1搜索语法
6.3.2优化全文本搜索
6.3.3在其他语言中搜索
6.4地理空间索引
6.4.1地理空间查询的类型
6.4.2复合地理空间索引
6.4.32d索引
6.5使用GridFS存储文件
6.5.1GridFS入门
6.5.2在MongoDB驱动程序中使用GridFS
6.5.3揭开GridFS的面纱
第7章聚合
7.1聚合框架
7.2管道操作符
7.2.1$match
7.2.2$project
7.2.3$group
7.2.4$unwind
7.2.5$sort
7.2.6$limit
7.2.7$skip
7.2.8使用管道
7.3MapReduce
7.3.1示例1:找出集合中的所有键
7.3.2示例2:网页分类
7.3.3MongoDB和MapReduce
7.4聚合命令
7.4.1count
7.4.2distinct
7.4.3group
第8章应用程序设计
8.1范式化与反范式化
8.1.1数据表示的例子
8.1.2基数
8.1.3好友、粉丝,以及其他的麻烦事项
8.2优化数据操作
8.2.1优化文档增长
8.2.2删除旧数据
8.3数据库和集合的设计
8.4一致性管理
8.5模式迁移
8.6不适合使用MongoDB的场景

第三部分复制
第9章创建副本集
9.1复制简介
9.2建立副本集
9.3配置副本集
9.3.1rs辅助函数
9.3.2网络注意事项
9.4修改副本集配置
9.5设计副本集
9.6成员配置选项
9.6.1选举仲裁者
9.6.2优先级
9.6.3隐藏成员
9.6.4延迟备份节点
9.6.5创建索引
第10章副本集的组成
10.1同步
10.1.1初始化同步
10.1.2处理陈旧数据
10.2心跳
10.3选举
10.4回滚
第11章从应用程序连接副本集
11.1客户端到副本集的连接
11.2等待写入复制
11.2.1可能导致错误的原因
11.2.2"w"的其他值
11.3自定义复制保证规则
11.3.1保证复制到每个数据中心的一台服务器上
11.3.2保证写操作被复制到可见节点中的“大多数”
11.3.3创建其他规则
11.4将读请求发送到备份节点
11.4.1出于一致性考虑
11.4.2出于负载的考虑
11.4.3何时可以从备份节点读取数据
第12章管理
12.1以单机模式启动成员
12.2副本集配置
12.2.1创建副本集
12.2.2修改副本集成员
12.2.3创建比较大的副本集
12.2.4强制重新配置
12.3修改成员状态
12.3.1把主节点变为备份节点
12.3.2阻止选举
12.3.3使用维护模式
12.4监控复制
12.4.1获取状态
12.4.2复制图谱
12.4.3复制循环
12.4.4禁用复制链
12.4.5计算延迟
12.4.6调整oplog大小
12.4.7从延迟备份节点中恢复
12.4.8创建索引
12.4.9在预算有限的情况下进行复制
12.4.10主节点如何跟踪延迟
12.5主从模式
12.5.1从主从模式切换到副本集模式
12.5.2让副本集模仿主从模式的行为

第四部分分片
第13章分片
13.1分片简介
13.2理解集群的组件
13.3快速建立一个简单的集群
第14章配置分片
14.1何时分片
14.2启动服务器
14.2.1配置服务器
14.2.2mongos进程
14.2.3将副本集转换为分片
14.2.4增加集群容量
14.2.5数据分片
14.3MongoDB如何追踪集群数据
14.3.1块范围
14.3.2拆分块
14.4均衡器
第15章选择片键
15.1检查使用情况
15.2数据分发
15.2.1升序片键
15.2.2随机分发的片键
15.2.3基于位置的片键
15.3片键策略
15.3.1散列片键
15.3.2GridFS的散列片键
15.3.3流水策略
15.3.4多热点
15.4片键规则和指导方针
15.4.1片键限制
15.4.2片键的势
15.5控制数据分发
15.5.1对多个数据库和集合使用一个集群
15.5.2手动分片
第16章分片管理
16.1检查集群状态
16.1.1使用sh.status查看集群摘要信息
16.1.2检查配置信息
16.2查看网络连接
16.2.1查看连接统计
16.2.2限制连接数量
16.3服务器管理
16.3.1添加服务器
16.3.2修改分片的服务器
16.3.3删除分片
16.3.4修改配置服务器
16.4数据均衡
16.4.1均衡器
16.4.2修改块大小
16.4.3移动块
16.4.4特大块
16.4.5刷新配置

第五部分应用管理
第17章了解应用的动态
17.1了解正在进行的操作
17.1.1寻找有问题的操作
17.1.2终止操作的执行
17.1.3假象
17.1.4避免幽灵操作
17.2使用系统分析器
17.3计算空间消耗
17.3.1文档
17.3.2集合
17.3.3数据库
17.4使用mongotop和monogostat
第18章数据管理
18.1配置身份验证
18.1.1身份验证基本原理
18.1.2配置身份验证
18.1.3身份验证的工作原理
18.2建立和删除索引
18.2.1在独立的服务器上建立索引
18.2.2在副本集上建立索引
18.2.3在分片集群上建立索引
18.2.4删除索引
18.2.5注意内存溢出杀手
18.3预热数据
18.3.1将数据库移至内存
18.3.2将集合移至内存
18.3.3自定义预热
18.4压缩数据
18.5移动集合
18.6预分配数据文件
第19章持久性
19.1日记系统的用途
19.1.1批量提交写入操作
19.1.2设定提交时间间隔
19.2关闭日记系统
19.2.1替换数据文件
19.2.2修复数据文件
19.2.3关于mongod.lock文件
19.2.4隐蔽的异常退出
19.3MongoDB无法保证的事项
19.4检验数据损坏
19.5副本集中的持久性

第六部分服务器管理
第20章启动和停止MongoDB
20.1从命令行启动
20.2停止MongoDB
20.3安全性
20.3.1数据加密
20.3.2SSL安全连接
20.4日志
第21章监控MongoDB
21.1监控内存使用状况
21.1.1有关电脑内存的介绍
21.1.2跟踪监测内存使用状况
21.1.3跟踪监测缺页中断
21.1.4减少索引树的脱靶次数
21.1.5IO延迟
21.1.6跟踪监测后台刷新平均时间
21.2计算工作集的大小
21.3跟踪监测性能状况
21.4监控副本集
第22章备份
22.1对服务器进行备份
22.1.1文件系统快照
22.1.2复制数据文件
22.1.3使用mongodump
22.2对副本集进行备份
22.3对分片集群进行备份
22.3.1备份和恢复整个集群
22.3.2备份和恢复单独的分片
22.4使用mongooplog进行增量备份
第23章部署MongoDB
23.1设计系统结构
23.1.1选择存储介质
23.1.2推荐的RAID配置
23.1.3CPU
23.1.4选择操作系统
23.1.5交换空间
23.1.6文件系统
23.2虚拟化
23.2.1禁止内存过度分配
23.2.2神秘的内存
23.2.3处理网络磁盘的IO问题
23.2.4使用非网络磁盘
23.3系统配置
23.3.1禁用NUMA
23.3.2更智能地预读取数据
23.3.3禁用大内存页面
23.3.4选择一种磁盘调度算法
23.3.5不要记录访问时间
23.3.6修改限制
23.4网络配置
23.5系统管理
23.5.1时钟同步
23.5.2OOMKiller
23.5.3关闭定期任务

附录A安装MongoDB
附录B深入MongoDB

精彩书摘

  9.3.1rs辅助函数
  注意上面的rsinitiate()命令中的rs。rs是一个全局变量,其中包含与复制相关的辅助函数(可以执行rs.hetp()查看可用的辅助函数)。这些函数大多只是数据库命令的包装器。
  对辅助函数和底层的数据库命令都做些了解是非常好的,有时直接使用数据库命令比使用辅助函数要简单。
  9.3.2网络注意事项
  副本集内的每个成员都必须能够连接到其他所有成员(包括自身)。如果遇到某些成员不能到达其他运行中成员的错误,就需要更改网络配置以便各个成员能够相互连通。另外,副本集的配置中不应该使用localhost作为主机名。如果所有副本集成员都运行在同一台机器上,那么localhost可以被正确解析,但是运行在一台机器上的副本集意义不大;如果副本集是运行在多台机器上的,那么localhost就无法被解析为正确的主机名。MongoDB允许副本集的所有成员都运行在同一台机器上,这样可以方便在本地测试,但是如果在配置中混用localhost和非localhost主机名的话,MongoDB会给出警告。
  9.4修改副本集配置
  可以随时修改副本集的配置:可以添加或者删除成员,也可以修改已有的成员。很多常用操作都有对应的shell辅助函数,比如,可以使用rs.add为副本集添加新成员。
  ……

前言/序言

  《MongoDB权威指南 第2版》的组织结构
  《MongoDB权威指南 第2版》分为六个部分,涵盖了开发、管理以及部署的方方面面。
  熟悉MongoDB
  第1章将简要讲述MongoDB的背景:项目创立原因,希望达到的目标,选用它的理由。第2章接着介绍一些MongoDB的核心概念和术语,还有如何上手操作数据库和shell的相关内容。接下来两章介绍MongoDB开发者需要掌握的基础知识。第3章展示如何执行基本的写入操作,包括在不同安全和速度等级下的实现细节。第4章主要介绍如何查找文档和创建复杂的查询。这一章还包括如何迭代结果集和其他一些用于处理结果集的方法,比如限制结果集的数量,略过一些结果,以及对结果集排序。
  使用MongoDB进行开发
  第5章将介绍什么是索引以及如何为MongoDB的集合建立索引。第6章说明如何使用各种特殊类型的索引和集合。第7章展示一些利用MongoDB聚集数据的方法,包括计数、查找唯一值、文档分组、聚合框架和MapReduce。这一部分的最后一章会介绍如何设计应用程序:第8章讲述如何更好地在应用程序中使用MongoDB。
  复制
  第9章开始介绍复制,着重讲述如何快速在本地建立一个副本集,还会介绍一些可用选项。第10章涵盖了与副本集相关的一些概念。第11章展示了副本集与应用程序的交互。第12章从管理的角度介绍副本集的运行。
  分片
  第13章开始介绍分片,并通过一个例子展示如何快速地在本地进行分片。第14章介绍集群的组成以及设置。第15章介绍如何为不同的应用程序选择合适的片键。最后,第16章介绍分片集群的管理。
  应用程序管理
  接下来两章从应用程序的角度介绍MongoDB管理的很多方面。第17章讲述如何查看MongoDB正在进行的操作。第18章介绍一些管理任务,比如创建索引、移动和压缩数据。第19章介绍MongoDB的持久数据存储。
  服务器管理
  最后一部分集中介绍服务器管理。第20章将给出启动和终止MongoDB时的一些通用选项。第21章讨论在监控数据库运行时如何查看监控信息。第22章介绍在不同类型的部署中如何备份和恢复数据库。最后,第23章将介绍部署MongoDB时需要牢记于心的一些系统设置。
  附录
  附录A介绍了MongoDB的版本控制方案,以及在Windows、OSX和Linux上的安装细节。附录B详细说明了MongoDB的内部工作原理:存储引擎、数据格式和传输协议。
  《MongoDB权威指南 第2版》排版规范
  《MongoDB权威指南 第2版》使用的排版规范如下所示。
  ·楷体
  用于表示新的术语。
  ·等宽字体
  表示程序片段,也在段落中表示程序中使用的变量、函数名、命令行实用工具、环境变量、语句和关键字等元素。
  ·等宽斜体
  用户需要根据自己提供的值或由上下文确定的值进行更改的部分。
  使用代码示例
  让《MongoDB权威指南 第2版》助你一臂之力。也许你要在自己的程序或文档中用到《MongoDB权威指南 第2版》中的代码。除非大段大段地使用,否则不必与我们联系取得授权。例如,无需请求许可,就可以用《MongoDB权威指南 第2版》中的几段代码写成一个程序。但是销售或者发布O’Reilly图书中代码的光盘则必须事先获得授权。引用书中的代码来回答问题也无需授权。将大段的示例代码整合到你自己的产品文档中则必须经过许可。
  我们非常感谢你能标明出处,但并不强求。出处一般包括书名、作者、出版商和ISBN,例如《MongoDB权威指南(第2版)》,KristinaChodorow著(O’Reilly,2013)。版权所有,978-1-449-34468-9。
  如果有关于使用代码的未尽事宜,可以随时与我们联系:permissions@oreilly.com
  Safari在线图书
  Safari在线图书(www.safaribooksonline.com)是应需而变的数字图书馆。它同时以图书和视频的形式出版世界顶级技术和商务作家的专业作品。
  SafariBooksOnline是技术专家、软件开发人员、Web设计师、商务人士和创意人士开展调研、解决问题、学习和认证培训的第一手资料。
  对于组织团体、政府机构和个人,SafariBooksOnline提供各种产品组合和灵活的定价策略。用户可通过一个功能完备的数据库检索系统访问O’ReillyMedia、PrenticeHallProfessional、Addison-WesleyProfessional、MicrosoftPress、Sams、Que、PeachpitPress、FocalPress、CiscoPress、JohnWiley&Sons、Syngress、MorganKaufmann、IBMRedbooks、Packt、AdobePress、FTPress、Apress、Manning、NewRiders、McGraw-Hill、Jones&Bartlett、CourseTechnology以及其他几十家出版社的上千种图书、培训视频和正式出版之前的书稿。要了解SafariBooksOnline的更多信息,我们网上见。

其他推荐