NoSQL: la tendenza verso un’archiviazione strutturata dei dati
Negli ultimi 15 anni, le richieste nei confronti del moderno sviluppo di applicazioni sono cambiate radicalmente: quantità di dati sempre maggiori devono essere archiviate, elaborate e aggiornate in tempi sempre più rapidi. Per quanto riguarda la gestione di grandi quantità di dati, già da tempo i database NoSQL o non relazionali stanno facendo parlare di sé. Ma cos’è NoSQL in termini pratici? E quali vantaggi offre questo moderno approccio alle banche dati?
Cos’è di fatto NoSQL?
L’acronimo NoSQL significa “not only SQL”, e proprio in questo senso deve essere interpretato questo modello di banche dati: assolutamente non come una soluzione contrapposta, quanto piuttosto come un arricchimento e un’utile integrazione dei tradizionali database SQL relazionali. I database NoSQL, infatti, superano i limiti dei sistemi relazionali, utilizzando modelli di banche dati alternativi. Questo, tuttavia, non significa necessariamente che i sistemi SQL non vengano utilizzati: esistono infatti anche numerose varianti miste in cui convivono entrambe le soluzioni e che vengono anch’esse comprese nella definizione generale di NoSQL.
Fino alla fine degli anni 2000, i database SQL rappresentavano il non plus ultra del progresso applicativo. Altri approcci, come i database orientati agli oggetti, non hanno mai raggiunto una rilevanza paragonabile in ragione della loro complessità di utilizzo. Un’alternativa vera e propria si è concretizzata grazie allo sviluppo dei database NoSQL, che sono stati la risposta alle limitazioni e ai problemi delle banche dati relazionali. Queste ultime, infatti, spesso non sono in grado di soddisfare le esigenze dei moderni sviluppi applicativi. A differenza delle banche dati relazionali, i database NoSQL utilizzano innovazioni, come i server cloud, per offrire un modello di dati alternativo in cui possono essere archiviati ed elaborati moltissimi dati di diverso tipo. Le strutture di dati così ottenute sono efficienti e flessibili e sono in grado di reagire rapidamente al mutamento delle esigenze.
I sistemi NoSQL vengono di frequente denominati sistemi ad archivi strutturati, definizione che ne esplicita la differenza sostanziale rispetto alle banche dati SQL relazionali: a differenza di queste ultime, i database NoSQL non utilizzano schemi tabellari rigidi all’interno dei quali i dati devono essere definiti prima dell’archiviazione. I database NoSQL, infatti, fanno ricorso a metodi più flessibili, che permettono di aggiungere senza difficoltà nuovi set di dati che si aggiornano di continuo nell’applicazione. Le soluzioni NoSQL sono pertanto adatte a essere utilizzate per l’elaborazione di dati non strutturati o anche sconosciuti, cosa impensabile con una banca dati relazionale.
Come funzionano i database NoSQL?
A differenza delle banche dati relazionali basate su SQL, i database NoSQL non utilizzano per l’archiviazione dei dati tabelle tradizionali con righe e colonne. Anziché utilizzare le tabelle, organizzano grandi quantità di dati con l’ausilio di tecniche flessibili, ad esempio con documenti, grafici, coppie di valori e colonne. Perciò, i database NoSQL sono indicati per le applicazioni che prevedono l’elaborazione di grandi quantità di dati e che, pertanto, richiedono strutture flessibili. Poiché i sistemi NoSQL utilizzano hardware cluster e server cloud, le capacità vengono ripartite in modo uniforme e il database lavora senza difficoltà anche in caso di un’elevata mole di dati. A differenza delle banche dati relazionali, che all’aumentare della quantità di dati accusano rapidamente un calo di efficienza, i database NoSQL rappresentano una soluzione efficiente, flessibile e scalabile anche in caso di un elevato volume di dati.
Una particolarità dei database NoSQL è inoltre la scalabilità orizzontale. Le banche dati SQL relazionali sono scalate in direzione verticale e basano tutta la loro efficienza su un singolo server. Un incremento della loro capacità passa necessariamente attraverso l’investimento in un server più potente, il che, nel tempo, non solo è correlata a costi più elevati, ma limita anche le possibilità di sviluppo applicativo. Le soluzioni NoSQL ripartiscono generalmente i dati su diversi server. In caso di aumento della quantità di dati, è sufficiente aggiungere nuovi server. Questo fa sì che i database NoSQL siano in grado di memorizzare ed elaborare senza difficoltà grandi volumi di dati, caratteristica che li rende idonei soprattutto per le applicazioni big data.
I quattro principali approcci NoSQL
I sistemi ad archivi strutturati rinunciano agli schemi rigidi delle loro controparti relazionali, diventando così soluzioni particolarmente indicate per le applicazioni big data. A livello mondiale sono già disponibili numerosi database NoSQL di vario tipo (perlopiù open source ) che presentano strutture diverse a seconda dello sviluppatore e dei requisiti. Sebbene non esistano regole uguali per tutti, i diversi approcci NoSQL possono essere suddivisi in quattro categorie principali.
Database orientati ai documenti
Nei database NoSQL orientati ai documenti, i dati vengono memorizzati direttamente in documenti con lunghezza variabile, ma non devono necessariamente essere strutturati. A essi vengono associati dei cosiddetti attributi o “tag” in base ai quali è possibile effettuare ricerche all’interno dei contenuti del documento. I database NoSQL orientati ai documenti sono particolarmente adatti per i sistemi di gestione dei contenuti e per i blog. Come formato dei dati viene attualmente utilizzato soprattutto il formato JSON (JavaScript Object Notation) che permette uno scambio veloce dei dati tra le applicazioni.
Database a grafo
Un database a grafo crea delle relazioni tra i dati utilizzando nodi e archi. Attraverso i nodi e i collegamenti tra di essi viene organizzata la rete di relazioni tra i dati. Nel caso di raccolte di dati con informazioni fortemente correlate, i database a grafo NoSQL raggiungono pertanto prestazioni decisamente migliori rispetto alle banche dati SQL relazionali. Questi database vengono utilizzati soprattutto nell’ambito dei social media, ad esempio per rappresentare le relazioni tra follower su Twitter o Instagram.
Database key-value (chiave-valore)
Mentre le banche dati SQL relazionali utilizzano schemi e tabelle rigidi, i database chiave-valore archiviano i dati sotto forma di coppie chiave-valore. Ai singoli valori vengono associate chiavi specifiche, laddove il set di dati stesso funge da chiave (key) e rappresenta un valore (value). La chiave costituisce al contempo un indice con il quale è possibile eseguire una ricerca all’interno del database. Le chiavi dei database chiave-valore NoSQL sono sempre univoche e sono assimilabili alle chiavi primarie delle banche dati relazionali.
Database orientati alle colonne
A differenza dei modelli di banche dati relazionali, i sistemi di database orientati alle colonne archiviano i set di dati non in righe, bensì in colonne. Questo rende possibili processi di lettura dati più brevi e un’elevata efficienza. Questo modello NoSQL viene utilizza soprattutto per il data mining e i programmi di analisi.
Vantaggi di NoSQL rispetto a SQL
A seconda della finalità dell’applicazione, NoSQL può offrire determinati vantaggi rispetto alle classiche banche dati relazionali: laddove i sistemi SQL raggiungono rapidamente i loro limiti di capacità, come ad esempio nelle applicazioni di elaborazione di big data, i database NoSQL offrono modelli ad alta efficienza e scalabili, in grado di leggere ed elaborare enormi quantità di dati a grandissima velocità.
I database NoSQL abbandonano gli schemi rigidi dei sistemi SQL e puntano invece su modelli flessibili, particolarmente adatti a elaborare grandi quantità di dati. Poiché archiviano i dati su hardware cluster distribuiti, sono meno esposti a guasti e decisamente più economici rispetto all’installazione di un unico potente server, le cui capacità vengono puntualmente esaurite rendendo necessario passare a un sistema con capacità superiore.
Database SQL | Database NoSQL | |
---|---|---|
Tipologia | Un database per tutte le applicazioni | Diversi modelli di database, ad esempio database orientati ai documenti, database a grafo, database chiave-valore e database a colonne |
Archiviazione dei dati | I singoli dati (ad esempio “titolo del libro”) vengono archiviati in righe all’interno di una tabella e associati a determinati attributi (ad esempio “autore”, “anno di pubblicazione”, ecc.). I set di dati vengono archiviati in tabelle separate e riassemblati dal sistema in caso di query di ricerca complesse. | I database NoSQL non utilizzano tabelle, ma a seconda del tipo fanno ricorso a documenti completi, chiavi-valori, grafi o colonne. |
Schema | Il tipo e la struttura dei dati vengono definiti in anticipo. Per archiviare nuove informazioni è necessario modificare l’intero database (e, a questo scopo, passare alla modalità offline). | Flessibile. I nuovi set di dati possono essere aggiunti immediatamente. I dati strutturati, semi-strutturati e non strutturati possono essere archiviati insieme, non è necessaria alcuna conversione preliminare. |
Scalabilità | Scalabilità verticale. Un solo server deve assicurare le prestazioni dell’intero sistema di banca dati; questo determina un calo dell’efficienza in caso di grandi volumi di dati. | Scalabilità orizzontale. Ciascun amministratore può aggiungere nuovi commodity server e server cloud; il database NoSQL invia i dati automaticamente a tutti i server. |
Modello di sviluppo | Open source (ad esempio MySQL) oppure software a pagamento (Oracle Database) | Open source o software a pagamento |
Caratteristiche ACID: Atomicity, Consistency, Isolation, Durability | I database SQL offrono tutte le caratteristiche ACID. | Per poter mantenere la loro flessibilità e la scalabilità orizzontale, la maggior parte dei database NoSQL non supporta le transazioni ACID. Al loro posto viene utilizzato il modello BASE (Basically Available, Soft State, Eventually Consistant). Vale quindi il principio secondo cui la disponibilità è prioritaria rispetto alla coerenza. |
Prestazioni | In caso di elevato volume di dati, utilizzano degli indici. Per aumentare le prestazioni dei sistemi SQL, è necessario ottimizzare le query, gli indici e la struttura. | Poiché utilizzano server cloud e hardware cluster, i database NoSQL offrono prestazioni nettamente superiori. |
API | Le richieste di archiviazione e richiamo dei dati vengono trasmesse con SQL (Structured Query Language). | I dati vengono archiviati e richiamati attraverso API basate su oggetti. |
Cinque soluzioni NoSQL popolari: riepilogo
I database NoSQL sono nella maggior parte dei casi software open source liberamente disponibili per tutti gli utenti di internet. Questo semplifica enormemente l’accesso: gli utenti possono infatti scaricare gratuitamente numerose applicazioni NoSQL, imparare a utilizzarle e, in una prima fase, sfruttarle anche solo come integrazione al proprio database SQL. I seguenti database NoSQL sono ormai ampiamente affermati tra gli utenti:
Cassandra
Cassandra è un database NoSQL ottimizzato per l’archiviazione e l’elaborazione di grandi set di dati.
CouchDB
Il database orientato ai documenti CouchDB sfrutta un’API HTTP/JSON estremamente intuitiva e può essere utilizzato per qualunque ambito applicativo, dai big data alle applicazioni mobili e web.
Neo4j
Il database Neo4j permette di integrare i dati nel database a grafo NoSQL basato su cloud. Ciò offre innanzitutto la possibilità di rappresentare graficamente le relazioni tra i singoli set di dati e individuare dei modelli.
Redis
Il database chiave-valore Redis è un cosiddetto database in-memory: archivia i dati direttamente nella cache, raggiungendo così prestazioni ancora più elevate.
MongoDB
MongoDB è da anni uno dei database NoSQL più popolari. Il database, scritto nel linguaggio di programmazione C++, è orientato ai documenti e memorizza le informazioni in formato BSON (Binary JSON).
Con Managed MongoDB di IONOS, puoi contare su un database NoSQL che cresce con il tuo carico di lavoro. Scala le tue esigenze in modo flessibile e concentrati interamente sulla valutazione e sull’analisi dei tuoi dati.