La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Paolo Missier II Semestre, 2002 Basi di Dati - Complementi Basi di Dati Distribuite.

Presentazioni simili


Presentazione sul tema: "Paolo Missier II Semestre, 2002 Basi di Dati - Complementi Basi di Dati Distribuite."— Transcript della presentazione:

1 Paolo Missier II Semestre, 2002 Basi di Dati - Complementi Basi di Dati Distribuite

2 Basi di Dati distribuite - Paolo Missier– 2 Fonti di riferimento  Basi di Dati (Atzeni, Paraboschi, Torlone, )  Tamer-Ozsu, P. Valduriez, Principles of Distributed Database Systems

3 Basi di Dati distribuite - Paolo Missier– 3 Paradigmi per la distribuzione dati  Architetture Client-server: separazione del server DB dal client  Basi di Dati distribuite: diversi server DBMS utilizzati dalla stessa applicazione  Basi di Dati Parallele: incremento delle prestazione mediante parallelismo sia di storage devices che di processore  Basi di Dati Replicate: replicazione della stessa informazione su diversi servers per motivi di performance  Data warehouses: DBMS dedicati specificamente alla gestione di dati per il supporto alle decisioni

4 Basi di Dati distribuite - Paolo Missier– 4 OLAP e OLTP  Sistemi OLTP (On-Line Transaction Processing): –Ottimizzano il throughput di transazioni di lettura e scrittura in presenza di concorrenza: transazioni al secondo –Queries senza aggregazioni o con aggregazioni semplici –Es. Prenotazioni online, ricerche per chiave –Operano su schemi logici di struttura arbitraria  Sistemi OLAP (On-Line Transaction Processing): –Ottimizzati per l’analisi dati –Queries con aggregazioni contemporanee su piu’ dimensioni –Es.: totale posti prenotati aggregati per regione e per tipo di cliente, vs totale posti prenotati per periodo e per agenzia –Operano su data warehouses:  schemi logici e strutture dati ottimizzati per l’analisi  Volumi di dati O(2 30 B)

5 Basi di Dati distribuite - Paolo Missier– 5 Portabilita’ e interoperabilita’  Portabilita’ : capacita’di eseguire le stesse applicazioni DB su ambienti runtime diversi –Compile time –Facilitata dall’aderenza a standards (e.g.: SQL-2, SQL-3)  Interoperabilita’ : capacita’ di eseguire applicazioni che coinvolgono contemporaneamente sistemi diversi ed eterogenei –Run-time –Facilitata dalla standardizzazione dei protocolli di accesso ai dati: –Database Connectivity (ODBC) –X-Open Distributed Transaction Processing (DTP) –Normalmente limitata al livello di accesso  L’eterogeneita’ a livello di schema logico e/o concettuale richiede altri strumenti di standardizzazione!

6 Basi di Dati distribuite - Paolo Missier– 6 Modello client-server  Prevede due insiemi di processi, distribuiti in generale su piu’ host connessi in rete: –Processi client: richiedono servizi –Processi server: offrono servizi  Il modello client-server prevede la definizione di: –Interfacce di servizio implementate dal server –Protocolli di accesso ai servizi che consentono al client di raggiungere le interfacce –Es. : submit(query) fa parte dell’interfaccia del servizio. E’ poi necessario un protocollo per consentire al client di invocare la richiesta  Il cliente ha un ruolo attivo. Il server e’ esclusivamente reattivo (risponde alle richieste)  Relazione 1:N tra client e server: –Un client esegue poche richieste ad un processo server, e in sequenza –Un server accoglie richieste multiple in concorrenza tra processi client multipli

7 Basi di Dati distribuite - Paolo Missier– 7 Modello client-server per data management  Il modello client-server e’ comunemente adottato dalle architetture DBMS utilizzando processi server distribuiti su rete:  Le funzioni del server sono ben definite e limitate –Il server e’ dedicato alla gestione efficiente dei dati  Retrieval, update –Il client ottiene i dati ed esegue il processing nel proprio spazio di processo  Notare che l’uso di stored procedures consente l’esecuzione di computazioni sul server –Essenziale per garantire un throughput accettabile sul server  SQL offre un paradigma di programmazione ideale per la definizione dell’interfaccia di servizio –Le queries SQL sono formulate dal client e inviate al server per l’esecuzione –Il server ritorna risultati in un formato standardizzabile (vedi ODBC) –Quindi la standardizzazione sia delle query che dei risultati consente la portabilita’ delle applicazioni nelle due direzioni:  La stessa applicazione client puo’ utilizzare server diversi  Lo stesso server puo’ accettare richieste da client eterogenei

8 Basi di Dati distribuite - Paolo Missier– 8 Requisiti degli host per client e server  Client host: –Dedicato all’interazione utente –Supporta applicazioni diverse per il processing dell’informazione (e.g. spreadsheet)  Server host: –Main memory: deve contenere il buffer del DBMS e l’area temporanea eg di esecuzione queries –CPU: deve supportare processi server concorrenti  Buffer manager, recovery manager, query processor, ecc. –Disk memory: oltre ai dati applicativi, contiene i log e altre info necessarie per l’operazione del DBMS

9 Basi di Dati distribuite - Paolo Missier– 9 Multithreading  Modello comune a tutti i server concorrenti, non specifico dei DBMS!  Uno stesso processo e’ internamente suddiviso in threads di controllo –Threads: processi lightweight che condividono le risorse allocate al processo –I threads sono sincronizzati secondo lo stesso modello dei processi concorrenti (attraverso monitors, semafori, sezioni critiche) –Il processo server definisce la strategia di allocazione dei thread alle transazioni utente (e.g. un thread per transazione)  Il lifetime del DBMS concide con il tempo di esecuzione di un pool critico di processi server  Le richieste client in arrivo su una porta predefinita vengono accolte da un listener  un thread del server in attesa su una coda  Il listener (o dispatcher) controlla l’allocazione del pool di threads alle richieste –Server class: il numero di thread (e quindi l’impegno di memoria e processore) variano dinamicamente con il carico, fino ad un limite –Le richieste possono essere sincrone o asincrone…

10 Basi di Dati distribuite - Paolo Missier– 10 Architetture two-tier e multi-tier  La logica dell’applicazione client comprende normalmente funzionalita’ diverse: –Interazione utente –Interazione con il DBMS –Interazione con altre applicazioni –Computazione sui dati  Architettura Two-tier: il client esegue l’intero set di funzionalita’ del client: thick-client  Nel caso in cui parte della logica client e’ comune a piu’ applicazioni, la parte comune puo’ essere separata:  Architettura Three-tier: client, application server e DBMS server. Ad es.: –Client: Solo interazione utente (thin client). Es. Web browser –Application server: logica comune:  Interazione con il DBMS (l’AS e’ il vero DBMS client)  Interazione con altre applicazioni (nello stesso spazio AS o in altri spazi)  Computazione sui dati  AS ospitato su host di tipo enterprise Esempi: Architetture 3-tier

11 Basi di Dati distribuite - Paolo Missier– 11 Basi di Dati Distribuite  Distribuzione dei dati su server multipli  Frammentazione: –Porzioni diverse del DB sono allocate a server diversi  Replicazione: –Esistono copie multiple di porzioni del DB, allocate su server diversi  Trasparenza: –In che modo il DDBMS rende accessibili i diversi frammenti di dati? –Un DDBMS offre diversi gradi di trasparenza nell’accesso a dati distribuiti –Gestione di transazioni globali su piu’ server Sono possibili architetture diverse, funzionali a scopi diversi Analizziamo le alternative all’interno di questo “spazio delle architetture DBMS”

12 Basi di Dati distribuite - Paolo Missier– 12 Deployment di un DDBMS: scenario di esempio AP DP Nodo 1 Roma AP Nodo 3 Padova DP Nodo 2 Milano - Progettisti Roma - Dipartimenti Roma - Progetti Roma -Contratti universita’ -Dipendenti Padova -Progettisti Milano + Roma -Personale vendite -Dati di vendita - Dipartimenti Milano - Progetti Milano

13 Basi di Dati distribuite - Paolo Missier– 13 Livelli di trasparenza  Trasparenza: separazione della semantica di alto livello (eg queries SQL) da dettagli implementativi di piu’ basso livello –In che misura l’implementazione e’ nascosta al progettista e all’utente? –Livelli di trasparenza specifici del caso distribuito:  Network, fragmentation, replication transparency  Data Independence –Logical Data Independence: indipendenza dell’applicazione da perturbazioni dello schema logico  Un’applicazione che utilizza un frammento dello schema non subisce modifiche quando altri frammenti vengono modificati –Physical Data Independence: indipendenza dell’applicazione da da perturbazioni dello schema fisico  Eccezione: performance Nei DBMS centralizzati si cerca di garantire questi livelli

14 Basi di Dati distribuite - Paolo Missier– 14 Network (distribution) Transparency  La struttura dell’applicazione non dipende dalla conoscenza dell’infrastruttura di rete  Idealmente, non c’e’ differenza tra un DBMS centralizzato e uno distribuito  Location transparency: un’operazione sui dati e’ indipendente dalla localizzazione sia dei dati che del sistema sul quale l’operazione e’ eseguita  Naming transparency: il sistema e’ in grado di indirizzare associare ogni oggetto definito nel DDB tramite un nome unico a prescindere dalla propria collocazione  Es: –In questo caso, il nome unico dell’oggetto comprende la sua collocazione logica (ma non fisica)

15 Basi di Dati distribuite - Paolo Missier– 15 Replication Transparency  La replicazione migliora la performance –Consente di supportare applicazioni con requisiti operazionali diversi sugli stessi dati –Aumenta la localita’ dei dati utilizzati da ogni applicazione –Aumenta l’affidabilita’ complessiva  Spazio delle decisioni: –Quali frammenti replicare –Quante copie mantenere –Dove allocare le copie  Trasparenza: l’applicazione puo’ indirizzare copie specifiche o solo il dato logico?  Complicazioni architetturali: –Gestione della transazioni e updates di copie multiple

16 Basi di Dati distribuite - Paolo Missier– 16 Fragmentation Transparency  Frammenti: relazione  sotto-relazioni  Problema: una query definita su un’intera relazione va ora scomposta in piu’ query, una per ogni sotto-relazione –Global query  fragment queries  La strategia di query processing e’ basata sui frammenti piuttosto che sull’intera relazione

17 Basi di Dati distribuite - Paolo Missier– 17 Trasparenza: supporto del DBMS  Transparenza di frammentazione: –L’applicazione ignora l’esistenza di frammenti  Transparenza di allocazione: –L’applicazione e’ consapevole dei frammenti, ma ne ignora l’allocazione sui nodi  Transparenza di linguaggio: –L’applicazione deve specificare sia i frammenti che il loro nodo  In assenza di trasparenza: –Ogni DBMS riconosce il proprio ‘dialetto’ SQL –Sistemi eterogenei senza standard di interoperabilita’ in comune

18 Basi di Dati distribuite - Paolo Missier– 18 Trasparenza - esempio SUPPLIER (SNum,Name,City)  Due frammenti orizzontali: –SUPPLIER1 =  City=‘London’ SUPPLIER –SUPPLIER2 =  City=‘Manchester’ SUPPLIER  Schema di allocazione:

19 Basi di Dati distribuite - Paolo Missier– 19 Transparenza di frammentazione  L’applicazione ignora l’esistenza di frammenti:  Query: procedure Query1(:snum,:name); select Name into :name from Supplier where SNum = :snum; end procedure

20 Basi di Dati distribuite - Paolo Missier– 20 Transparenza di allocazione  L’applicazione deve indirizzare i frammenti ma senza specificare la loro allocazione  In caso di replica, l’applicazione non sceglie la replica da utilizzare (replication transparency)  Query: procedure Query2(:snum,:name); select Name into :name from Supplier1 where SNum = :snum; if :empty then select Name into :name from Supplier2 where SNum = :snum; end procedure;

21 Basi di Dati distribuite - Paolo Missier– 21 Transparenza di linguaggio  L’applicazione deve indirizzare sia i frammenti che la loro allocazione  Queries espresse a livelli piu’ alti di trasparenza vengono tradotte a questo livello dall’ottimizzatore di query distribuite  Query: procedure Query3(:snum,:name); select Name into :name from where SNum = :snum; if :empty then select Name into :name from where SNum = :snum; end procedure;

22 Basi di Dati distribuite - Paolo Missier– 22 Modelli architetturali per DDBMS  Un DDBMs e’ in generale una federazione di DBMS che collaborano nel fornire servizi di accesso ai dati con livelli di trasparenza definiti –Ci riferiamo ai diversi nodi del DDBMS  E’ possibile distinguere diverse architetture  Dimensioni ortogonali utili per la classificazione: –Distribuzione –Eterogeneita’ –Autonomia: di controllo nella gestione di ogni nodo

23 Basi di Dati distribuite - Paolo Missier– 23 Autonomia  …Di design: ogni nodo adotta un proprio modello dei dati e sistema di gestione delle transazioni  …Di comunicazione: ogni nodo sceglie la porzione di dati che intende condividere con altri nodi  …Di esecuzione: ogni nodo decide in che modo eseguire le transazioni che gli vengono sottoposte  Distinzioni tipiche su questa dimensione: –Tightly integrated DBMS  Dati logicamente centralizzati  Un unico data manager responsabile delle tansazioni applicative  I data managers non operano in modo autonomo –Semi-autonomous  Ogni data manager e’ autonomo ma partecipa a transazioni globali  Una parte dei dati e’ condivisa  Richiedono modifiche architetturali per poter fare parte della federazione –Totally autonomous  Ogni DBMS lavora in completa autonomia ed e’ inconsapevole dell’esistenza degli altri

24 Basi di Dati distribuite - Paolo Missier– 24 Eterogeneita’  Modello dei dati  Linguaggio di query  Gestione delle transazioni  Schema concettuale e schema logico  Distinzioni tipiche:  Federated DBMS: semi-autonomous, omogenei/eterogenei  DDBMS: tightly integrated, omogenei  MDBMS: totally autonomous, omogenei/eterogenei

25 Basi di Dati distribuite - Paolo Missier– 25 MDBS  Eterogeneita’ di schema –Ogni DB presenta uno schema indipendente dagli altri  Eterogeneita’ di accesso –E’ molto piu’ difficile offrire trasparenza di accesso  Assenza di transazioni globali –Un DBMS puo’ non partecipare a transazioni controllate esternamente

26 Basi di Dati distribuite - Paolo Missier– 26 Schemi  Local Internal Schema (LIS) –Livello fisico dell’organizzazione dati su un nodo  Global Conceptual Schema (GCS) –Livello logico globale su tutti i nodi  Local Conceptual Schema (LCS) –Descrive lo schema logico a livello di singolo nodo  Esternal Schema (ES) –Viste dello schema logico disponibile a diverse classi di applicazioni

27 Basi di Dati distribuite - Paolo Missier– 27 Architettura di riferimento ES1ES2ESn GCS LCS1LCS2LCSn LIS1LIS2LISn

28 Basi di Dati distribuite - Paolo Missier– 28 Architettura di dettaglio -- Componenti  User processor: –User interface handler: interprete comandi e formattatore risultati –Semantic data controller: controlli semantici sulla query (constraints check a livello di schema globale), autorizzazioni –Global query optimizer and decomposer  Determina la strategia di esecuzione  Traduce la query globale in sotot-query elementari usando i LCS e GD/D –Distributed execution monitor / transaction manager  Coordina l’esecuzione di transazioni globali con i TM sugli altri nodi  Data processor: –Local query optimizer –Local recovery manager –Run-time support processor: local buffer manager

29 Basi di Dati distribuite - Paolo Missier– 29 Architettura MDBS  Differenza fondamentale: definizione del GCS –Rappresenta solo una parte dei LCS –Il GCS integra i LCS oppure i LES –Il processo di integrazione procede bottom-up: gli schemi locali sono definiti a priori GES1GES2GESn GCS LCS1LES2 LCSn LIS1LIS2 LISn LES1LES2 LES1LES2

30 Basi di Dati distribuite - Paolo Missier– 30 Cosa cambia nei DDBMS?  Utente: –Fino a che punto la distribuzione e’ trasparente?  Progettista: –Come e’ possibile specificare queries e transazioni distribuite?  Architettura DBMS: –Quali estensioni richiede rispetto a quanto visto finora per un DBMS isolato?

31 Basi di Dati distribuite - Paolo Missier– 31 Vantaggi dei DDBMS: classi di utenti, affidabilita’  La partizione dei dati corrisponde spesso ad una partizione naturale delle applicazioni e degli utenti  Utenti locali vs utenti globali –Es. Un’organizzazione con sedi diverse distribuite geograficamente –Vale il principio che i dati risiedano vicono a dove vengono usati piu’ spesso –Ma sono globalmente raggiungibili  I DDBMS offrono maggiore flessibilita’, modularita’ e resistenza ai guasti –Distribuzione dei dati incrementale e progressiva: la configurazione si adatta alle esigenze delle applicazioni –Presenza di elementi di rete: maggiore fragilita’ –Ma: presenza di ridondanza: maggiore resistenza ai guasti dei singoli nodi (“fail soft”)

32 Basi di Dati distribuite - Paolo Missier– 32 Vantaggi di performance  Distribuendo un DB su nodi diversi, ogni nodo supporta un DB di dimensioni piu’ ridotte –Piu’ semplice da gestire e ottimizzare rispetto alle applicazioni locali –Ogni nodo puo’ essere ottimizzato indipendentemente dagli altri –Traffico totale (transazioni /sec) distribuito sui nodi –Parallelismo tra transazioni locali che fanno parte di una stessa transazione distribuita

33 Basi di Dati distribuite - Paolo Missier– 33 Indipendenza locale / cooperazione tra server  Ogni server mantiene la capacita’ di supportare applicazioni in modo indipendente –Le interazioni con altri server e applicazioni remote rappresenta un carico supplementare sul sistema  Traffico di rete in questa configurazione: –Queries provenienti dalle applicazioni –Risultati provenienti dal server –  frammenti di dati. Eg.: per eseguire joins tra tabelle su nodi diversi  Ottimizzazione: l’elemento critico e’ la rete  Vogliamo distribuire i dati in modo che: –La maggior parte delle transazioni sia locale, o eviti spostamento di dati tra nodi

34 Basi di Dati distribuite - Paolo Missier– 34 Funzionalita’ specifiche dei DDBMS  Trasmissione sia di queries che di frammenti di DB tra i nodi  Catalogo DB: deve gestire la mappa globale del DB –Frammentazione –Replicazione  Query processor: il query plan include sub-queries locali. Il query plan dipende dalla locazione dei frammenti coinvolti  Replicazione: –quale replica conviene utilizzare? –Strategie di sincronizzazione delle repliche  Strategie di recovery di singoli nodi, gestione dei guasti ai link tra i nodi

35 Basi di Dati distribuite - Paolo Missier– 35 Frammentazione e allocazione dei frammenti  Data una relazione R, si definiscono due tipi di frammenti di R:  Frammentazione orizzontale: –Partizione di R in n relazioni (frammenti) {R 1,…R n } tali che: –Schema(Ri)= schema(R) per tutti gli i; –Ogni R i contiene un sottoinsieme dei records di R –Normalmente definito da una selezione, i.e. R i =  Ci (R) –Completa: R 1  R 2  …  R n = R  Frammentazione verticale: –Partizione di R in n relazioni (frammenti) {R 1,…R n } tali che: –Schema(R) = L = (A 1,…A m ), Schema(R i ) = L i = (A i1, …,A ik ) –L 1  L 2  …  L n = L –L 1  L 2 = pk(R) per ogni i  j

36 Basi di Dati distribuite - Paolo Missier– 36 Esempio di frammentazione  R = EMPLOYEE (Empnum, Name, Deptnum, Salary, Taxes )  Frammentazione orizzontale: –EMPLOYEE1 =  Empnum<=3 EMPLOYEE –EMPLOYEE2 =  Empnum>3 EMPLOYEE  La ricostruzione richiede l’unione: –EMPLOYEE = EMPLOYEE1 U EMPLOYEE2  Frammentazione verticale: –EMPLOYEE1 =  EmpNum,Name EMPLOYEE –EMPLOYEE2 =  EmpNum,DeptName,Salary,Tax EMPLOYEE  La ricostruzione richiede un equi-join sulla chiave in comune (natural join). –EMPLOYEE = EMPLOYEE1 join EMPLOYEE2

37 Basi di Dati distribuite - Paolo Missier– 37 Tabella non frammentata

38 Basi di Dati distribuite - Paolo Missier– 38 Tabella frammentata orizzontalmente

39 Basi di Dati distribuite - Paolo Missier– 39 Tabella frammentata verticalmente

40 Basi di Dati distribuite - Paolo Missier– 40 Schemi di allocazione dei frammenti  Ogni frammento e’ allocato su un nodo diverso (e su file diversi)  Quindi, la relazione esiste solo in modo virtuale –Non materializzata su un unico nodo  Lo schema di allocazione descrive il mapping: –Frammento  nodo  Mapping non-ridondante: –esiste una sola copia di ogni frammento su un unico nodo  Mapping ridondante: –Almeno un frammento e’ replicato su piu’ di un nodo

41 Basi di Dati distribuite - Paolo Missier– 41 Query processing  In un contesto di dati centralizzati, le strategie di esecuzione delle queries sono esprimibili tramite estensioni di algebra relazionale  In un DDBMS, l’algebra relazionale non e’ piu’ sufficiente. Una strategia di esecuzione deve comprendere anche: –Il trasferimento di frammenti tra nodi; –La scelta del sito migliore dove processare i dati  Queste nuove variabili rendono ulterioriormente complessa l’ottimizzazione di query distribuite

42 Basi di Dati distribuite - Paolo Missier– 42 Distributed query processing – esempio - 1 Schema: E(eno, ename, title) G(eno, jno, resp, dur) Query: “trovare nomi dei dipendenti che sono manager di progetti” AR:  ename (E >< eno (  resp=“manager” (G))) Frammentazione orizzontale: E 1 =  eno  ‘E3’ (E)nodo 1 E 2 =  eno > ‘E3’ (E)nodo 2 G 1 =  eno  ‘E3’ (G)nodo 3 G 2 =  eno > ‘E3’ (G)nodo 4 Risultato: nodo 5

43 Basi di Dati distribuite - Paolo Missier– Allocazione dei frammenti E 1 =  eno  ‘E3’ (E) E 2 =  eno > ‘E3’ (E) G 1 =  eno  ‘E3’ (G) G 2 =  eno > ‘E3’ (G)  ename (E >< eno(  resp=“manager” (G)))

44 Basi di Dati distribuite - Paolo Missier– Strategia A G’ 1 =  resp=“manager’ (G 1 )G’ 2 =  resp=“manager’ (G 2 ) E’ 1 = E 1 >< eno G’ 1 E’ 2 = E 2 >< eno G’ 2 Result = E’ 1  E’ 2 Sito 1 Sito 2 Sito 3 Sito 4 Sito 5 G’ 1 G’ 2 E’ 1 E’ 2

45 Basi di Dati distribuite - Paolo Missier– Strategia A – migrazione frammenti E 1 =  eno  ‘E3’ (E) E 2 =  eno > ‘E3’ (E) G 1 =  eno  ‘E3’ (G) G 2 =  eno > ‘E3’ (G)  ename (E >< eno(  resp=“manager” (G))) G’ 1 G’ 2 E’ 1 E’ 2

46 Basi di Dati distribuite - Paolo Missier– Strategia B Result = (E 1  E 2 ) >< ENO  resp=“manager’ (G 1  G 2 ) Sito 5 G1G1 Sito 1 G2G2 Sito 2 G3G3 Sito 1 G4G4

47 Basi di Dati distribuite - Paolo Missier– 47 6 – Confronto di costi tra le due strategie  Modelli di costo (semplificato): –Accesso a un record: 1 –Trasferimento di un record: 10 –|E| = 400, |G| = 1000, |  resp=“manager’ (G 1 )| = |  resp=“manager’ (G 2 )| = 10 –Accesso diretto a E via ENO, G via RESP Costo strategia A: 1.Calcolo G’ 1 e G’ 2  Trasferimento G’ 1 e G’ 2  20 x 10 = Calcolo E’ 2 : join (nested-loop)  ( ) x 2 4.Trasferimento E’ 1, E’ 2 : 20 x 10 = 200  Tot.: 460 Costo strategia B: 1.Trasferimento E 1, E 2 sul nodo 5: 400 x 10 2.Trasferimento G 1, G 2 sul nodo 5: 1000 x 10 3.Calcolo G’ (selezione): 1000 (no indice) 4.Join G, E: 20 x 400 = 8000 (no indici)  Tot.: 23000

48 Basi di Dati distribuite - Paolo Missier– 48 Obiettivi del query processing distribuito  Parametri critici: –Costo totale = somma dei costi delle operazioni + costi di comunicazione –Response time (la computazione puo’ essere parallela)  Elementi di ottimizzazione: –Topologia della rete/banda disponibile:  (costo di comunicazione) / (costo di I/O locale) = ? –Joins o semijoins?  Joins: maggiore volume di dati trasferiti  Semijoins: maggior numero di messaggi tra nodi

49 Basi di Dati distribuite - Paolo Missier– 49 Fasi del query processor  Query decompsition –Opera sul GCS –Non considera la distribuzione –Produce un query tree – non ottimizzato  Data localization –Considera la distribuzione dei frammenti –Produce una query che opera sui frammenti – non ottimizzata  Global query optimization –Strategia di esecuzione: operatori di A.R. + operatori di comunicazione (send/receive tra nodi) –Obiettivo: trovare l’ordinamento “migliore” delle operazioni definite dalla fragment query –Utilizza le statistiche sui frammenti  Local query optimization –Ogni nodo riceve una fragment query e la ottimizza in modo indipendente

50 Basi di Dati distribuite - Paolo Missier– 50 Costo totale e response time Consideriamo solo i costi di comunicazione Costo comunicazione = C MSG * #msgs + C TR * #bytes C MSG = costo fisso di spedizione / ricezione messaggio (setup) C TR = costo (fisso rispetto alla topologia!) di trasmissione dati Response time (solo comm) = C MSG * seq_#msgs + C TR * seq_#bytes dove seq_#msgs e’ il massimo numero di messaggi che devono avvenire in modo sequenziale. Cioe’ i costi delle operazioni in parallelo non si sommano

51 Basi di Dati distribuite - Paolo Missier– 51 Esempio: costi di comunicazione  Costo di trasferimento di x unita’ da 1 a 3 e di y unita’ da 2 a 3: Costo comunicazione = 2 C MSG + C TR * (x + y) Response time = max(C MSG + C TR * x, C MSG + C TR * y), dato che x e y vengono trasferiti in parallelo Minimizzazione response time: piu’ parallelismo  aumento costo totale (maggiore numero di trasmissioni e processing locale) Minimizzazione costo totale: aumento del throughput (con peggioramento del response time in generale) Nodo 1 Nodo 2 Nodo 3 X unita’ Y unita’

52 Basi di Dati distribuite - Paolo Missier– 52 Strategie di ordinamento dei joins  Problema: dato un join tra n frammenti distribuiti, in quale ordine conviene eseguirlo?  Caso di n=2 frammenti: ovviamente conviene trasferire il frammento piu’ piccolo –Occorre stimare la cardinalita’ dei frammenti  Cosa accade nel caso n>2? –E’ necessario stimare le dimensioni dei risultati intermedi  usando la selettivita’ di ciascn join –Il problema e’ combinatorio R S Se size(R) < size(S) Se size(R) > size(S)

53 Basi di Dati distribuite - Paolo Missier– 53 Esempio: ordinamenti alternativi dei joins E J G ENOJNO Nodo 1 Nodo 2 Nodo 3 1.E  nodo 22 calcola E’ = E join G E’  nodo 33 calcola R = E’ join J 2.G  nodo 11 calcola E’ = E join G E’  nodo 33 calcola R = E’ join J 3.G  nodo 33 calcola G’ = G join J G’  nodo 11 calcola R = G’ join E 4.J  nodo 22 calcola J’ = J join G J’  nodo 11 calcola R = J’ join E 5.E  nodo 2 J  nodo 22 calcola R = E join J join G Info necessarie per la scelta della strategia: - size(E), size(G), size(J) - size(E joinG), size(G join J) - Inoltre, alcuni trasferimenti possono avvenire in parallelo Assumendo il prodotto delle cadinalita’ come size dei join, si puo’ usare per la strategie l’ordinamento delle relazioni in base alle loro cardinalita’

54 Basi di Dati distribuite - Paolo Missier– 54 Join e semijoins  Se R, S sono allocate su nodi diversi, R join A S puo’ essere calcolato utilizzando semijoins. Valgono infatti le seguenti equivalenze: R join A S  (R semijoin A S) join A S R join A S  R join A (S semijoin A R) R join A S  (R semijoin A S) join A (S semijoin A R) Ognuna da’ luogo ad una diversa strategia. La scelta tra le strategie richiede la stima dei loro costi L’uso del semijoin e’ conveniente se il costo del suo calcolo e del trasferimento del risultato e’ inferiore al costo del trasferimento dell’intera relazione e del costo del join intero

55 Basi di Dati distribuite - Paolo Missier– 55 Esempio: uso dei semijoins  Calcoliamo i costi di trasmissione nei due casi: R join A S (R semijoin A S) join A S assumendo size(R) < size(S), R su nodo 1, S su nodo 2 Operazioni necessarie nel caso di semijoin: 1.  A (S)  nodo 1 2.Nodo 1 calcola R’ = R semijoin A S 3.R’  nodo 2 4.Nodo 2 calcola R’ join S Costo del semijoin = C TR * size(  A (S)) + C TR * size(R semijoin A S) Costo join = C TR * size(R) Quindi il semijoin conviene se size(  A (S)) + size(R semijoin A S) < size(R) Cioe’ quando JSF(R,S, R.A=S.A)) = |R join A S| / |R| e’ piccolo

56 Basi di Dati distribuite - Paolo Missier– 56 Confronto tra joins e semijoins  Semijoin: piu’ operazioni, ma su operandi di dimensioni piu’ piccole EG J1: join 3:join 2:G 1:E 2: semijoin 1: join 1:  ENO 1:E 1:semijoin 3:join 3:J 3:  JNO 3:J Considerazioni: L’uso dei semijoin: conviene se gli attributi di join sono piccoli rispetto alla size dell’intero frammento comporta un doppio accesso ad uno dei due frammenti partecipanti Nota: I join delle relazioni intermedie non sfruttano gli indici sui frammenti base Il semijoin in generale conviene quindi quando il costo di comunicazione e’ dominante

57 Basi di Dati distribuite - Paolo Missier– 57 Ottimizzazioni basate sulla semantica  Utilizzando le condizioni di frammentazione delle relazioni –Dipendente dal dominio dei dati –Approccio poco flessibile procedure Query4(:snum,:name,:city); case :city of "London": select Name into :name from Supplier1 where SNum = :snum; "Manchester": select Name into :name from Supplier2 where SNum = :snum; end procedure;

58 Basi di Dati distribuite - Paolo Missier– 58 DDBMS e transazioni - classificazione  Remote requests: transazioni read-only –Numero arbitrario di query SQL –Dirette ad un unico server remoto  Remote transactions: transazioni read-write –Numero arbitrario di operazioni SQL (select, insert, delete, update) –Dirette ad un unico server remoto –Ogni transazione scrive su un unico server  Distributed transactions : –Numero arbitrario di operazioni SQL (select, insert, delete, update) –Dirette ad un numero arbitrario di servers –Ogni operazione e’ diretta ad un unico server –Le transazioni possono modificare piu’ di un DB –Richiede il protocollo di two-phase commit  Distributed requests sono transazioni arbitrarie, nelle quali ogni operazione SQL si puo’ riferire a qualunque server –Richiede un ottimizzatore distribuito

59 Basi di Dati distribuite - Paolo Missier– 59 Esempio di transazione distribuita ACCOUNT (AccNum,Name,Total): Total <  frammento ACCOUNT1 Total >=  frammento ACCOUNT2 begin transaction update Account1 set Total = Total where AccNum = 3154; update Account2 set Total = Total where AccNum = 14878; commit work; end transaction  Nota: deve comunque valere la proprieta’ di atomicita’ rispetto alle due updates

60 Basi di Dati distribuite - Paolo Missier– 60 DDBMS e proprieta’ ACID  La distribuzione non ha conseguenze su consistenza e durabilita’ –Consistenza: non dipende dalla distribuzione, perche’ i vincoli descrivono solo proprieta’ logiche dello schema (indipendenti dall’allocazione) –Durability: garantita localmente da ogni sistema  Invece, e’ necessario rivedere alcuni componenti dell’architettura: –Ottimizzatore –Concurrency control (isolamento) –Reliability control, recovery manager (atomicita’)

61 Basi di Dati distribuite - Paolo Missier– 61 DDBMS e Concurrency Control  In questo caso, una transazione t i si scompone in sotto- transazioni t ij. La transazione t ij viene eseguita sul nodo j: t 1 : r 11 (x) w 11 (x) r 12 (y) w 12 (y) t 2 : r 22 (y) w 22 (y) r 21 (x) w 21 (x)  Ogni sotto-transazione viene schedulata in modo indipendente dai server di ciascun nodo  La schedule globale dipende quindi dalle schedules locali su ogni nodo  La proprieta’ di serializzabilita’ globale estende quella di conflict-serializability gia’ vista: –Il grafo dei conflitti delle transazioni distribuite e’ l’unione dei grafi delle schedules locali –La schedule globale e’ serializzabile sse il grafo e’ aciclico

62 Basi di Dati distribuite - Paolo Missier– 62 Serializzabilita’ globale - 1  Osservazione: la serializzabilita’ locale di ogni schedule non garantisce la sua serializzabilita’ globale. Esempio: S 1 : r 11 (x) w 11 (x) r 21 (x) w 21 (x) S 2 : r 22 (y) w 22 (y) r 12 (y) w 12 (y)  S 1 e S 2 sono schedules locali, ciascuna e’ seriale  Il grafo dei conflitti ha un ciclo: –Sul nodo 1, t 1 precede t 2 ed e’ in conflitto con t 2 –Sul nodo 2, t 2 precede t 1 ed e’ in conflitto con t 1

63 Basi di Dati distribuite - Paolo Missier– 63 Serializzabilita’ globale - 2  Enunciamo le proprieta’ che garantiscono l’esistenza di una (unica) schedule seriale globale sui nodi di un DDBMS –Che sia equivalente a tutte le schedules locali S i su ogni nodo  Uso di Two-phase locking e di Two-phase commit da parte dello scheduler di ogni nodo: –Ogni scheduler usa 2PL –Ogni scheduler effettua il commit solo dopo che tutte le sotto- transazioni hanno acquisito le loro risorse  le schedules risultanti sono globalmente conflict-serializable  Questa proprieta’ e’ verificata utilizzando il protocollo 2-phase commit (descritto piu’ avanti)  Uso di timestamps unici: –Per ogni scheduler che usa controllo di concorrenza basato su timestamp: –Se ogni transazione distribuita utilizza timestamps unici per tutte le richieste a tali schedulers, allora –Le schedules risultanti sono globalmente seriali  Secondo l’ordine imposto dai timestamp

64 Basi di Dati distribuite - Paolo Missier– 64 Estensione di 2PL al caso distribuito  L’algoritmo 2PL si estende facilmente al caso distribuito  Opzione “Centralized 2PL”: –Delega ad un unico nodo il lock management di tutti i locks –Quindi un solo nodo ha un lock manager attivo –Il TM di ogni sito comunica con questo LM piuttosto che con quello locale –Problema: il nodo dell’unico lock manager diventa un bottleneck  Opzione “Primary Copy / Distributed 2PL”: –Diversi nodi hanno lock managers attivi, ognuno gestisce una partizione dei lock complessivi –Il TM comunica le richieste di lock ai LM corrispondenti alle risorse –Evita il bottleneck –Complicazione: e’ necessario determinare il lock manager che gestisce ciascuna risorsa. E’ un problema di directory globale

65 Basi di Dati distribuite - Paolo Missier– 65 Estensione di concurrency control basato su timestamps  Gli algoritmi basati su timestamps descritti per il caso centralizzato funzionano ancora  Complicazione: e’ necessario sincronizzare i timestamps definiti su ciascun nodo!  Idea: evitare la sincronizzazione totale su un unico “timestamp server” –E’ costosa –Non e’ necessaria

66 Basi di Dati distribuite - Paolo Missier– 66 Timestamps globali: metodo di Lamport  Problema generale: definire la precedenza tra eventi in un sistema distribuito  Un timestamps e’ composto di due parti: –Il nodo sul quale l’evento avviene (ordinamento dei nodi) –L’ordine temporale dell’evento su quel nodo, ottenuto da un counter locale al nodo, che viene incrementato ad ogni evento  Ad ogni scambio di messaggi tra nodi, i timestamps si sincronizzano: –Il nodo n 1 genera un evento, il nodo n 2 lo riceve –n 2 deve avere un timestamp maggiore di quello dell’evento ricevuto da n 1 –Quindi il counter locale di n 2 deve essere incrementato a quello dell’evento di n1

67 Basi di Dati distribuite - Paolo Missier– 67 Esempio di assegnazione di timestamps  [vedi testo, fig. 10.6]

68 Basi di Dati distribuite - Paolo Missier– 68 Deadlock distribuito  Causato da un’attesa circolare tra due o piu’ nodi  Gestito comunemente nei DDBMS tramite time-out  Risoluzione dei deadlock: –Protocollo asincrono e distribuito –Implementato nella versione distribuita di DB2

69 Basi di Dati distribuite - Paolo Missier– 69 Deadlock distribuito - definizione  Assumiamo che le sotto-transazioni siano attivate in modo sincrono (tramite RPC bloccante): t 11 attiva t 12.  Questo puo’ dare origine a due tipi di attesa: –Due sotto-transazioni della stessa transazione sono in attesa su nodi diversi:  Ognuna attende la terminazione dell’altra  Se t 11 attiva t 12, allora prima di procedere attende la terminazione di t 12 –Due sotto-transazioni diverse sono in attesa sullo stesso nodo perche’ ognuna ha un lock su un dato richiesto dall’altra  Se t 11 ha un lock su un dato richiesto da t 21, t 21 attende la terminazione di t 11

70 Basi di Dati distribuite - Paolo Missier– 70 Condizioni di attesa  E’ possibile caratterizzare le condizioni di attesa su ciascun nodo tramite condizioni di precedenza:  EXT: esecuzione su un nodo remoto  Su DBMS1: EXT < t 21 < t 11 < EXT  Su DBMS2: EXT < t 12 < t 22 < EXT  La sequenza di attesa generale e’ della forma: EXT < t i < t j < EXT

71 Basi di Dati distribuite - Paolo Missier– 71 Algoritmo di risoluzione del deadlock distribuito  Attivato periodicamente sui diversi nodi del DDBMS: –Integra le nuove sequenze di attesa con le condizioni di attesa locale descritte dal lock manager –Analizza le condizioni di attesa sul proprio nodo e gestisce i deadlock locali –Comunica le sequenze di attesa ad altre istanze dello stesso algoritmo  E’ possibile che lo stesso deadlock venga riscoperto piu’ volte. Per evitare il problema, l’algoritmo invia le sequenze di attesa: –‘in avanti, verso il nodo che ha ricevuto la RPC –Solamente quando i > j dove i e j sono gli identificatori delle transazioni

72 Basi di Dati distribuite - Paolo Missier– 72 Gestione dei guasti nei DDBMS  Un sistema distribuito e’ soggetto oltre a guasti locali, anche a perdita di messaggi su rete e partizionamento della rete (isolamento dei nodi)  Guasti nei nodi: possono essere soft o hard – gia’ discussi  Perdita di messaggi: lasciano l’esecuzione di un protocollo in una situazione di indecisione –Ogni messaggio del protocollo e’ seguito da un ack –In caso di perdita del messaggio oppure dell’ack, si genera una situazione di incertezza: non e’ possibile decidere se il messaggio e’ stato ricevuto  Partizionamento della rete –Una transazione distribuita puo’ essere attiva contemporaneamente su piu’ sottoreti temporaneamente isolate

73 Basi di Dati distribuite - Paolo Missier– 73 Protocollo two-phase commit  I protocolli di commit consentono ad una transazione di giungere ad una decisione di abort/commit su ciascuno dei nodi che partecipano ad una transazione  Idea: la decisione di commit/abort tra due o piu’ partecipanti e’ coordinata e certificata da un ulteriore partecipante –I servers sono chiamati resource managers (RM) –Il coordinatore e’ chiamato transaction manager (TM)  Il protocollo si basa sullo scambio di messaggi tra TM e RM, i quali mantengono ognuno il proprio log. Il TM puo’ utilizzare: –Meccanismi di broadcast –Comunicazione seriale e individuale con ogni RMs a turno

74 Basi di Dati distribuite - Paolo Missier– 74 2PC versione base – nessun guasto  [ vedi fig – P of DDBMS ]  Nota 1: 2PC e’ bloccante  Nota 2: –e’ possibile definire un protocollo di recovery non bloccante in caso di guasto ad un singolo nodo –E’ stato dimostrato che non e’ invece possibile definire un protocollo di recovery non bloccante in caso di guasto a nodi multipli

75 Basi di Dati distribuite - Paolo Missier– 75 Nuovi records di log -- TM  Prepare record: contiene l’identita’ di tutti i RM (nodi + processi)  global commit o global abort record: descrive la decisione globale. La decisione del TM diventa esecutiva quando il TM scrive nel proprio log il record global commit o global abort  complete record: scritto alla fine del protocollo

76 Basi di Dati distribuite - Paolo Missier– 76 Nuovi records di log -- RM  ready record: disponibilita’ irrevocabile del RM a partecipare alla fase di commit –Assume che il RM sia “recoverable”, i.e., mantiene i locks su tutte le risorse che devono essere scritte –Contiene anche l’identificatore del TM –Inoltre, come nel caso centralizzato vengono scritti anche i records begin, insert, delete, e update  Un RM che non partecipa al 2PC puo’ unilateralmente abortire una transazione sul proprio nodo

77 Basi di Dati distribuite - Paolo Missier– 77 Prima fase di 2PC  TM scrive prepare nel suo log e invia un messaggio prepare a tutti i RM. Setta un timeout per indicare il massimo intervallo di tempo di attesa per le risposte  I RM che sono recoverable scrivono ready nel loro log record e inviano un messaggio ready al TM  I RM che non sono recoverable inviano un messaggio not- ready e terminano il protocollo  I TM raccolgono i messaggi di risposta dai RM: –Se tutti i RMs rispondono positivamente, scrive global commit nel suo log –Se riceve almeno un messaggio not-ready o scatta il timeout, scrive global abort nel suo log

78 Basi di Dati distribuite - Paolo Missier– 78 Seconda fase di 2PC  Il TM trasmette la decisione globale ai RM e setta un nuovo timeout  I RMs che sono ready ricevono il messaggio, scrivono commit o abort nel loro log, e inviano un ack al TM. Poi eseguono il loro commit o abort locale  Il TM raccoglie tutti i messaggi ack messages dai RMs. Se scatta il time-out, setta un nuovo time-out e ripete la trasmissione a tutti i RMs dai quali non ha ancora ricevuto un ack  Quando tutti gli acks sono arrivati, il TM scrive complete nel suo log

79 Basi di Dati distribuite - Paolo Missier– 79 Paradigmi di comunicazione tra TM e RMs  Centralizzato: –La comunicazione avviene solo tra TM e ogni RM –Nessuna comunicazione tra RMs  Lineare: –I RMs comunicano tra loro secondo un ordine prestabilito –Il TM e’ il primo nell’ordine –Utile solo per reti senza possibilita’ di broadcast  Distribuito: –Nella prima fase, il TM comunica con I RMs –I RMs inviano le loro decisioni a tutti gli altri partecipanti –Ogni RM decide in base ai voti che “ascolta” dagli altri –Non occorre la seconda fase di 2PC

80 Basi di Dati distribuite - Paolo Missier– 80 2PC: in caso di guasto…  Un RM nello stato ready perde la sua autonomia e attende la decisione del TM  Un guasto nel TM lascia il RM in uno stato di incertezza. Le risorse allocate alla transazione restano bloccate  L’intervallo tra la scrittura di ready nel log dei RMs la scrittura di commit o abort e’ detta finestra di incertezza –2PC riduce al minimo questo intervallo di tempo, che esiste comunque  In seguito a guasti, TM o RMs utilizzano protocolli di recovery  Il loro stato finale dipende dalla decisione globale del TM

81 Basi di Dati distribuite - Paolo Missier– 81 Timeout del TM  Timeout nello stato WAIT: –Il TM attende la risposta dei RMs –Puo’ solo decidere global-abort  Timeout nello stato COMMIT o ABORT: –Il TM non puo’ sapere se le procedure di commit/abort sono state completate dai recovery managers di ogni nodo –Il TM continua a inviare lo stesso messaggio global-commit oppure global-abort

82 Basi di Dati distribuite - Paolo Missier– 82 Timeout dei RMs  Timeout nello stato INITIAL: –Il RM attende il messaggio prepare –Il TM deve essere caduto nello stato INITIAL –Il RM puo’ fare un abort unilaterale  Timeout nello stato READY: –In questo stato, il RM ha votato per il commit; –Attende la decisione del TM –Non e’ in grado di prendere una decisione unilaterale –Resta bloccato in attesa di ulteriori informazioni  Se I RMs sono in grado di comunicare tra loro, e’ possibile sbloccare la situazione in assenza del TM chiedendo agli altri RMs di aiutarlo a prendere una decisione –[omessi dettagli sui casi possibili…]

83 Basi di Dati distribuite - Paolo Missier– 83 Recovery del TM  Quando l’ultimo record del log e’ prepare, il guasto del TM puo’ avere bloccato alcuni RMs. Ci sono due opzioni di recovery: –Decidere global abort, e procedere con la seconda fase di 2PC –Ripetere la prima fase, cercando di giungere a un commit  Quando l’ultimo record nel log e’ global-commit o global- abort, alcuni RMs potrebbero non essere stati informati, e altri possono essere bloccati  Il TM deve ripetere la seconda fase

84 Basi di Dati distribuite - Paolo Missier– 84 Recovery dei RM  Utilizza la sequenza di warm restart  Se l’ultimo record nel log e’: –Abort: undo della transazione –Commit: redo –Ready: il RM si blocca perche’ non conosce la decisione del TM  Durante il warm restart, gli ID delle transazioni in dubbio sono inserite nel ready set. Per ognuna di queste transazioni, si deve attendere la decisione del TM (vedi precedente)

85 Basi di Dati distribuite - Paolo Missier– 85 Perdita di messaggi e partizionamento della rete  Il TM non e’ in grado di distinguere tra perdita di messaggi prepare o ready  In entrambi i casi, la decisione globale e’ abort in seguito a timeout nella prima fase  Anche la perdita di messaggi ack o di decisioni da parte dei RMs non sono distinguibili  In entrambi i casi, la seconda fase viene ripetuta in seguito a timeout nella seconda fase  Un partizionamento della rete non causa problemi ulteriori, dato che una transazione puo’ avere successo solo se il TM e tutti i RM appartengono alla stessa partizione

86 Basi di Dati distribuite - Paolo Missier– 86 Ottimizzazione: read-only  Quando un RM sa che la propria transazione non contiene operazioni di scrittura: –Risponde read-only al messaggio di prepare e termina l’esecuzione del protocollo  Il TM ignora i partecipanti read-only nella seconda fase

87 Basi di Dati distribuite - Paolo Missier– 87 Ottimizzazione: presumed abort / commit  Obiettivi: –ridurre il numero di messaggi trasmessi tra coordinatore e partecipanti –Ridurre il numero di scritture nei log  Regola: –Quando il TM riceve una richiesta di recovery da parte di un RM che non sa come procedere in seguito a un guasto, il TM decide sempre per il global abort  Quindi, il TM puo’ abbandonare la transazione subito dopo avere deciso per abort –Non si aspetta risposta dai RMs –Non occorre fare una force dei record di prepare e global abort perche’ il comportamento di default in assenza di record di log e’ identico a quello di abort  Quindi gli unici record da scrivere sono ready, global commit e commit

88 Basi di Dati distribuite - Paolo Missier– 88 Interoperabilita’  Il problema principale nello sviluppo di applicazioni eterogenee per DDBS e’ l’interoperabilita’ a livello di sistema  Ignoriamo l’eterogeneita’ di schemi e semantica  E’ necessario introdurre funzioni di –Adattamento e Conversione di formati /protocolli  A livello di protocollo, l’interoperabilita’ e’ garantita da standards quali FTP, SMTP/MIME, ecc.  Nell’area dei DBMS, introduciamo standard di interoperabilita’ per –Accesso alle funzioni del server  interfacce tipo ODBC –Coordinazione di transazioni su piu’ nodi  protocollo DTP

89 Basi di Dati distribuite - Paolo Missier– 89 Interfaccia di accesso al DB: ODBC  API Microsoft, nata nel 1991  Orientata all’accesso a sistemi relazionali  Supporta una versione ristretta di SQL –Core set di istruzioni  Modello basato sull’uso di driver del server –Implementato come libreria di accesso disponibile al client –Il driver maschera l’eterogeneita’ a livello di DBMS, OS, e protocollo di rete –Ex.: un driver puo’ essere definito per la configurazione Sybase, + Windows NT + Novell  ODBC non supporta il protocollo 2PC

90 Basi di Dati distribuite - Paolo Missier– 90 Componenti di ODBC  L’applicazione sottopone queries SQL all’interfaccia  Il driver manager (Microsoft) carica il driver specifico per il DBMS target + OS + rete  Il driver implementa l’interfaccia ODBC e funge da client verso il DBMS, eventualmente effettuando traduzioni di sintassi  Il DB server e’ noto come data source. Riceve richieste da ODBC e ritorna i risultati come a qualunque client

91 Basi di Dati distribuite - Paolo Missier– 91 X-Open distributed transaction processing (DTP)  Un protocollo per l’interoperabilita’ tra DBMS diversi a livello di transazioni distribuite  Attori: –Client –TM: Transaction Manager –RMs: Resource Managers. Sono i partecipanti alla transazione  Il protocollo prevede due interfacce: –TM-interface: tra Client e TM –XA-interface: tra TM e ogni RM  Un DBMS che aderisce al protocollo deve supportare l’interfaccia XA (perche’ il DBMS e’ un RM)  Il Transaction Manager (TM) e’ di norma un componente fornito da middleware transazionale, ad es.:  Encina (Transarc)  Tuxedo (BEA Systems)

92 Basi di Dati distribuite - Paolo Missier– 92 Caratteristiche di X-Open DTP  I RM sono passivi. Rispondono a RPCs originate dal TM  Il protocollo e’ 2PC con presumed abort e ottimizzazioni read-only  Il protocollo supporta decisioni euristiche –In presenza di guasti, consente il proseguimento di una transazione sotto il controllo dell’operatore –Quando un RM e’ bloccato a causa di un guasto al TM, un operatore puo’ imporre una decisione euristica (normalmente abort), consentendo il rilascio delle risorse –Quando decisioni euristiche provocano perdita di atomicita’, il protocollo garantisce che i processi cliente vengono informati –La risoluzione di inconsistenze dovute a decisioni euristiche sbagliate e’ affidato all’applicazione

93 Basi di Dati distribuite - Paolo Missier– 93 TM Interface  tm_init e tm_exit: iniziano e terminano una connessione client-TM  tm_open e tm_term : aprono e chiudono una sessione con il TM  tm_begin : inizia una transazione  tm_commit : richiede un global commit

94 Basi di Dati distribuite - Paolo Missier– 94 XA interface  xa_open e xa_close : aprono e chiudono una sessione tra il TM e un dato RM  xa_start e xa_end: attivano e completano una transazione  xa_precom : richiede un pre-commit ad un RM; il RM risponde affermativamente solo se si trova in uno stato recoverable  xa_commit e xa_abort : comunicano la decisione globale del TM sulla transazione  xa_recover : inizia la procedura di recovery dopo il fallimento di un processo TM o RM. Secondo il protocollo 2PC, il RM consulta il suo log e costruisce tre insiemi di transazioni: –Transazioni in doubt –Transazioni decise da heuristic commit –Transazioni decise da heuristic abort  xa_forget consente ad un RM di abbandonare transazioni decise in modo euristico

95 Basi di Dati distribuite - Paolo Missier– 95 Cooperazione tra sistemi pre-esistenti  Per cooperazione si intende la capacita’ per una applicazione di utilizzare servizi applicativi resi disponibili da altri sistemi, eventualmente gestiti da altre organizzazioni  La necessita’ di cooperare nasce da ragioni diverse –Richiesta di integrazione di componenti sviluppati separatamente –Merger di organizzazioni con sistemi informativi diversi…  L’integrazione tra DBs e’ complessa –Limitata nella pratica a integrazione semplice di schemi –Il modello ideale di un DB fortemente integrato che supporta transparenza totale e’ difficile da realizzare in pratica

96 Basi di Dati distribuite - Paolo Missier– 96 Cooperazione sui dati e tra processi  Distinguiamo due tipi di cooperazione: –Centrata sui processi: Ogni sistema puo’ offrire ad altri sistemi servizi utilizzando varie infrastrutture di comunicazione  Scambio di messaggi, documenti, dati  Innesco di attivita’ –I dati restano privati –Centrata sui dati, i cui i sistemi sono distribuiti, eterogenei e autonomi, e accessibili da remoto secondo accordi di cooperazione e protocolli standard  Nel seguito, consideriamo solo cooperazione centrata sui dati

97 Basi di Dati distribuite - Paolo Missier– 97 Cooperazione basata sui dati - caratteristiche  Livello di trasparenza  Compessita’ delle operazioni distribuite –Misurano il grado di coordinazione necessario per effettuare operazioni su DB cooperativi  Il livello di currency indica in che misura i dati acceduti sono aggiornati  In base a questi criteri, e’ possibile distinguere tre architetture per la cooperazione centrata sui dati

98 Basi di Dati distribuite - Paolo Missier– MultiDatabases  Massima autonomia (sistema dedicato ad applicazioni e utenti locali)  Ciascun sistema e’ acceduto tramite moduli chiamati mediatori. Ogni mediatore rivela al global manager una porzione del DB da esportare  Il global manager e’ responsabile dell’integrazione  In generale, i mediatori offrono solo accesso read-only ai dati locali  Caratteristiche: –Presentano una vista integrata all’utente –Forniscono un alto livello di trasparenza –Garantiscono buona curreny perche’ le sorgenti dati sono accedute direttamente

99 Basi di Dati distribuite - Paolo Missier– Sistemi basati su replicazione  Garantiscono accesso read only a copie secondarie dei dati descritti dalle viste esterne  I dati possono essere trasferiti su Data Warehouses –Cosidette “viste materializzate”  Caratteristiche: –Presentano una alto livello di integrazione e trasparenza, ma un grado minore di currency

100 Basi di Dati distribuite - Paolo Missier– – Sistemi basati su accesso esterno ai dati  L’integrazione e’ a carico dell’applicazione  Vedi esempio –DB esterno –DB locale –DW, definito su tre fonti di informazione  Caratteristiche: –Basso grado di trasparenza e integrazione –La currency dipende dalle esigenze specifiche

101 Basi di Dati distribuite - Paolo Missier– 101 Parallelismo  Sviluppata negli anni ’90 in concomitanza con la diffusione di architetture multiprocessore –Seguono il fallimento delle cosidette database machines negli anni ‘80  DBMS paralleli supportati da diverse architetture (shared- all / shared-nothing)  Motivazione (ovvia): uno scan completo di un DB di grandi dimensioni puo’ essere frazionato in n scans, su ognuna di n partizioni (fisiche) del DB  Se le partizioni risiedono su n dischi diversi gestiti da n processori diversi, il response time sara’ circa 1/n del tempo richiesto da uno scan sequenziale

102 Basi di Dati distribuite - Paolo Missier– 102 Parallelismo inter-query  Consiste nell’esecuzione parallela di piu’ queries –Il carico imposto da un DBMS e’ caratterizzato tipicamente da transazioni semplici e frequenti  Ordine di migliaia di transazioni /secondo –Il parallelismo si basa sul multiplexing dei servers e sull’allocazione “ottimale” di richieste ai diversi server  Da parte di un processo dispatcher –Utile per sistemi OLTP

103 Basi di Dati distribuite - Paolo Missier– 103 Parallelismo intra-query  Consiste nell’esecuzione parallela di sotto-query a partire da una query globale –Il carico sul DBMS e’ caratterizzato da poche queries complesse  Decomposte in sotto-queries parziali –Normalmente le queries vengono eseguite in sequenza, utilizzando ciascuna l’intero sistema multi-processore per ognuna –Utile per sistemi OLAP

104 Basi di Dati distribuite - Paolo Missier– 104 Parallelismo e frammentazione  Esempio: ACCOUNT (AccNum, Name, Balance) TRANSACTION (AccNum,Date,SerialNumber,TransactionType,Amount) Schema frammentato in modo orizzontale in base a intervalli di AccNum

105 Basi di Dati distribuite - Paolo Missier– 105 Tipica query OLTP parallelizzabile  Con parallelismo inter-query: procedure Query5(:acc-num, :total); select Balance into :total from Account where AccNum = :acc-num; end procedure;  Diretta ad un nodo specifico, in base al valore di :acc-num

106 Basi di Dati distribuite - Paolo Missier– 106 Tipica query OLAP parallelizzabile  Con parallelismo intra-query: procedure Query6(); select AccNum, sum(Amount) from Account join Transaction on Account.AccNum = Transaction.AccNum where Date >= and Date < group by AccNum having sum(Amount) > ; end procedure;  Ogni frammento contribuisce alcuni gruppi  Ciascun gruppo calcolato in parallelo  Richiede unione finale dei risultati parziali

107 Basi di Dati distribuite - Paolo Missier– 107 Metriche per il parallelismo: Speed-up e scale-up  La curva di speed-up caratterizza solamente il parallelismo inter-query –Misura l’incremento di throughput (in tps -transactions per second), rispetto all’incremento nel numero dei processori –In una situazione ideale, il throughput cresce in modo quasi lineare con il numero di processori  La curva di scale-up caratterizza sia il parallelismo inter- query che intra-query –Misura il costo medio di una transazione rispetto all’incremento nel numero dei processori –In una situazione ideale, il costo medio rimane pressoche’ costante all’aumentare dei processori –Il sistema “scala bene”

108 Basi di Dati distribuite - Paolo Missier– 108 Benchmarks delle transazioni  Test specifici per misurare l’efficienza di DBMS (eventualmente paralleli)  Descrive il sistema in termini di curve di speed-up e scale-up calcolate in condizioni di esecuzione standard  Standardizzte dal TPC (Transaction Processing Performance Council) –Un comitato di circa trenta suppliers di sistemi DBMS e transazionali  Sono definiti tre benchmarks (TPC-A, TPC-B and TPC-C) rispetticamente per applicazioni OLTP, miste, e OLAP  Applicabili a archietture mainframe-based, client-server, o parallele  Parametri utilizzati nei benchmarks: –Codice del tipo di transazione –Dimensione del database –Metodo utilizzato per generare i dati –Distribuzione degli arrivi della transazione (in generale, Poisson) –Tecniche per misurare e fare l’auditing del benchmark

109 Basi di Dati distribuite - Paolo Missier– 109 DB replicati  Supportata da prodotti di data replication –Obiettivo: mantenere la consistenza tra le copie –Funzionano in modo trasparente rispetto alle applicazioni che operano sul DBMS  In generale, esiste una copia principale e diverse copie secondarie –Le updates sono propagate in modo asincrono –Senza supporto 2PC  Propagazione incrementale: basata sulle modifiche ai dati, inviate dalla copia principale alle copie secondarie  L’uso della replicazione rende il sistema piu’ resistente ai guasti –In caso di indisponibilita’ della copia principale, e’ possibile usare una delle copie

110 Basi di Dati distribuite - Paolo Missier– 110 Architettura per data replication  L’architettura ha due siti identici. Ogni sito gestisce l’intero DB; una meta’ contiene la copia principale, l’altra meta’ e’ la copia secondaria  Tutte le transazioni sono inviate alla copia principale e ridirette alla copia secondaria  Ogni “punto di accesso” al sistema e’ connesso ad ambedue i siti  In caso di guasto che coinvolge solamente un sito, il sistema e’ capace di commutare rapidamente tutte le transazioni veso l’altro sito, che deve essere in grado di supportare l’intero carico (fail- soft)  Una volta risolto il problema, il replication manager fa un restore dei dati in modo trasparente e quindi pone ambedue i siti in modalita’ normale

111 Basi di Dati distribuite - Paolo Missier– 111 Architettura - descrizione  Applicazione creata da Tandem verso la meta’ degli anni ’80  Tandem aveva una decina di fabbriche sparse per il mondo  Ogni fabbrica responsabile della produzione di una parte specifica dell’architettura di un computer  Le tabelle erano frammentate in modo corrispondente alla distribuzione fisica dei componenti e allocate ai nodi in modo ridondante: –Main copy: sul nodo responsabile del processo produttivo dei componenti descrtti in quel frammento –Secondary copies: replicate a tutti gli altri nodi  Il replication manager entrava in funzione periodicamente, propagando le modifiche ad un nodo in modo asincrono a tutte le altre copie

112 Basi di Dati distribuite - Paolo Missier– 112 Funzioni avanzate dei replication managers  Replicazione simmetrica: le modifiche possono essere originate da ogni copia –Configurazione peer-to-peer –In assenza di concurrency control, e’ possibile introdurre conflitti tra le copie –E’ possibile determinare i conflitti in modo automatico, e definire strategie di risoluzione diverse per diversi tipi di dati  Replicazione non-connessa: si ha con sistemi mobili, nei quali e’ comune che la comunicazione tra i nodi si interrompa –Es.: un venditore si connette con il server per scaricare le disponibilita’ del magazzino e per caricare nuovi ordini –Il venditore e’ normalmente sconnesso dal sever. Le sue transazioni operano su copie (del magazzino) –La copia viene “riconciliata” con il main periodicamente


Scaricare ppt "Paolo Missier II Semestre, 2002 Basi di Dati - Complementi Basi di Dati Distribuite."

Presentazioni simili


Annunci Google