在Riak Python Client中读取/存储多个对象的有效方法?

时间:2015-06-11 21:59:25

标签: python riak

我正在编写一个恢复riak数据库工具,我需要从一个riak服务器到另一个riak服务器编写数十万个密钥。这样做大约91,000个密钥需要11分钟(根本没有效率)。我的代码的基本概要如下:

data_objects = bucket.multiget(keys)
for data_object in data_objects:
    newEntry = bucket.new(data_object.key, data=data_object.data)
    newEntry.store()

python应用程序在单个multiget()函数调用中花费大约7分钟,该调用创建了91,000个Riak对象的data_objects列表,并且在对store()函数的91,000次调用中大约需要4分钟。

是否有更有效的方法来阅读对象?存储对象的更有效方法是什么? riak python库中有一个multiget函数,但不是多元函数。

1 个答案:

答案 0 :(得分:-1)

不要使用multiget,创建自己的线程,平等地分享密钥,从旧桶获取,存储到新的。 gevent.monkey_patch.all()也可以提供帮助。