SQL e NoSQL: cosa sapere sui database non relazionali

SQL e NoSQL

Con l’avvento dei social, delle applicazioni mobile e del cloud computing, nei reparti IT si è imposta la necessità di lavorare con database flessibili, soprattutto, e scalabili. I database non relazionali o NoSQL hanno ricevuto un forte impulso di sviluppo da questa specifica esigenza, tanto da diventare quasi una scelta obbligata in determinati scenari d’uso, contrapponendosi ai database relazionali o SQL. Scopriamo quindi cosa differenzia un database relazionale come MySQL da uno non relazionale come MongoDB, quali sono i vantaggi offerti dai DB NoSQL e quando questi ultimi sono davvero necessari.

In principio era SQL

I database relazionali, come dice il termine stesso, si basano su relazioni univoche fra i dati. In pratica, tutti i dati da trattare sono memorizzati in strutture fisse, dette tabelle, dove sono posti l’uno di seguito all’altro a formare singole tuple o record (ossia le righe di ciascuna tabella). Ogni dato contenuto in una tabella si trasforma in un’informazione vera e propria solo se associato al suo corrispondente attributo, che rappresenta l’intestazione della colonna in cui il dato è memorizzato.

SQL

Questa struttura obbliga la frammentazione delle informazioni fra differenti tabelle, anche quando i dati descrivono un medesimo oggetto. Per identificare le informazioni appartenenti a uno stesso oggetto si utilizzano tutta una serie di operazioni logiche come il JOIN, che basano i propri calcoli sulle chiavi esterne o foreign keys che mettono in collegamento una tabella all’altra. Per questo motivo, utilizzare tabelle SQL troppo grandi è fortemente sconsigliato: sono di difficile gestione anche con sistemi computazionali molto potenti.

Questa peculiarità impone ai sistemi SQL di svolgere continue interrogazioni, in quanto i dati devono essere raccolti e combinati fra loro da differenti tabelle, anche per operazioni semplici, come l’inserimento, la cancellazione e l’aggiornamento. Questa forte frammentazione prescrive anche un rigido controllo sulle relazioni e sulla validità dei dati residenti nelle differenti tabelle in modo da preservare l’integrità del database, a scapito della flessibilità. È anche per questo motivo che i database relazionali si basano su schemi tabellari (definiti schemi entità-relazione) predefiniti a monte e che difficilmente possono essere riadattati a nuove situazioni, a meno di non correre il rischio di una corruzione dei dati.

NoSQL: divieto di usare i database relazionali

I database non relazionali sono nettamente differenti da quelli SQL. I dati sono conservati in documenti, non in tabelle, per cui la prima differenza con i DB relazionali sta nel fatto che le informazioni non sono distribuite in differenti strutture logiche, ma vengono aggregate per oggetto in documenti la cui natura può essere di tipo Key-Value (che rappresenta la forma primitiva di database NoSQL) o Document Store basati su semantica JSON. Ogni documento aggregato raccoglie tutti i dati associati a un’entità, in modo che qualsiasi applicazione possa trattare l’entità come oggetto e valutare in un sol colpo tutte le informazioni a essa correlate. In questo modo, si evitano anche i fardelli computazionali dovuti ai passaggi di aggregazione delle informazioni tipici del linguaggio SQL, in quanto tutti i dati necessari e corrispondenti a un medesimo oggetto sono già disponibili in un unico documento.

L’assenza di tabelle permette ai database non relazioni di essere schemaless, ossia privi di un qualsiasi schema definito a priori e questa caratteristica conferisce ai DB NoSQL un altro vantaggio non trascurabile.

NoSQL

Vantaggi (e svantaggi) dei DB NoSQL rispetto a quelli SQL

Dalle caratteristiche citate si intravedono già i vantaggi di una soluzione NoSQL rispetto a una SQL, che possiamo così esplicitare.

  1. Leggerezza computazionale: i database NoSQL non prevedono operazioni di aggregazione sui dati, in quanto tutte le informazioni sono già raccolte in un unico documento associato all’oggetto da trattare. Negli ambienti SQL la complessità di queste operazioni, e quindi il peso computazionale, cresce con l’ingigantirsi della base di dati, del numero di tabelle e delle informazioni da trattare. Il NoSQL, invece, non ha limiti di dimensioni in questo senso. Così si ottengono migliori prestazioni e performance anche in ambienti di Big Data. Lo scotto da pagare a tutta questa flessibilità e alla proprietà di aggregazione dei database NoSQL è la duplicazione delle informazioni. In realtà, i costi sempre meno proibitivi dei sistemi di storage rendono questo svantaggio poco importante.
  2. Assenza di schema: i database NoSQL sono privi di schema in quanto il documento JSON contiene tutti i campi necessari, senza necessità di definizione. In questo modo, possiamo arricchire le nostre applicazioni di nuovi dati e informazioni, definibili liberamente all’interno dei documenti JSON senza rischi per l’integrità dei dati. I database non relazionali, a differenza di quelli SQL, si rivelano quindi adatti a inglobare velocemente nuovi tipi di dati e a conservare dati semistrutturati o non strutturati.
  3. Scalabilità orizzontale garantita: l’aggregazione dei dati e l’assenza di uno schema definito a priori offre l’opportunità di scalare orizzontalmente i database NoSQL senza difficoltà e senza rischi operativi.

Chi usa i database NoSQL

Contesti come Facebook, Twitter e tanti altri ricorrono ai database NoSQL per garantire velocità di esecuzione anche nell’elaborazione di terabyte e terabyte di dati, la scalabilità orizzontale con l’aggiunta di nuovi server, un elevato livello di availability (che a parità di costi è difficilmente ottenibile con una soluzione SQL) ela possibilità di ricevere migliaia di dati non strutturati senza dipendere da uno schema fisso.

Lascia un commento

Tutti i campi sono obbligatori.
L'indirizzo email non verrà pubblicato