SQL o NoSQL? I due database hanno anche alcune ca­rat­te­ri­sti­che in comune, ma a seconda dello scopo di utilizzo uno dei due approcci è più adatto dell’altro. Il vincitore del confronto tra MongoDB e Post­gre­SQL è decretato so­prat­tut­to dalla velocità e dalla sicurezza.

MongoDB: sca­la­bi­li­tà oriz­zon­ta­le e massima fles­si­bi­li­tà

Per com­pren­de­re in cosa si dif­fe­ren­zia­no MongoDB e Post­gre­SQL, è utile pre­sen­ta­re bre­ve­men­te i due sistemi di database: MongoDB deve il nome al termine inglese “huMongous” (traducile con “gigante”). Il sistema è stato pub­bli­ca­to nel 2009 da 10gen (oggi MongoDB Inc.) per per­met­te­re agli utenti di gestire quantità di dati enormi in modo ordinato. Il database NoSQL lavora quindi in modo par­ti­co­lar­men­te fles­si­bi­le e può essere scalato fa­cil­men­te. I dati strut­tu­ra­ti, se­mi­strut­tu­ra­ti o non strut­tu­ra­ti vengono salvati sotto forma di documenti in formato BSON, simile a JSON. MongoDB, scritto in C++, è di­stri­bui­to in tutto il mondo con la licenza SSPL 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.

Post­gre­SQL: ap­pa­ren­te­men­te vec­chiot­to, ma con tanti vantaggi moderni

Nel confronto tra MongoDB e Post­gre­SQL, la seconda soluzione persegue un approccio com­ple­ta­men­te diverso: Post­gre­SQL lavora in modo com­ple­ta­men­te re­la­zio­na­le e mul­ti­piat­ta­for­ma, sup­por­tan­do anche i tipi di dati non re­la­zio­na­li. Il sistema, che ha fatto il suo debutto nel 1996, si basa perlomeno in parte su database svi­lup­pa­ti presso l’uni­ver­si­tà di Berkeley già negli anni ‘80. Ancora oggi il sistema gestito dal Post­gre­SQL Global De­ve­lo­p­ment Group è open source e afferma di essere il database open source più avanzato al mondo. Senza dubbio è ap­prez­za­to a livello in­ter­na­zio­na­le per la sua fles­si­bi­li­tà e stabilità. Il sistema di gestione è stato scritto in C ed è spesso chiamato sem­pli­ce­men­te “Postgres”.

MongoDB e Post­gre­SQL: per cosa si usano i database?

A prima vista dal confronto tra MongoDB e Post­gre­SQL sembrano emergere ap­pli­ca­zio­ni simili: entrambi i database sono ben studiati, altamente fun­zio­na­li e fles­si­bi­li, e as­si­cu­ra­no ordine e chiarezza anche in presenza di grandi o crescenti volumi di dati. Ogni impresa deve scegliere la soluzione più adatta alle sue esigenze tra MongoDB e Post­gre­SQL.

La soluzione NoSQL è da preferire so­prat­tut­to se hai bisogno di un sistema che possa crescere insieme alle tue esigenze. Con questo in­ten­dia­mo non solo la pura quantità di dati, ma anche i diversi tipi di dati, perché MongoDB si distingue per la sca­la­bi­li­tà oriz­zon­ta­le. Per questo motivo il sistema si configura come la soluzione ottimale nel campo dell’e-commerce, dove i dati delle tran­sa­zio­ni devono essere trasmessi in modo sicuro e senza ritardi. Questi vantaggi, abbinati alla grande fles­si­bi­li­tà anche dal punto di vista dei tipi di dati, rendono MongoDB un’ottima scelta anche per i sistemi di gestione dei contenuti. In più, se hai bisogno di opzioni di con­fi­gu­ra­zio­ne in­di­vi­dua­li e ampie funzioni di analisi in tempo reale, vale la pena di prendere in con­si­de­ra­zio­ne MongoDB.

Post­gre­SQL è inoltre adatto ad ampie ap­pli­ca­zio­ni web e può offrire servizi preziosi nel campo dell’e-commerce. Il sistema è un’ottima scelta anche per le ap­pli­ca­zio­ni nel cloud e dell’Internet of Things. Inoltre, è molto efficace in col­la­bo­ra­zio­ne con altri database.

Fun­zio­na­men­to

Le modalità con cui gli avversari del nostro confronto MongoDB e Post­gre­SQL rag­giun­go­no i loro scopi sono molto diverse. Essendo una soluzione NoSQL pura, MongoDB rinuncia com­ple­ta­men­te alle tabelle re­la­zio­na­li fisse, lavorando invece in modo orientato ai documenti. Questi documenti binari JSON (chiamati BSON) sono rag­grup­pa­ti in raccolte. Per eseguire questa ope­ra­zio­ne, il sistema si basa su coppie chiave-valore, dove la chiave è co­sti­tui­ta da una stringa, mentre i valori possono essere altri documenti, valori booleani, numeri o altri tipi di file. La struttura di un documento JSON viene mo­di­fi­ca­ta fa­cil­men­te eli­mi­nan­do o ag­giun­gen­do singoli campi. Per iden­ti­fi­ca­re de­ter­mi­na­ti documenti è di­spo­ni­bi­le una ricerca di testo, che considera i dati strut­tu­ra­ti, se­mi­strut­tu­ra­ti e non strut­tu­ra­ti.

Post­gre­SQL, invece, adotta un approccio re­la­zio­na­le. No­no­stan­te esistano svariate al­ter­na­ti­ve NoSQL, usare un sistema a tabelle può offrire anche dei vantaggi. Un’im­por­tan­te ca­rat­te­ri­sti­ca di Post­gre­SQL è che il sistema di gestione lavora in modo molto più fles­si­bi­le delle altre opzioni SQL e consente colonne con sot­to­va­lo­ri. Inoltre, il sistema di gestione di database si basa su chiavi esterne e trigger. Le in­ter­ro­ga­zio­ni vengono eseguite con il classico principio client-server: il com­po­nen­te centrale del server “post­ma­ster” gestisce i file e le con­nes­sio­ni. I diversi client inviano poi le richieste. Post­gre­SQL supporta svariati tipi di dati, che devono essere pre­ven­ti­va­men­te strut­tu­ra­ti.

Pre­sta­zio­ni

Già dal nome MongoDB fa intuire che può gestire fa­cil­men­te quantità di dati anche imponenti, man­te­nen­do poi la promessa. Il database è scalabile oriz­zon­tal­men­te e non dipende dalla potenza di calcolo della singola macchina. Grazie alle pos­si­bi­li­tà di com­bi­na­zio­ne con i più svariati software, a livello teorico non ci sono limiti alle pre­sta­zio­ni e allo spazio di ar­chi­via­zio­ne. Anche quando molti utenti accedono con­tem­po­ra­nea­men­te ai dati, la velocità di query resta alta. Lo sharding di­stri­bui­sce il carico tra diversi computer, con­tri­buen­do non solo a mi­glio­ra­re le pre­sta­zio­ni, ma offrendo anche la migliore pro­te­zio­ne possibile dalle eventuali in­ter­ru­zio­ni del server.

Invece Post­gre­SQL scala i dati in verticale, quindi non può tenere il passo con le pre­sta­zio­ni della soluzione NoSQL. Tuttavia, la potenza del sistema re­la­zio­na­le è evidente. Consente tra l’altro di eseguire con­tem­po­ra­nea­men­te processi di scrittura e di lettura. Spesso con Post­gre­SQL anche l’au­ten­ti­ca­zio­ne dei dati e l’analisi solida e senza latenza sono di livello superiore rispetto a molti con­cor­ren­ti com­mer­cia­li. Il database lavora con in­ter­ro­ga­zio­ni e tipi di dati complessi, segnando quindi punti anche nel campo dei big data. Man mano che crescono i requisiti è possibile ag­giun­ge­re ulteriori risorse come memoria o CPU. Sono inoltre di­spo­ni­bi­li utili funzioni per elaborare grandi volumi di dati come la com­pi­la­zio­ne just-in-time e il par­ti­zio­na­men­to delle tabelle.

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

Com­pa­ti­bi­li­tà

Entrambe le soluzioni sono mul­ti­piat­ta­for­ma, quindi possono essere uti­liz­za­te su Linux, macOS, Solaris e Windows. Post­gre­SQL va ad­di­rit­tu­ra un po’ oltre e funziona anche con FreeBSD, HP-UX, NetBSD e OpenBSD. Il database SQL è per natura conforme ad ACID (Atomicity, Con­si­sten­cy, Isolation, Du­ra­bi­li­ty), mentre MongoDB offre questa pos­si­bi­li­tà fa­col­ta­ti­va­men­te. Sia MongoDB sia Post­gre­SQL sup­por­ta­no molti linguaggi di pro­gram­ma­zio­ne, ma la scelta è con­si­de­re­vol­men­te maggiore per il sistema più giovane.

Lin­guag­gio di pro­gram­ma­zio­ne Sup­por­ta­to da MongoDB Sup­por­ta­to da Post­gre­SQL
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
Tcl

Sicurezza

Uno dei motivi più im­por­tan­ti per cui gli utenti scelgono Post­gre­SQL è la solida ar­chi­tet­tu­ra di sicurezza del database. Comprende tra l’altro Light­weight Directory Access Protocol (LDAP), Pluggable Au­then­ti­ca­tion Module (PAM), oltre ad au­ten­ti­ca­zio­ne basata sull’host, crit­to­gra­fia dei dati e cer­ti­fi­ca­ti SSL. La struttura pre­de­fi­ni­ta del database assicura inoltre che i tuoi dati siano sempre protetti al meglio. Anche MongoDB dispone di numerose funzioni di sicurezza, offrendo anche una crit­to­gra­fia a livello di campo e crit­to­gra­fia lato client. La di­stri­bu­zio­ne su più server aumenta l’af­fi­da­bi­li­tà e assicura che i dati siano nuo­va­men­te di­spo­ni­bi­li senza grandi ritardi.

MongoDB e Post­gre­SQL: quali sono le versioni di­spo­ni­bi­li?

Una delle ca­rat­te­ri­sti­che che MongoDB e Post­gre­SQL hanno in comune è l’approccio open source. I due sistemi sono anche di­spo­ni­bi­li gra­tui­ta­men­te, perlomeno nella versione base. Tuttavia, proprio per questo manca il supporto pro­fes­sio­na­le. A sopperire a questa mancanza ci sono due community molto attive, disposte a fornire con­su­len­za anche a chi è agli inizi. Poiché Post­gre­SQL è presente sul mercato da più tempo, offre do­cu­men­ta­zio­ne e pos­si­bi­li­tà di am­plia­men­to un po’ più ricche. MongoDB propone anche diverse versioni Pro. Le varianti “En­ter­pri­se” e “Atlas” (per l’uso nel cloud) sono a pagamento, ma per contro prevedono anche alcune funzioni sup­ple­men­ta­ri e un supporto completo.

Quali aziende usano i due database?

Anche se dal confronto tra MongoDB e Post­gre­SQL emerge che le due soluzioni adottano approcci diversi, una cosa in comune ce l’hanno: tante grandi aziende si basano com­ple­ta­men­te o in parte sui servizi e sui vantaggi offerti dai due database.

Tra le società più famose che fanno af­fi­da­men­to su MongoDB troviamo:

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

Post­gre­SQL è usato tra l’altro dalle seguenti aziende e piat­ta­for­me:

  • Apple
  • IMDB
  • Instagram
  • Reddit
  • Runkeeper
  • Skype
  • Spotify
  • Twitch
Consiglio

Vuoi saperne di più sui sistemi di database? Nella nostra Digital Guide con­fron­tia­mo MariaDB e MySQL, pre­sen­tia­mo i migliori database open source e offriamo un tutorial su MongoDB det­ta­glia­to.

Vai al menu prin­ci­pa­le