阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      MongoDB 权威指南

      MongoDB 权威指南

      编辑推荐

      上一版广受好评,新版本在此基础上大幅扩充,内容更加全面、深入

      MongoDB 项目组成员倾力打造

      MongoDB 基础知识、进阶内容、高级管理任务一应俱全

      内容简介

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

      作者简介

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

      译者简介

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

      目录

      第一部分 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
      目录
      目录