Basi di dati distribuite

Distribuzione dei dati. Esistono vari paradigmi per la suddivisione dei dati:

  • Architettura client-server: separazione tra client e server della base di dati (client che richiedono servizi e server che offrono servizi)
  • Basi di dati distribuite: la stessa applicazione utilizza diversi database server . le basi di dati distribuite richiedono di riesaminare
    • come l’utente può specificare le interrogazioni
    • come la tecnologia server può essere estesa ad un contesto distribuito

Nelle basi di dati distribuite gli utenti devono sapere dove i dati sono memorizzati, per ovvi motivi di efficienza. Inoltre è impensabile che ci possa essere una atomicità nelle transazioni distribuite.

Le basi di dati distribuite inoltre rispondono a reali esigenze applicative, infatti le imprese sono strutturalmente distribuite, ed una gestione distribuita dei dati permette di distribuire il controllo e l'elaborazione dei dati.
Offrono una maggiore flessibilità, modularità e resistenza ai guasti. (Nonostante più complesso è un sistema più si guasta un sistema distribuito reagisce ai guasti con un calo di prestazione anziché un totale failure).

In una base di dati distribuita ogni server ha la capacità di gestire le applicazioni in modo indipendente. Una base di dati distribuita dovrebbe minimizzare le interazioni e la necessità di trasmettere dati attraverso la rete. La distribuzione dei dati dovrebbe essere pianificata in modo tale che le applicazioni possano operare in modo indipendente su un singolo server.

  • Basi di dati parallele: diversi supporti di memorizzazione e processori utilizzati in parallelo per migliorare le prestazioni . Viene utilizzato per migliorare la gestione delle query (parallelismo fra le interrogazioni) o per migliorare la singola query (parallelismo all'interno di una singola interrogazione)
  • Basi di dati replicate: dati che rappresentano logicamente la stessa informazione sono memorizzati fisicamente su diversi server. Vengono utilizzate per massimizzare:
    • disponibilità dei dati;
    • affidabilità dei dati.

Classificazione delle applicazioni distribuite. Le applicazioni distribuite possono essere classificate in base ai DBMS coinvolti:

  • basi di dati distribuite omogenee: tutti i server hanno lo stesso DBMS
  • basi di dati distribuite eterogenee: i server hanno DBMS diversi

oppure rispetto alla rete:

  • possono utilizzare una rete locale LAN (local area network)
  • possono utilizzare una rete WAN (wide area network)

Teorema CAP

Il teorema CAP, noto anche come teorema di Brewer, afferma che è impossibile per un sistema informatico distribuito fornire simultaneamente tutte e tre le seguenti garanzie:

  • Coerenza (tutti i nodi vedano gli stessi dati nello stesso momento)
  • Disponibilità (la garanzia che ogni richiesta riceva una risposta su ciò che è riuscito o fallito)
  • Tolleranza di partizione (il sistema continua a funzionare nonostante arbitrarie perdite di messaggi)

Secondo il teorema, un sistema distribuito è in grado di soddisfare al massimo due di queste garanzie allo stesso tempo, ma non tutte e tre.

Confronto con sistemi centralizzati

Vantaggi sistemi distrubuiti:

  • Maggior suddivisione del lavoro
  • Nessuna dipendenza da un sistema centrale
  • Maggior controllo
  • Maggior adeguatezza software
  • Maggiore scalabilità
  • Eliminazione del single point of failure

Svantaggi sistemi distribuiti:

  • Minor controllo centralizzato
  • Manca una visione completa
  • Propagazione delle modifiche dei dati è difficile
  • Manuntenzione sistemi diversi
  • Modifiche non generali e note per tutti
  • Gestioni situazioni diverse

Vantaggi sistemi centralizzati:

  • Controllo centralizzato dei dati
  • Visione di insieme centrale
  • Veloce recupero dei dati

Svantaggi sistemi centralizzati:

  • Non funzionano più tutti i sistemi se si guasta il centrale
  • Maggiore potenza di calcolo
  • Devo prevedere la gestione di tutti i problemi (piccole/grandi realtà)

Frammentazione dei dati

Data una relazione R, la sua frammentazione consiste nel determinare dei frammenti Ri di R applicando a R operazioni algebriche

  • frammentazione orizzontale: i frammenti Ri sono gruppi di tuple che hanno lo stesso schema di R (ottenibili come selezione su R) i frammenti orizzontali sono generalmente disgiunti.
  • frammentazione verticale: ogni frammento Ri ha come schema un sottoschema dello schema di R (ottenibile come proiezione su R) i frammenti verticali devono includere la chiave primaria.

Una frammentazione è corretta se è:

  • completa: ogni dato in R deve essere presente in uno dei frammenti Ri
  • ricostruibile: il contenuto di R deve essere ricostruibile a partire da quello dei suoi frammenti la frammentazione è una tecnica di organizzazione dei dati che permette una distribuzione e un’elaborazione efficiente

Ogni frammento Ri corrisponde ad un diverso file fisico ed è allocato su un diverso server quindi la relazione è un’entità virtuale (come una vista) mentre i frammenti sono effettivamente memorizzati lo schema di allocazione descrive il mapping da relazioni o frammenti al server su cui sono memorizzati. Tale mapping può essere:

  • non ridondante: quando ogni frammento o relazione è memorizzato su un singolo server
  • ridondante: quando almeno un frammento o relazione è memorizzato su più di un server (in questo caso si parla anche di replica)

Trasparenza nei sistemi distribuiti

Nei sistemi distribuiti ci sono tre livelli di trasparenza significativi: trasparenza di frammentazione, di allocazione e di linguaggi. Inoltre un sistema distribuito può non essere trasparente.

Trasparenza di frammentazione. il programmatore non si deve
preoccupare del fatto che la base di dati sia distribuita
o frammenta, infatti il programmatore scrive le interrogazioni come se il db sia centralizzato

SELECT Nome FROM Impiegati WHERE Imp=10;
INSERT INTO Impiegati (Nome) VALUES ('Luigi')
UPDATE Impiegati SET Nome = 'Marco' WHERE Imp = 10;

Trasparenza di allocazione. il programmatore deve conoscere la
struttura dei frammenti, ma non deve indicare la loro
collocazione. In caso di replicazione, il programmatore non deve
indicare quale copia viene acceduta (trasparenza di
replicazione)

SELECT Nome FROM Impiegati1 WHERE Imp=10;
--if(!result)
SELECT Nome FROM Impiegati2 WHERE Imp=10;
--if(!result)
SELECT Nome FROM Impiegati3 WHERE Imp=10;
--...
INSERT INTO Impiegati1 (Nome) VALUES ('Luigi');
UPDATE Impiegati1 SET Nome = 'Marco' WHERE Imp = 10;
--if(!result)
UPDATE Impiegati2 SET Nome = 'Marco' WHERE Imp = 10;
--if(!result)
UPDATE Impiegati3 SET Nome = 'Marco' WHERE Imp = 10;
--...

Trasparenza di linguaggio. il programmatore deve indicare nell’interrogazione sia la struttura dei frammenti che la loro collocazione.

SELECT Nome FROM Impiegati@DB1 WHERE Imp=10;
--if(!result)
SELECT Nome FROM Impiegati@DB2 WHERE Imp=10;
--if(!result)
SELECT Nome FROM Impiegati@DB3 WHERE Imp=10;
--...
INSERT INTO Impiegati (Nome) VALUES ('Luigi');
UPDATE Impiegati@DB1 SET Nome = 'Marco' WHERE Imp = 10;
--if(!result)
UPDATE Impiegati@DB2 SET Nome = 'Marco' WHERE Imp = 10;
--if(!result)
UPDATE Impiegati@DB3 SET Nome = 'Marco' WHERE Imp = 10;
--...

Transazioni nei sistemi distribuiti

Si possono classificare in:

  • richieste remote: transazioni read-only costituite da un numero arbitrario di interrogazioni SQL, rivolte ad un singolo DBMS remoto (che può solo essere interrogato)
  • transazioni remote: transazioni costituite da un numero arbitrario di comandi SQL (select, insert, delete, update), rivolti ad un singolo DBMS remoto (ogni transazione scrive su un DBMS)
  • transazioni distribuite: transazioni costituite da un numero arbitrario di comandi SQL (select, insert, delete, update), rivolti ad un numero arbitrario di DBMS remoti (ogni transazione può scrivere su più DBMS, ma ogni comando si riferisce ad un DBMS)
  • richieste distribuite: transazioni costituite da un numero arbitrario di comandi SQL (select, insert, delete, update), in cui ogni comando SQL può essere rivolto ad ogni DBMS remoto

Proprietà ACID e sistemi distribuiti. la distribuzione dei dati non influenza la proprietà di consistenza (Consistency) e persistenza (Durability) delle transazioni

Mentre le altre due proprietà (Isolation e Atomicity) vengono gestite tramite commit a più fasi (2 o 4) e tramite l'utilizzo di lock per la protezione dei blocchi critici

Le query vengono ottimizzate da un ottimizzatore: Esso è necessaria quando un DBMS riceve una richiesta distribuita il DBMS interrogato è responsabile dell’ottimizzazione globale. L'otimizzatore decide come suddividere l’interrogazione in sottointerrogazioni, ciascuna rivolta ad uno specifico DBMS e costruisce un piano di esecuzione distribuito, che consiste nell’esecuzione coordinata di vari programmi in vari DBMS e nello scambio di dati tra di DBMS. Viene utilizzato il metodo di lamport per gestire alcune informazioni sui blocchi critici.

results matching ""

    No results matching ""