专访豆瓣网首席架构师洪强宁:BeansDB与NoSQL的应用与发展

【独家报道】在2009年数据库大事记中,我们曾重点关注过NoSQL运动和Key-Value形式的数据库产品;在《分布式可扩展非关系数据库聚焦》一文中也曾介绍过几款非关系型数据库。今天我们一起深入国内采用Key-Value的数据库——豆瓣网的BeansDB。

 
豆瓣网首席架构师洪强宁先生接受记者访问

BeansDB于去年12月31日发布,是国内知名网站豆瓣网自主开发的针对大数据量、高可用性的分布式键值存储系统,在伸缩性和高可用性方面有非常好的表现。在刚刚结束的Qcon 2010开发者大会上,记者有幸采访到豆瓣网的首席架构师洪强宁先生,对BeansDB和Python编程语言等方面做了深入交流。

BeansDB在豆瓣的应用

BeansDB主要由Server端和Client端两个部分组成。Server端用C编写,使用Memcached的通讯协议,任何支持Memcached的Client端都可以与BeansDB的Server端同步来获取和存储数据。在Client端方面的主要差别是分布式的逻辑实现方面。目前,BeansDB的Client端主要是豆瓣自己用Python语言的实现。Client端的运作方式是写数据时写入多份,读的时候只读一份,用其他任何语言实现也和简单。

BeansDB开放在Google Code上,在采访中,洪强宁先生谈到,豆瓣开放BeansDB,希望能看到其他语言的Client端实现,让这个BeansDB的使用更加方便,能让更多人用到这个产品。

目前,BeansDB在豆瓣主要部署了两个集群:一个集群用于存储数据库中的大文本数据,比如日记、帖子一类;另外一个豆瓣FS集群,主要用于存储媒体文件,比如用户上传的图片、豆瓣电台上的音乐等。

BeansDB的可伸缩性和可用性

豆瓣网开发BeansDB,采用Key-Value的存储架构主要有哪些优点呢?在访谈中,洪强宁先生为我们讲解了BeansDB在可伸缩性和高可用性方面的优势。

BeansDB采用Key-Value存储架构,其最大的特点是具有高度的可伸缩性;在BeansDB的架构下,在大数据量下,扩展数据节点将轻而易举,只需要添加硬件,安装软件,修改相应的配置文件即可。

BeansDB在可用性方面也有很大的优势,任何一个节点宕机都不会受到影响,数据是自动伸缩冗余的。在运维方面也很简单,基本上没有什么用户数据的冗余残余,所有数据通过一个同步脚本可以快速同步。

NoSQL是对网站架构师的一个挑战

BeansDB是对亚马逊Dynamo数据库的一个简化,是对NoSQL的一个延伸。在谈到去年蓬勃发展的NoSQL运动时,洪强宁说:去年可以称之为NoSQL元年,大量的NoSQL数据库发布并被人们注意到。这与互联网的发展有很大关系,互联网发展带来一个问题就是数据的海量增长,数据的可伸缩性是一个主要问题。传统的关系型数据库在这方面有一定的局限性,NoSQL就是为解决这一问题而诞生的。

随着NoSQL数据库的逐步成熟,会有越来越多的网站会把相适应的逻辑放在NoSQL数据库上来,会看到越来越多的网站在应用NoSQL数据库。

洪强宁同时强调,NoSQL的流行并不意味着关系型数据库的消亡。NoSQL与关系型数据所关注和应用的点并不相同:在一个网站里面,除了有伸缩性的需求之外,还有关系型数据库更合适的需求,在某些应用场景下,应用关系型数据更加有效合理。

NoSQL与关系型数据库并存是对网站架构师的挑战。以前架构师只考虑如何应用关系型数据库,现在我们要考虑的是如何更好的同时应用好关系型和非关系数据库的挑战。这将是未来网站架构师需要关注的一个方向。

关于NoSQL请参考之前的报道《对SQL说不!NoSQL的数据库技术革命》和《探寻关系数据库和ORM的最佳替代者》

关于BeansDB请参考《豆瓣网开源数据库BeansDB发布 采用分布式键值存储》 ,BeansDB的一些特性列表:

◆高可用:通过多个可读写的用于备份实现高可用

◆最终一致性:通过哈希树实现快速完整数据同步(短时间内数据可能不一致)

◆容易扩展:可以在不中断服务的情况下进行容量扩展

◆高性能:异步IO和高性能的KeyValue数据TokyoCabinet

◆可配置的可用性和一致性:通过N,W,R进行配置

◆简单协议:Memcache兼容协议,大量可用客户端

客户端

目前只提供了Python版本的客户端,在python目录中,该目录中各文件的左右如下:

◆dbclient.py BeansDB的客户端,由memcached的客户端简单封装而成

◆status.py 查看BeansDB的状态,各个节点的数据分布,以及同步状态

◆sync.py 同步各节点

◆httpd.py HTTP方式访问BeansDB的内容(目前只有GET方式)

◆store.pyx, dbserver.py test.py setup.py

◆Python 版本的BeansDB,核心部分是C实现

专访洪强宁视频请见下一页

#p#

视频采访实录

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/256729.html<

(0)
运维的头像运维
上一篇2025-05-01 10:48
下一篇 2025-05-01 10:50

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注