Relazionale (SQL) o NoSQL? - 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à.

Relazionale (SQL) o NoSQL?

Le applicazioni di oggi hanno requisiti più impegnativi che mai. Ad esempio, un gioco online potrebbe iniziare con pochi utenti e una piccola quantità di dati. Tuttavia, se il gioco ha successo, può facilmente superare le risorse del sistema di gestione del database sottostante. Non è raro che le applicazioni Web abbiano centinaia, migliaia o milioni di utenti simultanei, con terabyte di nuovi dati generati al giorno. I database per tali applicazioni devono gestire decine (o centinaia) di migliaia di letture e scritture al secondo.

Amazon DynamoDB è adatto per questi tipi di carichi di lavoro. Gli sviluppatori possono iniziare con una piccola quantità e aumentare gradualmente l'utilizzo man mano che l'applicazione diventa più popolare. DynamoDB si adatta perfettamente per gestire quantità di dati molto grandi e un numero molto elevato di utenti.

Per ulteriori informazioni sulla modellazione di database relazionali tradizionali e su come adattarla per DynamoDB, consulta Best practice per la modellazione dei dati relazionali in DynamoDB.

La seguente tabella mostra alcune differenze dettagliate tra un sistema di gestione di database relazionali (RDBMS) e DynamoDB.

Caratteristica Sistema di gestione di database relazionali (RDBMS) Amazon DynamoDB
Carichi di lavoro ottimali Query ad hoc, data warehousing, OLAP (Online Analytical Processing). Applicazioni Web-scale, inclusi i social network, i giochi, la condivisione di file multimediali e IoT (Internet of Things).
Modello di dati Il modello relazionale richiede uno schema ben definito, in cui i dati vengono normalizzati in tabelle, righe e colonne. Inoltre, tutte le relazioni sono definite tra tabelle, colonne, indici e altri elementi del database. DynamoDB è privo di schema. Ogni tabella deve avere una chiave primaria per identificare in modo univoco ciascun item di dati, ma non esistono vincoli simili su altri attributi non di chiave. può gestire dati strutturati o semi strutturati, inclusi i documenti JSON. DynamoDB può gestire dati strutturati o semistrutturati, inclusi documenti JSON.
Accesso ai dati SQL è lo standard per memorizzare e recuperare i dati. I database relazionali offrono un ampio set di strumenti per semplificare lo sviluppo di applicazioni basate su database, ma tutti questi strumenti utilizzano SQL. È possibile utilizzare il AWS Management Console AWS CLI, the o WorkBench NoSQL per lavorare con DynamoDB ed eseguire attività ad hoc. PartiQL, un linguaggio di query compatibile con SQL, consente di selezionare, inserire, aggiornare ed eliminare i dati in DynamoDB. Le applicazioni possono utilizzare i kit di sviluppo AWS software (SDK) per lavorare con DynamoDB utilizzando interfacce basate su oggetti, incentrate sui documenti o di basso livello.
Prestazioni I database relazionali sono ottimizzati per lo storage, quindi le prestazioni generalmente dipendono dal sottosistema del disco. Gli sviluppatori e gli amministratori di database devono ottimizzare le query, gli indici e le strutture delle tabelle per ottenere prestazioni ottimali. DynamoDB è ottimizzato per il calcolo, quindi le prestazioni sono principalmente una funzione dell'hardware sottostante e della latenza di rete. Come servizio gestito, DynamoDB isola l'utente e le sue applicazioni da questi dettagli di implementazione, in modo da potersi concentrare sulla progettazione e sulla realizzazione di applicazioni solide e con prestazioni elevate.
Dimensionamento È più facile applicare il dimensionamento con hardware più veloce. È anche possibile che le tabelle del database si estendano su più host in un sistema distribuito, ma ciò richiede ulteriori investimenti. I database relazionali hanno dimensioni massime per il numero e la dimensione dei file che impongono limiti superiori alla scalabilità. DynamoDB è progettato per aumentare orizzontalmente usando cluster distribuiti di hardware. Questo progetto consente un maggiore throughput senza una maggiore latenza. I clienti specificano i requisiti di velocità effettiva e DynamoDB assegna risorse sufficienti per soddisfare tali requisiti. Non ci sono limiti superiori per il numero di item per tabella, né per la dimensione totale della tabella.