DBMS distribuito - Strategie di progettazione
Nell'ultimo capitolo abbiamo introdotto diverse alternative di design. In questo capitolo studieremo le strategie che aiutano nell'adozione dei progetti. Le strategie possono essere sostanzialmente suddivise in replicazione e frammentazione. Tuttavia, nella maggior parte dei casi, viene utilizzata una combinazione dei due.
Replica dei dati
La replica dei dati è il processo di archiviazione di copie separate del database in due o più siti. È una tecnica popolare di tolleranza agli errori dei database distribuiti.
Vantaggi della replica dei dati
Reliability - In caso di guasto di qualsiasi sito, il sistema di database continua a funzionare poiché una copia è disponibile in un altro sito (i).
Reduction in Network Load- Poiché sono disponibili copie locali dei dati, l'elaborazione delle query può essere eseguita con un utilizzo ridotto della rete, in particolare durante le prime ore. L'aggiornamento dei dati può essere effettuato in orari non ottimali.
Quicker Response - La disponibilità di copie locali dei dati garantisce una rapida elaborazione delle query e, di conseguenza, tempi di risposta rapidi.
Simpler Transactions- Le transazioni richiedono un numero inferiore di join di tabelle ubicate in siti diversi e un coordinamento minimo sulla rete. Pertanto, diventano di natura più semplice.
Svantaggi della replica dei dati
Increased Storage Requirements- Il mantenimento di più copie di dati è associato a maggiori costi di archiviazione. Lo spazio di archiviazione richiesto è in multipli dello spazio di archiviazione richiesto per un sistema centralizzato.
Increased Cost and Complexity of Data Updating- Ogni volta che un elemento di dati viene aggiornato, l'aggiornamento deve riflettersi in tutte le copie dei dati nei diversi siti. Ciò richiede tecniche e protocolli di sincronizzazione complessi.
Undesirable Application – Database coupling- Se non vengono utilizzati meccanismi di aggiornamento complessi, la rimozione dell'incoerenza dei dati richiede un coordinamento complesso a livello di applicazione. Ciò si traduce in un'applicazione indesiderata - accoppiamento del database.
Alcune tecniche di replica comunemente utilizzate sono:
- Replica snapshot
- Replica quasi in tempo reale
- Replica pull
Frammentazione
La frammentazione è il compito di dividere una tabella in una serie di tabelle più piccole. Vengono chiamati i sottoinsiemi della tabellafragments. La frammentazione può essere di tre tipi: orizzontale, verticale e ibrida (combinazione di orizzontale e verticale). La frammentazione orizzontale può essere ulteriormente classificata in due tecniche: frammentazione orizzontale primaria e frammentazione orizzontale derivata.
La frammentazione dovrebbe essere eseguita in modo tale che la tavola originale possa essere ricostruita dai frammenti. Ciò è necessario in modo che la tavola originale possa essere ricostruita dai frammenti quando necessario. Questo requisito è chiamato "ricostruttività".
Vantaggi della frammentazione
Poiché i dati vengono archiviati vicino al sito di utilizzo, l'efficienza del sistema di database è aumentata.
Le tecniche di ottimizzazione delle query locali sono sufficienti per la maggior parte delle query poiché i dati sono disponibili localmente.
Poiché i dati irrilevanti non sono disponibili nei siti, è possibile mantenere la sicurezza e la privacy del sistema di database.
Svantaggi della frammentazione
Quando sono richiesti dati da diversi frammenti, le velocità di accesso possono essere molto elevate.
In caso di frammentazioni ricorsive, il lavoro di ricostruzione richiederà tecniche costose.
La mancanza di copie di backup dei dati in siti diversi può rendere il database inefficace in caso di guasto di un sito.
Frammentazione verticale
Nella frammentazione verticale, i campi o le colonne di una tabella sono raggruppati in frammenti. Per mantenere la ricostruttività, ogni frammento dovrebbe contenere il campo oi campi della chiave primaria della tabella. La frammentazione verticale può essere utilizzata per rafforzare la riservatezza dei dati.
Ad esempio, si consideri che un database universitario conserva i record di tutti gli studenti registrati in una tabella Student con lo schema seguente.
ALUNNO
Regd_No | Nome | Corso | Indirizzo | Semestre | Commissioni | Marks |
Ora, i dettagli delle commissioni vengono mantenuti nella sezione conti. In questo caso, il designer frammenterà il database come segue:
CREATE TABLE STD_FEES AS
SELECT Regd_No, Fees
FROM STUDENT;
Frammentazione orizzontale
La frammentazione orizzontale raggruppa le tuple di una tabella in base ai valori di uno o più campi. Anche la frammentazione orizzontale dovrebbe confermare la regola della ricostruttività. Ogni frammento orizzontale deve avere tutte le colonne della tabella di base originale.
Ad esempio, nello schema degli studenti, se i dettagli di tutti gli studenti del corso di informatica devono essere mantenuti presso la School of Computer Science, il progettista frammenterà orizzontalmente il database come segue:
CREATE COMP_STD AS
SELECT * FROM STUDENT
WHERE COURSE = "Computer Science";
Frammentazione ibrida
Nella frammentazione ibrida, viene utilizzata una combinazione di tecniche di frammentazione orizzontale e verticale. Questa è la tecnica di frammentazione più flessibile poiché genera frammenti con informazioni estranee minime. Tuttavia, la ricostruzione della tabella originale è spesso un'operazione costosa.
La frammentazione ibrida può essere eseguita in due modi alternativi:
Inizialmente, genera una serie di frammenti orizzontali; quindi generare frammenti verticali da uno o più dei frammenti orizzontali.
Inizialmente, genera una serie di frammenti verticali; quindi generare frammenti orizzontali da uno o più dei frammenti verticali.