У вас есть контейнер Azure Cosmos DB SQL API, секционированный по /customerId. Когда размещается заказ, ваша служба должна атомарно: (1) создать документ заказа, (2) обновить openOrderCount в профиле клиента и (3) удалить документ корзины клиента. Все три документа имеют одинаковое значение customerId. Вы хотите, чтобы все операции выполнялись или завершались с ошибкой вместе, не используя хранимые процедуры на стороне сервера. Что вы должны сделать?
Выберите ответ
Нажмите на вариант, чтобы проверить свой ответ.
Правильный ответ: Использовать TransactionalBatch из Azure Cosmos DB SDK для выполнения операций создания, замены и удаления с тем же значением PartitionKey, равным customerId..
Почему это правильный ответ
Правильный ответ — использование TransactionalBatch. Azure Cosmos DB SDK предоставляет TransactionalBatch для выполнения атомарных операций с несколькими документами в пределах одного логического раздела. Поскольку все три операции (создание заказа, обновление профиля клиента, удаление корзины) относятся к одному customerId, они находятся в одном логическом разделе, что позволяет TransactionalBatch гарантировать атомарность (все или ничего). Включение кросс-секционных ACID-транзакций невозможно, так как Azure Cosmos DB не поддерживает атомарные транзакции между логическими разделами. Change Feed Processor обеспечивает eventual consistency, а не строгую атомарность, необходимую для этого сценария. Выполнение отдельных запросов с ETag не гарантирует атомарность: даже с повторными попытками между запросами могут произойти частичные обновления, что нарушит требование "все или ничего".
Сдайте экзамен — без бесконечного поиска ответов
Получите все проверенные вопросы и объяснения для этого экзамена в одном месте и сэкономьте часы подготовки. 1000+ сертификаций · 20+ языков · начните бесплатно.
Сдайте экзамен быстрее → Карта не требуется