MongoDB权威指南(第3版)
Shannon Bradshaw, Eoin Brazil, Kristina Chodorow
牟天垒, 王明辉 译
出版时间:2021年11月
页数:388
如果你希望使用支持现代应用程序开发的系统来管理数据,那么MongoDB是不错的选择。作为面向文档的NoSQL数据库,MongoDB功能强大、灵活且易于扩展,在DB-Engines数据库流行度排行榜上名列前茅。
本书是由MongoDB团队成员撰写的一站式入门指南,涵盖从开发到部署的各个方面,内容适合MongoDB 4.2及以上版本。通过学习本书,你将了解这一安全、高性能的系统如何支持灵活的数据模型,并兼具高可用性和水平扩展性。无论你是NoSQL新手还是有经验的MongoDB用户,都可以在查询、索引、聚合、事务、副本集、分片、监控和安全等方面收获新的知识。
● 使用MongoDB执行写操作、查找文档并进行复杂的查询
● 对集合进行索引,对数据进行聚合,在应用程序中使用事务
● 配置本地副本集,并了解复制机制如何与应用程序交互
● 创建集群的各个组件,并为不同类型的应用程序选择片键
● 探索应用程序管理的各个方面,并配置身份验证和授权
● 使用工具进行监控、备份和恢复,并在部署MongoDB时对系统进行设置
  1. 前言
  2. 第一部分 MongoDB入门
  3. 第1章 MongoDB简介 
  4. 1.1 易于使用 
  5. 1.2 易于扩展
  6. 1.3 功能丰富 
  7. 1.4 性能卓越 
  8. 1.5 设计理念 
  9. 第2章 入门指南 
  10. 2.1 文档 
  11. 2.2 集合 
  12. 2.2.1 动态模式
  13. 2.2.2 命名 
  14. 2.3 数据库 
  15. 2.4 启动MongoDB 
  16. 2.5 MongoDB shell介绍 
  17. 2.5.1 运行shell 
  18. 2.5.2 MongoDB客户端 
  19. 2.5.3 shell中的基本操作 
  20. 2.6 数据类型 
  21. 2.6.1 基本数据类型 
  22. 2.6.2 日期 
  23. 2.6.3 数组 
  24. 2.6.4 内嵌文档 
  25. 2.6.5 ObjectId和_id 
  26. 2.7 使用MongoDB shell 
  27. 2.7.1 shell使用技巧 
  28. 2.7.2 使用shell执行脚本 
  29. 2.7.3 创建.mongorc.js文件 
  30. 2.7.4 定制shell提示信息 
  31. 2.7.5 编辑复杂变量 
  32. 2.7.6 不便使用的集合名称 
  33. 第3章 创建、更新和删除文档 
  34. 3.1 插入文档 
  35. 3.1.1 insertMany 
  36. 3.1.2 插入校验 
  37. 3.1.3 插入 
  38. 3.2 删除文档 
  39. 3.3 更新文档 
  40. 3.3.1 文档替换 
  41. 3.3.2 使用更新运算符 
  42. 3.3.3 upsert 
  43. 3.3.4 更新多个文档 
  44. 3.3.5 返回被更新的文档 
  45. 第4章 查询 
  46. 4.1 find简介 
  47. 4.1.1 指定要返回的键 
  48. 4.1.2 限制 
  49. 4.2 查询条件 
  50. 4.2.1 查询条件 
  51. 4.2.2 OR查询 
  52. 4.2.3 $not 
  53. 4.3 特定类型的查询 
  54. 4.3.1 null 
  55. 4.3.2 正则表达式 
  56. 4.3.3 查询数组 
  57. 4.3.4 查询内嵌文档 
  58. 4.4 $where查询 
  59. 4.5 游标 
  60. 4.5.1 limit、skip和sort
  61. 4.5.2 避免略过大量结果 
  62. 4.5.3 游标生命周期 
  63. 第二部分 设计应用程序
  64. 第5章 索引 
  65. 5.1 索引简介 
  66. 5.1.1 创建索引 
  67. 5.1.2 复合索引简介 
  68. 5.1.3 MongoDB如何选择索引 
  69. 5.1.4 使用复合索引 
  70. 5.1.5 $运算符如何使用索引 
  71. 5.1.6 索引对象和数组 
  72. 5.1.7 索引基数 
  73. 5.2 explain输出 
  74. 5.3 何时不使用索引 
  75. 5.4 索引类型 
  76. 5.4.1 唯一索引 
  77. 5.4.2 部分索引 
  78. 5.5 索引管理 
  79. 5.5.1 标识索引 
  80. 5.5.2 修改索引 
  81. 第6章 特殊的索引和集合类型 
  82. 6.1 地理空间索引 
  83. 6.1.1 地理空间查询的类型 
  84. 6.1.2 使用地理空间索引 
  85. 6.1.3 复合地理空间索引 
  86. 6.1.4 2d索引 
  87. 6.2 全文搜索索引 
  88. 6.2.1 创建文本索引 
  89. 6.2.2 文本查询 
  90. 6.2.3 优化全文本搜索 
  91. 6.2.4 在其他语言中搜索 
  92. 6.3 固定集合 
  93. 6.3.1 创建固定集合 
  94. 6.3.2 可追加游标 
  95. 6.4 TTL索引 
  96. 6.5 使用GridFS存储文件 
  97. 6.5.1 GridFS入门:mongofiles 
  98. 6.5.2 在MongoDB驱动程序中使用GridFS 
  99. 6.5.3 GridFS的底层机制 
  100. 第7章 聚合框架 
  101. 7.1 管道、阶段和可调参数 
  102. 7.2 阶段入门:常见操作 
  103. 7.3 表达式 
  104. 7.4 $project 
  105. 7.5 $unwind 
  106. 7.6 数组表达式 
  107. 7.7 累加器 
  108. 7.8 分组简介 
  109. 7.8.1 分组阶段中的_id字段 
  110. 7.8.2 分组与投射 
  111. 7.9 将聚合管道结果写入集合中 
  112. 第8章 事务 
  113. 8.1 事务简介 
  114. 8.2 如何使用事务 
  115. 8.3 对应用程序的事务限制进行调优 
  116. 第9章 应用程序设计 
  117. 9.1 模式设计注意事项 
  118. 9.2 范式化与反范式化 
  119. 9.2.1 数据表示的示例 
  120. 9.2.2 基数 
  121. 9.2.3 好友、粉丝以及其他麻烦事项 
  122. 9.3 优化数据操作 
  123. 9.4 数据库和集合的设计 
  124. 9.5 一致性管理 
  125. 9.6 模式迁移 
  126. 9.7 模式管理 
  127. 9.8 不适合使用MongoDB的场景 
  128. 第三部分 复制
  129. 第10章 创建副本集 
  130. 10.1 复制简介 
  131. 10.2 建立副本集(一) 
  132. 10.3 网络注意事项 
  133. 10.4 安全注意事项 
  134. 10.5 建立副本集(二) 
  135. 10.6 观察副本集 
  136. 10.7 更改副本集配置 
  137. 10.8 如何设计副本集 
  138. 10.9 成员配置选项 
  139. 10.9.1 优先级 
  140. 10.9.2 隐藏成员 
  141. 10.9.3 选举仲裁者 
  142. 10.9.4 创建索引 
  143. 第11章 副本集的组成 
  144. 11.1 同步 
  145. 11.1.1 初始化同步 
  146. 11.1.2 复制 
  147. 11.1.3 处理过时数据 
  148. 11.2 心跳 
  149. 11.3 选举 
  150. 11.4 回滚 
  151. 第12章 从应用程序连接副本集 
  152. 12.1 客户端到副本集的连接行为 
  153. 12.2 在写入时等待复制 
  154. 12.3 自定义复制保证规则 
  155. 12.3.1 保证复制到每个数据中心的一台服务器上 
  156. 12.3.2 保证写操作被复制到大多数非隐藏节点 
  157. 12.3.3 创建其他保证规则 
  158. 12.4 将读请求发送到从节点 
  159. 12.4.1 一致性考虑 
  160. 12.4.2 负载考虑 
  161. 12.4.3 由从节点读取数据的场景 
  162. 第13章 管理 
  163. 13.1 以单机模式启动成员 
  164. 13.2 副本集配置 
  165. 13.2.1 创建副本集 
  166. 13.2.2 更改副本集成员 
  167. 13.2.3 创建比较大的副本集 
  168. 13.2.4 强制重新配置 
  169. 13.3 控制成员状态 
  170. 13.3.1 把主节点变为从节点 
  171. 13.3.2 阻止选举 
  172. 13.4 监控复制 
  173. 13.4.1 获取状态 
  174. 13.4.2 可视化复制图谱 
  175. 13.4.3 复制循环 
  176. 13.4.4 禁用复制链 
  177. 13.4.5 计算延迟 
  178. 13.4.6 调整oplog大小 
  179. 13.4.7 创建索引 
  180. 13.4.8 在预算有限的情况下进行复制 
  181. 第四部分 分片
  182. 第14章 分片简介 
  183. 14.1 什么是分片 
  184. 14.2 理解集群组件 
  185. 14.3 在单机集群上进行分片 
  186. 第15章 配置分片 
  187. 15.1 何时分片 
  188. 15.2 启动服务器 
  189. 15.2.1 配置服务器 
  190. 15.2.2 mongos进程 
  191. 15.2.3 将副本集转换为分片 
  192. 15.2.4 增加集群容量 
  193. 15.2.5 数据分片 
  194. 15.3 MongoDB如何追踪集群数据 
  195. 15.3.1 块范围 
  196. 15.3.2 拆分块 
  197. 15.4 均衡器 
  198. 15.5 排序规则 
  199. 15.6 变更流 
  200. 第16章 选择片键 
  201. 16.1 评估使用情况 
  202. 16.2 描绘分发情况 
  203. 16.2.1 升序片键 
  204. 16.2.2 随机分发的片键 
  205. 16.2.3 基于位置的片键 
  206. 16.3 片键策略 
  207. 16.3.1 哈希片键 
  208. 16.3.2 GridFS的哈希片键 
  209. 16.3.3 消防水管策略 
  210. 16.3.4 多热点 
  211. 16.4 片键规则和指导方针 
  212. 16.4.1 片键的限制 
  213. 16.4.2 片键的基数 
  214. 16.5 控制数据分发 
  215. 16.5.1 对多个数据库和集合使用一个集群 
  216. 16.5.2 手动分片 
  217. 第17章 分片管理 
  218. 17.1 查看当前状态 
  219. 17.1.1 使用sh.status()查看摘要信息 
  220. 17.1.2 查看配置信息 
  221. 17.2 跟踪网络连接 
  222. 17.2.1 获取连接统计 
  223. 17.2.2 限制连接数量 
  224. 17.3 服务器管理 
  225. 17.3.1 添加服务器 
  226. 17.3.2 修改分片中的服务器 
  227. 17.3.3 删除分片 
  228. 17.4 数据均衡 
  229. 17.4.1 均衡器 
  230. 17.4.2 修改块的大小 
  231. 17.4.3 移动块 
  232. 17.4.4 超大块 
  233. 17.4.5 刷新配置 
  234. 第五部分 应用程序管理
  235. 第18章 了解应用程序的动态 
  236. 18.1 查看当前操作 
  237. 18.1.1 寻找有问题的操作 
  238. 18.1.2 终止操作 
  239. 18.1.3 假象 
  240. 18.1.4 防止幻象操作 
  241. 18.2 使用系统分析器 
  242. 18.3 计算大小 
  243. 18.3.1 文档 
  244. 18.3.2 集合 
  245. 18.3.3 数据库 
  246. 18.4 使用mongotop和mongostat 
  247. 第19章 MongoDB安全介绍 
  248. 19.1 MongoDB的身份验证和授权 
  249. 19.1.1 身份验证机制 
  250. 19.1.2 授权 
  251. 19.1.3 使用x.509证书对成员和客户端进行身份验证 
  252. 19.2 MongoDB的认证和传输层加密教程 
  253. 19.2.1 建立CA 
  254. 19.2.2 生成并签名成员证书 
  255. 19.2.3 生成并签名客户端证书 
  256. 19.2.4 在不启用身份验证和授权的情况下启动副本集 
  257. 19.2.5 创建admin用户 
  258. 19.2.6 启用身份验证和授权并重新启动副本集 
  259. 第20章 持久性 
  260. 20.1 使用日志机制的成员级别持久性 
  261. 20.2 使用写关注的集群级别持久性 
  262. 20.2.1 writeConcern的w和wtimeout选项 
  263. 20.2.2 writeConcern的j(日志)选项 
  264. 20.3 使用读关注的集群级别持久性 
  265. 20.4 使用写关注的事务持久性 
  266. 20.5 MongoDB不能保证什么 
  267. 20.6 检查数据损坏 
  268. 第六部分 服务器端管理
  269. 第21章 在生产环境中设置MongoDB 
  270. 21.1 从命令行启动 
  271. 21.2 停止MongoDB 
  272. 21.3 安全性 
  273. 21.3.1 数据加密 
  274. 21.3.2 SSL连接 
  275. 21.4 日志 
  276. 第22章 监控MongoDB 
  277. 22.1 监控内存使用情况 
  278. 22.1.1 计算机内存简介 
  279. 22.1.2 跟踪内存使用情况 
  280. 22.1.3 跟踪缺页错误 
  281. 22.1.4 I/O等待 
  282. 22.2 计算工作集的大小 
  283. 22.3 跟踪性能情况 
  284. 22.4 跟踪剩余空间 
  285. 22.5 监控复制情况 
  286. 第23章 备份 
  287. 23.1 备份方法 
  288. 23.2 对服务器进行备份 
  289. 23.2.1 文件系统快照 
  290. 23.2.2 复制数据文件 
  291. 23.2.3 使用mongodump 
  292. 23.3 副本集的特殊注意事项 
  293. 23.4 分片集群的特殊注意事项 
  294. 23.4.1 备份和恢复整个集群 
  295. 23.4.2 备份和恢复单个分片 
  296. 第 24 章 部署MongoDB 
  297. 24.1 系统设计 
  298. 24.1.1 选择存储介质 
  299. 24.1.2 推荐的RAID配置 
  300. 24.1.3 CPU 
  301. 24.1.4 操作系统 
  302. 24.1.5 交换空间 
  303. 21.1.6 文件系统 
  304. 24.2 虚拟化 
  305. 24.2.1 内存过度分配 
  306. 24.2.2 神秘的内存 
  307. 24.2.3 处理网络磁盘的I/O问题 
  308. 24.2.4 使用非网络磁盘 
  309. 24.3 配置系统设置 
  310. 24.3.1 关闭NUMA 
  311. 24.3.2 设置预读 
  312. 24.3.3 禁用透明大内存页(THP) 
  313. 24.3.4 选择磁盘调度算法 
  314. 24.3.5 禁用访问时间跟踪 
  315. 24.3.6 修改限制 
  316. 24.4 网络配置 
  317. 24.5 系统管理 
  318. 24.5.1 时钟同步 
  319. 24.5.2 OOM killer 
  320. 24.5.3 关闭定期任务 
  321. 附录A 安装MongoDB 
  322. 附录B 深入MongoDB 
书名:MongoDB权威指南(第3版)
译者:牟天垒, 王明辉 译
国内出版社:人民邮电出版社
出版时间:2021年11月
页数:388
书号:978-7-115-57653-8
原版书书名:MongoDB: The Definitive Guide, 3rd Edition
原版书出版商:O'Reilly Media
Shannon Bradshaw
 
香农·布拉德肖(Shannon Bradshaw)是MongoDB公司培训部门副总裁,负责管理MongoDB专业认证项目提供的培训产品。
 
 
Eoin Brazil
 
约恩·布拉齐尔(Eoin Brazil)是MongoDB公司高级课程工程师,致力于开发与MongoDB相关的在线培训产品。
 
 
Kristina Chodorow
 
kristina chodorow,谷歌软件工程师,曾有5年是mongodb项目的核心成员。她领导了mongodb的副本集开发,并编写了php和perl驱动程序。
 
 
购买选项
定价:129.80元
书号:978-7-115-57653-8
出版社:人民邮电出版社