Strutture di accesso ai dati: B + -tree
|
|
|
- Alberta Costa
- 9 anni fa
- Просмотров:
Транскрипт
1 Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O Osservazione Quando l indice aumenta di dimensioni, non può risiedere sempre in memoria centrale: di conseguenza deve essere gestito in memoria secondaria. È possibile utilizzare un FILE SEQUENZIALE ORDINATO per rappresentare l indice in mem. sec. Le prestazioni di accesso a tale struttura fisica a fronte di inserimenti/cancellazioni tendono a degradare e richiedono frequenti riorganizzazioni. Inoltre è disponibile solo l accesso sequenziale. Per superare il problema si introducono per gli indici strutture fisiche diverse. Tra queste analizzeremo: le strutture ad albero e le strutture ad accesso calcolato.
2 B + -tree: caratteristiche Caratteristiche generali dell indice B + -tree: è una struttura ad albero; ogni nodo corrisponde ad una pagina della memoria secondaria; i legami tra nodi diventano puntatori a pagina; ogni nodo ha un numero elevato di figli, quindi l albero ha tipicamente pochi livelli e molti nodi foglia; l albero è bilanciato: la lunghezza dei percorsi che collegano la radice ai nodi foglia è costante; inserimenti e cancellazioni non alterano le prestazioni dell accesso ai dati: l albero si mantiene bilanciato. B + -tree: struttura Struttura di un B + -tree (fan-out = n) NODO FOGLIA può contenere fino a (n-) valori della chiave di ricerca e fino a n puntatori. p K p 2 p m- K m- p m Punta alla prima tupla con chiave K (indice primario). Punta al bucket di puntatori verso le tuple con chiave K (indice secondario). m n i<j K i <K j variante: al posto dei valori chiave il nodo foglia contiene direttamente le tuple (struttura integrata dati/indice) 2
3 B + -tree: struttura Struttura di un B + -tree (fan-out = n) NODO FOGLIA (vincoli) I nodi foglia sono ordinati. Inoltre, dati due nodi foglia L i e L j con i<j risulta: K t L i : K s L j : K t <K s Il puntatore p m del nodo L i punta al nodo L i+ se esiste. L i p K p 2 p m- K m- L i+ p K p 2 p m- K m- p m B + -tree: struttura Struttura di un B + -tree (fan-out = n) NODO INTERMEDIO può contenere fino a n puntatori a nodo. p K p 2 K i- p i K i p m - K m - p m m n Punta al sottoalbero con chiavi k tali che: k<k Punta al sottoalbero con chiavi k tali che: K i- k <K i Punta al sottoalbero con chiavi k tali che: K m - k 3
4 B + -tree: vincoli di riempimento (regole di bilanciamento) Struttura di un B + -tree (fan-out = n) NODO FOGLIA (vincolo di riempimento) Ogni nodo foglia contiene un numero di valori chiave #chiavi vincolato come segue: ( n ) / 2 # chiavi ( n NODO INTERMEDIO (vincolo di riempimento) Ogni nodo intermedio contiene un numero di puntatori #puntatori vincolato come segue (non vale per la radice): Arrotondamento all intero superiore più vicino n / 2 # puntatori n ) Ricerca dei record con chiave K Passo Cercare nel nodo (radice) il più piccolo valore di chiave maggiore di K. Se tale valore esiste (supponiamo sia K i ) allora seguire il puntatore p i. K = 5 p 3 p 2 5 p i 9 p m- 23 p m Punta al sottoalbero con chiavi k tali che: 5 k <9 Se tale valore non esiste seguire il puntatore p m. K = 24 p 3 p 2 5 p i 9 p m- 23 p m Punta al sottoalbero con chiavi k tali che: 23 k 4
5 Ricerca dei record con chiave K Passo 2 Se il nodo raggiunto è un nodo foglia cercare il valore K nel nodo e seguire il corrispondente puntatore verso le tuple, altrimenti riprendere il passo. K = 5 p 3 p 2 p i 5 p m- 6 p m Punta alle tuple con valore K = 5 B + -tree: profondità dell albero Osservazione Il costo di una ricerca nell indice, in termini di numero di accessi alla memoria secondaria, risulta pari al numero di nodi acceduti nella ricerca. Tale numero in una struttura ad albero è pari alla profondità dell albero, che nel B + -tree è indipendente dal percorso ed è funzione del fan-out n e del numero di valori chiave presenti nell albero #valorichiave: prof B tree log n / 2 # valorichiave ( n ) / 2 5
6 Inserimento di un nuovo valore della chiave K Passo : ricerca del nodo foglio NF dove il valore K va inserito Passo 2: se K è presente in NF, allora: Indice primario: nessuna azione Indice secondario: aggiornare il bucket di puntatori altrimenti, inserire K in NF rispettando l ordine e: Indice primario: inserire puntatore alla tupla con valore K della chiave Indice secondario: inserire un nuovo bucket di puntatori contenente il puntatore alla tupla con valore K della chiave. K = 5 NF NF p 3 p 2 8 p i 2 p m- 6 p m p 3 p 2 8 p i 2 p i+ 5 p m- 6 p m se non è possibile inserire K in NF, allora eseguire uno SPLIT di NF. Inserimento di un nuovo valore della chiave K SPLIT di un nodo foglia Nel nodo da dividere esistono n valori chiave, si procede come segue: Creare due nodi foglia; Inserire i primi (n-)/2 valori nel primo; Inserire i rimanenti nel secondo; Inserire nel nodo padre un nuovo puntatore per il secondo nodo foglia generato e riaggiustare i valori chiave presenti nel nodo padre. Se anche il nodo padre è pieno (n puntatori già presenti) lo SPLIT si propaga al padre e così via, se necessario, fino alla radice. 6
7 Inserimento di un nuovo valore della chiave K Esempio di SPLIT di un nodo foglia (fan-out = 5) K = 5 p 3 p 2 8 p 3 2 p 4 6 altri nodi foglia SPLIT p 3 p 2 8 p 3 2 p x 5 p 4 6 altri nodi foglia Cancellazione di un valore della chiave K Passo : ricerca del nodo foglia NF dove il valore K va cancellato Passo 2: cancellare K da NF insieme al suo puntatore: Indice primario: nessuna azione Indice secondario: liberare il bucket di puntatori K = 2 p 3 p 2 8 p 3 2 p m- 6 p m p 3 p 2 8 p m- 6 p m se dopo la cancellazione di K da NF viene violato il vincolo di riempimento minimo di NF, allora eseguire un MERGE di NF. 7
8 Cancellazione di un valore della chiave K MERGE di un nodo foglia Nel nodo da unire esistono (n-)/2 - valori chiave, si procede come segue: Individuare il nodo fratello adiacente da unire al nodo corrente; Se i due nodi hanno complessivamente al massimo n- valori chiave, allora si genera un unico nodo contenente tutti i valori si toglie un puntatore dal nodo padre si aggiustano i valori chiave del nodo padre Altrimenti si distribuiscono i valori chiave tra i due nodi e si aggiustano i valori chiave del nodo padre Se anche il nodo padre viola il vincolo minimo di riempimento (meno di n/2 puntatori presenti), il MERGE si propaga al padre e così via, se necessario, fino alla radice. Cancellazione di un valore della chiave K Esempio di MERGE di un nodo foglia (fan-out = 5) K =3 p 3 p 2 8 p 3 2 p 4 5 p 5 6 altri nodi foglia MERGE p 2 8 p 3 2 p 4 5 p 5 6 altri nodi foglia 8
9 Strutture ad accesso calcolato (hashing) Caratteristiche generali delle strutture ad accesso calcolato: si basano su una funzione di hash che mappa le chiavi sugli indirizzi di memorizzazione delle tuple nelle pagine dati della memoria secondaria; h: K B K: dominio delle chiavi, B: dominio degli indirizzi Uso pratico di una funzione di hash Si stima il numero di valori chiave che saranno contenuti nella tabella; Si alloca un numero di bucket di puntatori (B) uguale al numero stimato; Si definisce una funzione di FOLDING che trasforma i valori chiave in numeri interi positivi: f: K Z + Si definisce una funzione di HASHING: h: Z + B Strutture ad accesso calcolato (hashing) Caratteristica di una buona funzione di HASHING: Distribuire in modo UNIFORME e CASUALE i valori chiave nei bucket. N.B.: difficilmente una funzione di hashing può essere cambiata dopo che la struttura d accesso è stata riempita. 9
10 Esempio Buckets File sequenziale ordinato (dati) A 02 Rossi 20 B 0 Rossi 345 B 98 Bianchi 000 E 7 Neri 200 E 02 Verdi 950 F 3 Bianchi 4000 H 53 Neri 3000 Funzione di hashing Filiale h(f()) A 3 B 4 E 6 F 4 H 3 Strutture ad accesso calcolato (hashing) Operazioni RICERCA Dato un valore di chiave K trovare la corrispondente tupla Calcolare b=h(f(k)) (costo zero) Accedere al bucket b (costo: accesso a pagina) Accedere alle tuple attraverso i puntatori del bucket (costo: m accessi a pagina con m<n) INSERIMENTO E CANCELLAZIONE Di complessità simile alla ricerca. 0
11 Strutture ad accesso calcolato (hashing) Osservazione La struttura ad accesso calcolato funziona se i buckets conservano un basso coefficiente di riempimento. Infatti il problema delle strutture ad accesso calcolato è la gestione delle COLLISIONI. COLLISIONE: si verifica quando, dati due valori di chiave K e K 2 con K K 2, risulta: h(f(k )) = h(f(k 2 )) Un numero eccessivo di collisioni porta alla saturazione del bucket corrispondente. Collisioni Probabilità che un bucket riceva t chiavi su n inserimenti: p( t) B dove B è il numero totale di buckets. Probabilità di avere più di F collisioni (F: numero di puntatori nel bucket): p n t K i t F 0 B p( i) ( n t )
12 Gestione delle Collisioni Un numero eccessivo di collisioni sullo stesso indirizzo porta alla saturazione del bucket corrispondente. Per gestire tale situazione si prevede la possibilità di allocare Bucket di overflow, collegati al Bucket di base. 2 3 N.B.: Le prestazioni della ricerca peggiorano in quanto individuato il bucket di base, potrebbe essere poi necessario accedere ai buckets di overflow. 4 Confronto B + -tree e Hashing Ricerca: Selezioni basate su condizioni di uguaglianza A = cost Hashing (senza overflow buckets): tempo costante B + -tree: tempo logaritmico nel numero di chiavi Selezioni basate su intervalli (range) A>cost AND A<cost 2 Hashing: numero elevato di selezioni su condizioni di uguaglianza per scandire tutti i valori del range B + -tree: tempo logaritmico per accedere al primo valore dell intervallo, scansione sui nodi foglia fino all ultimo valore compreso nel range. 2
INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso
INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo
Strutture fisiche di accesso
Strutture fisiche di accesso Esercitazioni - Basi di dati (complementi) Autore: Dr. Simone Grega Esercizio 1 Siano date le seguenti informazioni: B=4096 bytes la dimensione di un blocco H=12 bytes la dimensione
Parte VIII Organizzazione fisica
Parte VIII Organizzazione fisica Basi di dati - prof. Silvio Salza - a.a. 2017-2018 VIII - 1 Ottimizzazione e organizzazione fisica L Ottimizzatore genera i piani esecutivi delle interrogazioni Un piano
I B+ Alberi. Sommario
I B+ Alberi R. Basili (Basi di Dati, a.a. 2002-3) Sommario Indici organizzati secondo B + -alberi Motivazioni ed Esempio Definizione Ricerca in un B + -albero Esempio Vantaggi Inserimento/Cancellazione
Esercizio 10.1 Soluzione
Esercizio 10.1 Calcolare il fattore di blocco e il numero di blocchi occupati da una relazione con T = 1000000) di tuple di lunghezza fissa pari a L = 200 byte in un sistema con blocchi di dimensione pari
Organizzazione Fisica dei Dati (Parte II)
Modello Fisico dei Dati Basi di Dati / Complementi di Basi di Dati 1 Organizzazione Fisica dei Dati (Parte II) Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Modello Fisico
Esercizi su alberi binari
Esercizi su alberi binari Esercizi svolti: Determinazione nodi contenti verifica completezza verifica quasi completezza lunghezza del cammino interno determinazione ultima foglia in un quasi completo verifica
Alberi binari di ricerca
Alberi binari di ricerca Ilaria Castelli [email protected] Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010
Alberi Binari di Ricerca
Alberi Binari di Ricerca Prof. G. M. Farinella [email protected] www.dmi.unict.it/farinella Riferimenti Bibliografici Cormen T.H., Leiserson C.E., Rivest R.L Introduction to Algorithms, Third Edition,
Heap e code di priorità
Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010
Albero binario. Alberi binari (introduzione) Terminologia. Alberi di ricerca binaria (BST)
Albero binario 2 Alberi binari (introduzione) Struttura di dati bidimensionale formata da nodi costituiti ciascuno dai dati da memorizzare e da due link Ver. 2.4 20 - Claudio Fornaro - Corso di programmazione
Progettazione Fisica FILE
Progettazione Fisica Organizzazione dei files Organizzazione indici FILE Insieme di record lunghezza fissa (R) lunghezza variabile Record Header BH RH record1 RH record2 RH record2 RH record3 Block Header
Esercizi proposti a lezione cap. 1 rev. ott da Atzeni e altri - Basi di dati vol. 2 ed/ ORGANIZZAZIONE FISICA
ORGANIZZAZIONE FISICA Esercizio n.1 Si consideri una base di dati gestita tramite hashing, il cui campo chiave contenga i seguenti nominativi: Green, Lovano, Osby, Peterson, Pullen, Scofield, Allen, Haden,
Multi-way search trees
Multi-way search trees GT. 10.4 1 Argomenti Multi-way search trees Multi-way searching 9 (2,4) Trees 2 5 7 10 14 2 1 Alberi Binari di Ricerca Bilanciati n numero di chiavi (entry(key,elem)) AVL tree log(
In questa lezione Alberi binari di ricerca: la cancellazione
In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio
Problemi di ordinamento
Problemi di ordinamento Input: una sequenza di n numeri a 1, a 2,..., a n ; Output: una permutazione a 1, a 2,..., a n di a 1, a 2,..., a n tale che a 1 a 2... a n. Generalmente, la sequenza è rappresentata
Un albero completamente bilanciato o pieno (full) alberi completamente sbilanciati. Un albero binario completo
alberi completamente sbilanciati Un albero completamente bilanciato o pieno (full) Definizione: Un albero è pieno se tutte le foglie sono sullo stesso livello e ogni nodo non foglia ha due figli. Il numero
Tavole (o tabelle) hash
Alcune possibili implementazioni dell ADT Dizionario Tavole (o tabelle) hash Una rapida panoramica (vedere anche [Deme] cap. 7) Parte 23 del Corso Algoritmi e Laboratorio a.a. 2006-07 Tempo richiesto dall
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari.
Alberi n-ari: specifiche sintattiche e semantiche. Realizzazioni. Visita di alberi n-ari. Algoritmi e Strutture Dati + Lab A.A. / Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro ALBERO
Progettazione Fisica - 1. Concetti di Base - 1. Indici. Progettazione di Basi di Dati. Assunzioni Fondamentali
Università degli Studi di Trieste Progettazione Fisica - 1 Corso di Laurea in Informatica - Basi di Dati Progettazione di Basi di Dati Progettazione Fisica: gli D. Gubiani maggio 2008 Lo schema ottenuto
Esercizi Capitolo 7 - Hash
Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive
Indici ad albero. Albero Binario di Ricerca
Indici ad albero Ogni nodo contiene una sequenza di valori ed un insieme di puntatori ai nodi successivi. I valori sono le chiavi di ricerca dell indice N.B. In strutture fisiche ogni nodo corrisponde
