Inside BeansDB

Inside BeansDB

ID:39715774

大小:2.11 MB

页数:23页

时间:2019-07-09

Inside BeansDB_第1页
Inside BeansDB_第2页
Inside BeansDB_第3页
Inside BeansDB_第4页
Inside BeansDB_第5页
资源描述:

《Inside BeansDB》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、BeansDB设计与实现davies.liu@gmail.comDoubanInc.2010-12-28BeansDB是什么?Key-Value数据库分布式的,伸缩性比较好(P)性能和容量最终一致的(C)可能出现短时间内的数据不一致高可用的(A)部分节点出现故障不影响服务BeansDB不是什么?事务型关系数据库有严格数据一致性需求的多个对象POSIX文件系统不要放过大的对象不能访问对象的部分内容缓存系统性能不是那么高,与内存是否充足有关CDN等等典型用法图片文件,小媒体文件(mp3)大文本字段(通常>1kb)profile,properties数

2、据体系中的叶子部分不是其它数据依赖的关键非典型使用大量过于零碎的小内容(<100byte)收藏数据广播数据通常需要批量查询非在线使用数据用户上传的原始图片日志文件中间结果矩阵计算的中间结果系统结构ABCDEFProxy1Proxy2Clients…数据分布方式手动指定按照bucket分配(bucket数容易调整)Proxy自动路由,根据存储节点的数据信息为什么不用ConsistantHash?数据迁移成本比较大数据所在位置不清晰,不方便迁移不方便扩容等节点数更多时再采用数据分布同步0/001/00HashTree16进制2/00@3/

3、00@04/3040710897413@005/98510904490@a6/1528810916003@a07/3005110911943@aa8/39841@f@f09/00@f1a/233761memcat--servers=localhost:7900@b/00c/5054610893019d/1595310899763e/3664110903396f/3483210886637冲突解决版本号优先用高版本覆盖低版本修改时间用新数据覆盖旧数据数据迁移及故障恢复直接拷贝数据及Hint文件不需要关闭正常数据节点协议memcach

4、ed兼容协议set过期时间作为版本号get@xxx返回HashTree状态get?xxxx返回对应key的meta信息flush_allMerge,压缩数据文件大小协议实现使用memcached的代码异步网络IO多worker线程,leader/follower模式数据存储实现Bitcasktestdb日志结构+全内存索引

5、--0简单,可靠,高性能

6、

7、--000.data

8、

9、--000.hint.qlz多目录

10、

11、--001.data便于迁移和恢复

12、`--001.hint.qlz提高并发性

13、--1支持数据压缩

14、

15、--000.data

16、

17、

18、--000.hint.qlz自动选择性压缩

19、

20、--001.data

21、`--001.hint.qlzHashTree实现需求读取,保护在数据文件中的偏移修改时的版本管理,版本号节点间的同步,内容的hash能快速建立,降低启动时间空间效率索引全部在内存,决定了单机容量平均20byte/record(包括key在内)时间效率每秒插入近百万条HashTree实现类似于Heap实现Item[verion,hash,pos,length,name[…]]Node基于数组,16进制D=0D=1D=2LeafItem连续存储,最多128个[size,co

22、unt,used,Item[0],Item[1],…]线程模型N个worker线程Leader/follower模型得到事件后立即处理,无线程切换释放leader锁,IO操作时不阻塞其它事件写缓存,后台定时/定量写入到磁盘读的时候才打开数据文件减少fd占用,读并发好案例1:图片和音频文件数据量:每个1k到20M460Gx16x3=22T16Mx16x3=768M17个节点,约50块SATA硬盘访问量:150qps左右有CDN作为缓存性能Med/Avg/90%/99%:18/35/86/266ms案例2:文本数据数据量:每个10b到100k70G

23、x16x3=3.3T28Mx16x3=1.3B8个节点,9块SATA硬盘访问量:180qps左右有memcached作为缓存性能Med/Avg/90%/99%:3/10/21/65ms为什么做BeansDB?其它Key-Value选择memcachedb,tokyotrant,主从复制不便于Fail-Over其它类Dynamo选择Dynomite:erlang完整实现,内存效率可能有问题Voldemort:Java部分实现最初的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。