MongoDB 上市后,带你认识这款非同一般的文档数据

MongoDB 上市后,带你认识这款非同一般的文档数据库

10 月 20 日,位于纽约的 MongoDB 在纳斯达克上市,当日收于 32.07 美元,比 24 美元的 IPO 价格高出 34%。MongoDB 首席财务官 Michael Gordon 放言:MongoDB 在数据库系统这个市场大有机会取代 IBM 和 Oracle!如此的霸气,底气哪里来?

大数据和云计算的风被谷歌吹起来的时候,被谷歌收购的网络广告公司 DoubleClick 的原 CEO 和 CTO 们觉得自己应该蹭上时代的列车,再次创业,然后 10gen 公司就这样在纽约诞生了。它的创始人分别是 DoubleClick 的创始人兼 CTO 德怀特 · 梅里曼(Dwight Merriman)、CEO 凯文 · 瑞安(Kevin Ryan),以及工程师埃利特 · 霍洛威兹(Eliot Horowitz)。

公司成立之初,创始人的想法和 MongoDB 这个产品毫无关系:他们想做一个云计算的服务,并用开源的东西来搭建。然而很遗憾,这几位二次创业的人在开源社区找了一圈,也没有看到一个让人满意的东西。于是,怀着构建伟大云计算服务的梦想,他们决定先把这个事情停一停,先搭一个自己满意的数据库出来。这个数据库就是后来赫赫有名的 MongoDB。

MongoDB 的名字需要解释一下。国内很多人觉得是“芒果数据库”,其实不是的。在英文里,“芒果”是 Mango,而 Mongo 是 humongous 的中间部分,在英文里是“巨大无比”的意思。所以 MongoDB 可以翻译成“巨大无比的数据库”,更优雅的叫法是“海量数据库”。

这几位创始人的梦想就是创建一个和过去关系数据库完全不一样的数据库,使之具有这样一些特点:海量数据库、数据库的模型极其灵活、适合程序员使用。

大概怀着伟大理想的人都会做出伟大的产品。MongoDB 注定是独特的,在历史上会留下浓重一笔的产品。

当 MongoDB 开发出来的时候,创始人们给它的定义是:这是一个面向集合的、模式自由的文档型数据库。听到这里,你可能觉得有点晕了,那就先普及一下数据库的基本常识吧。

在过去的 30 多年里,整个工业界的数据库被所谓的关系数据库所主导。一个不太严谨的说法是:关系数据库的基本存储单元是表。而一张表则是有行有列的数据集合,而列的定义有严格的类型。所以关系数据库是一个严格定义的数据模型,每张表里的每条记录都是一个样的。

查询关系数据库的标准语言叫作 SQL。SQL 这个东西自从 IBM 发明出来以后,已经有 30 多年的历史了,人们爱它的有,恨它的也有。但是通常来说,程序员不太喜欢这个东西,因为它的基本理念和程序员编程的想法不一致。后来所谓的 NoSQL 风,指的就是那些不用 SQL 作为查询语言的数据存储系统,而文档数据库 MongoDB 正是 NoSQL 的代表。

和关系数据库相反,MongoDB 的数据模型很不一样。 简单来说,MongoDB 面向的是集合而不是表,所有的数据存储都以集合为单位,而每个集合里面包含的东西则称为文档,一个集合可以包含无数个文档。每个文档,我们可以大致认为是个 JSON 数据模型。文档自带元数据。也就是说,MongoDB 里面每个集合的每个文档并不要求数据严格一致,而是可能千差万别。

MongoDB 还有一个特色,它的查询使用的不是 SQL,而是程序语言和 API。 这样一来,MongoDB 对程序员就是一个非常友善的选择。当然,对于原本非常熟悉 SQL 的 DBA 和数据分析人员,这就显得不太友好了。

MongoDB 这个数据模型其实是非常脑洞大开的。在数据库领域的几十年发展里,很多人都试过各种各样挑战关系数据库的模型,但是鲜有成功的。即使成功了,也往往让人感觉雷声大雨点小,并不会对关系数据库的根本造成实质性的影响。然而 MongoDB 这个东西一出现,对有经验的数据库从业人员和使用者来说,第一个感觉就是这个东西是来搞事情的。

在开发 MongoDB 的过程中,随着开发的深入,10gen 的人越来越觉得原来那个云计算平台是个虚无缥缈的东西。而这个他们一手缔造的文档数据库,可能是一个惊天动地的大杀器!虽然这些人其实不是数据库领域科班出身的,但他们对于数据库领域某些弊端的深刻理解,的确是一般人望尘莫及的。

于是他们决定彻底忘记那个云计算平台,集中精力开发这个被命名为“巨大无比的数据库”的产品。在漫长的开发过后,2009 年 2 月 10gen 正式开源了 MongoDB 的第一个版本。这对于 10gen 来说是一个非常重要的里程碑。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/b1b5017bee0e35f60c30921fa769ce81.html