Informatica 3 Informatica 3 LEZIONE 23: Indicizzazione Lezione 23 - Modulo 1 • Modulo 1: Indicizzazione lineare, ISAM e ad albero • Modulo 2: 2-3 trees, B-trees e B+-trees Indicizzazione lineare, ISAM e ad albero Politecnico di Milano - Prof. Sara Comai 1 Introduzione Politecnico di Milano - Prof. Sara Comai 2 Indicizzazione • Grosse applicazioni basate su basi di dati: • Indicizzazione: – file di grandi dimensione – chiavi di ricerca multiple – supporto di interrogazioni: – a ogni record viene associata una chiave – si crea un file indice i cui record consistono di coppie chiave/puntatore al record corrispondente • su un singolo valore di chiave • su intervalli di valori • ricerca di minimo e massimo chiave ptr – supporto per operazioni di inserimento, modifica e cancellazione ... record ... Æ Indicizzazione INDICE Politecnico di Milano - Prof. Sara Comai 3 Politecnico di Milano - Prof. Sara Comai 4 1 Indicizzazione Indicizzazione lineare (1) – Nelle basi di dati: • File indice in cui le chiavi sono ordinate e i puntatori puntano alla posizione del record su disco oppure alla posizione della chiave primaria nell’indice primario • ogni record ha un unico identificatore: chiave primaria – indice primario costruito su chiavi primarie • altri valori di chiave con duplicati: chiavi secondarie – indice secondario: associa il valore della chiave secondaria con il valore di una chiave primaria chiave ptr chiave ptr ... ... ... – Accesso a record di lunghezza variabile – Accesso random e ricerca efficienti (ricerca binaria) indice lineare record ... INDICE SECONDARIO INDICE PRIMARIO Politecnico di Milano - Prof. Sara Comai record base di dati 5 Indicizzazione lineare (2) 6 Politecnico di Milano - Prof. Sara Comai Indicizzazione lineare (3) • Se la chiave secondaria ha numerosi duplicati si ha una duplicazione dei valori delle chiavi primarie associate Æ Indice lineare bidimensionale • Se la dimensione del file indice è troppo grande per stare in memoria: – indice lineare su disco – indice di secondo livello in memoria: chiave di ogni blocco su disco – per ogni riga: chiavi primarie associate a un particolare valore di chiave secondaria Jones Smith Zukowski AA10 AX33 ZQ99 AB12 AX35 AB39 ZX45 FF37 • Bassi costi di inserimento/cancellazione di record • Svantaggi: Indice di secondo livello – Array di dimensione fissa: limite superiore al numero delle chiavi primarie associate a un valore di chiave secondaria – Spreco di spazio per valori di chiave secondaria poco presenti Indice lineare su disco • Soluzione: per ogni chiave secondaria Æ lista concatenata delle chiavi primarie – Funziona bene se la tabella è in memoria Politecnico di Milano - Prof. Sara Comai 7 Politecnico di Milano - Prof. Sara Comai 8 2 Indicizzazione lineare (4) Indicizzazione lineare (5) Lista invertita (o file invertito) – Implementazione basata su array: – Esempio: record di impiegati • chiave primaria: matricola dell’impiegato • chiave secondaria: nome dell’impiegato Jones Smith Zukowski – ogni nome nell’indice secondario è associato alle matricole degli impiegati con quel nome 0 1 3 AA10 AB12 AB39 FF37 Jones Smith Zukowski 0 1 2 3 4 5 6 7 AA10 AX33 ZX45 ZQ99 AB12 AB39 AX35 FF37 4 6 ----5 7 2 --- AX33 AC35 ZX45 ZQ99 • Ricerca: dalla chiave secondaria a quella primaria Politecnico di Milano - Prof. Sara Comai 9 Politecnico di Milano - Prof. Sara Comai ISAM ISAM (2) • Problema per grossi basi di dati: una singola struttura non è adatta perchè un aggiornamento può richiedere la modifica di tutte le chiavi nell’indice • ISAM (IBM): forma modificata di indice lineare in cui i record sono ordinati in base alla chiave primaria Tabella in memoria delle chiavi dei cilindri Indice cilindro Indice cilindro – il file è memorizzato su diversi cilindri su disco – In memoria una tabella elenca i valori inferiori memorizzati in ciascun cilindro del file Record Record • ogni cilindro contiene una tabella con i valori inferiori memorizzati in ciascun blocco del cilindro + area di overflow Overflow Overflow – Ricerca di un record: identificazione del cilindro Æ identificazione del blocco Æ identificazione del record nel blocco e nell’area di overflow Politecnico di Milano - Prof. Sara Comai 10 Overflow di sistema 11 Politecnico di Milano - Prof. Sara Comai 12 3 Indicizzazione ad albero Informatica 3 • Indicizzazione lineare: efficiente per basi di dati statiche • ISAM: efficiente per aggiornamenti limitati Lezione 23 - Modulo 2 Æ BST per indici primari e secondari • valori duplicati • inserimenti e cancellazioni efficienti • interrogazioni su intervalli 2-3 trees – Problema: bilanciamento dell’albero • se sono su disco la profondità dei nodi è determinante per le prestazioni • ogni percorso dalla radice alle foglie deve richiedere pochi accessi ai blocchi Politecnico di Milano - Prof. Sara Comai 13 Politecnico di Milano - Prof. Sara Comai 2-3 tree (1) 14 2-3 tree (2) • Definizione: un 2-3 tree è un albero che soddisfa le seguenti proprietà: • Esempio: – ogni nodo contiene una o due chiavi – ogni nodo interno ha due figli (se contiene una chiave) oppure tre figli (se contiene due chiavi) – tutte le foglie sono allo stesso livello – Le proprietà di ricerca in un 2-3 tree sono analoghe a quelle di un BST • i valori dei discendenti del sotto-albero di sinistra sono minori del valore della prima chiave • se il nodo ha due chiavi, i valori del sotto-albero centrale sono minori della seconda chiave • i valori del sotto-albero di destra sono maggiori o uguali alla seconda chiave Politecnico di Milano - Prof. Sara Comai – Vantaggio: il costo del bilanciamento è basso 15 Politecnico di Milano - Prof. Sara Comai 16 4 Inserimento in un 2-3 tree (1) Inserimento in un 2-3 tree (2) • Operazione di inserimento: • Operazione di inserimento con sdoppiamento del nodo: Inserisci 55: Inserisci 14: promozione 14 Politecnico di Milano - Prof. Sara Comai 17 Inserimento in un 2-3 tree (3) Politecnico di Milano - Prof. Sara Comai 18 Inserimento in un 2-3 tree (4) • Sdoppiamento della radice • Sdoppiamento della radice Inserisci 19: Politecnico di Milano - Prof. Sara Comai 19 Politecnico di Milano - Prof. Sara Comai 20 5 Cancellazione in un 2-3 tree Bilanciamento in altezza • Osservazione: gli inserimenti e le cancellazioni non aggiungono nuovi nodi in fondo all’albero • Cancellazione di una chiave da un 2-3 tree: – la chiave viene rimossa da un nodo foglia contenente due record – suddividono o combinano nodi, eventualmente spostando la radice – tutti i nodi foglia rimangono sempre allo stesso livello Æ cancellazione della chiave – la chiave viene rimossa da un nodo foglia contenente un record – la chiave viene rimossa da un nodo interno Æ l’albero è bilanciato in altezza Æsostituzione della chiave cancellata con un’altra chiave (BST) – Per un 2-3 tree la profondità massima dell’albero è log n • le operazioni di inserimento, ricerca e cancellazione richiedono un tempo Θ(log n) può richiedere il merge di nodi Politecnico di Milano - Prof. Sara Comai 21 Politecnico di Milano - Prof. Sara Comai 22 B-tree (1) Informatica 3 • Struttura dati utilizzata in tutte le applicazioni che richiedono inserimenti, cancellazioni, interrogazioni su intervalli di valori – – – – Lezione 23 - Modulo 3 B-trees e B+-trees Politecnico di Milano - Prof. Sara Comai 23 albero bilanciato in altezza aggiornamenti e ricerche su pochi blocchi del disco chiavi con valori simili nello stesso blocco (località) ogni nodo nell’albero contiene una % minima di informazione (efficienza spaziale) Politecnico di Milano - Prof. Sara Comai 24 6 B-tree (2) Ricerca in un B-tree • Definizione: un B-tree di ordine m è un albero che soddisfa le seguenti proprietà: • Esempio di B-tree di ordine 4: – la radice è una foglia oppure ha almeno due figli – ogni nodo interno, eccetto la radice, ha tra ⎡m/2⎤ e m figli – tutte le foglie sono allo stesso livello nell’albero E’ una generalizzione del 2-3 tree (m=3) • Ricerca: – ricerca binaria sulle chiavi del nodo corrente • se si trova la chiave restituisci il record • se non si trova la chiave e il nodo è una foglia: insuccesso – scelta del ramo appropriato – ripeti • Esempio: ricerca di 47 Politecnico di Milano - Prof. Sara Comai 25 Politecnico di Milano - Prof. Sara Comai 26 B+-tree Inserimento in un B-tree • B+-tree: variante del B-tree comunemente implementata che memorizza i record (o i puntatori ai record in caso di indice) solamente nei nodi foglia • Operazione di inserimento: – generalizzazione dell’inserimento in un 2-3 tree – i nodi interni memorizzano solo valori di chiave e puntatori ai nodi figli – in un B+-tree di ordine m un nodo foglia può contenere più o meno di m record – requisito: pieni per metà – nodi foglia collegati in una lista doppia interrogazioni su intervalli • Esempio: – si trova il nodo foglia in cui inserire la nuova chiave • se lo spazio è sufficiente si inserisce il nuovo valore • se lo spazio non è sufficiente si suddivide il nodo in due nodi e si promuove la chiave intermedia al nodo padre (e così via) – Oss.: tutti i nodi interni sono pieni almeno per metà Politecnico di Milano - Prof. Sara Comai 27 Politecnico di Milano - Prof. Sara Comai 28 7 Ricerca in un B+-tree Inserimento in un B+-tree • Ricerca in un B+-tree: come in un B-tree • Inserimento in un B+-tree: come in un B-tree – se il nodo è pieno Æ dividi e promuovi – termina in un nodo foglia Esempio: Inserisci 50 – Esempio: ricerca di 33 Esempio: Inserisci 30 Politecnico di Milano - Prof. Sara Comai 29 Cancellazione in un B+-tree (1) Politecnico di Milano - Prof. Sara Comai 30 Cancellazione in un B+-tree (2) • Cancellazione in un B+-tree: • Cancellazione in un B+-tree: – underflow se il nodo in cui si cancella la chiave contiene meno della metà dei record Cancella 18: Cancella 12: Politecnico di Milano - Prof. Sara Comai 31 Politecnico di Milano - Prof. Sara Comai 32 8 Cancellazione in un B+-tree (3) B*-tree • Cancellazione in un B+-tree: • B*-tree: variante del B+-tree con regole diverse per la suddivisione e la combinazione di nodi: – underflow se il nodo in cui si cancella la chiave contiene meno della metà dei record – in caso di overflow i record vengono passati ai fratelli vicini • se i fratelli non hanno spazio allora i due nodi vengono suddivisi in tre nodi Cancella 33: – in caso di undeflow il record viene combinato con i suoi due fratelli a) merge dei due nodi foglia b) trasferisci la foglia del sotto-albero di sinistra e aggiusta i valori dei nodi interni Æ nodi pieni per 2/3 Politecnico di Milano - Prof. Sara Comai 33 Analisi dei B-tree (1) – I nodi sono sempre pieni per 2/3 Politecnico di Milano - Prof. Sara Comai 34 Analisi dei B-tree (2) • Costo di ricerca, inserimento e cancellazione: Θ(log n) con n = # record nell’albero la base del log dipende dal fattore di ramificazione dell’albero • Per ridurre il numero di accessi al disco: – 1) livelli più alti dell’albero in memoria centrale • livelli 0 e 1 richiedono poco spazio • se l’albero ha 4 livelli: 2 accessi al disco • Basi di dati: 100 rami Æ alberi poco profondi – 2) pool di buffer con tecnica LRU per le sostituzioni di record – m = 100 • • • • 1 livello: massimo 100 record 2 livelli: minimo 100 record, massimo 10.000 record 3 livelli: minimo 5.000 record, massimo 1 milione di record 4 livelli: minimo 250.000 record, massimo 100 milioni di record Politecnico di Milano - Prof. Sara Comai 35 Politecnico di Milano - Prof. Sara Comai 36 9