I database relazionali eccellono con dati strutturati e transazioni complesse, ma mostrano limiti in alcuni scenari:
“NoSQL” sta per “Not Only SQL”: non è un rifiuto di SQL, ma un modello alternativo per situazioni in cui il modello relazionale non è la scelta migliore. Le caratteristiche comuni dei NoSQL sono:
| Tipo | Struttura | Esempi | Caso d’uso ideale |
|---|---|---|---|
| A documento | Documenti JSON/BSON annidati | MongoDB, CouchDB | Cataloghi, CMS, profili utente |
| Chiave-Valore | Coppie chiave → valore | Redis, DynamoDB | Cache, sessioni, configurazioni |
| Colonnare | Famiglie di colonne | Cassandra, HBase | Log, time-series, analisi Big Data |
| A grafo | Nodi e archi con proprietà | Neo4j, ArangoDB | Social network, sistemi di raccomandazione |
| Criterio | Scegli SQL | Scegli NoSQL |
|---|---|---|
| Struttura dei dati | Fissa e ben definita | Variabile o non prevedibile |
| Relazioni | Molte e complesse | Poche o gestibili tramite embedding |
| Transazioni | Critiche (es. pagamenti, banche) | Non critiche |
| Scalabilità | Verticale (un server potente) | Orizzontale (molti server) |
| Volume | Da medio a grande | Molto grande (Big Data) |
| Velocità sviluppo | Schema rigido richiede pianificazione | Schema flessibile, si può partire subito |