DynamoDB è in memoria?
No. DynamoDB non è un database in memoria: ogni scrittura viene mantenuta su uno storage durevole e replicata automaticamente su tre zone di disponibilità. Quando hai bisogno di velocità in memoria, DynamoDB Accelerator (DAX) aggiunge una cache in memoria completamente gestita che riduce le letture coerenza eventuale da millisecondi a cifra singola a microsecondi.
Design durevole
DynamoDB è un database operativo durevole: le scritture vengono archiviate su supporti durevoli e replicate su tre zone di disponibilità per impostazione predefinita, supportando uno SLA con disponibilità del 99,99%. Questo è il compromesso opposto rispetto a un archivio in-memory puro, in cui i dati risiedono nella RAM e la durabilità è facoltativa.
È ancora veloce senza cache
Baseline DynamoDB offre letture e scritture coerenti di una sola cifra nell'ordine dei millisecondi su qualsiasi scala, poiché ogni lettura prende di mira direttamente una chiave di partizione anziché la scansione. La maggior parte dei carichi di lavoro non necessita mai di cache.
Quello in memoria DynamoDB è l'emulatore
La confusione di solito inizia con DynamoDB Local, che ha una modalità in memoria. Avviatelo e il banner dice così:
docker run -p 8000:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDbInitializing DynamoDB Local with the following configuration:
Port: 8000
InMemory: true
Version: 3.3.0Scrivi un elemento, riavvia il contenitore, quindi cercalo di nuovo:
after write: {"total":{"N":"42"},"pk":{"S":"ORDER#1"}}
tables after restart: []
read after restart: ResourceNotFoundException | Cannot do operations on a non-existent tableLa tabella lo accompagnava, non solo l'oggetto. Quel flag appartiene all'emulatore di test. Il servizio gestito non ha impostazioni equivalenti e nessuna modalità in cui una scrittura confermata risieda solo nella RAM.
DAX: il livello in memoria
Quando i microsecondi contano: offerte in tempo reale, classifiche di gioco, pagine di prodotti interessanti, DAX è la risposta di AWS: una cache in memoria write-through compatibile con DynamoDB che migliora le prestazioni di lettura di coerenza eventuale di un ordine di grandezza con modifiche minime del codice. Saltalo per letture coerenza forte o carichi di lavoro ad alta intensità di scrittura.
Pagare per le letture o aggiungere una cache
DAX salva la latenza di lettura sui tasti di scelta rapida; non riduce la tabella sottostante né modifica la durabilità della scrittura. Ogni PutItem riconosciuto arriva comunque sul disco in tre zone di disponibilità, indipendentemente dal fatto che DAX sia in primo piano o meno. Su una tabella da 10 GB, un coerenza forte Scan fattura circa 2,5 milioni di unità di richiesta di lettura su richiesta negli Stati Uniti-est-1: misura il tuo modello con il calcolatore dei prezzi prima di dimensionare un cluster di cache.
In DynoTable: l'anteprima della query etichetta Scan rispetto a Query e mostra una stima RCU quando i metadati della tabella lo consentono, in modo da poter vedere il costo di una lettura completa prima di eseguirla. Le chiamate Query con chiave di partizione ordinaria non mostrano alcuna linea RCU. Consulta SQL Workbench: visualizza in anteprima il costo della query.
Approfondisci
Comprendi i compromessi sulla coerenza nella guida alla coerenza, consulta è possibile utilizzare DynamoDB come cache? per la domanda inversa, stima i costi di lettura con il calcolatore dei prezzi e scarica DynoTable per esaminare le tue tabelle.
Riferimenti
- Accelerazione in memoria con DynamoDB Accelerator (DAX) — Guida per sviluppatori Amazon DynamoDB
- Cos'è Amazon DynamoDB? — Guida per gli sviluppatori di Amazon DynamoDB
- Coerenza di lettura di DynamoDB: Guida per sviluppatori di Amazon DynamoDB
- Configurazione di DynamoDB locale (versione scaricabile) — Guida per sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale AWS collegata sopra.
Riprodotto il 28-07-2026 rispetto a DynamoDB Local 3.3.0 tramite @aws-sdk/client-dynamodb 3.1095.0 sul nodo v24.18.0. Il banner e le tre righe di output sono letterali.