【51CTO独家专访】随着非关系型数据库的发展,很多企业由于自身的考虑,一直在关系型与非关系型的选择之间徘徊。51CTO的记者在2011年的QCon大会北京会场上有幸请到了视觉中国的技术总监潘凡先生,为我们谈一谈视觉中国的数据库选择之路,潘凡先生说:“适合的就是***的。”以下是根据访谈内容整理而成的文字记录,以方便大家阅读。
关于被访者
潘凡
未受过正式高等教育,一名普通的财务会计,出于对编程的热爱和冲动,97年起转行投入软件开发行业,从事过若干年的.Net和Java开发,也曾是一名Perl/PHP程序员和Linux狂热推动者。
2000年前曾先后供职于赛迪网和赛迪数据,从事电子商务相关研究工作。2001年起创业,致力于将互联网应用架构引入传统零售行业,构建了基于web服务的零售商业应用,实现了PDA移动终端/POS/PC基于互联网整合成功案例,先后在部分500强企业成功实施运行至今。在创业期间又和朋友一起创建了视觉中国网站。
目前供职于视觉中国网站,担任技术总监和架构师,关注领域包括可伸缩的网站架构,NoSQL应用实践以及后现代的Perl编程。
左为潘凡先生,右为51CTO记者
对数据库的选择——09年是一个转折点
潘凡:在视觉中国成立之初,我们选用的数据库是MySQL,09年之后我们才选用了MongoDB作为我们的支撑数据库。
51CTO:您在放弃MySQL的时候,没有考虑过使用Oracle或者SQL Server?
潘凡:视觉中国是根据业务的需要来进行的选择,初始时,我们并不是想去放弃MySQL,实际上当时我们选择MongoDB的一个初衷是希望选择一个NoSQL的产品做一个辅助的方案。但是在实际的项目实施中,我们发现MongoDB这种NoSQL数据库的很多功能可以代替MySQL,因此我们决定使用MongoDB。
我们选择替换,不是说MySQL这种数据库产品不好,而使用Oracle或者SQL Server,实际上我们不是选择一个普通的数据产品来代替另一个数据库产品。我们本身的出发点是寻找一个可以支持MySQL的辅助产品。只是碰巧让我们找到了可以替代MySQL原有工作的一种数据库。
51CTO:也就是说这种“放弃”不是必然,只是一种巧合。
潘凡:是的,我们最开始就是想把MongoDB作为MySQL的一个辅助,现在有一种方案叫做SQL+NoSQL,这也是我们的选择。只是后来我们发现这种方法可以简化,就只用了MongoDB。
51CTO:视觉中国的这种选择,也相当于在学习中前行,有没有遇到很多困难?
潘凡:困难是肯定有的,而且还有很多。困难的来源一方面来源于MongoDB的年轻。虽说它的发展很快,但是毕竟是年轻的产品,技术不是特别的成熟,所以会出现很多很多的问题。但是他们有一个好的技术团队,对产品的版本更新速度很快,对问题的响应速度很快,这对我们解决问题是很大的支撑。一方面是我们的技术,遇到困难,解决困难,在这个过程中,我们得到了很多经验,为后续的工作做了很好的准备;总结了很多教训,引以为戒吧。
MongoDB的稳定性——单机vs auto-sharding
51CTO:视觉中国的数据量能达到多少呢?
潘凡:视觉中国的数据量并不太大,我们将数据进行分组,大概分为四组,每组的平均数据量大概是几百万到七、八千万。
51CTO:在这种数量级,MongoDB的稳定性如何呢?
潘凡:基本上没有出现大的问题。正常情况下,不会出现莫名其妙的宕机。
只有在极其异常的情况下,比如:机房整体断电、全部机柜的电源突然全部跳了,在这种情况下,曾经出现过数据的丢失。
但是现在1.8以后的版本,这种情况基本就没有了。
51CTO:MongoDB在处理大规模的数据是的稳定性又是如何的呢?
潘凡:视觉中国的数据量是有限的,只能到***别;但是,根据国外的案例来看,数据量已经达到十亿、百亿的级别,MongoDB的使用基本没有出现过太大的问题。如果现在我们不通过auto-sharding,自己手动删片,也是很不错的。
51CTO:现在版本的MongoDB本身是否有什么不足或者不稳定因素?
潘凡:MongoDB的单机版,也就是非sharding版本目前来说还是很稳定的。
但是,sharding版本的问题主要集中在mongos即它的路由处理(路由器),很多朋友也和我讨论过类似的问题。对于这个问题,我们现在处于观望的态度,因为对原有数据的迁移毕竟是一个很漫长的过程,不过我们会在新的项目中尝试使用这种auto-sharding的技术。
MongoDB的优化——索引的优化
51CTO:在对数据维护时,有什么值得注意的吗?
潘凡:硬件上,我们要把空间留的足够了,内存也要稍微多给一些。对于MongoDB的优化主要是围绕索引,对于索引的优化。索引的使用如果要讲究一点技巧的话,剩余的运维动作还是很简单的。
值得一提的是,与MySQL相比,这是MongoDB的优点,也是缺点,就是可选择的优化途径是有限的,但是能把有限的几种做好,基本也够用了。
下一页有相关专访视频
#p#
笔者在茶歇时间,与参会的一下用户进行了简单的沟通,以后是沟通内容:
- 51CTO:您公司使用的是什么数据库呢?
- 途牛网:我们使用的是MySQL的数据库。
- 51CTO:您公司想过使用非关系型数据库吗?
- 途牛网:我们对这种技术正在研究,但是考虑成本,短期内不会使用吧。
- 51CTO:您关注什么数据库呢?
- 大学生:我们学校教的是SQL Server,所以我们在外面做兼职基本也是选用SQL Server。
- 51CTO:您听说过非关系型数据库吗?
- 大学生:这方面我们不太关注。
编者语:
无论选用哪种数据库,都要根据公司的情况来判断,毕竟这种转移是十分耗费成本的。SQL+NoSQL的方法,十分值得关注。另外优化是十分重要的,但是优化是有技巧的,万不可胡乱优化。
【编辑推荐】