MongoDB实战

出版时间:2012-10  出版社:人民邮电出版社  作者:[美] Kyle Banker  页数:244  字数:394000  译者:丁雪丰  
Tag标签:无  

前言

数据库是信息时代的“老黄牛”,就像希腊神话中的擎天神Atlas 一样,它们默默地支撑着我们赖以生存的数字世界。发布评论和微博,乃至查找并排序内容,这些操作从本质上来说都是和数据库打交道,而我们恰恰会对此熟视无睹。正因为这个基础的“隐蔽功能”,我总是会对数据库心存敬畏,这种敬畏和走过本来只让汽车通行的悬索大桥时所产生的敬畏没什么分别。数据库有很多种形式。图书馆里的图书目录和卡片分类都算是其中的一种,昔日Perl程序员使用的特殊结构的文本文件也是。也许现在最广为人知的数据库,就是功能丰富、让人赚得盆满钵盈的关系型数据库了,它支撑着这个世界上的很多软件。这些关系型数据库,连同它们那理想化的第三范式和富于表达力的SQL接口,仍然让那些保守派肃然起敬。但是,作为一名有几年工作经验的Web应用程序开发者,我渴望尝试一些能替代占据统治地位的关系型数据库的后起之秀,发现MongoDB之后,便对它爱不释手。MongoDB使用类似JSON的结构来表示数据,我喜欢这个设计。JSON简单、直观而且易用。MongoDB还将其查询语言构建于JSON之上,使得这个新数据库在使用上很舒适很协调。接口之外的一些引人注目的特性让它更具魅力,例如方便复制和分片。我使用MongoDB构建了一些应用程序,亲身体验了它带给开发的舒适性之后,便深深爱上了MongoDB。机缘巧合,我加入了10gen——领导开发开源数据库MongoDB的公司。两年来,我有机会改善多款客户端驱动,与众多客户一起部署他们的MongoDB。我希望在这一过程中所积累的经验都能原汁原味地体现在你正阅读的这本书中。作为一款还在不断完善的作品,MongoDB还有很长的路要走,但它已经成功地支撑了成百上千的应用程序,运行在大大小小的数据库集群之上,而且每天都在进步。MongoDB每天都能为不少开发者带来惊喜,甚至是幸福,希望你也能拥抱MongoDB,感受它的魅力。

内容概要

  《MongoDB实战》由10gen公司(开发并支持开源数据库MongoDB)负责维护Ruby及C语言官方MongoDB驱动的软件工程师Kyle
Banker编写而成,是一本全面细致介绍MongoDB及其应用的权威指南。《MongoDB实战》共分三部分,首先介绍MongoDB的历史、特性和使用场景,然后细致阐述MongoDB
API,专注于应用程序开发渐近式描述电子商务应用的模式与操作,并最后从DBA的角度考量性能和运维。另外,书中还介绍了面向文档数据库模型,并深度剖析了复制、自动分片以及部署等特性。
《MongoDB实战》适合初中级应用程序开发者和DBA学习参考。

作者简介

Kyle Banker
软件工程师,曾工作于10gen公司,负责维护Ruby及C语言的官方MongoDB驱动、领导MongoDB文档项目并开发培训课程,且为客户提供咨询、商业支持和培训;现任职于Snapjoy(为用户提供默认私有的在线照片备份和自动管理服务)。

书籍目录

第一部分 入门指南
第1章 为现代Web而生的数据库 
1.1 生于云端 
1.2 MongoDB的主要特性 
1.2.1 文档数据模型 
1.2.2 即时查询 
1.2.3 二级索引 
1.2.4 复制 
1.2.5 速度和持久性 
1.2.6 数据库扩展 
1.3 MongoDB的核心服务器和工具 
1.3.1 核心服务器 
1.3.2 JavaScript Shell 
1.3.3 数据库驱动 
1.3.4 命令行工具 
1.4 为什么选择MongoDB 
1.4.1 MongoDB与其他数据库的对比 
1.4.2 使用场景和生产部署 
1.5 提示与局限 
1.6 小结 
第2章 MongoDB JavaScript Shell 
2.1 深入MongoDB Shell 
2.1.1 启动Shell 
2.1.2 插入与查询 
2.1.3 更新文档 
2.1.4 删除数据 
2.2 创建索引并查询 
2.2.1 创建一个大集合 
2.2.2 索引与explain() 
2.3 基本管理 
2.3.1 获取数据库信息 
2.3.2 命令工作原理 
2.4 获得帮助 
2.5 小结 
第3章 使用MongoDB编写程序 
3.1 通过Ruby使用MongoDB 
3.1.1 安装与连接 
3.1.2 用Ruby插入文档 
3.1.3 查询与游标 
3.1.4 更新与删除 
3.1.5 数据库命令 
3.2 驱动是如何工作的 
3.2.1 对象ID生成 
3.2.2 BSON 
3.2.3 网络传输 
3.3 构建简单的应用程序 
3.3.1 配置 
3.3.2 收集数据 
3.3.3 查看归档 
3.4 小结 
第二部分 MongoDB与应用程序开发
第4章 面向文档的数据 
4.1 Schema设计原则 
4.2 设计电子商务数据模型 
4.2.1 产品与分类 
4.2.2 用户与订单 
4.2.3 评论 
4.3 具体细节:数据库、集合与文档 
4.3.1 数据库 
4.3.2 集合 
4.3.3 文档与插入 
4.4 小结 
第5章 查询与聚合 
5.1 电子商务查询 
5.1.1 产品、分类与评论 
5.1.2 用户与订单 
5.2 MongoDB查询语言 
5.2.1 查询选择器 
5.2.2 查询选项 
5.3 聚合指令 
5.3.1 根据用户对评论进行分组 
5.3.2 根据地域对订单应用MapReduce 
5.4 详解聚合 
5.4.1 max()与min() 
5.4.2 distinct 
5.4.3 group 
5.4.4 map-reduce 
5.5 小结 
第6章 更新、原子操作与删除 
6.1 文档更新入门 
6.2 电子商务数据模型中的更新 
6.2.1 产品与分类 
6.2.2 评论 
6.2.3 订单 
6.3 原子文档处理 
6.3.1 订单状态变迁 
6.3.2 库存管理 
6.4 具体细节:MongoDB的更新与删除 
6.4.1 更新类型与选项 
6.4.2 更新操作符 
6.4.3 findAndModify命令 
6.4.4 删除 
6.4.5 并发性、原子性与隔离性 
6.4.6 更新性能说明 
6.5 小结 
第三部分 精通MongoDB
第7章 索引与查询优化 
7.1 索引理论 
7.1.1 思想实验 
7.1.2 核心索引概念 
7.1.3 B树 
7.2 索引实践 
7.2.1 索引类型 
7.2.2 索引管理 
7.3 查询优化 
7.3.1 识别慢查询 
7.3.2 分析慢查询 
7.3.3 查询模式 
7.4 小结 
第8章 复制 
8.1 复制概述 
8.1.1 为什么复制很重要 
8.1.2 复制的使用场景 
8.2 副本集 
8.2.1 配置 
8.2.2 复制的工作原理 
8.2.3 管理 
8.3 主从复制 
8.4 驱动与复制 
8.4.1 连接与故障转移 
8.4.2 写关注 
8.4.3 读扩展 
8.4.4 标签 
8.5 小结 
第9章 分片 
9.1 分片概述 
9.1.1 何谓分片 
9.1.2 分片的工作原理 
9.2 示例分片集群 
9.2.1 配置 
9.2.2 写入分片集群 
9.3 分片集群的查询与索引 
9.3.1 分片查询类型 
9.3.2 索引 
9.4 选择分片键 
9.4.1 低效的分片键 
9.4.2 理想的分片键 
9.5 生产环境中的分片 
9.5.1 部署与配置 
9.5.2 管理 
9.6 小结 
第10章 部署与管理 
10.1 部署 
10.1.1 部署环境 
10.1.2 服务器配置 
10.1.3 数据的导入与导出 
10.1.4 安全 
10.2 监控与诊断 
10.2.1 日志 
10.2.2 监控工具 
10.2.3 外部监控应用程序 
10.2.4 诊断工具(mongosniff、bsondump) 
10.3 维护 
10.3.1 备份与恢复 
10.3.2 压紧与修复 
10.3.3 升级 
10.4 性能调优 
10.4.1 为提升性能检查索引和查询 
10.4.2 添加内存 
10.4.3 提升磁盘性能 
10.4.4 水平扩展 
10.4.5 寻求专业帮助 
10.5 小结 
附录A 安装 
附录B 设计模式 
附录C 二进制数据与GridFS 
附录D 在PHP、Java与C++中使用MongoDB 
附录E 空间索引 

章节摘录

版权页:   插图:   有了充足的内存,所有使用中的数据文件最终都会被加载到内存里。当那块内存发生改变时,比如执行写操作时,那些改变会被操作系统异步地刷到磁盘上,而写操作很快,是直接发生在内存里的。数据完全装入内存是最为理想的状态,因为磁盘访问的数量会降到最低程度。但如果使用中的数据集无法全部装入内存,就该出现页错误了。也就是说操作系统会频繁访问磁盘,大大减缓读写操作。最坏的情况下,数据大小远远大于可用内存,这时任何读写操作的数据都必须到磁盘上做页交换。这种情况称为颠簸(thrashing),会导致性能严重下滑。 还好这种情况相对容易避免。最起码要保证索引都能放人内存;对于为何避免创建无用索引如此重要,这就是原因之一。拥有额外的索引,就会要求更多的内存来维护那些索引。同样道理,每个索引应该只包含它需要的键:有时会用到三键复合索引,但请注意它要比简单的单键索引占用更多的空间。 理想情况下,索引和使用中的数据集都能放入内存。但评估部署时需要有多少内存并非易事。你可以通过查看stats命令的结果来了解总的索引大小。但要找到工作集(working set)大小却没这么容易,因为每个应用程序都不一样。工作集通常是查询与更新的全部数据的子集。举例来说,假设你有100万用户,只有一半是活跃用户,那么工作集就是用户集合的一半大小。如果全部都是活跃用户,那么工作集就等于整个数据集。 在第10章,我们会重温工作集的概念,了解诊断硬件相关性能问题的具体手段。就目前而言,只需知道添加新索引有潜在的成本,关注索引与工作集大小与内存的比率,这能帮你在数据增长 时维护良好的性能。 7.1.3 B树 前文提到过,MongoDB内部使用B树来表示索引。B树无处不在,至少从20世纪70年代后期开始就流行于数据库记录和索引中。①如果你使用过其他数据库系统,那么可能已经熟知使用B树的各种情况了。这很好,你可以将之前的大多数索引相关的知识有效地利用起来。如果不太了解B树,也没关系,本节将介绍与使用MongoDB最为相关的概念。 B树有两个显著特点,并因此成为了数据库索引的理想选择。第一,它们能用于多种查询,包括精确匹配、范围条件、排序、前缀匹配和仅用索引的查询。第二,在添加和删除键的时候,它们仍能保持平衡。 我们会看到一棵简单的B树,讨论一些应该牢记在心的原则。想象有一个用户的集合,在姓氏(last name)和年龄(age)字段上创建了一个复合索引。②结果B树的抽象表述可能是图7.5这样的。

媒体关注与评论

“作者是10gen的人,对所有细节都了如指掌。读这本书,就好像跟一位领域专家对话,一切都讲得那么简洁明了,浅显易懂。所有MongoDB用户都应该看一看。”“与市面上其他同类主题的书相比,这本书是最好的。”——读者评论

编辑推荐

MongoDB是为处理大数据而生的一款面向文档的数据库,由10gen公司开发和维护。Kyle Banker的《MongoDB实战》基于MongoDB 2.0+,全面系统地讲解了设计、实现、安装和维护MongoDB的各方面内容。本书也是在大量第一手资料的基础上形成的,其权威性毋庸置疑。《MongoDB实战》篇幅适中,内容深浅得当,文字通俗易懂,再配以直观形象的插图和贴近实战的代码示例,非常适合MongoDB学习者、开发人员及管理员学习参考。

名人推荐

“作者是10en的人,对所有细节都了如指掌。读本书,就好像跟一位领域专家对话,一切都讲得那么简洁明了,浅显易懂。所有MongoDB用户都应该看一看。”“与市面上其他同类主题的书相比,这本书是最好的。” ——亚马逊读者评论

图书封面

图书标签Tags

评论、评分、阅读与下载


    MongoDB实战 PDF格式下载


用户评论 (总计41条)

 
 

  •   本书更适合ruby,我是php,得慢慢的研究他里面的其他的一些东西。还得在网上找一些相关资料,推荐另一本关于mongodb的书!呵呵
  •   MongoDB实战 这本书 实例很多,基础概念性的东西也不少,对于想学MONGODB的人来说,是本不错的书籍。
  •   众多mongoDB的书籍,果断选择出版最新,作者强大的书籍,加**当的给力,无解了!
  •   很系统,非常好!当前最好的一本MongoDB书籍!
  •   听说inaction系类很适合工程师读,这次算是体会到了,库开发人员言简意赅地写出了一线人员最关注的一些底层细节问题。
  •   action的书都很经典,对于如何使用,实际开发如何处理,这个书里面比起权威指南会详细一些,不错,但也是入门级别!!!这个里面的版本比起权威要新一点!
  •   非常实用,实战系列好
  •   NOSQL数据库如今非常流行,是必学的技术,此书作为入门刚刚好
  •   好书。对mongo有一个更深入的理解,适合新手
  •   换了后,书不错。在看
  •   帮朋友买的,好像还可以
  •   还没来得及读,应该对我的帮助很大!
  •   看完后收获蛮大的,如果能够在深入的讲讲原理方面就更好了
  •   感觉理论有点多。
  •   好书,让我成长
  •   书不错,其实很多东西都可以在官方文档中发现出处,只因为E文看起来累呗!懒人一个~
  •   大概是目前涉及mongod的图书中最权威之一,内容也比较实用。
  •   书还不错,讲的挺全面,就是有点薄
  •   正在学习当中,感觉受益匪浅!
  •   内容挺好的,就是印刷质量不好,物流很快呀当天就送到了
  •   比较实用,不过订单一节,对于分布式事务的处理似乎不够完善。
  •   挺好的,我需要的
  •   非常不错,看了以后受益匪浅!
  •   连重复update的参数都没见书上有,感觉不如权威指南。
  •   较实用,内容质量等不错啊!
  •   以为不用检查货就没事儿了,谁知道回家看了下大失所望,书上方直接被什么东西给剪断了好多页,而且书角的下面也发霉了,我想问下这到底是怎么回事儿。气死了
  •   in action系列非常适合让一个对某技术一无所知的人阅读,做到让人从完全不懂到了解。不过mongodb发展相当快,新版又添加了很多新的命令和功能,书中的介绍已经落后了。比如书中说mongodb不支持max min等聚合操作,但是新版mongodb已经支持全部聚合功能包括$groupBy $count $max $min $avg $sum等等
  •   文轩网发的货,质量简直是差,内容还没看,内容不评论
  •   适合零开始,对维运有些介绍,翻译还不错,唯一不好的地方就是版本太低
  •   无论内容还是质量都很不错的。
  •   这本书还可以,只是为了进一步加强认识而买的,还算值
  •   很容易懂,有实战感觉
  •   一起下单的书,另外一本早这个两天就到了,这还不算,发过来连包装都没有做密封,到手的时候上面全是水,书角都湿了!!!
  •   内容太少了,感觉一般
  •   NOSQL最近很热
  •   很不错的一本书!!
  •   书很好,讲得很清楚
  •   介绍比较全面,适合入门
  •   Mongo
  •   讲的ruby实现的 不是java什么的
  •   MongoDB实战读后感
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7