在couchbase中,考虑一个文档有一个字段,其中包含一组引用其他文档的键
{
"some_ids": ["otherdoc1", "otherdoc2", "otherdoc3"]
}
这两个用于检索some_ids
字段中所有文档的解决方案中哪一个能够提供最佳性能?
List<JsonDocument> foundDocs = Observable
.just("otherdoc1", "otherdoc2", "otherdoc3")
.flatMap(new Func1<String, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(String id) {
return bucket.async().get(id);
}
})
.toList()
.toBlocking()
.single();
创建设计视图,然后使用startKey
和endKey
// Map function
function(doc, meta) {
if (doc.type == 'otherdoc') {
emit(meta.id, doc);
}
}
// ViewQuery (in a java method)
ViewQuery.from('designOther', 'viewOther')
.startKey('otherdoc1')
.endKey('otherdoc2');
答案 0 :(得分:2)
在Couchbase中,当您知道密钥时,SDK会知道要求该密钥的节点(通过散列)。另一方面,查询视图意味着视图引擎要联系集群中的每个节点。
所以直接得到&amp;&amp;在RxJava中进行批处理,因为你知道密钥,会为你节省额外的往返次数,并且最终会有更好的表现!