在刚刚过去的Velocity China 2011 Web性能和运维大会上,来自百度奇艺网的著名NoSQL博主李刚为我们分享了基于应用场景的NoSQL选型与实践。作为目前国内为数不多专注于NoSQL技术的博主,李刚根据实际工作中的经验,介绍了MongoDB和Redis两款主流NoSQL数据库的优化和运维方案。关注NoSQL数据库技术的朋友都应该知道NoSQLFan.com,李刚表示希望通过这个博客,能够让更多的NoSQL爱好者参与进来,互相交流提高,也为NoSQL技术发展做一份贡献。
为此,记者在Velocity大会上对李刚进行了专访,就一些DBA、开发者比较关心的问题进行了交流。以下是本次专访的实录:
NoSQLFan.com作为国内知名的NoSQL技术博客,是怎样的一种想法支撑您将它坚持下去的呢?
NoSQLFan:最初是在新浪的社区搜索部门,当时有一个Key-Value查询功能改进的项目,所以开始接触到TokyoTyrant相关的技术。以此为契机开始接触到NoSQL数据库技术,但是当时这一技术还比较新,找不到太多的资料,只能从源码看起,所以学习起来比较费劲。当初的想法就是如果有一个NoSQL技术爱好者交流的论坛就好了,但是现在通过论坛的形式也不一定能够聚集人气,所以就决定先写博客来吸引一些同好,这也是NoSQLFan.com诞生的一个原因。在工作中我也会用到很多NoSQL方面的技术,所以我觉得NoSQLFan.com一方面是技术爱好者交流沟通的地方,另一方面也是推动自己学习的好方法。现在我会去订阅一些国内外好的关于这方面技术的内容,每天都会关注,如果遇到一些好的技术文章,下班之后再去翻译、发布到NoSQLFan.com上,码字对我来说可能并不算是苦差事,已经成为了一种很自然的习惯。经过一年多的积累,通过这个网站和技术爱好者分享了不少好的内容,有时还会感受到一些压力,但是这种压力也是一种动力。
您目前就职于百度奇艺公司(qiyi.com),能否介绍一下奇艺网的数据库应用情况?目前都用到了哪些数据库产品?
NoSQLFan:奇艺网有不同的部门,我主要负责的是社区部门,叫做奇谈(t.qiyi.com),目前已经发布上线。这是一个类似于豆瓣的影视交流社区。在数据库应用方面,我们将奇谈视作NoSQL的一块“试验田”,当然是建立在一定的预警机制基础之上的,比如备份方案。我们对于技术的态度是比较开放的,但是在使用MongoDB和Redis的时候,还是会把数据备份一份到MySQL上。目前有几个主要的应用,一个是奇艺的播放记录,一个是图片的存储,还有一些用户的评论、标签,主要用到了MongoDB和Redis两个NoSQL数据库。
当初在进行数据库选型的时候,您是出于什么样的考虑选择了NoSQL数据库?是出于成本还是说性能?
NoSQLFan:现在说到NoSQL,最合理的解释应该是NotOnly SQL,我们现在做的事情,其实要用MySQL的话也能够实现。但是NoSQL有一些显著特性,比如在使用Redis时,在设计上数据存储更加贴近于用户。在使用MySQL的时候,你可能需要将数据拆分成许多块来进行存储,但用Redis的时候就不需要这样。传统关系型数据库在安全性功能方面很强,包括对事务的支持,但事实上我们的Web应用中是用不到这些特性的。NoSQL数据库为用户提供了许多配置性的选项,我们可以自行选择,在性能方面的提升很高。另外,NoSQL数据库的扩展性非常好,比如MongoDB,在数据集变大的情况下,只需要添加机器而不需要进行额外的工作。成本方面,更多的还是要提到扩展性,传统关系型数据库进行Scale up的时候,性能和成本已经偏离了线性关系,加一倍配置却得不到一倍的性能。而在这一点上,NoSQL可以用一些较低端的服务器来跑,无形中对成本也是一种节约。
NoSQL的产品比较多比较复杂,请您稍微介绍一下NoSQL数据库的大概分类?
NoSQLFan:NoSQL数据库目前主要分成四种,第一最主流 的是基于Key-Value的,比如Redis;第二种是基于文档型的,比如MongoDB和CouchDB,文档型的数据库其实也可以理解为Key-value,只不过它们的value是一个文档;第三种是图形数据库,它们利用一些图结构的算法处理一些应用;第四种是列存储数据库,数据以列的方式进行存储,在数据压缩以及性能方面有一定的优势。
现在传统的数据库厂商也开始尝试NoSQL领域,比如Oracle、IBM等,您对这一现象有何看法?
NoSQLFan:在我最开始接触数据库的时候,我认为MySQL数据库很强大,能够实现所有的功能。但在接触的东西多了之后,了解到其实许多人在使用MySQL的时候也是通过NoSQL的一种方式来使,所以说关系型数据库也不是能解决所有的问题。我认为这些大厂商进军NoSQL的原因也是来自于客户的需求,如果用户能够使用免费方案而且能做的更好,那为什么还选你的方案呢?所以我觉得还是迫于客户的一些压力吧。
您认为在未来,NoSQL数据库技术还有哪些发展的方向?
NoSQLFan:我觉得在数据存储方面会有比较大的发展,可能不会叫做NoSQL,但的确是会大量用到一些相关的机制。无论在存储还是在计算方面,NoSQL一定会朝着分工越来越细的方向发展,每一种技术都能实现一种功能,而不像MySQL这样高大全。
如果分工越来越细的话,那么就意味着以后会出现更多的NoSQL技术以及产品,那么对于相关的从业人员,该如何去学习新的技术呢?是分产品还学习还是有一个整体的把握?
NoSQLFan:我认为在未来如果一个人想要使用一个东西的话,可能已经有相应的服务来进行支持。也就是所谓的云计算,在云时代,可能就不需要那么多的人去做运维工作了。向Google、Amazon这样的云服务提供商得到大力推广的话,很多东西变成了服务,那么我觉得入门的门槛就会变低了。需要哪些功能就去使用相关的服务就行了,这样的方式对于中小型企业用户来说应该是很合适的。