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 cliente, Nome azienda, Indirizzo azienda, eccetera; le colonne per una tabella delle transazioni potrebbero essere Data transazione, ID cliente, Importo transazione, Metodo 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.
Db2 on Cloud
IBM Cloud Databases for PostgreSQL
IBM Cloud Hyper Protect DBaaS
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.
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:
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.
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.
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 .
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 è 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 è 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 è un database relazionale supportato commercialmente offerto da IBM che ha sia una versione ospitata sul cloud che una versione on-premise.
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:
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".
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.
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?"
Alcuni esempi di database non relazionali specifici includono i seguenti:
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 è 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 è 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 è 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 è 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 è 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".
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.
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:
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.
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.
IBM supporta le versioni ospitate sul cloud di diversi database relazionali.
Scopri di più sulla prospettiva di IBM sui database relazionali.
Scopri Db2 on Cloud, un database cloud SQL completamente gestito e ottimizzato per prestazioni solide.
Scopri PostgreSQL-as-a-service, predisposto per l'azienda con l'integrazione nativa nel cloud IBM.
IBM Cloud Hyper Protect DBaaS è un ambiente database sul cloud altamente sicuro che ti consente di gestire più tipi di database tramite API standarizzate.
Sviluppa ed esegui le applicazioni su un database con misure di sicurezza complete e di classe aziendale che è basato su PostgreSQL open source.