中国领先的IT技术网站
|
|

专访视觉中国技术总监潘凡:适合的就是最好的

51CTO的记者在2011年的QCon大会北京会场上有幸请到了视觉中国的技术总监潘凡先生,为我们谈一谈视觉中国的数据库选择之路,潘凡先生说:“适合的就是最好的。”

作者:Narci来源:51CTO|2011-04-12 15:36

沙龙活动 | 去哪儿、陌陌、ThoughtWorks在自动化运维中的实践!10.28不见不散!


【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的优点,也是缺点,就是可选择的优化途径是有限的,但是能把有限的几种做好,基本也够用了。

下一页有相关专访视频

笔者在茶歇时间,与参会的一下用户进行了简单的沟通,以后是沟通内容:

  1. 51CTO:您公司使用的是什么数据库呢?
  2. 途牛网:我们使用的是MySQL的数据库。
  3. 51CTO:您公司想过使用非关系型数据库吗?
  4. 途牛网:我们对这种技术正在研究,但是考虑成本,短期内不会使用吧。
  1. 51CTO:您关注什么数据库呢?
  2. 大学生:我们学校教的是SQL Server,所以我们在外面做兼职基本也是选用SQL Server。
  3. 51CTO:您听说过非关系型数据库吗?
  4. 大学生:这方面我们不太关注。

编者语:

无论选用哪种数据库,都要根据公司的情况来判断,毕竟这种转移是十分耗费成本的。SQL+NoSQL的方法,十分值得关注。另外优化是十分重要的,但是优化是有技巧的,万不可胡乱优化

【编辑推荐】

  1. 走进MongoDB的世界 展开MongoDB的学习之旅
  2. 微软研究人员:NoSQL需要标准化
  3. 视觉中国的NoSQL之路:从MySQL到MongoDB
  4. MongoDB1.8发布,分布式文档数据库
【责任编辑:艾婧 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

3D游戏开发大全(高级篇)

在我的第一本书——《3D游戏开发大全》中,我们曾经对3D游戏开发完成了一次犹如探索原始丛林般的旅程:首先,我们对3D游戏产业进行了初步了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
× Python最火的编程语言