Il termine NoSQL, abbreviazione di "non solo SQL", si riferisce ai database non relazionali che utilizzano un formato non tabulare per archiviare i dati, anziché all'interno di 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, grafici e altro ancora.
Le organizzazioni scelgono i database NoSQL per la loro flessibilità, scalabilità orizzontale e facilità di sviluppo.
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 più comunemente utilizzati per piattaforme di blogging, applicazioni di e-commerce e analisi in tempo reale e sistemi CMS.
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 univoca è accoppiata a un valore, ad esempio stringhe, numeri, booleani, oggetti complessi e altro ancora. È possibile scrivere o eseguire query sui dati usando la chiave, utilizzata 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, concentrandosi sulle relazioni tra gli elementi di dati. Queste connessioni tra i nodi, chiamate 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 e le applicazioni di logistica.
I database in memoria archiviano i dati in memoria, senza fornire latenza per le applicazioni in tempo reale. Redis è un esempio 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.
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.
La flessibilità di NoSQL completa lo sviluppo agile delle app. I database NoSQL possono archiviare molti tipi di dati nel loro formato nativo e consentono 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.
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 in base alla domanda, offrendo funzionalità di scalabilità automatica e modelli di prezzo flessibili.
NoSQL è progettato per gestire set di dati complessi e di grandi dimensioni, consentendo alle organizzazioni di adottare e scalare big data, analisi in tempo reale e casi d'uso IoT.
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.
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 sistemi di dati 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.
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, supportano le transazioni ACID.
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 o 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 conformi ad ACID, il che li rende affidabili 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 inoltre 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.