In informatica un database distribuito è un database che si trova sotto il controllo di un Database management system (DBMS) nel quale gli archivi di dati non sono 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 di computer connessi tra loro sotto forma appunto di sistema distribuito.

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 e efficace alle informazioni ed inoltre deve garantire:

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 tuple (righe) da una relazione (tabella).
  • Frammenti verticali: sottoinsiemi di attributi (colonne) da una relazione (tabella).
  • Frammenti misti: combinazione di frammenti orizzontali e verticali o una collezione di oggetti in un database a oggetti (OODB).
  • Database distribuiti omogenei: utilizzano solo un DBMS (ad esempio MySQL o Oracle).
  • Database distribuiti eterogenei: utilizzano diversi DBMS (ad esempio MySQL e PostgreSQL).

Gli utenti possono accedere ai database distribuiti attraverso:

  • Applicazioni locali: applicazioni che non richiedono dati da altri siti;
  • Applicazioni globali: applicazioni che richiedono dati da altri siti.

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 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 distributo 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 Verticale

Una frammentazione verticale è una partizione della relazione R in n relazioni dette frammenti definite:

 

 

genericamente

 

La frammentazione verticale soddisfa la proprietà di completezza

 

Per garantire la proprietà di ricostruibilità:

 

Frammmentazione orizzontale

Una frammentazione orizzontale è una partizione definita su una relazione R tale che:

 

lo schema resti uguale in ogni frammento

 

ogni frammento contiene un sottoinsieme dei record di R

 

normalmente un frammento definito da una selezione

La frammentazione orizzontale soddisfa la proprietà di completezza:

 

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.

Trasparenza

La trasperenza è 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.

Bibliografia

  • M. T. Özsu and P. Valduriez, Principles of Distributed Databases (3rd edition) (2011), Springer, ISBN 978-1-4419-8833-1
  • Elmasri and Navathe, Fundamentals of database systems (3rd edition), Addison-Wesley Longman, ISBN 0-201-54263-3

Altri progetti


  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica