beansdbテスト

2687 ワード


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.2つの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),
}