Database management system: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Annullate le modifiche di Del duca gennaro (discussione), riportata alla versione precedente di CortoFrancese Etichetta: Rollback |
Funzionalità collegamenti suggeriti: 2 collegamenti inseriti. Etichette: Modifica visuale Modifica da mobile Modifica da web per mobile Attività per i nuovi utenti Suggerito: aggiungi collegamenti |
||
(45 versioni intermedie di 29 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]]
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 ==
[[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. Il DBMS accetta richieste di dati da parte del programma applicativo e "istruisce" il sistema operativo per il trasferimento dei dati appropriati, svolgendo un ruolo fondamentale in 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]].
===
==== Controllo degli accessi ====
{{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.
==== 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]]").
====
{{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.
Riga 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 ====
{{...|informatica}}
==== Astrazione della base dati ====
{{vedi anche|progettazione di basi di dati}}
{{...|informatica}}
== 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{{'}}''[[
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]].
Riga 59 ⟶ 71:
# Logging/recovery
# Transaction manager
# Recovery
Una suddivisione alternativa semplificata (ma parziale), utile a comprendere per linee generali il comportamento di un DBMS, potrebbe essere questa:
Riga 75 ⟶ 87:
Un utente con privilegi di amministratore dichiara al sistema come gestire gli accessi, tramite una [[tavola CRUD]].
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:
# se salvano contemporaneamente il loro lavoro, sorge un conflitto di edizione;
Riga 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 ===
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.
Un DBMS deve essere in grado di fronteggiare diverse tipologie di guasti:
* guasti di sistema;
* guasti di memoria secondaria o di un dispositivo di memorizzazione.
Un guasto di sistema può essere un system crash dovuto ad un errore software o hardware, un errore di sistema di applicativo, dovuto ad esempio ad una [[divisione per zero]], un errore generato dalle condizioni logiche durante l'esecuzione di una transazione. Questo tipo di guasto causa la perdita dei dati contenuti nel buffer ma la memoria di massa rimane comunque valida.
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 ====
Per risolvere il problema dei guasti un DBMS può utilizzare diverse strategie:
* ''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.
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.
Riga 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 ==
{{vedi categoria|Software per basi di dati}}
{{colonne}}
* [[Software]] proprietario
** [[4th Dimension]]
** [[CUBRID]]
** [[dBase]]
** [[IBM DB2|IBM DB1/2]]
** [[Caché]] ([[InterSystems]])
** [[Dataphor]] un [[RDBMS]] "''veramente''-relazionale" che rispetta tutte le [[12 regole di Codd|regole di Codd]].
** [[FileMaker Pro]] ([[FileMaker Inc.]], posseduta da [[Apple]])
** [[
** [[INGRES]] ([[Computer Associates]])
** [[InterBase]] ([[Borland]])
Riga 143 ⟶ 151:
** [[Netezza]]
** [[Oracle Database|Oracle]] ([[Oracle Corporation]])
** [[Paradox (database)|Paradox]] (Borland)
** [[SQL Anywhere Studio]]
** [[Sybase SQL Server]]
** [[Teradata]] ([[NCR Corporation]])
** [[TimesTen]] (TimesTen, Inc.)
{{colonne spezza}}
* [[Open source]] o [[free software]]
** [[Apache Derby]]
Riga 161 ⟶ 171:
** [[Percona Server]] (Percona)
** [[Orient ODBMS]]
** [[PicoSQL]] (un DBMS italiano)
** [[PostgreSQL]], in precedenza ''Postgres'' (PostgreSQL Global Development Group)
** [[SQLite]] (di pubblico dominio)
** [[Visual FoxPro]] (FoxBase)
** [[ZODB]]
** [[SADAS]]
{{colonne fine}}
== 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 ==
* [[
* [[Sistema informativo]]
* [[Customer Information Control System]]
* [[Data warehouse]]
* [[Persistenza (informatica)]]
* [[OLAP]]
== Altri progetti ==
{{interprogetto|v=Materia: Basi di dati 2|preposizione=sul}}
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{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}}
|