METODI DI ACCESSO (INDICI) indici 1

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

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

Memorizzazione di una relazione

Strutture di accesso ai dati: B + -tree

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

Organizzazione fisica dei dati: Gli Indici

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

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

I B+ Alberi. Sommario

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

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

Indici ad albero. Albero Binario di Ricerca

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

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

Organizzazione Fisica dei Dati (Parte II)

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

FILE E INDICI Architettura DBMS

Problemi di ordinamento

Strutture fisiche e strutture di accesso ai dati

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

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

Strutture fisiche di accesso

Alberi binari e alberi binari di ricerca

Indici con gli alberi

Esercizio 10.1 Soluzione

Alberi binari e alberi binari di ricerca

Parte 6 Esercitazione sull accesso ai file

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

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

Multi-way search trees

INDICI, IMPLEMENTAZIONE DI OPERATORI ALGEBRICI E QUERY PROCESSING

Algoritmi e strutture dati

METODI DI ACCESSO (HASH)

CALCOLO DEL COSTO DI JOIN. costo di join 1

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

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

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

Ottimizzazione e organizzazione fisica

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

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

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

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

Parte VIII Organizzazione fisica

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

ARCHITETTURA DI UN B.D.M.S. Parte IV I Metodi di Accesso ai 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

Strutture fisiche di accesso

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

Alberi binari e alberi binari di ricerca

Nozioni di base (II Parte)

Heap e code di priorità

Algoritmi e Strutture Dati

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

Sistemi di Elaborazione delle Informazioni

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati

CALCOLO DEL COSTO DI MODIFICA DEI DATI

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

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

Esercizio FAT 1. Soluzione: 1. Capacità del disco: 2 24 blocchi (3 byte=24 bit) 2

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

Compito Basi di Dati. Tempo concesso: 90 minuti 18 Gennaio 2007 Nome: Cognome: Matricola:

Esercizi Capitolo 7 - Hash

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

Strutture dati II SOMMARIO:

CORSO DI BASI DI DATI Secondo Compitino

Informatica 3. Informatica 3. LEZIONE 22: Politiche di risoluzione delle collisioni. Lezione 23 - Modulo 1. Politiche di risoluzione delle collisioni

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

Strutture Fisiche di Memorizzazione

ADT Coda con priorità

Organizzazione fisica dei dati. L. Vigliano

Laboratorio di Basi di Dati

Dr. C. d'amat LA PROGETTAZIONE FISICA

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

Organizzazione fisica e gestione delle interrogazioni

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

Dati e Algoritmi I (Pietracaprina) Esercizi su Alberi Binari di Ricerca e (2,4)-Tree

Algoritmi e Strutture Dati. HeapSort

Esercizi su alberi binari

Esercizi proposti a lezione cap. 1 rev. ott da Atzeni e altri - Basi di dati vol. 2 ed/ ORGANIZZAZIONE FISICA

K-d-tree A L B E R T O B E L U S S I A N N O A C C A D E M I C O

Spesso sono definite anche le seguenti operazioni:

Laboratorio di Basi di Dati

IL MODELLO RELAZIONALE. Patrizio Dazzi a.a

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

Liste concatenate. Violetta Lonati

Strutture dati per insiemi disgiunti

5. Strutture di indici per file

alberi completamente sbilanciati

Gli heap. Sommario. Algoritmi e Programmazione Avanzata. Fulvio CORNO - Matteo SONZA REORDA Dip. Automatica e Informatica Politecnico di Torino

Manuale SQL. Manuale SQL - 1 -

Transcript:

METODI DI ACCESSO (INDICI) indici 1

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

Nelle lezioni precedenti Avete visto: le caratteristiche delle principali unità di memoria permanente la struttura dei files il loro ordinamento Presenteremo: In questa lezione le caratteristiche principali degli indici per l accesso alle tuple (record) indici 3

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 Indice unclustered 25 61 8 13 33 45 75 85 tuple foglie indici 10

organizzazioni con indice radice Indice clustered 25 61 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

unique indici generico (K1, p1) (K2, p2).. (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 C bin = 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 costo di costruzione dell indice: lettura della relazione, estrazione delle coppie, costruzione delle foglie sort/merge delle stesse C indice = NB + NF + 2 NF (PM+1) continuando l esempio precedente, con M e NM = 8 ed inglobando il passo di sort nella estrazione delle coppie: C indice = NB + NF + 2 NF PM C indice = 10 5 + 1.98 10 5 3 10 5 indici 24

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: (Q 0, K 1, Q 1, K 2, Q 2,, K n, Q n ) */ Q := root; while ( Q is not a leaf node ) do { if K<K 1 then Q := Q 0 else if ( i: K i <=K<K i+1 ) then Q=Q i else Q:=Qn }; If ( i: K=K i ) then for each TID in Q i 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 JOHNSTON JOHNSTOWN JOHNTON 0 JOHNSON 5 TON 7 WN 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

indice ISAM ISAM: Indexed Sequential Access Method presuppone il sort del file sulla colonna dove è costruito ISAM a livello foglie riporta solo il valore di chiave più grande presente in ciascun blocco dati ed il relativo puntatore al blocco: a differenza del B + tree contiene NB coppie (chiave, id) invece di NT è statico: se un valore viene cancellato o inserito l indice non si modifica, presuppone l uso di overflow nel file indirizzato, va ricostruito a seguito di molti inserimenti. è generalmente più basso del B +. indici 31

indice ISAM 6 11 18 2 3 6 8 10 11 12 15 18 indici 32

indice ISAM ISAM: Indexed Sequential Access Method Numero di foglie NF: dipende dal numero di blocchi NB e dal fattore di riempimento dei blocchi fr (es.= 100 %) ricordiamo che nelle foglie si avranno un numero di ID = NB ed un numero di valori NB da cui NF = ( NB L(k) + NB L(p)) /(D fr) con D = 1024, L(k) = 10, L(p) = 4 e NB = 10 5 ha: NF = 5833 per l altezza calcolabile come il caso minimo del B + si ha 4 si indici 33

nelle prossime lezioni L uso degli indici per l accesso la stima del costo delle interrogazioni SQL indici 34