Database relazionali
In questa guida essenziale, scopri come funzionano i database relazionali e le differenze con altre opzioni di database.
Autore: IBM Cloud Education
Su uno schermo con uno sfondo blu ci sono numeri e lettere, che rappresentano un ingombrante database
Cos'è un database relazionale?

Un database relazionale organizza i dati in tabelle che possono essere collegate - o correlate -sulla base dei dati comuni a ciascuna di esse. Questa funzionalità consente di recuperare una tabella del tutto nuova dai dati in una o più tabelle con una singola query. Consente inoltre a te e alla tua azienda di comprendere meglio le relazioni tra tutti i dati disponibili e di ottenere dei nuovi insight per prendere decisioni migliori o identificare nuove opportunità.

Immagina, ad esempio, che la tua azienda conservi una tabella dei clienti che contiene i dati aziendali di ciascun account cliente e una o più tabelle delle transazioni che contengono i dati che descrivono le singole transazioni.

Le colonne (o i campi) per la tabella dei clienti potrebbero essere ID clienteNome aziendaIndirizzo azienda, eccetera; le colonne per una tabella delle transazioni potrebbero essere Data transazioneID clienteImporto transazioneMetodo di pagamento, eccetera. Le tabelle possono essere correlate in base al campo ID cliente comune. Puoi, pertanto, eseguire query sulla tabella per produrre dei preziosi report, come ad esempio un rendiconto cliente consolidato.

I generatori di report prendono queste query e le eseguono su richiesta per creare dei report formali. Molti dei documenti eseguiti dalle aziende per tenere traccia di inventario, vendite, finanze o anche per eseguire previsioni finanziarie provengono da un database relazionale che opera dietro le quinte.

Prodotti in evidenza

Db2 on Cloud

IBM Cloud Databases for PostgreSQL

IBM Cloud Hyper Protect DBaaS


Cos'è SQL?

Puoi comunicare con i database relazionali utilizzando SQL (Structured Query Language), il linguaggio standard per interagire con i sistemi di gestione. SQL consente di unire le tabelle utilizzando poche righe di codice, con una struttura che la maggior parte dei dipendenti non tecnici può apprendere rapidamente.

Con SQL, gli analisti non hanno bisogno di conoscere dove si trova la tabella degli ordini sul disco, come eseguire la ricerca per trovare uno specifico ordine o come connettere le tabelle di ordini e clienti. Il database compila la query e determina i punti di dati corretti.


Vantaggi

Il vantaggio principale dell'approccio del database relazionale è la capacità di creare informazioni significative unendo le tabelle. Unire le tabelle ti consente di comprendere le relazioni tra i dati o come si connettono le tabelle. SQL include la capacità di contare, aggiungere, raggruppare e anche combinare le query. SQL può eseguire delle funzioni matematiche e di totali parziali e delle trasformazioni logiche di base. Gli analisti possono ordinare i risultati in base alla data, al nome o a qualsiasi colonna.

Queste funzioni fanno dell'approccio relazionale il singolo strumento di query oggi più diffuso in ambito aziendale.

I database relazionali presentano diversi vantaggi rispetto ad altri formati di database:

Flessibilità 

SQL ha un suo linguaggio integrato per creare tabelle denominato DDL (Data Definition Language). DDL ti consente di aggiungere nuove colonne e tabelle, rinominare le relazioni e apportare altre modifiche anche mentre il database è in esecuzione e mentre sono in corso delle query. Ciò ti consente di modificare in modo immediato lo schema o il modo in cui modelli i dati.

Ridondanza ridotta 

I database relazionali eliminano la ridondanza dei dati. Le informazioni per un singolo cliente compaiono in un unico posto - una singola voce nella tabella dei clienti. La tabella degli ordini ha bisogno solo di conservare un link alla tabella dei clienti. La prassi di separare i dati per evitare la ridondanza è detta normalizzazione. I progettisti di database all'avanguardia si assicurano che le tabelle vengano normalizzate durante il processo di progettazione.

Facilità di backup e disaster recovery 

I database relazionali sono transazionali - garantiscono che lo stato dell'intero sistema sia coerente in qualsiasi momento. La maggior parte dei database relazionali offre facili opzioni di esportazione e importazione, rendendo molto semplici backup e ripristino. Queste esportazioni possono avere luogo anche mentre il database è in esecuzione, rendendo facile il ripristino in caso di malfunzionamento. I moderni database relazionali basati sul cloud possono eseguire un mirroring continuo, rendendo la perdita di dati in fase di ripristino misurabile in secondi, se non di meno. La maggior parte dei servizi gestiti sul cloud ti consente di creare delle repliche di lettura, come in IBM Cloud Databases for PostgreSQL. Queste repliche di lettura di consentono di archiviare una copia di sola lettura dei tuoi dati in un data center su cloud. Le repliche possono anche essere promosse a istanze di lettura/scrittura per il disaster recovery .


Esempi di database relazionali

Molti prodotti database implementano il modello di database relazionale. Utilizzano un database SQL per l'elaborazione o sono almeno in grado di elaborare le istruzioni SQL per le richieste e gli aggiornamenti del database. Questi database vanno dai piccoli sistemi desktop agli enormi sistemi basati sul cloud. Possono essere open source e supportati internamente, open source con supporto commerciale oppure closed source commerciali. Sono qui di seguito indicati alcuni dei più diffusi:

MySQL

MySQL è un database comune e con cui è facile iniziare con un uso limitato di risorse di memoria, disco e CPU. Supporta tutti i comandi SQL di base, insieme alle transazioni e a prestazioni ACID (Atomicity, Consistency, Isolation, Durability). MySQL è il database più comune integrato con siti WordPress .

PostgreSQL

PostgreSQL è anche open source. Fornisce funzioni aziendali quali la sicurezza, la scalabilità e il supporto per una maggiore automazione tramite una CLI (command-line interface), nonché un accesso diretto sul web. PostgreSQL supporta le procedure memorizzate, che sono un linguaggio di programmazione più complesso sviluppato su SQL. I team possono utilizzare le procedure memorizzate per eseguire estrazioni, trasformazioni e caricamenti di dati tra i sistemi. Esempi di questo caso di utilizzo includono la lavorazione delle richieste di risarcimento per le elaborazioni nel settore assicurativo e l'elaborazione degli ordini per gli ordini complessi. Postgres funziona anche con  qGIS (link esterno a ibm.com) o Geo Server (link esterno a ibm.com) per archiviare e salvare informazioni globali.

Per maggiori dettagli, consulta anche "Database Deep Dives: PostgreSQL."

Db2

Db2 è un database relazionale supportato commercialmente offerto da IBM che ha sia una versione ospitata sul cloud che una versione on-premise


Confronto tra database relazionale e. NoSQL

I database NoSQL offrono dei modi per archiviare, cercare e recuperare i dati diversi dalla loro memorizzazione in tabelle con delle relazioni. Ecco alcune delle distinzioni principali:

Coppie chiave-valore

La forma più diffusa di database NoSQL è una semplice coppia chiave-valore. Le coppie chiave-valore mettono tutto i dati in una singolo tabella. La chiave è un elemento univoco. Per i dipendenti o i clienti, la chiave potrebbe essere un indirizzo email. Per gli ordini, sarebbe il numero ordine. A condizione che ogni chiave sia univoca, una coppia chiave-valore può archiviare tutte le relazioni in una singola "tabella".

Scelta tra disponibilità e coerenza 

Quando i computer vengono eseguiti su una rete, invariabilmente devono decidere se dare la priorità a risultati coerenti (dove ogni risposta è sempre la stessa) o a un elevato tempo di attività, detto "disponibilità". Questa è nota come "Teorema CAP", dove "CAP" sta per Consistency, Availability o Partition Tolerance, ossia Coerenza, Disponibilità o Tolleranza di partizione. I database relazionali garantiscono che le informazioni siano sempre sincronizzate e coerenti. Alcuni database NoSQL, come Redis, preferiscono di fornire sempre una risposta. Ciò significa che le informazioni che ricevi da una query potrebbero non essere corrette di qualche secondo - forse fino a mezzo minuto. Sui siti di social media, questo significa visualizzare una vecchia foto del profilo quando quella più nuova è stata caricata solo qualche istante prima. L'alternativa potrebbe essere un timeout o un errore. Per contro, nelle transazioni bancarie e finanziarie, un errore e un nuovo invio potrebbero essere preferibili a informazioni obsolete e non corrette.

Schemi flessibili

Mentre i database relazionali hanno un insieme predefinito di righe e colonne, i database NoSQL sono strutturati più come un documento. Se sai dove si trovano le informazioni nel documento, puoi recuperarle. Se il materiale è ancora presente nel documento, puoi aggiungere altre informazioni strutturate senza dover modificare le regole. Se eseguite correttamente, le query originali continueranno a funzionare, rendendo più facile estendere il database senza aggiornamenti formali.

Altri formati di database NoSQL includono i database di documenti, storie, grafi e oggetti. Un termine più ampio per i database NoSQL è non relazionale.

Per una resoconto completo delle differenze tra SQL e NoSQL, consulta "SQL vs. NoSQL Databases: What's the Difference?"


Confronto tra database relazionali e non relazionali

Alcuni esempi di database non relazionali specifici includono i seguenti:

Redis

Redis è un database NoSQL comune, utilizzato di frequente per il tipo di storage di dati di cui abbiamo discusso in precedenza. Eseguendo solo una ricerca senza alcuna unione o relazione, e spostando l'elaborazione sul browser web, Redis fornisce una risposta rapida. Il tempo di risposta può essere critico per i siti web moderni altamente competitivi.

JanusGraph

JanusGraph è un database di grafi progettato per archiviare ed elaborare query per i grafi di grandi dimensioni. Questi grafi di grandi dimensioni contengono centinaia di miliardi di bordi e vertici, archiviati un un cluster multi-macchina. JanusGraph può supportare migliaia di query simultanee ed eseguire la scalabilità orizzontale con del nuovo hardware. Il tipo di dati archiviato da JanusGraph potrebbe essere appropriato per l'animazione o la modellazione aerodinamica.

MongoDB

MongoDB è un database di documenti che archivia i record come documenti debolmente strutturati. Potrebbe essere perfetto per archiviare pagine web come documenti, per un catalogo di prodotti e-Commerce o per applicazioni di social network. Come Redis, MongoDB si differenzia dai modelli relazionali in quanto non tende alla conformità ACID.

Consulta anche "Database Deep Dives: MongoDB."

etcd

etcd è un altro archivio chiave/valore, di norma utilizzato per i dati di configurazione per i sistemi distribuiti. Il caso di utilizzo etcd comune è rappresentato dai server basati sul cloud che eseguono la scalabilità orizzontale insieme alla domanda e hanno bisogno di un singolo database per le informazioni di configurazione.

RabbitMQ

RabbitMQ è una coda di messaggistica open source. Un messaggio consiste di norma in una certa quantità di testo, con la struttura definita dal client. Invece di record con un periodo di validità permanente, RabbitMQ consente a un sistema di inserire messaggi nella coda in modo che altre applicazioni possano quindi estrarli quando lo desiderano. Questo inserimento e questa estrazione asincroni consentono alle applicazioni distribuite il passaggio di messaggi.

Elasticsearch

Elasticsearch è un motore di ricerca di testo completo che si interfaccia tramite le API web. Ciò significa che il valore primario è ottenere la restituzione di risultati. Un intero sito web può archiviarsi in Elasticsearch. Cerca la coppia chiave-valore e ottieni il testo del sito web. Il vero potere di Elasticsearch è la ricerca, che consente al sito web di aggiungere un pulsante di ricerca precisa e rapida. Elasticsearch può eseguire ricerche di qualsiasi struttura di testo di grandi dimensioni in modo rapido e potente.

Per un'analisi dettagliata completa dei diversi tipi di database disponibili, consulta "A Brief Overview of the Database Landscape".


Schemi di database

Uno schema di un database è la struttura definita in un linguaggio formale. In SQL esistono due linguaggi formali: DDL (Data Definition Language) e DML (Data Manipulation Language).

Per selezionare i dati da una tabella ed eseguirne l'aggiornamento o l'eliminazione, i programmatori utilizzano DML. Per lavorare sul database e per creare e definire le tabelle e le relazioni, utilizzano DDL o uno strumento per creare il DDL.

DDL include comandi come CREATE, DROP, ALTER, COMMENT e RENAME. Il primo comando DDL è CREATE TABLE. Questo comando definisce la chiave primaria (che deve essere univoca), i campi, il modo in cui questi campi archiviano i dati e qualsiasi altro vincolo sulla tabella. Una volta definita, puoi stabilire un database come una combinazione del suo linguaggio di definizione e di DML per inserire ( INSERT ) le righe nelle tabelle.

Ecco un esempio di un comando DDL per creare una tabella dei dipendenti. Come vedrai, uno schema può includere quali colonne sono necessarie, quali devono essere univoche (una chiave) e quali devono avere un riferimento in altre tabelle.

In questo esempio, la tabella dei lavori descrive ogni titolo professionale, descrizione e livello professionale. Una tabella separata, la tabella pay_grades, mostra lo stipendio per ogni livello professionale. Gli integer sono numeri interi; char (100) riserva fino a cento caratteri per il testo.

 

CREATE TABLE employees (

    employeeID integer UNIQUE NOT NULL,

    first_name char(100) NOT NULL,

    last_name char(100) NOT NULL,

    jobID int,   

    birthdate date NOT NULL,

    governmentID char(9),

    FOREIGN KEY(jobID) REFERENCES jobs(jobID)

);

Cosa succede quando una riga viene eliminata dalla tabella dei lavori? DDL consente al programmatore di specificare cosa fare in questo caso. La colonna in employees potrebbe essere aggiornata automaticamente a NULL, come succederà in questo caso, oppure potrebbe essere impostata sull' eliminazione a catena. Ad esempio, se una libreria secondaria viene eliminata a causa di una chiusura, potrebbero essere eliminati anche i libri che non sono stati trasferiti altrove.

Alcuni database relazionali offrono il potenziale di avere più schemi, con tabelle differenti, insieme alla capacità di concederne le autorizzazioni in lettura e scrittura. Più schemi significano che un utente delle risorse umane potrebbe avere informazioni delle risorse umane per i dipendenti ma non informazioni sui dipendenti confidenziali (e viceversa) e il tutto sullo stesso database.


Licenza

Da una prospettiva delle licenze, i database relazionali variano in un modo importante, mettendo a confronto i database open source con i database supportati commercialmente:

  • I database open source non prevedono costi per la loro impostazione ma non hanno un supporto commerciale predefinito.
  • I database supportati commercialmente includono un certo livello di supporto ma non possono correggere i problemi inerenti a usi legittimi del database, come ad esempio delle eliminazioni accidentali causate da bug introdotti dai programmatori.

Puoi ospitare database relazionali nel cloud, su server locali, su macchine desktop, su cloud privati oppure anche su dispositivi IoT (Internet of Things), a condizione che tu stia rispettando la licenza.


Come creare un database relazionale

Un database relazionale ha bisogno di due cose per essere eseguito - il software di database stesso e il codice DDL (Data Definition Language) per crearlo.

Per supportare un'installazione locale, gli amministratori devono guardare a tutte le possibilità. Ad esempio, se il sistema operativo sottostante su cui viene eseguito il database ha bisogno di un aggiornamento, tale operazione potrebbe rendere inattivo il server per ore. Per l'alta disponibilità, sarà necessario replicare il database, con una copia che resta attiva mentre quella principale è inattiva. I database locali devono considerare come eseguire il ridimensionamento con più utenti, come eseguire dei backup e come ripristinarli.

L' alternativa consiste nell'eseguire i database nel cloud. Con i database nel cloud, il database viene configurato automaticamente per l'alta disponibilità, il che significa che i tuoi dati vengono replicati su più membri e ciascun membro si trova in zone di disponibilità separate.

Se un intero data center diventa inattivo, il database rimane attivo. I dati vengono replicati tra le zone, così puoi mantenere tutti i dati e continuare le operazioni nel caso di verificasse un'interruzione. Inoltre, il fornitore gestirà i miglioramenti alla sicurezza e gli upgrade di sistema operativo e versione del database. Sono tanti gli utenti che adottano i database gestiti sul cloud per una sicurezza aziendale, un'elevata disponibilità, una scalabilità online e dei backup automatici predefiniti.


Database relazionali e IBM Cloud

IBM supporta le versioni ospitate sul cloud di diversi database relazionali.

  • IBM Db2 on Cloud è un database relazionale commerciale tra i più importanti, che è sviluppato per solide prestazioni e che fornisce un'opzione di alta disponibilità con uno SLA di tempo di attività al 99,99%.
  • IBM Cloud Databases for PostgreSQL fornisce PostgreSQL, completamente gestito e pronto per l'azienda, sviluppato con un'integrazione nativa in IBM Cloud.
  • IBM Cloud Hyper Protect DBaaS for PostgreSQL è il livello evolutivo successivo della modalità di archiviazione dei dati in un servizio cloud aziendale altamente sicuro particolarmente adatto per i carichi di lavoro con dati sensibili
  • IBM Data Management Platform for EDB Postgres Enterprise and Standard è una piattaforma PostgreSQL integrata e basata sull'open source disponibile in un'unica esperienza che include approvvigionamento, implementazione, utilizzo, gestione e supporto.

Scopri di più sulla prospettiva di IBM sui database relazionali.

Inizia gratuitamente con un account IBM Cloud.


Soluzioni correlate

IBM Db2 on Cloud

Scopri Db2 on Cloud, un database cloud SQL completamente gestito e ottimizzato per prestazioni solide.


IBM Cloud Databases for PostgreSQL

Scopri PostgreSQL-as-a-service, predisposto per l'azienda con l'integrazione nativa nel cloud IBM.


IBM Cloud Hyper Protect DBaaS

IBM Cloud Hyper Protect DBaaS è un ambiente database sul cloud altamente sicuro che ti consente di gestire più tipi di database tramite API standarizzate.


EDB Postgres Enterprise e Standard con IBM

Sviluppa ed esegui le applicazioni su un database con misure di sicurezza complete e di classe aziendale che è basato su PostgreSQL open source.