Database management system: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
correggo errori di wl e nomi, rimuovo lista ''altri DB'' presente da anni.
Principali sistemi esistenti: fix testo, fix vari; Voci correlate: rimuovo ridondanze da testo
 
(41 versioni intermedie di 25 utenti non mostrate)
Riga 1:
{{F|basi di dati|ottobre 2012}}
[[File:Applications-database.svg|thumb|Il simbolo tipicamente utilizzato per rappresentare database o DBMS]]
 
In [[informatica]], unUn '''''Databasedatabase Managementmanagement Systemsystem''''', abbreviato(in inacronimo '''DBMS''', o '''Sistema{{lett|sistema di gestione didella basibase di dati''',|lingua=it}})<ref>{{Treccani|dbms|DBMS}}</ref> è un [[sistema software]] progettato per consentire la creazione, la manipolazione e l'interrogazione efficiente di [[database]], per questo detto anche "''gestoreuna o motore del database''", è ospitato su architetturapiù [[hardware]]base [[specialdi purposedati|dedicata]]basi oppuredi su semplice [[computerdati]]. Lain teoriamodo deicorretto databaseed e dei DBMS rappresenta da sempre uno dei filoni più solidi e importanti dell'[[informatica]]efficiente.
Talvolta ci si riferisce ai DBMS utilizzando impropriamente il termine ''[[database]]''<ref>{{treccani|data-base|Database|v=1}}</ref> (o "base di dati" in italiano), a causa dell'[[accoppiamento (informatica)|accoppiamento]] tipicamente stretto tra l'archivio dati e il software di gestione.
 
== Descrizione ==
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.
[[File:Screenshot-mysql-client-text-debian.png|thumb|[[Client]] [[MySQL]] a [[riga di comando]]]]
[[File:Turbobird_screenshot.png|thumb|[[Screenshot]] [[Firebird SQL]]]]
[[File:MSAccess2019.png|thumb|[[Microsoft Access]]]]
 
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.
 
Un DBMS è differente dal concetto generale di [[applicazione (informatica)|applicazione]] sulle [[banche dati]] in quanto è progettato per sistemi multi-utente: i DBMS si appoggiano a [[kernel]] che supportano nativamente il [[multitasking]] e il collegamento in [[Reti di calcolatori|rete]], infatti una tipica applicazione per la gestione dei database non includerebbe queste funzionalità, ma si appoggerebbe al [[sistema operativo]] per consentire all'utente di usufruirne.
 
Un DBMS controlla anche la sicurezza e l'integrità del database e può essere costituito da un insieme complesso di programmi [[software]] che controllano l'organizzazione, la memorizzazione e il reperimento dei dati ([[Campo (informatica)|campi]], [[record (database)|record]] e archivi) in un database. Un DBMS controlla anche la sicurezza e l'integrità del database. Il DBMS accetta richieste di dati da parte del programma [[applicazione (informatica)|applicativo]] e "istruisce" il [[sistema operativo]] per il trasferimento dei dati appropriati., I DBMS svolgonosvolgendo un ruolo fondamentale in numerose applicazioni informatiche di ogni genere, dalla [[contabilità]], alla gestione delle [[risorse umane]] e alla [[finanza]] fino a contesti tecnici come la [[gestione di rete]] o la [[telefonia]].
== Descrizione ==
Un DBMS può essere costituito da un insieme complesso di programmi [[software]] che controllano l'organizzazione, la memorizzazione e il reperimento dei dati ([[Campo (informatica)|campi]], [[record (database)|record]] e archivi) in un database. Un DBMS controlla anche la sicurezza e l'integrità del database. Il DBMS accetta richieste di dati da parte del programma [[applicazione (informatica)|applicativo]] e "istruisce" il [[sistema operativo]] per il trasferimento dei dati appropriati. I DBMS svolgono un ruolo fondamentale in numerose applicazioni informatiche, dalla [[contabilità]], alla gestione delle [[risorse umane]] e alla [[finanza]] fino a contesti tecnici come la [[gestione di rete]] o la [[telefonia]].
 
=== AutorizzazioniFunzionalità tipiche ===
 
==== Controllo degli accessi ====
Il sistema di sicurezza dei dati impedisce agli utenti non [[autorizzazione (informatica)|autorizzati]] di visualizzare o aggiornare il database. Mediante l'uso di ''[[password]]'' (parole d'ordine) agli utenti è permesso l'accesso all'intero database o a un suo sottoinsieme: in questo secondo caso si parla di ''subschema''. Per esempio un database di impiegati può contenere tutti i dati riguardanti un singolo soggetto e un gruppo di utenti può essere autorizzato a vedere solamente i dati riguardanti lo stipendio, mentre altri utenti possono essere autorizzati a vedere solamente le informazioni che riguardano la sua storia lavorativa e la situazione sanitaria.
{{vedi anche|Controllo degli accessi}}
 
Il sistema di sicurezza dei dati impedisce agli utenti non [[autorizzazione (informatica)|autorizzati]] di visualizzare o aggiornare il database. Mediante l'uso di ''[[password]]'' (parole d'ordine) agli utenti è permesso l'accesso all'intero database o a un suo sottoinsieme: in questo secondo caso si parla di ''subschema''. Per esempio, un database di impiegati può contenere tutti i dati riguardanti un singolo soggetto e un gruppo di utenti può essere autorizzato a vedere solamente i dati riguardanti lo stipendio, mentre altri utenti possono essere autorizzati a vedere solamente le informazioni che riguardano la sua storia lavorativa e la situazione sanitaria.
=== Integrità ===
 
==== Mantenimento dell'integrità ====
{{vedi anche|ACID|Vincoli di 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 ("campi chiave"). Le regole che determinano l'integrità e la consistenza di una [[base di dati]] prendono il nome di [[vincoli di integrità]] referenziale (proprietà "[[ACID]]").
 
==== InterrogazioniGestione edelle modifichetransazioni ====
{{vedi anche|Transazione (basi di dati)}}
 
I [[Query language|linguaggi di interrogazione]] del database mediante ''[[query]]'' (interrogazioni) e i generatori di ''report'' permettono agli utenti di interrogare in maniera interattiva il database e di analizzarne i dati.
Line 24 ⟶ 35:
Se il DBMS fornisce un modo per aggiornare e immettere nuovi dati nel database, oltre che per interrogarlo, questa capacità permette di gestire database personali. Comunque queste funzionalità non danno la possibilità di mantenere traccia delle revisioni e non forniscono gli strumenti necessari alla gestione di una organizzazione multi-utente. Questi controlli sono disponibili solamente quando un insieme di programmi applicativi è appositamente costruito per gestire e coordinare ciascuna funzione di immissione o modifica dei dati.
 
==== Ottimizzazione delle interrogazioni ====
=== DBMS e sistemi informativi ===
{{...|informatica}}
 
==== Astrazione della base dati ====
Un [[sistema informativo]] commerciale è costituito da soggetti (clienti, impiegati, venditori) e attività (ordini, pagamenti, acquisti, ecc.). La [[progettazione]] del [[database]] (''[[database design]]'') è il processo decisionale su come organizzare questi dati in tipi di record e su come ciascun tipo di record si relaziona con gli altri. Il DBMS dovrebbe rispecchiare la struttura dei dati dell'organizzazione e gestire in maniera efficiente le varie [[transazione (basi di dati)|transazioni]].
{{vedi anche|progettazione di basi di dati}}
 
{{...|informatica}}
Quando si usa un DBMS i sistemi informativi possono essere adeguati molto facilmente al cambiamento delle richieste informative dell'organizzazione. Possono essere aggiunte al database nuove categorie di dati senza dover stravolgere il sistema esistente.
 
== Architettura ==
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 DatabaseDataBase Connectivity]]'' (JDBC, lo standard per [[Java (linguaggio di programmazione)|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 per garantire 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]].
Line 59 ⟶ 71:
# Logging/recovery
# Transaction manager
# Recovery Managementmanagement
 
Una suddivisione alternativa semplificata (ma parziale), utile a comprendere per linee generali il comportamento di un DBMS, potrebbe essere questa:
Line 94 ⟶ 106:
* FLUSH: Con questo comando si forza il gestore del buffer a eseguire il salvataggio, quando ci si trova in modalità NOT FORCE.
 
=== Gestore delle operazioni di ripristino ===
== Gestione dei guasti ==
Il recovery manager è responsabile di garantire l'atomicità, la persistenza e di realizzare i comandi transazionali fondamentali quali begin transaction, end transaction, commit work, rollback work.
 
Il recovery manager è responsabile di garantire la coerenza l'atomicità, la persistenza e di realizzare i comandi transazionali fondamentali quali begin transaction, end transaction, commit work, rollback work.
L'obiettivo del recovery manager è quello di gestire il rollback di una transazione, ricostruire uno stato consistente del DB e che ne rispetti la semantica delle transazioni, in seguito ad un guasto del DBMS.
 
=== Tipi di guasti ===
Un DBMS deve essere in grado di fronteggiare diverse tipologie di guasti:
* guasti di sistema;
Line 108 ⟶ 119:
Un guasto di memoria secondaria è più complesso da gestire e può essere causato da eventi catastrofici che non permettono di avere una memoria ancora valida. Questo tipo di guasto causa una perdita fisica dei dati memorizzati ma non dei log che vengono salvati in una memoria stabile.
 
==== Strategie ====
=== Metodologie applicate dal DBMS ===
 
Per risolvere il problema dei guasti ilun DBMS utilizzapuò leutilizzare seguentidiverse metolodogiestrategie:
* ''system log,'': file sequenziale scritto in memoria sicura che registra tutte le attività svolte dalle transazioni e gli eventi del sistema quali checkpoint o dump;
* ''dump,'': copia della memoria secondaria su una memoria dislocata in un punto differente geografico;
* ''checkpoint,'': evento di sistema che permette di fotografare lo stato del DBMS al momento dell'esecuzione delle transazioni.
 
=== Operazioni ===
Per ripristinare situazioni non congruenti derivate da crash del sistema, il DBMS ha disposizione l'operazione di redo e l'operazione di undo da utilizzare tramite la lettura del log.
 
Line 121 ⟶ 132:
Per le transazioni che invece si trovano nello stato di uncommitted è necessario annullare le operazioni che stavano facendo tramite l'operazione di undo.
 
== Principali sistemi esistenti ==
=== Politiche per l'aggiornamento ===
{{vedi categoria|Software per basi di dati}}
{{...|informatica}}
{{colonne}}
 
== Database management system (DBMS) ==
{{Div col|cols=2|small=no}}
* [[Software]] proprietario
** [[4th Dimension]]
Line 134 ⟶ 143:
** [[Dataphor]] un [[RDBMS]] "''veramente''-relazionale" che rispetta tutte le [[12 regole di Codd|regole di Codd]].
** [[FileMaker Pro]] ([[FileMaker Inc.]], posseduta da [[Apple]])
** [[IBM Informix|Informix]] ([[IBM]])
** [[INGRES]] ([[Computer Associates]])
** [[InterBase]] ([[Borland]])
Line 147 ⟶ 156:
** [[Teradata]] ([[NCR Corporation]])
** [[TimesTen]] (TimesTen, Inc.)
{{colonne spezza}}
* [[Open source]] o [[free software]]
** [[Apache Derby]]
Line 161 ⟶ 171:
** [[Percona Server]] (Percona)
** [[Orient ODBMS]]
** [[PicoSQL]] (un DbmsDBMS italiano)
** Ozone
** [[PostgreSQL]], (in precedenza ''Postgres'') (PostgreSQL Global Development Group)
** [[PicoSQL]] (un Dbms italiano)
** [[PostgreSQL]] (in precedenza ''Postgres'') (PostgreSQL Global Development Group)
** [[SQLite]] (di pubblico dominio)
** [[Visual FoxPro]] (FoxBase)
** [[ZODB]]
** [[ISAMSADAS]]
{{colonne fine}}
 
{{Div col end}}
 
== Note ==
<references/>
 
== Bibliografia ==
* {{cita libro|autore = Paolo Atzeni|autore2 = Stefano Ceri|autore3 = Piero Fraternali|autore4 = Stefano Paraboschi|autore5 = Riccardo Torlone|titolo = Basi di dati|editore = McGraw-Hill|anno = 2018|edizione = 5|città = Milano|ISBN = 978-88-386-9445-5|cid = Atzeni 2018}}
* {{Cita libro|nome=Abraham|cognome=Silberschatz|nome2=Henry F.|cognome2=Korth|nome3=S.|cognome3=Sudarshan|titolo=Database system concepts|edizione=Seventh edition|data=2020|editore=McGraw-Hill|ISBN=978-0-07-802215-9}}
 
== Voci correlate ==
* [[DatabaseBase di dati]]
* [[Sistema informativo]]
* [[Customer Information Control System]]
* [[Data warehouse]]
* [[Modello relazionale]]
* [[Persistenza (informatica)]]
* [[ISAM]]
* [[VSAM]]
* [[JDBC]]
* [[ODBC]]
* [[OLAP]]
* [[XML]]
* [[DBMS e sicurezza]]
* [[Customer Information Control System]]
 
== Altri progetti ==
{{interprogetto|v=Materia: Basi di dati 2|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{cita web|http://www.methack.it/devblog/2008/07/07/introduzione-ai-dbms/|Introduzione ai DBMS}}
* {{FOLDOC}}
* {{cita web|url=http://www.methack.it/devblog/2008/07/07/introduzione-ai-dbms/|titolo=Introduzione ai DBMS|accesso=8 luglio 2008|urlarchivio=https://web.archive.org/web/20191017070643/http://www.methack.it/devblog/2008/07/07/introduzione-ai-dbms/|urlmorto=sì}}
 
{{Database management system}}