Какова стандартная процедура для генерации ключей для каждого документа в Java..?
Я хочу вставить документы в Couchbase как большую часть в Java. Так какова стандартная процедура для генерации ключей для каждого документа в Java..?
1 ответ
Вы можете использовать "встречный" документ Couchbase как форму последовательности. Используя реактивный подход с Java SDK, все будет примерно так, если предположить, что ваш пакет List<JsonObject>
с каждым контентом для сохранения в Couchbase:
//start with a sequence of contents to save
Observable.from(listOfDocumentContent)
//for each content, asynchronously generate something...
.flatMap(content -> bucket.async() //assuming bucket is a `Bucket`
//atomically generate an increasing value, starting from 0
.counter("DOCUMENT_KEY_GENERATOR", 1, 0) //use a more relevant document key
//this gives a `JsonLongDocument`, so extract the number and turn that + the original content into a `JsonDocument` to be saved
.map(cDoc -> JsonDocument.create(KEY_PREFIX + cDoc.content(), content))
)
//next up, asynchronously saving each document we generated in the previous step... You could also use insert since you don't expect the keys to already exist in Couchbase
.flatMap(docToSave -> bucket.async().upsert(docToSave))
//this will perform the above asynchronously but wait for the last doc in the batch to finish saving:
.toBlocking().last();
Обратите внимание, что мы используем KEY_PREFIX
при создании сохраняемого документа, чтобы снизить риск коллизии (в противном случае другие документы в корзине могут быть названы "1", если вы сделаете это для нескольких типов документов в одной корзине).
Также настройте метод сохранения, используемый для ваших нужд (здесь upsert
против create
против update
, TTL, требования к долговечности и т.д...)