Suave’s Blog » Blog Archive » QClub - 豆瓣存储经验分享

标签: suave blog blog | 发表时间:2011-05-08 11:49 | 作者:(author unknown) sunshine
出处:http://www.surui.net/

QClub - 豆瓣存储经验分享

上周六QClub上听了豆瓣的存储经验分享,豆瓣对问题分而治之的策略应用的很到位,有收获。

目前豆瓣的数据量是:

  • 200G 结构化数据(关系、广播等,特点:记录小、结构固定、经常关系查询)
  • 800G 文本数据(9点的博文)
  • 10T 图片
  • 6T 音乐

对数据库的关注主要是:可靠性(持久化、一致性),可用性,伸缩性,性能,成本 …
而通常一个数据库只能解决两方面的问题。关系型数据库的优势是一致性和可用性,Key-Value数据库的特点是可用性和伸缩性,所以针对不同类型的数据,要采用不同的存储方式

豆瓣使用关系数据库的经验:

  • 使用 InnoDB,并发性能好
  • 使用基本查询,避免 join,在应用层做连接处理
  • 分离大的文本字段
  • 使用 master(rw) - master - slave 结构,读写都使用一个 master,另外一个做 fail-over 的备份,slave 做备份用,双master手动切换,多实例混合部署,没有用 replication,因为存在复制延时。硬盘使用双 SCSI 做 raid0

豆瓣对 MySQL 使用垂直分表,设计时控制好表的宽度,无关数据分开存储(如书、影、音的收藏),单表1亿条数据性能没问题。
使用双master结构便于运维,比如修改表结构时,可以修改备用的 master,然后同步

小文件(图片、博文、音乐)的特点:

  • 主要是 get, set, delete请求,一般不会 update
  • 高可用性,要有 fail-over 机制
  • 占用空间大,10K-5M,增长非常快
  • 因为修改少,对一致性要求低
  • 访问带有高随机性

对小文件的单机文件系统存储系统可以用 reiserfs 3.x (4.x 不能用),远程文件系统可以用 WebDAV,比NFS靠谱,要设计要目录结构,备份可以用 rsync。
多机文件系统存储可以用 MogileFS,瓶颈在 Tracker 上,因为文件的索引信息都记录在一个中心节点的 MySQL 上,适合几十万到一百万的量级,机器故障时数据迁移很慢,因为要拷贝大量小文件。

BeansDB 是豆瓣为解决自己的业务场景开发的一款 key-value 数据库,现已贡献到开源社,此物具备以下特点:

  • hash 路由,无需中心节点,一个简单的路由表即可
  • 数据存储使用 tokyo cabinet
  • 读策略:依次读,直到读到数据为止
  • 利用 HashTree 同步
  • 保证最终一致性,短时间内不保证一致性
  • API接口遵循 memcached 协议

目前豆瓣一年多的时间,部署5台服务器,存储了4T,1.5亿个文件,冗余3份

日志文件存储:

  • 文件大,10M - 10G
  • 重要,不修改,可打包存储
  • 数量少,一天几个
  • 不能阻塞业务逻辑
  • 偶尔使用,可用性要求低

可以使用类GFS分布式存储,豆瓣用的是MooseFS,有FUSE client, Web 界面, 支持 hadoop cluster。日志分析导入数据仓库处理,使用 InfoBright(开源),商业的可以选择KDB+,更多规模可以自行使用 hadoop 的 map-reduce 构建。

另外豆瓣的全文检索用的是 Xapian

相关 [suave blog blog] 推荐:

准备关闭 Blog

- timebug - Dreamer's Blog
工作几年以来,想法变了很多,也越来越觉得自己的大部分想法和琐事都不值得记录,渐渐失去了写 Blog 的兴趣,更新频率越来越低. 加上最近垃圾评论也越来越多,于是就想索性把这里关了. 自从开始写 Blog 以来,我就从来没有想过要创建什么「个人品牌」或者把这里当作一个「网站」来经营,所以可能写的东西或偏激或幼稚或狭隘或自以为是,但我敢说每一篇都是我当时真实想法的反映,发乎内心,没有迎合和营销.

Google Music Beta 推出 Magnifier Blog

- 饼干 - 谷安——谷奥Android专题站
Google Music 已经开测很长一段时间了(现在仍然还处于测试阶段),看起来似乎 Music Beta 服务也回归了,Google 最近推出了 Magnifier Blog. 这个音乐博客作为一个寻找和发现新的音乐枢纽,通过免费音乐的方式突出新的和即将诞生的艺术家. 你可以添加免费的歌曲到你的云 Music Beta 库,都是完全免费的.

继续写Blog的理由

- Woody - 《槽边往事》---比特海日志
有一阵子没有写blog了,对于我这样的人来说这其实是件好事. 再没有人在留言里逼迫我对什么新闻事件表态,我也被林林总总的圈子遗忘,减免了许许多多莫名的麻烦. 可惜现在看起来,这只是一次短期休假而已,因为我又要开始动键盘了. 老妈生病住了一周医院,现在虽已康复,但是还需要静养一段时间. 我知道她经常去饭否看我写的段子,不过我觉得那些内容并不适合她看.

入职培训 « bang’s blog

- Aim - blog.cnbang.net
腾讯入职培训,本来是10天的培训,结果变成了25天,7天军训和18天培训,只有7月的两批入职毕业生才是这样安排,原因是腾讯招的人太多了,深圳各大厦坐不下了,新的大厦万利达刚装修好有气味,太快入住不好,所以给我们加了这么多天的培训,拖延入住万利达的时间. 本来按理说推迟一下万利达同事的入职日期就行了,现在让两批七八百人全部延长培训,估计是想乘机试验一下多点培训和加个军训会不会有好效果.

Suave’s Blog » Blog Archive » QClub - 豆瓣存储经验分享

- sunshine - www.surui.net
QClub - 豆瓣存储经验分享. 上周六QClub上听了豆瓣的存储经验分享,豆瓣对问题分而治之的策略应用的很到位,有收获. 200G 结构化数据(关系、广播等,特点:记录小、结构固定、经常关系查询). 800G 文本数据(9点的博文). 对数据库的关注主要是:可靠性(持久化、一致性),可用性,伸缩性,性能,成本 ….

eBay将其JavaScript IDE开源 — eBay Tech Blog

- 競 - J道jdon.com
eBay Open Sourced its JavaScript IDE — eBay Tech Blog VJET优点: 1.Javascript编程更快,有代码自动完成 代码模板和导向.

Google AdSense以及blog的选择

- hama - demo@virushuo
最近一些中文blog的Google AdSense帐号被封,引起了很多争论. 这个问题并不像看上去的那么简单,没法简单的说出谁对谁错,从规则上说,我认为Google确实缺少被封之后有效的救济手段,但从实际来说,这又存在很多困难. 要理解这些问题的产生,就需要弄清楚AdSense的整个模式是怎么来的.

一张报价单 | Michael Stevenson's Blog

- 彧 - 牛博山寨 编辑推荐
这张报价单据说是东方某大国给北非某著名上校的,不过apparently上校现在是用不着了,因此就大剌剌的出现在了网络上,本着学习研究、共同进步的精神,迈克老男将其翻译成中文,以便墙内的童鞋们围观、评论. 以下就是中文翻译,按照图中条目从上到下:. ) S14-S16合计49494500(欧元).