NoSQL database

I database NoSQL sono un'alternativa ai database SQL particolarmente utilizzata per le applicazioni web.

Caratteristiche:

  • non hanno uno schema che definisce la struttura del database
  • alcuni dati sono ripetuti in diverse parti del database per migliorare le performance di lettura (a scapito di quelle di scrittura e spazio utilizzato)
  • hanno una struttura ad albero e non a tabelle
  • non esistono chiavi primarie esplicite, ma solo per convenzione dello sviluppatore
  • non si interrogano con SQL, ma con altri metodi, tipicamente Restful (vedi dopo)

Vantaggi:

  • più semplice modificare i campi dei database, utile se i requisiti cambiano continuamente
  • può scalare orizzontalmente, ovvero può essere distribuito facilmente su più computer

Svantaggi:

  • la lettura dei campi deve essere molto difensiva perché non si hanno certezze sulla struttura dei dati ricevuti

Video di confronto

E' caldamente consigliato vedere questo video fino al minuto 9:45 per avere un chiaro confronto tra database SQL e NoSQL. Il video è in inglese con sottotitoli in inglese, ma è di facile comprensione.

Link utili

  • REST, una filosofia di scrittura delle API per la quale al centro di tutto c'è la risorsa che viene manipolata attraverso vari metodi. Molto spesso associata all'HTTP. Con REST si possono effettuare le operazioni CRUD per un database, in questo link potete vedere una tabella di confronto tra NoSQL e SQL.
  • Guida di Firebase su come strutturare i dati, rende molto bene operativamente cosa significa programmare per un database NoSQL
  • Pagina di confronto tra SQL e NoSQL.

Frameworks

Quando si vogliono gestire funzionalità complesse come sincronizzazione dello stato locale della pagina con il database remoto, lavoro offline, etc., può essere molto utile usare un framework che permetta di gestire queste cose in modo più semplice.

Attualmente (giugno 2019) tra i framework più usati ci sono:

  • Angular, mantenuto da Google, usa TypeScript
  • React, mantenuto da Facebook (per l'esattezza è una libreria) e utilizza i concetti di stateful, properties e Virtual DOM
  • Flutter, anche questo mantenuto da Google, è l'ultimo nato ma sta riscuotendo un enorme successo. Basato sul linguaggio Dart.