编辑推荐
上一版广受好评,新版本在此基础上大幅扩充,内容更加全面、深入
MongoDB项目组成员倾力打造
MongoDB基础知识、进阶内容、高级管理任务一应俱全
内容简介
与传统的关系型数据库不同,MongoDB是一种面向文档的数据库。这一版共分为六部分,涵盖开发、管理以及部署的各个方面。展示MongoDB基础知识、核心概念。第二部分介绍使用MongoDB进行开发,包括索引的概念以及各种特殊索引和集合的用法等。第三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。第四部讨论分片,包括分片的配置,片键的选择,集群的管理。第五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。一部分集中说明服务器管理。
作者简介
Kristina Chodorow,谷歌软件工程师,曾有5年是MongoDB项目的核心成员。她领导了MongoDB的副本集开发,并编写了PHP和Perl驱动程序。
译者简介:
邓强,软件工程师,常年关注互联网行业,对互联网产品和技术兴趣浓厚,Apple粉、Google粉。职业生涯的前几年一直从事金融行业软件系统开发,后来不顾一切投身互联网。目前在一个新成立的互联网创业小团队任职。
内页插图
精彩书评
“本书非常棒!作者用极富实用价值的示例清楚地解释了各个复杂主题,一学就会。”
——读者评论
上一版评论:
“如同MongoDB本身一样,本书简明扼要、通俗易懂。所有想一探MongoDB的人都需要这本不可或缺的参考手册。”
——《高性能MySQL》作者Jeremy Zawodny
目录
序 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.5 MongoDB shell简介
2.5.1 运行shell
2.5.2 MongoDB客户端
2.5.3 shell中的基本操作
2.6 数据类型
2.6.1 基本数据类型
2.6.2 日期
2.6.3 数组
2.6.4 内嵌文档
2.6.5 _id和ObjectId
2.7 使用MongoDB shell
2.7.1 shell小贴士
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.3 upsert
3.3.4 更新多个文档
3.3.5 返回被更新的文档
3.4 写入安全机制
第4章 查询
4.1 find简介
4.1.1 指定需要返回的键
4.1.2 限制
4.2 查询条件
4.2.1 查询条件
4.2.2 OR查询
4.2.3 $not
4.2.4 条件语义
4.3 特定类型的查询
4.3.1 null
4.3.2 正则表达式
4.3.3 查询数组
4.3.4 查询内嵌文档
4.4 $where查询
4.5 游标
4.5.1 limit、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.2 TTL索引
6.3 全文本索引
6.3.1 搜索语法
6.3.2 优化全文本搜索
6.3.3 在其他语言中搜索
6.4 地理空间索引
6.4.1 地理空间查询的类型
6.4.2 复合地理空间索引
6.4.3 2d索引
6.5 使用GridFS存储文件
6.5.1 GridFS入门
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.3 MapReduce
7.3.1 示例1:找出集合中的所有键
7.3.2 示例2:网页分类
7.3.3 MongoDB和MapReduce
7.4 聚合命令
7.4.1 count
7.4.2 distinct
7.4.3 group
第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.1 rs辅助函数
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.2 mongos进程
14.2.3 将副本集转换为分片
14.2.4 增加集群容量
14.2.5 数据分片
14.3 MongoDB如何追踪集群数据
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.2 GridFS的散列片键
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.3 MongoDB无法保证的事项
19.4 检验数据损坏
19.5 副本集中的持久性
第六部分 服务器管理
第20章 启动和停止MongoDB
20.1 从命令行启动
20.2 停止MongoDB
20.3 安全性
20.3.1 数据加密
20.3.2 SSL安全连接
20.4 日志
第21章 监控MongoDB
21.1 监控内存使用状况
21.1.1 有关电脑内存的介绍
21.1.2 跟踪监测内存使用状况
21.1.3 跟踪监测缺页中断
21.1.4 减少索引树的脱靶次数
21.1.5 IO延迟
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.3 CPU
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.2 OOM Killer
23.5.3 关闭定期任务
附录A 安装MongoDB
附录B 深入MongoDB
精彩书摘
9.3.1 rs辅助函数
注意上面的rs initiate()命令中的rs。rs是一个全局变量,其中包含与复制相关的辅助函数(可以执行rs.hetp()查看可用的辅助函数)。这些函数大多只是数据库命令的包装器。
对辅助函数和底层的数据库命令都做些了解是非常好的,有时直接使用数据库命令比使用辅助函数要简单。
9.3.2网络注意事项
副本集内的每个成员都必须能够连接到其他所有成员(包括自身)。如果遇到某些成员不能到达其他运行中成员的错误,就需要更改网络配置以便各个成员能够相互连通。另外,副本集的配置中不应该使用localhost作为主机名。如果所有副本集成员都运行在同一台机器上,那么localhost可以被正确解析,但是运行在一台机器上的副本集意义不大;如果副本集是运行在多台机器上的,那么localhost就无法被解析为正确的主机名。MongoDB允许副本集的所有成员都运行在同一台机器上,这样可以方便在本地测试,但是如果在配置中混用localhost和非localhost主机名的话,MongoDB会给出警告。
9.4修改副本集配置
可以随时修改副本集的配置:可以添加或者删除成员,也可以修改已有的成员。很多常用操作都有对应的shell辅助函数,比如,可以使用rs.add为副本集添加新成员。
……
前言/序言
本书的组织结构
本书分为六个部分,涵盖了开发、管理以及部署的方方面面。
熟悉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、OS X 和Linux 上的安装细节。附录B 详细说明了MongoDB 的内部工作原理:存储引擎、数据格式和传输协议。
本书排版规范
本书使用的排版规范如下所示。
· 楷体
用于表示新的术语。
· 等宽字体
表示程序片段,也在段落中表示程序中使用的变量、函数名、命令行实用工具、环境变量、语句和关键字等元素。
· 等宽斜体
用户需要根据自己提供的值或由上下文确定的值进行更改的部分。
使用代码示例
让本书助你一臂之力。也许你要在自己的程序或文档中用到本书中的代码。除非大段大段地使用,否则不必与我们联系取得授权。例如,
MongoDB权威指南 第2版 [MongoDB: The Definitive Guide, Second Edition] epub pdf mobi txt 电子书 下载 2024
MongoDB权威指南 第2版 [MongoDB: The Definitive Guide, Second Edition] 下载 epub mobi pdf txt 电子书 2024
MongoDB权威指南 第2版 [MongoDB: The Definitive Guide, Second Edition] mobi pdf epub txt 电子书 下载 2024
MongoDB权威指南 第2版 [MongoDB: The Definitive Guide, Second Edition] epub pdf mobi txt 电子书 下载 2024