RDBMS: cos’è un database relazionale e quali sono i vantaggi

Un database che consente alle applicazioni di essere indipendenti dalla crescita e dalle modifiche dei dati: il database relazionale, RDBMS, è uno dei modelli più comuni di gestione e archiviazione dati. Come funziona, vantaggi e svantaggi

Pubblicato il 21 Apr 2022

Josephine Condemi

giornalista

Analisi dell’Enterprise Architecture: definizione, vantaggi e implementazione

Un RDBMS – Relational Database Management System, è, letteralmente, un sistema per la gestione di database relazionali. Un sistema di gestione di database impartisce istruzioni al sistema operativo per facilitare l’accesso ai dati e strutturarne correttamente l’archiviazione. Modifica i database, li interroga per selezionare i dati di interesse e produrre report di controllo operazioni.

Cosa significa RDBMS – Relational database management system

RDBMS
Edgar F. Codd

I database relazionali si basano sul modello logico-matematico proposto dall’informatico britannico Edgar F. Codd, a partire dall’articolo “A Relational Model of Data for Large Shared Data Banks” pubblicato nel 1970 su “Communication of the ACM”, l’Association for Computer Machinery.

In questo paper, Codd propose il modello relazionale per permettere l’indipendenza dai dati, ovvero l’indipendenza delle applicazioni dalla crescita dei diversi tipi di dati e dalle modifiche del database. Occorreva quindi risolvere tre dipendenze delle applicazioni: la dipendenza dall’ordinamento, dall’indicizzazione e dal percorso di accesso dei dati.

Il termine “relazionale” è inteso matematicamente: una relazione è un insieme formato da ennuple, o tuple ordinate, elenchi ordinati di n oggetti. La relazione viene quindi rappresentata come una tabella.

In un RDBMS, tutti i dati sono rappresentati come relazioni, quindi tabelle/matrici. Una matrice che rappresenta una relazione nel modello di Codd ha le seguenti proprietà: ogni riga è una ennupla, tutte le righe sono distinte, l’ordine delle righe non è rilevante ma l’ordine delle colonne sì, perché corrisponde ai domini su cui la relazione è definita, ovvero ai “confini” entro cui sussiste. Il significato di ogni colonna è trasmesso parzialmente attraverso un’etichetta che coincide con il dominio corrispondente.

I linguaggi che permettono di agire sulle matrici sono l’algebra relazionale e il calcolo relazionale: l’algebra relazionale esamina le interrogazioni nel database e descrive la procedura da attuare per ottenere il risultato; il calcolo relazionale è invece dichiarativo, non procedurale, ovvero esplicita il risultato che si vuole ottenere dall’interrogazione, quindi i dati necessari, ma non come arrivarci.

Il calcolo relazionale agisce sia sugli elementi ordinati (le tuple) che sui domini delle relazioni. A partire dal calcolo relazionale formulato da Codd è stato implementato il linguaggio SQL, lo standard per database relazionali. I database relazionali sono progettati per le applicazioni transazionali e OLTP- Online Transaction Processing e sono validi anche per l’OLAP – Online Analytical Processing.

What Is RDBMS ? | What Is Relational Database Management System ? | Relational Model Explained.

What Is RDBMS ? | What Is Relational Database Management System ? | Relational Model Explained.

Guarda questo video su YouTube

Video: Cosa è un RDBMS – Learn Computer Science online – (in inglese con sottotitoli)

Come funziona un RDBMS

Il modello relazionale è stato applicato in DBMS reali a partire dal 1981.

Nel 1985 Codd pubblicò due articoli sul magazine Computerworld, “Is your DBMS really relational?” e “Does your DBMS run by the rules?”, in cui definì i requisiti affinché un database potesse dirsi davvero relazionale, le cosiddette “12 regole di Codd”.

La regola zero stabilisce che un sistema possa definirsi un RDBMS se usa solo le funzionalità relazionali per gestire i database.

La numero uno, che le informazioni nel database debbano essere rappresentate sotto forma di tabella.

Ogni tabella/relazione ha una e una sola chiave primaria, ovvero un insieme di attributi che consentono di individuare univocamente una tupla o la posizione di un dato: la regola due stabilisce quindi che ogni dato debba essere accessibile senza ambiguità, specificando il nome della tabella che lo contiene, il nome della colonna in cui si trova e il valore della chiave primaria.

La regola 3 si occupa della gestione della rappresentazione di informazioni mancante o inadatte: un RDBMS deve consentire all’utente di lasciare un campo vuoto o con valore NULL e occuparsi della rappresentazione di queste informazioni sempre allo stesso modo.

La regola 4 impone un dizionario di metadati, quindi una descrizione logica di database e oggetti accessibile agli utenti con lo stesso linguaggio di interrogazione usato per accedere ai dati.

Dati che, secondo la regola 5, devono essere accessibili con un linguaggio relazionale che abbia sintassi lineare (possa essere letto da sinistra a destra), possa essere usato in forma interattiva o inserito dentro applicazioni, supporti operazioni di definizione e manipolazione dei dati, nonché le regole di sicurezza e i vincoli di integrità del database. Ogni database ha infatti vincoli intrarelazionali, che riguardano una sola tabella, e interrelazionali, che riguardano le relazioni tra più tabelle. Questi vincoli sono proprietà che devono essere soddisfatte al momento dell’interrogazione al database: vengono considerate ammissibili solo quelle che soddisfano tutti i vincoli predefiniti.

La regola 6 tratta dell’aggiornamento delle viste, cioè dei “modi di vedere i dati” e specifici subset: se il contenuto di queste viste è modificabile concettualmente, deve esserlo anche praticamente.

La regola 7 stabilisce che il database relazionale debba essere manipolato anche per set di dati e non per singole informazioni.

Le regole 8 e 9 riguardano rispettivamente l’indipendenza dalla rappresentazione fisica e logica: le modalità di accesso al database non cambiano anche se vengono modificate le strutture di memorizzazione fisica; le modifiche al piano logico non devono richiedere modifiche ingiustificate alle applicazioni. Quindi: in un RDBMS la struttura logica è indipendente dalla memorizzazione fisica; la modifica della struttura logica non dovrebbe intaccare le applicazioni del sistema operativo.

Concetto ribadito nella regola 10: i vincoli di integrità sono memorizzati nel dizionario dei metadati e separati dalle applicazioni.

La regola 11 riguarda invece l’indipendenza di localizzazione: le applicazioni devono poter continuare a funzionare a prescindere da dove il database sia localizzato fisicamente. La regola 12 stabilisce la non sovversione: gli strumenti per accedere ai dati non possono aggirare i vincoli o le regole di sicurezza.

Per alcuni, un database che non implementi tutte le 13 regole non può dirsi relazionale, per altri questa posizione è particolarmente rigida.

Che cos’è MySql?

MySQL è il database relazionale open source più utilizzato al mondo. La prima versione di MySQL Server fu rilasciata nel 1995 dalla società svedese MySQL, che la lanciò in open source sotto la GNU General Public Licenze nel 2000. Dopo un anno, il RDBMS aveva più di due milioni di installazioni attive. Nel 2008 MySQL è stato acquisito da Sun Microsystems, a sua volta acquisita da Oracle l’anno successivo.

MySQL ha quindi oltre vent’anni di sviluppo e correzione dei bug da parte della community open source, che lo ha adattato e implementato per diversi casi d’uso, dai siti web all’embedded per hardware e dispositivi. Include utility come mysqldump, un programma di backup; mysqladmin, un client amministrativo; e MySQL Workbench, una GUI per la gestione e il lavoro di migrazione.

MySOL è caratterizzato da tabelle a disco B-tree: B-Tree è una strutturazione dei dati in cui ogni nodo può avere un numero elevato di derivazioni, quindi indicizzare in modo efficiente grandi quantità di dati. Altre caratteristiche sono la compressione degli indici, l’allocazione della memoria basata sui thread e l’ottimizzazione dei nested-loop joins, ovvero degli algoritmi di join. Il join è l’operazione che combina le tuple delle matrici; i nested-loop joins sono gli algoritmi che uniscono due set di dati usando cicli nidificati. In pratica, l’algoritmo legge le righe dalla prima tabella una per volta in un ciclo: ogni riga viene passata al ciclo nidificato che elabora la tabella successiva nell’operazione. Non mancano verifiche basate sull’host e la crittografia del traffico di password.

MySQL è un’evoluzione di SQL – Structured Query Language, il linguaggio creato nel 1974 dall’informatico Donald Chamberlin e diventato lo standard per i RDBMS.

SQL include diversi sottolinguaggi correlati alle funzioni di gestione database: Data Definition Language per creare e modificare schemi di database; Data Manipulation Language per inserire e modificare i dati; Data Query Language per interrogare i dati archiviati; Data Control Language per gli strumenti di controllo e accesso ai dati.

MySQL si basa su InnoDB, un motore di archiviazione transazionale che aderisce al modello ACID – Atomicità, Coerenza, Isolamento e Durabilità come proprietà logiche delle transazioni. L’atomicità significa che la transazione è un’unità indivisibile e non sono ammesse esecuzioni parziali; la coerenza è il rispetto dei vincoli di integrità per tutta la transazione; l’isolamento è la condizione richiesta per ogni transazione, così che l’eventuale anomalia di una non interferisca con le altre eseguite in parallelo; durabilità o persistenza riguarda l’impossibilità di perdere i cambiamenti apportati in seguito ad una transazione, grazie a dei registri di log.

Qual è la differenza tra RDBMS (database relazionale) e DBMS (database non relazionale)

Nei RDBMS, i database relazionali, la strutturazione dei contenuti è rigida: i dati vengono normalizzati e inseriti in delle tabelle, quindi salvati secondo un preciso schema. Lo schema definisce righe, colonne, indici, relazioni tra tabelle e ulteriori elementi e attua l’integrità referenziale nelle relazioni. Le prestazioni dipendono dal sottosistema di dischi, quindi è necessario ottimizzare query, indici e struttura.

Nei DBMS, i database non relazionali, i dati vengono salvati in documenti, archiviati in collezioni, senza tabelle né schemi univoci. I DBMS noSQL offrono modelli per chiave-valore, documento e grafo.

Per tre informazioni relative ad una persona, un RDBMS crea una tabella a tre colonne, un DBMS salva tre dati in formato testuale.

Nei DBMS i dati vengono collegati tramite embedding, ovvero annidando un oggetto dentro un altro, o referencing, inserendo in un documento l’id di un altro.

Nei RDBMS le richieste di archiviazione e ripristino dati vengono gestite tramite SQL ed eseguite dallo stesso database, i DBMS hanno invece delle chiavi di partizione che danno alle applicazioni l’istruzione di ricerca, e consentono agli sviluppatori di archiviare e ripristinare i dati.

Quali altri tipi di database esistono

Oltre ai database relazionali, esistono database gerarchici, reticolari e a oggetti.

Il modello di database gerarchico è stato il primo ad affermarsi: prevede un’organizzazione dei dati ad albero. L’albero è formato da una radice, chiamata anche segmento o padre, e da uno o più sottoalberi dipendenti. Le informazioni vengono rappresentate usando le relazioni tra “padri” e “figli”, ovvero uno-a-molti: un padre, molti figli ma non un figlio molti padri. Molto funzionale per le informazioni gerarchiche, il modello fatica ad essere applicato in caso di relazioni molti-a-molti: in questo caso, è necessario duplicare i dati. Inoltre, per ottenere e utilizzare un dato “figlio” è necessario percorrere l’intero percorso partendo sempre dalla radice.

Il modello di database reticolare o a grafo è nato negli anni Settanta e la sua versione standard è CODASYL. Si basa su uno schema logico in cui i quadrati rappresentano i record, ovvero l’insieme di dati compositi, e le frecce i puntatori, ovvero tipi di dati che rappresentano la posizione degli elementi. I puntatori uniscono i record e sono creati dal comando “set”. Tra due record, si può creare solo una relazione uno a molti. Per ogni tipo di record, deve essere definita la chiave, o esplicitando i campi che lo compongono o attraverso i puntatori che lo collegano.

Il modello di database a oggetti (ORDBMS) è un modello ibrido, con elementi di database relazionale. In questo modello esistono diversi tipi di basi di dati ad oggetti: predefiniti, costruiti, definiti dagli utenti sulla base dei predefiniti.

I vantaggi di un RDBMS

Indipendenza dalla rappresentazione fisica

La struttura logica di un RDBMS è separata dalle strutture fisiche di memorizzazione: in questo modo lo storage fisico non compromette l’accesso ai dati. Ad esempio, rinominare un file di database non comporta rinominare tutte le tabelle al suo interno.

Indipendenza dalla rappresentazione logica

Le modifiche al piano logico in un RDBMS non devono richiedere modifiche ingiustificate alle applicazioni e non intaccano il funzionamento delle applicazioni del sistema operativo.

Le operazioni logiche consentono all’applicazione di specificare il contenuto richiesto, le operazioni fisiche determinano come accedere ai dati ed eseguono l’attività.

Indipendenza di localizzazione

Le applicazioni continuano a funzionare a prescindere da dove il database sia localizzato fisicamente.

Integrità e coerenza

I vincoli di integrità propri del database relazionale ne fanno un modello esemplare di coerenza dei dati tra applicazioni e copie di database: più istanze del database contengono sempre gli stessi dati con variazioni in tempo reale. Per questo, i RDBMS sono utilizzati nelle operazioni critiche come le transazioni e-commerce. I vincoli di integrità possono infatti evitare la duplicazione di righe nella stessa tabella, quindi l’inserimento di informazioni errate o ridondanti nel database.

Atomicità e compliance

I database relazionali è rigido nell’applicazione di una modifica permanente: non la esegue finché non è sicuro di poterla eseguire per tutte le parti che compongono la sezione da modificare. L’atomicità, ovvero considerare ogni transazione unica, senza esecuzioni parziali, garantisce l’accuratezza nel database e la compliance con le policies aziendali.

Svantaggi di un RDBMS

Strutturazione rigida

Un RDBMS è strutturato rigidamente: i dati vengono normalizzati, quindi inseriti secondo schemi precisi che non favoriscono la flessibilità nelle applicazioni a bassa latenza o nell’analisi di dati semi-strutturati. Non tutti i tipi di dati possono essere rappresentato nello schema rigido di tabelle bidimensionali interconnesse.

Segmentazione dei dati

La normalizzazione dei dati, ovvero il trattamento e la suddivisione delle informazioni su tabelle separate, porta ad una loro segmentazione: i dati correlati non sempre vengono salvati insieme. Questo può portare a interrogazioni più complesse, su più tabelle, con maggiori tempi di latenza.

Esclusiva configurazione molti-a-molti

La strutturazione dei database relazionali non consente di creare sottotuple o classi strutturate gerarchicamente.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3