MongoDB e SQL offrono due approcci com­ple­ta­men­te diversi all’ar­chi­via­zio­ne e alla gestione dei dati. Mentre la soluzione NoSQL MongoDB convince so­prat­tut­to per la sua fles­si­bi­li­tà, SQL rap­pre­sen­ta una scelta molto af­fi­da­bi­le e col­lau­da­ta.

SQL: uno standard affermato da decenni

Iniziamo questo confronto tra MongoDB e SQL dando uno sguardo alla storia e allo sviluppo delle due soluzioni. SQL si riferisce al lin­guag­gio di database ne­ces­sa­rio per lavorare con i database re­la­zio­na­li. Da un lato, consente di inserire, mo­di­fi­ca­re e can­cel­la­re i dati. Dall’altro, il lin­guag­gio viene uti­liz­za­to anche per in­ter­ro­ga­re o ri­chie­de­re de­ter­mi­na­ti dati. SQL risale al lin­guag­gio di in­ter­ro­ga­zio­ne SEQUEL, svi­lup­pa­to negli anni ‘70. Oggi, è il lin­guag­gio standard per tutti i sistemi di gestione di database re­la­zio­na­li. I sistemi più noti sono MySQL, Microsoft SQL Server, Oracle, Post­gre­SQL e Sybase.

MongoDB: l’al­ter­na­ti­va a SQL

MongoDB è de­ci­sa­men­te più giovane di SQL. È stato svi­lup­pa­to nel 2009 dall’azienda 10gen (ora MongoDB Inc.) ed è oggi con­si­de­ra­to uno dei database più popolari e più uti­liz­za­ti al mondo. Il nome del sistema NoSQL deriva dal termine inglese “huMongous” (che significa “grande” o “enorme”) e intende de­scri­ve­re che MongoDB è stato pro­get­ta­to ap­po­si­ta­men­te per la gestione di archivi di dati par­ti­co­lar­men­te grandi e di­ver­si­fi­ca­ti. Due ca­rat­te­ri­sti­che del sistema di gestione di database che con­tri­bui­sco­no a questo obiettivo sono la sua enorme fles­si­bi­li­tà e l’elevata sca­la­bi­li­tà. Infatti, può crescere con l’aumentare dei requisiti e, in linea di principio, può essere scalato oriz­zon­tal­men­te all’infinito. Il sistema è anche open source.

Consiglio: MongoDB gestito da IONOS

Con Managed MongoDB from IONOS enables you to con­cen­tra­te on the es­sen­tials. From in­stal­la­tion to operation and main­te­nan­ce work, IONOS makes sure you always get the best per­for­man­ce from your data banks.

Fun­zio­na­men­to

MongoDB e SQL sono entrambi uti­liz­za­ti per ar­chi­via­re dati. Questa però è l’unica cosa che i due sistemi hanno veramente in comune. La dif­fe­ren­za so­stan­zia­le è il tipo di ar­chi­via­zio­ne, cosa che non solo determina tutte le altre dif­fe­ren­ze, ma risulta anche decisiva per stabilire quale delle due soluzioni sia mag­gior­men­te adatta alle tue esigenze.

SQL funziona in modo re­la­zio­na­le, il che significa che tutti i dati sono me­mo­riz­za­ti sotto forma di tabella. Questa tabella è composta da righe e colonne in cui sono ar­chi­via­te tutte le in­for­ma­zio­ni rilevanti. Nei comuni sistemi di gestione dei database SQL vengono uti­liz­za­ti diversi database, che possono fare ri­fe­ri­men­to l’uno all’altro. SQL viene eseguito tramite un server per in­ter­ro­ga­re i dati me­mo­riz­za­ti. Per fare ciò, il processo richiede l’impiego di diversi com­po­nen­ti:

  1. Il parser verifica la con­for­mi­tà dell’istru­zio­ne alle regole e controlla le au­to­riz­za­zio­ni ne­ces­sa­rie.
  2. Il pro­ces­so­re di query pianifica i recuperi, le scritture e gli ag­gior­na­men­ti.
  3. Il motore di ar­chi­via­zio­ne esegue la richiesta, legge i dati e invia il risultato al client.

Rispetto a SQL, MongoDB funziona in modo non re­la­zio­na­le. Ciò significa che i dati non vengono me­mo­riz­za­ti sotto forma di tabelle, ma vengono invece ar­chi­via­ti in documenti. Questi documenti, nel formato binario JSON, BSON, sono rag­grup­pa­ti nelle co­sid­det­te col­le­zio­ni. MongoDB e i sistemi NoSQL analoghi possono me­mo­riz­za­re e gestire in questo modo tipi di dati com­ple­ta­men­te diversi. Questi possono essere strut­tu­ra­ti, se­mi­strut­tu­ra­ti o non strut­tu­ra­ti. Inoltre, MongoDB si basa su coppie chiave-valore. Mentre la chiave è sempre una stringa, il valore può essere anche co­sti­tui­to da file, altri documenti o valori booleani. Il lin­guag­gio di in­ter­ro­ga­zio­ne è MongoDB Query Language (MQL).

Sca­la­bi­li­tà e di­spo­ni­bi­li­tà

È vero che sia MongoDB che SQL sono scalabili. Tuttavia, la sca­la­bi­li­tà risulta molto più facile ed efficace con la soluzione NoSQL. MongoDB utilizza una tecnica chiamata sharding per scalare i database oriz­zon­tal­men­te. In questo processo, i dati vengono me­mo­riz­za­ti su nodi diversi e il carico viene così di­stri­bui­to su più spalle. Questo approccio non solo è re­la­ti­va­men­te van­tag­gio­so, ma aumenta anche la velocità di in­ter­ro­ga­zio­ne e la sicurezza dei dati. Le repliche con­sen­to­no di reagire im­me­dia­ta­men­te a un guasto del server e di se­le­zio­na­re un nuovo nodo come nodo primario at­tra­ver­so un failover au­to­ma­ti­co. Questo approccio è molto pro­met­ten­te, so­prat­tut­to in presenza di grandi quantità di dati di diverso tipo.

I database basati su SQL, invece, possono essere scalati solo ver­ti­cal­men­te. Ciò significa che per volumi di dati maggiori sono necessari uno spazio di ar­chi­via­zio­ne ag­giun­ti­vo, capacità maggiori e una potenza di calcolo superiore. Questo approccio genera spesso costi enormi, motivo per cui nella maggior parte dei casi il metodo SQL è più con­si­glia­bi­le per volumi di dati costanti o che crescono solo mar­gi­nal­men­te. Al di là di ciò, sia MongoDB che SQL hanno un’ottima di­spo­ni­bi­li­tà. Anche SQL si affida a diversi nodi per reagire im­me­dia­ta­men­te ai guasti ed essere comunque in grado di rendere di­spo­ni­bi­li i dati in caso di in­ter­ru­zio­ni.

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

Lin­guag­gio di in­ter­ro­ga­zio­ne

Quale lin­guag­gio sia più facile da usare tra MongoDB e SQL dipende so­prat­tut­to dai gusti personali e dalle co­no­scen­ze pregresse dell’utente. SQL è uno standard decennale, facile da imparare e almeno in parte basato sulla lingua inglese. Una volta pa­dro­neg­gia­ta con successo una soluzione SQL, in futuro potrai uti­liz­za­re senza problemi qualsiasi sistema analogo. Il lin­guag­gio è molto ben do­cu­men­ta­to e molto uti­liz­za­to. Allo stesso tempo, però, non funziona in modo molto dinamico e si basa su schemi fissi, come ad esempio la forma delle tabelle. Sebbene SQL abbia molti dialetti, la base rimane identica.

Il lin­guag­gio di in­ter­ro­ga­zio­ne di MongoDB è molto più dinamico e fles­si­bi­le di SQL, perciò è in grado di sod­di­sfa­re le esigenze che so­li­ta­men­te possono derivare da diversi tipi di dati e di query. È pro­get­ta­to per lavorare con documenti BSON e offre la pos­si­bi­li­tà di mo­di­fi­ca­re i campi can­cel­lan­do­li o ag­giun­gen­do­li. Tuttavia, il lin­guag­gio è pro­get­ta­to solo per MongoDB. Gli altri sistemi NoSQL o i database SQL, invece, uti­liz­za­no linguaggi par­zial­men­te o com­ple­ta­men­te diversi da MQL.

MongoDB e SQL: ACID e CAP

Mentre SQL si basa su tabelle re­la­zio­na­li, MongoDB, non re­la­zio­na­le, utilizza documenti in col­le­zio­ni. I due sistemi uti­liz­za­no approcci diversi. SQL si basa sulle classiche proprietà ACID. ACID sta per atomicity, con­si­sten­cy, isolation and du­ra­bi­li­ty (atomicità, con­si­sten­za, iso­la­men­to e du­ra­bi­li­tà). Ciò significa che le tran­sa­zio­ni vengono eseguite com­ple­ta­men­te o non vengono eseguite affatto, rimangono coerenti e sono protette da influenze interne o esterne. L’at­ten­zio­ne è quindi chia­ra­men­te rivolta alla sicurezza dei dati e all’af­fi­da­bi­li­tà del loro tra­sfe­ri­men­to.

Al contrario, MongoDB si basa sul teorema CAP. CAP è l’acronimo di con­si­sten­cy, avai­la­bil­ty and partition (coerenza, di­spo­ni­bi­li­tà e par­ti­zio­ne). Questo teorema afferma che solo due dei tre fattori si possono ve­ri­fi­ca­re in qualsiasi momento. MongoDB ap­par­tie­ne al gruppo dei data store CP che ga­ran­ti­sco­no la con­si­sten­za e la tol­le­ran­za alle par­ti­zio­ni, ma scendono a com­pro­mes­si nell’area della di­spo­ni­bi­li­tà. Il database si basa su un nodo primario at­tra­ver­so il quale vengono eseguite tutte le query. Solo se questo si guasta, entrano in gioco i nodi secondari.

Finalità di utilizzo

I requisiti richiesti a MongoDB o a SQL sono quindi molto diversi. La scelta della soluzione più adatta alle tue esigenze dipende quindi dal tipo di dati che hai bisogno di ar­chi­via­re e gestire. SQL è adatto per i dati strut­tu­ra­ti che possono essere modellati in forma tabellare. Se invece vuoi con­cen­trar­ti sulla coerenza, è ancora con­si­glia­bi­le uti­liz­za­re l’approccio classico. SQL, con­si­de­ra­to uni­ver­sal­men­te una soluzione molto sicura e robusta, è adatto a settori come l’e-commerce e altri sistemi di tran­sa­zio­ne, alla con­ta­bi­li­tà di piccole imprese o a ope­ra­zio­ni che ri­chie­do­no una rigorosa integrità dei dati.

Al contrario, il grande vantaggio di MongoDB è la sua fles­si­bi­li­tà. Da un lato, ciò riguarda i tipi di dati con­si­de­ra­ti, che possono essere molto di­ver­si­fi­ca­ti, oltre che strut­tu­ra­ti, se­mi­strut­tu­ra­ti o non strut­tu­ra­ti. Dall’altro, la fles­si­bi­li­tà si manifesta anche nella sca­la­bi­li­tà: questa avviene oriz­zon­tal­men­te, in modo che il sistema possa crescere insieme alle tue esigenze. Anche la velocità di MongoDB è un argomento con­vin­cen­te a favore dell’approccio NoSQL. Viene uti­liz­za­to anche nell’ambito dell’e-commerce, per i sistemi di gestione dei contenuti, per soluzioni cloud e per ap­pli­ca­zio­ni che ri­chie­do­no funzioni di analisi in tempo reale.

MongoDB e SQL: queste aziende uti­liz­za­no (almeno) uno dei due approcci.

Numerose aziende si affidano a uno dei due approcci per ar­chi­via­re e gestire i propri dati. Alcune delle aziende che hanno scelto MongoDB sono:

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

Queste aziende e piat­ta­for­me si affidano invece a una soluzione SQL:

  • Adobe
  • Apple
  • Dell
  • IMDB
  • LinkedIn
  • Microsoft
  • Reddit
  • Seagate
  • Skype
  • Spotify
  • Twitch

MongoDB e SQL: una soluzione comune è possibile

Da questo elenco si evince che esistono aziende che dovendo scegliere tra MongoDB e SQL, hanno deciso di uti­liz­zar­li entrambi. È anche possibile combinare soluzioni SQL e NoSQL all’interno di un’ar­chi­tet­tu­ra ap­pli­ca­ti­va. In questo modo, si può be­ne­fi­cia­re dei punti di forza di entrambi gli approcci. Ciò potrebbe non essere utile per tutti gli utenti, ma in de­ter­mi­na­te cir­co­stan­ze può cer­ta­men­te portare ai migliori risultati possibili.

Consiglio

Se desideri ap­pro­fon­di­re la tua co­no­scen­za sui sistemi di gestione dei database, nella nostra Digital Guide trovi tutte le in­for­ma­zio­ni di cui hai bisogno. Leggi il confronto tra MariaDB e MySQL, scopri quali sono i migliori daabase open source e impara a muovere i primi passi con MongoDB.

Vai al menu prin­ci­pa­le