Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Come funzionano le tabelle globali DynamoDB
Le seguenti sezioni descrivono i concetti e i comportamenti delle tabelle globali in Amazon DynamoDB.
Concetti
Le tabelle globali sono una funzionalità di DynamoDB che replica i dati delle tabelle tra le regioni. AWS
Una tabella di replica (o replica) è una tabella DynamoDB che funziona come parte di una tabella globale. Una tabella globale è composta da due o più tabelle di replica in diverse regioni. AWS Ogni tabella globale può avere una sola replica per regione. AWS Tutte le repliche in una tabella globale condividono lo stesso nome di tabella, lo stesso schema di chiave primaria e gli stessi dati degli elementi.
Quando un'applicazione scrive dati su una replica in una regione, DynamoDB replica automaticamente la scrittura su tutte le altre repliche nella tabella globale. Per ulteriori informazioni su come iniziare a utilizzare le tabelle globali, consulta Tutorial: Creazione di tabelle globali.
Versioni
Sono disponibili due versioni delle tabelle globali DynamoDB: la versione 2019.11.21 (attuale) e la versione 2017.11.29 (precedente). È necessario utilizzare la versione 2019.11.21 (corrente) ogni volta che è possibile. Le informazioni contenute in questa sezione della documentazione si riferiscono alla versione 2019.11.21 (corrente). Per ulteriori informazioni, consulta Determinazione della versione di una tabella globale.
Disponibilità
Le tabelle globali aiutano a migliorare la continuità aziendale semplificando l'implementazione di un'architettura ad alta disponibilità multiregionale. Se un carico di lavoro in una singola AWS regione viene compromesso, è possibile spostare il traffico delle applicazioni in una regione diversa ed eseguire letture e scritture su una tabella di replica diversa nella stessa tabella globale.
Ogni tabella di replica in una tabella globale offre la stessa durata e disponibilità di una tabella DynamoDB a regione singola. Le tabelle globali offrono un Service Level Agreement (SLA)
Modalità di coerenza
Quando si crea una tabella globale, è possibile configurarne la modalità di coerenza. Le tabelle globali supportano due modalità di coerenza: Multi-region Eventual Consistency (MREC) e Multi-region Strong Consistency (MRSC).
Se non si specifica una modalità di coerenza durante la creazione di una tabella globale, la tabella globale utilizza come impostazione predefinita Multi-region Eventual Consistency (MREC). Una tabella globale non può contenere repliche configurate con modalità di coerenza diverse. Non è possibile modificare la modalità di coerenza di una tabella globale dopo la creazione.
Consistenza finale multiregionale (MREC)
La coerenza finale multiregionale (MREC) è la modalità di coerenza predefinita per le tabelle globali. Le modifiche agli elementi in una replica di tabella globale MREC vengono replicate in modo asincrono su tutte le altre repliche, in genere entro un secondo o meno. Nell'improbabile eventualità che una replica in una tabella globale MREC venga isolata o danneggiata, tutti i dati non ancora replicati in altre regioni verranno replicati quando la replica diventa integra.
Se lo stesso elemento viene modificato in più regioni contemporaneamente, DynamoDB risolverà il conflitto utilizzando la modifica con il timestamp interno più recente per elemento, denominato metodo di risoluzione dei conflitti «l'ultimo scrittore vince». Un elemento alla fine convergerà in tutte le repliche alla versione creata dall'ultima scrittura.
Le operazioni di lettura fortemente coerenti restituiscono la versione più recente di un elemento se tale elemento è stato aggiornato l'ultima volta nella regione in cui è avvenuta la lettura, ma possono restituire dati non aggiornati se l'elemento è stato aggiornato l'ultima volta in una regione diversa. Le scritture condizionali valutano l'espressione della condizione rispetto alla versione dell'elemento nella regione.
Si crea una tabella globale MREC aggiungendo una replica a una tabella DynamoDB esistente. L'aggiunta di una replica non ha alcun impatto sulle prestazioni sulle tabelle DynamoDB a regione singola esistenti o sulle repliche di tabelle globali. È possibile aggiungere repliche a una tabella globale MREC per espandere il numero di regioni in cui i dati vengono replicati o rimuovere le repliche da una tabella globale MREC se non sono più necessarie. Una tabella globale MREC può avere una replica in qualsiasi regione in cui è disponibile DynamoDB e può avere tante repliche quante sono le regioni nella partizione.AWS
Forte coerenza multiregionale (MRSC)
È possibile configurare la modalità MRSC (Multi-region Strong Consistency) quando si crea una tabella globale. Le modifiche agli elementi in una replica di tabella globale MRSC vengono replicate in modo sincrono in almeno un'altra regione prima che l'operazione di scrittura restituisca una risposta corretta.
Le operazioni di lettura fortemente coerenti su qualsiasi replica MRSC restituiscono sempre la versione più recente di un elemento. Le scritture condizionali valutano sempre l'espressione della condizione rispetto alla versione più recente di un elemento.
Un'operazione di scrittura ha esito negativo con a ReplicatedWriteConflictException
quando tenta di modificare un elemento che è già stato modificato in un'altra regione. Le scritture che hanno esito negativo con il ReplicatedWriteConflictException
possono essere ritentate e avranno esito positivo se l'elemento non viene più modificato in un'altra regione.
È possibile configurare una tabella globale MRSC con tre repliche o con due repliche e un testimone. Un witness è un componente di una tabella globale MRSC che contiene dati scritti su repliche di tabelle globali e fornisce un'alternativa opzionale a una replica completa, supportando al contempo l'architettura di disponibilità di MRSC. Non è possibile eseguire operazioni di lettura o scrittura su un testimone. Un testimone si trova in una regione diversa rispetto alle due repliche.
Quando si crea una tabella globale MRSC, si scelgono le regioni sia per le repliche che per la distribuzione di riferimento al momento della creazione della tabella MRSC. È possibile determinare se e in quale regione una tabella globale MRSC ha un testimone configurato dall'output dell'API. DescribeTable
Il testimone è di proprietà e gestito da DynamoDB e non verrà visualizzato nel AWS tuo account nella regione in cui è configurato.
Una tabella globale MRSC deve essere distribuita esattamente in tre regioni. Si crea una tabella globale MRSC aggiungendo una replica e un testimone o due repliche a una tabella DynamoDB esistente che non contiene dati. Non è possibile aggiungere repliche aggiuntive a una tabella globale MRSC esistente. Non è possibile eliminare una singola replica o un testimone da una tabella globale MRSC. È possibile eliminare due repliche o eliminare una replica e un testimone da una tabella globale MRSC, convertendo la replica rimanente in una tabella DynamoDB a regione singola.
Le seguenti considerazioni si applicano alle tabelle globali MRSC:
-
Le tabelle globali MRSC sono disponibili nei seguenti set di regioni:
-
Set di regioni degli Stati Uniti: Stati Uniti orientali (Virginia settentrionale), Stati Uniti orientali (Ohio), Stati Uniti occidentali (Oregon)
-
Set di regioni UE: Europa (Irlanda), Europa (Londra), Europa (Parigi), Europa (Francoforte)
-
Set di regioni AP: Asia Pacifico (Tokyo), Asia Pacifico (Seoul) e Asia Pacifico (Osaka).
-
-
Le tabelle globali MRSC non possono estendersi a set di regioni (ad esempio, una tabella globale MRSC non può contenere repliche di set di regioni degli Stati Uniti e dell'UE).
-
Time to Live (TTL) non è supportato per le tabelle globali MRSC.
-
Gli indici secondari locali (LSIs) non sono supportati per le tabelle globali MRSC.
-
CloudWatch Le informazioni di Contributor Insights vengono riportate solo per la regione in cui si è verificata un'operazione.
Scelta di una modalità di coerenza
Il criterio chiave per la scelta di una modalità di coerenza multiregionale è se l'applicazione dia priorità alle scritture a bassa latenza e alle letture fortemente coerenti o dia priorità alla forte coerenza globale.
Le tabelle globali MREC avranno latenze di scrittura inferiori e di lettura fortemente coerenti rispetto alle tabelle globali MRSC. Le tabelle globali MREC possono supportare un Recovery Point Objective (RPO) pari al ritardo di replica tra le repliche, in genere di pochi secondi a seconda delle regioni di replica.
È necessario utilizzare la modalità MREC quando:
-
L'applicazione può tollerare dati obsoleti restituiti da operazioni di lettura fortemente coerenti se tali dati sono stati aggiornati in un'altra regione.
-
Si dà la priorità a latenze di scrittura inferiori e di lettura fortemente coerenti rispetto alla coerenza di lettura in più regioni.
-
La tua strategia di alta disponibilità multiregionale può tollerare un RPO superiore a zero.
Le tabelle globali MRSC avranno latenze di scrittura più elevate e latenze di lettura fortemente coerenti rispetto alle tabelle globali MREC. Le tabelle globali MRSC supportano un Recovery Point Objective (RPO) pari a zero.
È necessario utilizzare la modalità MRSC quando:
-
Sono necessarie letture fortemente coerenti in più regioni.
-
Dai la priorità alla coerenza di lettura globale rispetto a una latenza di scrittura inferiore.
-
La tua strategia di alta disponibilità multiregionale richiede un RPO pari a zero.
Monitoraggio delle tabelle globali
Le tabelle globali configurate per Multi-region Eventual Consistency (MREC) pubblicano la metrica su. ReplicationLatency CloudWatch Questa metrica tiene traccia del tempo trascorso tra il momento in cui un elemento viene scritto in una tabella di replica e il momento in cui tale elemento appare in un'altra replica nella tabella globale. ReplicationLatency
è espressa in millisecondi e viene emessa per ogni coppia di regioni di origine e destinazione in una tabella globale.
ReplicationLatency
I valori tipici dipendono dalla distanza tra le AWS regioni scelte e da altre variabili come il tipo di carico di lavoro e la velocità effettiva. Ad esempio, una replica di origine nella regione Stati Uniti occidentali (California settentrionale) (us-west-1) ha un valore inferiore rispetto ReplicationLatency
alla regione Stati Uniti occidentali (Oregon) (us-west-2) rispetto alla regione Africa (Città del Capo) (af-south-1).
Un valore crescente per ReplicationLatency
potrebbe indicare che gli aggiornamenti di una replica non si propagano ad altre tabelle di replica in modo tempestivo. In questo caso, è possibile reindirizzare temporaneamente l'attività di lettura e scrittura dell'applicazione verso un'altra regione. AWS
Le tabelle globali configurate per Multi-region Strong Consistency (MRSC) non pubblicano una metrica. ReplicationLatency
Test di iniezione dei guasti
Le tabelle globali MREC si integrano con il AWSAWS Fault Injection Service (FIS) per eseguire esperimenti di iniezione dei guasti sui carichi di lavoro delle tabelle globali. Ciò consente di testare la risposta dell'applicazione a un isolamento simulato di una regione sospendendo la replica da e verso una replica selezionata. Per ulteriori informazioni, consulta Sospensione della replica globale delle tabelle.
Time to live (TTL)
Le tabelle globali configurate per MREC supportano la configurazione dell'eliminazione Time To Live (TTL). Le impostazioni TTL vengono sincronizzate automaticamente per tutte le repliche in una tabella globale. Quando TTL elimina un elemento da una replica in una regione, l'eliminazione viene replicata su tutte le altre repliche nella tabella globale. Il TTL non consuma capacità di scrittura, quindi non ti viene addebitato alcun costo per l'eliminazione TTL nella regione in cui è avvenuta l'eliminazione. Tuttavia, ti viene addebitato il costo dell'eliminazione replicata in ogni altra regione con una replica nella tabella globale.
La replica di eliminazione TTL consuma la capacità di scrittura sulle repliche in cui viene replicata l'eliminazione. Le repliche configurate per la capacità assegnata possono limitare le richieste se la combinazione del throughput di scrittura e del throughput di eliminazione TTL è superiore alla capacità di scrittura assegnata.
Le tabelle globali configurate per MRSC (Multi-region Strong Consistency) non supportano la configurazione della cancellazione Time To Live (TTL).
Streams
Le tabelle globali configurate per Multi-region Eventual Consistency (MREC) replicano le modifiche leggendo tali modifiche da un flusso DynamoDB su una tabella di replica e applicandole a tutte le altre tabelle di replica. Gli stream sono quindi abilitati per impostazione predefinita su tutte le repliche in una tabella globale MREC e non possono essere disabilitati su tali repliche. Il processo di replica MREC può combinare più modifiche in un breve periodo di tempo in un'unica scrittura replicata, con il risultato che lo Stream di ogni replica contiene record leggermente diversi. I record Streams sulle repliche MREC vengono sempre ordinati per elemento, ma l'ordinamento tra gli elementi può differire tra le repliche.
Le tabelle globali configurate per Multi-region Strong Consistency (MRSC) non utilizzano DynamoDB Streams per la replica, quindi gli Streams non sono abilitati per impostazione predefinita sulle repliche MRSC. È possibile abilitare Streams su una replica MRSC. I record Streams sulle repliche MRSC sono identici per ogni replica, incluso l'ordinamento dei record Stream.
Se desideri scrivere un'applicazione che elabori i record Streams per le modifiche avvenute in una particolare regione ma non in altre regioni in una tabella globale, puoi aggiungere un attributo a ogni elemento che definisce in quale regione è avvenuta la modifica per quell'elemento. È possibile utilizzare questo attributo per filtrare i record Streams in base alle modifiche apportate in altre regioni, incluso l'uso dei filtri di eventi Lambda per richiamare le funzioni Lambda solo per le modifiche in una regione specifica.
Transazioni
In una tabella globale configurata per MREC, le operazioni di transazione DynamoDB (TransactWriteItems
and TransactGetItems
) sono atomiche solo all'interno della regione in cui è stata richiamata l'operazione. Le scritture transazionali non vengono replicate come unità tra le regioni, il che significa che solo alcune delle scritture di una transazione possono essere restituite dalle operazioni di lettura in altre repliche in un determinato momento.
Ad esempio, se disponi di una tabella globale con repliche nelle regioni Stati Uniti orientali (Ohio) e Stati Uniti occidentali (Oregon) ed esegui un'TransactWriteItems
operazione nella regione Stati Uniti orientali (Ohio), puoi osservare le transazioni parzialmente completate nella regione Stati Uniti occidentali (Oregon) mentre le modifiche vengono replicate. Le modifiche verranno replicate in altre regioni solo dopo averle apportate nella regione di origine.
Le tabelle globali configurate per MRSC (Multi-region Strong Consistency) non supportano le operazioni di transazione e restituiranno un errore se tali operazioni vengono richiamate su una replica MRSC.
Velocità di trasmissione effettiva di lettura e di scrittura
La replica consuma capacità di scrittura. Le repliche configurate per la capacità assegnata possono limitare le richieste se la combinazione di throughput di scrittura e throughput di replica è superiore alla capacità di scrittura assegnata. La capacità di scrittura in modalità on-demand è sincronizzata per tutte le repliche in una tabella globale. Le tabelle globali configurate per la capacità assegnata sincronizzano le impostazioni di auto scaling tra le repliche. L'impostazione effettiva della capacità di scrittura assegnata può variare tra le repliche in base alla velocità di scrittura utilizzata.
È possibile configurare in modo indipendente le impostazioni della capacità di lettura per ogni replica in una tabella globale. Quando si aggiunge una replica a una tabella globale, la capacità di lettura della tabella o della replica di origine viene utilizzata come valore iniziale, a meno che non venga specificato un valore di override.
Sincronizzazione delle impostazioni
Le impostazioni nelle tabelle globali di DynamoDB sono parametri di configurazione che controllano vari aspetti del comportamento e della replica delle tabelle. Queste impostazioni sono gestite tramite il APIs piano di controllo di DynamoDB e possono essere configurate durante la creazione o la modifica di tabelle globali. Le tabelle globali sincronizzano automaticamente determinate impostazioni su tutte le repliche per mantenere la coerenza e consentire al contempo la flessibilità per le ottimizzazioni specifiche della regione. Capire quali impostazioni si sincronizzano e come si comportano aiuta a configurare la tabella globale in modo efficace. Le impostazioni rientrano in tre categorie principali in base al modo in cui sono sincronizzate tra le repliche.
Le seguenti impostazioni sono sempre sincronizzate tra le repliche in una tabella globale:
-
Modalità di capacità (capacità fornita o su richiesta)
-
Capacità di scrittura fornita dalla tabella
-
Scalabilità automatica di scrittura delle tabelle
-
Definizione dell'indice secondario globale (GSI)
-
GSI ha fornito capacità di scrittura
-
Scalabilità automatica di scrittura GSI
-
Tipo di crittografia lato server (SSE)
-
Definizione degli stream in modalità MREC
-
Time to live (TTL)
-
Produttività a caldo
-
Velocità di scrittura massima su richiesta
Le seguenti impostazioni sono sincronizzate tra le repliche, ma possono essere sostituite per ogni singola replica:
-
Capacità di lettura fornita dalla tabella
-
Ridimensionamento automatico della lettura della tabella
-
GSI ha fornito capacità di lettura
-
Scalabilità automatica di lettura GSI
-
Classe di tabella
-
Velocità di lettura massima su richiesta
Nota
I valori delle impostazioni sostituibili vengono modificati se l'impostazione viene modificata su qualsiasi altra replica. Ad esempio, si dispone di una tabella globale MREC con repliche negli Stati Uniti orientali (Virginia settentrionale) e negli Stati Uniti occidentali (Oregon). La replica degli Stati Uniti orientali (Virginia settentrionale) ha assegnato un throughput di lettura impostato su 200. RCUs Per la replica negli Stati Uniti occidentali (Oregon), la velocità effettiva di lettura assegnata è impostata su 100. RCUs Se si aggiorna l'impostazione della velocità effettiva di lettura assegnata sulla replica degli Stati Uniti orientali (Virginia settentrionale) da 200 RCUs a 300 RCUs, il nuovo valore della velocità effettiva di lettura assegnata verrà applicato anche alla replica negli Stati Uniti occidentali (Oregon). Ciò modifica l'impostazione della velocità effettiva di lettura assegnata per la replica degli Stati Uniti occidentali (Oregon) dal valore sovrascritto di 100 al nuovo valore di 300. RCUs RCUs
Le seguenti impostazioni non vengono mai sincronizzate tra le repliche:
-
Deletion protection (Protezione da eliminazione)
-
Point-in-time Ripristino
-
Tag
-
Attivazione di Table CloudWatch Contributor Insights
-
Abilitazione di GSI Contributor Insights CloudWatch
-
Definizione di Kinesis Data Streams
-
Policy delle risorse
-
Definizione dei flussi in modalità MRSC
Tutte le altre impostazioni non sono sincronizzate tra le repliche.
DynamoDB Accelerator (DAX)
Le scritture su repliche di tabelle globali ignorano DynamoDB Accelerator (DAX), aggiornando direttamente DynamoDB. Di conseguenza, le cache DAX possono diventare obsolete poiché le scritture non aggiornano la cache DAX. Le cache DAX configurate per le repliche globali delle tabelle verranno aggiornate solo alla scadenza del TTL della cache.
Considerazioni sulla gestione delle tabelle globali
Non è possibile eliminare una tabella utilizzata per aggiungere una nuova replica globale della tabella prima che siano trascorse 24 ore dalla creazione della nuova replica.
Se si disabilita una AWS regione che contiene repliche di tabelle globali, tali repliche vengono convertite in modo permanente in tabelle a regione singola 20 ore dopo la disattivazione della regione.