Che cos’è un DBMS?
Un sistema di gestione di database (DBMS) è un middleware che consente ai programmatori, agli amministratori di database (DBA), alle applicazioni software e agli utenti finali di archiviare, organizzare, accedere, interrogare (query) e manipolare i dati in un database.
I DBMS sono importanti perché forniscono meccanismi efficienti e affidabili per l’organizzazione, la gestione e l’utilizzo di grandi quantità di dati, assicurando al contempo l’integrità dei dati (Data Integrity) e offrendo altri vantaggi di Data Management.
In azienda, i sistemi di gestione dei database forniscono agli amministratori di database (DBA) un quadro strutturato che facilita la condivisione dei dati tra diversi reparti, team e applicazioni. Il DBMS offre ai dipendenti un accesso controllato e organizzato ai dati, che possono utilizzare per promuovere l’innovazione e aiutare l’azienda a mantenere un vantaggio competitivo.
Storia dei Database Management System
La storia dei sistemi di gestione dei database risale ai primi anni ’60, quando i computer iniziarono ad essere utilizzati per l’elaborazione dei dati. A quel tempo, il concetto era solitamente definito come sistema di gestione delle informazioni.
Il primo sistema di gestione di database disponibile in commercio si chiamava Integrated Data Store (IDS). Fu sviluppato da Charles W. Bachman e dal suo team presso la General Electric (GE) alla fine degli anni Sessanta.
IDS era un DBMS gerarchico che organizzava i dati in una struttura ad albero, con relazioni genitore-figlio tra i record. Consentiva agli utenti di archiviare, recuperare e gestire i dati in modo strutturato. IDS ha anche introdotto il concetto di dizionario dei dati, che definisce la struttura e le relazioni dei dati all’interno del database.
Prima dell’IDS, i dati venivano solitamente archiviati in file piatti e non esisteva uno standard per le modalità di archiviazione, accesso e manipolazione dei file.
L’IDS di Bachman è stato infine oscurato dall’emergere dei database relazionali e del linguaggio di interrogazione strutturato (SQL) negli anni Settanta. Da allora, i prodotti e i servizi DBMS hanno subito continui progressi che hanno migliorato l’archiviazione, il recupero e la gestione dei dati.
Evoluzione dei Database Management Systems
Anno | Evento |
---|---|
1964 | Sviluppo del primo database, un Integrated Data Store (IDS), da parte di Charles Bachman presso General Electric. |
1966 | IBM introduce l’Information Management System (IMS), uno sviluppo congiunto con Rockwell e Caterpillar. |
1970 | Edgar F. Codd introduce il modello relazionale in un documento intitolato “A Relational Model of Data for Large Shared Data Banks“. |
1974 | Viene creato il linguaggio di interrogazione strutturato (SQL). |
1976 | Peter Chen introduce il Modello Entità-Relazioni nel suo articolo “Il Modello Entità-Relazioni – Verso una visione unificata dei dati“. |
1979 | Oracle rilascia il primo database relazionale commerciale che utilizza SQL. |
1980 | IBM presenta System R, il sistema di gestione di database relazionali basato su SQL. |
1981 | SQL/DS, il primo DBMS completo ad essere eseguito sui personal computer, viene rilasciato da IBM. |
1983 | La prima versione di DB2 di IBM viene rilasciata per i mainframe. |
1986 | Viene pubblicato il Manifesto dei sistemi di database orientati agli oggetti, che dà una spinta significativa allo sviluppo dei database orientati agli oggetti. |
1996 | Viene lanciato PostgreSQL, uno dei primi sistemi di gestione di database relazionali open-source. |
1998 | MySQL, un altro importante RDMS open-source, viene rilasciato per Windows 95 e NT. |
1998 | Microsoft lancia SQL Server 7.0, una riscrittura completa del suo DBMS. |
2000 | Le startup di Internet abbracciano i database XML. |
2004 | Il termine “NoSQL” guadagna popolarità, portando a una nuova generazione di database non relazionali e distribuiti. |
2006 | Google pubblica un documento su BigTable, il suo database NoSQL interno, influenzando una nuova ondata di database NoSQL open-source. |
2012 | Amazon presenta DynamoDB, un database NoSQL proprietario. |
2013 | Viene rilasciato FoundationDB, un database distribuito progettato per gestire grandi volumi di dati strutturati. |
2017 | Google annuncia Spanner, un database distribuito a livello globale. |
2020s | Continuo sviluppo e innovazione nella tecnologia DBMS, con particolare attenzione ai database cloud-nativi, ai database edge e ai miglioramenti nell’integrazione dell’AI per la gestione dei database. Anche i database blockchain diventano un argomento di interesse significativo. |
Database vs DBMS
I termini “database” e “sistema di gestione dei database” sono spesso usati in modo intercambiabile nelle conversazioni casuali. Questo probabilmente perché quando gli utenti finali interagiscono con un database, non sono consapevoli del DBMS sottostante e del suo ruolo distinto nella gestione dei dati. Per aumentare la confusione, in alcuni casi il DBMS è incorporato direttamente nel codice dell’applicazione. Questo rende ancora meno evidente il coinvolgimento di un sistema separato.
Per distinguere i due termini e utilizzarli correttamente, è utile capire i rispettivi ruoli e funzionalità: Un database è una raccolta strutturata di dati. Il sistema di gestione dei database è il software che gli sviluppatori, gli utenti finali e le applicazioni utilizzano per interagire con un database.
Componenti DBMS
Il componente centrale di ogni DBMS si chiama motore del database. È il software che interagisce direttamente con il sistema di archiviazione o il file system sottostante e orchestra le interazioni tra i sottocomponenti modulari che consentono al motore di gestire e manipolare i dati nel sistema di database. Comprende moduli per:
Backup e ripristino: Questi moduli gestiscono le operazioni di backup e ripristino dei dati per proteggere dalla perdita di dati o dai guasti del sistema. Includono meccanismi per la creazione di backup del database, il ripristino dei dati e l’esecuzione di operazioni di recupero.
Controllo della concorrenza e gestione delle transazioni: Questi moduli gestiscono l’accesso simultaneo al database da parte di più utenti o applicazioni. Gestiscono i meccanismi di blocco e assicurano la coerenza dei dati.
Linguaggio di accesso al database: Questo tipo di modulo consente al motore del database di elaborare e interpretare le query o i comandi dell’utente scritti nel linguaggio di accesso predefinito. Analizza la sintassi del linguaggio di query, convalida la query rispetto alle informazioni del catalogo e genera un piano di esecuzione ottimizzato per recuperare o manipolare i dati come richiesto.
Linguaggio di definizione dei dati (DDL): Il modulo DDL consente agli utenti di definire la struttura e l’organizzazione dei dati. Include comandi per la creazione, la modifica e l’eliminazione di oggetti di database come tabelle, viste, indici e vincoli.
Dizionario dati: Il dizionario dei dati (chiamato anche repository di metadati) memorizza i metadati sul database, comprese le informazioni sulla struttura, le relazioni e le proprietà dei dati. Questo modulo viene utilizzato dal motore del DBMS per garantire la coerenza dei dati e applicare vincoli univoci.
Linguaggio di manipolazione dei dati (DML): Il modulo DML fornisce comandi per manipolare e recuperare i dati all’interno del database. Gli utenti possono utilizzare le istruzioni DML per inserire, aggiornare, cancellare e interrogare i dati.
Data Warehousing e Business Intelligence: Questi moduli facilitano l’estrazione, la trasformazione e il caricamento dei dati da più fonti in un Data Warehouse separato. Supportano anche l’elaborazione analitica online (OLAP) e gli strumenti di reporting per la business intelligence.
Indicizzazione: La maggior parte dei DBMS include moduli di indicizzazione per accelerare l’esecuzione delle query, riducendo la quantità di dati da scansionare.
Blocco: Il componente lock manager di un DBMS è responsabile della gestione del controllo della concorrenza. Previene i conflitti e mantiene la coerenza dei dati, garantendo che più utenti o transazioni non possano modificare gli stessi dati contemporaneamente.
Registrazione e auditing: I DBMS spesso includono moduli per il database logging e le attività di auditing. I registri di registro documentano le modifiche al database – compresi gli inserimenti, gli aggiornamenti e le cancellazioni – nonché gli eventi di sistema come i backup e i ripristini. L’auditing comporta il monitoraggio e la revisione di questi registri per tracciare le azioni degli utenti, mantenere l’integrità dei dati e contribuire a far rispettare le politiche di sicurezza.
Elaborazione delle query: Il processore di query riceve e interpreta le query dell’utente, le converte in un piano di esecuzione ottimizzato e interagisce con il motore del database per eseguire le query in modo efficiente. Include sottomoduli per l’ottimizzazione delle query che considerano fattori come gli indici disponibili, le operazioni di join e i metodi di accesso ai dati.
Replicazione: Alcuni DBMS supportano la replica dei dati, che comporta la creazione e il mantenimento di copie multiple del database in luoghi diversi o su server diversi. La replica migliora la disponibilità dei dati, la tolleranza agli errori e le prestazioni. Garantisce che se una copia del database non è disponibile, si può accedere ai dati da un’altra copia.
Sicurezza e autorizzazione: I moduli di sicurezza e autorizzazione controllano l’accesso degli utenti al database e garantiscono la privacy e l’integrità dei dati. Gestiscono l’autenticazione, la gestione degli utenti e implementano meccanismi di controllo degli accessi basati sui ruoli degli utenti e sui requisiti lavorativi.
Archiviazione: Il motore del database in un DBMS comunica con un motore di archiviazione per gestire l’archiviazione fisica dei dati. Il motore di archiviazione è responsabile della gestione dei dettagli di basso livello delle modalità di archiviazione e accesso ai dati, mentre il motore di database coordina e orchestra queste azioni per ottimizzare il funzionamento complessivo del sistema di gestione dei database.
Interfacce utente: Questi moduli forniscono interfacce utente che consentono a programmatori, amministratori di database e utenti finali di interagire con il database. Possono includere interfacce a riga di comando (CLI), interfacce grafiche (GUI) o interfacce di programmazione applicativa (API) per l’integrazione del software.
Politiche utente: Le politiche utente definiscono e applicano i controlli di accesso e le politiche di sicurezza interne. Specificano le autorizzazioni, i ruoli e i privilegi e regolano il modo in cui gli utenti possono interagire con un database.
RDBMS vs. DBMS
Un sistema di gestione di database relazionale (RDBMS) è un tipo di sistema di gestione di database. Tutti gli RDBMS sono DBMS, ma non tutti i sistemi di gestione di database sono sistemi di gestione di database relazionali.
DBMS | RDBMS |
---|---|
I diversi tipi possono essere utilizzati per gestire vari tipi di modelli di database. | Può gestire solo il modello di database relazionale |
I diversi tipi possono memorizzare i dati in strutture diverse | Memorizza sempre i dati in tabelle con righe e colonne. |
I diversi tipi possono o meno applicare l’integrità dei dati in modo automatico. | Assicura automaticamente l’integrità dei dati attraverso vincoli come la chiave primaria, la chiave unica e la chiave esterna. |
Tipi diversi possono utilizzare linguaggi o tecniche diverse per la manipolazione dei dati. | Utilizza sempre SQL (Structured Query Language). |
Tipi di Database Management Systems
Fino all’inizio del secolo, i sistemi di gestione dei database erano classificati come relazionali o non relazionali, a seconda della loro struttura e del loro utilizzo. Se il DBMS archiviava i dati in tabelle, veniva definito un DBMS relazionale (RDBMS). Se non archiviava i dati in tabelle, si parlava di DBMS NoSQL o non relazionale.
Oggi, i sistemi di gestione dei database sono ancora classificati come RDBMS o non-RDBMS, ma sono anche classificati in base ai vantaggi unici che offrono. I tipi di DBMS includono:
Sistemi di gestione di database nel cloud – I DBMS nel cloud, come Amazon Aurora, sono progettati per gestire i dati distribuiti archiviati nei centri dati remoti di un fornitore di cloud.
Sistemi di gestione di database a colonne – I DBMS a colonne, come Apache Cassandra, restituiscono le query più velocemente memorizzando i dati in colonne anziché in righe. Questo schema rende più facile per le applicazioni di analisi dei dati e di business intelligence lavorare con grandi insiemi di dati.
Sistemi di gestione di database distribuiti – Le funzionalità DDBMS, come quelle presenti nell’ecosistema Apache Hadoop, sono progettate per garantire l’integrità dei dati per i database logicamente correlati tra più sedi o ambienti informatici.
Sistemi di gestione di database a grafo – Questi sistemi sono progettati per supportare database a grafo che memorizzano le relazioni a livello di singolo record. I DBMS a grafo come Neo4j sono ideali per gestire i dati con relazioni interconnesse, come i dati dei social media.
Sistemi gerarchici di gestione di database – I sistemi di gestione gerarchici sono progettati per supportare database organizzati in relazioni genitore-figlio. Questo tipo di DBMS affonda le sue radici nell’informatica mainframe e il suo utilizzo oggi è limitato.
Sistemi di gestione di database HTAP – I DBMS ibridi di elaborazione transazionale/analitica sono progettati per supportare carichi di lavoro misti per dati transazionali e analitici. I sistemi di database tradizionali hanno spesso sistemi separati per i carichi di lavoro di elaborazione transazionale online (OLTP) e di elaborazione analitica online (OLAP). I sistemi di gestione HTAP come SAP HANA e CockroachDB forniscono una piattaforma unificata in grado di gestire entrambi i tipi di attività in modo simultaneo.
Sistemi di gestione di database in memoria – I sistemi di gestione in memoria sono progettati per ridurre la latenza utilizzando la memoria principale per la gestione e l’archiviazione dei dati. Volt Active Data e altri IMDBMS rendono il recupero dei dati significativamente più veloce e migliorano le prestazioni complessive del sistema.
Sistema di gestione di database orientato agli oggetti (OODBMS) – db4o è un esempio di questo tipo di DBMS. Gli OODMBS sono progettati per gestire strutture di dati complesse come oggetti di archiviazione.
Sistemi di gestione di database NewSQL – I DBMS NewSQL come PostgreSQL offrono i vantaggi di scalabilità e prestazioni dei database NoSQL, pur mantenendo le proprietà ACID dei database relazionali tradizionali. Questo tipo di DBMS è progettato per ambienti distribuiti su larga scala e può gestire carichi di lavoro transazionali ad alta velocità.
Sistemi di gestione di database di serie temporali – I DBMS di serie temporali come InfluxDB ottimizzano l’archiviazione, il recupero e l’analisi dei dati con data e ora. Sono spesso utilizzati per supportare l’analisi finanziaria e i sistemi di monitoraggio dell’Internet of Things (IoT).
Database Management Systems più conosciuti
Esempi di DBMS famosi sono:
Access – un sistema di gestione dei database relazionali (RDMS) leggero, incluso in Microsoft Office e Office 365. | |
Amazon RDS – un DBMS cloud nativo che offre motori per la gestione di database MySQL, Oracle, SQL Server, PostgreSQL e Amazon Aurora. | |
Apache Cassandra – un sistema di gestione di database distribuiti open-source, noto per essere in grado di gestire enormi quantità di dati. | |
Filemaker – un DBMS relazionale low-code/no-code (LCNC). | |
Google Cloud Spanner – un servizio di database relazionale distribuito a livello globale, scalabile orizzontalmente e fortemente coerente, offerto da Google Cloud. | |
IBM Db2 – una famiglia di sistemi di gestione di database relazionali sviluppata da IBM, che offre varie edizioni per ambienti e carichi di lavoro diversi. | |
MariaDB – un database relazionale open-source fork di MySQL. | |
Microsoft Azure SQL Database – un servizio di database relazionale basato sul cloud fornito da Microsoft Azure che offre database SQL completamente gestiti. | |
MongoDB – Un popolare sistema di gestione di database NoSQL che utilizza uno schema orientato ai documenti per offrire elevata scalabilità e flessibilità. | |
MySQL – un sistema di gestione di database relazionali (RDBMS) open-source di proprietà di Oracle. | |
Oracle – un RDMS proprietario ottimizzato per le architetture cloud ibride. | |
PostgreSQL – un sistema di gestione di database relazionali open-source, noto per la sua robustezza, scalabilità e ampiezza di funzioni. | |
SAP HANA – un RDBMS in-memory, orientato alle colonne e ottimizzato per l’ingestione di dati in tempo reale e l’analisi ad alte prestazioni. | |
SQL Server – un sistema di gestione di database relazionali di livello aziendale di Microsoft, in grado di gestire volumi di dati e query di database estremamente grandi. | |
SQLite – un motore di database relazionale leggero e basato su file, molto utilizzato nei sistemi embedded e nelle applicazioni mobili. | |
Teradata – un potente motore SQL che offre soluzioni scalabili per la gestione e l’analisi di grandi volumi di dati. |
Vantaggi dell’utilizzo di un DBMS
I sistemi di gestione dei database DBMS sono particolarmente importanti nelle situazioni in cui più utenti o applicazioni interagiscono contemporaneamente con gli stessi database. Il DBMS protegge da conflitti ed errori con meccanismi di controllo della concorrenza che assicurano che, anche in scenari ad alto traffico, l’integrità dei dati rimanga intatta.
Un altro vantaggio è che i sistemi di gestione dei database offrono un’ampia gamma di caratteristiche, meccanismi e funzionalità di sicurezza. Gli amministratori possono definire le regole di controllo degli accessi, assegnare ruoli agli utenti e specificare le autorizzazioni per garantire che solo le persone autorizzate possano inserire, accedere e manipolare i dati.
Poiché i DBMS forniscono audit trail e funzionalità di registrazione per tracciare e monitorare l’uso e le modifiche degli accessi ai dati, sono utili strumenti di conformità.
Ad esempio, un DBMS può aiutare gli amministratori a gestire il ciclo di vita dei dati, implementando politiche di conservazione, archiviazione ed eventuale smaltimento dei dati. Un DBMS può anche contribuire a far rispettare i controlli sulla privacy, fornendo meccanismi di anonimizzazione o crittografia dei dati sensibili,
Le sfide dei sistemi di gestione dei database
Sebbene i sistemi di gestione dei database abbiano rivoluzionato il modo in cui le piccole e grandi imprese gestiscono i dati, la curva di apprendimento per l’implementazione e la gestione dei DBMS aziendali può essere impegnativa. Ciò è particolarmente vero se il DBMS deve essere integrato con i sistemi di pianificazione delle risorse aziendali (ERP) o con le piattaforme di gestione delle relazioni con i clienti (CRM).
L’implementazione di un nuovo DBMS può anche essere costosa. Anche le aziende di medie dimensioni dovranno probabilmente assumere o contrattare con un amministratore di database esperto per garantire che il loro DBMS sia configurato, mantenuto e ottimizzato correttamente. Anche i costi di licenza, l’infrastruttura hardware, gli aggiornamenti del software e le spese di manutenzione continua possono mettere a dura prova i bilanci, soprattutto per le organizzazioni più piccole.
Il futuro del DBMS
I DBMS di oggi incorporano tecnologie all’avanguardia come l’intelligenza artificiale (AI), il machine learning (ML) e la blockchain per affrontare le sfide dei big data e aiutare le organizzazioni a rimanere conformi alle normative e agli standard di Data Management.
- I DBMS dotati di funzionalità AI e ML possono automatizzare compiti come l’ottimizzazione delle query, l’indicizzazione dei dati e il rilevamento delle anomalie. I sistemi di gestione dei database intelligenti possono imparare dai modelli di dati, adattarsi ai carichi di lavoro in evoluzione e ottimizzare le prestazioni in modo autonomo.
- I database abilitati alla Blockchain possono fornire un’archiviazione dei dati immutabile e trasparente e consentire transazioni sicure e verificabili. Questo tipo di sistema di gestione dei database elimina la necessità di autorità centrali, pur migliorando l’integrità dei dati. Questo li rende ideali per settori come la finanza, la catena di approvvigionamento e la sanità, dove i rischi e gli impatti della manomissione dei dati sono significativi.
- I DBMS con funzionalità integrate di elaborazione dei flussi stanno diventando fondamentali per casi d’uso come l’analisi in tempo reale, il rilevamento delle frodi e le esperienze personalizzate dei clienti. Con l’aumento dell’Internet of Things (IoT) e delle fonti di dati in streaming, i DBMS dovranno gestire l’elaborazione dei dati in tempo reale in modo ancora più efficiente.