DB-Engines 数据库流行度排行榜发布了5 月份的数据,前六名的排名“千年不变”,分别是:Oracle、MySQL、Microsoft SQL Server、PostgreSQL、MongoDB 和IBM Db2。而其中,MongoDB以比去年同期超出65.96分的成绩继续雄踞榜单前五,这个增幅在全榜仅次于PostgreSQL的77.99,而其相对于4月份的6.10分的增长也是仅次于微软SQL Server排名全榜第二。
作为排名前二十中唯一被标注为文档型数据库的MongoDB,能够取得这样的成绩实属不易。2007年,Dwight Merriman, Eliot Horowitz和Kevin Ryan成立了MongoDB的前身10gen软件公司,在成立之初,这家的公司目标是为企业提供云计算服务。在开发云计算产品时,他们准备开发一个类似于数据库的组件,为云计算产品提供存储服务。当时是关系型数据库一统天下的时代,但他们觉得传统的关系型数据库无法满足他们的要求,他们想要一款程序员不懂SQL语言也可以使用的数据存储产品。在网络上找了一圈,不管是开源的还是闭源的产品,都没找到让他们满意的东西,于是他们就决定自己开发数据库。
10gen公司不使用关系型数据库是有一定的原因的,实际上,10gen的创始人都来自谷歌,他们曾经创建了一家叫做DoubleClick的广告公司,后来该公司被谷歌收购。当时他们还在DoubleClick公司的时候,就吃过关系型数据库的苦头。DoubleClick是一家网络广告公司,服务美国众多的知名公司,该公司每秒提供40万个广告,但在可伸缩性和敏捷性方面经常遇到困难,因此他们不得不经常自己开发和使用许多自定义数据存储来解决现有关系型数据库的不足,这让他们很是苦恼。因此他们决定开发一款数据库产品解决他们在DoubleClick时遇到的问题,并为自己的云计算产品提供存储服务。
2009年,经过将近2年的开发,10gen开发出了MongoDB的雏形并将它开源并正式命名为MongoDB,同时成立开源社区,通过社区运营MongoDB。MongoDB并不是“芒果数据库”,Mongo取自单词humongous的中间部分,意味巨大无比的数据库,能够存储海量的数据库。10gen将MongoDB定义为面向集合、模式自由、自由扩展、使用程序语言和API访问的文档数据库。
MongoDB有别于当时其他的数据库产品,使用和安装都非常方便,在代码中通过API就可以操作数据,在当时引起不小的轰动,加上NoSQL非关系型数据库概念开始火起来以及大数据的需求,天时地利人和,MongoDB逐渐流行起来。现在,MongoDB股价已经突破百元大关,市值达到90亿美元。
纵观MongoDB将近12年的发展史,我们可以清晰的看到一个数据库厂商的成长轨迹,以及它之所以能够取得成功的几个原因,即产品定位、技术创新、运营模式、目标愿景。
虽然以文档数据库起家,但时至今日,MongoDB已经远远不是一个文档数据库的概念所可以囊括的,更多的,MongoDB应该被称作是一款现代通用数据库平台。按照MongoDB 全球高级工程副总裁Richard Kreuter的解释,MongoDB不是一款仅仅只能在单一或某类特定场景应用的数据库平台,它能够广泛的应用于各种应用场景中,譬如搜索、网站实时数据、数据缓存、大尺寸、历史数据存储、高伸缩性场景、对象或JSON 数据存储等。另外,MongoDB具有非常好的灵活性,可以随用户的需求快速开发。MongoDB文档型数据库的特点与传统关系型的表列相比更具有弹性,同时还能做事务性交易,而且,MongoDB可以直接在内存中对数据进行运算,具有很高的速度和效率。因此,现在版本的MongoDB可以支撑各种各样的应用场景的开发需求。
但Richard强调,虽然MongoDB致力于满足80%的用户的需要,但在各个版本当中,MongoDB也会针对普遍的特殊需求推出新的功能,例如,在最新的4.0版本,MongoDB就推出了多文档ACID事务(multi-document ACID transactions)。这也是为什么到现在为止,MongoDB已经拥有超过1万多个企业版正式付费用户的原因。实际上,目前,MongoDB在各行各业、各个地区和国家之间拥有很广泛的用户。在世界“财富一百强”企业中,一半以上的用户都在使用MongoDB,而在一些重点行业,如金融、电信、制造业、电子商务、电商游戏等领域的关键应用中,MongoDB正在被广泛应用,这也从另一个侧面证明了MongoDB产品定位的成功。
而在技术层面,MongoDB是“最好的数据建模数据库”,Richard对此解释道,传统关联性数据库最早都是用表、列方式来建模,但按此方法完成数据建模后,各个表的关联非常复杂,在这种情况下,想要保持数据库的弹性是非常困难的,譬如,想要为数据库增加一个字段,通常就需要通过分表、分库以及停机等很多复杂的操作才能实现。而MongoDB从设计之初就认识到了弹性对于数据库的重要性,因此,MongoDB的数据建模方式就是要保持这种弹性,能够依据需求很容易更改,而数据库本身的运行不受影响。
MongoDB之所以称作文档型数据库,是因为其将所有的数据都存储在了一个文档中,由于采用了BSON的方式存储数据,故而对JSON格式数据具有非常好的支持性以及友好的表结构修改性,文档式的存储方式,数据友好可见。相比于传统数据库需相对复杂的表、库进行操作以及多次存取数据,MongoDB开发人员不用去记那些表、库之间的各种复杂关系、只需一次存取,就可拿到想要的数据,因此,对开发而言是更容易使用而且是效果更高的。
此外,MongoDB的运行环境非常广泛,这也是MongoDB之所以受到众多用户青睐的一个重要原因,它可以运行在本地的机器上,运行在任何一家云上,可以运行在服务器上,笔记本上,甚至还可以在手机上很流畅的使用,而这可以被称作是MongoDB的“杀手锏”,因为除了MongoDB之外,没有任何数据库可以实现跨越所有的端来运行。这也是当时开发MongoDB的一个宗旨,即开源,不受任何约制,任何人在任何时间任何地点都可以运行MongoDB。Richard强调,MongoDB同时也有一个叫做Atlas的云服务,目前已经在AWS、Google、Azure上提供MongoDB数据库云服务。
Richard总结了MongoDB的最大优势,他认为,所谓最优首先就是要看在各种情况之下对使用者有价值,这才叫最优。MongoDB的文档就是一个JSON格式,这是最广泛应用于交换或是处理数据的一种基本格式。各种网页、移动应用,或者很多商业应用都是用JSON处理数据。MongoDB在处理数据和储存时直接使用JSON格式的数据,是原生的JSON存储,不管是处理、聚合,还是更新,都直接通过JSON来做处理,这就和其他所有的数据库是完全不一样的处理方式。其次,MongoDB的核心是一个原生的分布式的数据库,它有非常丰富的功能支持复制数据,同时可以快速的水平扩展,随需而用。同时,MongoDB还具有传统数据库的优点,比如能够很快的去区隔,能够保持数据的强一致性等等。而且目前,MongoDB最新的4.0版本已经可以支持以前传统关系型数据库才能支持的多文档事务性的交易,并且在应对传统大规模分布式数据库中最大的挑战——数据均衡方面,4.0版本的速度提高了40%,就用户体验方面而言,这又是一个非常重要、也非常吸引人的功能提升。
不过,一个产品的成功,并不仅仅是依靠明晰的产品定位和不断创新的技术,商业模式也非常重要。而MongoDB的成功当然也离不开成功的运营模式,而这个运营模式就是开放和开源。
实际上,早在2009年,MongoDB刚刚开发出数据库的雏形时就同时成立了MongoDB的开源社区,坚持通过社区运营MongoDB。MongoDB一直通过开源社区扩大MongoDB的影响力,吸引程序员入住社区,在社区按照不同地区成立不同的用户组,MongoDB刚推向市场的时候,BUG不少,但是MongoDB的开发人员解决问题很及时,态度非常友好,程序员是一个很实在的群里,当他发现你的产品好用时,并且能够及时帮你解决问题时,就会向同行推荐你的产品,这使得MongoDB迅速赢得了众多开发者的好感。
Richard当然也非常清楚这一点,因此,他是MongoDB开源的坚定支持者。Richard表示,MongoDB坚持一定要有社区版的数据库,一方面是因为开发者比较倾向于使用开源的技术,另一方面,是因为开发MongoDB的初衷就是为了让开发者能够更简单和容易的使用数据库,而开源是实现这个初衷的最好方法。而且,MongoDB并不反对开发者对开源版本的MongoDB进行修改。当然,这种修改必须反馈回社区,这就是所谓的Copyleft License。MongoDB自始至终就有Copyleft License。而在去年,针对社区版,MongoDB还提出了SSPL License,即将MongoDB作为云服务提供时,云服务提供者要把所有相关修改的内容和操作平台开源出来,而这也是为了将开源的成果更好的分享给所有的使用者。
Richard强调,MongoDB完全由自己开发,拥有该产品所有的IP,之所以决定将MongoDB开放出来作开源,就是希望能够构建一个开源数据库健康发展的环境,鼓励更多的软件开发商来做开源这件事,而MongoDB以后也会一如既往的持续保持开源的状态。
而另一个对于MongoDB非常重要的运营就是一年一度的MongoDB大会。MongoDB非常重视MongoDB大会,在全球主要城市/地区每年都会举办一次MongoDB大会,在MongoDB大会上,会邀请技术大牛做一些项目上使用MongoDB的干货分享,并与与会观众进行面对面的技术交流。而就在前些天,MongoDB在上海浦东星河湾大酒店成功举办了“2019 MongoDB中国用户大会”。在这场干货满满的数据库技术盛会中,来自全国各地近千名行业客户、合作伙伴和开发者聆听了MongoDB高层、技术大咖、行业用户的主题演讲和互动演示,共同回顾了MongoDB过去一年的发展历程和所取得的不凡成绩,了解了MongoDB数据库最新的特性和功能。而类似这样的活动,无疑极大地推动了MongoDB在市场上的影响力。
Richard最后表示,从1960年数据库诞生至今,数据库已经迅速转变为应用当中举足轻重的部分,数据库的设计也随着应用需求的设计不断成长。过去,开发应用可能只是公司企业内部的应用,产生的数据量不大,变化也不多,所以当时数据库尽量做的精简,因为存储太过昂贵。90年代,互联网开始流行起来,网上应用层出不穷,应用开发需求发生了巨大改变,使用者的数量也是大幅提升。而在移动互联时代,应用变成了随时随地,从而颠覆了应用开发的生态和需求,也驱动了数据库的变革。所以不太可能再按照传统数据库的方式去设计数据库产品。因此,未来的数据库应该是能够更加快速和敏捷的进行数据的收集和处理,并具有灵活的弹性扩展能力,而这也是MongoDB未来的发展方向,同时也是支撑MongoDB前进的动力。
“我认为数据库技术前进的阻力,并不是数据库技术本身的挑战,而是在各方面帮助企业适应瞬息万变的业务需求的挑战。软件不是自己去运行,而是要人去用。因此,事实上,最大的挑战是人。数据库永远有新的技术瓶颈,技术没有穷尽,但更重要的是变化,是怎么样花更多的精力和时间来推动这些技术能够被用起来。没有人使用的技术是没有生命的。”Richard说。
“技术以人为本”,这是老孙在听了Richard的话之后第一时间想到的一句话。嗯,老孙想,这或许也是MongoDB能够取得成功的一个重要原因吧。