DynamoDB di Amazon: informazioni utili
DynamoDB è un database NoSQL completamente gestito e senza server, sviluppato da Amazon. Il servizio è apprezzato soprattutto per la scalabilità senza interruzioni, i tempi di risposta nell’ordine dei millisecondi e il minimo sforzo operativo, così come per l’integrazione semplice con AWS. I casi d’uso spaziano dallo sviluppo software alla scalabilità delle piattaforme di gioco fino allo streaming video in tempo reale.
Cos’è DynamoDB?
Amazon DynamoDB è un servizio di database NoSQL senza server per applicazioni moderne di qualsiasi dimensione, disponibile dal 2012 tramite AWS (Amazon Web Services). A differenza di molti prodotti concorrenti, è una soluzione completamente gestita. Per questo motivo, non è necessario preoccuparsi di attività come aggiornamenti o scalabilità. Il sistema di gestione del database offre inoltre un ampio repertorio di funzionalità di sicurezza e standard di conformità.
Inoltre, DynamoDB si integra perfettamente con altri servizi AWS come Lambda o il servizio Amazon OpenSearch.
- Partner IONOS Cloud
- Soluzioni flessibili e su misura
- Data center situati in Europa
La struttura di DynamoDB
La struttura del database presenta una chiara gerarchia con tabelle come entità superiori, tra le quali non esistono relazioni rigide, a differenza dei database relazionali. DynamoDB di Amazon memorizza i dati in partizioni che vengono replicate automaticamente. Ogni partizione è composta da tre nodi, ognuno dei quali mantiene una copia dei dati, permettendo una facile scalabilità e assicurando la ridondanza in caso di guasto di un nodo. Gli sviluppatori e le sviluppatrici archiviano i record sotto forma di attributi e assegnano loro una chiave primaria univoca. Il database supporta sia i modelli di dati Key-Value sia i modelli orientati ai documenti.
Classi di tabelle in AWS DynamoDB
Le classi di tabelle aiutano a ottimizzare la struttura dei costi e delle prestazioni delle tabelle di DynamoDB. Gli utenti possono scegliere tra due classi e cambiare tra queste due volte in 30 giorni senza tempi di inattività, per adattare i costi ai modelli di utilizzo:
- DynamoDB Standard è progettato come classe di tabelle standard per carichi di lavoro ad alte prestazioni e per tabelle con carichi di lavoro imprevedibili. Le tabelle standard si distinguono per costi inferiori per operazioni di lettura e scrittura.
- DynamoDB Standard Infrequent Access è ottimizzato per le tabelle dove lo spazio di archiviazione è il principale fattore di costo. Le tabelle standard IA si distinguono per costi di archiviazione inferiori. Questa classe ben si adatta anche a tabelle con dati a cui si accede raramente.
Quali funzioni offre DynamoDB?
DynamoDB offre una vasta gamma di funzioni potenti che consentono di creare applicazioni scalabili, altamente disponibili e reattive. La sintesi seguente riassume le caratteristiche principali:
- Modelli di dati chiave e documento: il database ha uno schema flessibile che consente l’assegnazione di molti attributi diversi per singoli elementi.
- Transazioni ACID: il database NoSQL offre transazioni con atomicità, consistenza, isolamento e durabilità (abbreviato con l’acronimo ACID) per una vasta gamma di applicazioni. Ciò consente di estendere la scalabilità e le prestazioni di DynamoDB a un più ampio spettro di processi aziendali.
- Tabelle globali con replica attiva-attiva: le tabelle globali di DynamoDB sono multi-attive, permettendo agli utenti di scrivere e leggere da ogni replica. La capacità si adatta automaticamente ai carichi di lavoro regionali.
- DynamoDB Streams: la funzionalità serve a registrare i dati delle modifiche. Quando un elemento viene creato, modificato o eliminato in una tabella, DynamoDB Streams registra l’evento e lo conserva per 24 ore.
- Indici secondari: DynamoDB consente sia indici secondari locali che globali, per effettuare query su chiavi alternative. Possono essere implementati opzionalmente come indici sparsi per indicizzare solo sottoinsiemi specifici dei dati.
- Partizionamento automatico: i dati vengono distribuiti automaticamente su più partizioni e scalati quando necessario.
- Funzioni di sicurezza: il database offre ampie funzionalità per garantire la sicurezza dei tuoi dati. Tra queste vi sono controlli di accesso dettagliati, crittografia a riposo, ripristino puntuale, backup su richiesta e connettività di rete privata.
- Modelli di capacità: gli utenti hanno la possibilità di scegliere tra una modalità di capacità su richiesta e una modalità di capacità predefinita.
- DynamoDB Accelerator (DAX): si tratta di un servizio opzionale per un miglioramento del caching che aumenta le prestazioni fino a dieci volte.
Vantaggi e svantaggi di Amazon DynamoDB
Il servizio NoSQL di Amazon, DynamoDB, convince soprattutto per i seguenti punti di forza:
- Scalabilità automatica: AWS DynamoDB regola dinamicamente la capacità e il partizionamento in base al throughput, consentendo una crescita orizzontale illimitata.
- Architettura serverless: il sistema di gestione del database è completamente gestito. Ciò consente agli utenti di concentrarsi totalmente sullo sviluppo delle applicazioni, invece di doversi occupare dell’infrastruttura di base.
- Alta disponibilità: database multi-regione e replica automatica garantiscono una disponibilità fino al 99,999%.
- Bassa latenza: il database NoSQL fornisce accessi di lettura e scrittura con latenze nell’ordine dei millisecondi. Con DynamoDB Accelerator, i tempi di risposta possono essere ridotti fino a microsecondi.
- Integrazione AWS semplice: l’integrazione senza soluzione di continuità con i servizi AWS come CloudWatch o Kinesis amplia la funzionalità di DynamoDB e consente analisi dei dati aggiuntive.
- vCPU estremamente vantaggiose e potenti core dedicati
- Massima flessibilità senza periodo contrattuale minimo
- Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7
Sebbene i vantaggi siano chiaramente superiori e DynamoDB sia sicuramente tra le migliori alternative a SQL, la piattaforma presenta anche alcuni punti deboli. Da un lato, il database offre solo opzioni di query limitate, meno estese rispetto a molte offerte concorrenti. D’altra parte, l’integrazione stretta con i servizi AWS rende difficile la migrazione ad altre piattaforme. Nei modelli on-demand, inoltre, c’è il rischio che i picchi di carico portino a costi imprevedibilmente elevati.
Per quali campi di applicazione è adatto DynamoDB?
DynamoDB è stato progettato appositamente per carichi di lavoro in cui enormi quantità di dati devono essere elaborate, scalate e fornite con latenza molto bassa e alta disponibilità. Tra i casi d’uso tipici rientrano:
- Applicazioni web serverless e back end mobile, dove i dati degli account, le sessioni e le configurazioni vengono recuperati con latenza minima
- Piattaforme di gioco, dove centinaia di migliaia o milioni di utenti accedono contemporaneamente ai server di gioco
- Streaming di contenuti per un pubblico globale con traffico dati irregolare o a sbalzi
- Banche e aziende di servizi finanziari, che devono elaborare molte transazioni simultaneamente e in tempo reale, affrontando la sfida di garantire l’attualità e la sicurezza delle transazioni finanziarie
- Applicazioni IoT (IoT = Internet delle cose), che elaborano e memorizzano dati dei sensori su larga scala
Le principali alternative a DynamoDB
Oltre a DynamoDB, esistono altri sistemi di database che, a seconda delle esigenze, del modello di dati, della scalabilità e dell’infrastruttura, possono rappresentare un’alternativa. Tra questi, ci sono soprattutto:
- MongoDB: elevata flessibilità e scalabilità illimitata
- MySQL: sistema relazionale con disponibilità eccellente
- MariaDB: alternativa open source a DynamoDB
- PostgreSQL: soluzione di database relazionale con supporto per tipi di dati non relazionali
- Firebase di Google: un’alternativa eccellente, soprattutto per applicazioni mobili e web
- Apache Cassandra: particolarmente adatto per grandi volumi di dati