Cosa sapere per scegliere un database relazionale o non relazionale per un sito web

Cosa sapere per scegliere un database relazionale o non relazionale per un sito web

Nel caso la realizzazione di un sito web richieda la completa customizzazione di tutti i suoi componenti, diventa spesso cruciale scegliere la tipologia di database: relazionale o non relazionale. Con il termine database relazionale intendiamo un database dove i dati sono organizzati logicamente in delle strutture dati tanto semplici quanto efficaci: le tabelle. Tale semplicità e immediatezza è stata forse una delle chiavi del successo che questa tipologia di database ha avuto nel corso degli anni. Le prime bozze di database relazionali risalgono infatti agli anni settanta, con gli importantissimi lavori prima di Edgar F. Codd e in seguito di Eugene Wong e Michael Stonebraker. Ancora oggi rappresentano uno dei capisaldi di un’ampissima parte delle architetture informatiche moderne.

Tuttavia negli ultimi anni si stanno facendo spazio nuove tipologie di database che nascono principalmente da due esigenze:

  • il dover ridurre il tempo necessario per implementare e rendere attive delle modifiche a quanto sviluppato originariamente. Nel mondo attuale, infatti le esigenze di business cambiano da un giorno all’altro e diventa dunque fondamentale che i sistemi informatici possano mutare con la stessa velocità.

Cos’è un database non relazionale e quali sono le sue caratteristiche

I database non relazionali sono quei database in cui i dati sono organizzati in una struttura logica differente dalla tabella. Viene naturale dalla definizione che esistano varie tipologie di database non relazionali, ognuna associata alla particolare struttura dati scelta. Due tra i modi più utilizzati per organizzare i dati sono:

  • i database a grafo, di cui tra i più famosi ricordiamo Neo4J (https://neo4j.com/). In questi database i dati sono rappresenti come grafi fatti di nodi e archi. Tra due nodi è presente un arco se c’è una relazione tra essi. Questa tipologia di database si presta molto bene a rappresentare i dati dei social network. I nodi ad esempio sono gli utenti e le pagine, tra due nodi c’è un arco se un utente segue una pagina o se due utenti sono amici;
  • i database a documento per i quali nominiamo MongoDb (https://www.mongodb.com/it). In questi database troviamo i dati salvati in documenti in formato JSON. Il JSON è un formato di rappresentazione dei dati estremamente veloce, flessibile e di facile comprensione. Nella figura in basso trovate un esempio di documento JSON.

La figura precedente non è stata scelta a caso, mostra come tutte le informazioni necessarie per popolare una pagina web siano presenti in un unico documento. Di conseguenza le performance saranno elevatissime, anche se confrontate con un classico approccio relazionale dove i dati sarebbero divisi in più tabelle (una per l’autore, una per i commenti, una per i tag e così via).

Caratteristiche dei database relazionali

Oltre al concetto più volte ribadito della tabella, i database relazionali sono caratterizzati dal fatto che sono fortemente “tipizzati” e “vincolanti”. Tutti i record all’interno di una tabella devono contenere lo stesso numero di colonne e ogni colonna sarà associata ad un determinato tipo (stringa, numero, data, immagine, eccetera). Tra le tabelle sono presenti delle relazioni che impediscono la presenza di dati duplicati o non consistenti. Inoltre sono presenti meccanismi che impediscono aggiornamenti solo parziali dei database in caso di errori imprevisti.

Questa possibilità di vincolare le informazioni inserite nei database relazionali è in moltissimi progetti un punto di forza irrinunciabile dei database relazionali. Garantiscono infatti che la qualità dei dati salvati sia costantemente alta. Tuttavia in alcuni casi la presenza di questi vincoli e la necessità di dividere i dati in più tabelle piuttosto che averli in un solo documento, potrebbero rappresentare uno svantaggio in termini di performance e flessibilità. Diventa dunque compito dello sviluppatore informatico scegliere quale tipologia di database è più idonea al progetto o al sito web che andrà a realizzare, in base a quelle che sono le sue esigenze in termini di performance, flessibilità e qualità dei dati. In questo sito https://www.yimp.it sono presenti corsi e materiale divulgativo sui database relazionali e non relazionali e sui rispettivi linguaggi di programmazione SQL e NOSQL.