# 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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/sistema-di-gestione-di-base-di-dati-dbms/) 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.

### 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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/database-relazionale/). 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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/key-value-store/) 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](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/cose-il-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.

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](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/mongodb-presentazione-e-confronto-con-mysql/): elevata flessibilità e scalabilità illimitata
- [MySQL](https://www.ionos.it/digitalguide/server/know-how/cose-mysql/): sistema relazionale con disponibilità eccellente
- [MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/): alternativa open source a DynamoDB
- [PostgreSQL](https://www.ionos.it/digitalguide/server/know-how/postgresql/): soluzione di database relazionale con supporto per tipi di dati non relazionali
- [Firebase](https://www.ionos.it/digitalguide/server/know-how/firebase/) di Google: un’alternativa eccellente, soprattutto per applicazioni mobili e web
- [Apache Cassandra](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/apache-cassandra/): particolarmente adatto per grandi volumi di dati


This is a markdown version of: [https://www.ionos.it/digitalguide/server/know-how/dynamodb/](https://www.ionos.it/digitalguide/server/know-how/dynamodb/) for AI/LLM consumption.