
NoSQL Database. Cosa sono i database NoSQL?
NoSQL è un approccio alla gestione del database che può ospitare un’ampia varietà di modelli di dati, inclusi i formati chiave-valore, documento, colonnare e grafico. Un database NoSQL generalmente significa che è non relazionale, distribuito, flessibile e scalabile. Ulteriori funzionalità comuni del database NoSQL includono la mancanza di uno schema di database, il clustering dei dati, il supporto della replica e l’eventuale coerenza, in contrasto con la tipica coerenza delle transazioni ACID (atomicità, coerenza, isolamento e durabilità) dei database relazionali e SQL. Molti sistemi di database NoSQL sono anche open source.
Il termine NoSQL originariamente poteva essere preso alla lettera, ovvero SQL non veniva utilizzato come API per accedere ai dati. Tuttavia, l’ubiquità e l’utilità di SQL hanno fatto sì che molti database NoSQL aggiungessero il supporto per SQL. Oggi è comunemente accettato che NoSQL stia per “Not Only SQL”.
Quali sono i tipi di database NoSQL?
Esistono quattro tipi popolari di sistemi di database NoSQL. Ciascuno utilizza un diverso tipo di modello di dati, con conseguenti differenze significative tra ciascun tipo NoSQL.
Database di documenti. Chiamati anche archivi di documenti, questi database memorizzano dati semi-strutturati e descrizioni di tali dati in formato documento. Consentono agli sviluppatori di creare e aggiornare i programmi senza dover fare riferimento allo schema principale. L’uso di database di documenti è aumentato insieme all’uso di JavaScript e JavaScript Object Notation (JSON), un formato di interscambio di dati che ha guadagnato ampia popolarità tra gli sviluppatori di applicazioni web. I database di documenti vengono utilizzati per la gestione dei contenuti e la gestione dei dati delle applicazioni mobili, come piattaforme di blog, analisi web e applicazioni di e-commerce. Couchbase Server, CouchDB, MarkLogic e MongoDB sono esempi di database di documenti.
Database a grafo. I data store a grafo organizzano i dati come nodi, che sono simili alle righe in un database relazionale, e spigoli, che rappresentano le connessioni tra i nodi. Poiché il sistema grafico memorizza la relazione tra i nodi, può supportare rappresentazioni più ricche delle relazioni dei dati. Inoltre, a differenza dei modelli relazionali che si basano su schemi rigorosi, il modello di dati grafico può evolversi nel tempo e nell’uso. I database a grafo vengono applicati in sistemi che devono mappare le relazioni, come piattaforme di social media, sistemi di prenotazione o gestione delle relazioni con i clienti. Esempi di database a grafo includono AllegroGraph, IBM Graph e Neo4j.
Key-value store. Conosciuti anche come database key-value, questi sistemi implementano un semplice modello di dati che accoppia una chiave univoca con un valore associato. Poiché questo modello è semplice, può essere utilizzato per sviluppare applicazioni altamente scalabili e performanti. I database key-value sono ideali per la gestione delle sessioni e la memorizzazione nella cache nelle applicazioni Web, come quelle necessarie per la gestione dei dettagli del carrello degli acquisti per gli acquirenti online o per la gestione dei dettagli della sessione per i giochi multiplayer. Le implementazioni differiscono nel modo in cui sono orientate a lavorare con RAM, unità a stato solido o unità disco. Esempi di popolari database chiave-valore includono Aerospike, DynamoDB, Redis e Riak.
Wide-column store. Questi database utilizzano tabelle, colonne e righe familiari come le tabelle di database relazionali, ma i nomi delle colonne e la formattazione possono differire da riga a riga in una singola tabella. Ogni colonna è anche memorizzata separatamente su disco. A differenza della tradizionale archiviazione orientata alle righe, un archivio a colonne larghe è ottimale quando si eseguono query sui dati per colonne. Le applicazioni tipiche in cui i negozi a colonne larghe possono eccellere includono motori di raccomandazione, cataloghi, rilevamento di frodi e registrazione di eventi. Accumulo, Amazon SimpleDB, Cassandra, HBase e Hypertable sono esempi di wide-column store.
Queste classificazioni di database NoSQL di base sono solo guide. Nel corso del tempo, i fornitori hanno mescolato e abbinato elementi di diverse famiglie di database NoSQL per ottenere sistemi più generalmente utili. Tale evoluzione è visibile, ad esempio, in MarkLogic, che ha aggiunto un archivio grafico e altri elementi ai suoi database di documenti originali. Couchbase Server supporta sia approcci key-value che documenti. Cassandra ha combinato elementi key-value con un archivio a wide-column e un database grafico. A volte gli elementi NoSQL sono mescolati con elementi SQL, creando una varietà di database che vengono definiti database multimodello.
Vantaggi di NoSQL
Ci sono diversi vantaggi nell’usare i database NoSQL, tra cui:
- I database NoSQL semplificano lo sviluppo delle applicazioni, in particolare per le applicazioni Web interattive in tempo reale, come quelle che utilizzano un’API REST e servizi Web.
- Questi database forniscono flessibilità per i dati che non sono stati normalizzati, che richiedono un modello di dati flessibile o hanno proprietà diverse per entità di dati diverse.
- Offrono scalabilità per set di dati più grandi, che sono comuni nelle applicazioni di analisi e intelligenza artificiale (AI).
- I database NoSQL sono più adatti per i requisiti di cloud, dispositivi mobili, social media e big data.
- Sono progettati per casi d’uso specifici e sono più facili da usare rispetto ai database relazionali o SQL generici per questi tipi di applicazioni.
Svantaggi di NoSQL
Gli svantaggi dell’utilizzo di un database NoSQL includono quanto segue:
- Ogni database NoSQL ha la propria sintassi per l’interrogazione e la gestione dei dati. Ciò è in contrasto con SQL, che è la lingua franca per i sistemi di database relazionali e SQL.
- La mancanza di uno schema di database rigido e di vincoli rimuove le salvaguardie di integrità dei dati integrate nei sistemi di database relazionali e SQL.
- Per utilizzare i dati è necessario uno schema con una sorta di struttura. Con NoSQL, questo deve essere eseguito dallo sviluppatore dell’applicazione anziché dall’amministratore del database.
- Poiché la maggior parte dei database NoSQL utilizza il modello di coerenza finale, non fornisce lo stesso livello di coerenza dei dati dei database SQL. A volte i dati non saranno coerenti, il che significa che non sono adatti per transazioni che richiedono un’integrità immediata, come transazioni bancarie e bancomat.
- Poiché i database NoSQL sono più recenti, non esistono standard di settore completi come per le offerte DBMS relazionali e SQL.
NoSQL vs. SQL: qual è la differenza?
Ad alto livello, i database SQL sono generici, mentre i database NoSQL sono progettati per casi d’uso specifici. Le principali differenze tra NoSQL e SQL possono essere riassunte nelle seguenti cinque categorie: API, modello di dati, requisiti dello schema, scalabilità e integrità dei dati. Ognuno implementa un approccio diverso a questi aspetti dell’archiviazione e del recupero dei dati.
API. Per NoSQL, SQL non è richiesto come API per i dati nel database, sebbene molti database NoSQL offrano un linguaggio di query simile a SQL. Per i database SQL, SQL è in genere l’unica o predominante interfaccia ai dati.
Modello dati. Con i sistemi di database NoSQL, i dati non sono modellati come tabelle con righe e colonne fisse, come con un DBMS SQL. Invece, a seconda del database NoSQL, i dati possono essere modellati come documenti JSON, grafici con nodi e bordi o coppie key-value. I wide-column store utilizzano il concetto di tabella e riga, ma le colonne possono essere dinamiche da riga a riga all’interno di una tabella.
Schema. Lo schema per un database NoSQL è flessibile, il che significa che non esiste una struttura fissa per i dati, i tipi di dati e le lunghezze degli elementi dei dati. I dati possono essere archiviati in forma libera o senza schema. Questo approccio offre ai programmatori un grado più elevato di flessibilità, che può facilitare gli sforzi di sviluppo.
Con SQL, lo schema dei database è fisso, con tipi e lunghezze di dati rigidi per ogni colonna e ogni riga deve corrispondere al layout e alla struttura della colonna definiti. Ad esempio, se una colonna è definita come numero intero, nella colonna possono essere archiviati solo dati interi e qualsiasi tentativo di fare diversamente viene rifiutato dal DBMS. Questo approccio offre una migliore qualità dei dati perché il DBMS applica le regole man mano che i dati vengono aggiunti.
Scalabilità. I database NoSQL in genere implementano il ridimensionamento orizzontale, noto anche come ridimensionamento. La scalabilità orizzontale implica l’aggiunta di più hardware a un sistema, in genere sotto forma di nuovi server di base. Il partizionamento orizzontale che utilizza lo sharding per suddividere database di grandi dimensioni in parti più piccole distribuite su più server è spesso utilizzato nei sistemi NoSQL.
L’approccio SQL in genere è il ridimensionamento verticale, noto anche come ridimensionamento. Con il ridimensionamento verticale, vengono aggiunte risorse aggiuntive, come una CPU più potente o memoria aggiuntiva, per gestire carichi di lavoro aggiuntivi o migliorare le prestazioni.
Integrità dei dati. I database NoSQL e SQL utilizzano approcci diversi per proteggere l’integrità dei dati mentre vengono creati, letti, aggiornati ed eliminati da applicazioni e utenti.
La maggior parte dei sistemi di database NoSQL gestisce l’integrità dei dati con un approccio noto come BASE (Basically Available, Soft State with Evental Consistency). Utilizzando BASE, i dati possono essere incoerenti per un periodo di tempo, ma la replica del database alla fine aggiorna tutte le copie dei dati per renderle coerenti. Alcune applicazioni possono tollerare questo tipo di dati incoerenti, mentre altre no.
L’approccio utilizzato dai database SQL è il già citato ACID. Ciascuna delle sue quattro qualità (atomicità, consistenza, isolamento e durabilità) contribuisce alla capacità di una transazione di garantire l’integrità dei dati. Utilizzando ACID, ogni transazione, se eseguita da sola, in uno stato di database coerente, verrà completata, producendo risultati corretti o terminata senza alcun effetto. In entrambi i casi, la condizione risultante del database sarà sempre uno stato consistente.
Evoluzione di NoSQL
I sistemi di database SQL e relazionali sono pervasivi perché forniscono un buon meccanismo generico per supportare la maggior parte dei requisiti di gestione dei dati. Sono progettati per essere affidabili, accurati e utili per applicazioni pianificate e query ad hoc. Tuttavia, alcuni requisiti SQL e relazionali, ad esempio schema rigido e ACID rigoroso, possono renderli meno adatti per applicazioni che richiedono dati flessibili e alta velocità.
Come reazione, sono nati i sistemi di database NoSQL per soddisfare queste esigenze, molti sviluppati da aziende come Amazon con il suo DynamoDB, Facebook e il suo Apache Cassandra e Google con il suo database BigTable per soddisfare le loro esigenze specifiche. Un altro dei primi influenti sistemi di database NoSQL è Berkeley DB, sviluppato presso l’Università della California, Berkeley, a partire dagli anni ’90, Berkeley DB è stato ampiamente descritto come un database incorporato che supportava da vicino le esigenze di archiviazione di applicazioni specifiche. Questo software open source ha fornito un semplice archivio key-value. Berkeley DB è stato rilasciato commercialmente da Sleepycat Software nel 1999. La società è stata successivamente acquisita da Oracle nel 2006. Oracle ha continuato a supportare l’open source Berkeley DB.
Il termine NoSQL può essere applicato ad alcuni database che hanno preceduto il sistema di gestione dei database relazionali (RDBMS), ma più comunemente si riferisce ai database creati nei primi anni 2000 allo scopo di clustering di database su larga scala in applicazioni cloud e web
(fonte)
Per altri articoli di settore potete esplorare la sezione BLOG con questo LINK.
Innovaformazione, scuola informatica specialistica promuove la cultura IT e dei database NoSQL. Nell’offerta formativa rivolta alle aziende troviamo:
INFO: info@innovaformazione.net / tel. 3471012275 (Dario Carrassi)
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati

Arriva Java 25

Cosa è Salesforce Marketing Cloud

Cosa è SAP S/4 HANA e differenze con SAP ECC

Visual Studio 2026

Albania AI diventa Ministro
