Informatica 3. LEZIONE 23: Indicizzazione. Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees



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

B+Trees. Introduzione

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in:

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Altri metodi di indicizzazione

Indici ad albero. Albero Binario di Ricerca

Alberi binari. Ilaria Castelli A.A. 2009/2010. Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione

Cosa è un foglio elettronico

Progettazione Fisica FILE

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

B alberi. dizionari in memoria secondaria

Algoritmi e strutture dati. Codici di Huffman

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

12. Implementazione di un File System Struttura a livelli Allocazione contigua

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Operazioni di Comunicazione di base. Cap.4

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Il File System. Il file system

Il file system. meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate. in memoria di massa

Indici basati su alberi

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Informatica. Rappresentazione dei numeri Numerazione binaria

Capitolo Silberschatz

Esercizi Capitolo 6 - Alberi binari di ricerca

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Alberi binari di ricerca

PROGETTAZIONE FISICA

Guida all uso di Java Diagrammi ER

File system II. Sistemi Operativi Lez. 20

Aprire WEKA Explorer Caricare il file circletrain.arff Selezionare random split al 66% come modalità di test Selezionare J48 come classificatore e

Algoritmi e Strutture Dati & Laboratorio di Algoritmi e Programmazione

La memoria - generalità

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Costruzione del layout in gino cms

Il Software. Il software del PC. Il BIOS

I database relazionali (Access)

Algoritmi e Strutture Dati

Gerarchia delle memorie

Sistemi Operativi. 12 LEZIONE REALIZZAZIONE DEL FILE SYSTEM CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Laboratorio di Informatica di Base Archivi e Basi di Dati

PIANO DI TUTELA DELLE ACQUE DELLA SICILIA (di cui all'art. 121 del Decreto Legislativo 3 aprile 2006, n 152)

Basi di dati. Concetti introduttivi ESEMPIO. INSEGNAMENTI Fisica, Analisi, Aule. Docenti. Entità Relazioni Interrogazioni. Ultima modifica: 26/02/2007

Alessandro Pellegrini

5.3 TABELLE RECORD Inserire, eliminare record in una tabella Aggiungere record Eliminare record

Leggere un messaggio. Copyright 2009 Apogeo

La struttura dati ad albero binario

Database. Si ringrazia Marco Bertini per le slides

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

Organizzazione degli archivi

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

MANUALE PORTALE UTENTE IMPRENDITORE

Olga Scotti. Basi di Informatica. File e cartelle

Università degli Studi di Verona. Laboratorio di Basi di Dati

Generalità sugli ARCHIVI

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

DATABASE RELAZIONALI

Esame di Informatica CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO CHE COS È UN FOGLIO ELETTRONICO. Facoltà di Scienze Motorie

Basi di Dati Complementi Esercizi. Esercizi su strutture fisiche di accesso. Soluzione Esercizio 1. Esercizio 1. Soluzione Esercizio 2.

Gestione della memoria. Paginazione Segmentazione Segmentazione con paginazione

Algoritmi di Ricerca. Esempi di programmi Java

Ricerca non informata in uno spazio di stati

LINGUAGGI DI PROGRAMMAZIONE

Indice. settembre 2008 Il File System 2

Excel. Excel. Videata iniziale Fogli elettronici. Fogli elettronici. Come si inserisce un dato

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Studente: SANTORO MC. Matricola : 528

Esame Basi di Dati. 21 Gennaio 2013

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

La Gestione delle risorse Renato Agati

Lezione 5. Fogli di calcolo

Manuale di realizzazione dei modelli di documento

Introduzione al MATLAB c Parte 2

MANUALE PARCELLA FACILE PLUS INDICE

Esercizi per il corso di Algoritmi e Strutture Dati

Alfa Layer S.r.l. Via Caboto, Torino ALFA PORTAL

Finalità della soluzione Schema generale e modalità d integrazione Gestione centralizzata in TeamPortal... 6

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

1. Le macro in Access 2000/2003

Corso di Informatica. Immissione di dati. Visualizzazione come foglio dati 1. Visualizzazione come foglio dati 2 11/01/2008

Introduzione ai database relazionali

Introduzione al data base

Cos è Excel. Uno spreadsheet : un foglio elettronico. è una lavagna di lavoro, suddivisa in celle, cosciente del contenuto delle celle stesse

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

STRUTTURE NON LINEARI

Basi di Dati Relazionali

CREAZIONE DI UN DATABASE E DI TABELLE IN ACCESS

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Funzioni in C. Violetta Lonati

La Stampa Unione. Individuare la lista indirizzi per la Stampa Unione

Access. P a r t e p r i m a

Progettazione di Basi di Dati

Sistemi Operativi Il Sistema Operativo Windows (parte 3)

Gestione sito web. Ruolo: Biblioteca

Sistemi operativi. Esempi di sistemi operativi

Utilizzo degli indici nei DBMS relazionali

WEBGIS 1.0. Guida per l utente

Transcript:

Informatica 3 LEZIONE 23: Indicizzazione Modulo 1: Indicizzazione lineare, ISAM e ad albero Modulo 2: 2-3 trees, B-trees e B + -trees

Informatica 3 Lezione 23 - Modulo 1 Indicizzazione lineare, ISAM e ad albero

Introduzione Grosse applicazioni basate su basi di dati: file di grandi dimensione chiavi di ricerca multiple supporto di interrogazioni: su un singolo valore di chiave su intervalli di valori ricerca di minimo e massimo supporto per operazioni di inserimento, modifica e cancellazione Indicizzazione

Indicizzazione Indicizzazione: a ogni record viene associata una chiave si crea un file indice i cui record consistono di coppie chiave/puntatore al record corrispondente chiave ptr record...... INDICE

Indicizzazione Nelle basi di dati: 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 record............ INDICE SECONDARIO INDICE PRIMARIO

Indicizzazione lineare (1) 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 Accesso a record di lunghezza variabile Accesso random e ricerca efficienti (ricerca binaria) indice lineare record base di dati

Indicizzazione lineare (2) 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 Indice di secondo livello Indice lineare su disco

Indicizzazione lineare (3) Se la chiave secondaria ha numerosi duplicati si ha una duplicazione dei valori delle chiavi primarie associate Indice lineare bidimensionale per ogni riga: chiavi primarie associate a un particolare valore di chiave secondaria Jones AA10 AB12 AB39 FF37 Smith AX33 AX35 ZX45 Zukowski ZQ99 Bassi costi di inserimento/cancellazione di record Svantaggi: 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 Soluzione: per ogni chiave secondaria lista concatenata delle chiavi primarie Funziona bene se la tabella è in memoria

Indicizzazione lineare (4) Lista invertita (o file invertito) Esempio: record di impiegati chiave primaria: matricola dell impiegato chiave secondaria: nome dell impiegato ogni nome nell indice secondario è associato alle matricole degli impiegati con quel nome Jones Smith Zukowski AA10 AB12 AB39 FF37 AX33 AC35 ZX45 ZQ99 Ricerca: dalla chiave secondaria a quella primaria

Indicizzazione lineare (5) Implementazione basata su array: Jones 0 Smith 1 Zukowski 3 0 AA10 4 1AX33 6 2ZX45 --- 3ZQ99 --- 4 AB12 5 5 AB39 7 6AX35 2 7 FF37 ---

ISAM 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 il file è memorizzato su diversi cilindri su disco In memoria una tabella elenca i valori inferiori memorizzati in ciascun cilindro del file ogni cilindro contiene una tabella con i valori inferiori memorizzati in ciascun blocco del cilindro + area di overflow Ricerca di un record: identificazione del cilindro identificazione del blocco identificazione del record nel blocco e nell area di overflow

ISAM (2) Tabella in memoria delle chiavi dei cilindri Indice cilindro Record Indice cilindro Record Overflow Overflow Overflow di sistema

Informatica 3 Lezione 23 - Modulo 2 2-3 trees

Indicizzazione ad albero Indicizzazione lineare: efficiente per basi di dati statiche ISAM: efficiente per aggiornamenti limitati BST per indici primari e secondari valori duplicati inserimenti e cancellazioni efficienti interrogazioni su intervalli 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

2-3 tree (1) Definizione: un 2-3 tree è un albero che soddisfa le seguenti proprietà: 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

2-3 tree (2) Esempio: Vantaggio: il costo del bilanciamento è basso

Inserimento in un 2-3 tree (1) Operazione di inserimento: Inserisci 14: 14

promozion Inserimento in un 2-3 tree (2) Operazione di inserimento con sdoppiamento del nodo: Inserisci 55:

Inserimento in un 2-3 tree (3) Sdoppiamento della radice Inserisci 19:

Inserimento in un 2-3 tree (4) Sdoppiamento della radice

Cancellazione in un 2-3 tree Cancellazione di una chiave da un 2-3 tree: la chiave viene rimossa da un nodo foglia contenente due record cancellazione della chiave la chiave viene rimossa da un nodo foglia contenente un record la chiave viene rimossa da un nodo interno sostituzione della chiave cancellata con un altra chiave (BST) può richiedere il merge di nodi

Bilanciamento in altezza Osservazione: gli inserimenti e le cancellazioni non aggiungono nuovi nodi in fondo all albero suddividono o combinano nodi, eventualmente spostando la radice tutti i nodi foglia rimangono sempre allo stesso livello l albero è bilanciato in altezza Per un 2-3 tree la profondità massima dell albero è log n le operazioni di inserimento, ricerca e cancellazione richiedono un tempo Θ(log n)

Informatica 3 Lezione 23 - Modulo 3 B-trees e B + -trees

B-tree (1) Struttura dati utilizzata in tutte le applicazioni che richiedono inserimenti, cancellazioni, interrogazioni su intervalli di valori 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)

B-tree (2) Definizione: un B-tree di ordine m è un albero che soddisfa le seguenti proprietà: 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 in un B-tree Esempio di B-tree di ordine 4: 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

Inserimento in un B-tree Operazione di inserimento: generalizzazione dell inserimento in un 2-3 tree 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à

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 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:

Ricerca in un B + -tree Ricerca in un B + -tree: come in un B-tree termina in un nodo foglia Esempio: ricerca di 33

Inserimento in un B + -tree Inserimento in un B + -tree: come in un B-tree se il nodo è pieno dividi e promuovi Esempio: Inserisci 50 Esempio: Inserisci 30

Cancellazione in un B + -tree (1) Cancellazione in un B + -tree: Cancella 18:

Cancellazione in un B + -tree (2) Cancellazione in un B + -tree: underflow se il nodo in cui si cancella la chiave contiene meno della metà dei record Cancella 12:

Cancellazione in un B + -tree (3) Cancellazione in un B + -tree: underflow se il nodo in cui si cancella la chiave contiene meno della metà dei record Cancella 33: a) merge dei due nodi foglia b) trasferisci la foglia del sotto-albero di sinistra e aggiusta i valori dei nod interni nodi pieni per 2

B*-tree B*-tree: variante del B + -tree con regole diverse per la suddivisione e la combinazione di nodi: 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 in caso di undeflow il record viene combinato con i suoi due fratelli I nodi sono sempre pieni per 2/3

Analisi dei B-tree (1) Costo di ricerca, inserimento e cancellazione: Θ(log n) con n = # record nell albero la base del log dipende dal fattore di ramificazione dell albero Basi di dati: 100 rami alberi poco profondi 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

Analisi dei B-tree (2) 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 2) pool di buffer con tecnica LRU per le sostituzioni di record