Masz kontener Azure Cosmos DB SQL API podzielony na partycje według /customerId. Gdy zamówienie zostanie złożone, Twoja usługa musi atomowo: (1) utworzyć dokument zamówienia, (2) zaktualizować openOrderCount w profilu klienta i (3) usunąć dokument koszyka klienta. Wszystkie trzy dokumenty współdzielą tę samą wartość customerId. Chcesz, aby wszystkie operacje zakończyły się sukcesem lub niepowodzeniem razem, bez użycia procedur składowanych po stronie serwera. Co powinieneś zrobić?
Wybierz odpowiedź
Dotknij opcji, aby sprawdzić swoją odpowiedź.
Poprawna odpowiedź: Użyj TransactionalBatch z Azure Cosmos DB SDK, aby wykonać operacje tworzenia, zastępowania i usuwania z tą samą wartością PartitionKey równą customerId..
Dlaczego to jest odpowiedź
Prawidłowa odpowiedź to użycie TransactionalBatch. Azure Cosmos DB gwarantuje transakcyjność (ACID) dla operacji wykonywanych w ramach jednej partycji logicznej. TransactionalBatch pozwala grupować wiele operacji (tworzenie, aktualizacja, usuwanie) na dokumentach, które współdzielą ten sam klucz partycji (w tym przypadku customerId), zapewniając, że wszystkie operacje zakończą się sukcesem lub wszystkie zostaną wycofane. Pozostałe opcje są nieprawidłowe: Włączenie transakcji ACID między partycjami nie jest możliwe w Azure Cosmos DB w sposób natywny dla operacji wsadowych. Transakcje są ograniczone do pojedynczej partycji logicznej. Change Feed Processor służy do reagowania na zmiany, a nie do zapewniania atomowości operacji. Ostateczna spójność nie spełnia wymogu atomowości. Wykonywanie trzech oddzielnych żądań chronionych przez ETags nie gwarantuje atomowości; jeśli jedno żądanie się nie powiedzie, pozostałe mogą już zostać wykonane, co prowadzi do niespójnego stanu.
Zdaj egzamin — bez niekończącego się szukania odpowiedzi
Uzyskaj wszystkie zweryfikowane pytania i wyjaśnienia do tego egzaminu w jednym miejscu i zaoszczędź godziny przygotowań. Ponad 1000 certyfikacji · Ponad 20 języków · Zacznij za darmo.
Zdaj egzamin szybciej → Karta nie jest wymagana