MongoDB的历史虽然不长,但却值得回顾,它诞生于一个更宏伟的项目。在2007年年中,一个名为10gen的创业公司着手开发一个PaaS(Platform-as-a-Service)项目,它由应用服务器和数据库组成,用于托管Web应用程序并能按需伸缩。与谷歌的AppEngine类似,10gen的平台也设计成能够自动伸缩,自动管理硬件和软件基础设施,它解放了开发者,让他们能够专注于应用程序代码。10gen最终发现大多数开发者并不喜欢放弃对技术栈的掌控,但他们的确喜欢10gen的新数据库技术。后来10gen将精力集中到数据库上,就有了MongoDB。
随着越来越多的人在大大小小的项目中选择MongoDB并在生产环境中进行部署,10gen继续以开源项目的形式支持MongoDB数据库的开发。代码是公开的,而且可以自由修改和使用,只要遵循其开源协议的条款即可,而且10gen也鼓励社区报告缺陷和提交补丁。到目前为止,MongoDB的所有核心开发者不是10gen的创始人,就是10gen的员工,而这一项目的规划继续由用户社区的需求来决定,创造该数据库的最终目标是将关系型数据库中最好的特性和分布式键值存储结合起来。因此10gen的商业模式和其他知名开源公司毫无二致:支持开源产品的开发,并向最终用户提供订阅服务。
这段历史中有几点需要注意。首先,MongoDB最初是为一个要求数据库能在多台机器间优雅伸缩的平台而开发的。其次,MongoDB是作为Web应用程序的数据存储设计的。正如我们稍后会看到的,MongoDB被设计为可水平伸缩的主要数据存储,这一点把它和其他现代数据库系统区别开来。