Il termine NoSQL, abbreviazione di "non solo SQL", si riferisce ai database non relazionali che archiviano i dati in un formato non tabulare, anziché in tabelle relazionali basate su regole come i database relazionali. I database NoSQL utilizzano un modello di schema flessibile che supporta un'ampia varietà di dati non strutturati, come documenti, coppie chiave-valore, colonne larghe e grafici.
Le organizzazioni scelgono i database NoSQL per la flessibilità, le prestazioni elevate, la scalabilità orizzontale e la facilità di sviluppo che li caratterizzano.
Scopri come i database NoSQL di Google Cloud Bigtable, Memorystore e Firestore possono aiutarti a migliorare le applicazioni e a offrire customer experience eccellenti senza preoccuparti di scalabilità e affidabilità o modifiche frequenti ai dati.
Esistono cinque tipi principali di database NoSQL:
I database di documenti, detti anche database orientati ai documenti o archivi di documenti, vengono utilizzati per archiviare ed eseguire query su dati semistrutturati. I dati vengono archiviati in un documento di tipo JSON simile agli oggetti dati che gli sviluppatori utilizzano nel codice dell'applicazione, semplificando la creazione e l'aggiornamento delle applicazioni senza fare riferimento a uno schema primario. I database di documenti sono comunemente utilizzati per le piattaforme di blogging, l'e-commerce, l'analisi in tempo reale e i sistemi di gestione dei contenuti.
I database chiave-valore, chiamati anche archivi chiave-valore, sono il tipo più semplice di database NoSQL. I dati sono archiviati in una struttura "chiave-valore", in cui una chiave unica è abbinata a un valore, ad esempio una stringa, un numero, un valore booleano o oggetti complessi. Puoi utilizzare la chiave per archiviare o recuperare il valore associato. Gli archivi chiave-valore vengono usati principalmente per le preferenze dell'utente, i carrelli degli acquisti e i profili utente nelle applicazioni web.
I database orientati alle colonne o a colonne larghe archiviano i dati in righe e sono organizzati come un insieme di colonne. Sebbene simili al formato tabulare dei database relazionali, i nomi e la formattazione delle colonne negli archivi a colonne larghe possono variare da riga a riga in una singola tabella. Sono ottimali per i casi d'uso di analisi, in cui potrebbe essere necessario eseguire query su colonne specifiche di un database e aggregare rapidamente il valore di una determinata colonna. Gli archivi a colonne larghe sono comunemente utilizzati per cataloghi, rilevamento di frodi e motori per suggerimenti.
I database a grafo organizzano i dati come nodi in un grafico, concentrandosi sulle relazioni tra gli elementi di dati. Le connessioni tra i nodi (perimetrali) vengono archiviate come elementi di prima classe, consentendo una rappresentazione più completa delle relazioni tra i dati e offrendo al contempo archiviazione e navigazione semplificate. I database a grafo sono più comunemente utilizzati nei sistemi che mappano le relazioni, tra cui le piattaforme di social media, i sistemi di prenotazione, i sistemi di rilevamento delle frodi e le applicazioni di logistica.
I database in memoria archiviano i dati in memoria per fornire latenza molto bassa per le applicazioni in tempo reale. Redis e Valkey sono esempi di database NoSQL in memoria. I database in memoria sono più comunemente utilizzati per la memorizzazione nella cache, la messaggistica, lo streaming e l'analisi in tempo reale.
Le funzionalità NoSQL sono specifiche per il database che scegli. Tuttavia, in genere condividono numerose qualità di alto livello simili:
Queste caratteristiche rendono i database non relazionali ideali per applicazioni che richiedono grande scalabilità, affidabilità, alta disponibilità e modifiche frequenti ai dati.
Schema e modello dei dati flessibili
I database NoSQL archiviano molti tipi diversi di dati e offrono schemi flessibili, ideali per dati semistrutturati e non strutturati. Puoi adattarli facilmente a nuovi tipi di dati ed evolvere lo schema per soddisfare i requisiti dei dati in continua evoluzione.
Sviluppo agile
La flessibilità di NoSQL completa lo sviluppo agile delle app. Un database NoSQL può archiviare molti tipi di dati nel loro formato nativo e consente di definire e adattare il modello dei dati in base alle esigenze, in modo che gli sviluppatori possano iniziare a lavorare velocemente, dedicare meno tempo alla trasformazione dei dati ed eseguire l'iterazione in tempi rapidi.
Scalabilità
A differenza dei database relazionali, i database NoSQL semplificano l'aumento della capacità man mano che i dati e il traffico cresce, nella maggior parte dei casi senza tempi di inattività. I database basati su cloud sono ancora più facili da scalare on demand, offrendo funzionalità di scalabilità automatica e modelli di prezzo flessibili.
Archiviazione dei dati di grandi dimensioni
NoSQL è progettato per gestire set di dati complessi e di grandi dimensioni, consentendo alle organizzazioni di utilizzarli per big data, analisi in tempo reale e casi d'uso IoT.
Alta disponibilità
Le architetture di dati NoSQL sono distribuite per definizione e non hanno single point of failure. Inoltre, offrono una replica semplice, rendendole più resistenti a interruzioni, anche non pianificate.
Query più rapide
A differenza dei database relazionali, normalizzati per ridurre la duplicazione dei dati, NoSQL è ottimizzato per l'esecuzione rapida di query. In genere non richiede join complessi, il che significa che le query del database restituiscono i risultati più rapidamente.
Sebbene i database NoSQL abbiano acquisito un'enorme popolarità negli ultimi anni, il loro utilizzo comporta alcuni svantaggi rispetto ai database relazionali. Sono ancora relativamente nuovi e potrebbero non avere la maturità dei database relazionali. Nel complesso, NoSQL ha meno competenze di sviluppo, meno strumenti e prodotti disponibili e meno assistenza in caso di problemi non documentati.
Inoltre, NoSQL non ha una lingua franca come SQL: ogni database può avere il proprio linguaggio per eseguire query e gestire i dati. Questi linguaggi sono spesso simili, ma non completamente compatibili con lo standard SQL.
In molti casi, i database NoSQL non dispongono delle salvaguardie per l'integrità dei dati e dell'elevato livello di coerenza dei dati standard nei database SQL. Tuttavia, alcuni, come Firestore e MongoDB Atlas, supportano le transazioni ACID.
I database NoSQL di solito non sono una buona scelta per le applicazioni che eseguono query e join complessi. La gestione di indici e query su più nodi sarebbe lenta e potrebbe non restituire risultati coerenti.
Tuttavia, i modelli di coerenza finali sono sufficienti per la maggior parte dei casi d'uso NoSQL, dove un piccolo ritardo di un millisecondo non è importante. Per molte applicazioni, l'alta disponibilità e la velocità superano di gran lunga la necessità di un'elevata coerenza globale.
Allora perché le organizzazioni usano database NoSQL non relazionali per alcune applicazioni ma continuano a utilizzare database SQL relazionali per altre? La scelta del database giusto spesso dipende dal caso d'uso. Ecco quando utilizzare SQL rispetto a NoSQL.
I database SQL sono ottimi nella gestione di dati strutturati e relazionali e query complesse. I database SQL sono compatibili con ACID, il che li rende adatti per le informazioni transazionali.
Casi d'uso di SQL:
I database NoSQL sono ottimi nei casi d'uso che richiedono un numero elevato di utenti distribuiti a livello globale per offrire esperienze altamente personalizzate. Queste applicazioni interattive vengono gestite al meglio con l'agilità dei database NoSQL.
I database NoSQL danno priorità all'alta disponibilità, offrono prestazioni coerenti, fanno lo scale out rapidamente senza tempi di inattività e sono in grado di gestire grandi volumi di diversi tipi di dati.
Queste funzionalità dei database NoSQL rendono i database non relazionali ideali per le applicazioni che richiedono scalabilità, affidabilità e disponibilità elevata su larga scala.
Gli utilizzi più comuni di NoSQL includono:
Inizia a creare su Google Cloud con 300 $ di crediti gratuiti e oltre 20 prodotti Always Free.