前言
MongoDB是当今业界使用最广泛的文档数据库之一,其从2009年诞生以来,已经吸引了无数开发者的目光。曾经MongoDB被冠以“四不像”的称号,被大家称为“非关系型数据库中最像关系型数据库的软件”。即便如此,MongoDB在其发展历程中仍表现出强大的生命力。尤其在近几年,随着云计算、大数据的飞速发展,企业项目对分布式数据库的需求越来越多,MongoDB作为一款灵活易用、高可用、高可扩展的分布式数据库,在许多互联网产品及企业项目中大施拳脚。
笔者从2016年开始真正接触MongoDB数据库,而在此之前曾有过很长一段时间的关系型数据库使用经验。从自身的感受来说,采用传统的关系型数据库可能是一种“万金油”的方案,选择MongoDB则很大程度取决于团队对NoSQL的接受程度,或是来自敏捷开发、高效扩展方面的权衡。
MongoDB的名字来自英文单词“Humongous”,中文含义是“庞大”“巨大”,命名者的意图是可以处理大规模的数据。但笔者所在的团队更喜欢称呼它为“芒果”数据库,除了译音更加相近,还有这几年使用MongoDB的两层感受。
● 第一层感受是“爽”。相比关系型数据库,MongoDB几乎没有太多的约束。一方面,MongoDB的文档模型是基于JSON的,开发者更容易理解。另一方面,动态化模式的特性让数据库的管理工作变得更加简单,例如一些线上的变更可以更快速地完成。
● 第二层感受是“酸爽”。这一点对于MongoDB数据管理员来说可能更有感触一些。MongoDB由于入门体验“太过于友好”,导致初学者很容易产生一种误解,即MongoDB不需要在管理方面投入太多的精力,最终导致系统上线后不断被发现一些技术债务。更戏谑的说法是,“交付一时爽,维护火葬场”。当然,这么说可能并不恰当,但笔者想表达的观点是,与传统的关系型数据库一样,MongoDB在使用上仍然需要认真地考量和看护,只有如此才可能最大限度地发挥出MongoDB的优势。
本书写作思路
本书的书名为《MongoDB进阶与实战:微服务整合、性能优化、架构管理》,意味着书中除了介绍MongoDB技术,还会介绍与微服务相关的技术范例。在当今的背景下,风靡业界的微服务架构已成为分布式系统的事实标准。因此,我们在谈MongoDB应用开发时,必然免不了和微服务技术栈产生一些联系。以开发者的角度来看,在成为一名MongoDB高手之前,掌握全栈式的知识技能仍然是必需的,这些技能可概括为以下3个方面。
● MongoDB数据库技术的掌握:包括基本的文档模型概念和数据操作,以及集群高可用、数据分片方面的知识。
● MongoDB整合微服务的技能:需要对微服务周边的技术框架有一定的掌握。本书以当前最流行的Java微服务技术栈为背景,介绍了从MongoDB Java Driver、Spring Data Mongo(ODM层)到上层应用整合的各种实战范例。
● MongoDB高阶技巧的掌握:包括MongoDB系统性能调优及MongoDB架构高可用、安全性、高效运维管理方面的一些知识和经验。
由此可见,初学者在从MongoDB入门到进阶的过程中,需要学习及掌握的知识并不算少。尤其是高阶技巧方面,这部分是最难也是最花费时间成本的。而笔者一贯认同的是,好记性不如烂笔头,在学习MongoDB的历程中,笔者将MongoDB在项目中的实战经验进行了总结,并多次以文章的形式发表。在和一些读者交流之后,笔者发现大家实际上都遇到了不少应用层面的开发问题。
尽管MongoDB的官方文档已经做得非常详细(大多数基本的数据库问题都可以从官方文档中找到答案),然而其在周边技术栈的整合、系统管理及调优方面仍缺乏一些富有针对性的内容。因此笔者认为在结合一些实践案例的前提下,再以开发管理者的角度对MongoDB技术进行系统地梳理,则可能会产生事半功倍的效果,遂迸发了编写本书的想法。
本书内容概要
第1部分:MongoDB入门(第1~6章)
该部分介绍MongoDB的基本概念及入门知识。
通过该部分的学习,读者可对MongoDB自身的技术全貌形成一定的认识。
第2部分:MongoDB微服务开发(第7~10章)
该部分介绍微服务的基本概念及微服务架构中应用MongoDB的相关技术实现。
通过该部分的学习,读者将能深入了解基于Java微服务技术栈开发MongoDB应用的实践方法。
第3部分:MongoDB高级进阶(第11~15章)
该部分介绍MongoDB更加高级的一些使用技巧。
通过该部分的学习,读者可掌握MongoDB在性能调优方面的一些最佳实践及指导方案。
第4部分:MongoDB架构管理(第16~18章)
该部分介绍MongoDB在架构管理方面的一些经验。
通过该部分的学习,读者可获得MongoDB在架构可靠性、安全方面的指导及如何在项目中进行数据库问题防治的一些思路。
读者对象
本书适合希望了解、使用MongoDB数据库的技术从业者。
对有一定基础的研发人员,通过阅读本书可以更深入地了解MongoDB在性能调优、集群技术方面的一些原理。
对初学者,可以根据书中的一些案例快速开发基于MongoDB的微服务应用。
对系统架构师,可以通过本书了解MongoDB的一些进阶特性及原理,并获得在技术选型、架构管理方面的指导信息。
特别说明
本书的重点是讨论MongoDB开发进阶方面的内容,但书中会介绍MongoDB整合Java微服务所必备的一些关键技能(如Java驱动、Spring框架整合等)。微服务本身是一个非常大的课题,由于篇幅和笔者水平有限,这里对容器化、分布式框架方面的细节不会做过多介绍,而实际上这也超出了本书的范围。如果读者感兴趣,建议参阅其他书籍。
致谢
决定写一本书,不仅是分享知识,还是践行长期主义的一次历程。不得不说,这个过程的确是痛并快乐着。由于平日里工作非常繁忙,笔者无数次不得不坚持在深夜里赶稿子,由此也牺牲了很多陪伴家人和孩子的宝贵时间。在此特别感谢我的家人,如果没有你们的大力支持,本书不会如此顺利地完成。另外还要感谢笔者的项目团队,让笔者有机会在工作过程中学习到大量的MongoDB的知识。
本书提供了大量的案例说明,旨在分享MongoDB在应用开发、系统调优及管理中的一些实战经验。由于笔者个人能力有限,书中难免存在错漏之处,恳请读者提出问题并帮忙指正,再次感谢!
唐卓章
2021年2月
读者服务
微信扫码回复:40827
● 获取本书配套资源
● 获取各种共享文档、线上直播、技术分享等免费资源
● 加入读者交流群,与更多的读者互动
● 获取博文视点学院在线课程、电子书20元代金券