METODI DI ACCESSO. (INDICI B + -Tree) indici 2

Documenti analoghi
METODI DI ACCESSO (INDICI) indici 1

Databases. Architettura di un DBMS: Struttura ad indice per i files, B + -Trees

Memorizzazione di una relazione

una chiave primaria o secondaria => B+tree primario o secondario (NL,g e h diversi) clustered o unclustered => ho un piano di accesso diverso!!

Strutture di accesso ai dati: B + -tree

Informatica 3. Informatica 3. LEZIONE 23: Indicizzazione. Lezione 23 - Modulo 1. Indicizzazione. Introduzione. Indicizzazione:

Indici. Sistemi Informativi L-B. Home Page del corso: Versione elettronica: Indici.pdf

Sistemi Informativi L-B. Home Page del corso: Versione elettronica: Indici.pdf. Sistemi Informativi L-B

Organizzazione fisica dei dati: Gli Indici

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2

I B+ Alberi. Sommario

Indici ad albero. Albero Binario di Ricerca

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Problemi di ordinamento

Indici con gli alberi

Metodi di Join. Corso di Basi di Dati e Sistemi Informativi

Organizzazione fisica dei dati

Indici non tradizionali. Indici non tradizionali. Indici bitmap. Indici bitmap. Indici bitmap. Indici bitmap - esempio

FILE E INDICI Architettura DBMS

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

Si definisca il relativo schema E/R (nella metodologia proposta a lezione) e si evidenzino eventuali vincoli inespressi e attributi derivati.

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann

Alberi binari e alberi binari di ricerca

Organizzazione Fisica dei Dati (Parte II)

Alberi binari e alberi binari di ricerca

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

23/10/2016. gli alberi. alcune definizioni. un esempio. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica.

Esercizio 10.1 Soluzione

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale

Strutture fisiche di accesso

Compito DA e BD. Tempo concesso: 90 minuti 21 gennaio 04 Nome: Cognome: Matricola: Esercizio 1

Strutture fisiche e strutture di accesso ai dati

Ottimizzazione e organizzazione fisica

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

INDICI, IMPLEMENTAZIONE DI OPERATORI ALGEBRICI E QUERY PROCESSING

Compito Sistemi Informativi LS. Tempo concesso : 90 minuti 14 luglio 2010 Nome: Cognome: Matricola:

Algoritmi e Strutture Dati. HeapSort

Compito Sistemi Informativi LM. Tempo concesso : 90 minuti 10 febbraio 2011 Nome: Cognome: Matricola:

CALCOLO DEL COSTO DI JOIN. costo di join 1

CALCOLO DEL COSTO DI MODIFICA DEI DATI

Compito Basi di Dati. Tempo concesso : 90 minuti 21 Gennaio 05 Nome: Cognome: Matricola: Esercizio 1

Parte VIII Organizzazione fisica

Basi di dati II, primo modulo Prova parziale 22 marzo 2010 Compito A

Multi-way search trees

Prova di Algoritmi e s.d. (1o anno) 17 Settembre TESTO e RISPOSTE

Esercizio 1. Si consideri il seguente frammento di FAT: Blocco Fisico - valore nella FAT. e di directory D1 : nome file - primo blocco A 32 B 36

ADT Coda con priorità

Alberi binari e alberi binari di ricerca

Algoritmi e strutture dati

Esercizi su alberi binari

Algoritmi e Strutture Dati. HeapSort

d. Cancellazione del valore 5 e. Inserimento del valore 1

Espressioni aritmetiche

Strutture dati Alberi binari

Laboratorio di Basi di Dati

File e Indici. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Argomenti della lezione. Introduzione agli Algoritmi e alle Strutture Dati. Lista Lineare. Lista Lineare come Tipo di Dato Astratto

METODI DI ACCESSO (HASH)

Insert sort. Considero il primo elemento a 1. cerco il minimo tra gli elementi 3...N. scambio il minimo trovato con il primo e- lemento

alberi completamente sbilanciati

Sistemi di Elaborazione delle Informazioni

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Algoritmi e Strutture di Dati I 1. Algoritmi e Strutture di Dati I Massimo Franceschet francesc

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo

Esercizio 1. E vero che in un AVL il minimo si trova in una foglia o nel penultimo livello? FB = -1. livello 0 FB = -1. livello 1 FB = -1.

Esercizi su ABR. Prof. E. Fachini - Intr. Alg.!1

Algoritmi e Strutture Dati

Dr. C. d'amat LA PROGETTAZIONE FISICA

Algoritmi e Strutture Dati

POLITECNICO DI MILANO ESAME DI INFORMATICA 3 Prof.ssa Sara Comai Laurea On Line Anno Accademico 2003/2004 II Prova in itinere

Strutture dati per insiemi disgiunti

Strutture fisiche di accesso

Parte 6 Esercitazione sull accesso ai file

Heap e code di priorità

Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)

Strutture dati II SOMMARIO:

Sistemi Operativi Esercizi Ricapitolazione. Docente: Claudio E. Palazzi

Alberi Binari di Ricerca

Code a priorità Una coda a priorità è una struttura dati astratta che permette di rappresentare un insieme di elementi su cui è definita una

Spesso sono definite anche le seguenti operazioni:

Laboratorio di Basi di Dati

Pag Politecnico di Torino 1

D B M G D B M G 2. Gestione degli indici. Introduzione Strutture fisiche di accesso Definizione di indici in SQL Progettazione fisica

Nozioni di base (II Parte)

Corso di Informatica

Problemi, istanze, soluzioni

Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.

B-Alberi Esercitazioni

Informatica 3. LEZIONE 17: Alberi generici. Modulo 1: Definizione e ADT Modulo 2: Implementazione Modulo 3: Alberi e classi di equivalenza

Appunti su SQL. Query Language. Comando Select

1) Il sistema automatico di prenotazione dei posti di TicketTwo si basa sul seguente database.

Esercizi Capitolo 7 - Hash

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Organigramma Gerarchia. (Tree) Nessuna persona può avere più di un superiore Ogni persona può essere superiore di altre

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico.

Transcript:

METODI DI ACCESSO (INDICI B + -Tree) indici 2

organizzazioni con indice IDEA DI BASE : associare ad un file una tabella nella quale l'entrata i-esima memorizza una coppia del tipo (k i,p i ) dove : k i è un valore di chiave p i è un riferimento al record (tupla) con valore di chiave k i l indice è ordinato: le coppie (k i,p i ) sono ordinate in base ai valori di k indici 4

organizzazioni con indice 1 luisa,. 2 edvige,.. 3 adele,. 4 agnese,. 5 franca,.. 6 roberta,. 7 noemi,.. 8 elena,.. 9 laura,... 10 beatrice,. 11 diana,... 12 irene,... 3 adele 4 agnese 10 beatrice 11 diana 2 edvige 8 elena 5 franca 12 irene 9 laura 1 luisa 7 noemi 6 roberta indici 5

organizzazioni con indice Nell esempio abbiamo mostrato solamente la colonna chiave e la posizione della tupla, mentre l indice è un file costituito da mini-tuple ed occupa generalmente uno spazio di memoria di circa 5 20% della relazione ordinare il file indice è quindi più veloce l indice può essere costruito su attributi qualsiasi (su chiave di ricerca, non necessariamente chiave nel senso relazionale) l indice fornisce una visione ordinata della relazione anche su colonne non di ordinamento indici 6

organizzazioni con indice I riferimenti (4 8 byte) vengono denominati: indirizzi, puntatori o, più comunemente, TID (tuple identifier) o row-id (row identifier) sono costituiti da una coppia: id. di blocco (pagina), indirizzo nel blocco: K,(b,i) b i blocco b K tupla indice relazione L indirizzo nel blocco è a sua volta indiretto indici 7

organizzazioni con indice Metodo di accesso data una chiave K : 1. accesso all'indice 2. ricerca della coppia (K,(b,i)) 3. accesso al blocco dati b 4. accesso alla tupla contenente K (indirizzo i) le coppie (K,(b,i)) vengono collezionate in blocchi ed ordinate, questi blocchi si chiamano FOGLIE dell indice e sono tra loro collegati da puntatori. indici 8

organizzazioni con indice Al di sopra delle foglie si costruisce un organizzazione ad albero a più livelli di indirizzamento: ogni foglia è rappresentata da una coppia (K,b) nel livello immediatamente superiore (K è il valore minore), i blocchi del livello sopra le foglie sono a loro volta rappresentati a livello superiore, e così via fino ad avere un solo blocco chiamato radice indici 9

organizzazioni con indice radice 25 61 Indice unclustered 8 13 33 45 75 85 foglie tuple indici 10

organizzazioni con indice radice 25 61 Indice clustered 8 13 33 45 75 85 foglie tuple (non c è incrocio di puntatori) indici 11

indici L indice si dice clustered se è costruito su un attributo di ordinamento, altrimenti si dice unclustered su una relazione si possono costruire un indice clustered e più di un indice unclustered l indice può essere anche multiattributo (multicolonna), ad es. K :<cognome,nome> nel caso di clausola UNIQUE l indice garantisce la non ripetizione dei valori l indice può essere costruito su attributi con valori ripetuti, in tal caso la coppia (K, p) diventa (K, (p1, p2,., pk) ) indici 12

indici rossi carlo rossi mario rossi paolo rossi paolo rossi paolo valori ripetuti eliminazione dei valori ripetuti e riduzione di spazio rossi carlo rossi mario rossi paolo rossi sergio indici 13

indici unique (K1, p1) (K2, p2).. generico (K,(p1, p2,. pk)). In SQL: CREATE {UNIQUE CLUSTER} INDEX nome-indice ON nome-relazione (nome-attributo { ASC DESC },...) DROP INDEX nome-indice ALTER INDEX nome-indice TO CLUSTER indici 14

indici B + tree B + tree: l albero è associato ad un SW di gestione che lo mantiene sempre equilibrato: ogni percorso dalla radice ad una foglia ha sempre la stessa lunghezza h, chiamata altezza del B + tree ogni blocco (nodo) intermedio ha sempre almeno O+1e non più di 2 O+1 figli, contiene almeno O e non più di 2 O valori dell attributo la radice può avere da 2 a non più di 2 O +1 figli, contiene da 1 a non più di 2 O valori O si chiama ordine del B + tree Le foglie sono riempite dal 50 al 100 % indici 15

inserimento indici B + tree block split (si può propagare fino alla radice) underflow (si può propagare fino alla radice) eliminazione indici 16

prestazioni del B + tree Facciamo riferimento a: dimensione del blocco D (es. 4096) dimensione L(tid) del TID e del puntatore L(p) ai nodi intermedi (es. 4 per entrambi) dimensione L(k) del valore K Calcoliamo : l ordine O il numero di foglie NF l altezza H indici 17

prestazioni del B + tree Ordine O: consideriamo il vincolo 2 O L(k) + (2 O + 1) L(p) D da cui O = ( D - L(p)) / (2 (L(k) + L(p)) con una dimensione L(k) di 10 si ha O = 146 e 4 byte inutilizzati per nodo con una dimensione L(k) di 40 si ha O = 46 e 44 byte inutilizzati per nodo indici 18

prestazioni del B + tree Numero di foglie NF: dipende dal numero di tuple NT e dal fattore di riempimento medio dei blocchi = ln 2 69 % ricordiamo che nelle foglie si avranno un numero di TID = NT ed un numero di valori NK da cui NF = ( NK L(k) + NT L(p)) / (D ln 2 ) con una dimensione L(k) = 10, NT = 10 6, NK = 10 4 si ha: NF = 5776 indici 19

prestazioni del B + tree Altezza minima: l altezza minima Hmin si può ottenere quando tutti i nodi sono pieni, poiché al penultimo livello sono necessari NF puntatori alle foglie, si ha: NF ( 2 O+ 1) Hmin-1 e quindi Hmin = 1+ Log ( 2 O+ 1) NF indici 20

prestazioni del B + tree Altezza massima: l altezza massima Hmax si può ottenere quando tutti i nodi sono pieni per metà e la radice contiene due soli puntatori, poiché al penultimo livello sono necessari NF puntatori alle foglie, si ha: NF 2 (O + 1) Hmax-2 e quindi Hmax = 2 + Log (O + 1) (NF / 2) indici 21

prestazioni del B + tree Esempio D = 1024, L(tid) = 4, NT = 10 6 L(k) = 10 L(k) = 20 NK NF Hmax Hmin NF Hmax Hmin 10 3 5650 4 4 5664 4 4 10 4 5776 4 4 5918 4 4 10 5 7045 4 4 8454 4 4 10 6 19725 4 4 33814 5 4 si tratta in generale di alberi abbastanza bassi indici 22

prestazioni del B + tree Continuando l esempio precedente, con NB= 10 5, 10 6 tuple, 10 per blocco L(k) = 10 C seq = 5 10 4 C sort = 1.2 10 6 e Cbin = 17 C ind = 4 +1 = 5, bisogna sommare l accesso al blocco che contiene la tupla cercata (+1) si può anche ipotizzare che se le richieste sono molte, durante l esercizio, la radice ed i livelli superiori siano già in memoria: C ind = 1 +1 = 2 indici 23

prestazioni del B + tree Utilizzo dell indice: accesso veloce alla tupla per K unique accesso veloce alle tuple per K replicata accesso veloce alle tuple per range di K (K < valore, K BETWEEN k1 AND k2) facilita ORDER BY e GROUP BY indici 25

organizzazioni con indice attibuto = 27 25 61 attributo between 77 and 88 8 13 33 45 75 85 tuple indici 26

Ricerca di un valore di chiave K /* NODO: (Q0, K1, Q1, K2, Q2,, Kn, Qn) */ Q := root; Found := false; while ( (Q!=nil) &!Found ) do { if K<K1 then Q := Q0 else if ( i: K=Ki) then Found := true else if ( i: Ki<K<Ki+1) then Q=Qi else Q:=Qn }; If Found then for each TID in Qi do FetchTuple(TID); indici 27

Ricerca di un range [K1,K2] /* FOGLIA: (Qprev, K1, (TID1,..,TIDp),, Kn, (TIDr,, TIDs), Qnext) */ Qi := FindKey(K1); while ( Ki<=K2 ) do { for each TID in Qi do FetchTuple(TID); if ( i<n ) then ++i else Qi := Qnext } indici 28

compressione della chiave FORWARD COMPRESSION Si registrano: il numero di caratteri uguali ed i caratteri finali che differenziano dal valore precedente. Es: JOHNSON 0 JOHNSON JOHNSTON 5 TON JOHNSTOWN 7 WN JOHNTON 4 TON REAR COMPRESSION (Riporta i caratteri iniziali) è inefficace indici 29

compressione della chiave FORWARD / REAR CON SOPPRESSIONE Si segue la regola della Forward e si sopprimono dei caratteri che non servono a differenziare ciascun valore dal precedente e dal successivo: 0 JOHNSON 5 TON 7 WN 4 TON 0 JOHNS 5 TO 7 W 4 T JOHNS???? JOHNSTO?? JOHNSTOW? JOHNT???? che corrisponde a: si perdono quindi i valori completi della chiave indici 30