Transazioni multi-reti DynamoDB

Transazioni multi-reti DynamoDB
Le transazioni a piùesima DynamoDB sono una funzionalità in DynamoDB di AWS che consente ai gestori dei dati di eseguire più operazioni di scrittura su uno o più elementi in una tabella DynamoDB utilizzando una singola transazione. Pertanto, tutte le operazioni di scrittura tentate avranno successo o falliranno come gruppo.

Ciò aiuta a mantenere la coerenza dei tuoi dati, in quanto assicura che i tuoi dati rimangono coerenti anche se una qualsiasi delle operazioni nella transazione fallisce. Inoltre, le transazioni a piùestrizioni in DynamoDB aiutano a evitare problemi come aggiornamenti parziali o corruzione dei dati.

Questo articolo spiega quali sono le transazioni multi-reti DynamoDB e quando usarle. Questo articolo fornisce anche un tutorial passo-passo sull'uso delle transazioni multi-reti DynamoDB e alcuni esempi.

Come utilizzare le transazioni a piùestrizioni in DynamoDB

È possibile utilizzare le transazioni multi-reti DynamoDB ogni volta che è necessario assicurarsi che più operazioni sulla tabella DynamoDB vengano eseguite insieme come unità atomica.

Ad esempio, aiuta ad aggiornare più record in una tabella contemporaneamente o a trasferire i dati tra due tabelle in modo più coerente e affidabile. Ma mentre a questo, assicurati che la tabella sia in modalità transazionale.

Inoltre, le operazioni devono essere eseguite utilizzando il TransactWriteItems O Transactgetitems API. La transazione verrà impegnata se tutte le operazioni hanno esito positivo e rimboccato se una qualsiasi delle operazioni fallisce.

Inoltre, le transazioni multi-reti DynamoDB hanno un limite di 25 operazioni per transazione e un massimo di 4 MB di dati per transazione.

Per abilitare le transazioni a piùestrizioni in DynamoDB, è necessario specificare l'ID transazione e le operazioni che devono essere eseguite. DynamoDB assicurerà quindi che i processi vengano eseguiti nell'ordine corretto.

Per utilizzare le transazioni multi-reti in DynamoDB, seguire questi passaggi:

  1. Abilita la funzionalità di transazione a più opere di DynamoDB impostando il EnableMultistatementTransactionSupport bandiera a VERO nel AWS.DynamoDB.DocumentClient esempio.
  2. Avvia una transazione chiamando il transactWrite O transactget metodo sul AWS.DynamoDB.DocumentClient istanza, trasmettendo le operazioni desiderate come un array. In alternativa, puoi chiamare il "StartTransaction" comando sul tuo client DynamoDB.
  3. Per ogni operazione nell'array, specificare l'azione desiderata (E.G., Mettere, aggiornamento, eliminare, Ottenere, eccetera.) e i parametri corrispondenti (E.G., Nome della tabella, chiave di partizione, chiave di ordinamento, valori degli attributi, ecc.).
  4. Eseguire la transazione chiamando il promettere Metodo sull'oggetto di transazione restituita. Puoi anche scegliere di utilizzare il commettere metodo.
  5. Monitorare i progressi della transazione utilizzando il SU Metodo sull'oggetto transazione, passando nell'evento desiderato (E.G., successo, errore, eccetera.) e una funzione di callback per gestire l'evento.
  6. Una transazione a piùestrizioni modificherà i dati in base alle operazioni specificate se la transazione ha esito positivo. Se la transazione fallisce, non modificherà i dati. Invece, verrà restituito un errore.
  7. Per garantire la coerenza dei dati e prevenire i conflitti, si consiglia di utilizzare espressioni condizionali nell'array delle operazioni per verificare i valori preesistenti e fornire lo stato desiderato prima di modificare i dati.

Esempi di transazioni multi-reti DynamoDB

Esempio 1:

Per creare una transazione multi-reti in DynamoDB, possiamo utilizzare la seguente sintassi:

// Inizia la transazione
var params = transactems: [
// Dichiarazione 1 - Aggiorna elemento

Aggiornamento:
TableName: "MyTable",
Chiave:
"Id": n: "1",,
UpdateSpression: "Set #Name =: Nome",
Espressionittributenames:
"#name": "nome"
,
Espressionittributevalues:
": name": s: "Ken Brian"
,
ReturnValues: "All_New"

,
// Dichiarazione 2 - Elimina l'elemento

Eliminare:
TableName: "MyTable",
Chiave:
"Id": n: "2",
, ReturnValues: "all_old"


"

DynamoDB.TransactWriteItems (params, function (err, data)
la console if (err).registro (err, err.pila);
Else console.registro (dati);
);

La transazione multi-distanza sopra inizia con il parametro "Transactems" e contiene una serie di istruzioni. La prima dichiarazione è un'operazione di aggiornamento. Aggiorna un elemento con un ID specifico nella tabella "MyTable" (dovrai specificare il nome della tabella).

La seconda istruzione prevede un'operazione di eliminazione. Mira a eliminare un elemento con un ID specifico nella stessa tabella. La transazione viene eseguita chiamando il metodo "TransactWriteItems", che prende i parametri della transazione come input e restituisce una risposta con i risultati della transazione.

Esempio 2:

Il nostro secondo esempio è il seguente:

var params =
Transactems: [

Mettere:
TableName: "Utenti",
Articolo:
userid: "xxx123abcd",
primo nome: "Ken",
LastName: "Brian",
Email: '[email protected],
Telefono: 'xxxxxxxx'


,

Mettere:
TableName: "Ordini",
Articolo:
orderid: 'dfa445d,
userid: "xxx123abcd",
OrderDate: '2022-11-08',
elementi: [

ProductID: '989v3',
quantità: 7

"


,

Mettere:
TableName: "Prodotti",
Articolo:
ProductID: '989v3',
Nome: "Nome prodotto",
Prezzo: 210.49



"
;
DynamoDB.TransactWrite (params, function (err, data)
la console if (err).log (err);
Else console.registro (dati);
);

In questo esempio, abbiamo creato più transazioni che mirano a mettere un nuovo utente, ordine e prodotto nelle rispettive tabelle Dynamodb. Se qualsiasi operazione non riesce, l'intera transazione verrà ribaltata e il sistema aggiungerà nessuno dei dati alle tabelle.

Conclusione

Sebbene ciò possa essere sconosciuto a molti, le transazioni a piùesima DynamoDB sono facili da usare e ti aiuteranno in modo efficiente a mantenere la coerenza dei tuoi dati. Si noti che non è possibile utilizzare transazioni multi-distanza su indici globali. Tuttavia, ciò non rimuove nessuno dei vantaggi di questa funzione AWS DynamoDB.