本书适合那些想从基础开始了解MongoDB的应用程序开发者和DBA学习参考。如果你刚刚接触MongoDB,会发现本书是很好的教材,内容由浅入深。如果你已经是一位MongoDB用户了,本书的详细参考指南部分一定能助你一臂之力,它能弥补你知识点上的空白。从深度上来说,本书内容适合资深高级用户之外的所有用户。
本书的代码示例使用的是JavaScript和Ruby,前者是MongoDB Shell的语言,后者是流行的脚本语言。书中尽可能提供简单、有用的示例,只使用JavaScript和Ruby中最普通的特性,主要目的是以最易理解的方式展现MongoDB API。如果你用过其他编程语言,会发现这些例子都很容易理解。
关于语言,还有一点需要说明。如果你心存疑惑:“为什么本书不使用某某语言?”那么大可不必担心。官方支持的MongoDB驱动提供了一致且类似的API,这意味着一旦你了解了某款驱动的基本API,很快就能上手其他的驱动。方便起见,本书在附录D中提供了对PHP、Java和C++驱动的概述。
本书内容
本书既是教程,又是参考指南。如果你刚刚接触MongoDB,按顺序阅读全书定会大有收获。书中有大量代码示例,你可以自行运行它们以巩固对概念的理解。运行这些示例前,你至少需要安装MongoDB,最好还有Ruby驱动,附录A中有相关的安装指南。
如果你已经用过MongoDB,那么可能会对某些特定的主题更感兴趣。第7章到第10章,以及所有的附录都独立成篇,可以跳跃阅读。此外,第4章到第6章关注于基础知识,它们也能脱离上下文进行阅读。
本书结构
本书分为三部分。
第一部分是对MongoDB的一个详细介绍。第1章概述了MongoDB的历史、特性及使用场景。第2章通过MongoDB命令界面介绍了这一数据库的核心概念。第3章介绍了一个在后端使用MongoDB的简单应用程序的设计。
第二部分对第一部分中用到的MongoDB API做了详细说明。这部分共三章,特别专注于应用程序开发,渐进式地描述了电子商务应用的Schema和操作。第4章专门讲解MongoDB中最小的数据单元——文档,提供了一套基本的电子商务Schema。第5章和第6章讲述如何通过查询和更新来使用该Schema。为了更好地进行说明,第二部分中的每一章都对相应主题作了条分缕析的讲解。
第三部分关注性能和运维。第7章彻底研究了索引和查询优化。第8章聚焦于复制,讨论高可用性和读可扩展的MongoDB部署策略。第9章介绍MongoDB的水平扩展方法——分片。第10章是一系列最佳实践,包含部署、管理以及MongoDB安装的疑难解答。
本书最后还有5个附录。附录A涉及了MongoDB和Ruby(用于演示驱动)在Linux、Mac OS X和Windows上的安装。附录B介绍了一系列Schema和应用程序设计模式,还包含了一组反模式。附录C演示了如何在MongoDB中使用二进制数据,以及如何使用GridFS(所有驱动都实现了的一个规范)在数据库中存储大文件。附录D对PHP、Java和C++的驱动做了一个比较研究。附录E演示了如何使用空间索引(spatial indexing)来查询地理坐标。
代码约定与下载
书中出现的所有源代码都用等宽字体表示,借此区别于普通文字。
有些代码清单带有代码注解以突出重要概念,有些地方还有带数字编号的项目符号,以与下文的解释相联系。
作为一个开源项目,10gen将MongoDB的问题追踪系统开放给了社区。书中的很多地方,尤其是脚注里,常有问题报告和计划改进的引用。举个例子,为数据库添加全文搜索的问题单是SERVER-380。要查看该问题单的状态,可以通过浏览器访问http://jira.mongodb.org,在搜索框中输入单号。
你可以从本书的网站http://mongodb-book.com以及原出版社的网站http://manning.com/MongoDBinAction下载本书的源代码1和示例数据。
1. 也可在图灵社区(http://www.ituring.com.cn)本书网页免费注册下载。——编者注
软件要求
想要最大限度地利用本书,你需要在自己的系统上安装MongoDB,可以在附录A和MongoDB官方网站(http://mongodb.org)中找到安装指南。
如果想要运行Ruby驱动的例子,那么还需要安装Ruby,同样可以参考附录A中的安装指南。
作者在线
本书的读者还可访问Manning Publications运营的私有论坛,在论坛中评论本书、询问技术问题以及寻求作者和其他用户的帮助。要访问并订阅该论坛,请在浏览器中访问并单击Author Online,这个页面中提供的信息包括注册后如何访问论坛、可以获得哪些帮助,还有论坛的管理规则。
Manning承诺为读者之间和读者与作者之间的交流提供场所,但对作者在论坛中的参与程度并不做要求,他是义务(不计报酬)参与本书论坛的。我们建议你尝试问他一些有挑战性的问题,让他有兴趣继续访问本论坛。
只要本书英文版在销售,作者在线论坛的内容以及之前讨论的存档都会保留在出版社的网站上。