Cos'è un database relazionale(RDBMS)?

Un database relazionale è un tipo di database di archiviazione che fornisce accesso a data points correlati tra loro. I database relazionali sono basati sul modello relazionale, un modo intuitivo e diretto di rappresentare i dati nelle tabelle. In un database relazionale ogni riga della tabella è un record con un ID univoco chiamato chiave. Le colonne della tabella contengono gli attributi dei dati e ogni record di solito ha un valore per ogni attributo, rendendo facile stabilire le relazioni tra i data points.

Un esempio di database relazionale

Ecco un semplice esempio di due tabelle che potrebbero essere utilizzate da una piccola azienda per elaborare gli ordini dei suoi prodotti. La prima è una tabella di informazioni sul cliente, quindi ogni record include nome, indirizzo, dati di spedizione e fatturazione, numero di telefono e altre informazioni di contatto del cliente. Ogni bit di informazioni (ogni attributo) si trova nella colonna corrispondente e il database assegna un ID univoco (una chiave) a ciascuna riga. Nella seconda tabella, relativa all'ordine del cliente, ogni record include l'ID del cliente che ha effettuato l'ordine, il prodotto ordinato, la quantità, la dimensione e il colore selezionati e così via, ma non il nome o le informazioni di contatto del cliente.

Queste due tabelle hanno solo una cosa in comune: la colonna ID (l'elemento chiave). È tuttavia grazie a questa colonna comune che il database relazionale può creare una relazione tra le due tabelle. Quindi, quando l'applicazione di elaborazione degli ordini del'azienda invia un ordine al database, il database può consultare la tabella degli ordini del cliente, estrarre le informazioni corrette sull'ordine del prodotto e utilizzare l'ID cliente contenuto in quella tabella per cercare i dati di fatturazione e spedizione del cliente nella tabella delle informazioni del cliente. Il magazzino può quindi prelevare il prodotto corretto, il cliente può ricevere la consegna dell'ordine in tempo e la società può essere pagata.

Come sono strutturati i database relazionali

Il modello relazionale implica che le strutture logiche dei dati (tabelle di dati, viste e indici) sono separate dalle strutture di storage fisico. Grazie a questa separazione, gli amministratori di database possono gestire lo storage fisico dei dati senza compromettere l'accesso a tali dati come struttura logica. Ad esempio, la ridenominazione di un file di database non implica la ridenominazione delle tabelle archiviate al suo interno.

La distinzione tra logico e fisico si applica anche alle operations di database, che sono azioni chiaramente definite che consentono alle applicazioni di manipolare i dati e le strutture del database. Le operations logiche consentono a un'applicazione di specificare il contenuto di cui ha bisogno, mentre le operations fisiche determinano come accedere a tali dati e quindi eseguono l'attività.

Per garantire che i dati siano sempre accurati e accessibili, i database relazionali seguono regole di integrità specifiche. Ad esempio, una regola di integrità può specificare che le righe duplicate non sono consentite in una tabella, al fine di evitare l'ingresso di informazioni errate nel database.

Il modello relazionale

Nei primi anni dell'esistenza dei database ogni applicazione archiviava dati nella propria struttura unica. Qualora fosse necessario creare applicazioni per utilizzare tali dati, gli sviluppatori avevano bisogno di conoscere numerosi dettagli sulla struttura dei dati specifica, al fine di trovare i dati necessari. Queste strutture dati erano inefficienti, difficili da gestire e da ottimizzare per offrire buone performance delle applicazioni. Il modello di database relazionale è stato progettato per risolvere il problema di più strutture di dati arbitrarie.

Il modello dati relazionale ha fornito una modalità standard di rappresentare e interrogare i dati che potrebbero essere utilizzati da qualsiasi applicazione. Fin dall'inizio, gli sviluppatori hanno riconosciuto che il punto di forza del modello di database relazionale è l'uso delle tabelle, ovvero un modo intuitivo, efficiente e flessibile per archiviare informazioni strutturate e accedervi.

Con il passare del tempo, è emerso un altro punto di forza del modello relazionale, poiché gli sviluppatori hanno iniziato a utilizzare il linguaggio SQL (Structured Query Language) per scrivere dati in un database ed eseguirvi query. Per molti anni, SQL è stato ampiamente utilizzato come linguaggio per le query di database. Basato sull'algebra relazionale, SQL offre un linguaggio matematico internamente coerente che semplifica il miglioramento delle performance di tutte le query di database. In confronto, altri approcci devono definire singole query.

Vantaggi del relational database management system

Il semplice ma potente modello relazionale viene utilizzato da organizzazioni di ogni tipo e dimensione per un'ampia varietà di esigenze di informazione. I database relazionali vengono utilizzati per tracciare gli inventari, elaborare transazioni di e-commerce, gestire enormi quantità di informazioni sui clienti mission-critical e molto altro. Un database relazionale può essere preso in considerazione per reperire qualsiasi informazione in cui i data points si correlano tra di loro e devono essere gestiti in modo sicuro, regolamentato e coerente.

I database relazionali sono utilizzati sin dagli anni '70. I vantaggi offerti dal modello relazionale continuano a renderlo anche oggi il modello di database più accettato a livello globale.

Modello relazionale e coerenza dei dati

Il modello relazionale è il migliore modo per mantenere la coerenza dei dati tra applicazioni e copie di database (i cosiddetti casi). Ad esempio, quando un cliente deposita denaro presso un bancomat e poi controlla il saldo del conto sul cellulare, si aspetta di vedere l'importo depositato immediatamente riflesso nel saldo del conto aggiornato. Nell'ambito di questo genere di coerenza dei dati, i database relazionali consentono di ottenere risultati eccellenti, assicurando che più istanze di un database contengano sempre gli stessi dati.

Per altri tipi di database è difficile mantenere questo livello di coerenza in modo rapido con grandi quantità di dati. Alcuni database recenti, come NoSQL, possono garantire solo la coerenza finale". In base a questo principio, quando il database viene ridimensionato o quando più utenti accedono agli stessi dati nello stesso momento, i dati hanno bisogno di tempo per aggiornarsi. La coerenza finale è accettabile per alcuni utilizzi, ad esempio per gestire gli elenchi in un catalogo di prodotti, ma il database relazionale rimane comunque lo standard migliore per le operations aziendali critiche, ad esempio le transazioni relative al carrello.

Impegno e atomicità

I database relazionali gestiscono le regole e le policy aziendali a un livello molto dettagliato, con rigide policy in materia di commitment (ovvero, applicazione di una modifica al database permanente). Prendiamo ad esempio in considerazione un database di inventario che tiene traccia di tre parti che vengono sempre utilizzate insieme. Quando una parte viene estratta dall'inventario, lo stesso deve accadere anche per le altre due. Se uno dei tre componenti non è disponibile, non bisogna estrarne nessuno: tutte e tre devono essere disponibili prima che il database realizzi qualsiasi azione. Un database relazionale non agirà su un componente fino a quando non avrà la certezza di poter agire su tutti e tre. Questa capacità di commitment multisfaccettato è denominata atomicità. L'atomicità è la chiave per mantenere dati accurati nel database e garantire che siano compliant con le regole, i regolamenti e le policy dell'azienda.

Proprietà ACID e RDBMS

Quattro proprietà cruciali definiscono le transazioni dei database relazionali: atomicità, coerenza, isolamento e durabilità, a cui generalmente ci si riferisce con il termine ACID.

  • Atomicità: definisce tutti gli elementi che costituiscono una transazione di database completa.
  • Consistenza: definisce le regole per mantenere i data points in uno stato corretto dopo una transazione.
  • Isolamento : mantiene l'effetto di una transazione invisibile agli altri fino a quando non viene sottoposta a commit, per evitare confusione.
  • Durabilità: assicura che le modifiche ai dati diventino permanenti una volta che viene eseguito il commit della transazione.

Procedure memorizzate e database relazionali

L'accesso ai dati comporta molte azioni ripetitive. Ad esempio, una semplice query per ottenere informazioni da una tabella di dati potrebbe dover essere ripetuta centinaia o migliaia di volte per produrre il risultato desiderato. Queste funzioni di accesso ai dati richiedono un certo tipo di codice per accedere al database. Gli sviluppatori di applicazioni non vogliono scrivere un nuovo codice per queste funzioni in ogni nuova applicazione. Fortunatamente, i database relazionali consentono l'utilizzo di stored procedure, ovvero blocchi di codice a cui è possibile accedere con una semplice chiamata di applicazione. Una singola stored procedure può ad esempio fornire un tag di registrazione coerente per gli utenti di più applicazioni. Le stored procedure possono anche aiutare gli sviluppatori a garantire che determinate funzioni di dati nell'applicazione siano implementate in un modo specifico.

Database locking e simultaneità

Quando più utenti o applicazioni tentano di modificare gli stessi dati contemporaneamente, in un database possono insorgere conflitti. Le tecniche di blocco e di concorrenza riducono la possibilità di conflitti mantenendo l'integrità dei dati.

Blocco : impedisce ad altri utenti e applicazioni di accedere ai dati durante l'aggiornamento. In alcuni database il blocco si applica all'intera tabella, il che crea un impatto negativo sulle performance delle applicazioni. Altri database, come quelli relazionali di Oracle, applicano i blocchi a livello di record, lasciando gli altri record all'interno della tabella disponibili, così da garantire migliori performance delle applicazioni.

Concorrenza: gestisce l'attività quando più utenti o applicazioni invocano query contemporaneamente sullo stesso database. Questa funzionalità offre l'accesso corretto agli utenti e alle applicazioni, in base alle policy definite per il controllo dei dati.

Cosa cercare quando si sceglie un database relazionale

Il software utilizzato per eseguire query, archiviare, gestire e recuperare i dati memorizzati in un database relazionale è chiamato relational database management system (RDBMS). RDBMS fornisce un'interfaccia tra gli utenti e le applicazioni e il database, nonché funzioni amministrative per la gestione di storage dei dati, accesso e performance.

Diversi sono i fattori da considerare quando si sceglie tra diversi tipi di database e prodotti di database relazionali. Il sistema RDBMS che scegli dipende dalle tue esigenze aziendali. Ecco le domande che è necessario porsi:

  • Quali sono i requisiti di accuratezza dei dati? Lo storage e l'accuratezza dei dati si basano sulla logica di business? I dati hanno requisiti rigorosi in termini di accuratezza (ad esempio, dati finanziari e report governativi)?
  • È necessaria la scalabilità? Qual è la scala dei dati da gestire e qual è la crescita prevista? Il modello di database dovrà supportare copie di database con mirroring (come istanze separate) per la scalabilità? In tal caso, può mantenere la coerenza dei dati tra tali istanze?
  • Quanto è importante la concorrenza? Più utenti e applicazioni avranno bisogno dell'accesso simultaneo ai dati? Il software del database supporta la concorrenza mentre protegge i dati?
  • Quali sono le esigenze in termini di performance e affidabilità? È necessario un prodotto altamente performante e affidabile? Quali sono i requisiti per le performance di risposta alle query? Quali sono gli impegni dei venditori in termini di service level agreement (SLA) o tempi di inattività imprevisti?

Il database relazionale del futuro: il database self-driving

Nel corso degli anni, i database relazionali sono diventati migliori, più veloci, più resistenti e più facili da utilizzare, Tuttavia, sono diventati anche più complessi, motivo per cui e la loro gestione è stata per molto tempo un lavoro impegnativo. Invece di utilizzare le proprie competenze per concentrarsi sullo sviluppo di applicazioni innovative che apportano valore al business, gli sviluppatori hanno dovuto dedicare la maggior parte del proprio tempo all'attività di gestione necessaria per ottimizzare le performance del database.

Oggi la tecnologia autonoma si basa sui punti di forza del modello relazionale, tecnologia database cloud e Machine Learning per offrire un nuovo tipo di database relazionale. Il database self-driving (noto anche come database autonomo) conserva il potere e i vantaggi del modello relazionale, ma utilizza l'intelligenza artificiale (AI), il machine learning e l'automazione per monitorare e migliorare le performance delle query e le attività di gestione. Ad esempio, per migliorare le performance delle query, il database self-driving può fare ipotesi e testare gli indici per rendere le query più veloci, quindi portare le migliori in produzione, tutto in modo indipendente. Il database self-driving apporta questi miglioramenti continuamente, senza la necessità di alcun intervento umano.

La tecnologia autonoma libera gli sviluppatori dalle banali attività di gestione del database. Ad esempio, non dovranno più determinare in anticipo i requisiti dell'infrastruttura. Con un database self-driving, potranno invece aggiungere storage e calcolare le risorse necessarie per supportare la crescita del database. Con pochi passaggi, gli sviluppatori possono creare con facilità un database relazionale autonomo, accelerando i tempi di sviluppo delle applicazioni.