Il linguaggio SQL (si legge sequel) è sicuramente il più conosciuto e utilizzato all'interno del mondo dei database. Merito, senza dubbio, della sua struttura modulare, della sua potenza e della sua affidabilità. Ma il tempo dei database relazionali (ovvero delle basi di dati strutturate secondo i principi dell'algebra relazionale) potrebbe essere vicina alla fine. Un nuovo linguaggio si sta affermando sul palcoscenico dei big data e potrebbe ben presto rubare a SQL il ruolo di padrone incontrastato dell'universo delle basi di dati. Si chiama NoSQL e vanta un'anima italiana.
La storia
Il termine NoSQL – acronimo di Not only SQL, non solo SQL – venne utilizzato per la prima volta nel 1998 dall'informatico italiano Carlo Strozzi per un database relazionale leggero e alternativo a SQL. Il nome, che potrebbe apparire curioso ad una prima occhiata, è dovuto al fatto che il database creato da Strozzi non utilizzava la solita interfaccia del più celebre “rivale”. Come ebbe a dire qualche anno più tardi lo stesso Strozzi, “come movimento, NoSQL diparte radicalmente dal modello relazionale, e quindi andrebbe chiamato più appropriatamente NoREL, o qualcosa di simile”.
Ormai, come si suol dire, la frittata era fatta e il nome NoSQL tornò in voga nel 2009. Eric Evans, dipendente della società di hosting Rackspace, utilizzò nuovamente il termine per riferirsi ad un incontro organizzato per discutere del crescente numero di database non relazionali e distribuiti che spesso non forniscono le classiche caratteristiche ACID (Atomicità, Coerenza, Isolamento e Durabilità).
Che cos'è NoSQL
Con NoSQL si identificano un'ampia varietà di tecnologie legate ai database sviluppate in risposta al crescente volume di dati memorizzati sulla Rete, alle modalità e alla frequenza con le quali si accede a questi dati e le performance e la potenza di calcolo necessaria per gestirli. I database relazionali – come SQL – non sono stati progettati per far fronte alle sfide di scalabilità della struttura richieste dalle applicazioni web attuali, né per sfruttare a dovere le capacità – sia economiche sia tecnologiche - di memorizzazione dei dati e di potenza di calcolo oggi disponibili.
A differenza del linguaggio SQL, i database NoSQL si dividono in quattro differenti tipologie: chiave-valore, orientato ai documenti, a grafo, tabulare. I chiave-valore sono i database più semplice nell'ambito del NoSQL: ogni singolo elemento viene salvato come un attributo (o chiave) assieme al suo valore. Nel database orientato ai documenti ogni chiave è accoppiata con una struttura dati complessa detta documento. I database a grafo sono utilizzati per conservare informazioni su reti e relazioni, come le connessioni all'interno di un social network. In un database tabulare i dati sono organizzati in colonne di tabelle, così da rendere più facili le interrogazioni su grandi set di dati.
I benefici di un database NoSQL
Se si comparano le prestazioni di un database SQL con le prestazioni di un database NoSQL i benefici di quest'ultimo appaiono evidenti. I database non relazionali possono essere scalati (ovvero adattati alla grandezza della base dati da trattare) con maggiore facilità, garantiscono prestazioni migliori e il loro modello organizzativo può risolvere problemi che il modello relazionale non è progettato per affrontare.
Una base di dati NoSQL può, ad esempio, gestire una grossa mole di dati strutturati, semi-strutturati o non strutturati; oppure essere programmata con un linguaggio orientato agli oggetti – come JavaScript – facile da utilizzare e flessibile; o, ancora, possedere un'architettura efficiente e con scalabilità orizzontale (per modificare potenza e capacità di calcolo possono essere aggiunte o sottratte nuove macchine).
Gli schemi dinamici sono uno dei reali punti di forza dei database NoSQL. In una base dati SQL, gli schemi di organizzazione interna devono essere definiti prima che sia possibile inserire i dati all'interno del database. Nel caso in cui si volesse aggiungere una nuova classe di dati, sarebbe necessario creare un nuovo database nel quale importare tutti i dati già inseriti e aggiungere i nuovi. Nel caso di database di dimensioni esigue, il processo potrebbe anche essere indolore; in caso di database di grandi dimensioni – come nel caso dei big data – il processo potrebbe essere lungo e macchinoso e potrebbe rendere il servizio non raggiungibile per lungo tempo.
I database non relazionali, invece, sono realizzati per permettere l'inserimento di dati senza uno schema predefinito. Ciò rende più semplice effettuare cambiamenti (anche sostanziali) quasi in tempo reale, senza preoccuparsi di eventuali interruzioni del servizio.
MongoDB
Tra le varie applicazioni di database NoSQL, MongoDB è tra le più conosciute e utilizzate. Rilasciato sotto licenza GNU Affero General Public License (GNU AGPL), MongoDB è un software open source per la gesione di database non relazionali orientati ai documenti. Per la sua flessibilità, scalabilità e potenza viene utilizzato da giganti del calibro di eBay, FourSquare, SourceForge e il New York Times.
Disponibile per sistemi Linux (32/64 bit), Solaris (i386, 64 bit), MacOS X (32 bit) e Windows (32/64 bit), MongoDB fa affidamento al linguaggio di programmazione JavaScript per la gestione delle basi dati.
23 ottobre 2013