DAX: come funziona - Amazon DynamoDB

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à.

DAX: come funziona

Amazon DynamoDB Accelerator (DAX) è progettato per funzionare in un ambiente Amazon Virtual Private Cloud (Amazon VPC). Il servizio Amazon VPC definisce una rete virtuale che ricorda molto un data center tradizionale. Con un VPC, puoi controllarne l'intervallo di indirizzi IP, le sottoreti, le tabelle di routing e i gateway di rete, nonché le impostazioni di sicurezza. È possibile avviare un cluster DAX nella rete virtuale e controllare l'accesso al cluster usando i gruppi di sicurezza di Amazon VPC.

Nota

Se l'account AWS è stato creato dopo il 4 dicembre 2013, si dispone già di un VPC predefinito in ogni regione AWS. Il VPC è pronto per l'uso: può essere utilizzato immediatamente senza dover eseguire ulteriori operazioni di configurazione.

Per ulteriori informazioni, consulta VPC predefinito e sottoreti predefinite nella Guida per l'utente di Amazon VPC.

Il seguente diagramma mostra una panoramica di alto livello di DAX.

Diagramma di flusso di lavoro che illustra l'interazione di applicazione, client DAX e cluster DAX in un VPC.

Per creare un cluster DAX, viene utilizzata la AWS Management Console. Se non diversamente specificato, il cluster DAX viene eseguito all'interno del VPC predefinito. Per eseguire l'applicazione, avviare un'istanza Amazon EC2 nell'Amazon VPC. Quindi distribuire l'applicazione (con il client DAX) nell'istanza EC2.

In fase di runtime, il client DAX indirizza tutte le richieste API DynamoDB dell'applicazione al cluster DAX. Se può, DAX elabora una di queste richieste API direttamente. In caso contrario, passerà la richiesta a DynamoDB.

Infine, il cluster DAX restituisce i risultati all'applicazione.

Come sono elaborate le richieste da DAX

Un cluster DAX è costituito da uno o più nodi. Ogni nodo esegue la propria istanza del software memorizzazione nella cache di DAX. Uno dei nodi funge da nodo principale per il cluster. I nodi aggiuntivi (se presenti) servono da repliche di lettura. Per ulteriori informazioni, consultare Nodi.

La tua applicazione può accedere a DAX specificando l'endpoint per il cluster DAX. Il software client DAX funziona con l'endpoint del cluster per eseguire il routing e il bilanciamento del carico intelligente.

Operazioni di lettura

DAX può rispondere alle seguenti chiamate API:

  • GetItem

  • BatchGetItem

  • Query

  • Scan

Se la richiesta specifica letture a consistenza finale (comportamento predefinito), prova a leggere l'elemento da DAX:

  • Se in DAX è disponibile l'elemento, (hit della cache), DAX restituisce l'elemento all'applicazione senza accedere a DynamoDB.

  • Se in DAX l'elemento non è disponibile (mancato riscontro nella cache), DAX passa la richiesta a DynamoDB. Quando riceve la risposta da DynamoDB, DAX restituisce i risultati all'applicazione e li scrive nella cache del nodo primario.

Nota

Se ci sono delle repliche di lettura nel cluster, DAX mantiene automaticamente le repliche sincronizzate con il nodo primario. Per ulteriori informazioni, consulta Cluster.

Se la richiesta specifica letture fortemente consistenti, DAX passa la richiesta a DynamoDB. I risultati di DynamoDB non vengono memorizzati nella cache in DAX. ma vengono restituiti all'applicazione.

Operazioni di scrittura

Le seguenti operazioni API DAX sono considerate "write-through":

  • BatchWriteItem

  • UpdateItem

  • DeleteItem

  • PutItem

Con queste operazioni, i dati vengono prima scritti nella tabella DynamoDB e quindi nel cluster DAX. L'operazione ha esito positivo solo se i dati vengono scritti sia sulla tabella che in DAX.

Altre operazioni

DAX non riconosce le operazioni DynamoDB per la gestione delle tabelle (ad esempio CreateTable, UpdateTable e così via). Se l'applicazione deve eseguire queste operazioni, deve accedere direttamente a DynamoDB anziché usare DAX.

Per informazioni dettagliate sulla coerenza di DAX e DynamoDB, consulta Modelli di consistenza DAX e DynamoDB.

Per informazioni sul funzionamento delle transazioni in DAX, consulta Utilizzo di API transazionali in DynamoDB Accelerator (DAX).

Limitazione del tasso di richiesta

Se il numero di richieste inviate a DAX supera la capacità di un nodo, DAX limita il tasso con cui accetta le richieste aggiuntive restituendo una ThrottlingException. DAX valuta continuamente l'utilizzo della CPU per determinare il volume di richieste che può elaborare mantenendo allo stesso tempo uno stato del cluster integro.

È possibile monitorare il parametro ThrottledRequestCount che DAX pubblica in Amazon CloudWatch. Se queste eccezioni vengono visualizzate regolarmente, è consigliabile prendere in considerazione la possibilità di aumentare la dimensione del cluster.

Cache degli elementi

DAX gestisce una cache di elementi per archiviare i risultati delle operazioni GetItem e BatchGetItem. Gli elementi nella cache rappresentano i dati a consistenza finale da DynamoDB e sono archiviati in base ai rispettivi valori delle chiavi primarie.

Quando un'applicazione invia una richiesta GetItem o BatchGetItem, DAX prova a leggere gli elementi direttamente dalla cache di elementi utilizzando i valori delle chiavi specificati. Se gli elementi vengono trovati (hit della cache), DAX li restituisce immediatamente all'applicazione. Se gli elementi non vengono trovati (cache miss), DAX invia la richiesta a DynamoDB. DynamoDB elabora le richieste utilizzando letture a consistenza finale e restituisce gli elementi a DAX. DAX li memorizza nella cache degli elementi e quindi li restituisce all'applicazione.

Per impostazione predefinita, la cache degli elementi ha un'impostazione di durata (TTL, Time to Live), che è di 5 minuti. DAX assegna un timestamp a ogni elemento che scrive nella cache degli elementi. Un item scade se è rimasto nella cache più a lungo dell'impostazione TTL. Se si emetti una richiesta GetItem per un elemento scaduto, la richiesta viene considerata un mancato riscontro nella cache e DAX invia la richiesta GetItem a DynamoDB.

Nota

È possibile specificare l'impostazione TTL per la cache di elementi quando si crea un nuovo cluster DAX. Per ulteriori informazioni, consultare Gestione dei cluster DAX .

DAX conserva anche un elenco degli elementi utilizzati meno di recente (LRU, last recently used) per la cache di elementi. L'elenco LRU monitora quando un item è stato scritto per la prima volta nella cache e quando è stato letto l'ultima volta dalla cache. Se la cache di elementi si riempie, DAX elimina gli elementi più vecchi (anche se non sono ancora scaduti) per fare spazio a quelli nuovi. L'algoritmo LRU è sempre abilitato per la cache degli elementi e non è configurabile dall'utente.

Se si specifica zero come impostazione TTL della cache degli elementi, gli elementi nella cache degli elementi verranno aggiornati solo a causa di un'espulsione LRU o di una operazione "write-through".

Per informazioni dettagliate sulla coerenza della cache di elementi in DAX, consulta Comportamento della cache di elementi DAX.

Cache delle query

DAX gestisce anche una cache di query per archiviare i risultati delle operazioni Query e Scan. Gli elementi in questa cache rappresentano set di risultati da query e scansioni delle tabelle DynamoDB. Questi set di risultati sono memorizzati in base ai rispettivi valori dei parametri.

Quando un'applicazione invia una richiesta Query o Scan, DAX prova a leggere un set di risultati corrispondente dalla cache di query utilizzando i valori dei parametri specificati. Se il set di risultati viene trovato (hit della cache), DAX lo restituisce immediatamente all'applicazione. Se il set di risultati non viene trovato (cache miss), DAX invia la richiesta a DynamoDB. DynamoDB elabora le richieste utilizzando letture a consistenza finale e restituisce il set di risultati a DAX. DAX lo memorizza nella cache delle query e lo restituisce all'applicazione.

Nota

È possibile specificare l'impostazione TTL per la cache di query quando si crea un nuovo cluster DAX. Per ulteriori informazioni, consultare Gestione dei cluster DAX .

DAX mantiene un elenco LRU anche per la cache di query. L'elenco monitora quando un set di risultati è stato scritto per la prima volta nella cache e quando il risultato è stato letto l'ultima volta dalla cache. Se la cache di query si riempie, DAX elimina i set di risultati più vecchi (anche se non sono ancora scaduti) per fare spazio a quelli nuovi. L'algoritmo LRU è sempre abilitato per la cache delle query e non è configurabile dall'utente.

Se si specifica zero come impostazione TTL della cache delle query, la risposta alla query non verrà memorizzata nella cache.

Per informazioni dettagliate sulla coerenza della cache di query in DAX, consulta Comportamento della cache di query DAX.