Che cos'è Amazon DynamoDB?
Amazon DynamoDB è un database serverless, NoSQL, completamente gestito, in grado di offrire prestazioni di risposta nell’arco di pochi millisecondi, indipendentemente dalle dimensioni.
DynamoDB risponde alle esigenze di superare le complessità di scalabilità e operative dei database relazionali. È progettato e ottimizzato appositamente per carichi di lavoro operativi che richiedono prestazioni costanti su qualsiasi scala. Ad esempio, DynamoDB offre prestazioni costanti con risposte in pochi millisecondi per un caso d’uso di carrello degli acquisti, indipendentemente dal fatto che gli utenti siano 10 oppure 100 milioni. Lanciato nel 2012
I clienti di tutte le dimensioni, settori e aree geografiche utilizzano DynamoDB per creare applicazioni moderne e serverless che possono iniziare in piccolo e scalare a livello globale. DynamoDB è scalabile per supportare tabelle di qualsiasi dimensione, garantendo al contempo prestazioni costanti con risposte in pochi millisecondi e alta disponibilità.
Per eventi come Amazon Prime Day
Argomenti
Caratteristiche di DynamoDB
Serverless
Con DynamoDB non è necessario effettuare il provisioning di alcun server o applicare patch, gestire, installare, mantenere o utilizzare alcun software. DynamoDB offre una manutenzione senza tempi di inattività. Non ha versioni (principale, secondaria o patch) e non ci sono finestre di manutenzione.
La modalità con capacità on demand di DynamoDB offre un pagamento in base al consumo per le richieste di lettura e scrittura, che consente di pagare solo per quello che viene effettivamente utilizzato. Con la modalità on demand, DynamoDB aumenta o riduce verticalmente in modo istantaneo le tabelle per adattarle alla capacità e mantiene le prestazioni senza alcuna amministrazione. Inoltre, può essere ridotto verticalmente fino a zero, in modo da non dover pagare per il throughput quando la tabella non ha traffico e non ci sono avvii a freddo.
NoSQL
In quanto database NoSQL, DynamoDB è progettato appositamente per offrire prestazioni, scalabilità, gestibilità e flessibilità migliorate rispetto ai database relazionali tradizionali. Per supportare un’ampia varietà di casi d’uso, DynamoDB supporta sia modelli chiave-valore che modelli di dati documentali.
A differenza dei database relazionali, DynamoDB non supporta un operatore JOIN. Si consiglia di denormalizzare il modello di dati per ridurre i round trip del database e la potenza di elaborazione necessaria per rispondere alle query. In quanto database NoSQL, DynamoDB offre una elevata consistenza di lettura e transazioni ACID
Servizio completamente gestito
Essendo un servizio di database completamente gestito, DynamoDB si occupa della gestione indifferenziata di un database, in modo da poter concentrarsi sulla creazione di valore per i clienti. Gestisce l’installazione, le configurazioni, la manutenzione, l’alta disponibilità, il provisioning dell’hardware, la sicurezza, i backup, il monitoraggio e altro ancora. In questo modo, quando si crea una tabella DynamoDB, questa è immediatamente pronta per i carichi di lavoro di produzione. DynamoDB migliora costantemente la sua disponibilità, affidabilità, prestazioni, sicurezza e funzionalità senza richiedere aggiornamenti o tempi di inattività.
Prestazioni con risposte in pochi millisecondi su qualsiasi scala
DynamoDB è stato progettato appositamente per migliorare le prestazioni e la scalabilità dei database relazionali per offrire prestazioni con risposte in pochi millisecondi su qualsiasi scala. Per raggiungere questa scalabilità e rendimento, DynamoDB è ottimizzato per carichi di lavoro ad alte prestazioni e fornisce API che incoraggiano l’uso efficiente del database. Omette funzionalità inefficienti e non performanti su larga scala, ad esempio le operazioni JOIN. DynamoDB offre prestazioni costanti con risposte in pochi millisecondi per le proprie applicazioni, indipendentemente dal fatto gli utenti siano 100 oppure 100 milioni.
Casi d’uso di DynamoDB
I clienti di tutte le dimensioni, settori e aree geografiche utilizzano DynamoDB per creare applicazioni moderne e serverless che possono iniziare in piccolo e scalare a livello globale. DynamoDB è ideale per i casi d’uso che richiedono prestazioni costanti su qualsiasi scala con un sovraccarico operativo minimo o nullo. L’elenco seguente presenta alcuni casi d’uso in cui è possibile utilizzare DynamoDB:
-
Applicazioni per servizi finanziari: si consideri il caso di una società di servizi finanziari che sviluppa applicazioni, come il trading e l’instradamento in tempo reale, la gestione dei prestiti, la generazione di token e i log delle transazioni. Con le tabelle globali DynamoDB, le applicazioni possono rispondere agli eventi e servire il traffico dalla Regioni AWS scelta con prestazioni di lettura e scrittura locali veloci.
DynamoDB è adatto per applicazioni con i requisiti di disponibilità più rigorosi. Elimina l’onere operativo derivante dal dimensionamento manuale delle istanze per aumentare l’archiviazione o il throughput, il controllo delle versioni e la gestione delle licenze.
È possibile utilizzare le transazioni DynamoDB per ottenere atomicità, coerenza, isolamento e durabilità (ACID) in una o più tabelle con un’unica richiesta. Le transazioni ACID si adattano a carichi di lavoro che includono l’elaborazione di transazioni finanziarie o l’evasione degli ordini. DynamoDB adatta istantaneamente i carichi di lavoro, man mano che aumentano o diminuiscono, consentendo di scalare in modo efficiente il database in base alle condizioni di mercato, come le ore di attività del trading.
-
Applicazioni di videogiochi: le aziende di videogiochi possono utilizzare DynamoDB per tutte le parti delle piattaforme di gioco, ad esempio lo stato del gioco, i dati dei giocatori, la cronologia delle sessioni e le classifiche. DynamoDB è la scelta ideale per la sua scalabilità, le prestazioni costanti e la facilità delle operazioni garantite dalla sua architettura serverless. DynamoDB è perfetto per le architetture che possono essere aumentate in orizzontale necessarie per supportare videogiochi di successo, poiché dimensiona rapidamente il throughput del gioco sia in entrata che in uscita (dimensionamento fino a zero senza avvio a freddo). Questa scalabilità ottimizza l’efficienza dell’architettura, che si tratti di aumento orizzontale per i picchi di traffico o di dimensionamento quando l’utilizzo del gioco è basso.
-
Applicazioni di streaming: le aziende di media e intrattenimento utilizzano DynamoDB come indice di metadati per contenuti, servizio di gestione dei contenuti o per fornire statistiche sportive quasi in tempo reale. Utilizzano DynamoDB anche per gestire la lista di controllo degli utenti e i servizi di creazione di segnalibri ed elaborare miliardi di eventi giornalieri dei clienti per generare suggerimenti. Questi clienti traggono vantaggio dalla scalabilità, dalle prestazioni e dalla resilienza di DynamoDB. DynamoDB si adatta alle variazioni dei carichi di lavoro man mano che aumentano o diminuiscono, rendendo possibili casi d’uso di streaming multimediale in grado di supportare qualsiasi livello di domanda.
Per ulteriori informazioni su come i clienti di diversi settori utilizzano DynamoDB, consulta Amazon DynamoDB Customers
Funzionalità di DynamoDB
Replica multi-attiva con tabelle globali
Le tabelle globali forniscono la replica multi-attiva dei dati su tutte le Regioni AWS scelte con una disponibilità del 99,999%
Le applicazioni distribuite a livello globale possono accedere ai dati localmente nelle Regioni selezionate per ottenere prestazioni di lettura e scrittura con risposte in pochi millisecondi. Poiché le tabelle globali sono multi-attive, non è necessaria una tabella principale. Ciò significa che non si verificano failover complicati o ritardati o tempi di inattività del database durante il failover di un’applicazione tra Regioni.
Transazioni ACID
DynamoDB è progettato per carichi di lavoro mission critical. Include il supporto per le transazioni ACID per applicazioni che richiedono una logica aziendale complessa. DynamoDB fornisce supporto nativo lato server per le transazioni, semplificando allo sviluppatore l’esperienza di realizzare modifiche coordinate di tipo “all-or-nothing” a più elementi all’interno delle tabelle o tra le tabelle.
Change Data Capture per architetture basate sugli eventi
DynamoDB supporta lo streaming dei record di Change Data Capture (CDC) a livello di elemento quasi in tempo reale. DynamoDB offre due modelli di streaming per il CDC: flussi DynamoDB e flusso di dati Kinesis per DynamoDB. Ogni volta che un’applicazione crea, aggiorna o elimina elementi in una tabella, i flussi registrano una sequenza in ordine cronologico di ogni modifica a livello di elemento quasi in tempo reale. Ciò rende i flussi DynamoDB ideali per le applicazioni con architettura basata sugli eventi che utilizzano le modifiche e agiscono di conseguenza.
Indici secondari
DynamoDB offre la possibilità di creare indici secondari globali e locali, che consentono di eseguire query sui dati della tabella utilizzando una chiave alternativa. Con questi indici secondari è possibile accedere ai dati con attributi diversi dalla chiave primaria, garantendo la massima flessibilità di accesso ai dati.
Integrazioni dei servizi
DynamoDB si integra ampiamente con diversi Servizi AWS per aiutare a ottenere più valore dai propri dati, eliminare complesse operazioni indifferenziate e gestire i carichi di lavoro su larga scala. Alcuni esempi sono: AWS CloudFormation, Amazon CloudWatch, Amazon S3, AWS Identity and Access Management (IAM) e AWS Auto Scaling. Le sezioni seguenti descrivono alcune delle integrazioni di servizi che è possibile eseguire utilizzando DynamoDB:
Integrazioni serverless
Per creare applicazioni serverless end-to-end, DynamoDB si integra nativamente con una serie di Servizi AWS serverless. Ad esempio, è possibile integrare DynamoDB con AWS Lambda per creare trigger, vale a dire pezzi di codice che rispondono automaticamente agli eventi nei flussi DynamoDB. Con i trigger è possibile creare applicazioni basate sugli eventi che rispondono alle modifiche di dati nelle tabelle DynamoDB. Per l’ottimizzazione dei costi, è possibile filtrare gli eventi elaborati da Lambda da un flusso DynamoDB.
L’elenco seguente presenta alcuni esempi di integrazioni serverless con DynamoDB:
-
AWS AppSync per la creazione di API GraphQL
-
Gateway Amazon API per la creazione di REST API
-
Lambda per il calcolo serverless
-
Flusso di dati Amazon Kinesis per Change Data Capture (CDC)
Importazione ed esportazione di dati in Amazon S3
L’integrazione di DynamoDB con Amazon S3 consente di esportare facilmente i dati in un bucket Amazon S3 per l’analisi e il machine learning. DynamoDB supporta le esportazioni di tabelle complete e le esportazioni incrementali per esportare dati modificati, aggiornati o eliminati in un periodo di tempo specificato. È anche possibile importare dati da Amazon S3 in una nuova tabella DynamoDB.
Integrazione Zero-ETL
DynamoDB supporta l’integrazione Zero-ETL con Amazon Redshift e l’utilizzo di una pipeline di inserimento OpenSearch con Amazon DynamoDB. Queste integrazioni consentono di eseguire analisi complesse e utilizzare funzionalità di ricerca avanzate sui dati delle tabelle DynamoDB. Ad esempio, è possibile eseguire ricerche di testo completo e vettoriali e ricerche semantiche sui dati DynamoDB. Le integrazioni Zero-ETL non hanno alcun impatto sui carichi di lavoro di produzione in esecuzione su DynamoDB.
Caching
DynamoDB Accelerator (DAX) è un servizio di caching completamente gestito e a disponibilità elevata creato per DynamoDB. Migliora fino a 10 volte le prestazioni anche in presenza di milioni di richieste al secondo, consentendo di ottenere risposte in pochi microsecondi invece che in millisecondi. DAX fa tutto il lavoro necessario per aggiungere l’accelerazione in memoria alle tabelle DynamoDB, senza dover gestire l’invalidamento della cache, il popolamento dei dati o la gestione dei cluster.
Sicurezza
DynamoDB utilizza IAM per controllare in modo sicuro l’accesso alle risorse DynamoDB. Con IAM è possibile gestire a livello centrale le autorizzazioni che controllano quali utenti DynamoDB possono accedere alle risorse. Utilizza IAM per controllare chi è autenticato (accesso effettuato) e autorizzato (dispone di autorizzazioni) per l'utilizzo di risorse. Poiché DynamoDB utilizza IAM, non sono necessari nomi utente o password per accedere a DynamoDB. Senza le complicate policy di rotazione delle password da gestire il profilo di sicurezza risulta più semplice. Con IAM è anche possibile abilitare un controllo granulare degli accessi per fornire l’autorizzazione a livello di attributo. È anche possibile definire policy basate su risorse con il supporto per il Sistema di analisi degli accessi IAM e Blocco dell’accesso pubblico (BPA) per semplificare la gestione delle policy.
Per impostazione predefinita, DynamoDB crittografa tutti i dati a riposo dei clienti. La crittografia dei dati a riposo migliora la sicurezza dei dati utilizzando le chiavi di crittografia archiviate in AWS Key Management Service (AWS KMS). La crittografia dei dati inattivi consente di creare applicazioni ad alto livello di sicurezza che rispettano rigorosi requisiti normativi e di conformità per la crittografia. Quando si accede a una tabella crittografata, DynamoDB decrittografa i dati della tabella in modo trasparente. Non è necessario modificare codice o applicazioni per utilizzare o gestire le tabelle crittografate. DynamoDB continua a offrire la consueta latenza di pochi millisecondi e tutte le query di DynamoDB funzionano senza problemi sui dati crittografati.
È possibile specificare se, per crittografare i dati degli utenti, DynamoDB deve utilizzare una Chiave di proprietà di AWS (tipo di crittografia predefinito), una Chiave gestita da AWS o una chiave gestita dal cliente. La crittografia predefinita che utilizza chiavi KMS di proprietà di AWS è disponibile senza costi aggiuntivi. Per la crittografia lato client è possibile utilizzare l’SDK AWS di crittografia del database
DynamoDB aderisce inoltre a diversi standard di conformità
Resilienza
Per impostazione predefinita, DynamoDB replica automaticamente i dati su tre zone di disponibilità
DynamoDB include le seguenti funzionalità per supportare la resilienza dei dati e le esigenze di backup:
Tabelle globali
Le tabelle globali DynamoDB consentono uno SLA con disponibilità del 99,999%
Backup continui e recupero point-in-time
I backup continui offrono una granularità al secondo e la possibilità di avviare un recupero point-in-time. Grazie al recupero point-in-time, è possibile ripristinare la tabella in qualsiasi momento nel tempo negli ultimi 35 giorni. È possibile impostare il periodo di recupero su qualsiasi valore compreso tra 1 e 35 giorni.
I backup continui e l’avvio di un ripristino point-in-time non utilizzano la capacità allocata. Inoltre, non hanno alcun impatto sulle prestazioni o sulla disponibilità delle applicazioni.
Backup e ripristino on demand
Backup e ripristino on demand consentono backup completi di una tabella per la conservazione e l’archiviazione a lungo termine per esigenze di conformità normativa. I backup non influiscono sulle prestazioni della tabella ed è possibile eseguire il backup di tabelle di qualsiasi dimensione. Con l’integrazione con AWS Backup, è possibile utilizzare AWS Backup per pianificare, copiare, assegnare tag e programmare il ciclo di vita dei backup on demand di DynamoDB automaticamente. Utilizzando AWS Backup è possibile copiare i backup on demand tra account e Regioni e trasferire i backup meno recenti all’archiviazione a freddo per ottimizzare i costi.
Accesso a DynamoDB
È possibile lavorare con DynamoDB utilizzando la AWS Management Console
Per ulteriori informazioni, consulta Accesso a DynamoDB.
Prezzi di DynamoDB
DynamoDB addebita la lettura, la scrittura e l’archiviazione dei dati nelle tabelle, oltre a qualsiasi funzionalità opzionale che si sceglie di abilitare. DynamoDB ha due modalità di capacità con le rispettive opzioni di fatturazione per le letture e le scritture sulle tabelle: on demand e con provisioning.
DynamoDB è incluso anche nel piano sempre gratuito, che offre 25 GB di archiviazione. Il piano sempre gratuito include anche 25 unità di capacità di scrittura e 25 unità di capacità di lettura (WCU, RCU) allocate, sufficienti per gestire 200 milioni di richieste al mese.
Per ulteriori informazioni, consulta Prezzi di Amazon DynamoDB
Nozioni di base su DynamoDB
In caso di utilizzo di DynamoDB per la prima volta, si consiglia di iniziare con la lettura degli argomenti seguenti:
-
Nozioni di base su DynamoDB: illustra il processo di configurazione di DynamoDB, creazione di tabelle di esempio e caricamento dei dati. Questo argomento fornisce anche informazioni sull’esecuzione di alcune operazioni di base del database utilizzando AWS Management Console, AWS CLI, NoSQL Workbench e le API DynamoDB.
-
DynamoDB core components: descrive i concetti di base di DynamoDB.
-
Best practice per la progettazione e l'architettura con DynamoDB : fornisce consigli sulla progettazione NoSQL, su DynamoDB Well-Architected Lens, sulla progettazione di tabelle e su diverse altre funzionalità di DynamoDB. Queste best practice aiutano a massimizzare le prestazioni e ridurre al minimo i costi di throughput durante l’utilizzo di DynamoDB.
Si consiglia anche la visione dei seguenti tutorial, che illustrano le procedure complete end-to-end per acquisire familiarità con DynamoDB. È possibile completare questi tutorial utilizzando la funzionalità del piano sempre gratuito.
Per informazioni su risorse, strumenti e strategie per la migrazione a DynamoDB, consulta l’argomento relativo. Per leggere i blog e i white paper più recenti, consulta Amazon DynamoDB resources