DynamoDB Transakcje wielopiętrowane

DynamoDB Transakcje wielopiętrowane
DynamoDB Multi-Statement Transactions to funkcja DynamoDB AWS, która umożliwia menedżerom danych wykonywanie wielu operacji zapisu na jednym lub większej liczbie elementów w tabeli DynamoDB przy użyciu pojedynczej transakcji. Zatem wszystkie próbowane operacje zapisu odniosą sukces lub zawiodą jako grupa.

Pomaga to zachować spójność danych, ponieważ zapewnia, że ​​Twoje dane pozostają spójne, nawet jeśli którekolwiek z operacji w transakcji się nie powiedzie. Poza tym transakcje wieloczęściowe w DynamoDB pomagają uniknąć problemów, takich jak częściowe aktualizacje lub uszkodzenie danych.

W tym artykule wyjaśniono, czym są transakcje DynamoDB wielopiętrowej i kiedy z nich korzystać. Ten zapis zawiera również samouczek krok po kroku na temat korzystania z transakcji DynamoDB wielokrotnie i kilku przykładów.

Jak używać transakcji wieloczęściowych w DynamoDB

Możesz użyć transakcji DynamODB wielopiętrowej w dowolnym momencie, aby upewnić się, że wiele operacji w tabeli DynamoDB jest wykonywanych razem jako jednostka atomowa.

Na przykład pomaga aktualizować wiele rekordów w tabeli jednocześnie lub w celu przesyłania danych między dwoma tabelami bardziej konsekwentnie i niezawodnie. Ale podczas tego upewnij się, że stół jest w trybie transakcyjnym.

Ponadto operacje muszą być wykonywane za pomocą TransactWriteItems Lub TransactgetItems Pszczoła. Transakcja zostanie popełniona, jeśli wszystkie operacje odniosą sukces i cofnie się, jeśli jakakolwiek operacja się nie powiedzie.

Dodatkowo transakcje DynamODB wielokrotnie zawierają limit 25 operacji na transakcję i maksymalnie 4 MB danych na transakcję.

Aby włączyć transakcje wieloczęściowe w DynamoDB, musisz określić identyfikator transakcji i operacje, które należy wykonać. DynamODB zapewni następnie, że procesy są wykonywane we właściwej kolejności.

Aby użyć transakcji wieloczęściowych w DynamoDB, wykonaj następujące kroki:

  1. Włącz zdolność transakcji wieloczęściowej DynamoDB, ustawiając EnablemultItatatentTransactionSupport flaga do PRAWDA w AWS.Dynamodb.DocumentClient instancja.
  2. Rozpocznij transakcję, dzwoniąc TransactWrite Lub Transactget Metoda na AWS.Dynamodb.DocumentClient instancja, przekazanie pożądanych operacji jako tablicy. Alternatywnie możesz zadzwonić „StartTransaction” Poleć na swoim kliencie DynamODB.
  3. Dla każdej operacji w tablicy określ żądane działanie (e.G., umieścić, aktualizacja, usuwać, Dostawać, itp.) i odpowiednie parametry (e.G., Nazwa tabeli, klucz partycji, klucz sortowania, wartości atrybutów itp.).
  4. Wykonaj transakcję, dzwoniąc obietnica Metoda na zwróconym obiekcie transakcji. Możesz także użyć popełniać metoda.
  5. Monitoruj postępy transakcji za pomocą NA Metoda w obiekcie transakcyjnym, przekazanie pożądanego zdarzenia (e.G., powodzenie, błąd, itp.) i funkcja wywołania zwrotnego do obsługi zdarzenia.
  6. Transakcja wieloczęściowa modyfikuje twoje dane zgodnie z określonymi operacjami, jeśli transakcja się powiodła. Jeśli transakcja się nie powiedzie, nie zmodyfikuje danych. Zamiast tego zostanie zwrócony błąd.
  7. Aby zapewnić spójność danych i zapobiegać konfliktom, zaleca się stosowanie wyrażeń warunkowych w tablicy operacyjnej w celu sprawdzenia wcześniej istniejących wartości i zapewnienia pożądanego stanu przed zmodyfikowaniem danych.

Przykłady transakcji DynamoDB wieloczęściowych

Przykład 1:

Aby utworzyć transakcję wielopiętrową w DynamoDB, możemy użyć następującej składni:

// Rozpocznij transakcję
var params = TransactItems: [
// instrukcja 1 - element aktualizacji

Aktualizacja:
TableName: „MyTable”,
Klucz:
„Id”: n: „1”,,
Aktualizacja Expression: „Set #name =: Nazwa”,
ExpressionAttributenames:
"#Nazwa nazwa"
,
ExpressionAttributeValues:
": name": s: "Ken Brian"
,
ReturnValues: „all_new”

,
// Instrukcja 2 - Usuń element

Usuwać:
TableName: „MyTable”,
Klucz:
„Id”: n: „2”,
, ReturnValues: „all_old”


]

Dynamodb.TransactWriteItems (params, funkcja (err, data)
if (er) konsola.log (err, err.stos);
inaczej konsola.log (dane);
);

Powyższa transakcja wieloczęściowa rozpoczyna się od parametru „Transactitems” i zawiera szereg stwierdzeń. Pierwsza instrukcja to operacja aktualizacji. Aktualizuje element o określonym identyfikatorze w tabeli „MyTable” (musisz określić nazwę tabeli).

Druga instrukcja zawiera operację Usuń. Ma na celu usunięcie elementu z określonym identyfikatorem w tej samej tabeli. Transakcja jest wykonywana przez wywołanie metody „TransactWriteItems”, która przyjmuje parametry transakcji jako dane wejściowe i zwraca odpowiedź z wynikami transakcji.

Przykład 2:

Nasz drugi przykład jest następujący:

var params =
Transactites: [

Umieścić:
TableName: „Użytkownicy”,
Przedmiot:
userID: „xxx123abcd”,
FirstName: „Ken”,
LastName: „Brian”,
E -mail: „[email protected] ',
Telefon: „xxxxxxxxx”


,

Umieścić:
TableName: „Zamówienia”,
Przedmiot:
OrderId: 'dfa445d,
userID: „xxx123abcd”,
OrderDate: „2022-11-08”,
rzeczy: [

ProductID: „989v3”,
Ilość: 7

]


,

Umieścić:
TableName: „Produkty”,
Przedmiot:
ProductID: „989v3”,
Nazwa: „Nazwa produktu”,
Cena: 210.49



]
;
Dynamodb.TransactWrite (params, funkcja (err, data)
if (er) konsola.log (err);
inaczej konsola.log (dane);
);

W tym przykładzie stworzyliśmy wiele transakcji, które mają na celu umieszczenie nowego użytkownika, zamówienia i produktu w odpowiednich tabelach DynamoDB. Jeśli jakakolwiek operacja się nie powiedzie, cała transakcja zostanie cofnięta, a system nie doda żadnych danych do tabel.

Wniosek

Chociaż może to być nieznane, transakcje DynamODB wieloczęściowe są łatwe w użyciu i skutecznie pomogą utrzymać spójność danych. Zauważ, że nie można używać transakcji wieloczęściowych w indeksach globalnych. Nie usuwa to jednak żadnej korzyści z tej funkcji AWS DynamoDB.