Как обновить ключевой элемент раздела документа БД Cosmos? - PullRequest
0 голосов
/ 27 января 2019

Мне нужно обновить документ, изменив значение элемента, используемого в качестве ключа раздела.В документации говорится, что документ уникально идентифицируется по его идентификатору и ключу раздела.

Итак, если я изменю ключ раздела, это всегда будет создавать новый документ?Или он создаст новый документ, только если он помещен в другой раздел?

Если новый документ всегда создается, то я думаю, что самый безопасный способ его обновления -

  1. Создать новыйdocument.
  2. В случае успеха удалите старый документ.
  3. Если удалить его, получится дублирование данных, но по крайней мере данные не будут потеряны.

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

С уважением, все.

1 Ответ

0 голосов
/ 27 января 2019

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

Процесс должен быть таким:

  • Сохранить старый документ в памяти
  • Удалить старый документ
  • Создать новый документ
  • Если последний не получится, воссоздать старый документ

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...