MongoDB权威指南(第2版)【MongoDB项目核心团队成员倾力打造,权威著作,无可替代】(预计上市:1月9日)
与传统的关系型数据库不同,MongoDB是一种面向文档的数据库。《MongoDB权威指南(第2版)》这一版共分为六部分,涵盖开发、管理以及部署的各个方面。第一部分展示MongoDB基础知识、核心概念。第二部分介绍使用MongoDB进行开发,包括索引的概念以及各种特殊索引和集合的用法等。第三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。第四部讨论分片,包括分片的配置,片键的选择,集群的管理。第五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。最后一部分集中说明服务器管理。
《MongoDB权威指南(第2版)》适合数据库开发和管理人员阅读。
《MongoDB权威指南(第2版)》适合数据库开发和管理人员阅读。
序
前言
第一部分 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
^ 收 起
前言
第一部分 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
^ 收 起
与传统的关系型数据库不同,MongoDB是一种面向文档的数据库。《MongoDB权威指南(第2版)》这一版共分为六部分,涵盖开发、管理以及部署的各个方面。第一部分展示MongoDB基础知识、核心概念。第二部分介绍使用MongoDB进行开发,包括索引的概念以及各种特殊索引和集合的用法等。第三部分讲述复制,包括副本集的相关概念、创建方法,与应用程序的交互等。第四部讨论分片,包括分片的配置,片键的选择,集群的管理。第五部分阐述创建索引、移动和压缩数据等管理任务,以及MongoDB的持久数据存储。最后一部分集中说明服务器管理。
《MongoDB权威指南(第2版)》适合数据库开发和管理人员阅读。
《MongoDB权威指南(第2版)》适合数据库开发和管理人员阅读。
比价列表