The Little MongoDB Book 中文版
人们总是说科技的发展风驰电掣。确实,一直以来都不断有新的技术涌现出来。但是我却一直坚持认为程序员所用的基本技术的发展相对而言就缓慢很多。您可以很多年不学习什么但还是可以混过去。让人瞩目的是业已成熟的技术被替代的速度。仿佛一夜间,那些长期以来业已成熟的技术忽然就失去了开发者的关注,昔日地位岌岌可危。
NoSQL逐步攻陷了传统关系数据库的领地,就是这种急剧转变最好的例子。仿佛就在昨天所有的网页还是由一些RDBMS驱动的,而一早起来就已经有大约5种NoSQL的方案证明了他们都是有价值的解决方案。
虽然这些转变看起来是一夜间就发生的,事实却是这些新生的技术历经多年才被接受并应用于实践。一开始先是由一小部分开发者或者企业推动,然后逐步吸取教训,改善方案并见证新技术地位的确立。其他的跟随者之后也慢慢地开始了尝试。对于NoSQL来说也是一样。很多新方案的出现都不是为了去代替更加传统的存储方案,而是为了填补后者所能满足需求之外的一些空白。
说了那么多,在这里我们首先要做的是弄清楚什么是NoSQL。这是一个很宽泛的概念,不同的人有不同的解读。我个人用NoSQL来泛指参与数据存储的系统。换句话说,NoSQL(还是我个人的意见),是一种观念,这种观念认为维护数据的持久性不必是单个系统的责任。相比之下,关系数据库的缔造者一开始就力图把他们的软件当作通用解决方案。NoSQL则更倾向于负责系统中的一小部分功能:限定了部分功能,便可以使用最适合的工具。因此,您以后的NoSQL架构中依旧有可能利用到关系数据库,比如说MySQL,于此同时还可能在特定的部件使用Redis,还会用Hadoop进行大量的数据处理。简而言之,NoSQL就是保持开放和警醒,利用已有的可用的工具和方法去管理您的数据。
您也许会想,MongoDB怎么能搞定那么多?作为一个面向文档的数据库,Mongo是一个更加通用的NoSQL方案。可以认为它是关系数据库的一个替代方案。和关系数据库一样,Mongo也可以和其它更细化的NoSQL方案协作而更加强大。MongoDB既有优点也有缺点,我们在后续的章节中都会提及。
您也许也注意到了,在书中我们是混用Mongo和MongoDB这两个词的。