NoSQL (è acronimo di Not Only SQL) è un movimento che promuove sistemi software dove la gestione dei dati non utilizza il modello relazionale, di solito usato dai database tradizionali (RDBMS).
NoSQL perchè fa riferimento al linguaggio SQL, che è il più comune linguaggio di interrogazione dei dati nei database relazionali.
No SQL è un database orientato al documento
Le basi di dati orientate al documento non memorizzano i dati in tabelle con campi uniformi per ogni record come nei database relazionali, ma ogni record è memorizzato come un documento che possiede determinate caratteristiche. Qualsiasi numero di campi con qualsiasi lunghezza può essere aggiunto al documento.
I database NoSQL rappresentano una valida alternativa ai database relazionali. Capita sempre più spesso che le aziende scelgano soluzioni NoSQL come base dei propri progetti, sia per nuovi archivi che come approdo di un processo di migrazione.
DBMS SDL e NoSQL a confronto
Gli elementi di base di un database relazionale ruota attorno al concetto di tabella. Ne esisterà una per ogni tipo di informazione da trattare, ed ognuna sarà costituita da colonne, una per ogni aspetto dei dati.
Una tabella dovrebbe avere una o più colonne che svolgono il ruolo di chiave primaria, una sorta di indice che permette di riconoscere univocamente quella riga rispetto a tutte le altre. Tra le tabelle di un database relazionale, inoltre, possono esistere alcune relazioni. Una riga di una tabella A può fare riferimento ad un’altra riga di un’altra tabella B, e ciò può essere espresso inserendo la chiave primaria della riga di B tra i dati di quella di B.
Alla base di un database relazionale, c’è la progettazione della struttura interna, fatta di tabelle e relazioni. L’impostazione iniziale condizionerà lo evoluzione del DB, dall’inserimento dei dati all’interrogazione…
La strutturazione rigida dei contenuti, tipica dei database relazionali, è assente nei database NoSQL, tale assenza è uno degli aspetti che maggiormente ne hanno permesso il successo.
Scopri i vantaggi
- Dato che un elemento contiene tutte le informazioni necessarie non serve usare i dispendiosi (in termini di performance) JOIN come invece avviene per i database relazionali.
- La semplicità di questi database è uno degli elementi fondamentali, è proprio questo che permette di scalare in orizzontale in maniera così efficiente..
- Scegliendo un database adatto alla mappatura più diretta alle object classes del proprio applicativo si possono ridurre di molto i tempi dedicati allo sviluppo del metodo di scambio dati tra il database e l’applicativo stesso (il cosiddetto object-relational mapping che è invece necessario in presenza di database relazionali).
Ecco gli svantaggi
- La semplicità di questi database, però, porta anche alla mancanza dei controlli fondamentali sull’integrità dei dati, il compito ricade quindi totalmente sull’applicativo che dialoga col database che ovviamente dovrebbe essere testato in modo molto approfondito prima di essere messo in produzione.
- La mancanza di uno standard universale (come può essere l’SQL) è un’altra delle pecche di questi database non relazionali, ogni database ha infatti le proprie API e il suo metodo di storing e di accesso ai dati.
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) e la possibilità di ricevere migliaia di dati non strutturati senza dipendere da uno schema fisso.