Database management system: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Correzione d eufonica |
sistemo un'po' |
||
Riga 1:
{{F|basi di dati|ottobre 2012}}
In [[informatica]], un '''''Database Management System''''', abbreviato in '''DBMS''' o '''Sistema di gestione di basi di dati''' è un [[sistema software]] progettato per consentire la creazione e la manipolazione (da parte di un amministratore) e l'interrogazione efficiente (da parte di uno o più utenti) di [[database]] (ovvero di collezioni di [[Dato|dati]] strutturati), per questo detto anche "gestore o motore del database", e ospitato su architettura [[hardware]] [[special purpose|dedicata]] oppure su semplice [[computer]]. I DBMS svolgono un ruolo fondamentale in numerose applicazioni informatiche, dalla [[contabilità]], alla gestione delle [[risorse umane (economia)|risorse umane]] e alla [[finanza]] fino a contesti tecnici come la [[gestione di rete]] o la [[telefonia]].
Se in passato i DBMS erano diffusi principalmente presso le grandi [[azienda|aziende]] e istituzioni (che potevano permettersi l'impegno economico derivante dall'acquisto delle grandi infrastrutture [[hardware]] necessarie per realizzare un sistema di database efficiente), oggi il loro utilizzo è diffuso praticamente in ogni contesto. L'espressione [[applicazione enterprise]], che nel gergo informatico si riferisce ad applicazioni legate al ''business'' delle aziende che le utilizzano, implica quasi "per definizione" la presenza di una o più basi di dati amministrate da uno o più DBMS.
Riga 18:
=== Integrità ===
Il DBMS può mantenere l'integrità del database non consentendo a più utenti di modificare lo stesso record contemporaneamente (blocco del record). Il database può impedire l'immissione di due record duplicati; per esempio può essere impedita l'immissione nel database di due clienti con lo stesso numero identificativo (
=== Interrogazioni e modifiche ===
Riga 36:
Le organizzazioni possono usare un DBMS per gestire il normale processo quotidiano delle transazioni e in un secondo tempo spostare il dettaglio in un altro computer che usa un altro DBMS più adatto per gestire interrogazioni casuali e l'attività di analisi. Le decisioni globali circa l'architettura dei sistemi informativi, sono gestite dagli analisti di sistema e dagli amministratori dei dati. La progettazione di dettaglio del database è demandata agli amministratori del database stesso.
I tre tipi di organizzazione più comuni sono il [[modello gerarchico]], il [[modello reticolare]] e il [[modello relazionale]]. Il modello dominante oggi è quello relazionale, normalmente utilizzato con il linguaggio di interrogazione [[SQL]]. Molti DBMS supportano le API (''[[Application programming interface]]'') dell'''[[ODBC|Open Database Connectivity]]'' (ODBC) o ''[[JDBC|Java Database Connectivity]]'' (JDBC, lo standard per [[Java (linguaggio)|Java]]), che forniscono ai programmatori strumenti standardizzati per l'accesso ai database.
I ''[[database server]]'' sono [[computer]] ottimizzati per ospitare i programmi che costituiscono il database reale e sui quali girano solo il DBMS e il software a esso correlato (nelle situazioni reali spesso questi computer svolgono anche altre funzioni non correlate con la gestione del database). Di solito si tratta di macchine [[multiprocessore]] e con [[disco rigido|dischi fissi]] configurati in modalità [[RAID]] per una [[memoria (informatica)|memorizzazione]] stabile e affidabile dei dati che garantisca la continuità del servizio anche in caso di [[guasto]] a un componente (sistemi ''fault tolerant'' o ad alta [[affidabilità]] e [[disponibilità]]). In ambienti dove vengono processate transazioni con moli di dati particolarmente elevate vengono utilizzati anche componenti ''hardware'' che hanno la funzione specifica di acceleratori di database e che sono collegati a uno o più [[server]] attraverso canali preferenziali ad alta [[velocità di trasmissione]].
Riga 47:
=== Database Navigazionali ===
Con la crescita della capacità elaborativa dei calcolatori questo contrasto con la flessibilità andò attenuandosi, con la creazione negli [[anni 1960|anni sessanta]] di una serie di database utilizzabili per diverse applicazioni. L'interesse nel fissare uno standard crebbe, e [[Charles W. Bachman]], creatore di uno di questi prodotti, (
Nel [[1971]] tale standard fu prodotto e prese il nome di
Questo approccio era basato sulla navigazione manuale in un insieme di dati disposti sotto forma di rete. Alla prima apertura del programma, il programma si apriva sul primo dato disponibile, contenente, tra le altre cose, un [[puntatore (input/output)|puntatore]] ai dati successivi. Per trovare un dato il programma attraversava la serie di puntatori fino a trovare il dato corretto. Delle semplici ''[[query]]'' come "Trova tutte le persone nate in Svezia" richiedevano l'attraversamento dell'intero set di dati.<br />
Non esisteva, dunque, alcuna funzione di ricerca; oggi, questo potrebbe sembrare una limitazione, ma all'epoca, essendo i dati archiviati su [[nastro magnetico]], operazioni come quelle evidenziate sopra non erano particolarmente costose in termini di tempo.
Nel [[1968]], la [[IBM]] sviluppò un proprio sistema [[DBMS]], chiamato
Ambedue le soluzioni presero poi il nome di "database navigazionali" a causa del metodo di consultazione che era stato previsto. Inoltre, [[Charles Bachman]], in occasione della premiazione nel [[1973]] in cui gli venne conferito il [[Premio Turing]], presentò un lavoro intitolato "Il programmatore come navigatore". IMS è abitualmente classificato come un database [[Modello gerarchico|gerarchico]], mentre IDS e IDMS (ambedue database ''CODASYL''), CINCOMs e [[TOTAL]] sono classificati come database a rete (o [[Modello reticolare|reticolari]]).
Riga 59:
=== Database Relazionali ===
{{vedi anche|RDBMS}}
I DBMS relazionali sono detti anche RDBMS (''Relational DBMS'').
[[Edgar F. Codd]] lavorava alla sede [[california]]na della [[IBM]] come ricercatore sulla nascente tecnologia degli [[hard disk]] quando osservò l'inefficienza dell'approccio ''Codasyl'' con la nuova modalità di memorizzazione dei dati, inefficienza principalmente dovuta all'assenza di una funzione di ricerca. Nel [[1970]] cominciò a produrre diversi documenti schematizzanti un nuovo approccio alla costruzione delle basi di dati, culminati nel "[[Modello relazionale]] per Basi di dati condivise" (''
In questo articolo, descrisse un nuovo sistema per archiviare e modificare grandi quantità di dati. Invece di utilizzare delle "righe" (in [[Lingua inglese|inglese]], ma anche molto usato in [[lingua italiana|italiano]]: ''"[[record (informatica)|record]]"'' o anche "[[tupla|tuple]]") collegate tra di loro attraverso un qualche tipo di struttura "ad albero", come in ''Codasyl'', ritenne di utilizzare una "tabella" di righe a lunghezza fissa. Questo sistema sarebbe stato molto inefficiente nell'archiviazione di dati "sparsi", in cui la tabella avrebbe potuto avere diverse "celle" vuote; tale errore di impostazione fu corretto dividendo i dati in diverse tabelle, in cui gli elementi opzionali venivano spostati, anziché sprecare spazio nella tabella principale.
Riga 73:
Utilizzando una branca della [[matematica]] chiamata "calcolo delle ''tuple''", dimostrò che questo sistema era in grado di compiere tutte le normali operazioni di amministrazione dei database (inserimento, cancellazione, etc.) e che inoltre consentiva di disporre di uno strumento semplice per trovare e visualizzare gruppi di dati tramite un'unica operazione.
LA [[IBM]] cominciò a implementare questa teoria in alcuni prototipi all'inizio degli [[anni 1970|anni settanta]], come nel ''"System R"''. La prima versione fu realizzata nel [[1974]]/[[1975|75]] con uno strumento "monotabella"; negli anni successivi furono studiati i primi sistemi che potessero supportare la suddivisione dei dati in tabelle separate, utile, come abbiamo visto, per la separazione dei dati opzionali in tabelle diverse da quella principale. Versioni "multiutente" furono realizzate nel [[1978]] e nel [[1979]]; negli stessi anni fu standardizzato il linguaggio [[SQL]]. La superiorità di questo sistema rispetto a ''Codasyl'' fu quindi evidente e la IBM passò a sviluppare una versione commerciale di ''"System R"'', che prese il nome di "SQL/DS" prima e di "Database 2" (DB2) infine.
Il lavoro di Codd venne proseguito presso l'[[Università di Berkeley]] da [[Eugene Wong]] e [[Michael Stonebraker]]. Il loro progetto, chiamato [[INGRES]] e finanziato con fondi destinati alla creazione di un database [[geografia|geografico]], vide la luce nel [[1973]] e produsse i primi risultati nel [[1974]] anche grazie all'opera di numerosi [[studente|studenti]] che si prestarono quali programmatori (quasi 30 persone lavorarono al progetto). [[INGRES]] era assai simile a ''"System R"'' e prevedeva un linguaggio alternativo a [[SQL]], chiamato [[QUEL]].
Molte delle persone coinvolte nel progetto si convinsero della fattibilità commerciale dello stesso e fondarono imprese per entrare nel mercato con questo prodotto. Sybase, Informix, NonStop SQL e alla fine Ingres stessa nacquero quali ''"spin-off"'' per la diffusione di [[INGRES]] all'inizio degli [[anni 1980|anni ottanta]]. Perfino [[Microsoft]] SQL Server è, per certi versi, una derivazione di ''"Sybase"'' e, quindi, di [[INGRES]]. Solamente la [[Oracle]] di [[Larry Ellison]] partì utilizzando un approccio diverso, basato sul ''"System R"'' della IBM, e alla fine prevalse sulle altre compagnie con il suo prodotto, lanciato nel [[1978]].
In [[Svezia]] il lavoro di Codd venne sviluppato nella [[Università di Uppsala]] che sviluppò un diverso prodotto, ''"[[Mimer SQL]]"'', commercializzato nel [[1984]]. Una particolarità di questa soluzione sta nell'introduzione del concetto di [[Transazione (basi di dati)|transazione]], successivamente importata in quasi tutti i DBMS.
=== Database multidimensionali ===
Riga 99:
Questo può avvenire grazie al particolare concetto di proprietà dei database multidimensionali. Nella programmazione a oggetti, ognuno di questi "oggetti" tipicamente ne conterrà altri. Ad esempio, l'oggetto contenente il Signor Rossi, conterrà un riferimento all'oggetto "Indirizzo". Contenendo il supporto per molti linguaggi di programmazione a oggetti, i database che sfruttano la medesima tecnologia stanno avendo un periodo di forte sviluppo di questi tempi.
Oggi molti DBMS applicano in realtà un misto tra il modello relazionale e il modello a oggetti. Si parla quindi di ORDBMS (''Object Relational DBMS'').
== Architettura di un DBMS ==
Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo sicuro per lunghi periodi di tempo.
Un DBMS fornisce agli utenti questi servizi:
*
*
*
Si considerano due diversi tipi di utenti:
* utenti convenzionali/applicazioni che modificano dati e formulano interrogazioni
* l'amministratore della base di dati (''database administrator'' - DBA) responsabile per la struttura, lo schema e la gestione della base di dati
Nell'architettura di un DBMS abbiamo le seguenti sezioni:
Riga 134:
Si occupa di individuare il blocco in cui è presente la tupla di interesse.
Un utente con privilegi di amministratore dichiara al sistema come gestire gli accessi, tramite una [[
Il DBMS dovrebbe consentire l'accesso in scrittura a una generica risorsa informatica, a un solo utente alla volta. Se due utenze accedono alla stessa risorsa, apportando modifiche, si hanno due casi:
Riga 147:
In effetti, le operazioni che mette a disposizione il gestore del buffer sono queste:
* FIX: con questo comando si dice al gestore del buffer di caricare un blocco dal disco e restituire il puntatore all'area di memoria in cui lo si è caricato. Se il blocco era già in memoria, il gestore del buffer deve solo restituire il puntatore, altrimenti deve caricarlo dal disco e portarlo in memoria. Se il buffer in memoria è pieno però si possono avere
** esiste la possibilità di liberare una porzione di memoria perché occupata da transazioni già terminate. In questo caso prima di liberare l'area si scrive il contenuto sul disco se qualche blocco di quest'area era stato modificato.
** Non esiste la possibilità di liberare memoria perché occupata tutta da transizioni ancora in corso. In questo caso il gestore del buffer può lavorare in 2 modalità: nella prima modalità (STEAL) il gestore del buffer libera della memoria occupata da una transizione già attiva, salvando eventualmente le modifiche sul disco; nella seconda modalità (NOT STEAL) la transizione che ha richiesto il blocco viene fatta attendere finché non si libera memoria.
|