Big Data e NoSQL

12 Agosto 2015 Silvio Marano

Big Data e NoSQL

Il paradigma NoSQL (Not Only SQL) è nato come alternativa al più classico modello SQL (Structured Query Language). Le motivazioni alla base della nascita del modello NoSQL sono da ricercarsi nella necessità di avere maggiore flessibilità e prestazioni;
big-data-sql-nosql necessità che diventano man mano più pressanti quando si deve lavorare su basi di dati complesse di enormi dimensioni e con l’avvento dei big data in vari campi della ricerca analitica o per servizi web che lavorano su dati di milioni di utenti come i social network, sono stati un passo obbligato per venire incontro alle “4 V dei BigData” e offrire così scalabilità orizzontale in maniera distribuita sulla rete e al contempo prestazioni elevate e flessibilità nell’archiviazione. Tutto però ha un prezzo e come vedremo le maggiori prestazioni e la maggior flessibilità non vengono a costo zero.

Le 4 V dei Big Data e il NoSQL

I Big Data rappresentano una quantità enorme di dati variegati. Le caratteristiche dei Big Data possono essere racchiuse in 4 attributi:

  • Volume: indica la dimensione dell’insieme di dati e si riferisce alla capacità di memorizzare e accedere a grandi quantità di dati che possono arrivare anche fino a miliardi di Terabyte;
  • Varietà: i dati che costituiscono questo gigantesco insieme di informazioni provengono da fonti eterogenee e appartengono a tipologie differenti. Possiamo avere dati testuali, immagini, suoni, video e file di qualsiasi tipo. Non ci troviamo di fronte a dati strutturati e omogenei;
  • Velocità: le analisi sui dati devono avvenire a enorme velocità per poter essere utilizzati nei vari campi applicativi, dato che si evolvono continuamente;
  • Veridicità: poiché le analisi sui Big Data hanno larghissimo impiego nel supporto decisionale, bisogna essere sicuri siano affidabili o altrimenti possono portare a considerazioni errate con effetti nefasti.

Gli RMDB a causa della bassa flessibilità e poca scalabilità non sono adeguati a supportare le prime tre “V” dei Big Data (volume, varietà e velocità). I NoSQL invece possono fare leva sulle seguenti caratteristiche che ben si sposano con le caratteristiche dei Big Data:

  • Cloud friendliness: Devono essere adatti a operare in un ambiente multi‐nodo distribuito in modo robusto, consentendo il funzionamento in caso aggiunta e rimozione dei nodi, supportando lo sharding dei dati, ossia la distribuzione delle informazioni su vari nodi, e la replicazione dei dati su più nodi.
  • Bassa complessità: Gli RMDB necessitano di infrastrutture complesse per il mantenimento dei dati e l’allineamento degli stessi. Siccome le prestazioni sono fondamentali, è necessario adottare strutture più semplici da gestire.
  • Flessibilità: Devono essere in grado di gestire informazioni di natura diversa e mutabile che non rispetta degli schemi rigidi e prefissati.
  • Scalabilità Orizzontale: L’aggiunta di macchine e la rimozione delle stesse dal cluster, deve avvenire senza troppa difficoltà e soprattutto senza che il sistema debba essere arrestato o subire rallentamenti.

Tipologie di modello dati

I database NoSQL si suddividono in 5 categorie principali a seconda del modello di gestione dati utilizzato:

  • Chiave valore
  • Colonnari
  • Orientati al documento
  • A grafo
  • Ibridi, ossia che possono utilizzare sistemi criteri misti tra le tipologie elencate pocanzi

Le caratteristiche possono variare anche in modo significativo a seconda dell’implementazione, ma si può definire comunque qual è in linea di massima il rapporto tra le varie caratteristiche in relazione alla tipologia di database. Tipologie di database con strutture più semplici, garantiscono tendenzialmente prestazioni molto più elevate a prezzo di maggiori limitazioni sulla possibilità di effettuare interrogazioni più complesse.

Tipo
Performance
Scalabilità
Flessibilità
Complessità Strutturale
Funzionalità Interrogazioni
Chiave-Valore
Molto Elevate
Molto Elevata
Elevata
Molto bassa
Minimali
Colonnare
Molto Elevate
Molto Elevata
Moderata
Bassa
Minimali
A documenti
Elevate
Elevata
Elevata
Bassa
Medio basse
A grafo
Moderate
Moderata
Elevata
Elevata
Elevate
RMDB
Basse
Bassa
Bassa
Moderata
Elevate

Schema e correlazione dati:

Tipo
Schema
Correlazione Dati
Note
Chiave-Valore
NO
NO
Query molto performanti su grandi moli di dati. Altissima concorrenza
Colonnare
SI
SI
Query molto performanti su grandi moli di dati. Singola riga famiglia di colonne non separabile
A documenti
NO
NO
Query performanti su grandi moli di dati. Ottima versatilità.
A grafo
NO
SI
Dati fortemente relazionati

Soddisfare contemporaneamente tutti e tre i vincoli  del teorema di Brewer (Consistency, Availability e Partition tolerance) non è possibile se non in modo “approssimato” e le varie soluzioni NoSQL attualmente in circolazione focalizzano l’attenzione su differenti vincoli. Per dare una panoramica generale ho realizzato una tabella dei principali database NoSQL in circolazione, dove si evidenzia il tipo i vincoli CAP e il linguaggio implementativo utilizzato (se noto).

Nome
Tipo
Linguaggio
CAP
Aerospike
Chiave-Valore
C
AP
Berkeley DB
Chiave-Valore
C
CP
BigTable
Colonnare
C++
CP
Cassandra
Colonnare
Java
AP
Couchbase
A documenti
C++ \ Erlang
AP
CouchDB
A documenti
Erlang
AP
DynamoDB
Chiave-Valore
nc
AP
Hbase
Colonnare
Java
CP
Hypertable
Colonnare
C++
CP
KAI
Chiave-Valore
Erlang
AP
MongoDB
A documenti
C++ \ Javascript
CP
Neo4J
A grafo
Java
CA
Oracle NoSQL
Chiave-Valore
Java
CP o AP
OrientDB
A grafo
Java
CA
Redis
Chiave-Valore
C
CP
Riak
Chiave-Valore
Erlang
AP
Scalaris
Chiave-Valore
Erlang
CP
SimpleDB
A documenti
Erlang
AP
Terrastore
A documenti
Java
CP
Tokyo Cabinet
Chiave-Valore
C++
AP
Vertica
Colonnare
nc
CP
Voldemort
Chiave-Valore
Java
AP

Nella sezione pubblicazioni potrete scaricare il mio paper completo sulle varie tipologie di NoSQL.

, ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Entra in contatto

Compila il form con il tuo messaggio

Translate »