是否有办法获得键/值格式的所有对象,这些对象属于一个类似的二级索引值。我知道我们可以获得一个二级索引的密钥列表(bucket / {{bucketName}} / index / {{index_name}} / {{index_val}})。但不知何故,我的要求是如此,如果我也能得到所有的对象。我不想为每个键执行单独的查询以分别获取对象详细信息。
我对Riak来说是全新的,我完全是一个前端人员,所以如果我问的问题是新手级别,请耐心等待。
答案 0 :(得分:0)
在Riak中,有时候更好的方法是为每个密钥进行单独的查找。来自其他数据库,这看起来很奇怪,而且可能效率低下,但是你可能会发现你的查询在索引和一堆单个对象上的速度比单个go中的所有对象的map / reduce更快。
尝试这两种方法,看看哪种方法对您的数据集来说最快 - 影响这一点的变量是:查询数据的大小;每个文件的大小;集群的力量;加载集群在等。
Python代码演示索引并单独获取(如果您获得的数据很大,此方法可以在客户端上实现内存效率,因为您不需要存储所有内存中的对象):
query = riak_client.index("bucket_name", 'myindex', 1)
query.map("""
function(v, kd, args) {
return [v.key];
}"""
)
results = query.run()
bucket = riak_client.bucket("bucket_name")
for key in results:
obj = bucket.get(key)
# .. do something with the object
Python代码演示所有对象的map / reduce(返回{key:document}对象列表):
query = riak_client.index("bucket_name", 'myindex', 1)
query.map("""
function(v, kd, args) {
var obj = Riak.mapValuesJson(v)[0];
return [ {
'key': v.key,
'data': obj,
} ];
}"""
)
results = query.run()