2008年5月21日,Information Weekd一篇文章详细讲述了貌似Yahoo的web分析核心数据库。为什么是貌似呢?最后再回答。主要的内容包括:
- Yahoo的web分析数据库已超过1PB大小。宣称在09年将会超过10倍。
- Yahoo的web分析数据库是基于PostgreSQL之上的。哈哈!有太多MySQL的粉丝认为Yahoo在web分析数据库商都在用他们的钟爱。我也不知道是不是事实,但是报道上面不是这么讲的。当然,Yahoo在一些苛刻和严格的应用上确实使用了MySQL。
- 但是,但是…,Yahoo的web分析数据库没有真正使用PostgreSQL的存储引擎。Yahoo自己写了一个列式存储的方案。
- Yahoo每天处理240亿个“事件”。报道中没有说清楚到底这些请求是直接送至分析存储的,还是有一个中间的存储引擎。比较有可能的是,系统在RAM中把块写满,随即添加到唯一的持久化存储中。如果在生产过程中偶尔宕掉了然后损失了一些数据,比如说几兆,其实也无所谓,因为这个应用太大了。
- Yahoo认为商用的列式存储数据库还不足以应付100T以上的数据。
- Yahoo说根据他们自己的应用优化后的自定义系统性能相当棒!不太清楚具体是什么。
为什么会说貌似呢?
答案在这里:
- Yahoo,100TB(其中原始数据量仅为18TB!!! 数据行:3850亿条,有点意思。),使用Oracle数据库,运行在Fujitusu Siemens的UNIX平台上,使用EMC提供的存储介质,采用集中式SMP的架构。所以3年的时间,不太可能做好那么大的动作,换成列式存储,移植到PostgreSQL。
另外一点是
PostgreSQL
的查询引擎在取数据的时候能从列式存储的库里读取?所以中间是不是有一个存储引擎符合
PostgreSQL
的标准?如果是这样,可真够能倒腾的。
而跟Yahoo数据量比较接近的是尼尔森媒体研究中心,原始数据量为18TB,数据行:5000亿行,使用Sun的Solaris平台,同样使用EMC的存储,用Sybase IQ(注意,这是一个列式数据库!!!)作数据仓库引擎,最后的数据仓库的存储量是17TB。