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
Nelle sezioni seguenti sono riportate ulteriori informazioni sui 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 singola 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 Ciascuna tabella globale può avere una sola tabella di 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 in una replica in una Regione, DynamoDB replica automaticamente la scrittura in 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: versione 2019.11.21 (Corrente) e versione 2017.11.29 (Legacy). Sarebbe opportuno 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 Determinare la versione di una tabella globale.
Disponibilità
Le tabelle globali aiutano a migliorare la continuità aziendale semplificando l’implementazione di un’architettura ad alta disponibilità multi-Regione. 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 Accordo sul livello di servizio (SLA)
Modalità di coerenza
Quando si crea una tabella globale, è possibile configurarne la modalità di coerenza. Le tabelle globali supportano due modalità di coerenza: coerenza finale multi-Regione (MREC, Multi-Region Eventual Consistency) e elevata consistenza multi-Regione (MRSC, Multi-Region Strong Consistency).
Se non si specifica una modalità di coerenza durante la creazione di una tabella globale, la tabella globale utilizza come impostazione predefinita la coerenza finale multi-Regione (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.
Coerenza finale multi-Regione (MREC)
La coerenza finale multi-Regione (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 basato sulla “priorità dell’ultima istanza di scrittura”. Un elemento alla fine convergerà in tutte le repliche alla versione creata dall’ultima scrittura.
Le operazioni a elevata consistenza di lettura 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 .
Elevata consistenza multi-Regione (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 con esito positivo. Quando si converte una tabella a Regione singola esistente in una tabella globale MRSC, è necessario assicurarsi che la tabella sia vuota fino al completamento della conversione per garantire una corretta impostazione di inizializzazione e replica.
Le operazioni a elevata consistenza di lettura 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 una ReplicatedWriteConflictException quando tenta di modificare un elemento che è già stato modificato in un’altra Regione. Per le scritture con esito negativo con la ReplicatedWriteConflictException è possibile procedere alla ripetizione del tentativo: le richieste 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 testimone è 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 l’implementazione di replica che di testimone 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 implementata 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:
-
Quando si converte una tabella a Regione singola in una tabella globale MRSC, è necessario assicurarsi che la tabella sia vuota. La conversione di una tabella a Regione singola in una tabella globale MRSC con elementi esistenti non è supportata. Assicurati che non venga scritto alcun dato nella tabella durante il processo di conversione.
-
Le tabelle globali MRSC sono disponibili nei seguenti set di Regioni:
-
Set della Regione degli Stati Uniti: Stati Uniti orientali (Virginia settentrionale), Stati Uniti orientali (Ohio), Stati Uniti occidentali (Oregon)
-
Set della Regione Europa: Europa (Irlanda), Europa (Londra), Europa (Parigi), Europa (Francoforte)
-
Set della Regione Asia Pacifico: 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’Europa).
-
Il valore 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 multi-Regione è se l’applicazione dia priorità alle scritture a bassa latenza e alle operazioni a elevata consistenza di lettura o dia priorità alla elevata consistenza globale.
Le tabelle globali MREC avranno latenze per operazioni di scrittura e per operazioni a elevata consistenza di lettura inferiori rispetto alle tabelle globali MRSC. Le tabelle globali MREC possono supportare un 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 la restituzione di dati obsoleti da operazioni a elevata consistenza di lettura se tali dati sono stati aggiornati in un’altra Regione.
-
Si dà la priorità a latenze per operazioni di e operazioni a elevata consistenza di lettura inferiori rispetto alla coerenza di lettura multi-Regione.
-
La strategia di alta disponibilità multi-Regione può tollerare un RPO superiore a zero.
Le tabelle globali MRSC avranno latenze superiori per operazioni di scrittura e operazioni a elevata consistenza di lettura rispetto alle tabelle globali MREC superiori. Le tabelle globali MRSC supportano un RPO pari a zero.
È necessario utilizzare la modalità MRSC quando:
-
Sono necessarie operazioni a elevata consistenza di lettura in più Regioni.
-
Si dà la priorità alla coerenza di lettura globale rispetto a una latenza di scrittura inferiore.
-
La strategia di alta disponibilità multi-Regione richiede un RPO pari a zero.
Monitoraggio delle tabelle globali
Le tabelle globali configurate per la coerenza finale tra più regioni (MREC) pubblicano la metrica su. ReplicationLatency CloudWatch Questa metrica tiene traccia del tempo trascorso tra la scrittura di un elemento in una tabella di replica e la visualizzazione di tale elemento in un’altra replica nella tabella globale. ReplicationLatency è espresso in millisecondi e viene emesso per ogni coppia di Regioni di origine e di destinazione in una tabella globale.
ReplicationLatencyI 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 ReplicationLatency inferiore rispetto 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 da una replica non si propagano ad altre tabelle di replica in modo tempestivo. In questo caso, puoi reindirizzare temporaneamente l'attività di lettura e scrittura dell'applicazione verso un'altra regione. AWS
Le tabelle globali configurate per l’elevata consistenza multi-Regione (MRSC) non pubblicano una metrica ReplicationLatency.
Test di iniezione di guasti
Le tabelle globali MREC si integrano con il AWSAWS Fault Injection Service (FIS) per eseguire esperimenti di failinjection 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 pausing global table replication.
Time to live (TTL)
Le tabelle globali configurate per MREC supportano la configurazione dell’eliminazione Time to Live (TTL). Le impostazioni del TTL vengono sincronizzate automaticamente per tutte le repliche in una tabella globale. Quando il 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 viene addebitato alcun costo per l’eliminazione TTL nella Regione in cui è avvenuta l’eliminazione. Tuttavia, 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à allocata possono limitare le richieste se la combinazione di throughput di scrittura e throughput di eliminazione TTL è superiore alla capacità di scrittura allocata.
Le tabelle globali configurate per MRSC (elevata consistenza multi-Regione) non supportano la configurazione dell’eliminazione TTL.
Streams
Le tabelle globali configurate per coerenza finale multi-Regione (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. I flussi 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 il flusso di ogni replica contiene record leggermente diversi. I record dei flussi sulle repliche MREC vengono sempre ordinati per elemento, ma l’ordinamento tra gli elementi può differire tra le repliche.
Le tabelle globali configurate per elevata consistenza multi-Regione (MRSC) non utilizzano i flussi DynamoDB per la replica, pertanto i flussi non sono abilitati per impostazione predefinita sulle repliche MRSC. È possibile abilitare i flussi su una replica MRSC. I record dei flussi sulle repliche MRSC sono identici per ogni replica, incluso l’ordinamento dei record dei flussi.
Se si desidera scrivere un’applicazione che elabori i record dei flussi per le modifiche avvenute in una particolare Regione ma non in altre Regioni in una tabella globale, è possibile 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 dei flussi in base alle modifiche apportate in altre Regioni, incluso l’uso dei filtri di eventi Lambda per invocare 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 e TransactGetItems) sono atomiche solo all’interno della Regione in cui è stata invocata 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 è presente una tabella globale con repliche nelle Regioni Stati Uniti orientali (Ohio) e Stati Uniti occidentali (Oregon) e si esegue un’operazione TransactWriteItems nella Regione Stati Uniti orientali (Ohio), potrebbe essere possibile osservare transazioni parzialmente completate nella Regione Stati Uniti occidentali (Oregon) man mano che le modifiche vengono replicate. Le modifiche vengono replicate in altre Regioni solo dopo essere state confermate nella Regione di origine.
Le tabelle globali configurate per MRSC (elevata consistenza multi-Regione) non supportano le operazioni di transazione e restituiranno un errore se tali operazioni vengono invocate 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à allocata possono limitare le richieste se la combinazione di throughput di scrittura e throughput di replica è superiore alla capacità di scrittura allocata. La capacità di scrittura in modalità on demand è sincronizzata per tutte le repliche in una tabella globale. Le tabelle globali configurate per la capacità allocata sincronizzano le impostazioni di dimensionamento automatico tra le repliche. L’impostazione effettiva della capacità di scrittura allocata può variare tra le repliche in base al throughput di scrittura utilizzato.
È 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 sostituzione.
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. Comprendere 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à allocata o on demand)
-
Capacità di scrittura allocata alla tabella
-
Dimensionamento automatico della tabella
-
Definizione degli indici secondari globali (GSI)
-
Capacità di scrittura allocata ai GSI
-
Dimensionamento automatico in scrittura dei GSI
-
Tipo di crittografia lato server (SSE)
-
Definizione dei flussi in modalità MREC
-
Time to live (TTL)
-
Throughput a caldo
-
Throughput massimo on demand
Le seguenti impostazioni sono sincronizzate tra le repliche, ma possono essere sostituite per ogni singola replica:
-
Capacità di lettura allocata alla tabella
-
Dimensionamento automatico in lettura della tabella
-
Capacità di lettura allocata ai GSI
-
Dimensionamento automatico in lettura dei GSI
-
Classe di tabella
-
Throughput massimo on demand
Nota
I valori delle impostazioni sostituibili vengono modificati se l’impostazione viene modificata su qualsiasi altra replica. Ad esempio, è disponibile una tabella globale MREC con repliche nelle Regioni Stati Uniti orientali (Virginia settentrionale) e Stati Uniti occidentali (Oregon). La replica degli Stati Uniti orientali (Virginia settentrionale) ha impostato 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:
-
Protezione da eliminazione
-
Point-in-time Recupero
-
Tag
-
Attivazione di Table CloudWatch Contributor Insights
-
Abilitazione di GSI Contributor Insights CloudWatch
-
Definizione del flusso di dati Kinesis
-
Policy delle risorse
-
Definizione dei flussi in modalità MRSC
Tutte le altre impostazioni non vengono 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 di DAX possono diventare obsolete poiché le scritture non le aggiornano. Le cache di 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.