FindAndModify с помощью Couchbase - PullRequest
       7

FindAndModify с помощью Couchbase

1 голос
/ 25 февраля 2020

У меня есть коллекция документов, которые должны обрабатываться несколькими клиентскими узлами. По сути, каждый документ должен обрабатываться только одним клиентским узлом.

Так что я думаю о том, чтобы создать уникальный clientId для каждого узла и установить clientId для обрабатываемого документа, чтобы сообщить другим клиентам, что этот документ обрабатывается.

Я уже реализовал этот подход, используя Mongodb пару лет go, используя оператор findAndModify , который гарантирует атомарность для обоих установок clientId для параметра clientId документ и возвращая его . Сейчас я ищу, возможно, похожий подход в Couchbase, но не смог найти.

Есть идеи, как это сделать?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Я думаю, что вы ищете метод с именем getAndLock . Это гарантирует, что только один сервер читает этот документ.

Обновление документа с атрибутом может быть плохой идеей, если во время этого процесса произойдет сбой сервера, поскольку никакой другой сервер не примет те документы, которые уже имеют назначен неисправному.

1 голос
/ 25 февраля 2020

Мы разработали подобный сценарий в нашем проекте. То, что мы делаем, это создаем один документ и сохраняем другую обработку, в этом c. Если этого документа нет в этом, вы можете предотвратить его обновление другим клиентом.

...