Junior
Cosa sono i database NoSQL?
sobes.tech AI
Risposta dell'AI
NoSQL (Not Only SQL) è una classe di sistemi di gestione di database non relazionali che utilizzano strutture diverse dalle tabelle tradizionali con schema fisso. Sono progettati per lavorare con grandi volumi di dati non strutturati, semi-strutturati e polistrutturati, offrendo scalabilità flessibile e alta disponibilità.
Categorie principali di database NoSQL:
- "Chiave-valore" (Key-Value Stores): Memorizzano i dati in coppie chiave-valore, dove la chiave identifica in modo univoco il valore.
# Esempio di rappresentazione dei dati in un key-value store user_data = { "user:123": {"name": "Alice", "age": 30}, "product:456": {"name": "Laptop", "price": 1200} } - "Colonnari" (Columnar Databases): Memorizzano i dati per colonne, non per righe. Ottimizzati per query analitiche e elaborazione di grandi volumi di dati.
- "Documentali" (Document Databases): Memorizzano i dati sotto forma di documenti (ad esempio, JSON, BSON, XML). Lo schema dei dati è flessibile.
// Esempio di documento in un database documentale { "_id": "prod_abc", "name": "Smartphone", "brand": "XYZ", "specs": { "display": "6.5 inch", "camera": "48MP" }, "tags": ["elettronica", "mobile"] } - "Grafici" (Graph Databases): Progettati per memorizzare e elaborare dati rappresentati sotto forma di vertici (nodi) e archi (relazioni). Utilizzati per analizzare le relazioni.
Differenze rispetto ai database relazionali (SQL):
| Caratteristica | Relazionale (SQL) | NoSQL |
|---|---|---|
| Schema dei dati | Fisso, rigido | Flessibile, dinamico |
| Scalabilità | Verticale (aumentare la potenza del server) | Orizzontale (aggiunta di server) |
| Normalizzazione | Alta (riduzione ridondanza) | Bassa (duplicazione dei dati per le prestazioni) |
| Transazioni ACID | Solitamente supporto completo | Supporto variabile (a volte BASE) |
| Linguaggio di query | SQL | Varia (spesso API, linguaggi specifici) |
I database NoSQL vengono scelti per scenari che richiedono alta scalabilità, flessibilità dello schema, elaborazione rapida di grandi volumi di dati (Big Data), lavoro con dati semi-strutturati/non strutturati o modelli di dati specifici (ad esempio, grafi).