Con­fron­tan­do MongoDB e DynamoDB salta subito all’occhio il diverso approccio di me­mo­riz­za­zio­ne e gestione dei dati. Inoltre, DynamoDB è com­ple­ta­men­te integrato nel cosmo AWS, mentre MongoDB offre più libertà.

MongoDB e DynamoDB: due validi servizi NoSQL

Mentre in passato era pra­ti­ca­men­te im­pos­si­bi­le fare a meno del classico database SQL, le quantità di dati sempre più grandi hanno imposto la necessità di trovare nuove ap­pli­ca­zio­ni e siti web per gestirle. In molti casi la soluzione è rap­pre­sen­ta­ta dai sistemi NoSQL (Not only SQL) come MongoDB e DynamoDB, che non sono re­la­zio­na­li e quindi sono molto più fles­si­bi­li e so­prat­tut­to meglio scalabili. Anziché sulle tabelle, queste soluzioni puntano pre­va­len­te­men­te su documenti, con cui possono salvare anche dati non strut­tu­ra­ti o se­mi­strut­tu­ra­ti 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 svi­lup­pa­to 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, è di­stri­bui­to con Server Side Public License (SSPL) e offre pacchetti di supporto com­mer­cia­li opzionali. Il database, che deve il nome al termine inglese “huMONGOus” (tra­du­ci­bi­le con “gigante”), è famoso per le sue ca­rat­te­ri­sti­che di fles­si­bi­li­tà e sca­la­bi­li­tà. Per le in­ter­ro­ga­zio­ni MongoDB utilizza MongoDB Query Language (MQL).

Cos’è DynamoDB?

DynamoDB esiste dal 2012. Il database NoSQL ser­ver­less proviene da Amazon ed è messo a di­spo­si­zio­ne da AWS (Amazon Web Services) come servizio com­ple­ta­men­te gestito. L’ap­pli­ca­zio­ne, pro­prie­ta­ria, ori­gi­na­ria­men­te è 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 re­la­zio­na­li. 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 sca­la­bi­li­tà

Mettendo a confronto MongoDB e DynamoDB, na­tu­ral­men­te 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 sca­la­bi­li­tà oriz­zon­ta­le MongoDB si serve di una tec­no­lo­gia chiamata sharding, che par­ti­zio­na au­to­ma­ti­ca­men­te i record di grandi di­men­sio­ni e di­stri­bui­sce il carico tra più server. Siccome il sistema può lavorare senza problemi anche con dati non strut­tu­ra­ti, è perfetto per gestire e mettere a di­spo­si­zio­ne siti web e ap­pli­ca­zio­ni di e-commerce. Tutti i contenuti necessari, inclusi video e immagini, vengono salvati in un documento e ri­chia­ma­ti durante l’ese­cu­zio­ne di­ret­ta­men­te e senza ritardi per­cet­ti­bi­li.

DynamoDB offre opzioni d’impiego simili. Amazon stessa consiglia di usare il proprio database, ad esempio, per ap­pli­ca­zio­ni, carichi di lavoro di file mul­ti­me­dia­li, e-commerce e piat­ta­for­me di gioco. Tutto questo per un buon motivo: non è da meno rispetto a MongoDB e DynamoDB e offre (perlomeno teo­ri­ca­men­te) pos­si­bi­li­tà di sca­la­bi­li­tà infinite.

Una delle più grandi dif­fe­ren­ze tra i due sistemi è tuttavia l’in­te­gra­zio­ne in AWS. DynamoDB non funziona al di fuori di questo eco­si­ste­ma, ri­sul­tan­do quindi adatto soltanto per gli utenti che possono convivere e lavorare con questa li­mi­ta­zio­ne. In cambio, offre una gestione completa e processi di lettura e scrittura estre­ma­men­te rapidi, anche in presenza di volumi di dati in rapida crescita.

Fun­zio­na­men­to

Anche se i due database per­se­guo­no obiettivi simili, con­fron­tan­do MongoDB e DynamoDB più da vicino si rilevano subito i diversi approcci: MongoDB fa com­ple­ta­men­te 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 co­sti­tui­ti da coppie chiave-valore, possono avere schemi diversi e possono essere mo­di­fi­ca­ti ag­giun­gen­do o eli­mi­nan­do 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 re­gi­stra­ti come valori numerici, stringhe o dati binari. Le in­for­ma­zio­ni vengono suddivise in tabelle non re­la­zio­na­li formate da articoli che devono contenere almeno un attributo. Per la lettura e la scrittura sono di­spo­ni­bi­li le ope­ra­zio­ni “Create”, “Read”, “Update” e “Delete”.

Struttura dei dati

Con­fron­tan­do MongoDB e DynamoDB si ri­scon­tra­no dif­fe­ren­ze anche dal punto di vista della struttura e della di­men­sio­ne massima dei dati. Il formato di sal­va­tag­gio di MongoDB si chiama BSON ed è una forma binaria della Ja­va­Script 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 au­to­ma­ti­ca­men­te. Il sistema permette dati con una di­men­sio­ne 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 con­ten­go­no elementi con de­ter­mi­na­te proprietà, il cui numero può variare. Per poter usare una tabella occorre prima crearla e definire una chiave primaria che par­ti­zio­ni i dati. Ciascuna di queste par­ti­zio­ni contiene tre nodi con una copia dei dati. Poiché il database è gestito com­ple­ta­men­te dal sistema, questo processo è del tutto au­to­ma­tiz­za­to. Una dif­fe­ren­za evidente tra MongoDB e DynamoDB si rileva anche nella di­men­sio­ni dei documenti salvati: con il servizio di Amazon il limite è di massimo 400 KB.

Di­spo­ni­bi­li­tà dei dati

Per im­po­sta­zio­ne pre­de­fi­ni­ta DynamoDB suddivide i tre nodi men­zio­na­ti in un nodo primario (nodo leader) e due nodi secondari. Nel nodo primario vengono in­nan­zi­tut­to eseguiti tutti i processi di scrittura e lettura. Solo dopo avviene la replica nei due nodi di livello inferiore. Esiste tuttavia anche la pos­si­bi­li­tà di di­stri­bui­re i processi di lettura fra tutti e tre i nodi per prevenire perdite di pre­sta­zio­ni.

Anche la soluzione un po’ più vecchia di­stri­bui­sce i dati tra più nodi, pre­ve­nen­do i problemi dovuti a errori del server. Ana­lo­ga­men­te al con­cor­ren­te di Amazon, c’è un nodo primario che riceve i processi di scrittura e poi mette a di­spo­si­zio­ne i dati ai nodi di livello inferiore. In caso di errore nel nodo prin­ci­pa­le, uno degli altri nodi prende au­to­ma­ti­ca­men­te il suo posto di­ven­tan­do nodo leader, che grazie alla replica contiene già tutti i dati. Questo processo può tuttavia ri­chie­de­re fino a 60 secondi.

In­fra­strut­tu­ra, com­pa­ti­bi­li­tà e linguaggi di pro­gram­ma­zio­ne

Una delle dif­fe­ren­ze più evidenti tra MongoDB e DynamoDB è rap­pre­sen­ta­ta dalla di­sti­bu­zio­ne e dall’in­fra­strut­tu­ra dei due servizi. MongoDB è una soluzione open source completa e gratuita con proposte di supporto pro­prie­ta­rie. Il sistema di gestione di database è com­pa­ti­bi­le con la maggior parte delle soluzioni cloud, dei sistemi operativi e dei con­te­ni­to­ri. La quantità di controllo e am­mi­ni­stra­zio­ne ne­ces­sa­ria e possibile dipende com­ple­ta­men­te dall’utente. Il database deve essere con­fi­gu­ra­to e mantenuto in autonomia. Se da un lato questo può essere im­pe­gna­ti­vo e ri­chie­de­re molto tempo, dall’altro offre anche tante libertà.

Compute Engine
La soluzione IaaS ideale per i tuoi carichi di lavoro
  • vCPU estre­ma­men­te van­tag­gio­se e potenti core dedicati
  • Massima fles­si­bi­li­tà senza periodo con­trat­tua­le minimo
  • Servizio di as­si­sten­za tecnica 24 ore su 24, 7 giorni su 7

DynamoDB segue un approccio diverso: il database fa parte dell’eco­si­ste­ma AWS e non funziona al di fuori di questo ambiente. Lavora quindi ot­ti­ma­men­te con altri strumenti di Amazon, ma la com­pa­ti­bi­li­tà con altre soluzioni è ridotta. Il database com­ple­ta­men­te gestito è pronto all’uso im­me­dia­ta­men­te ed esegue in au­to­ma­ti­co gli ag­gior­na­men­ti, i ri­di­men­sio­na­men­ti 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 pro­gram­ma­zio­ne sup­por­ta­ti dai due sistemi:

Lin­guag­gio di pro­gram­ma­zio­ne Sup­por­ta­to da MongoDB Sup­por­ta­to da DynamoDB
Ac­tion­script
C
C#
C++
Clojure
Col­d­Fu­sion
D
Dart
Delphi
Erlang
Go
Groovy
Haskell
Java
Ja­va­Script
Kotlin
Lisp
Lua
MatLab
.net
Perl
PHP
Po­wer­Shell
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 Ma­na­ge­ment), il database è molto ben protetto e integrato. Inoltre, non vi è una con­nes­sio­ne 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 è con­si­de­re­vol­men­te maggiore se si desidera garantire la sicurezza del database. Perlomeno nelle versioni standard del sistema, le au­to­riz­za­zio­ni di accesso, i ruoli e i firewall devono essere im­ple­men­ta­ti e mantenuti au­to­no­ma­men­te. Un rimedio è rap­pre­sen­ta­to dalle soluzioni gestite, che mettono a di­spo­si­zio­ne tutte le funzioni di sicurezza ne­ces­sa­rie.

Consiglio

La soluzione più sicura: con Managed MongoDB di IONOS hai a di­spo­si­zio­ne le com­pe­ten­ze dei nostri esperti e delle nostre esperte: un ambiente ottimale per i tuoi dati. Richiedi una con­su­len­za gratuita!

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

Tra le società che fanno af­fi­da­men­to com­ple­ta­men­te o in parte su MongoDB troviamo ad esempio:

  • Adobe
  • Amadeus
  • AppScale
  • Craftbase
  • Disney
  • Etsy
  • Four­squa­re
  • Lyft
  • MTV
  • The New York Times
  • Via Varejo

Gruppi e piat­ta­for­me che am­mi­ni­stra­no 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 po­ten­tis­si­mi sistemi di gestione di database di tipo NoSQL che restano fles­si­bi­li e scalabili anche se adottano approcci diversi. Se sei alla ricerca di un sistema che sia per­fet­ta­men­te integrato nel cosmo AWS, abbia una solida ar­chi­tet­tu­ra di sicurezza e si faccia carico al posto tuo della maggior parte dei compiti di am­mi­ni­stra­zio­ne, DynamoDB è quello che fa per te. Se invece pre­fe­ri­sci avere la libertà di scelta dal punto di vista degli ambienti cloud e della con­fi­gu­ra­zio­ne, in MongoDB troverai un servizio ec­cel­len­te.

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.

Vai al menu prin­ci­pa­le