MongoDB e Redis: due po­ten­tis­si­mi database NoSQL, con priorità diverse. Met­tia­mo­li a confronto. Mentre MongoDB è stato pensato so­prat­tut­to per grandi quantità di dati, Redis è ap­prez­za­to per la velocità. I due sistemi possono anche essere combinati fra loro.

MongoDB: scalabile e fles­si­bi­le

MongoDB, il cui nome deriva dall’inglese “huMongous” (tra­du­ci­bi­le con “gigante”), è uno dei sistemi NoSQL più famosi e amati al mondo. Il database è stato svi­lup­pa­to nel 2009 dall’azienda 10gen (oggi MongoDB Inc.) allo scopo di salvare or­di­na­ta­men­te grandi volumi di dati diversi e di gestirli in modo sicuro. Il sistema si con­trad­di­stin­gue in par­ti­co­la­re per l’elevata sca­la­bi­li­tà oriz­zon­ta­le e la con­se­guen­te fles­si­bi­li­tà. MongoDB, scritto in C++, è di­stri­bui­to come sistema di gestione di database open source con Server Side Public License e versioni pro­prie­ta­rie sup­ple­men­ta­ri ed è sot­to­po­sto a sviluppo continuo.

Consiglio

Tira fuori il massimo da MongoDB: con Managed MongoDB di IONOS puoi sfruttare le ampie fun­zio­na­li­tà di sicurezza e contare sulle com­pe­ten­ze plu­rien­na­li dei nostri esperti e delle nostre esperte. Prenota un ap­pun­ta­men­to per una con­su­len­za senza impegno!

Redis: la soluzione NoSQL che punta sulla velocità

MongoDB e Redis pre­sen­ta­no tante dif­fe­ren­ze, ma sono ac­co­mu­na­ti dall’anno di uscita: anche Redis è stato ri­la­scia­to nel 2009. Il database in-memory, il cui nome deriva da “REmote DIc­tio­na­ry Server”, è stato pro­gram­ma­to in ANSI C da Salvatore San­fi­lip­po. Anch’esso open source (con la licenza BSD a 3 clausole), non è re­la­zio­na­le, ri­nun­cian­do quindi in gran parte al classico modello di tabelle. Il sistema è strut­tu­ra­to in modo molto semplice e convince so­prat­tut­to per la facilità d’uso e la velocità. Di per sé è molto leggero, ma può essere esteso in molti modi. Anche per questo motivo Redis è uno degli archivi chiave-valore più usati in tutto il mondo.

Scopi d’impiego

MongoDB è so­prat­tut­to un esperto assoluto nel campo dei big data. Questa soluzione NoSQL offre tutto ciò che serve per gestire grandi quantità di dati e tipi di dati diversi. È pre­di­spo­sta anche per adeguarsi all’aumento dei requisiti, crescendo insieme a essi. Si è affermato so­prat­tut­to per la gestione dei contenuti, per le soluzioni di e-commerce e per le ap­pli­ca­zio­ni che devono restare li­be­ra­men­te con­fi­gu­ra­bi­li e che ne­ces­si­ta­no di un’analisi continua in tempo reale.

Redis, invece, punta so­prat­tut­to sul fattore velocità. Anch’esso salva i dati in coppie chiave-valore e supporta svariati tipi di dati. Una delle sue par­ti­co­la­ri­tà è rap­pre­sen­ta­ta dai tempi di reazione inferiori a un mil­li­se­con­do, che per­met­to­no di elaborare con­tem­po­ra­nea­men­te in­nu­me­re­vo­li richieste in tempo reale. Redis si configura così come la scelta ottimale per il caching o i sal­va­tag­gi delle sessioni, quando occorre mettere a di­spo­si­zio­ne dati di tipi diversi il più ve­lo­ce­men­te possibile. Altri settori in cui si ricorre pre­va­len­te­men­te a questo database sono i servizi di mes­sag­gi­sti­ca istan­ta­nea e le chat room, i giochi (online), le analisi in tempo reale, lo streaming, i servizi fi­nan­zia­ri e l’Internet of Things. Redis può essere scalato sia oriz­zon­tal­men­te sia ver­ti­cal­men­te.

Fun­zio­na­men­to

Dal confronto tra MongoDB e Redis emerge che il modo di procedere e il fun­zio­na­men­to sono diversi. Entrambi i sistemi adottano un approccio non re­la­zio­na­le, in­ter­pre­tan­do­lo però in modi diversi: MongoDB salva i dati come documenti in formato BSON, che poi riunisce in raccolte. Questi dati possono essere strut­tu­ra­ti, se­mi­strut­tu­ra­ti o non strut­tu­ra­ti. I documenti sono formati da coppie chiave-valore, dove la chiave è sempre una stringa e il valore può essere co­sti­tui­to, ad esempio, da altri documenti, array, valori booleani o altri tipi di file. Per garantire un’elevata di­spo­ni­bi­li­tà, MongoDB si basa sullo sharding, una tec­no­lo­gia che di­stri­bui­sce i dati tra più nodi. Le in­ter­ro­ga­zio­ni vengono eseguite con MongoDB Query Language.

Redis raggiunge velocità estreme perché salva tutti i dati di­ret­ta­men­te nella RAM, che possono così essere messi a di­spo­si­zio­ne im­me­dia­ta­men­te. Rispetto a gran parte delle altre soluzioni, la latenza è quindi molto ridotta (ma allo stesso tempo lo spazio di ar­chi­via­zio­ne è limitato). Al pari dell’av­ver­sa­rio di questo confronto, anche Redis si basa su coppie chiave-valore. Il database in-memory supporta diversi valori e strutture di dati quali hash, liste, set, stream e stringhe. Le chiavi vengono salvate in un di­zio­na­rio, mentre per elaborare più valori si usa un parser. Per ulteriori funzioni di in­ter­ro­ga­zio­ne ci sono i moduli.

Pre­sta­zio­ni

MongoDB è un database molto veloce, che permette di eseguire in­ter­ro­ga­zio­ni di lettura e scrittura ad alta velocità. Grazie alla struttura senza schema della soluzione NoSQL, anche in presenza di grandi volumi di dati non si ve­ri­fi­ca­no ral­len­ta­men­ti. Questa velocità viene raggiunta anche com­bi­nan­do i diversi archivi. Tuttavia, nel confronto tra MongoDB e Redis, so­li­ta­men­te il databaese in-memory è molto più veloce. Grazie al sal­va­tag­gio diretto nella RAM, i dati sono di­spo­ni­bi­li subito, motivo per cui Redis è una soluzione ottimale quando occorre ri­chia­ma­re i contenuti il più ve­lo­ce­men­te possibile. Costa però in termini di RAM: usando 4 GB per 100.000 oggetti, ne consuma circa quattro volte di più di MongoDB.

Sca­la­bi­li­tà

Se mettiamo a confronto le pos­si­bi­li­tà di ri­di­men­sio­na­men­to di MongoDB e Redis, otteniamo un quadro com­ple­ta­men­te diverso: no­no­stan­te entrambi i sistemi offrano ottime opzioni, da questo punto di vista MongoDB primeggia. Il database è pro­get­ta­to in modo da poter crescere oriz­zon­tal­men­te senza li­mi­ta­zio­ni, gestendo i più svariati tipi di dati. Con lo sharding i dati vengono di­stri­bui­ti in modo da poter al contempo essere di­spo­ni­bi­li ed elaborati in modo par­ti­co­lar­men­te efficace. Redis offre sca­la­bi­li­tà sia oriz­zon­ta­le sia verticale, ma per im­po­sta­zio­ne pre­de­fi­ni­ta usa sempre un solo shard. Solo lo sharding con hash è possibile; l’am­mi­ni­stra­zio­ne deve essere ef­fet­tua­ta ma­nual­men­te.

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

Lo sharding incide po­si­ti­va­men­te anche sulla di­spo­ni­bi­li­tà dei dati in un database MongoDB. Il sistema utilizza set di repliche e consente agli utenti di creare fino a 50 repliche di un file, che possono poi essere salvate in nodi diversi. Grazie alle funzioni di failover au­to­ma­ti­co, non solo viene definito un punto primario, ma in caso di errore viene anche pron­ta­men­te rim­piaz­za­to.

In linea di principio anche Redis offre un’elevata di­spo­ni­bi­li­tà e, su richiesta, utilizza nodi diversi. Non prevede però il failover au­to­ma­ti­co, a meno che non sia con­fi­gu­ra­to ma­nual­men­te dall’am­mi­ni­stra­to­re o dall’am­mi­ni­stra­tri­ce. Se non lo è, anche questo mec­ca­ni­smo deve essere avviato au­to­no­ma­men­te.

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

Con­fron­tan­do MongoDB e Redis emerge la grande affinità in termini di com­pa­ti­bi­li­tà con i sistemi operativi e i linguaggi di pro­gram­ma­zio­ne. Essendo mul­ti­piat­ta­for­ma, questi sistemi fun­zio­na­no entrambi in Linux, macOS e Windows. MongoDB supporta inoltre Solaris; Redis prevede una licenza BSD. Anche la scelta dei possibili linguaggi di pro­gram­ma­zio­ne è molto vasta in entrambi i casi.

Lin­guag­gio di pro­gram­ma­zio­ne Sup­por­ta­to da MongoDB Sup­por­ta­to da Redis
Ac­tion­script
C
C#
C++
Clojure
Col­d­Fu­sion
Crystal
D
Dart
Delphi
Elixir
Erlang
Fancy
Go
Groovy
Haskell
Haxe
Java
Ja­va­Script
Kotlin
Lisp
Lua
MatLab
Objective-C
OCaml
Pascal
Perl
PHP
Po­wer­Shell
Prolog
Pure Data
Python
R
Rebol
Ruby
Rust
Scala
Scheme
Smalltalk
Swift
Tcl
Visual Basic

Lin­guag­gio di query

Le in­ter­ro­ga­zio­ni in MongoDB e Redis si svolgono in maniera diversa. MongoDB si basa sul lin­guag­gio pro­prie­ta­rio MongoDB Query Language (MQL), che supporta una sintassi simile a JSON. È possibile eseguire anche analisi dei dati e in­ter­ro­ga­zio­ni in base a più campi e chiavi. Redis invece non prevede un proprio lin­guag­gio di query, uti­liz­zan­do invece comandi semplici che fa­ci­li­ta­no la ricerca dei dati e la ve­lo­ciz­za­no. Pertanto per im­po­sta­zio­ne pre­de­fi­ni­ta permette di eseguire solo in­ter­ro­ga­zio­ni chiave-valore. Per uti­liz­za­re altre opzioni occorre integrare ulteriori moduli.

Due database open source

Un’altra ca­rat­te­ri­sti­ca in comune fra MongoDB e Redis è l’approccio open source. Entrambi i sistemi si basano su standard aperti, usati e con­ti­nua­men­te svi­lup­pa­ti da una community molto attiva. MongoDB mette a di­spo­si­zio­ne anche versioni com­mer­cia­li come En­ter­pri­se o Atlas (per l’uso nel cloud), che offrono ulteriori fun­zio­na­li­tà di sicurezza e per cui è di­spo­ni­bi­le un supporto pro­fes­sio­na­le.

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

MongoDB e Redis: quali aziende si affidano a loro?

Molte sono le grandi aziende che hanno scelto una delle due soluzioni pre­sen­ta­te in questo confronto. Tra le più famose che uti­liz­za­no MongoDB troviamo:

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

Redis è invece usato, tra l’altro, dalle seguenti aziende e piat­ta­for­me:

  • Airbnb
  • Craig­sli­st
  • GitHub
  • Hel­lo­Fresh
  • InstaCart
  • Instagram
  • Pinterest
  • Slack
  • Snapchat
  • Stac­kO­ver­flow
  • Trello
  • Uber
  • X (l’ex Twitter)

MongoDB e Redis: qual è la soluzione più adatta a te?

Cosa scegliere tra MongoDB e Redis? La risposta a questa domanda dipende for­te­men­te dalle tue esigenze. Se hai bisogno di un database che offra so­prat­tut­to una velocità elevata e una di­spo­ni­bi­li­tà dei dati immediata, Redis è la scelta ottimale. Se invece l’accento deve essere posto sui big data e sulla massima fles­si­bi­li­tà possibile, MongoDB è una scelta quasi obbligata. Ma in caso di dubbio non si deve per forza scegliere: MongoDB e Redis lavorano in modo ec­cel­len­te anche insieme, sommando i loro punti di forza. Così puoi sfruttare tutta la velocità di Redis sfrut­tan­do con­tem­po­ra­nea­men­te tutte le opzioni di sca­la­bi­li­tà di MongoDB.

Consiglio

Vuoi saperne di più sui database? Nella nostra Digital Guide trovi molti articoli in­for­ma­ti­vi su questo argomento. Qui trovi tra l’altro un’in­tro­du­zio­ne a Redis, una lista dei migliori database open source e un tutorial per compiere i primi passi con MongoDB.

Vai al menu prin­ci­pa­le