A chi servono i database NoSQL

Nell’allegato all’articolo “Matematica e Statistica con Calc” del giugno 2016, archiviato nella categoria “Software libero” di questo blog, ho illustrato come il più semplice e rudimentale database possa essere creato e gestito con un foglio di calcolo.
Negli allegati agli articoli “Software libero per gestire dati” del maggio 2015 e “SQLite, un database per tutti” del dicembre 2016, pure archiviati nella categoria “Software libero” di questo blog, ho illustrato i tre principali strumenti che il software libero ci mette a disposizione per creare e gestire database più seri e professionali: il modulo Base di LibreOffice, MySQL e SQLite.
Questi ultimi strumenti, pensati per essere utilizzati anche su personal computer, funzionano secondo l’impostazione ereditata dai loro predecessori progettati per grandi calcolatori (come il database della Oracle o il DB2 della IBM): impostazione che prevede l’archiviazione dei dati secondo il principio che lo stesso dato debba essere scritto una ed una sola volta e le sue eventuali ricorrenze multiple siano gestite instaurando relazioni. Da qui il nome di database relazionali.
Per capirci: se vogliamo creare un database che contenga autori e titoli dei libri della nostra biblioteca, anziché creare una sola tabella nella quale saremmo costretti a ripetere, a fianco di ciascun titolo, il nome dell’autore di più titoli, creiamo una tabella per gli autori, in cui scriviamo una sola volta l’autore e una tabella per i titoli, prevedendo in ciascuna tabella una colonna in cui inserire un dato (un codice numerico) che colleghi autore e titolo.
Questo semplice esempio non ci fornisce una giusta idea della semplificazione che questo sistema introduce. Per una sensazione più reale pensiamo che al posto degli autori ci siano le migliaia di correntisti di una banca, con il loro indirizzo, dati anagrafici, ecc. e al posto dei titoli ci siano le operazioni bancarie che i correntisti compiono e che il database sia destinato a produrre gli estratti conto mensili.
Il linguaggio con cui si costruiscono e si gestiscono i database relazionali è stato denominato SQL, acronimo di Structured Query Language.
Il nome NoSQL (acronimo di Not Only SQL), con il quale non si nega la validità dell’impostazione relazionale (No sta per Not Only non per No), fu usato per la prima volta nel 1998 da certo Carlo Strozzi per identificare una base di dati relazionale non gestita da interfaccia SQL.
Attorno all’idea si creò poi un vero e proprio movimento che, oltre al non uso dell’interfaccia SQL, teorizza addirittura come, in certi casi, sia utile l’abbandono della stessa logica relazionale e, dal 2009, ad opera di certo Eric Evans, è con quel nome che si identifica questo movimento.
Siamo in presenza di una creatività tutta sviluppata nel mondo dell’open source, del software libero, ma l’humus di coltura deriva dal fatto che grandi aziende che collezionano moli di dati di vastità e ritmi di aggiornamento mai sperimentati prima (i così detti Big Data) e che sono interessate a gestire questi dati per profitto si sono accorte che database impostati secondo la logica relazionale non fanno per loro. Stiamo parlando di Google, di Amazon, di Facebook, ecc.
I database di queste strutture sono chiamati a memorizzare e gestire tutta una serie di dati eterogenei (abitudini e orientamenti di acquisto o di consultazione, idee, valori numerici, tag di classificazione, ecc.), presenti in misura variabile individuo per individuo, e il rigido inquadramento tabellare del database relazionale mal si presta a questa memorizzazione, per cui il linguaggio SQL non è utilizzabile per l’estrazione e l’elaborazione dei dati stessi.
Inoltre l’impianto relazionale ha il difetto di essere scalabile solo verticalmente, per cui, aumentando le dimensioni del database, occorre sostituire al vecchio server che lo conteneva un server più grande. Rinunciando all’impianto relazionale si può realizzare una scalabilità orizzontale, cioè, per ospitare la crescita del database si aggiunge semplicemente un nuovo server al vecchio.
Sono così state escogitate diverse e più funzionali modalità di creazione e gestione di database per quelle fattispecie e per ottenere questo non secondario vantaggio nella gestione dell’hardware.
La materia è in piena evoluzione e, accanto a soluzioni elaborate all’interno di aziende per i rispettivi fabbisogni (Amazon si è costruita un database NoSQL chiamato Dynamo, Facebook ha sviluppato al proprio interno un database NoSQL chiamato Cassandra, ecc.), abbiamo prodotti opensource alla portata anche del nostro piccolo personal computer, uno per tutti MongoDB.
All’indirizzo https://www.mongodb.com/download-center#atlas troviamo il software per Linux, Windows e OS X, con istruzioni per l’installazione, documentazione e tutorial. Chi usa Linux trova molto probabilmente tutto ciò che serve nel repository e può caricare con il Gestore applicazioni.
Fino a quando non avremo le esigenze che hanno i grandi operatori del web potremo comunque continuare a gestire i nostri database all’antica e rinunciare ad utilizzare il cannone per liberarci della mosca.
Peraltro nel mondo NoSQL non si sono ancora sviluppati software di interfaccia per semplificare la gestione del database, come è invece avvenuto nel mondo SQL (vedi il modulo Base di LibreOffice, phpMyAdmin per MySQL, Sqliteman per SQLite, ecc.), per cui non è così semplice muoversi in questo mondo.