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à.
Funzionamento della limitazione (della larghezza di banda della rete) e della contropressione di scrittura sugli indici secondari globali in DynamoDB
La limitazione (della larghezza di banda della rete) da contropressione sugli indici secondari globali (GSI) rappresenta uno degli scenari di limitazione (della larghezza di banda della rete) più complessi in DynamoDB perché crea una relazione indiretta tra le operazioni di scrittura e la limitazione: l’applicazione scrive su una tabella di base ma subisce una limitazione (della larghezza di banda della rete) a causa dei vincoli di capacità imposti su uno o più indici.
Funzionamento della limitazione (della larghezza di banda della rete) da contropressione sui GSI
Durante la scrittura su una tabella DynamoDB, tutti i GSI nella tabella vengono aggiornati in modo asincrono secondo un modello di consistenza finale. Se un GSI non dispone di una capacità sufficiente per gestire questi aggiornamenti, DynamoDB sottopone a limitazione (della larghezza di banda della rete) le scritture nella tabella di base per mantenere la coerenza dei dati. Questa operazione è denominata contropressione sui GSI. Per ulteriori informazioni sull’utilizzo dei GSI in DynamoDB, consulta la pagina relativa agli indici secondari globali in DynamoDB.
A differenza della limitazione (della larghezza di banda della rete) diretta della tabella, in cui la risorsa a cui si accede è anche la risorsa che causa la limitazione, la contropressione sui GSI crea una dipendenza tra la tabella di base e i suoi indici. Anche se la tabella di base ha un’ampia capacità, le scritture verranno limitate se un GSI associato non è in grado di gestire il volume di aggiornamento. La comprensione di questa relazione è particolarmente importante perché i vincoli a livello di partizione si applicano indipendentemente sia alla tabella di base che a ciascun GSI: ognuno ha la propria struttura di partizione e i corrispondenti limiti di throughput.
Il partizionamento di un GSI si basa sulla relativa chiave di partizione, che spesso è diversa dalla chiave di partizione della tabella di base. Anche se l’accesso alla tabella di base è perfettamente distribuito tra le partizioni, gli aggiornamenti a un GSI potrebbero comunque concentrarsi su partizioni specifiche, creando punti caldi nel GSI. Per le best practice generali sulla progettazione delle chiavi di partizione sia per le tabelle che per i GSI, consulta la risorsa relativa alla progettazione delle chiavi di partizione di DynamoDB.
Ad esempio, se la tabella di base utilizza customerId come chiave di partizione (distribuita equamente) ma il GSI utilizza status come chiave di partizione (con valori possibili limitati come “attivo”, “in sospeso”, “chiuso”), gli aggiornamenti agli elementi con i valori di stato più diffusi possono creare partizioni calde del GSI anche quando l’accesso alla tabella di base è bilanciato. Ciò crea uno scenario particolarmente impegnativo in cui l’applicazione potrebbe subire una limitazione (della larghezza di banda della rete) a causa delle partizioni calde del GSI anche se sia la tabella di base che il GSI hanno una capacità complessiva sufficiente e il modello di accesso della tabella di base appare ben distribuito.
Anche se l’eccezione di limitazione (della larghezza di banda della rete) si riferisce al GSI (tramite ResourceArn), l’operazione effettiva che viene limitata è la scrittura nella tabella di base. Ciò può creare confusione perché l’applicazione sta scrivendo sulla tabella di base ma riceve un’eccezione relativa al GSI.
Tipi di limitazione (della larghezza di banda della rete) sui GSI
La limitazione (della larghezza di banda della rete) da contropressione sui GSI si manifesta attraverso diversi tipi di eccezioni a seconda del vincolo di capacità specifico:
-
Superamento della capacità allocata per il GSI: si verifica quando il GSI non dispone di unità di capacità di scrittura sufficienti per gestire gli aggiornamenti dalle operazioni della tabella di base. Ciò produce un’eccezione
ProvisionedThroughputExceededExceptioncon il motivo IndexWriteProvisionedThroughputExceeded eResourceArnindica direttamente che il GSI specifico presenta vincoli di capacità. -
Superamento del throughput massimo on demand per il GSI: si verifica quando le operazioni di scrittura sul GSI superano i limiti massimi configurati nelle tabelle on demand. Ciò produce un’eccezione
ThrottlingExceptioncon il motivo IndexWriteMaxOnDemandThroughputExceeded, che identifica il GSI specifico con restrizioni di throughput configurate. -
Superamento dei limiti di partizione del GSI: si verifica quando le singole partizioni del GSI superano i limiti di throughput (partizioni calde), anche se la capacità complessiva del GSI sembra sufficiente. Ciò genera un’eccezione
ThrottlingExceptioncon il motivo IndexWriteKeyRangeThroughputExceeded, che indica problemi di partizioni calde sul GSI specifico identificato inResourceArn. Ciò è particolarmente importante perché la distribuzione delle partizioni del GSI può differire in modo significativo dalla distribuzione delle partizioni della tabella di base, creando hot spot nel GSI anche quando l’accesso alla tabella di base è distribuito equamente. -
Superamento dei limiti dell’account per il GSI: si attiva quando le operazioni di scrittura su un GSI specifico superano i limiti di throughput Regionali per tabella (o per ogni singolo GSI all’interno di quella tabella) stabiliti a livello di account. DynamoDB restituisce un’eccezione
ThrottlingExceptioncon il motivo IndexWriteAccountLimitExceeded, che indica il GSI che ne ha spinto l’utilizzo oltre i limiti dell’account. Questa limitazione (della larghezza di banda della rete) avviene indipendentemente per ogni GSI che supera il limite. Per informazioni sulle quote per tabella, per account, Regionali e di servizio, consulta Quote in Amazon DynamoDB.