Cos'è un database relazionale?


È un database che archivia e fornisce accesso a data point correlati tra loro e messi in relazione gli uni con gli altri tramite tabelle: si parla quindi di modello relazionale.

relational_databases_hero

Definizione di database relazionale

Il sistema per la gestione di database relazionali (RDBMS) costituisce il modello dominante del mercato odierno. Grazie a questo tipo di database, numerosi servizi Web e applicazioni aziendali sono in grado di funzionare e possono strutturare ed estrarre informazioni essenziali dai propri dati. Alcune grandi aziende Cloud hanno sviluppato i propri modelli (ad esempio Db2 di IBM, Oracle Database e Microsoft SQL Server), ma molti progetti RDBMS sono open source:

  • MySQL, il sistema più utilizzato al mondo. Acquistato da Oracle nel 2009, è nato come progetto gratuito e di libero utilizzo. In risposta a questa acquisizione, alcuni sviluppatori hanno creato il suo successore, sempre open source: MariaDB.
  • PostgreSQL, altra soluzione in accesso libero la cui evoluzione è assicurata da un team di sviluppatori indipendenti. Essendo un modello relazionale a oggetti (ORDBMS), il suo funzionamento differisce leggermente da MySQL.
  • SQLite, libreria pubblica con la particolarità di essere ospitata direttamente in un programma invece che in modalità client-server.

L'acronimo SQL corrisponde al nome dello stesso linguaggio: Structured Query Language. Costituisce l'interfaccia standard per un database relazionale e le sue istruzioni sono utilizzate per strutturare i dati e organizzare le informazioni da estrarre.

Architettura dei database relazionali

L'organizzazione di questi database si basa sul teorema dimostrato da Edgar F. Codd nel 1971: il modello relazionale. Questa teoria stabilisce che qualsiasi richiesta "naturale" può tradursi in algebra relazionale e quindi in un linguaggio di query intelligibile da un computer (tramite l'SQL). In questo modello, una relazione (o tabella) è costituita da diversi attributi organizzati in più righe e colonne, chiamate tuple. L'intera tabella è vista come un insieme di tuple. Prendiamo questo esempio:

schema_relational_databases

Ogni elemento della relazione è associato a un tipo di dati (valore) da uno schema di relazione come segue:

Relazione = (Attributo1: Tipo1, Attributo2: Tipo2 , ... , Attributon: Tipon)

In questo modo è possibile definire un elemento preciso e assegnargli i dati del valore di una tupla per creare la tabella. Un database relazionale consiste quindi in una serie di tabelle messe in relazione tra loro.

Come funziona un database relazionale?

Per amministrare i propri database, gli utenti comunicano con l'interfaccia di gestione utilizzando il linguaggio SQL, basato sull’algebra relazionale. Tutti i comandi sono esplicitati in SQL e descrivono dettagliatamente ogni fase di sviluppo del database. Questo linguaggio permette di selezionare informazioni specifiche, indicarne la posizione nel database, farle interagire, etc.

È però necessario ricordare alcune specificità.

Chiavi

Consistono in un insieme di attributi che permettono di identificare un gruppo preciso di dati. Ad esempio, in riferimento alla tabella precedente: A1 + A2 può definire i clienti che hanno acquistato una nuova automobile nel secondo semestre, dove A1 definisce l’acquisto del veicolo e A2 il periodo di acquisto. Nessuno degli attributi selezionati può avere valore nullo perché in questo caso l’insieme non esisterebbe realmente. Ogni tabella possiede una chiave primaria che può essere esportata verso un'altra tabella (come chiave esterna) per collegare insiemi di dati.

Se due tabelle sono collegate da chiavi esterne, possono rispondere a una sola richiesta. Per poter determinare informazioni che coinvolgono più tabelle, è necessario utilizzare una funzione JOIN.

JOIN

Consiste in un’operazione che consente di interrogare contemporaneamente più tabelle. I dati selezionati sono assemblati e filtrati in base alle condizioni definite dall’utente.

La funzione SQL JOIN rappresenta un elemento fondamentale nei database multitabella per poter generare informazioni utilizzabili e qualitative.

Esistono tre tipi di JOIN principali:

  • INNER JOIN
  • OUTER JOIN
  • SELF JOIN

Raramente le tabelle di dati vengono esaminate separatamente. In genere si è interessati a un insieme di dati con un significato preciso, distribuiti in diverse tabelle e, proprio per questo, le informazioni devono essere preventivamente normalizzate.

Normalizzazione

Interrogare contemporaneamente più tabelle implica logicamente l’invio di più richieste per l’estrazione dei dati necessari. Una simile operazione richiede però molto tempo, è poco pratica e può creare doppioni, con effetti negativi sul trattamento dei dati.

È qui che entra in gioco la normalizzazione: elaborare le informazioni per relazioni interrogando gli insiemi di dati associati dalle chiavi esterne permette di effettuare una sola richiesta.

Differenziazione rispetto ad altri modelli di database

Non tutti i database si basano su questo modello di tabelle. Possono ispirarsi a questo schema, ma possiedono specificità proprie. Negli anni '80, l’affermazione del modello "orientato agli oggetti" reinventa il modo in cui sono archiviate le informazioni. Negli anni 2000 compare il modello "NoSQL", che rimette in discussione il modello relazionale con l'obiettivo di sviluppare database più pratici per analisi avanzate come il Big Data. Ognuno di questi modelli possiede le proprie caratteristiche peculiari e i propri vantaggi.

Database orientati agli oggetti

Questo tipo di database permette l'archiviazione dei dati sotto forma di oggetti, dove con il termine "oggetto" si intende un gruppo di dati in cui è definita un’interfaccia per accedere a queste informazioni.

Il sistema ODBMS attribuisce automaticamente un identificativo (ID) a ogni oggetto, permettendo di accedervi in diversi modi. La differenza principale con i database relazionali consiste nella possibilità di attribuire un ID diverso a due oggetti distinti che possiedono gli stessi valori, contrariamente a una tupla che può invece essere identificata solo da un valore.

Anche i database orientati agli oggetti dispongono del loro proprio linguaggio, l'OQL (Object Query Language).

Database orientati ai documenti

Questo tipo di database presenta uno storage totalmente differente rispetto al modello relazionale, basato su dati eterogenei di documenti elaborati individualmente (e non più in tabelle) che spaziano dai documenti di testo in JSON, YAML o XML ai dati non strutturati come file immagine, video o audio.

Questi documenti sono registrati in combinazioni chiave-valore. Ricordiamo che il termine chiave è identico a quello di un attributo e non è collegato in nessun modo alle chiavi del database relazionale.

I diversi documenti possono essere raggruppati per formare raccolte, che possono così essere classificate. Le richieste per interrogare i database orientati ai documenti si presentano sotto forma di funzioni, ad esempio JavaScript, caratteristica che li rende particolarmente indicati per la gestione di grandi quantità di informazioni.

Vantaggi e inconvenienti dei database relazionali

I database relazionali si sono imposti su larga scala, ma presentano dei limiti. Ciò che costituisce la loro forza può anche trasformarsi in debolezza con certi tipi di dati (ad esempio grandi volumi, multimedia, oggetti).

Vantaggi

  • Modello in tabelle: è abbastanza semplice da creare e permette di consultare i dati relativi a clienti e stock in modo rapido e senza difficoltà.
     
  • Bassa ridondanza dei dati: grazie alla normalizzazione è possibile evitare l’alterazione delle informazioni utilizzate dal database e aumentare la coerenza.
     
  • Trattamento dei dati quantitativi: questa operazione permette di associare valori agli attributi.
     
  • Structured Query Language (SQL): le applicazioni possono essere sviluppate ed eseguite all’interno di diversi progetti Web usufruendo di una maggiore compatibilità.

Inconvenienti

  • Non tutti i dati possono essere visualizzati in tabelle: le informazioni astratte e non strutturate non possono funzionare in database relazionali.
     
  • I dati non possono essere gerarchizzati: a differenza dei database orientati agli oggetti, non è possibile effettuare, ad esempio, analisi con subtuple o classi di tuple.
     
  • Segmentazione dei dati: risultato dalla normalizzazione, questo frazionamento disperde gli spazi di storage dei dati e comporta quindi query complesse su più tabelle a livello dell’applicazione. Questo elevato numero di richieste simultanee su più tabelle degrada le prestazioni durante le analisi e aumenta i tempi di calcolo.

In linea generale i database relazionali sono i più popolari al mondo, ma non risultano adatti a dati eterogenei o determinati casi d’uso, come i Big Data.

Database relazionali in OVHcloud

OVHcloud propone un'ampia gamma di database, tra cui due modelli relazionali:

  • MySQL, leader dei database di questo tipo. È possibile acquistarlo in modalità "gestita" per non dover effettuare in autonomia le operazioni di amministrazione e monitoraggio.
  • PostgreSQL, database relazionale in grado di gestire carichi di lavoro significativi e anch’esso disponibile in modalità "gestita".
  • database SQL privati, come MariaDB per i piani di hosting Web.

Tutte le soluzioni disponibili possono essere consultate nella pagina dedicata ai nostri database gestiti, pensati per semplificare la gestione dei dati in totale sicurezza. Tutti i database sono ospitati nei nostri datacenter e sono soggetti a rigorosi standard di sicurezza. In questo modo siamo in grado di garantire la sovranità e la confidenzialità delle informazioni.