2009年开始掀起的“NoSQL革命”在Web领域造成了极大的反响,Twitter也在2010年对其Tweets数据类型引进新生的NoSQL数据库。近日,国外知名网站readwriteweb.com企业频道作者Klint Finley撰写了一篇有关“Twitter放弃MySQL转而使用NoSQL缘由”的文章。
infoQ在今年早些时候发布了一个演讲视频,在该视频中,Kevin Weil谈到了公司应如何使用NoSQL。Weil指出Twitter严重依赖于MySQL。然而,当MYSQL在许多用途上表现的并不理想的时候 Twitter使用了NoSQL解决方案。据威尔介绍,在2009年里,Twitter用户数从1月份的每天约 200万人,激增至12月份的每天近5000万人。每天登陆Twitter的用户数量增长已经超过了20倍。目前Twitter每天产生的用户数据在 12TB左右,而每年约产生4PB的数据。
Scribe
Twitter的系统日志在一段时间后停止进行压缩,所以Facebook使用Scribe来替代它。日志的收集创建在Facebook开源框架上,Twitter已经发布了一些Scribe的补丁。Twitter使用Scribe来记录Hadoop的日志。Scribe使Twitter记录日志数据变得简单。Scribe还可以比以前记录更多的数据,现在数据日志已经分成了80个不同的类别。
Hadoop
Twitter每天都需要将更多的数据可靠的写入到一个硬盘驱动器上,然后这是不现实的,所以像Twitter这样每天都产生大量数据的机构需要把数据存储在集群之中才能满足其业务需求。Twitter使用了Cloudera的Hadoop为其分配集群。Weil指出能够,MySQL不能满足 Twitter在大规模做需求分析时所要求的效率,为了满足需求,Twitter使用了Hadoop及自己拥有的开源项目,他们称之为FlockDB。 Hadoop可以运行分析并找到在FlockBD中相似的社交图数据集合。
Pig
这种Pig脚本可以帮您找到其网站年龄在18至25岁访问者中访问量排名前五位的网页
Weil说Hadoop是通过Java语言实现的,但是Java是复杂的,这使得它很难快速的重复执行。相反,Twitter使用Pig脚本的语言,这个高级语言运行在Hadoop之上。
Yahoo创造了Pig脚本语言并使其快速发展,Weil表示,Pig非常易学并且容易理解。他说,你将受益于Pig的方便,并且它缩短了执行时间,但这是值得的。
HBase
HBase是建立在Hadoop的之上的,并且具有低延时和数据可变性的设计。 Twitter的使用它来增强人们的搜索。
FlockDB
FlockDB是一个实时的、分布式的数据库。如上所述,它的建立和开源由来自Twitter。该公司使用它的社交图分析。它仍然在MySQL的下面,但是它的速度非常快。
Weil用一个在FlockDB的应用程序举例,显示哪些用户显示@表示回复。举个例子。如果Ashton Kutcher发送tweet到@foursquare。它不应该显示在Kutcher的6156915粉丝之中,他应该仅在关注Kutcher的用户和 Foursquare中显示。
Cassandra
Twitter至今仍然在尝试并使用Casandra,这个开源的数据库由Facebook创建。Weil说,Twitter当前的原子计算实验使用的就是Cassandra。但对Twitter而言,Cassandra也非万能,首先在于Cassandra代码或许还存在不少问题,Twitter如果投入大量的精力来改进Cassandra和比较优化MySQL 的投入来看有点得不偿失。在QCon Beijing上@nk也提到Cassandra在Twitter的内部测试中曾经暴露出不少严重的问题。
Twitter拿所有的这些数据都用来做什么?
Twitter的使用它收集的所有数据有各种用途。有些只是简单的计数问题,如计算出有多少请求它的服务,每天有多少搜索服务,每天来处理这些交易的平均时间,等等。
其他用途更为复杂。例如,不同类型用户的运行比较。Twitter的分析数据,以确定是否移动用户,用户谁使用了第三方客户短或“超级用户”与普通用户使用Twitter的不同。
韦伊最后指出,Twitter的其他问题包括:确定转推的话题中哪些类型是人们最感兴趣,最成功的网络需要什么样的社会效果图结构,以及如何区分不同类型的人或机器人。