Sobes.tech
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).