Un database è un archivio digitale per memorizzare, gestire e proteggere raccolte organizzate di dati.
I vari tipi di database memorizzano i dati in modi diversi. Ad esempio, i database relazionali memorizzano i dati in tabelle definite con righe e colonne, mentre i database non relazionali possono memorizzare i dati come una varietà di strutture di dati, incluse coppie chiave-valore o grafici.
Le organizzazioni utilizzano questi diversi tipi di database per gestire diversi tipi di dati. I database relazionali offrono i risultati migliori con dati strutturati come i registri finanziari. I database non relazionali sono la soluzione migliore per tipi di dati non strutturati come file di testo, audio e video. I database vettoriali memorizzano i dati come incorporamenti vettoriali, un formato utilizzato da numerose applicazioni di AI generativa.
Le aziende possiedono grandi quantità di dati, spesso misurati in petabyte, ossia quadriliardi di bit, su tutto, dai dati sulle transazioni dei clienti all'inventario dei prodotti, dai processi interni alla ricerca proprietaria. Questi dati devono essere organizzati in un'architettura di dati coerente per consentire agli utenti e alle app di accedervi quando ne hanno bisogno.
I database sono fondamentali per la creazione di un'architettura dei dati di questo tipo. Sono più di un semplice luogo in cui memorizzare le informazioni. Piuttosto, consentono alle organizzazioni di gestire centralmente i dati, applicare gli standard di integrità e sicurezza dei dati e agevolare l'accesso ai dati.
Con sistemi di database adatti, le organizzazioni possono usare set di dati di alta qualità per iniziative aziendali chiave, tra cui progetti di business intelligence (BI), AI e apprendimento automatico (ML).
Spesso il termine "database" viene usato in modo piuttosto approssimativo, il che può creare confusione su cosa sia e cosa non sia un database.
Un database è un sistema per la memorizzazione e la gestione dei dati, che comprende sia l'hardware fisico su cui sono memorizzati i dati, sia il software che organizza e controlla l'accesso ai dati.
I database sono alla base di gran parte dell'infrastruttura IT moderna, inclusi siti Web, app e piattaforme come Amazon e Google. Questi servizi non sono database di per sé, ma piuttosto si basano su database per gestire le informazioni, come gli inventari dei prodotti o i risultati di ricerca.
Vale anche la pena notare che Microsoft Excel non è un database, ma un'applicazione per fogli di calcolo. Un foglio di calcolo di Excel organizza i dati in righe e colonne in modo molto simile a un database relazionale, ma il foglio di calcolo è un singolo file. I database, tuttavia, sono sistemi robusti e gestiti centralmente in grado di memorizzare numerosi tipi diversi di dati, in numerosi formati diversi, supportando al contempo query più avanzate.
Le organizzazioni utilizzano diversi tipi di database per gestire diversi tipi di dati e supportare diverse applicazioni. Alcuni dei tipi di database più comuni includono:
I database di navigazione memorizzano i dati in serie di record collegati. Gli utenti devono navigare tra questi record per raggiungere i dati desiderati, da cui il nome.
I due tipi più comuni di database di navigazione sono i database gerarchici e i database di rete.
I database gerarchici dispongono i dati in una struttura ad albero di record padre e record figlio. Ogni record figlio può avere un solo genitore, ma i record genitori possono avere più figli. Per raggiungere il record desiderato, gli utenti devono partire dalla cima dell'albero e scendere.
I database di rete si comportano in modo molto simile ai database gerarchici, ad eccezione del fatto che consentono di collegare ogni record figlio a più record padri. Gli utenti devono comunque navigare tra i record collegati, in genere utilizzando i puntatori per arrivare ai dati desiderati.
I database di navigazione un tempo erano comuni, ma i progressi nella tecnologia dei database, in particolare nello sviluppo del modello di dati relazionali, li hanno resi molto meno popolari.
I database relazionali memorizzano i dati in tabelle formattate di righe e colonne. A volte vengono chiamati "database SQL" in quanto numerosi database relazionali supportano l'uso del linguaggio di query strutturato (SQL) per interrogare e manipolare i dati. (Per ulteriori informazioni, vedi "Linguaggi di database".)
Ogni tabella in un database relazionale contiene informazioni su un tipo di entità. Ad esempio, un'organizzazione potrebbe avere una tabella che contiene informazioni su tutti i suoi clienti, oltre a tabelle separate che descrivono in dettaglio la cronologia degli acquisti di ogni singolo cliente.
Lo scienziato IBM Edgar F. Codd ha sviluppato il modello relazionale negli anni '70. Questo modello ha rapidamente superato la popolarità del modello di navigazione, in quanto semplifica notevolmente l'operazione di recupero dei dati. Invece di specificare i percorsi tra i record, gli utenti possono utilizzare le istruzioni SQL per nominare i dati che desiderano. Il database capisce come recuperare i record pertinenti, spesso utilizzando indici invece di scansioni di tabelle complete per accelerare il processo.
I database relazionali hanno inoltre ridotto la ridondanza, in quanto ogni datapoint deve essere memorizzato una sola volta. I dati di diverse tabelle possono essere combinati in una visione d'insieme senza dover duplicare i dati.
I database relazionali sono alcuni dei database più comuni attualmente disponibili. Sono adatti per la gestione di set di dati strutturati con un formato standard, come transazioni finanziarie o informazioni di contatto degli utenti.
Una classe più recente di database relazionali, chiamata "Database NewSQL", mira a rendere il modello relazionale più scalabile adottando un'architettura di database distribuita, ovvero distribuendo i dati su più server di database.
Con il termine generico "database non relazionale" si intende un qualsiasi database che non memorizza i dati in un formato rigido, come una tabella. A volte prendono il nome di "database NoSQL" in quanto di solito non richiedono SQL per navigare.
I database non relazionali sono nati per supportare tipi di dati non strutturati e semistrutturati, come testo e immagini in formato libero, che non si adattano perfettamente alle tabelle relazionali.
I tipi comuni di database non relazionali includono:
Database a grafo che memorizzano i dati come "nodi" (che rappresentano le entità) ed "edges" (che ne rappresentano le relazioni). I database a grafo spesso vengono utilizzati per tenere traccia delle relazioni, ad esempio delle connessioni tra gli utenti di un sito di social networking.
I database di documenti memorizzano i dati come documenti, inclusi formati come JSON, XML e BSON. I database di documenti sono comuni nei sistemi di gestione dei contenuti.
I database chiave-valore memorizzano le informazioni come coppie chiave-valore, in cui le chiavi sono identificatori univoci (come l'ID di un carrello digitale) e i valori sono array di dati (come gli articoli nel carrello).
I database a colonna larga utilizzano righe e colonne come i database relazionali. La differenza è che ogni riga può avere il proprio set distinto di colonne in cui vengono memorizzate informazioni diverse rispetto alle altre righe. I database a colonne larghe spesso vengono utilizzati per supportare i data warehouse, in cui i dati devono essere estratti da più origini e centralizzati.
I database orientati agli oggetti, chiamati anche database di oggetti, memorizzano i dati come oggetti nel senso della programmazione orientata agli oggetti.
Gli oggetti sono fondamentalmente pacchetti di informazioni e codice associato. Ogni oggetto rappresenta un'entità. Gli oggetti sono raggruppati in classi e hanno attributi che descrivono i propri metodi e caratteristiche che ne definiscono il comportamento.
Ad esempio, un oggetto nella classe "gatto" potrebbe avere gli attributi "colore" e "peso" e i metodi "fusa" e "caccia".
I database orientati agli oggetti hanno guadagnato popolarità negli anni '90 insieme alla programmazione orientata agli oggetti. I database relazionali possono creare problemi per alcune app create con linguaggi orientati agli oggetti, in quanto gli oggetti dati devono essere convertiti in tabelle per essere memorizzati in questi database. I database orientati agli oggetti consentono agli sviluppatori di evitare questo problema.
I database vettoriali memorizzano le informazioni come array di numeri chiamati "vettori", che vengono raggruppati in base alla similarità. Ad esempio, un modello meteorologico potrebbe memorizzare le temperature minime, medie e massime di un singolo giorno in forma vettoriale: [62, 77, 85].
I vettori possono inoltre rappresentare oggetti complessi come parole, immagini, video e audio. Questi dati vettoriali ad alta dimensionalità sono fondamentali per l'apprendimento automatico, l'elaborazione del linguaggio naturale (NLP) e altre attività di AI.
I database vettoriali sono comuni nei casi d'uso di AI e apprendimento automatico (ML). Ad esempio, numerose implementazioni dei framework di retrieval-augmented generation (RAG) —che consentono a modelli linguistici di grandi dimensioni (LLM) di recuperare fatti da una base di conoscenza esterna—utilizzano database vettoriali.
I database cloud sono database ospitati su cloud. Qualsiasi tipo di database, relazionale, non relazionale o altro, può essere un database su cloud.
Esistono due tipi principali di database su cloud. Il primo, e più semplice, è un sistema di database autogestito che viene eseguito nel cloud. Il secondo prende il nome di database as a service (DBaaS).
DBaaS è un servizio di cloud computing che consente agli utenti di accedere e utilizzare il software del database senza gestire direttamente il sistema. Come suggerisce il nome, i provider DBaaS offrono una suite di servizi di database, tra cui aggiornamenti, backup, sicurezza del database e altro ancora.
I database su cloud sono più scalabili rispetto ai database on-premise. Se un'organizzazione ha bisogno di maggiore spazio di storage o se le prestazioni iniziano a diminuire, può aumentare le risorse in base alle necessità.
I database multimodello possono memorizzare più di un tipo di dati. Ad esempio, IBM® Db2 cloud database può supportare dati XML, JSON, di testo e spaziali in un'unica istanza di database.
I database in memoria memorizzano le informazioni nella memoria principale o nella RAM di un dispositivo. Le applicazioni in genere possono recuperare i dati dalla RAM più velocemente rispetto a un database tradizionale, quindi i database in memoria vengono spesso utilizzati per memorizzare nella cache i dati e supportare il trattamento dei dati in tempo reale. Tuttavia, la capacità di storage è molto più limitata e i dati possono essere facilmente persi in quanto la RAM è più volatile di un database standard.
I database non sono l'unico modo per organizzare i dati e le organizzazioni spesso utilizzano storage dei dati diversi per supportare iniziative diverse.
I database sono costruiti principalmente per l'acquisizione automatizzata dei dati, le query rapide e l'elaborazione delle transazioni.
I data lake sono ambienti di storage a basso costo progettati per gestire enormi quantità di dati non strutturati e dati strutturati non elaborati. A differenza dei database, i data lake generalmente non puliscono, convalidano o normalizzano i dati. In genere ospitano grandi quantità di dati per supportare attività come l'addestramento dell'AI e l'analytics dei big data in cui le prestazioni in tempo reale sono meno importanti.
I data warehouse sono progettati per supportare le attività di analytics, business intelligence e data science dei dati. Aggregano i dati provenienti da vari database, li puliscono e li preparano in modo che siano pronti per l'uso.
Data lakehouses combinano le funzionalità di warehouse e lakehouse in un'unica soluzione di gestione dei dati. Una lakehouse combina uno storage a basso costo con un motore di query ad alte prestazioni e una governance intelligente dei metadati. Consente alle organizzazioni di memorizzare grandi quantità di dati strutturati e dati non strutturati e di utilizzarli facilmente per attività di AI, apprendimento automatico (ML) e analytics.
Ad alto livello, un sistema di database ha 2 componenti chiave: il sistema di data storage, che ospita fisicamente o logicamente i dati, e il sistema di gestione del database (DMBS), che consente agli utenti di interagire con i dati memorizzati.
È anche possibile dare un'occhiata più approfondita ai componenti di un sistema di database per comprendere ancora meglio cosa fa funzionare un database.
I database devono memorizzare i dati da qualche parte, su un qualche tipo di hardware. Detto questo, i database non richiedono macchine specializzate.
Invece, la maggior parte dei sistemi di database sono composti da software di database che vengono eseguiti su un computer, un server o un altro dispositivo. La macchina offre l'hardware fisico su cui viene eseguito il database. Il software gestisce la disposizione logica dei dati. Ad esempio, la formattazione dei dati come tabelle in un database relazionale o grafici in un database a grafo.
Un database e le applicazioni che lo utilizzano possono essere eseguiti sullo stesso componente hardware, ma oggi la maggior parte dei sistemi di database utilizza un'architettura multilivello che separa i server app dai server database. Questa disposizione offre maggiore scalabilità e affidabilità. I server di app e database possono scalare in modo indipendente l'uno dall'altro e le interruzioni in un livello non devono influire sugli altri livelli.
Un modello di dati è una rappresentazione visiva di un sistema informativo. I modelli sono strumenti concettuali che gli amministratori e i progettisti di database utilizzano per comprendere i tipi di dati che devono tracciare, le relazioni tra i datapoint e come organizzare al meglio i dati.
Il modello di dati aiuta a individuare il modello di database corretto, ovvero l'implementazione pratica del sistema di database, inclusi i requisiti tecnici e i formati di storage. Ad esempio, il modello di dati logico precedente potrebbe generare un database relazionale simile al seguente:
Tecnicamente e logicamente, uno schema di database definisce il modo in cui i dati sono organizzati all'interno di un database. In altre parole, traduce il modello di dati in un insieme di regole che il database deve seguire.
Ad esempio, uno schema di database relazionale può definire elementi come nomi di tabelle, campi, tipi di dati e relazioni tra questi elementi.
Gli schemi possono essere rappresentati attraverso grafici visivi, scritte con istruzioni SQL o altri linguaggi di programmazione o definiti in altro modo. Dipende dal tipo di schema e dal sistema di database in questione.
Tutti i sistemi di database relazionali hanno degli schemi. Alcuni database non relazionali hanno schemi, altri non li hanno e altri li consentono ma non li richiedono.
Un sistema di gestione di database (DBMS) è un software che consente agli amministratori di database, agli utenti e alle app di interfacciarsi facilmente con i dati in un database.
I sistemi DBMS consentono agli utenti di eseguire attività chiave di gestione dei dati come la formattazione dei database, la gestione dei metadati, l'interrogazione di set di dati e l'aggiunta, l'aggiornamento o l'eliminazione dei dati.
Alcuni DBMS aiutano a far rispettare le misure di sicurezza dei dati, ad esempio applicando controlli di accesso al database e registrando le attività degli utenti. Potrebbero anche tenere traccia delle prestazioni del database.
Come i database stessi, i DBMS possono variare nel modello. Ad esempio, i sistemi di gestione di database relazionali (RDBMS) sono costruiti per i database relazionali, mentre i sistemi di gestione di database orientati agli oggetti (OODBMS) gestiscono database orientati agli oggetti.
Alcuni dei sistemi di gestione di database più comuni includono:
MySQL si tratta di un RDBMS open source spesso utilizzato per i siti di e-commerce e altre app web.
PostgreSQL è noto per la sua enfasi sull'estensibilità e sull'affidabilità delle transazioni.
Microsoft SQL Server è ampiamente utilizzato dalle organizzazioni con reti Microsoft.
Oracle Database è un DBMS multimodello in grado di gestire dati strutturati e dati non strutturati.
IBM Db2 è un sistema di database cloud-native che include gestione del database, warehousing, storage e altre funzioni per supportare la real-time analytics e le applicazioni di AI.
I linguaggi di database sono linguaggi di programmazione specializzati che le persone utilizzano per interagire con i database. Forniscono agli utenti una sintassi per scrivere query per recuperare, combinare, aggiornare o utilizzare in altro modo i dati.
Il linguaggio di database più comune è il linguaggio SQL (Structured Query Language), utilizzato dalla maggior parte dei database relazionali. SQL è stato sviluppato da scienziati IBM negli anni '70 e aiuta amministratori di database, sviluppatori e analisti di dati a svolgere attività quali la definizione dei dati, il controllo degli accessi, la condivisione dei dati, l' integrazione dei dati e le query analitiche.
Altri linguaggi di database includono OQL (Object Query Language), che funziona con database orientati agli oggetti, e XQuery, che funziona con database di documenti XML.
Esistono inoltre linguaggi specifici per i database, come MongoDB query language (MQL) per MongoDB e Cassandra query language (CQL) per Apache Cassandra.
I database sono fondamentali per numerose tecnologie su cui le persone oggi fanno affidamento, dalle app bancarie che tengono traccia delle transazioni finanziarie nei database relazionali agli assistenti di AI che utilizzano database vettoriali per migliorare la precisione. I database sono così comuni proprio perché sono fondamentali per supportare:
Le organizzazioni oggi possiedono enormi quantità di dati, ma questo non significa molto se le persone non possono utilizzare tali dati. In effetti, l'IBM Data Differentiator riporta che ben il 68% dei dati aziendali non viene mai analizzato. Spesso questo avviene perché le persone non sanno che esiste o perché i silo impediscono loro l'accesso.
I database offrono alle organizzazioni un modo per rendere accurata, memorizzare e gestire centralmente una raccolta di dati. Possono inoltre aiutare ad automatizzare gran parte del processo di raccolta dei dati, inclusa l'acquisizione di eventi e transazioni in tempo reale.
Il modo in cui un'organizzazione seleziona, progetta e implementa le proprie applicazioni di database può creare o distruggere iniziative aziendali chiave. Quando i dati sono organizzati e facilmente accessibili, possono indirizzare il processo decisionale, alimentare la business intelligence e potenziare i progetti di AI e di apprendimento automatico (ML).
I database possono offrire vantaggi significativi rispetto ai fogli di calcolo e ad altri processi manuali di registrazione, che sono soggetti a errori, ridondanza e imprecisioni.
Dal momento che i database possono essere gestiti centralmente, possono facilitare l'applicazione delle regole di pulizia e formattazione, monitorare l'utilizzo e tenere traccia della data lineage. I database eliminano inoltre la necessità di far circolare più copie di set di dati, che possono diventare non sincronizzati nel tempo. Al contrario, ogni applicazione e ogni utente possono lavorare sullo stesso repository condiviso.
In definitiva, i database possono aiutare a connettere utenti di ogni tipo, persone, app, API, con dati puliti e affidabili.
A seconda della sede e del settore, le organizzazioni devono rispettare le normative sulla protezione e la privacy dei dati, come l'Health Insurance Portability and Accountability Act (HIPAA) degli Stati Uniti e il Regolamento generale sulla protezione dei dati (GDPR) dell'UE.
Oltre ai requisiti legali, le organizzazioni hanno un interesse commerciale a prevenire l'accesso non autorizzato ai dati. Secondo il Report Cost of a Data Breach, la violazione in media costa 4,88 milioni di dollari tra perdita di attività, tempo di inattività del sistema, attività di correzione e altri costi.
I database possono aiutare a proteggere i dati e mantenere la conformità applicando misure di sicurezza dei dati come i controlli degli accessi basati sui ruoli (RBAC) per garantire che solo gli utenti giusti possano accedere ai dati giusti.
Il 75% dei CEO ritiene che avere a disposizione l'AI generativa più avanzata sarà un fattore decisivo per il vantaggio competitivo organizzativo in futuro. Per supportare queste AI, le organizzazioni devono avere la capacità di memorizzare, gestire e governare enormi quantità di dati strutturati e dati non strutturati. Possono farlo solo con i giusti sistemi di database.
Diversi tipi di database possono supportare le attività di AI e di apprendimento automatico (ML) in diversi modi. Ad esempio, i database vettoriali sono usati comunemente per implementare framework RAG che possono aiutare a ridurre le allucinazioni. I database chiave-valore possono accelerare il recupero e l'elaborazione dei dati. I database in memory possono supportare la memorizzazione nella cache e lo streaming analytics.
Diversi fattori possono influenzare i tipi di database che un'organizzazione sceglie per un'iniziativa specifica. Alcune dei più rilevanti includono:
Tipo di dati: ogni tipo di database gestisce alcuni tipi di dati meglio di altri. Ad esempio, un database a grafo è spesso una scelta migliore per la mappatura delle relazioni rispetto a un SQL database.
Scopo: diversi tipi di database sono anche più adatti a diverse applicazioni. Ad esempio, un database vettoriale è spesso la scelta migliore per un framework RAG.
Requisiti di prestazioni: se un'app estrae costantemente dati in tempo reale, l'organizzazione ha bisogno di un database che ottimizzi la velocità delle query. Tuttavia, se l'organizzazione ha bisogno di un posto dove memorizzare i dati prima di inviarli a un warehouse, le prestazioni potrebbero essere meno importanti.
Prezzo: la quantità di dati che un'organizzazione deve memorizzare, il formato di tali dati e i requisiti delle prestazioni possono tutti contribuire al costo del database.
Scalabilità: alcuni database possono scalare solo verticalmente, il che significa che è necessario aggiungere più risorse a un server o a una macchina esistente. Altri database possono scalare orizzontalmente, il che significa che è possibile aggiungere più server per supportare il database in modo distribuito.