I database sono una componente fondamentale della maggior parte delle applicazioni e dei siti web. Memorizzano dati cruciali come i contenuti e i dettagli degli utenti e possono catturare gli eventi che si verificano all’interno di un’applicazione. Esistono diverse tecnologie di database e sceglierne una può influenzare tutto, dall’architettura dell’applicazione ai processi di sviluppo.

In questa sede esamineremo da vicino DynamoDB e MongoDB, due proposte popolari che non sono database relazionali tradizionali. Potrete decidere se questo approccio “NoSQL” è adatto alla vostra applicazione e quale di queste due piattaforme di database è la migliore.

Capire la tecnologia: DynamoDB vs MongoDB

Negli ultimi dieci anni, i database NoSQL sono cresciuti in popolarità per rispondere alla richiesta di una tecnologia più flessibile e scalabile. La crescita dei social network e dei contenuti generati dagli utenti ha in parte alimentato questa richiesta.

Per anni, la maggior parte delle applicazioni ha utilizzato database SQL tradizionali, in cui ogni riga di dati descrive un’entità distinta e le sue relazioni con altre entità. Quando risponde a una query, un database relazionale unisce i dati di diverse righe e li restituisce all’applicazione client. Questa architettura è ottimizzata per ridurre lo spazio di archiviazione ed eliminare la duplicazione dei dati ripetuti, in quanto ogni elemento di un set di risultati viene solitamente archiviato una sola volta nel database.

Al contrario, i database NoSQL memorizzano comunemente l’entità di base e i dati correlati in un unico documento. Ciò significa che alcuni dati vengono registrati più volte, aumentando i requisiti di archiviazione. Ma con la diminuzione dei costi di archiviazione, la scalabilità delle soluzioni NoSQL ha avuto la precedenza per molti casi d’uso. La loro architettura di base rende i database NoSQL particolarmente adatti all’esecuzione in cluster con dati distribuiti su più nodi.

Cos’è DynamoDB?

DynamoDB è un database NoSQL senza server sviluppato da Amazon per supportare la sua famosa destinazione di shopping online e poi reso disponibile agli sviluppatori nel 2012 sulla sua piattaforma di cloud hosting, Amazon Web Services (AWS). Come per il negozio di Amazon, DynamoDB risponde alle query senza il sovraccarico di calcolo necessario per effettuare le unioni, a volte complesse, di un database relazionale.

Ottimizzato per scalare, DynamoDB è un archivio di elementi chiave-valore in cui tutti i dati relativi a una chiave specifica vengono memorizzati con essa. Non è necessaria alcuna unione! Avendo eliminato questo requisito, gli ingegneri hanno ottimizzato DynamoDB per restituire i dati rapidamente.

Amazon rende disponibile DynamoDB attraverso AWS come servizio completamente gestito. Per questo motivo è diventato popolare tra gli sviluppatori, che possono utilizzare DynamoDB con un overhead di database minimo. Inoltre, il servizio è facilmente scalabile man mano che le applicazioni accumulano utenti. Inoltre, se un’azienda utilizza altri strumenti AWS, DynamoDB può collegarvisi senza problemi.

DynamoDB vs MongoDB: il logo di DynamoDB.
Il logo di DynamoDB.

Come funziona DynamoDB?

DynamoDB è un archivio di elementi chiave-valore NoSQL e, poiché si tratta di un servizio gestito, l’architettura e l’infrastruttura sottostanti sono astratte dallo sviluppatore.

I dati vengono suddivisi in base alla chiave primaria e ogni partizione contiene tre nodi che conservano una copia dei dati. Questa suddivisione consente una facile scalabilità, poiché i dati sono distribuiti su diversi server. Inoltre, la replica dei dati fornisce ridondanza in caso di guasto di un particolare nodo.

Uno dei tre nodi è designato come nodo leader, dove tutte le scritture vengono emesse inizialmente prima di essere replicate agli altri due nodi. Scrivere prima sul nodo leader permette a DynamoDB di mantenere la coerenza delle scritture. Per una coerenza ottimale in lettura, anche tutte le letture di DynamoDB devono utilizzare il nodo leader.

Questo approccio comporta un costo in termini di prestazioni per le applicazioni ad alta intensità di lettura, quindi DynamoDB offre agli utenti la possibilità di optare per una coerenza “eventuale”. In questo modo le letture possono essere distribuite su tutti i nodi. Tuttavia, questa opzione può sacrificare la precisione se i dati non si sono propagati a tutti i nodi prima di un’operazione di lettura.

Vantaggi e svantaggi di DynamoDB

I principali vantaggi di DynamoDB sono che è senza server, scalabile e veloce. È possibile configurarlo in pochi minuti con un costo minimo per l’infrastruttura. AWS si occupa della sicurezza, degli aggiornamenti, della gestione dei server e di garantire l’alta disponibilità. Inoltre, DynamoDB può scalare all’infinito (limitato solo dalle dimensioni fisiche di AWS) con un modello a pagamento. Infine, DynamoDB offre letture e scritture rapide, con capacità di scalare che assicurano prestazioni sempre più veloci man mano che l’archivio dati cresce.

Uno svantaggio è rappresentato dalle opzioni di interrogazione ridotte al minimo. Le chiavi di ricerca sono utili, ma se avete bisogno di query più complesse, come le aggregazioni, dovrete esportare i dati in un database esterno per analizzarli. Inoltre, DynamoDB è disponibile solo tramite AWS. Se siete già integrati nell’ecosistema AWS, questo non sarà un problema. Se la vostra azienda vuole implementare il sistema on-premises, dovrà rivolgersi altrove.

Cos’è MongoDB?

MongoDB è un archivio di documenti NoSQL rilasciato inizialmente nel 2009 come database open-source con l’opzione di pacchetti di supporto commerciale. Memorizza i documenti JSON come oggetti JSON binari (BSON), che possono memorizzare strutture di dati complesse come proprietà e array annidati.

MongoDB funziona su piattaforme Windows, macOS e Linux e supporta molti linguaggi di programmazione. MongoDB è disponibile anche sulle più diffuse piattaforme cloud di Amazon, Google e Microsoft.

MongoDB è popolare soprattutto per la sua flessibilità. Offre tutti i vantaggi di un database NoSQL pur soddisfacendo requisiti più complessi, come le transazioni ACID per l’integrità dei dati, le query di aggregazione e l’unione di set di dati. Inoltre, grazie al supporto nativo di JavaScript, è un database backend sempre più diffuso per i siti web che utilizzano questo famoso linguaggio di programmazione.

DynamoDB vs MongoDB: Il logo di MongoDB.
Il logo di MongoDB.

Come funziona MongoDB?

MongoDB memorizza oggetti BSON contenenti una o più coppie chiave-valore. I valori possono essere tipi di dati semplici, come stringhe e timestamp, o complessi, come oggetti e array annidati.

MongoDB archivia i documenti in raccolte, simili alle righe di una tabella. È prassi comune che i documenti di una raccolta condividano uno schema simile, ma anche i documenti con le stesse chiavi possono avere schemi diversi: le chiavi con lo stesso nome non devono necessariamente memorizzare lo stesso tipo di dati. MongoDB può imporre la convalida delle proprietà quando i record vengono inseriti o aggiornati e i dati di alcune chiavi devono essere di un tipo specifico.

MongoDB offre anche lo sharding, che è simile al partizionamento di DynamoDB. Lo sharding distribuisce i dati su più server in base a una chiave shard. La distribuzione dei dati consente di distribuire le operazioni di lettura e scrittura su più server, evitando il sovraccarico di un singolo server.

Vantaggi e svantaggi di MongoDB

Oltre ai vantaggi tipici del NoSQL, MongoDB supporta più piattaforme: un aspetto fondamentale per le aziende che desiderano flessibilità nella scelta del provider cloud o la possibilità di ospitare un database on-premise.

MongoDB supporta anche query e aggregazioni complesse grazie alla sua pipeline di aggregazione. Questo lo rende eccezionalmente flessibile rispetto ad altri database NoSQL, in quanto supporta query analitiche, ricerche di documenti e unioni di dati. Tuttavia, le prestazioni possono diminuire su grandi scale. Inoltre, MongoDB Atlas offre un’opzione serverless per le aziende che vogliono eliminare il peso della gestione dell’infrastruttura.

Uno degli svantaggi di MongoDB è che l’ingombro dei dati può essere molto elevato, poiché i documenti devono memorizzare sia i dati che le chiavi. Inoltre, sebbene le sue pipeline di aggregazione siano strumenti potenti, l’uso di una sintassi personalizzata le rende eccezionalmente complesse da scrivere e costruire.

Infine, c’è un sovraccarico infrastrutturale per chi non utilizza MongoDB Atlas, soprattutto per i sistemi di produzione che utilizzano la replica e lo sharding per garantire le prestazioni del sistema. Questo include il monitoraggio, la gestione della distorsione dei dati e l’esecuzione di aggiornamenti, oltre alla gestione della sicurezza.

In conclusione: DynamoDB vs MongoDB

Sebbene DynamoDB e MongoDB siano entrambi database NoSQL, le loro differenze sono sostanziali. Sarà quindi il vostro caso d’uso a determinare quale utilizzare.

Innanzitutto, DynamoDB ha meno opzioni di tipi di dati disponibili a livello di schema. Ad esempio, non supporta le date, per cui gli sviluppatori devono mantenere una logica all’interno delle loro applicazioni per analizzarle e gestirle. MongoDB supporta molti più tipi di dati, comprese le date.

In secondo luogo, DynamoDB consente di effettuare query tramite ricerche di valori-chiave e scansioni di tabelle. Tuttavia, le prestazioni della scansione delle tabelle sono carenti. Per le query più complesse o ad hoc, la scelta migliore è quella di esportare i dati in un altro database. Al contrario, MongoDB supporta le ricerche di chiavi in aggiunta alle query analitiche e all’unione dei dati. Offre un supporto più flessibile per gli indici, poiché è possibile aggiungere indici secondari a qualsiasi campo. Anche se DynamoDB supporta gli indici secondari, questi sono limitati dalla loro complessità concettuale e dal numero che è possibile creare.

Per quanto riguarda la sicurezza, DynamoDB trae vantaggio dalla piattaforma AWS. L’autenticazione con DynamoDB passa attraverso i controlli di accesso degli utenti di AWS. Questo rende la sicurezza di un database DynamoDB abbastanza semplice.

Con MongoDB siete responsabili di tutti i vincoli di sicurezza, compresa la creazione di account utente e la gestione dell’accesso alla rete. Questo significa un sovraccarico molto più elevato. Tuttavia, MongoDB Atlas trasforma MongoDB in una soluzione gestita, eliminando queste sfide.

In quanto soluzione gestita, DynamoDB dispone di funzioni di backup e ripristino integrate, tra cui la possibilità di repliche multiregionali e il semplice ripristino dai backup. Per impostazione predefinita, MongoDB non gestisce questi processi e richiede una configurazione manuale. MongoDB Atlas facilita un po’ il processo, ma richiede una configurazione aggiuntiva.

In sintesi: DynamoDB vs MongoDB

Caratteristiche DynamoDB MongoDB
Tipi di dati La maggior parte dei tipi di dati standard, escluse le date Tutti i tipi di dati previsti dalle specifiche BSON, comprese le date
Interrogazione Ricerca di chiavi con query limitate a più documenti Ricerca di chiavi, query, join e aggregazioni
Sicurezza Incorporata in AWS con poco overhead Autogestito a meno che non si utilizzi MongoDB Atlas
Scalabilità Incorporato in AWS con pochi oneri Autogestita a meno che non si utilizzi MongoDB Atlas
Backup e ripristino Incorporato in AWS con pochi costi aggiuntivi Autogestito a meno che non si utilizzi MongoDB Atlas

Nel complesso, MongoDB è l’opzione più flessibile: può essere distribuito ovunque e offre una serie di strumenti più ricchi per l’archiviazione e l’interrogazione dei dati. Tuttavia, per un database snello con una stretta integrazione con AWS e ridotti costi di infrastruttura e sicurezza, DynamoDB è la scelta più valida.

Riepilogo

MongoDB e DynamoDB sono offerte NoSQL altamente performanti i cui punti di forza li rendono adatti a usi molto diversi. Per una soluzione semplice e snella, DynamoDB è la scelta migliore. Ma MongoDB è la scelta vincente se avete bisogno di schemi più complessi, di query di aggregazione e di un migliore supporto per gli indici.

Ricordate che il prezzo per la flessibilità è un aumento del costo dell’infrastruttura. Tuttavia, se avete bisogno della flessibilità di MongoDB e volete ridurre l’overhead, MongoDB Atlas rappresenta spesso un compromesso conveniente.

Naturalmente, oltre al database, dovrete avere un’applicazione interessante. Potete sviluppare la vostra sulla piattaforma di Hosting di Applicazioni di Kinsta e iniziare gratuitamente con il nostro Piano Hobby, per poi scalare quando il vostro capolavoro comincerà ad attirare sempre più utenti.

Steve Bonisteel Kinsta

Steve Bonisteel è un Technical Editor di Kinsta che ha iniziato la sua carriera di scrittore come giornalista della carta stampata, inseguendo ambulanze e camion dei pompieri. Dalla fine degli anni '90 si occupa di tecnologia legata a Internet.