I B+ Alberi. Sommario

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

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree

Alberi Binari di Ricerca

Memorizzazione di una relazione

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Algoritmi e strutture dati

METODI DI ACCESSO (INDICI) indici 1

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

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

Tipi di indice. Indici. Leggere sezioni 13.1, 13.2 e 13.3 di Garcia- Molina et al. Tipi di strutture ad indice. ISAM: Indici primari

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

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

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

Algoritmi e Strutture Dati. Capitolo 3 Strutture dati elementari

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

Sommario. Le strutture dati elementari per implementare sequenze: Vettori Liste

Alberi ed Alberi Binari di Ricerca

GLI ALBERI BINARI DI RICERCA. Cosimo Laneve

Heap e Code di Priorità

Organizzazione fisica dei dati: Gli Indici

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

Informatica 3. LEZIONE 26: Implementazioni avanzate per liste e array. Modulo 1: Skip list Modulo 2: Multiliste Modulo 3: Rappresentazioni di matrici

Informatica 3. Informatica 3. LEZIONE 26: Implementazioni avanzate per liste e array. Lezione 26 - Modulo 1. Introduzione. Esempio

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

Organizzazione Fisica dei Dati (Parte II)

Strutture dati Alberi binari

heap heap heap? max- e min-heap concetti ed applicazioni heap = catasta condizione di heap non è una struttura ordinata

Alberi. CORDA Informatica. A. Ferrari. Testi da. Marco Bernardo Edoardo Bontà. Dispense del Corso di. Algoritmi e Strutture Dati

B-Alberi Esercitazioni

Multi-way search trees

ALBERI : introduzione SOMMARIO ALBERI ALBERI. ALBERI: introduzione ALBERI BINARI: introduzione VISITE RICORSIVE DI ALBERI

Indici con gli alberi

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

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Organizzazioni hash. Corso di Basi di Dati e Sistemi Informativi

Esercizi su alberi binari

5. Strutture di indici per file

In questa lezione Alberi binari di ricerca

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca

Heap e code di priorità

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

Alberi binari di ricerca

Alberi binari e alberi binari di ricerca

ARCHITETTURA DI UN B.D.M.S. Parte IV I Metodi di Accesso ai Dati

ricerca di un elemento, verifica dell appartenenza di un elemento

ADT Coda con priorità

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

heap concetti ed applicazioni

Dipartimento di Elettronica, Informazione e Bioingegneria API 2013/4

Strutture Merge-Find

Liste concatenate. Violetta Lonati

Algoritmi e Strutture Dati

Problemi di ordinamento

FILE E INDICI Architettura DBMS

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

Alberi di ricerca binari

Progettazione Fisica - 1. Concetti di Base - 1. Indici. Progettazione di Basi di Dati. Assunzioni Fondamentali

Un heap binario è un albero binario con le seguenti caratteristiche:

Il numero dei nodi al livello i è 1, per 0 i altezza L altezza h di un albero completamente sbilanciato con n nodi è h = n-1

Organizzazione fisica dei dati

Algoritmi e Strutture Dati

Struttura di dati che può essere usata sia come dizionario, sia come coda con priorità

Fondamenti di Informatica II

Lezione 6: 12 Novembre 2013

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

Algoritmi e strutture dati

alberi completamente sbilanciati

10/10/2016. Caratteristiche degli array. Il tipo RECORD. Il record. LABORATORIO DI PROGRAMMAZIONE 2 Corso di laurea in matematica

Code a priorità. Progettazione di Algoritmi Matricole congrue a 1. Docente: Annalisa De Bonis

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

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

Algoritmi e Strutture Dati Laboratorio 20/10/2008. Prof. Pier Luca Lanzi

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

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica

Laboratorio di Informatica. Lezione 8: Liste e alberi

Ricerca con una chiave k Assumiamo l esistenza di un descrittore albero con i campi: albero.radice (=null per l albero vuoto) albero.dimensione (=0 pe

Strutture dati. Le liste

INTRODUZIONE AL 2 TEST IN ITINERE. a.a

Alberi. Alberi: Esempio di utilizzo

Hashing e indici multidimensionali

Spesso sono definite anche le seguenti operazioni:

L albero e un tipo astratto di dati usato per rappresentare relazioni gerarchiche.

Alberi e alberi binari I Un albero è un caso particolare di grafo

ESERCIZI SUGLI HEAP BINOMIALI (CAPITOLO 20) Catalano Pietro 56/100592

Alberi e alberi binari I Un albero è un caso particolare di grafo

Laboratorio di Algoritmi e Strutture Dati. Code con Priorità

1 Realizzazione di un Indice Primario con chiavi senza duplicati

Introduzione. Liste. Strutture ricorsive (2) Strutture ricorsive (1) DD p KP p

Alberi ed Alberi Binari

Laboratorio di Algoritmi e Strutture Dati II Semestre 2005/2006. Riassunto sui dizionari

Basi di dati / Complementi di Basi di Dati

Laboratorio di Python

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D:

Introduzione. Heap-binomiali: un heap binomiale è un insieme di alberi binomiali.

Transcript:

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 in un B + -albero Osservazioni B + -alberi in pratica Riassunto 1

Motivazioni Un ISAM fornisce una struttura statica => sottoutilizzo (molte cancellazioni) => sovrautilizzo (pagine di overflow) Pagine per i dati in ordine sequenziale (Range Search) Ipotesi: Bilanciamento => riorganizzazione dinamica Indici nelle Foglie e stessa ricerca nei nodi intermedi Link sequenzile garantito per le foglie (Range Search) Esempio indici 78 0 FILE 45 56 81 105 5 518 18 27 x* 18 18<x* 27 data entries No overlflow list! 2

Definizione Un B-albero e un albero con radice e ordine d (>1) tale che: ogni nodo x contiene al piu 2d-1 chiavi, k[i] ogni nodo x contiene al piu 2d puntatori ai figli, p[i] (indefiniti per le foglie) per ogni nodo x si ha: (detta k i una generica chiave memorizzata in un figlio p[i] di x) k 0 k[1] k 1 k[2] k 2d-2 k[2d-1] k 2d-1 tutte le foglie sono alla stessa profondita (h) ogni nodo (tranne le radice) deve avere almeno d-1 chiavi e d figli 86 78 d=2 18 25 77 79 80 84 90 93 Definizione (2) Se le foglie di un B-albero vengono organizzate in una lista doppiamente collegata allora la struttura prende il nome di B + -albero Foglie (Sequence list) 78 d=2 18 * 25 * 78 * 79 * 89 * 96 *. Generalmente, le foglie non contengono i dati (cioè, data entries data records) ma indici aggregati (densi o sparsi) La radice risiede sistematicamente in memoria centrale 3

Ricerca in un B + -albero Nodo *trova( Nodo *n, Key k, int d ) if foglia(n) then return( n ) else i=0; while (i<2*d-1) and (k>n->k[i+1]); i=i+1; return(trova(n->p[i], k, d)) Ricerca (Esempio) k=47 28 k< k=47 k>28 i=1 28 n p[1] 71 12 * 18 * 32 * 47 * 55 * 56 * 67 * 84 * 96 * 97 * 4

Proprieta Altezza di un B + -Albero Se l ordine di un albero n e d nel caso di minima occupazione dell albero abbiamo liv=1 2 nodi liv=2 2d nodi liv=3 2d 2 nodi liv=i 2d (i-1) nodi Quindi per il numero totale N di chiavi in n vale: N 1+ ( d 1) h i= 1 2d i 1 h d 1 = 1+ ( d 1) = d 1 h = 2d 1 cioe N + 1 h logd 2 B + -alberi: Vantaggi I nodi intermedi (solo chiavi, k[i], e pt, P[i]) richiedono una pagina (1 operazione I/O) anche con d grande Costo delle operazioni di ricerca proporzionale ad h, cioe logaritmico (base d) in N Il branching factor f dei nodi: d f 2d Occupazione media: 60% - no overflow chains Le foglie (collegate) supportano operazioni di ricerca per intervallo (anch esse logaritmiche) I costi delle operazioni di inserimento/cancellazione sono logaritmici (segue) 5

Inserimento: ESEMPIO insert( newk,n ) newk=8 28 71 12 * 18 * 21 * 32 * 47 * 55 * 56 * 67 * 84 * 96 * 97 * (a) split foglia: copia 12 8 * 12 * 18 * 21 * (b) split generico: muovisu h = h + 1 12 28 71 8 * 12 * 18 * 21 * Cancellazione: ESEMPIO cancel( newk,n ) newk=56 newk=18 12 28 71 8 * 12 * 18 * 21 * 55 * 56 * 67 * 84 * 96 * 97 * 12 28 71 8 * 12 * 21 * 55 * 57 * 84 * 96 * 97 * 6

Cancellazione: ESEMPIO (2) cancel( newk,n ) newk=21 12 28 71 8 * 12 * 21 * 32 * 47 * 55 * 57 * 84 * 96 * 97 * Ridistribuzione: max 8 28 71 8 * 12 * 55 * 57 * 84 * 96 * 97 * Cancellazione: ESEMPIO (3) cancel( newk,n ) newk=12 8 28 71 8 * 12 * 32 * 47 * 55 * 57 * 84 * 96 * 97 * Fusione (leaf merge): 28 71 8 * 32 * 47 * 55 * 57 * 84 * 96 * 97 * 7

Cancellazione: ESEMPIO (3) 28 71 A + B C D Fusione (non-leaf merge): 71 A + B C D Osservazioni Implementazioni Compressione di chiavi Spazio libero nei nodi (~%) => minore d Cancellazione vs. marcatura+garbage collection Svantaggi: elevata dinamicità dei nodi intermedi => svantaggiosa per la concorrenza chiavi multiple Costruzione del B + -albero Inserimenti ripetuti Smart loading: Sorting e bottom-up add/split 8

Sommario B+-alberi ottimizzano le operazioni di search e range-search Sono indici dinamici che si adattano alle variazioni di taglia dei dati L ordine d di un albero vincola superiormente ed inferiormente il fattore di ramificazione L altezza dell albero cresce logaritmicamente con il numero delle chiavi La ricerca di elementi ha un costo (disk I/O) pari ad h Sommario Durante gli inserimenti le catene di overflow sono evitate tramite operazioni di split dei nodi pieni Tali split possono far crescere l altezza h Durante le cancellazioni le operazioni di merge tra nodi possono far decrescere l altezza dell albero L ordine dipende organizzazione dei record organizzazione degli indici (data entries) compressione delle chiavi Svantaggi per l uso concorrente dei dati: dinamica dell accesso ai nodi intermedi 9

Cosa sapere Def. ed Indicizzazione basata su B + -alberi Costi delle Operazioni di Ricerca Ricerca per Intervallo Inserimento e Cancellazione Confronto tra ISAM e B + -alberi 10