какова стандартная процедура генерации ключей для каждого документа в java..?

Я хочу вставлять документы в Couchbase как навалом на Java. Итак, какова стандартная процедура генерации ключей для каждого документа в java..?


person Swamy Thota    schedule 28.03.2017    source источник


Ответы (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, требования к долговечности и т. д.).

person Simon Baslé    schedule 30.03.2017