所有的因素加起来,MongoDB 对于创业公司来说就变得很有意思了:这个产品很好上手,支持也很多,而且还免费。创业公司拿着这个轮子,可以迅速实现自己的业务逻辑,而不需要再去学习怎么搭东西。我想正是这个原因,突然之间就着 NoSQL 的春风,MongoDB 就开始流行起来了。
然而,接下来事情的发展,多少有些脱离美好的一面。MongoDB 从产品的角度来说,其实就是个半成品��MongoDB 实在有太多的东西没有做了,尤其是那些基本的东西,包括数据是不是会丢、结果是不是错的、并发做得好不好、支不支持事务处理,以及当规模上来的时候,能不能够通过加机器来解决问题。
这些看起来本应是一个数据库产品非常重要的、基本的东西,MongoDB 做得却很差。一般来说,当一个人开始用 MongoDB 的时候,并不会遇到这样的问题,当然主要还是规模不够大,不至于触发瓶颈和问题。当 APP 或者网站的规模上去之后,同时工作的人多了,问题就会越来越常见,越来越令人无法忍受。
而 10gen 的 CEO 在宣传时,又往往以极其夸大的方式,告诉大家 MongoDB 就是未来,MongoDB 就是一切。 这样的结果就是:很多人用 MongoDB 去取代关系数据库。然而渐渐地,这些人发现这种取代并没有带来真正的好处,除了一开始开发省了点力气外,后面要维护的成本越来越高。
而 10gen 这种侧重于提高用户初始体验,外加一切都是 MongoDB 的宣传方式,终于导致了负面作用。 有经验的程序员开始跳出来,在各种论坛里公开宣称千万别上 MongoDB 的“贼船”,因为虽然开船的时候容易,接下来要付出的代价也很大,一旦规模上来,各种丢数据的问题就都出来了。
10gen 的 CTO 经常亲自上阵去和这些程序员们 PK。他接受采访的时候说,MongoDB 是个新产品嘛,新产品总是会有这样那样的问题,请给我们一些时间。他在论坛上和这些程序员交流,通常来说跳不出这样一些套路,就是:
这个问题我们在下一版里会修好的;
这个问题我从来没有遇到过,估计是假的吧;
这个问题你给我们开 BUG 啊;
这个问题我不相信是真的,肯定是你们程序写错了。
不管你信不信,这种回复,加上 10gen 的公关能力,确实在很多时候给 MongoDB 赢得了修复问题的时间。但是这样的一种方式也让用户的接受度在降低。2009 到 2012 的三年里,MongoDB 被接受的比例一直处于飞升状态,而 2012 年开始这个曲线就越来越平。大家到底要不要用 MongoDB,已经不再是“无脑”上的问题,而是要反复斟酌之后再做决定的事情。
尽管 10gen 的 CEO 一直高调宣布 MongoDB 无所不能,大家赶紧上,实际上后面的几年里,很多人反而是渐渐地离开了 MongoDB。大家意识到,MongoDB 作为一个一开始上手很快的东西,可能只适合一个 V1 产品。产品上一点规模之后,背后的数据存储系统还是要换的。
当然,任何公司都有盈利的压力。MongoDB 作为一个开源、免费的产品,10gen 公司不可能免费赚吆喝,它烧在社区建设上的钱也不是小数目。10gen 推出盈利产品的第一步,是推出了对 MongoDB 的商业付费技术支持。
商业付费支持是很多公司常用的方式。比如说 Hadoop 平台公司的 Hortonworks,其收入就基本上依赖于其提供的商业付费技术支持。MongoDB 从这里开始赚第一笔钱,并且其技术支持以“态度好”而著称。
仅仅靠商业技术支持并不能为公司带来足够的收入,10gen 的另外一个创收途径是推出商业版的 MongoDB。 和开源的 MongoDB 比起来,商业版的自然要带更多的功能。这些功能最主要的是一个加密的存储引擎——数据以企业级密码强度加密后再存储,以及额外的安全相关的功能,比如说 LDAP 和 Kerberos 的支持,等等。这方面倒是体现了企业级应用市场和开源小创业公司之间的差异:企业级应用市场对加密和安全相关的内容要重视得多,没有这些功能大企业是不会使用这些产品的。