本书根据MongoDB的最新版本做了相应更新,其中包含MongoDB n最新的所有特性,包括版本2.2中引入的聚集框架和版本2.4中引入的哈希索引。MongoDB是最流行的“大数据”NoSQL数据库技术,并且正处于发展中。来自10gen的David Hows以及具有丰富MongoDB开发经验的Peter Membrey和Eelco Plugge,组成了本书的专家团队,他们在本书中分享了自己的专业知识和经验,帮助你了解成为MongoDB专家所需的所有知识。主要内容◆ 在所有主流平台上搭建MongoDB,包括Windows、Linux、OS X和云平台(例如Rackspace、Azure和Amazon EC2)◆ 用GridFS和新的聚集框架◆ 使用非SQL命令处理数据◆ 使用PHP或Python编写应用◆ 优化MongoDB◆ 掌握MongoDB管理方面的知识,包括复制、复制标签和标签分片
译 者 序 随着大数据的不断发展,非关系型数据库已经变得越来越重要,相关的产品也都得到了飞速发展。而其中MongoDB更是佼佼者,作为高性能开源文档数据库,MongoDB以敏捷、可扩展和对企业应用友好而著称。使用MongoDB的公司包括Foursquare、Craiglist,、迪士尼、SAP、Intuit、EA等。 本人从2013年开始有幸能够接触到MongoDB,并在实际工作中使用它。但是在学习使用过程中始终存在着一些困难,MongoDB相关的书籍太少,尤其是中文方面的,并且对MongoDB的讲解也不够详尽。因此,如果想彻底了解和学习MongoDB,就必须硬啃它的官方文档,这对于英文能力不佳的读者肯定也是难点。 所以这次清华大学出版社准备引进出版此书时,我感到非常高兴,也非常荣幸能够负责本书的翻译工作。能够为MongoDB的推广做出一点贡献,能帮助大家深入了解MongoDB的强大特性,我就感到非常满足了。 《MongoDB大数据处理权威指南(第2版)》由浅入深地介绍MongoDB的基础知识、使用和高级功能,并且提供了丰富的样例,保证读者在读完本书之后能独立搭建起自己的开发环境。即便是对NoSQL毫不了解的读者,也可以顺利完成本书的阅读。对于有一定开发经验的读者,相信本书关于数据库优化、复制和分片方面的讲解也会让你感到耳目一新。总而言之,本书是学习MongoDB数据库的一本不可多得的精品之作。 另外,感谢清华大学出版社的编辑们为本书付出的心血。同样感谢妻子对我翻译工作的支持和鼓励。没有你们的支持和鼓励,本书就不可能顺利出版。 对于这本经典之作,译者对本书进行了严格审校,对其中一些具有争议的地方也进行了反复考证,但个人精力有限,难免有疏漏之处,敬请各位读者谅解。如有任何意见或建议,请不吝指正。本书全部章节由王肖峰翻译,参与翻译活动的还有杜欣、高国一、孙其淳、孙绍辰、徐保科、尤大鹏、袁强强、张宏、张立红、邓伟、王蕊。 最后,希望各位读者能够早日掌握强大的MongoDB特性,轻松地处理工作中遇到的问题,如原书作者所描述的:轻松工作,按时下班! 致 谢 感谢MongoDB团队曾经和现有的所有成员。没有他们的帮助我们就无法完成本书的编写,人们对数据存储的观点也会出现极大的不同。我要特别感谢悉尼MongoDB团队的同事们,他们为本书的编写提供了极大的帮助。 ——David Hows 编写书籍是一个团队性的工作。即使有时只有一个作者,在幕后也会有许多人帮助将所有东西整合在一起。因此我非常感谢MongoDB社区和Apress的所有人,感谢他们的辛勤工作、耐心和支持。特别要感谢Dave和Eelco,他们帮助完成了本书的第2版。 我还想感谢Chuck Smith,一位让我迷上世界语并让我保持有很高兴趣的朋友(维基百科世界语版本的创始人)。这正好与本书第2版的编写产生了交集,我对学习世界语的极大兴趣延伸到了本书的编写上。另外还必须感谢L.L.Zamenhof博士,他创建了世界语。一个远超于时代的人,我希望能带着这个梦想前进。 最后,感谢妻子Sarah的耐心和长久的支持。 ——Peter Membrey 感谢9gag社区,没有他们本书就无法在数月前完成。 ——Eelco Plugge 我想感谢mongodb-user和mongodb-dev邮件列表中的所有成员,感谢他们能够忍耐我提出的无休止的问题。 ——Tim Hawkins 前言 我接触数据库的时间相对较晚,从2006年才开始使用MySQL。在学完所有计算机本科都提供的逻辑课程之后,我开始使用MySQL构建出一个完整的LAMP架构,其中用到了一些基本表。此时,我并未对SQL表管理的复杂性进行深入思考。不过,随着时间的流逝,我看到了存储越来越多异构数据的需要,并且随着时间的推移,简单的模式可以如何在它的生命周期中成长和演变。 我第一次接触MongoDB是在2011年,当时Peter Membrey建议我不要使用包含30个键行以及30个值行的上下文表,而是应该使用MongDB实例来存储数据。就像所有开发者在面对一项新技术时的感觉一样,我对之嗤之以鼻并且坚持我原来的计划。直到我使用糟糕的设计已经完成一半代码时,Peter仍然坚持我应该尝试使用MongoDB,此时我才接受意见。如同所有来自SQL阵营的开发者一样,MongoDB能够接受任何类型数据并且可以根据任何搜索条件返回这些数据的能力让我感到震惊。直到现在我也仍然大呼过瘾。 ——David Hows 本书的组织方式 在本书中,Peter、Eelco Plugge、Tim Hawkins和我都希望能够完全地展示出我们在学习MongoDB时的经验:在保持设计简单和清晰的同时,教会你如何使用MongoDB。每章内容都将展示一个单独的样例数据库,因此你可以按照模块或线性的方式阅读本书;这完全取决于你自己。这意味着如果愿意,你可以略过某些特定的章节,而不会影响你对其他内容的学习。 本书的样例命令将显示在它们的输出中。它们将以等宽的“代码”字体出现,并且会以加粗的方式显示,以便与其他结果输出加以区分。在大多数章节中,你都会遇到提示、警告和注意,它们包含有用的有时甚至极其重要的信息。 ——David Hows