六、豆瓣社区
BeansDB 是一个由国内知名网站豆瓣网自主开发的主要针对大数据量、高可用性的分布式KeyValue存储系统,采用HashTree和简化的版本号来快速同步保证最终一致性(弱),一个简化版的Dynamo,它在伸缩性和高可用性方面有非常好的表现。
▲豆瓣社区
它采用类似memcached的去中心化结构,在客户端实现数据路由。目前只提供了Python版本的客户端,其它语言的客户端可以由memcached的客户端稍加改造得到。
它具有如下特性:
●高可用:通过多个可读写的用于备份实现高可用
●最终一致性:通过哈希树实现快速完整数据同步(短时间内数据可能不一致)
●容易扩展:可以在不中断服务的情况下进行容量扩展。
●高性能:异步网络IO, 日志结构的存储方式Bitcask.
●简单协议:Memcache兼容协议,大量可用客户端
目前,BeansDB在豆瓣主要部署了两个集群:一个集群用于存储数据库中的大文本数据,比如日记、帖子一类;另外一个豆瓣FS集群,主要用于存储媒体文件,比如用户上传的图片、豆瓣电台上的音乐等。
BeansDB采用Key-Value存储架构,其最大的特点是具有高度的可伸缩性;在BeansDB的架构下,在大数据量下,扩展数据节点将轻而易举,只需要添加硬件,安装软件,修改相应的配置文件即可。
BeansDB在可用性方面也有很大的优势,任何一个节点宕机都不会受到影响,数据是自动伸缩冗余的。在运维方面也很简单,基本上没有什么用户数据的冗余残余,所有数据通过一个同步脚本可以快速同步。
总结
综合来看,NoSQL数据库正在逐渐地成为数据库领域中不可或缺的一部分,它弥补了关系型数据库在某些应用场景的不足,但是它也并非功能较多,方法得当的话,能获得很多的好处。企业应该谨慎行事,要充分地认识到这些数据库的一些限制和问题。按照毛爷爷的话讲就是:前途是光明的,道路是曲折的。