Database distribuito: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m typo
m Altri progetti: Aggiunto il parametro "Preposizione" nel template "Interprogetto"
 
(17 versioni intermedie di 13 utenti non mostrate)
Riga 1:
In [[informatica]] un '''database distribuito''' è un [[database]] che si trova sotto il controllo di un [[Databasedatabase management system]] ('''DBMS''') nel quale gli archivi di [[dati]] non sono [[memoria (informatica)|memorizzati]] sullo stesso [[computer]] bensì su più elaboratori o nodi. In altri termini il database in senso fisico può essere dislocato in più [[computer]] situati nello stesso luogo, oppure distribuito in una [[Rete informatica|rete di computer]] connessi tra loro sotto forma appunto di [[sistema distribuito]].
 
== Descrizione ==
Formalmente si ha uno schema logico globale comune a tutti i nodi ed un insieme di schemi logici locali che dipendono funzionalmente da quello globale.
 
Per passare dallo schema logico globale a quelli locali si operano delle trasformazioni chiamate frammentazioni.
 
Il [[DBMS]] serve a strutturare i dati ed accedere in modo intelligente eed efficace alle informazioni ed inoltre deve garantire:
* [[affidabilità]] perché i dati devono essere mantenuti anche in caso di malfunzionamento;
* [[confidenzialità|riservatezza]], perché i dati devono essere [[protezione del database|protetti]], per impedire che il database venga danneggiato da interventi non autorizzati ([[attacco ai database]]).
Inoltre il DBMS deve essere in grado di garantire le proprietà ACID come nel caso di un DBMS centralizzato.
 
==Descrizione==
 
=== Architetture possibili ===
Esistono diverse modalità possibili di distribuzione dei dati:
* '''Frammenti orizzontali''': sottoinsiemi di [[tupla|tuple]] (righe) da una [[Modello relazionale|relazione]] (tabella).
* '''Frammenti verticali''': sottoinsiemi di [[attributo (basi di dati)|attributi]] (colonne) da una relazione (tabella).
* '''Frammenti misti''': combinazione di frammenti orizzontali e verticali o una collezione di oggetti in un [[Base di dati a oggetti|database a oggetti]] (OODB).
* '''Database distribuiti omogenei''': utilizzano solo un DBMS (ad esempio [[MySQL]] o [[Oracle Database|Oracle]]).
* '''Database distribuiti eterogenei''': utilizzano diversi DBMS (ad esempio [[MySQL]] e [[PostgreSQL]]).
 
Gli utenti possono accedere ai database distribuiti attraverso:
Line 26 ⟶ 24:
=== Considerazioni ===
I database distribuiti richiedono una attenta gestione per garantire che:
* La distribuzione sia trasparente,; gli utenti cioè siano in grado di interagire con il sistema come se fosse un unico sistema logico, sia dal punto di vista delle prestazioni che per quanto riguarda i metodi di accesso;
* Le [[transazione (basi di dati)|transazioni]] siano trasparenti,; ogni transazione cioè mantenga l'integrità del database tra tutti i database distribuiti. Ciò normalmente si ottiene suddividendo la transazione principale in sub-transazioni, una per ogni database coinvolto.
 
== Frammentazione ==
La frammentazione è una proprietà tipica del DBMS distribuito che permette di allocare diverse porzioni del Database su nodi diversi. Esistono diverse tipologie di frammentazione:
* '''frammentazione verticale''', che tocca gli attributi di una specifica tabella;
* '''frammentazione orizzontale primaria''', che tocca porzioni di tuple di una tabella;
* '''frammentazione orizzontale derivata''', che tocca porzioni di tuple di due tabelle diverse unendole in un'unica tabella tramite chiave;
* '''frammentazione composta''', che è una combinazione delle precedenti.
In generale la frammentazione deve rispettare le seguenti proprietà:
* completezza,: ogni record della tabella di partenza deve essere poter ritrovato in uno dei due frammenti;
* ricostruibilità,: la tabella di partenza deve essere ricostruita senza perdita di informazione a partire dai frammenti;
* disgiunzione,: ogni record della tabella deve essere rappresentato in uno solo dei frammenti o, in alternativa, si parla di replicazione.
 
=== Frammentazione Verticaleverticale ===
Una frammentazione verticale è una partizione della relazione R in n relazioni dette ''frammenti'' definite:
 
Line 78 ⟶ 76:
<math>R_i \cup ... \cup R_n = R</math>
 
La proprietà di ricostruibilità è sempre garantita dall'unione.
 
== Replicazione ==
La replicazione è una proprietà tipica del DBMS distribuito che permette di allocare stesse porzioni del Database su nodi diversi. La replicazione si ritiene utile al fine di ridurre il trasferimento di informazioni tra i diversi nodi nell'ambito della stessa transazione o interrogazione. Dall'utilizzo della replicazione si ha un aumento della località dei dati utilizzati da ogni applicazione; masi introduce tuttavia il problema delle transazioni multiple, ossia transazioni da eseguire su più nodi contemporaneamente.
 
== Trasparenza ==
La trasperenzatrasparenza è una proprietà tipica del DBMS distribuito che permette alle applicazioni di non conoscere nulla sulla dislocazione dei dati ma accedervi come se fosse un Database centralizzato.
 
Il DBMS fornisce diversi livelli di trasparenza, alcuni ereditati dalla tecnologia di DBMS centralizzato altri necessari per la gestione dell'architettura distribuita:
Line 90 ⟶ 88:
* Trasparenza logica (tipica dei DBMS centralizzati), indipendenza dell'applicazione dalle modifiche allo schema logico del Database;
* Trasparenza di rete; indipendenza dell'applicazione dalla dislocazione dei dati nei diversi nodi, l'applicazione non conosce la topologia della rete;
* TrasperenzaTrasparenza di frammentazione, indipendenza dell'applicazione dalla frammentazione dei dati, l'applicazione non conosce come sono frammentate le relazioni;
* Trasparenza di replicazione, indipendenza dell'applicazione dalla replicazione dei dati, l'applicazione non conosce quali siano le replicazioni presenti;
* Trasparenza di modello o linguaggio, indipendenza dell'applicazione dal modello o dal linguaggio utilizzato.
Line 99 ⟶ 97:
*Elmasri and Navathe, ''Fundamentals of database systems'' (3rd edition), Addison-Wesley Longman, ISBN 0-201-54263-3
 
== AltriVoci progetticorrelate ==
{{interprogetto|v=Basi di dati distribuite}}
 
*[[Blockchain]]
 
== Altri progetti ==
{{interprogetto|v=Basi di dati distribuite|preposizione=sui}}
 
{{Controllo di autorità}}
{{portale|informatica}}
 
[[Categoria:Basi di dati distribuite]]
 
 
[[Categoria:Basi di dati]]