I database NoSQL rinunciano deliberatamente alla struttura a tabelle fissa e condivisa del modello relazionale, e in cambio ottengono un modello di dati scelto specificamente per adattarsi a un particolare tipo di problema. I database a documenti memorizzano ogni record come un documento flessibile e autonomo, i database chiave-valore recuperano i dati usando esclusivamente una singola chiave di ricerca, e i database a grafo rappresentano le relazioni tra i record come la cosa principale effettivamente memorizzata, invece di trattare quelle relazioni come un ripensamento aggiunto sopra tabelle separate.
Uno schema fisso e condiviso diventa un vincolo reale per dati irregolari o per semplici ricerche
Lo schema fisso a tabelle di un database relazionale richiede che ogni record dello stesso tipo condivida esattamente la stessa struttura, il che diventa un vincolo reale e pratico quando i dati sono naturalmente irregolari, un catalogo prodotti in cui tipi di prodotto diversi hanno davvero attributi diversi, per esempio, oppure quando l'obiettivo principale di un'applicazione è una ricerca estremamente veloce e semplice invece di query relazionali complesse che coinvolgono molte tabelle separate contemporaneamente.
Esistono tre modelli NoSQL genuinamente diversi perché risolvono tre problemi genuinamente diversi
I database a documenti si adattano bene a record irregolari e autonomi, memorizzando ciascuno come un documento flessibile senza costringere ogni record in una forma condivisa identica. I database chiave-valore si adattano a ricerche estremamente veloci e semplici, come una cache di sessione, dove non serve mai nulla di più complesso che recuperare un valore tramite una chiave esatta. I database a grafo si adattano a dati in cui sono le relazioni tra i record, non solo i record in sé, a dover essere effettivamente interrogate in modo efficiente, e le connessioni di un social network ne sono l'esempio comune più chiaro.
Quello di cui non siamo ancora sicuri
Che i database NoSQL scambino la struttura condivisa del modello relazionale con un modello adatto a un problema specifico è ingegneria dei database ben consolidata e non controversa. Ciò che resta invece un compromesso ingegneristico genuinamente vivo e attivamente dibattuto è scegliere il modello NoSQL giusto, o scegliere invece un database relazionale, per una data applicazione reale, dato che un database a documenti può finire per avere bisogno di join in stile relazionale reimplementati goffamente nel codice applicativo man mano che i dati di un'applicazione diventano genuinamente più interconnessi nel tempo, e prevedere in anticipo se questo accadrà per una nuova applicazione specifica resta una scelta di giudizio reale e imperfetta, non qualcosa che una regola fissa può stabilire.
Questo argomento fa parte di Modelli NoSQL (Documenti, Chiave-Valore, Grafo), uno dei sette argomenti di Database, uno dei sette ambiti di Informatica, una delle diciassette materie su cui l'app può interrogarti.