我有时需要一次更新许多文档,10K 甚至更多,我在想每种方式的优点/缺点是什么?
我想到了两种方法,我很乐意了解什么是优势/劣势并以第三种方式听到。
我正在寻找一种好的批处理方式来做到这一点。
方式1,发送到observable以获取所有文件并完成工作:
Observable
.from(ids)
.flatMap(new Func1<String, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(String id) {
return bucket.async().get(id);
}
})
.map(new Func1<JsonDocument, JsonDocument>() {
@Override
public JsonDocument call(JsonDocument original) {
// do some change in the document content
original.content().put("add", "content");
return original;
}
})
.flatMap(new Func1<JsonDocument, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(JsonDocument modified) {
return bucket.async().replace(modified);
}
}).subscribe();
方式2,在每个文档ID上运行并使用异步获取,然后更改文档异步方式:
for (String id : ids){
bucket.async()
.get(id)
.map(new Func1<JsonDocument, JsonDocument>() {
@Override
public JsonDocument call(JsonDocument jsonDocument) {
// do some change in the document content
jsonDocument.content().put("add", "content");
return jsonDocument;
}
})
.flatMap(new Func1<JsonDocument, Observable<JsonDocument>>() {
@Override
public Observable<JsonDocument> call(JsonDocument modified) {
return bucket.async().replace(modified);
}
}).subscribe();
}