50
Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Embed Size (px)

Citation preview

Page 1: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Basi di Dati e Sistemi

Informativi

Struttura di un DBMS:Organizzazione della

MemoriaHome page del corso:

http://www.cs.unibo.it/~difelice/dbsi/

Page 2: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Studio/analisi dei requisiti

Progettazione concettuale

Progettazione logica

Progettazione fisica

SCHEMACONCETTUALE

SCHEMALOGICO

SCHEMAFISICO

Fasi della progettazioneRisultati

Organizzazione della Memoria

Page 3: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

ANALISI REQUISITI

Tabella2

Tabella1

TabellaN

PROGETTAZIONE CONCETTUALE

PROGETTAZIONE LOGICA

Cosa si rappresenta

Come lo si rappresenta

?Dove memorizzare le tabelle?Quali strutture dati usare?

Page 4: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

GERARCHIE DI MEMORIA

Memoria Primaria

Memoria Secondaria

Volatile Accesso casuale

Persistente Accesso diretto

Page 5: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

Per garantire la persistenza dei dati, un DMBS deve memorizzare i dati su memoria secondaria. Suddivisa in blocchi

(unita’ minima di allocazione).

Latenza di accesso = Latenza di posizionamento + Latenza di rotazione + Latenza di trasferimento

Principio di localita’ dei dati per ridurre la latenza d’accesso.

Page 6: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

Le tuple di una relazione (record) sono generalmente di dimensione inferiore alla dimensione di un blocco.

Tupla dimensione fissa pari a L{Dimensione blocco B

Fattore di blocco = B/L

(numero di record per blocco)

Page 7: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Per l’accesso e la memorizzazione su memoria secondaria, i DMBS utilizzano le funzionalita’ offertedal sistema operativo (file-system).

Organizzazione della Memoria

FileDescriptor* open(String)

close(FileDescriptor*)

byte[] read(FileDescriptor*)

write(FileDescriptor*, byte[])FILE SYSTEM UNIX

API del FILE SYSTEM

Page 8: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO.

Organizzazione della Memoria

CATEGORIE DI ORGANIZZAZIONE DEI FILE

Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Page 9: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura seriale le tuple si presentano nel file nell’ordine con cui sono inserite nel DB.

Organizzazione della Memoria

Matricola

Nome Cognome

012 Marco Rossi

013 Simone Bianchi

014 Sara Verdi

0100110110000001111000

0011101101111000

0001

DB FILEMatricola

Nome Cognome

012 Marco Rossi

013 Simone Bianchi

INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”)

Page 10: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura seriale le tuple si presentano nel file nell’ordine con cui sono inserite nel DB.

Organizzazione della Memoria

Inserimento dati O(1) Ricerca dati O(N) Aggiornamento dati

O(N) Cancellazione dati O(N)N=numero di tuple nel file

0100110110000001111000

0011101101111000

000111011110000

00111011110000

001

FRAMMENTAZIONEINTERNA

Page 11: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO.

Organizzazione della Memoria

CATEGORIE DI ORGANIZZAZIONE DEI FILE

Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Page 12: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura sequenziali le tuple sono memorizzate secondo l’ordine di uno o piu’ attributi dello schema relazionale.

Organizzazione della Memoria

Matricola

Nome Cognome

012 Marco Rossi

014 Sara Verdi

013 Simone Bianchi

0100110110000001111000

001110

DB FILE

Matricola

Nome Cognome

012 Marco Rossi

013 Simone Bianchi

INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”)

0100110110000011011110

00000101111000001

110

Page 13: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Le strutture sequenziali facilitano le operazioni SQL di ordinamento/raggruppamento/ricerca sugli attributi su cui e’ definito l’ordinamento.

Organizzazione della Memoria

SELECT * FROM Studenti ORDER BY Nome

SELECT * FROM Studenti WHERE (Nome=“Sara”)

SELECT Nome FROM Studenti GROUP BY NomeQ. Complessita’ algoritmica della ricerca dicotomica?

Page 14: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Le strutture sequenziali sono piu’ complesse da gestire in caso di operazioni di aggiornamento/cancellazione/inserimento.

Organizzazione della Memoria

In questi casi, e’ necessario procedere a periodiche riorganizzazioni della struttura.

Per questo motivo, le strutture sequenziali sono spesso usate in associazione con indici ISAM (Index Sequential Access Method)

Page 15: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO.

Organizzazione della Memoria

CATEGORIE DI ORGANIZZAZIONE DEI FILE

Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Page 16: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura hash Si utilizza una funzione (hash) per determinare il blocco in cui e’ memorizzato una tupla, a partire dal valore di un suo attributo (in genere, la chiave).

Organizzazione della Memoria

K: valore della chiave della tupla. f(K): numero di blocco in cui e’ contenuta

la tupla con valore della chiave pari a K.

Com’e’ fatta f(K)? Funzione iniettiva (caso ideale)

Page 17: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

0 1 2

3 4 5

6 7 8

Esempio di STRUTTURE HASH

<29, Marco, Rossi>

<68, Simone, Bianchi>

<71, Sara, Verdi>

f: I [0,B[

Es. f(Matricola)=Matricola % B

B: Numero di blocchi

f(29)=2

f(68)=5

f(71)=8

Page 18: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

0 1 2

3 4 5

6 7 8

Esempio di STRUTTURE HASH

<29, Marco, Rossi>

<68, Simone, Bianchi>

<71, Sara, Verdi>

Vantaggio Strutture Hash buona parte delle operazioni sulle tuple che coinvolgono la chiave possono essere eseguite in tempo costante …

B: Numero di blocchi

f(29)=2

f(68)=5

f(71)=8

Page 19: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

0 1 2

3 4 5

6 7 8

Esempio di STRUTTURE HASH

<29, Marco, Rossi>

<68, Simone, Bianchi>

<14, Sara, Verdi>

f: I [0,B[

Es. f(Matricola)=Matricola % B

B: Numero di blocchi

f(29)=2

f(68)=5

f(71)=5

COLLISIONE!

Page 20: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Poiche’ la dimensione della tupla (L) e’ in genere inferiore alla dimensione del blocco (B),in caso di collisione:

Organizzazione della Memoria

Si memorizza la tupla sequenzialmente nel blocco, fino ad esaurire lo spazio disponibile.

Max Collisioni= Fattore di blocco=B/L

In caso non vi sia piu’ spazio nel blocco, viene allocato un nuovo blocco e viene collegato a quello precedente (catena di overflow)

Page 21: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Organizzazione della Memoria

0 1 2

3 4 5

6 7 8

Esempio di STRUTTURE HASH

<29, Marco, Rossi>

<68, Simone, Bianchi>

<14, Sara, Verdi>

f: I [0,B[

Es. f(Matricola)=Matricola % B

B: Numero di blocchi

f(29)=2

f(68)=5

f(71)=5

Page 22: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

PROBLEMI STRUTTURE HASH

Organizzazione della Memoria

Numero di blocchi costituisce un trade-off

Se troppo piccolo rispetto al DB frequenti collisioni (con catene di overflow, etc). Se troppo grande rispetto al DB fattore diriempimento dei blocchi molto basso.

Gestione dinamicita’ del sistema?

Page 23: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

PROBLEMI STRUTTURE HASH

Organizzazione della Memoria

Struttura Hash NON efficiente per operazionidi selezione su un range di valori:

SELECT *FROM STUDENTIWHERE (MATRICOLA>10) AND (MATRICOLA<100)

Struttura Hash NON efficiente per operazioniche coinvolgono attributi NON chiave.

Page 24: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Indice struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave.

Q. A che serve un indice? IndiceIntroduzione 1Capitolo 1 20Capitolo 2 40Capitolo 3 60Conclusioni 65

ACCESSO DIRETTO

Organizzazione della Memoria

Page 25: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Indice struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave.

Q. A che serve l’indice in un DB?

A. Consentire accesso diretto (sulla chiave) efficiente, sia puntuale sia per intervalli, quindi ottimizzare l’esecuzioni di query SQL che si basano sulla chiave dell’indice.

Organizzazione della Memoria

Page 26: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Indice struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave.

Chiave indice (spesso) == Chiave relazione.

Gli indici possono essere di due tipi: Indici secondari. Indici primari.

Organizzazione della Memoria

Page 27: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Le tuple della relazione sono contenute nel file F. Un indice secondario e’ un file (diverso da F) contenente un insieme di coppie:

<valore_chiave, offset_tupla_in_F>

29 Marco Rossi14 Sara Verdi

68 Simone Bianchi

FILE F

Valore Chiave

Posizione

14

29

68

FILE INDICE

Organizzazione della Memoria

Page 28: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Un indice secondario puo’essere utilizzato su strutture seriali (disordinate).

Un indice secondario deve contenere tutte i valori della chiave.(indice denso).

Organizzazione della Memoria

Page 29: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Indice struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave.

La chiave dell’indice e’ (spesso) anche la chiavedella relazione. Due tipi di indice:

Indici secondari. Indici primari.

Organizzazione della Memoria

Page 30: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Un indice primario: (i) contiene al suo interno i dati oppure (ii) e’ realizzato su un file ordinato sullo stesso campo della chiave dell’indice.

Puo’ essere sparso: non tutte le chiavi della relazione devono comparire nell’indice per consentire le operazioni di ricerca.

Organizzazione della Memoria

Page 31: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

La realizzazione di indici avviene tipicamente attraverso l’utilizzo di strutture ad alberomulti-livello.

Organizzazione della Memoria

Page 32: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura di un nodo NON-foglia

P0 K1 P1 … Ki Pi … KF PF

Sottoalbero che contienele chiavi K<K1

Sottoalbero che contienele chiavi Ki<=K<Ki+1

Sottoalbero che contienele chiavi K>KF

Ciascun nodo NON-foglia contiene F valori di chiave ed F+1 puntatori (fan-out dell’albero)

Organizzazione della Memoria

Page 33: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura di un nodo foglia

CASO1. Il nodo foglia dell’albero contiene le tuple:

<14, Sara, Verdi>

<15, Michele,

Bianchi>

P012

P116

P2 …50

PF

Index-Sequential Structure

Organizzazione della Memoria

Page 34: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Struttura di un nodo foglia

CASO2. Il nodo foglia contiene un puntatore al blocco:

<14, Sara, Verdi>

<15, Michele,

Bianchi>

P012

P116

P2 …50

PF

0 1 2

3 4 5

Organizzazione della Memoria

Page 35: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Due tipologie di indici ad albero:

Indici statici La struttura ad albero viene creata sulla base dei dati presenti nel DB, e non piu’ modificata (o modificata periodicamente).

Indici dinamici La struttura ad albero viene aggiornata ad ogni operazione sulla base di dati di inserimento/cancellazione.

Organizzazione della Memoria

Page 36: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Indexed Sequential Access Method (ISAM)

Pagin

e

NO

N

term

inali

N pagine terminali

F=grado medio

Organizzazione della Memoria

Page 37: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Ricerca: partire dalla radice, confrontare le chiavi per arrivare alle pagine terminali O(logFN).

Inserimento: trovare la pagina terminale della chiave ed inserire la tupla. Nel caso di pagina piena, allocare una pagina di overlow e linkarla alla precedente. O(logFN).

Cancellazione: trovare la pagina terminale e cancellare la tupla corrispondente. O(logFN).

Costo delle operazioni su Alberi ISAM:

Organizzazione della Memoria

Page 38: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Inserimento su ISAM

4

Pagin

e

NO

N

term

inali

N pagine terminali

F=grado medio

4 (SENZA overflow)

Organizzazione della Memoria

Page 39: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Inserimento su ISAM

4

Pagin

e

NO

N

term

inali

N pagine terminali

F=grado medio

5 (CON overflow)

5

Organizzazione della Memoria

Page 40: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Cancellazione su ISAM

4

Pagin

e

NO

N

term

inali

N pagine terminali

F=grado medio

5

5

Organizzazione della Memoria

Page 41: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

ISAM: vantaggi Le operazioni di inserimento/cancellazione

NON modificano la struttura dell’albero.

ISAM: svantaggi In presenza di sistemi molto dinamici, le

prestazioni dell’indice peggiorano al crescere delle catene di overflow.

Necessario ri-creare l’indice con una certa periodicita’.

Organizzazione della Memoria

Page 42: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Due tipologie di indici ad albero:

Indici statici La struttura ad albero viene creata sulla base dei dati presenti nel DB, e non piu’ modificata (o modificata periodicamente)

Indici dinamici La struttura ad albero viene aggiornata ad ogni operazione sulla base di dati di inserimento/cancellazione.

Organizzazione della Memoria

Page 43: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Un B-tree e’ un albero binario etichettato in cui per ogni nodo x, il suo sottoalbero sinistro contiene solo etichette minori di x e il sottoalbero destro solo etichette maggiori.

4

1

9

8

530

Ricerca O(log(N)) Inserimento O(log(n)) Cancellazione O(log(n))

Organizzazione della Memoria

Page 44: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Un B+-tree e’ un B-tree nel quale i nodi terminali sono linkati sequenzialmente.

BlocchiDati

Organizzazione della Memoria

Page 45: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

B-tree e B+ tree sono strutture dinamiche:

Consentite operazioni di inserimento/aggiornamento/cancellazione di nodi.

Rispetto al B-tree, il B+tree e’ piu’ efficiente per operazioni di selezione/ricerca su un range di valori.

SELECT * FROM STUDENTI WHERE ((MATRICOLA>3) AND (MATRICOLA<10))

Organizzazione della Memoria

Page 46: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

I DBMS differiscono in base alle strutture datiutilizzate per memorizzare i dati.

Quasi tutti i sistemi prevedono strutture ad albero (B-tree/B+-tree) ed hash.

Generalmente, si usano strutture seriali (disordinate), ma con indici sulla chiave di una relazione.

Organizzazione della Memoria

Page 47: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Creazione di un indice (da schema):

CREATE [UNIQUE|FULLTEXT|SPATIAL]INDEX nome_indice ON nome_tabella(Lista_Attributi)

CREATE UNIQUE INDEX IndiceStudente ON Studenti(Matricola)

INDICI in MYSQL

Organizzazione della Memoria

Page 48: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Creazione di un indice (con tabella):CREATE TABLE Studenti (…INDEX(Matricola));

Rimozione di un indice

DROP INDEX Nome_Indice ON Nome_TabellaDROP INDEX IndiceStudenti ON Studenti

INDICI in MYSQL

Organizzazione della Memoria

Page 49: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Progettazione fisica Sebbene molti dettagli dell’organizzazione della memoria siano gia’ pre-impostati dal DBMS in uso (e non configurabili), il progettista del DB puo’:

Selezionare le strutture fisiche piu’ adatte per il DB da implementare.

In MySQL, i tipi di tabelle si chiamanoSTORAGE ENGINE: es. MyISAM, INNODB,…

Organizzazione della Memoria

Page 50: Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: difelice/dbsi

Progettazione fisica Sebbene molti dettagli dell’organizzazione della memoria siano gia’ pre-impostati dal DBMS in uso (e non configurabili), il progettista del DB puo’:

Creare indici secondari per ottimizzare l’esecuzione di query SQL specifiche.

In questi casi, l’analisi dei costi (tavola operazioni/carico/etc) puo’ essere utile …

Organizzazione della Memoria