MongoDB e DynamoDB: un confronto tra i due sistemi NoSQL

Confrontando MongoDB e DynamoDB salta subito all’occhio il diverso approccio di memorizzazione e gestione dei dati. Inoltre, DynamoDB è completamente integrato nel cosmo AWS, mentre MongoDB offre più libertà.

MongoDB e DynamoDB: due validi servizi NoSQL

Mentre in passato era praticamente impossibile fare a meno del classico database SQL, le quantità di dati sempre più grandi hanno imposto la necessità di trovare nuove applicazioni e siti web per gestirle. In molti casi la soluzione è rappresentata dai sistemi NoSQL (Not only SQL) come MongoDB e DynamoDB, che non sono relazionali e quindi sono molto più flessibili e soprattutto meglio scalabili. Anziché sulle tabelle, queste soluzioni puntano prevalentemente su documenti, con cui possono salvare anche dati non strutturati o semistrutturati in modo ordinato e compatto. Inoltre, se i requisiti di un’azienda aumentano, anche il database cresce con essi senza problemi.

Cos’è MongoDB?

MongoDB è stato sviluppato nel 2009 da 10gen (oggi MongoDB, Inc.) e da allora è una delle soluzioni più amate nel campo dei sistemi di gestione dei database SQL. Il software è scritto in C++ e salva i dati sotto forma di documenti JSON binari (BSON). MongoDB è open source, è distribuito con Server Side Public License (SSPL) e offre pacchetti di supporto commerciali opzionali. Il database, che deve il nome al termine inglese “huMONGOus” (traducibile con “gigante”), è famoso per le sue caratteristiche di flessibilità e scalabilità. Per le interrogazioni MongoDB utilizza MongoDB Query Language (MQL).

Cos’è DynamoDB?

DynamoDB esiste dal 2012. Il database NoSQL serverless proviene da Amazon ed è messo a disposizione da AWS (Amazon Web Services) come servizio completamente gestito. L’applicazione, proprietaria, originariamente è stata scritta in Java per gestire le crescenti quantità di dati delle attività di e-commerce interne dell’azienda. Il database è orientato ai documenti ed è una delle soluzioni più veloci e meglio scalabili nel segmento NoSQL. Utilizza anche tabelle DynamoDB, ma non sono relazionali. Grazie alla sua struttura, il sistema è adatto non soltanto alle grandi aziende, ma anche a quelle più piccole, le cui quantità di dati e i carichi di lavoro aumentano col passare del tempo.

MongoDB e DynamoDB: scopo d’impiego e scalabilità

Mettendo a confronto MongoDB e DynamoDB, naturalmente si rilevano scopi d’impiego simili tra i due database NoSQL, che si occupano entrambi di salvare in modo ordinato grandi quantità di dati e gestirli. Per la scalabilità orizzontale MongoDB si serve di una tecnologia chiamata sharding, che partiziona automaticamente i record di grandi dimensioni e distribuisce il carico tra più server. Siccome il sistema può lavorare senza problemi anche con dati non strutturati, è perfetto per gestire e mettere a disposizione siti web e applicazioni di e-commerce. Tutti i contenuti necessari, inclusi video e immagini, vengono salvati in un documento e richiamati durante l’esecuzione direttamente e senza ritardi percettibili.

DynamoDB offre opzioni d’impiego simili. Amazon stessa consiglia di usare il proprio database, ad esempio, per applicazioni, carichi di lavoro di file multimediali, e-commerce e piattaforme di gioco. Tutto questo per un buon motivo: non è da meno rispetto a MongoDB e DynamoDB e offre (perlomeno teoricamente) possibilità di scalabilità infinite.

Una delle più grandi differenze tra i due sistemi è tuttavia l’integrazione in AWS. DynamoDB non funziona al di fuori di questo ecosistema, risultando quindi adatto soltanto per gli utenti che possono convivere e lavorare con questa limitazione. In cambio, offre una gestione completa e processi di lettura e scrittura estremamente rapidi, anche in presenza di volumi di dati in rapida crescita.

Funzionamento

Anche se i due database perseguono obiettivi simili, confrontando MongoDB e DynamoDB più da vicino si rilevano subito i diversi approcci: MongoDB fa completamente a meno delle tipiche tabelle SQL, salvando invece i dati in documenti che a loro volta sono riuniti in raccolte. Questi documenti in formato BSON sono costituiti da coppie chiave-valore, possono avere schemi diversi e possono essere modificati aggiungendo o eliminando un campo. Mentre le chiavi sono sempre formate da sequenze di caratteri, oltre a queste i valori possono contenere anche altri documenti, array o valori booleani. La ricerca del testo in MongoDB viene eseguita tramite un indice di testo.

DynamoDB funge da archivio di valori chiave NoSQL, che salva i dati su dischi SSD. I dati possono essere registrati come valori numerici, stringhe o dati binari. Le informazioni vengono suddivise in tabelle non relazionali formate da articoli che devono contenere almeno un attributo. Per la lettura e la scrittura sono disponibili le operazioni “Create”, “Read”, “Update” e “Delete”.

Struttura dei dati

Confrontando MongoDB e DynamoDB si riscontrano differenze anche dal punto di vista della struttura e della dimensione massima dei dati. Il formato di salvataggio di MongoDB si chiama BSON ed è una forma binaria della JavaScript Object Notation (JSON), che non necessita di uno schema. Per generare un nuovo documento non occorre prima creare una propria raccolta. Con un semplice comando si crea il documento, che poi viene aggiunto a una raccolta esistente o creata automaticamente. Il sistema permette dati con una dimensione massima di 16 MB.

La struttura di dati di DynamoDB è invece molto più simile alla forma delle tabelle delle classiche soluzioni SQL. Anche qui ci sono tabelle che contengono elementi con determinate proprietà, il cui numero può variare. Per poter usare una tabella occorre prima crearla e definire una chiave primaria che partizioni i dati. Ciascuna di queste partizioni contiene tre nodi con una copia dei dati. Poiché il database è gestito completamente dal sistema, questo processo è del tutto automatizzato. Una differenza evidente tra MongoDB e DynamoDB si rileva anche nella dimensioni dei documenti salvati: con il servizio di Amazon il limite è di massimo 400 KB.

Disponibilità dei dati

Per impostazione predefinita DynamoDB suddivide i tre nodi menzionati in un nodo primario (nodo leader) e due nodi secondari. Nel nodo primario vengono innanzitutto eseguiti tutti i processi di scrittura e lettura. Solo dopo avviene la replica nei due nodi di livello inferiore. Esiste tuttavia anche la possibilità di distribuire i processi di lettura fra tutti e tre i nodi per prevenire perdite di prestazioni.

Anche la soluzione un po’ più vecchia distribuisce i dati tra più nodi, prevenendo i problemi dovuti a errori del server. Analogamente al concorrente di Amazon, c’è un nodo primario che riceve i processi di scrittura e poi mette a disposizione i dati ai nodi di livello inferiore. In caso di errore nel nodo principale, uno degli altri nodi prende automaticamente il suo posto diventando nodo leader, che grazie alla replica contiene già tutti i dati. Questo processo può tuttavia richiedere fino a 60 secondi.

Infrastruttura, compatibilità e linguaggi di programmazione

Una delle differenze più evidenti tra MongoDB e DynamoDB è rappresentata dalla distibuzione e dall’infrastruttura dei due servizi. MongoDB è una soluzione open source completa e gratuita con proposte di supporto proprietarie. Il sistema di gestione di database è compatibile con la maggior parte delle soluzioni cloud, dei sistemi operativi e dei contenitori. La quantità di controllo e amministrazione necessaria e possibile dipende completamente dall’utente. Il database deve essere configurato e mantenuto in autonomia. Se da un lato questo può essere impegnativo e richiedere molto tempo, dall’altro offre anche tante libertà.

IONOS Cloud Compute Engine

Le medie e grandi aziende scelgono il Cloud made in Germany. IaaS e PaaS, servizi per veri campioni.

Sicuro
Affidabile
Flessibile

DynamoDB segue un approccio diverso: il database fa parte dell’ecosistema AWS e non funziona al di fuori di questo ambiente. Lavora quindi ottimamente con altri strumenti di Amazon, ma la compatibilità con altre soluzioni è ridotta. Il database completamente gestito è pronto all’uso immediatamente ed esegue in automatico gli aggiornamenti, i ridimensionamenti e altri compiti. In questo modo però gli utenti hanno un’idea solo limitata di ciò che avviene “dietro le quinte”.

Nella tabella che segue sono indicati i linguaggi di programmazione supportati dai due sistemi:

Linguaggio di programmazione Supportato da MongoDB Supportato da DynamoDB
Actionscript
C
C#
C++
Clojure
ColdFusion
D
Dart
Delphi
Erlang
Go
Groovy
Haskell
Java
JavaScript
Kotlin
Lisp
Lua
MatLab
.net
Perl
PHP
PowerShell
Prolog
Python
R
Ruby
Scala
Smalltalk
Swift

Sicurezza

Tra i compiti che DynamoDB svolge per i suoi utenti figurano anche tutte le attività di sicurezza. Facendo parte del cosmo AWS e del modello IAM (Identity and Access Management), il database è molto ben protetto e integrato. Inoltre, non vi è una connessione diretta a internet, in quanto le richieste passano prima da un gateway API.

Nel confronto tra MongoDB e DynamoDB, emerge che il carico di lavoro con MongoDB è considerevolmente maggiore se si desidera garantire la sicurezza del database. Perlomeno nelle versioni standard del sistema, le autorizzazioni di accesso, i ruoli e i firewall devono essere implementati e mantenuti autonomamente. Un rimedio è rappresentato dalle soluzioni gestite, che mettono a disposizione tutte le funzioni di sicurezza necessarie.

Consiglio

La soluzione più sicura: con Managed MongoDB di IONOS hai a disposizione le competenze dei nostri esperti e delle nostre esperte: un ambiente ottimale per i tuoi dati. Richiedi una consulenza gratuita!

MongoDB e DynamoDB: quali aziende si affidano ai due database?

Tra le società che fanno affidamento completamente o in parte su MongoDB troviamo ad esempio:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Foursquare
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

Gruppi e piattaforme che amministrano i loro dati con DynamoDB sono ad esempio:

  • Airbnb
  • Amazon
  • Comcast
  • Disney
  • Dropbox
  • Netflix
  • Nike
  • Redfin
  • Samsung
  • Tinder
  • Zoom

Qual è il servizio più adatto alle tue esigenze?

MongoDB e DynamoDB sono due potentissimi sistemi di gestione di database di tipo NoSQL che restano flessibili e scalabili anche se adottano approcci diversi. Se sei alla ricerca di un sistema che sia perfettamente integrato nel cosmo AWS, abbia una solida architettura di sicurezza e si faccia carico al posto tuo della maggior parte dei compiti di amministrazione, DynamoDB è quello che fa per te. Se invece preferisci avere la libertà di scelta dal punto di vista degli ambienti cloud e della configurazione, in MongoDB troverai un servizio eccellente.

Consiglio

Nella nostra Digital Guide trovi tanti altri articoli sul mondo dei sistemi di database. Leggi il nostro confronto tra MariaDB e MySQL, scopri tutto ciò che c’è da sapere sui database open source o fatti guidare dal nostro tutorial su MongoDB.

Per offrirti una migliore esperienza di navigazione online questo sito web usa dei cookie, propri e di terze parti. Continuando a navigare sul sito acconsenti all’utilizzo dei cookie. Scopri di più sull’uso dei cookie e sulla possibilità di modificarne le impostazioni o negare il consenso.