我有一個具有大約25M文檔的Couchbase集羣。我能夠順序讀取它們,並且我還有一個函數可以從數據庫中讀取特定數量的文檔。但是我的用例稍有不同,因爲我無法將所有25M文檔(每個文檔都很大)存儲在內存中。作爲批處理從Couchbase存儲桶讀取文檔
我需要處理批量的文件,說1M /批,推的那批我的記憶,(做這些文件的一些操作),並推下一批。
,我已經寫了閱讀的文件具體數量並不能保證它再次調用時返回一組不同的文件的功能。
有沒有辦法讓我可以完成這個功能?我也有一個可以批量創建文檔的功能。我不確定是否可以編寫類似的功能來批量讀取文檔。該功能如下。
public void createMultipleCustomerDocuments(String docId, Customer myCust, long numDocs) {
Gson gson = new GsonBuilder().create();
JsonObject content = JsonObject.fromJson(gson.toJson(myCust));
JsonDocument document = JsonDocument.create(docId, content);
jsonDocuments.add(document);
documentCounter++;
if (documentCounter == numDocs) {
Observable.from(jsonDocuments).flatMap(new Func1<JsonDocument, Observable<JsonDocument>>() {
public Observable<JsonDocument > call(final JsonDocument docToInsert) {
return (theBucket.async().upsert(docToInsert));
}
}).last().toBlocking().single();
documentCounter = 0;
//System.out.println("Batch counter: " + batchCounter++);
}
有人可以幫助我嗎?
你的問題是關於批量閱讀文檔,並且你已經發布了編寫文檔的代碼。你的rx代碼放大看起來不錯。如何發佈你嘗試批量加載的內容。 – Will
問題是我無法知道如何從服務器獲取文檔。 「正義」功能需要按鍵嗎?我沒有訪問密鑰。所以我無法寫出類似的閱讀文檔的功能。 –
你不知道鑰匙?忽略批處理,你打算如何指定你需要的文件。看法? N1QL?那些會合適嗎?你沒有在問題中指定。我想你可能應該更新問題來正確解釋你的問題。 – Will