La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Organizzazione della Memoria

Presentazioni simili


Presentazione sul tema: "Organizzazione della Memoria"— Transcript della presentazione:

1 Organizzazione della Memoria
Corso di Basi di Dati Struttura di un DBMS: Organizzazione della Memoria Home page del corso:

2 Organizzazione della Memoria
Studio/analisi dei requisiti Risultati Fasi della progettazione SCHEMA CONCETTUALE Progettazione concettuale SCHEMA LOGICO Progettazione logica SCHEMA FISICO Progettazione fisica

3 Organizzazione della Memoria
ANALISI REQUISITI PROGETTAZIONE CONCETTUALE Cosa si rappresenta Come lo si rappresenta ? Tabella1 Tabella2 TabellaN PROGETTAZIONE LOGICA Dove memorizzare le tabelle? Quali strutture dati usare?

4 Organizzazione della Memoria
Per garantire la persistenza dei dati, un DMBS deve memorizzare i dati su memoria secondaria. Suddivisa in blocchi (unità minima di allocazione). Latenza di accesso = Latenza di posizionamento + Latenza di rotazione + Latenza di trasferimento Principio di località dei dati per ridurre la latenza d’accesso.

5 Organizzazione della Memoria
Le tuple di una tabella (record) sono generalmente di dimensione inferiore alla dimensione di un blocco. { Tupla dimensione fissa pari a L Fattore di blocco = B/L Dimensione blocco B (numero di record per blocco)

6 Organizzazione della Memoria
Per l’accesso e la memorizzazione su memoria secondaria, i DMBS utilizzano le funzionalità offerte dal sistema operativo (file-system). API del FILE SYSTEM FileDescriptor* open(String) close(FileDescriptor*) byte[] read(FileDescriptor*) FILE SYSTEM UNIX write(FileDescriptor*, byte[])

7 Organizzazione della Memoria
Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

8 Organizzazione della Memoria
Struttura seriale  le tuple si presentano nel file nell’ordine con cui sono inserite nel DB. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi 014 Sara Verdi

9 Organizzazione della Memoria
Struttura seriale  le tuple si presentano nel file nell’ordine con cui sono inserite nel DB. Inserimento dati  O(1) Ricerca dati  O(N) Aggiornamento dati  O(N) Cancellazione dati  O(N) N=numero di tuple nel file FRAMMENTAZIONE INTERNA

10 Organizzazione della Memoria
Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

11 Organizzazione della Memoria
Struttura sequenziali  le tuple sono memorizzate secondo l’ordine di uno o più attributi dello schema relazionale. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE Matricola Nome Cognome 012 Marco Rossi 014 Sara Verdi 013 Simone Bianchi Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi

12 Organizzazione della Memoria
Le strutture sequenziali facilitano le operazioni SQL di ordinamento/raggruppamento/ricerca sugli attributi su cui è definito l’ordinamento. SELECT * FROM Studenti ORDER BY Nome SELECT * FROM Studenti WHERE (Nome=“Sara”) SELECT Nome FROM Studenti GROUP BY Nome Q. Complessità algoritmica della ricerca dicotomica?

13 Organizzazione della Memoria
Le strutture sequenziali sono più complesse da gestire in caso di operazioni di aggiornamento/cancellazione/inserimento. In questi casi, è 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)

14 Organizzazione della Memoria
Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

15 Organizzazione della Memoria
Struttura hash  Si utilizza una funzione (hash) per determinare il blocco in cui è memorizzato una tupla, a partire dal valore di un suo attributo (in genere, la chiave). K: valore della chiave della tupla. f(K): numero di blocco in cui è contenuta la tupla con valore della chiave pari a K. Com’e’ fatta f(K)? Funzione iniettiva (caso ideale)

16 Organizzazione della Memoria
Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 f: I  [0,B[ Es. f(Matricola)=Matricola % B

17 Organizzazione della Memoria
Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 Vantaggio Strutture Hash  buona parte delle operazioni sulle tuple che coinvolgono la chiave possono essere eseguite in tempo costante …

18 Organizzazione della Memoria
Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I  [0,B[ Es. f(Matricola)=Matricola % B COLLISIONE!

19 Organizzazione della Memoria
Poichè la dimensione della tupla (L) è in genere inferiore alla dimensione del blocco (B), in caso di collisione: 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 più spazio nel blocco, viene allocato un nuovo blocco e viene collegato a quello precedente (catena di overflow)

20 Organizzazione della Memoria
Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I  [0,B[ Es. f(Matricola)=Matricola % B

21 Organizzazione della Memoria
PROBLEMI STRUTTURE HASH 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 di riempimento dei blocchi molto basso. Gestione dinamicità del sistema?

22 Organizzazione della Memoria
PROBLEMI STRUTTURE HASH Struttura Hash NON efficiente per operazioni di selezione su un range di valori: SELECT * FROM STUDENTI WHERE (MATRICOLA>10) AND (MATRICOLA<100) che coinvolgono attributi NON chiave.

23 Organizzazione della Memoria
Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore di un campo chiave. Q. A che serve un indice? Indice Introduzione 1 Capitolo Capitolo Capitolo Conclusioni 65 ACCESSO DIRETTO

24 Organizzazione della Memoria
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? Consentire accesso diretto efficiente, sia puntuale sia per intervalli, quindi ottimizzare l’esecuzioni di query SQL che si basano sulla chiave dell’indice.

25 Organizzazione della Memoria
Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore di un campo chiave. Gli indici possono essere di due tipi: Indici secondari. Indici primari.

26 Organizzazione della Memoria
Le tuple della tabella sono contenute nel file F. Un indice secondario è un file (diverso da F) contenente un insieme di coppie: <valore_chiave, offset_tupla_in_F> FILE INDICE FILE F Valore Chiave Posizione 14 29 68 29 Marco Rossi 14 Sara Verdi 68 Simone Bianchi

27 Organizzazione della Memoria
Un indice secondario può essere utilizzato su strutture seriali (disordinate). Un indice secondario deve contenere tutte i valori della chiave.(indice denso).

28 Organizzazione della Memoria
Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave. Due tipi di indice: Indici secondari. Indici primari.

29 Organizzazione della Memoria
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. Può essere sparso: non tutte le chiavi della tabella devono comparire nell’indice per consentire le operazioni di ricerca.

30 Organizzazione della Memoria
La realizzazione di indici avviene tipicamente attraverso l’utilizzo di strutture ad albero multi-livello.

31 Organizzazione della Memoria
Struttura di un nodo NON-foglia P0 K1 P1 Ki Pi KF PF Sottoalbero che contiene le chiavi K<K1 Sottoalbero che contiene le chiavi Ki<=K<Ki+1 Sottoalbero che contiene le chiavi K>KF Ciascun nodo NON-foglia contiene F valori di chiave ed F+1 puntatori (fan-out dell’albero)

32 Organizzazione della Memoria
Struttura di un nodo foglia CASO1. Il nodo foglia dell’albero contiene le tuple: P0 12 P1 16 P2 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> Index-Sequential Structure

33 Organizzazione della Memoria
Struttura di un nodo foglia CASO2. Il nodo foglia contiene un puntatore al blocco: P0 12 P1 16 P2 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> 1 2 3 4 5

34 Organizzazione della Memoria
Due tipologie di indici ad albero: Indici statici  La struttura ad albero viene creata sulla base dei dati presenti nel DB, e non più modificata (o modificata periodicamente). Indici dinamici  La struttura ad albero viene aggiornata ad ogni operazione sulla base di dati di inserimento/cancellazione.

35 Organizzazione della Memoria
Indexed Sequential Access Method (ISAM) F=grado medio NON terminali Pagine N pagine terminali

36 Organizzazione della Memoria
Costo delle operazioni su Alberi ISAM: 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).

37 Organizzazione della Memoria
Inserimento su ISAM 4 (SENZA overflow) F=grado medio NON terminali Pagine 4 N pagine terminali

38 Organizzazione della Memoria
Inserimento su ISAM 5 (CON overflow) F=grado medio NON terminali Pagine 4 N pagine terminali 5

39 Organizzazione della Memoria
Cancellazione su ISAM 5 F=grado medio NON terminali Pagine 4 N pagine terminali 5

40 Organizzazione della Memoria
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 periodicità.

41 Organizzazione della Memoria
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.

42 Organizzazione della Memoria
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 5 3 Ricerca  O(log(N)) Inserimento  O(log(n)) Cancellazione  O(log(n))

43 Organizzazione della Memoria
Un B+-tree è un B-tree nel quale i nodi terminali sono linkati sequenzialmente. Blocchi Dati

44 Organizzazione della Memoria
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))

45 Organizzazione della Memoria
I DBMS differiscono in base alle strutture dati utilizzate 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 tabella.

46 Organizzazione della Memoria
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

47 Organizzazione della Memoria
Creazione di un indice (con tabella): CREATE TABLE Studenti ( INDEX(Matricola)); Rimozione di un indice DROP INDEX Nome_Indice ON Nome_Tabella DROP INDEX IndiceStudenti ON Studenti INDICI in MYSQL


Scaricare ppt "Organizzazione della Memoria"

Presentazioni simili


Annunci Google