第一图书网

深入学习MongoDB

Kristina Chodorow 人民邮电出版社
出版时间:

2012-3  

出版社:

人民邮电出版社  

作者:

Kristina Chodorow  

页数:

121  

译者:

巨 成,程显峰  

Tag标签:

无  

内容概要

  本书分两部分,分别来自O’Reilly的《MongoDB扩展技术》与《MongoDB开发技巧50例》两书。
  前一部分“MongoDB扩展技术”指导大家创建一个不断增长以满足应用程序需求的MongoDB集群,内容简明扼要,指导用户设置和使用集群存储大量数据并高效访问数据。此外,读者还可了解如何让应用程序兼容分布式数据库系统。
  具体的主题有:
  通过分片设置MongoDB集群;
  在集群中查询和更新数据;
  操作、监控和备份集群;
  从程序设计角度,考虑如何应对分片、配置服务器或者mongos进程停止运行的情况。
  遵照其中建议,你很快就可通过MongoDB构建和运行一个高效的、可预测的分布式系统。
  对于用户而言,MongoDB上手很容易,但是构建使用MongoDB的应用程序时,一些棘手的问题便会接踵而来。怎样权衡范式化与反范式化?怎样处理复制
组失效的情况并进行故障恢复?本书第二部分“MongoDB开发技巧50例”呈现了一系列的MongoDB提示和技巧,可帮助用户解决与应用程序设计与实
现、数据安全和监控有关的各种问题。
  内容涵盖10gen公司工程师的实际指导,并通过以下5个话题展开了论述。
  应用设计技巧:模式设计阶段应注意的问题
  实现技巧:基于MongoDB编写应用程序
  优化技巧:为应用提速
  数据安全技巧:在不牺牲太多性能的情况下,利用复制和日志保证数据安全
  管理技巧:配置MongoDB并确保其平滑运行

作者简介

  Kristina Chodorow
10gen公司的软件工程师,MongoDB项目的核心成员,从事与数据库服务器、PHP驱动、Perl驱动等相关的工作。她常在世界级技术大会上作报告,包括OSCON、LinuxCon、FOSDEM和Latinoware。

书籍目录

MongoDB 扩展技术
 第1章 欢迎来到分布式计算的世界   
 第2章 理解分片   
  2.1 分割数据  
  2.1.1 分配数据   
  2.1.2 如何创建块   
  2.2 平衡   
  2.3 mongos   
  2.4 配置服务器   
  2.5 集群的构造   
 第3章 建立集群   
  3.1 选择片键   
  3.1.1 小基数片键   
  3.1.2 升序片键   
  3.1.3 随机片键   
  3.1.4 好片键   
  3.2 新老集合分片   
  3.2.1 快速起步   
  3.2.2 配置服务器   
  3.2.3 mongos   
  3.2.4 分片   
  3.2.5 数据库和集合   
  3.3 增减容量   
  3.3.1 移除分片   
  3.3.2 修改分片中的服务器   
 第4章 使用集群   
  4.1 查询   
  4.2 为什么会这样   
  4.2.1 计数   
  4.2.2 唯一索引   
  4.2.3 更新   
  4.3 MapReduce   
 第5章 管理   
  5.1 使用命令行   
  5.1.1 了解概况   
  5.1.2 配置集合   
  5.1.3 应该连接什么   
  5.2 监控   
  5.2.1 mongostat   
  5.2.2 Web 管理界面   
  5.3 备份   
  5.4 关于架构的建议   
  5.4.1 创建应急站点   
  5.4.2 挖护城河   
  5.5 错误处理   
  5.5.1 分片停机   
  5.5.2 多数分片停机   
  5.5.3 配置服务器停机   
  5.5.4 mongos 进程死掉   
  5.5.5 其他注意事项   
 第6章 学习资源   
MongoDB 开发技巧50例
 第1章 应用设计技巧   
  1.1 技巧1:速度和完整性的折中   
  1.1.1 示例:网上购物车   
  1.1.2 考虑因素   
  1.2 技巧2:适应未来的数据要范式化   
  1.3 技巧3:尽量单个查询获取数据   
  1.3.1 示例:博客   
  1.3.2 示例:相册   
  1.4 技巧4:嵌入关联数据   
  1.5 技巧5:嵌入时间点数据   
  1.6 技巧6:不要嵌入不断增加的数据   
  1.7 技巧7:预填充数据   
  1.8 技巧8:尽可能预先分配空间   
  1.9 技巧9:用数组存放要匿名访问的内嵌数据   
  1.10 技巧10:文档要自给自足   
  1.11 技巧11:优先使用$ 操作符   
  1.11.1 深入了解   
  1.11.2 提高性能   
  1.12 技巧12:随时聚合   
  1.13 技巧13:编写代码处理数据完整性问题   
 第2章 实现技巧   
  2.1 技巧14:使用正确的类型   
  2.2 技巧15:用简单唯一的id 替换_id    
  2.3 技巧16:不要用文档做_id   
  2.4 技巧17:不要用数据库引用   
  2.5 技巧18:不要用GridFS 处理小的二进制数据   
  2.6 技巧19:处理“无缝”故障切换   
  2.7 技巧20:处理复制组失效及故障恢复   
 第3章 优化技巧   
  3.1 技巧21:尽可能减少磁盘访问   
  3.2 技巧22:使用索引减少内存占用   
  3.3 技巧23:不要到处使用索引   
  3.4 技巧24:索引覆盖查询   
  3.5 技巧25:使用复合索引加快多个查询   
  3.6 技巧26:通过建立分级文档加速扫描   
  3.7 技巧27:AND 型查询要点   
  3.8 技巧28:OR 型查询要点   
 第4章 数据安全性和一致性  
  4.1 技巧29:单机做日志,多机则复制   
  4.2 技巧30:坚持使用复制或日志, 或两者兼用   
  4.3 技巧31:不要信任repair 恢复的数据   
  4.4 技巧32:getlasterror   
  4.5 技巧33:开发过程中一定要使用安全写入   
  4.6 技巧34:使用w 参数  
  4.7 技巧35:一定要给w 设置超时  
  4.8 技巧36:不要每次写入都调用fsync   
  4.9 技巧37:崩溃之后正常启动   
  4.10 技巧38:持久性服务器的瞬时备份   
 第5章 管理技巧   
  5.1 技巧39:手工清理块集合   
  5.2 技巧40:用repair 压缩数据库   
  5.3 技巧41:不要改变复制组成员投票的权值   
  5.4 技巧42:无活跃节点时可重置复制组  
  5.5 技巧43:不必指定--shardsvr 和--configsvr 参数  
  5.6 技巧44:开发时才用--notablescan    
  5.7 技巧45:学习JavaScript   
  5.8 技巧46:在shell 中管理所有服务器和数据库   
  5.9 技巧47:获得帮助   
  5.10 技巧48:创建启动文件   
  5.11 技巧49:自定义函数   
  5.12 技巧50:使用单个连接读取自身写入

章节摘录

版权页: 插图: 1.适用的键 这条规则适用于任何升序排列的键值,而并不必须是时间戳。其他例子包括obj ecrid、日期、自增主键(很可能是从其他数据库导入的)。只要键值趋向于无穷大,你就会面临这个问题。 2.例外 基本上,这种片键总是一个坏主意,因为它导致热点必然存在。如果访问量不大且用一个分片就能承受所有读写,那还行得通。当然,如果遇到一个访问量尖峰或者应用开始变得更受欢迎,那它终会停止工作并且难以修复。除非你非常清楚自己在干什么,否则不要使用升序片键。肯定还有更好的片键存在,应该避免使用这一个。 3.1.3随机片键 有时为了避免热点,人们会选择一个取值随机的字段来分片。采用这种片键一开始还不错,但是随着数据量越变越大,它会变得越来越慢。 假设我们在分片集合中存储照片的缩略图。每个文档都包含了照片的二进制数据、二进制数据的MD5散列值,以及一段描述、拍照时间和拍照人。我们决定在MD5散列值上做分片。 随着集合的增长,我们最终会得到一组均匀分布于各分片的数据块。目前为止一切顺利。现在,假设我们非常忙而分片2上的一个块填满并分裂了。配置服务器注意到分片2比分片1多出了10个块并判定应该抹平分片间的差距。这样MongoDB就需要随机加载5个块的数据到内存中并将其发送给分片1。考虑到数据序列的随机性,一般情况下这些数据可能不会出现在内存中。所以此时的MongoDB会给RAM带来更大压力,而且还会引发大量磁盘IO(磁盘IO总是非常慢)。 除此以外,片键上必须有索引,因此如果选择了从不依据它进行查询的随机键,基本上可以说是“浪费”了一个索引。另外,考虑到每增加一个索引都会让写操作变得更慢,所以保持索引数量尽可能低也是非常重要的。 3.1.4好片键 我们真正需要的是一种将访问模式也考虑进去的方案。如果应用会规律性地访问25GB的数据,我们就希望所有的分割和迁移都发生在这25 GB数据上,而不是随机访问数据以至于不断地有新数据被从磁盘中复制到内存里。 因此我们希望能找到这样一个片键,它具备有良好的数据局部性(data locality)特征,但又不会因太局部而导致热点出现。


编辑推荐

《深入学习MongoDB》适合所有MongoDB用户阅读参考。

图书封面

图书标签Tags

广告

下载页面


深入学习MongoDB PDF格式下载



这本书等很久了,刚刚入手。薄薄的一本,内容很精炼。深入介绍了MongoDB的分片机制、集群和管理。书中应用时的技巧居多,非常实用,有许多开发中的应注意和避免的东西,并比较了一些方法的优劣。建议配合《MongoDB权威指南》一起看,两本书对于正在使用MongoDB的朋友来说都很值得一读!


和那本《mongodb权威指南》一起买的一本书,作为入门nosql的初期参考书。也是相当的薄啊,不过内容价值高的话也无所谓了,这个适合入门后更深入了解的一本书,读完这两本后相信对mongodb有一定程度的了解了,致力于生产应该无大碍。具体还要看自己的研究了


在对mongodb了解一定程度上,深入浅出的进阶学习手册


不错的书,两本英文书合二为一,mongodb现在的书还比较少,先看着。


适合掌握mongodb的人看。书很薄但是作者讲解很到位。值得推荐


对《MongoDB权威指南》的补充


写的非常好,条理清楚,语言通俗易懂,介绍的知识点都是生产和开发中需要关注的,强烈推荐


说深入,书太薄了


还不错,但还不够深入


深入是不少,但是也还是比较泛,不过入门后这个还是不错的,推荐一下


mongo是个好东西,希望都能体验到,mongo教程也相对单薄,希望大家也能够深入的看下,在看完权威指南后,我想这本也是少不了的


很好,适合作为第二本MangoDB书看


学习部署的比较合适


内容通俗易懂。读完基本会用了


偏向理论的多,希望能有些实际的指导


较多的优化理论。方便优化


书很不错,有帮助,当当物美价廉,送货也很给力,非常满意


适合有一定实用经验的人


书质量还是很不错的


虽然比较薄,但是很管用


很不错吧,专业书籍


大致看一些,是我想要的


书后面的实例讲的都很好,都是要注意的地方


觉得需要就是一本好书,没什么别的可讲。


可读性很好


帮老公买的,他说还可以,就是薄了点。


这本薄了点。。


好书,都是干货


准备学习一下GridFS的,先把mongoDB搞懂。目的想把网络数据编程这一块坐起来。加油,继续往下看,现在还没看完呢。不过看到mongodb权威指南的封底写到:“帮你管理通过web应用收集的海量数据”时,多少有点失望。


买了两本关于MONGODB的,虽然书很薄,但是内容还是比较耐看


主要还是分片方面的介绍


很凌乱的一本书。不适合没有数据库基础的人阅读。


书是我需要的~而且当当第一次寄送速度这么快


书发的很快,但是很薄。。。


书不错,但这么薄的书要的银子多了


很给力,发货速度也超快的~


纸张不错,字迹很清楚,到货速度也挺快的。


这本书是当添头买的,但是平时还是用mongodb的


学习NOSQL


入门书,相当初级。


快递不行 而且买了五本书 每本书的外观都很惨


觉得这本书质量一般,没有想象的那么好。


可以和那本《mongdb权威指南》合成一本书的


薄,钱多


只有120页,所涉话题均一笔带过,算不上深入。


这本mongo的书太假了,内容空通,不建议买


其实大多数的书完全可以用100——200页来写完,这本简简单单100多页,内容却很详实。查了作者的资料,果然有道理:Kristina Chodorow是10gen公司(开发和支持开源数据库)的软件工程师,MongoDB项目的核心成员,负责数据库服务器、PHP驱动、Perl驱动等模块...


这本书感觉一般 可能是我水平不够 感觉 不算有很大收获


感觉内容写的一般,就是讲了个集群和分片,只有这些吗?


之前刚接触 mongodb 的时候买的,然后里面讲的是一些技巧入门建议买粉色的那本,然后进阶看这本


确实不错,书都进阶的内容


书的内容好少,只是大概提一下,没多少实质可用的东西


这本书看完很久了,书很薄,不过还算得上一本好书,书中提出了很多有用的建议,适合有MongoDB知识的人阅读,新手还是先去读了那本MongDB权威指南再来看这本书吧。


有些章节讲的不是很详细,没有意料之中的章节


内容很一般,不深入,不详细,买了就后悔!


中文翻译书名与原著不一致,而且不合理。骗小孩子的吧!原著确实可以看看,但是中文版不怎样。其实也没有多少页,即便是菜鸟也可以试着看看。24.6 呵呵,抢钱啊。


图灵系列,都是好书。


mongodb是主流


深入学习MongoDB


比较薄的工具书


相关图书