百度技术沙龙(第1期)- 2. 豆瓣数据存储实践(转载)
源地址:http://www.infoq.com/cn/presentations/liuhongqing-data-store
演讲嘉宾及主题
嘉宾简介:黄方荣
WEB开发高级工程师,1998年大学毕业,2000年开始从事WEB开发工作。现就职于百度,从事于大型WEB项目(前端)技术架构。用最适合的方案解决WEB开发的各种难题!
演讲主题:WEB数据交互的艺术
主要演讲的内容:交互数据的格式;几种疑难数据交互的实现(跨页交互、跨域交互、即时交互等),这些解决方案一部分是已经在现有产品线上实现,还有一部分是正在实施;数据交互的意义等……;WEB发展的源动力是用户的需求,用户的需求又都通过数据的交互来实现,即什么样的交互数据决定着什么样的WEB。本次交流的内容就是从技术上来解析数据交互的实现,让每个解决方案都如同艺术品一样,简洁,优美!
嘉宾简介:刘洪清
系统程序员,2007年毕业于清华大学电机系,现就职于豆瓣网,从事架构和平台相关工作,BeansDB的作者,为改善豆瓣三千多万用户的使用体验而努力。热爱技术,尤其关注实现服务器端大容量、分布式、高性能、高可用等相关技术。做事追求简单和极致,用简洁的手法解决复杂问题。
演讲主题:分布式数据库BeansDB在豆瓣的应用
豆瓣网的三千多万用户上传的照片、写的日记和评论,以及小组话题和订阅的博客内容是非常庞大的,采用传统的关系型数据库和网络文件存储技术很难满足数据的持续增长和24小时可用的需求。演讲中作者会跟大家一起豆瓣网在开发和使用BeansDB来解决以上问题的实践经验。
它是一款大容量高可用分布式的Key-Value数据库,用于解决现在诸多Web 2.0网站面临的海量用户数据的存储和24小时可用等问题。演讲会最开始它所面对的问题出发,一步步地探讨解决方案,以及BeansDB是如何演变成今天的样子,解决豆瓣网所面对的问题的。最后再跟其它Kye-Value数据库的特点进行对比,分析各自的优缺点以及合适的应用场景,讨论一下BeansDB的问题以及下一步的发展方向。
关于QClub:QClub是由InfoQ中文站定期组织的一个线下技术交流活动,目的是让中高端技术人员有一 个相对自由的交流思想 和交友的平台。每次QClub只关注一个主题,邀请国内外在该主题领域有研究的技术专家分享其经验,但QClub更注重讨论,因为它认为讨论才是真理,从 讨论中才能激发参与者的智慧和火花。
===================================================================================
刘洪清是豆瓣网的系统程序员,同时也是豆瓣开源数据存储系统BeansDB,这次他主要介绍了如何应用BeansDB来解决三千多万豆瓣用户持续增长的数据需求。豆瓣现在有超过3800万的用户,有15万个小组,430万条目,300万评论等,换算成后台的数据,则是200G结构化数据,800G文本数据,10T图片,6T音乐等等。要保证这些数据24小时的稳定性,安全性和可用性,并不是一件易事。豆瓣采取的措施就是将数据进行分类,比如将用户信息、好友关系等归为结构化数据类型,将文本内容、图片等归为小文件类型,而日志和备份数据归为大文件类型。然后采用不同的技术来解决问题,比如结构化数据用MySQL,小文件用BeansDB,大文件用MooseFS等。
在问答环节,有读者对豆瓣广播的实现方式很感兴趣,刘洪清介绍说:
豆瓣的广播跟twitter等微博客收件箱的实现思路不太一样,是只保持一分广播副本, 在用户浏览的时候实时合并,依靠精巧的缓存和数据流设计,能够在用户可接受的时间范围内完成复杂的广播合并。这种方式可以大大减少数据库中的数据量和压力, 也与我们产品的某些特性配合得比较好。这种实现方式可行的前提是,用户的关注数是有限的,一般在一百左右,对社会网络的相关研究也是类似的结论。
对于MySQL的双Master如何实现,以及如何避免诸如自增ID等可能的数据冲突等问题,刘洪清也介绍了豆瓣的做法:
豆瓣目前的双Master主要是处于切换的便利性考虑,数据读写方面其实是Master-Slave结构,通过运维的方式来控制,同时只有一个Master是可写的,比如修改帐号权限等,这样就没有数据冲突的问题了。