`
san_yun
  • 浏览: 2652244 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

beansdb测试

 
阅读更多
from dbclient import Beansdb

s1 = "localhost:7100"
s2 = "localhost:7101"
BEANSDBCFG = {
    s1: range(16),
    s2: range(16),
}

key = 'txt:test'
db = Beansdb(BEANSDBCFG, 16)
b1 = Beansdb({s1: range(16)}, 16)
b2 = Beansdb({s2: range(16)}, 16)

for i in xrange(1000000,2000000):
	print i
	db.set('num:test%s'%i,'%sabcefdsfadslkjfjkdslfjlkdsjflkdsjkfldsjlkfjdslfdsljfkldsjfldsjfldsjlkfjdslkjfdsjlkfjdslkfjldsjfljskdfjlkjdsfhlsfdhsd'%i)




1.启动两个beansdb实例

beansdb -d -n 200 -p 7101 -H /duitang/data/mediadb/7101 -u admin -L /duitang/logs/usr/beansdb.log
beansdb -d -n 200 -p 7100 -H /duitang/data/mediadb/7100 -u admin -L /duitang/logs/usr/beansdb.log

2. beansdb_client

db = Beansdb(BEANSDBCFG, buckets_count)

buckets_count = 16
self.servers= {'localhost:7100':memClient1,'localhost:7101':memClient2}
self.server_buckets = {'localhost:7100':[1,2,3,4,5],'localhost:7101':[6.7.8,9.10]}
self.buckets=[[memClient1,memClient2],[memClient1,memClient2],[memClient1,memClient2],...buckets_count]

写入的时候beansdb会多次写
rs = [s.set(key, value) for s in self._get_servers(key)]

其实之前我对beansdb一知半解就拿来用,今天看了一下dbclient的set方法才发现会多次写入, 当我下面这样配置的时候,其实是172.3和172.5相互备份是吧?

{"192.168.172.3:7700": range(16),
"192.168.172.5:7700": range(16),
}

对于图片这种文件总量很大,如果相互备份感觉挺浪费磁盘空间的(原始图片本地都有备份),那可以改成如下方案吧:
{"192.168.172.3:7700": range(8),
"192.168.172.5:7700": range(8:16),
}

这种方案优点是比较节约空间,缺点是存在单点故障。


另外一点体会是,beansb的扩容是基于buckets拆分来扩容的对吧,如下(不考虑备份问题)
{"192.168.172.3:7700": range(16)}
             |
             |
             ↓                         
{"192.168.172.3:7700": range(8),
"192.168.172.4:7700": range(8,16),
}
             |
             |
             ↓
{"192.168.172.3:7700": range(4),
"192.168.172.4:7700": range(4,8),
"192.168.172.5:7700": range(8,12),
"192.168.172.6:7700": range(12,16),
}


3.迁移方案

{"192.168.172.3:7700": range(16),
"192.168.172.5:7700": range(16),
}
             |
             |
             ↓
{"192.168.172.3:7700": range(16),
"192.168.172.5:7700": range(8),
"192.168.172.6:7700": range(8,16),
}
分享到:
评论

相关推荐

    beansdb设计与实现

    ### BeansDB设计与实现 #### 一、BeansDB概述 BeansDB是一款由豆瓣开发的分布式存储系统,它主要被设计为一种高效的键值(Key-Value)数据库,具有良好的可扩展性和高可用性特点。该系统的目标是提供一个既能够应对...

    Inside BeansDB

    ### BeansDB:豆瓣开源数据库存储系统的深度解析 #### 一、BeansDB概览 BeansDB是豆瓣于2009年开发的一款开源数据库存储系统,它主要被设计为一种高性能、分布式、高可用的Key-Value数据库。不同于传统的事务型...

    beansdb-0.5.3-中文源注释[Original].rar

    这是本人花了几天的时间对 目前beansdb的源代码进行的分析,其中核心部分每一行都有详细注释。详细注释的文件有htree.c hstore.c bitcask.c record.c beansdb.c,其它部分注释的比较少。因为其它部分不会影响我们的...

    Inside-BeansDB.rar_inside

    BeansDB 是一个强大的分布式键值存储系统,设计用于处理海量数据并确保高可用性。它在大数据领域扮演着重要角色,因为它的核心特性是能够高效地存储和检索大量的键值对。这个系统的设计灵感来源于Amazon的Dynamo,但...

    BeansDB代理和监控器Beanseye.zip

    BeansDB 是一个分布式键值存储系统,主要用于支持大规模的数据存储和检索。在豆瓣(Douban)的业务场景中,它被用来处理大量的用户数据和元数据。Beanseye 是针对 BeansDB 的一个重要补充,它是一个由 Go 语言编写的...

    ImageServer:使用Beansdb作为后端的图像服务

    beansdb -p 7901 -d -P/tmp/beansdb1.pid -L/tmp/beansdb1.log -H /home/gfreezy/beans/db/db1 -vv beansdb -p 7902 -d -P/tmp/beansdb2.pid -L/tmp/beansdb2.log -H /home/gfreezy/beans/db/db2 -vv 自定义设置。...

    cpp-BeansDB豆瓣公司另一个分布式键值存储系统

    BeansDB 是一个主要针对大数据量、高可用性的分布式KeyValue存储系统,采用HashTree和简化的版本号来快速同步保证最终一致性(弱),一个简化版的 Dynamo。 它采用类似memcached的去中心化结构,在客户端实现数据...

    已存档,请参阅GoBeansDB。-C/C++开发

    什么是Beansdb? Beansdb是为大型在线系统设计的分布式键值存储系统,旨在实现高可用性和易于管理。 它采用了Amazon Dynamo的想法,然后进行了简化以保留“什么是Beansdb”? Beansdb是为大型在线系统设计的分布式...

    豆瓣的架构和一些组件

    在豆瓣内部,BeansDB有两个集群,doubandb和doubanfs,分别用于存储小型数据(如文本信息)和中型数据(如图片、音频)。doubandb存储了约30亿条记录,9TB的数据,而doubanfs存储了约10亿条记录,150TB的数据。 ...

    NoSQL数据库笔谈

    Memc ac hed客户端(mc ) 缓存式的Web应用程序架构 性能测试 dbc ac hed Memcached 和 dbcached 在功能上一样吗? 列存系列 Hadoop之Hbase 耶鲁大学之HadoopDB GreenPlum FaceBook之Cassandra Cassandra特点 Keyspace ...

    豆瓣网海量数据存储架构

    相比之下,BeansDB采用了去中心化的设计,每个区间都对应多个节点,通过客户端写入和读取操作实现了数据的冗余存储。BeansDB通过HashTree机制实现了快速的数据同步,大大提升了系统的可靠性和性能。 #### 大文件的...

    大数据知识竞赛试题.doc

    14. BeansDB开发者:BeansDB是由豆瓣社区开发的。 15. 不是NewSQL数据库:Sybase是一个传统的关系型数据库,而不是NewSQL。 16. 不是NoSQL数据库:DB2是传统的关系型数据库。 17. 不是传统关系型数据库:HBase是...

    NoSQL数据库学习教程.pdf

    BeansDB是指使用BeansDB来实现最终一致性键值存储。 未分类: Skynet是指使用Skynet来实现未分类的分布式系统。 Drizzle比较是指比较不同分布式系统的特点和优势。 可扩展性是指分布式系统的可扩展性。 数据和...

    2021年新版试卷题大数据知识竞赛.doc

    - BeansDB是由豆瓣社区开发的,NewSQL数据库如MemSQL提供高性能的事务处理,而NoSQL数据库如Bigtable和Dynamo提供了灵活的数据模型。 4. 数据挖掘与可视化: - 数据挖掘包括数据融合、分析和决策支持,但发现的...

    大数据知识竞赛试题借鉴.doc

    - BeansDB是中国豆瓣社区开发的分布式存储系统。 - NewSQL数据库如MemSQL、TokuDB提供类似关系型数据库的ACID特性,但支持更大规模的数据。 - NoSQL数据库如Bigtable、Dynamo不使用传统的关系模型,适应大数据...

    一切为了分布式——2009年Web后端技术回顾.pdf

    Dynamo的设计理念被许多分布式键值存储系统采纳,如豆瓣的BeansDB。这种分布式存储方式解决了单点故障、容错和负载均衡问题,为大规模Web应用提供了基础。 传统的LAMP(Linux、Apache、MySQL、PHP)架构在面对高...

Global site tag (gtag.js) - Google Analytics