Software

NoSQL cosa sono: ecco l’alternativa ai database relazionali

Esistono da oltre mezzo secolo ma hanno conosciuto una certa diffusione soltanto negli ultimi due decenni. I database NoSQL sono scalabili, flessibili e si prestano allo sviluppo di applicazioni di varia natura grazie al comparto di Api di facile implementazione. In futuro saranno sempre più centrali

Pubblicato il 27 Giu 2023

MySQL Workbench

Nati a cavallo tra la fine degli anni Sessanta e l’inizio degli anni Settanta del secolo scorso, i database NoSQL sono a lungo rimasti all’ombra dei database SQL, detti relazionali, salvo poi tornare d’attualità nei primi anni 2000, grazie soprattutto al web che ha contribuito a generare una quantità enorme di dati di diversa natura, aprendo così una nuova stagione sulle basi di dati non relazionali, ovvero i database NoSQL.

I database NoSQL sono utilizzati negli ambiti più evoluti del computing inteso nel senso più ampio del termine e non si può dire che hanno surclassato quelli relazionali, ancora molto usati. La crescente diffusione dei primi è più in linea con la quantità di dati eterogenei generati da internet e con la necessità di elaborazioni più flessibili, rapide e scalabili.

Database NoSQL: document, key-value, column-family e graph

Il termine NoSQL è un contenitore che serve a creare una differenza con i database SQL tradizionali. Infatti, sono tendenzialmente diversi da quelli SQL a partire dal fatto che si discostano dal tradizionale modello di tabelle righe e colonne che contraddistinguono i database relazionali.

I quattro principali tipi di database NoSQL sono:

  • Document database
  • Key-value
  • Column-family database
  • Graph database

È già evidente, ancora prima di approfondire queste quattro categorie, la particolare duttilità dei database NoSQL.

Document database

Memorizza i dati in documenti BSON, JSON e XML, di fatto file comprensibili quanto all’uomo quanto alle macchine e costituiti da una sintassi molto semplice, immediata e lineare. In questi database i documenti possono essere indicizzati, archiviati e recuperati in modo simile agli oggetti dati usati nelle applicazioni, e questo ne fa un modello diffuso tra gli sviluppatori, anche perché le strutture dei dati possono essere modificate dai programmatori senza l’intervento di database administrator, come invece accade o può accadere con i database relazionali.

Key-value

È il modello più semplice e prevede che ogni elemento nel database venga archiviato secondo la logica key-value (chiave-valore). Richiama l’architettura basilare di un database SQL il quale, con due sole colonne, accoppia tra loro due diversi dati corrispondenti. Questo modello prevede che a ogni valore vengano associate chiavi specifiche ed è quindi il set di dati stesso a rappresentare sia da chiave sia da valore. La chiave rimpiazza il concetto di indice e funge da elemento mediante il quale eseguire ricerche all’interno del database.

Column-family database

È organizzato come un insieme di colonne e questo ha dei vantaggi pratici quando occorre svolgere delle analisi sui dati giacché richiedono un minore impiego di risorse di calcolo, a differenza di quanto accade nei database SQL che archiviano i dati in righe e li legge riga per riga. C’è però un prezzo da pagare: l’organizzazione dei dati in colonne richiede più eventi di scrittura su disco, male questo di cui i database SQL non risentono perché i dati nelle righe vengono scritti in modo contiguo senza continui accessi al disco.

Graph database

È deputato a creare relazioni tra elementi, ognuno dei quali viene archiviato come nodo a sé stante e memorizzato direttamente, senza ricorrere a una struttura a più tabelle tipica dei database SQL che creano le relazioni tra dati. Ciò rende più snella la ricerca delle connessioni tra dati, tant’è che è particolarmente usato dalle reti sociali

I vantaggi del NoSQL: flessibilità, scalabilità e performance

Flessibilità, scalabilità e performance sono tre dei requisiti più importanti che hanno fatto emergere il valore dei database NoSQL nell’era di internet che genera una quantità di dati tale da mettere, almeno potenzialmente, sotto stress le architetture SQL tradizionali.

I database NoSQL gestiscono Big data garantendo alta velocità e architetture scale-out e, inoltre, lavorano con dati non strutturati, semi-strutturati e anche con quelli strutturati. L’amministrazione delle tecnologie NoSQL è più immediata e intuitiva, favorendo anche il lavoro degli sviluppatori e ottiene il meglio anche dalle architetture Cloud, riducendo peraltro i tempi per la lettura e l’organizzazione dei dati. I dati non strutturati non sono conformi ai database SQL ed è condizione più che rilevante, giacché internet – e soprattutto il web – è un enorme database di file e contenuti di diverso formato, container immensi di informazioni non strutturate.

Va accentuata anche la scalabilità orizzontale dei database NoSQL che consente di ripartire i dati su diversi server mentre le soluzioni SQL, la cui scalabilità è verticale, fanno leva sull’efficienza di un singolo server. Ciò significa che, laddove servissero maggiori capacità, sarebbe necessario acquistare server più performanti e ciò, oltre a prevedere operazioni di migrazione dei dati e oltre a essere un costo, rischia di limitare lo sviluppo delle applicazioni. Laddove occorre lavorare con i Big data i database NoSQL sono una scelta quasi obbligata.

Come NoSQL supporta l’elaborazione dei Big data nelle aziende

I database NoSQL non usano tabelle righe-colonne per organizzare e archiviare i dati, fanno invece ricorso a tecniche più flessibili, con le architetture viste sopra (ossia documenti, grafici, coppie di valori e colonne) e questo permette di elaborare grandi quantità di dati. La forza lavoro viene ripartita in modo uniforme tra i server, arrivando così a reggere carichi di lavoro che non potrebbero essere sopportabili per i database SQL.

Usano server Cloud e architetture cluster e ciò rende i database NoSQL più performanti dal punto di vista delle prestazioni. Non da ultimo, i dati vengono archiviati e richiamati mediante Api basate su oggetti.

Bassi tempi di latenza e capacità di reggere elevati volumi di transazioni sono prerogative dei database NoSQL assieme al fatto che, salvo in alcuni casi, le implementazioni NoSQL sono esenti dalle necessità di definire la struttura dei database (schema).

Per dare un corpo a tutto ciò, va considerato che le impostazioni utente sui siti web, così come le correlazioni tra follower sulle piattaforme sociali e i sistemi di content management sono affidati a database NoSQL.

NoSQL

Confronto tra NoSQL e SQL: capire quale soluzione è più adatta

Nei paragrafi precedenti abbiamo già scoperto gran parte delle carte. Le differenze tra i database relazionali (SQL) e quelli non relazionali (NoSQL) sono soprattutto tre:

  • sono conformi ai dati non strutturati e semi-strutturati
  • sono scalabili con maggiore facilità
  • sono più flessibili

Queste variabili sono già sufficienti a propendere per l’una o per l’altra tecnologia. Tuttavia, per fornire un quadro più esaustivo, possiamo prendere in considerazione alcuni altri parametri, tra i quali:

  • Tipologia: i database SQL sono identici per tutte le applicazioni, mentre quelli NoSQL mettono a disposizione diversi modelli di database (document, key-value, column-family e graph sono i più diffusi)
  • Schema: la struttura dei database SQL va definita prima di popolarli con i dati e, laddove fosse necessario apportare modifiche, queste andrebbero estese a tutto il database. Nel caso dei database NoSQL i nuovi set di dati possono essere aggiunti senza patemi e i dati di diverso tipo (strutturati, non strutturati e semi-strutturati) possono essere archiviati senza conversioni
  • Archiviazione: i dati vengono conservati nelle classiche righe contenute nelle altrettanto classiche tabelle (per esempio, la tabella Articolo, oppure quella Materiali, eccetera). I database NoSQL non usano tabella ma a file di diverso tipo
  • Scalabilità: i database SQL sono scalabili in verticale, ovvero un solo server (o un cluster a più nodi) deve fornire le performance necessarie mentre, quando si parla di NoSQL, si possono aggiungere server (anche in Cloud) e, in questo caso, si fa riferimento alla scalabilità orizzontale
  • Prestazioni: i database SQL usano indici e questo può rallentare le prestazioni quando il volume dei dati è cospicuo. I database NoSQL, che usano server Cloud e cluster, offrono prestazioni di gran lunga superiori soprattutto con i Big data

Ci sono altre due ragioni che fanno pendere l’ago della bilancia nettamente verso i database NoSQL o verso quelli SQL. L’accesso ai dati e la loro archiviazione vengono eseguiti mediante lo Structured Query Language (SQL). I database NoSQL fanno le medesime operazioni mediante Api basate su oggetti.

Ci sono poi considerazioni da fare che riguardano le caratteristiche fondanti delle due tecnologie. Da una parte i database SQL hanno caratteristiche Acid, mentre gli altri sfruttano il modello Base.

La differenza la spiegano gli acronimi stessi. ACID sta per Atomicity, Consistency, Isolation, Durability mentre BASE sta per Basically Available, Soft State, Eventual Consistency. I database NoSQL valutano la disponibilità e soltanto dopo la coerenza e, la maggior parte di questi ultimi, non supporta le transazioni Acid. Anche questi elementi costituiscono un percorso obbligato a seconda del risultato a cui i database sono orientati.

Per quanto riguarda le licenze, sia gli uni sia gli altri possono essere Open source e a pagamento, fermo restando che in ambito aziendale le soluzioni completamente gratuite (che non sono quindi accompagnate da un’assistenza ufficiale) sarebbero da evitare.

Aspetti di sicurezza e affidabilità nei database NoSQL

Ogni domanda relativa alla sicurezza e all’affidabilità dei database NoSQL è attuale ed è destinata a rimanere parzialmente aperta, perché non si tratta più soltanto di archiviare e recuperare dati in uno o più database, ma di farlo attraverso un’ampia distribuzione di applicazioni basate sul Cloud e l’IoT. Non aumenta soltanto il traffico di rete ma aumentano anche le risorse hardware e software necessarie e questo ha ricadute sulla sicurezza che non può più essere intesa come la difesa di un forte (i server aziendali) ma diventa un presidio distribuito tra tutti i punti di raccolta, di elaborazione o di impiego dei dati.

Occorrono requisiti di autenticazione e di autorizzazione, di certificazione dei dati e di privacy che non possono essere trattati in un articolo o in un paper tecnico.

A ciò si aggiunge che, al pari dei database SQL, anche le architetture NoSQL soffrono di mali atavici, tra i quali gli attacchi Injection e vulnerabilità note che possono essere individuate con un assessment.

Il panorama dei database NoSQL è ampio e ognuno di questi, se non altro nelle versioni a pagamento, prevede modalità di encryption dei dati che vanno però implementate da chi ne fa uso secondo le specifiche del caso.

La sicurezza e l’affidabilità dei database NoSQL vanno declinate in capo all’uso che se ne fa, tra applicazioni che possono essere distribuite via web o mediante altri canali e tra end-point, siano questi sensori, dispositivi mobili, dispositivi IoT, eccetera.

Tendenze future del NoSQL e il suo impatto sulle strategie aziendali

La digitalizzazione e l’Industria 4.0 spingono verso l’adozione di database NoSQL. Va specificato che la grandezza dell’azienda e del mercato in cui opera sono relativamente importanti per la scelta del database. Le Telco, per esempio, per registrare i dati relativi alle telefonate e al traffico di rete dei propri clienti possono usare database SQL, a prescindere dal fatto che i dati da archiviare sono ingenti.

Le AI, anche e soprattutto quelle conversazionali, sono foriere di dati non strutturati e semi-strutturati, per il web vale altrettanto e così si può dire per i vari assortimenti di sensori e videocamere. Tutto questo traccia la rotta: i database NoSQL saranno sempre più diffusi ma, più che cambiare le strategie aziendali, permettono alle imprese di modellarle, anche strada facendo se necessario, fornendo supporto alle decisioni di business.

Considerazioni sui limiti e le sfide dei database NoSQL

Ogni tecnologia ha dei limiti, ed è anche per questo che l’innovazione da considerare un’opera incompiuta, un’evoluzione senza fine.

Nello specifico, i limiti provengono anche da una certa narrativa secondo la quale i database NoSQL sono un’alternativa (più o meno valida a seconda delle voci) a quelli relazionali ma, in realtà, rischiano di essere tutt’altro che un’alternativa laddove gli scenari applicativi non possano essere interpretati dai database SQL.

I principali vantaggi dei database NoSQL hanno un costo in termini di limitazioni, tra le quali una scemata capacità nell’analisi dei dati e un utilizzo relativamente efficace nel comprendere le logiche di business troppo complesse.

In un’azienda trovano spazio entrambe le tecnologie, confinando però i database SQL e quelli NoSQL a scopi ben definiti e separati tra loro.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3