• Non ci sono risultati.

Databases Architettura di un DBMS

N/A
N/A
Protected

Academic year: 2021

Condividi "Databases Architettura di un DBMS"

Copied!
25
0
0

Testo completo

(1)

Databases

Architettura di un DBMS

(2)

2

Architettura di un dbms

• Un DBMS e’ un software per la gestione di basi di dati, e piu’ in generale e’ uno strumento potente per creare e gestire in

maniera efficiente una grande quantita’ di dati e per permettere la loro persistenza nel tempo.

• Come funziona e si usa un DBMS?

Cognome Stipendio

Rossi 1700

Rossi 1550

Bianchi 1500 Select Cognome, Stipendio

From Impiegati

Where Stipendio>1300

Nome Cognome Sesso Stipendio

Maria Rossi F 1700

Piero Neri M 1200

Luca Rossi M 1550

Elena Bianchi F 1500

?

(3)

3

Esercitazione di gruppo

• Vogliamo implementare un DBMS relazionale!

• Il sistema deve essere in grado di:

• Memorizzare relazioni come R(A,B,C), S(A,B) e T(A,B).

• Eseguire interrogazioni come:

select A, B From R

Where B = 2000

select R.A, T.B From R, S, T

Where R.B = S.A And S.B = T.A

(4)

4

Verifica del sistema

Come si comporta il sistema nei confronti di:

• Ricerca di tuple?

• Ordine delle operazioni?

• Aggiornamenti di tuple?

• Accesso ripetuto alle stesse locazioni su disco?

• Modifiche concorrenti?

• Controllo degli accessi?

• Interfacce di programmazione?

(5)

5

Architettura di un DBMS relazionale (1)

Query compiler

Buffer

Lock Table Execution

Engine Index/File/

Record Manager Buffer Manager Storage Manager

Transaction Manager

Logging/

Recovery

Concurrency Control DDL Compiler

Dati e comandi Dati

(6)

6

Architettura di un DBMS relazionale (2)

• L’architettura presentata nel lucido precedente è composta da tre sottosistemi principali:

• Per la gestione dei dati su disco.

• Per l’esecuzione delle interrogazioni.

• Per la gestione delle transazioni.

(7)

7

Sottosistema per le interrogazioni

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager

Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

(8)

8

Query compiler (1)

• Il Query Compiler fa il parsing e ottimizza le interrogazioni.

• L’interrogazione viene prima riconosciuta e controllata sintatticamente.

• Il risultato del parsing viene tradotto in una espressione in una versione estesa dell’algebra relazionale.

• L’espressione viene trasformata in un’espressione equivalente ma considerata più efficiente.

• Il risultato del query compiler è un query plan, cioè un elenco cronologico delle operazioni da compiere per eseguire

l’interrogazione.

(9)

“Ottimizzazione” algebrica

• Il termine ottimizzazione è improprio (anche se efficace) perché la vera ottimizzazione avviene a livello algoritmico

• Possono essere impiegate delle euristiche.

• Si basa sulla nozione di equivalenza di espressioni algebriche:

• Due espressioni sono equivalenti se producono lo stesso risultato qualunque sia l'istanza attuale della base di dati

• I DBMS cercano di eseguire espressioni equivalenti a quelle date, ma meno "costose"

• Proprietà fondamentali (“euristiche”):

• σezioni e proiezioni il più presto possibile (per ridurre le dimensioni dei risultati intermedi):

• "push σections down"

• "push projections down"

(10)

"Push σections"

• Assumiamo A attributo di R2

σ A=10 (R1 × R2) = R1 × σ

A=10 ( R2)

• Riduce in modo significativo la dimensione del risultato intermedio (e quindi il costo dell'operazione)

(11)

Una procedura euristica di ottimizzazione

• Decomporre le σezioni congiuntive in successive σezioni atomiche

• Anticipare il più possibile le σezioni

• In una sequenza di σezioni, anticipare le più σettive

• Anticipare il più possibile le proiezioni (anche introducendone di nuove)

(12)

Esempio

R1(ABC), R2(DEF), R3(GHI)

SELECT A , E FROM R1, R2, R3

WHERE C=D AND B>100 AND F=G AND H=7 AND I>2

• prodotto cartesiano (FROM)

• σezione (WHERE)

• proiezione (SELECT)

π AEC=D AND B>100 AND F=G AND H=7 AND I>2 ((R1 × R2) × R3))

(13)

Esempio, continua

π AEC=D AND B>100 AND F=G AND H=7 AND I>2 ((R1 × R2) × R3))

• Può essere interpretato come

π AEB>100 (R1) ×C=D R2) ×F=G σI>2H=7(R3)))

• oppure

π AE(

π AEF((π ACB>100 (R1))) × C=D R2)

×F=G π GI>2H=7(R3))) )

(14)

14

Query compiler (2)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1)×R2))

(15)

15

Execution Engine (1)

• L’Execution Engine crea una sequenza di richieste di dati

(tipicamente record) e implementa le istruzioni ottenute dal query compiler.

(16)

16

Execution Engine (2)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager

Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1) × R2))

σC=c(R1), ×R2, σ, π

(17)

17

Resource Manager (1)

• Il Resource Manager sa dove sono i dati (file e record) e come recuperarli velocemente (indici).

• Le richieste di dati vengono tradotte in richieste di blocchi su disco.

(18)

18

Resource Manager (2)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1) × R2))

σC=c(R1), ×R2, σ, π

R1

(19)

19

Gestione dati su disco (1)

• Il Buffer Manager ha il compito di trasportare in memoria centrale i blocchi richiesti.

• Per farlo, si affida allo Storage Manager, che gestisce i dispositivi di memoria secondaria.

• I Dischi sono i principali dispositivi utilizzati per memorizzare database.

• I dati gestiti dal buffer manager sono di vario tipo:

• Dati: il contenuto del database.

• Metadati: lo schema del database.

• Statistiche: informazioni sul contenuto del database.

• Indici: strutture di supporto per l’accesso rapido ai dati.

(20)

Memoria principale e secondaria

• I programmi accedono efficientemente solo a dati in memoria principale (heap, stack, buffer di SO).

• Le basi di dati debbono essere (sostanzialmente) in memoria secondaria per due motivi:

• dimensioni

• persistenza

• I dati in memoria secondaria possono essere utilizzati solo se prima trasferiti in memoria principale.

(21)

Memoria principale e secondaria, 2

• I dispositivi di memoria secondaria sono organizzati in blocchi di lunghezza (di solito) fissa (ordine di grandezza: alcuni KB)

• Le uniche operazioni sui dispositivi solo la lettura e la scrittura di di una pagina, cioè dei dati di un blocco (cioè di una stringa di byte);

• per comodità consideriamo blocco e pagina sinonimi

(22)

Memoria principale e secondaria, 3

• Accesso a memoria secondaria:

• tempo di posizionamento della testina (10-50ms)

• tempo di latenza (5-10ms)

• tempo di trasferimento (1-2ms)

in media non meno di 10 ms

• Il costo di un accesso a memoria secondaria è quattro o più ordini di grandezza maggiore di quello per operazioni in memoria

centrale

• Perciò, nelle applicazioni "I/O bound" (cioè con molti accessi a memoria secondaria e relativamente poche operazioni) il costo dipende esclusivamente dal numero di accessi a memoria

secondaria

• Inoltre, accessi a blocchi “vicini” costano meno (contiguità)

(23)

23

Gestione dati su disco (2)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager

Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1) × R2))

σC=c(R1), ×R2, σ, π

R1

σ (R1)

(24)

24

Gestione dati su disco (3)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1) × R2))

σC=c(R1), ×R2, σ, π

R2

×R2

(25)

25

Gestione dati su disco (4)

Query compiler

Buffer Execution

Engine Index/File/

RecordManager Buffer Manager Storage Manager

Select A, B From R1, R2 Where C = D And C = ‘c’

πA,BC=DC=c(R1) × R2))

σC=c(R1), ×R2, σ, π

σ, π

Riferimenti

Documenti correlati

notevolmente le prestazioni servendo prima tutte le richieste che sono vicine alla posizione attuale della testina. • Su questa ipotesi è basato l’algoritmo Shortest Seek Time

 poiché ogni lettura coinvolge tutti i dischi, RAID 2-3 non sono adatti per sistemi con un grande numero di richieste di I/O indipendenti..

❖ Una richiesta di accesso al disco può venire soddisfatta immediatamente se unità a disco e controller sono disponibili; altrimenti la richiesta deve essere aggiunta alla coda

Nel caso di dispositivi magnetici (nastri o dischi) l’informazione è presente in memoria come stato di magnetizzazione, che può essere positivo o negativo

Chiamata di sistema open Marco Lapegna – Laboratorio di Programmazione 2 memoria secondaria e f.s. oflag può assumere diversi valori (definiti

Nel caso di dispositivi magnetici (nastri o dischi) l’informazione è presente in memoria come stato di magnetizzazione, che può essere positivo o negativo (codifica binaria).. Nel

–  Allocazione della memoria ai singoli job –  Protezione dello spazio di indirizzamento –  Condivisione dello spazio di indirizzamento –  Gestione dello swap.. • 

Inoltre, quando l’unità centrale richiede l’accesso a una locazione di memoria virtuale non presente in una cella di memoria reale, si rende necessario effettuare