如何使用批量获取从沙发床获取有序结果

艾尔

我正在尝试通过使用异步获取来提高查询沙发床视图的性能。我已经阅读了他们的文档,了解这样做的正确方法,内容如下:

Cluster cluster = CouchbaseCluster.create();
Bucket bucket = cluster.openBucket();


List<JsonDocument> foundDocs = Observable
.just("key1", "key2", "key3", "key4", "key5")
.flatMap(new Func1<String, Observable<JsonDocument>>() {
    @Override
    public Observable<JsonDocument> call(String id) {
        return bucket.async().get(id);
    }
})
.toList()
.toBlocking()
.single();

效果很好,也很快速,但是由于我依赖结果的顺序,因此我似乎需要做一些额外的工作来保持结果有序。在上面的示例中,JsonDocument列表包含所有5个文档,但是顺序在调用之间是随机变化的。是否有使用JavaRx功能或Couchbase Java SDK功能对结果进行排序的简便方法?

我能想到的唯一解决方案是将结果保存到HashMap中,然后使用此HashMap将原始ID列表转换为JsonDocuments的有序列表。

西蒙·巴斯勒(Simon Basle)

除了flatMap,您可以使用:

  • concatMap:将保留顺序,但实际上会等待每个内部GET完成之后再触发下一个(可能会以较低的性能恢复为顺序执行)
  • concatMapEager:将立即订阅内部Observable(因此触发inner GET)。通过缓冲乱序到达的响应来维持顺序,直到可以在序列中的正确索引处重放它们为止。就订购和性能而言两全其美。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从沙发床视图获取柜台文件

来自分类Dev

通过python批量插入沙发床

来自分类Dev

如何通过给定的密钥来检索沙发床中的所有文档?

来自分类Dev

使用带有boolean参数的沙发床视图时出现问题

来自分类Dev

沙发床的油门XDCR

来自分类Dev

沙发床的油门XDCR

来自分类Dev

如何在沙发床视图中访问值?

来自分类Dev

建议在多租户应用中使用沙发床模型

来自分类Dev

包装沙发床访问功能

来自分类Dev

Sync_gateway沙发床requireRole

来自分类Dev

沙发床无法存储,因为太大

来自分类Dev

Sync_gateway沙发床requireRole

来自分类Dev

如何从有序词典中获取所有键?

来自分类Dev

有关沙发床复制品细节的一些问题

来自分类Dev

有关沙发床复制品细节的一些问题

来自分类Dev

网上有免费的免费沙发床商店可供学习吗?

来自分类Dev

使用正则表达式形式的密钥删除沙发床存储桶中的条目

来自分类Dev

要在N1QL沙发床情况下使用内部元素总和

来自分类Dev

如何在sqlite中获取有序查询?

来自分类Dev

如何从有序字典列表中获取所需的值

来自分类Dev

Matlab:获取有序对的列表

来自分类Dev

获取记录的有序子集

来自分类Dev

在沙发床中检测到锁释放?

来自分类Dev

匹配沙发床设计中的任何键

来自分类Dev

为Hyperledger Fabric沙发床启用SSL

来自分类Dev

是否可以从沙发床参考javascript库?

来自分类Dev

在沙发床中检测到锁释放?

来自分类Dev

为什么不能登录到沙发床?

来自分类Dev

使用适用于Python SDK的Twisted API异步N1QL沙发床查询