【IT168 专稿】MongoDB是NoSQL数据库中比较流行的一个,但它还远称不上完美——至少不能说非常理想。近日在美国举行的MongoSV大会上,包括迪士尼、Foursquare以及Wordnik等企业在内的用户与大家分享了自己的使用经验。与会者们所讨论的共同主题就是:NoSQL在不少业务处理方面表现抢眼,但它却不适合那些害怕麻烦的客户。
使用云计算 少用硬盘
根据Wordnik技术公司联合创始人兼工程部门副总裁Tony Tam的说法,除非我们真的愿意在购置及操作物理基础设施方面投入大量资金,否则要想满足NoSQL数据库对可扩展性的需求,云计算是我们的惟一选择。
▲Wordnik技术公司联合创始人兼工程部门副总裁Tony Tam
正如他接下来所解释的那样,Wordnik公司实际上使用了Amazon Web Service加上MySQL这一组合,但该数据库却仍然没能如预期般顺畅工作,因为其中所涉及的信息记录高达约十亿条。因此Wordnik公司将目光投向了MongoDB,这套解决方案虽然能够解决可扩展性方面的问题,但却同时对硬盘的I/O性能提出了新的挑战;如果不对此加以妥善处理,主要工作性能也将被大幅拖慢。有鉴于此,Wordnik公司将一切业务内容迁移到一些大型物理服务器上,从而最终有效提高了处理性能。
后来可扩展性又给他们带来了新的麻烦,只是这一次问题发生在基础设施方面。绕了一圈,他们决定再次在云计算领域寻求答案,并且这一次Wordnik公司更为明智地利用相关应用程序强化了账户管理功能、这也正是MongoDB的薄弱之处(“大家使用的应用程序应该比数据库更智能才对,”他建议道);而MongoDB在这方面的加强同时也弥补了云计算的软肋。
来自Foursquare公司的Cooper Bethea也对Tam的意见深表赞同,并指出“对我们而言,调用硬盘上的信息简直是一场噩梦。”由于Foursqaure公司对自家服务器的利用率要求相当严苛,他表示,因此调用硬盘的同时高延迟及错误计算也会立刻出现。尽管Foursquare使用了来自Amazon公司的弹性块存储模式作为硬盘方案,但这套机制只用于备份功能。
▲Foursquare公司Cooper Bethea
EBS公司在这方面同样遇到了问题。Bethea表示EBS每天至少会出现一次队列读取及写入操作不堪重负的情况,尤其是在备份机制开始运作的时候,而惟一的处理方法就是强行关闭。关闭之后所造成的具体影响根据实际情况的不同也会有所变化,但通常状态下MongoDB处理流程会发生中断,并需要重新创建受到影响的复制内容。
监控一切
来自迪士尼互动媒体集团的Curt Stevens解释了他的团队如何为支撑着迪士尼在线游戏的庞大MongoDB数据库部署监控体系。MongoDB自身的确拥有一套名为Mongo监控系统的工具,但Stevens着重强调称这套工具还不足以解决全部问题。该工具能够随着时间的推移显示各个阶段的流量与性能视图,这一功能帮得上忙,但这个程度的辅助作用只能称得上小儿科。
▲迪士尼互动媒体集团Curt Stevens
一旦发现问题,我们就必须“像CSI(即罪案现场调查)那样对数据进行全面检测”,以掌握究竟面对的是何种潜在麻烦。他同时解释道,有时候还需要对实例加以拆分进而得出正确结论。而有时候代码本身也可能成为错误的根源。Stevens补充说,有一回他们发现了某个性能表现异常低劣的应用程序中根本不存在数据库问题,事实上影响效果的罪魁祸首是由于两个数据中心间的距离过远而引发的广域网络状态低下。
当然,如果大家所管理的是一套规模巨大的系统时,光是监控也不足以让人高枕无忧,Stevens说道。我们必须部署完善的报警机制,让自己在问题出现时能马上得到提醒,并立即开展监控工作。如果MMS(即多媒体短信服务)或者其它一些高效监控工具在紧要关头发生故障,那么就在自己以为小朋友们正在欢乐的虚拟迪士尼世界中徜徉时,恐怕某些巨大的损失已经无法挽回了。
拿数据说话
如果大家希望了解什么样的性能与可扩展性需求迫使这些企业转而选择MongoDB并下如此大的心力根据自身情况加以定制,那么下面这份数据汇总应该能说明一些问题:
· Foursquare: 1500万用户;8套生产型MongoDB集群;8类用户数据;12类登录数据;每秒约250次用户数据库更新行为,最大输出数据量为每秒46MB;每秒约80次登录数据库调用行为,最大输出数据量为每秒45MB;每秒高达2500次HTTP查询请求。
· Wordnik:上百亿条文档资料,且每时每刻还有更多内容被添加进来;每天超过2000万次应用编程接口调用;映射层支持每秒35000条记录。
· 迪士尼: 超过1400个MongoDB实例(尽管‘前30个大家基本无暇关注,’Stevens说道);每天通过一个定制的自助服务门户网站添加更多实例并加以测试、彩排并最终让游戏上线。
这三家企业在使用MongoDB过程中所经历的各种困境、磨练以及更多技术细节,可以登陆http://www.10gen.com/presentations。