File con indice (sparso)

Slides:



Advertisements
Presentazioni simili
LA MEMORIA CENTRALE. La memoria nella struttura generale del calcolatore MEMORIA CONTROLLO INGRESSO E USCITA ARITMETICA E LOGICA CPU Dispositivi esterni.
Advertisements

2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
Presentazione web domanda di accreditamento Programmazione
Huffman Canonico: approfondimento. Come abbiamo visto, Huffman canonico ci permette di ottenere una decompressione più veloce e con un uso più efficiente.
1 ELEMENTI DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Indici di Posizione Giulio Vidotto Raffaele Cioffi.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
Programma di lealtà con consegna automatica. Programma di lealtà ADR con consegna automatica Nell'ambito del programma di lealtà ADR con consegna automatica.
Basi di dati - Fondamenti
Progettazione di una base di dati relazionale
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi
Esercizio 1 Prezzo in euro libri
Inserzione e Cancellazione
Atzeni-Ceri-Paraboschi-Torlone, Basi di dati, Capitolo 3
Progettazione di una base di dati relazionale
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Protocollo di locking a due fasi stretto
Progettazione di una base di dati relazionale
File heap.
Integrità referenziale
I PERMESSI IN LINUX.
B-alberi e alberi autoaggiustanti
File hash.
La gestione degli insiemi disgiunti
La frazione come numero razionale assoluto
Normalizzazione di uno schema relazionale.
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
Organizzazione della Memoria
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
SAS® OnDemand for Academics SAS Studio
I MONOMI.
Database
Lock.
Access.
Basi di dati - Fondamenti
DIREZIONE DIDATTICA “C. Maneri – Ingrassia”
© 2007 SEI-Società Editrice Internazionale, Apogeo
Lezione n°6 Prof.ssa Rossella Petreschi
Scrivere programmi corretti
SQL per la modifica di basi di dati
Per inserire questa diapositiva nella presentazione
Codici rilevatori di errori
Dipendenze funzionali
Strapazziamo le immagini…
APPUNTI SUL LINGUAGGIO C
Join, una difficoltà Impiegato Reparto Rossi A Neri B Bianchi Reparto
Italsoft srl Guida allo Sportello Italsoft srl
* 07/16/96 Sez. 2: Ordinamento La consultazione di banche dati è sempre più cruciale in tutte le applicazioni dell’Informatica. Se vogliamo consultare.
APPUNTI SUL LINGUAGGIO C Implementazioni di Liste Concatenate
Variazione percentuale di una grandezza
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Il modello relazionale
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Selezione e Proiezione
Esercizio 1 Prezzo in euro libri
concetti ed applicazioni
Programmazione e Laboratorio di Programmazione
Algoritmi e Strutture Dati
Portale Acquisti Alperia
Per inserire questa diapositiva nella presentazione
Ricerca 01/08/2019 package.
Docente: Sabato Bufano
Algoritmi.
Andrea Martinelli.
Transcript della presentazione:

File con indice (sparso) File ISAM (Indexed Sequential Access Method)

File con indice Il file viene ordinato in base al valore della matr cognome … blocco 1 003 Neroni 005 Verdi 009 Carini 010 Rossi blocco 2 031 Bianchi 048 Bellini 050 099 blocco 3 101 123 124 133 blocco n 220 234 Il file viene ordinato in base al valore della chiave di ricerca In genere viene lasciata una certa percentuale di spazio libero in ogni blocco

Viene creato un nuovo file: il file indice che contiene un record blocco m … blocco 3 blocco 2 blocco 1 220 101 031 - matr matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 099 101 123 124 133 220 234 Viene creato un nuovo file: il file indice che contiene un record per ogni blocco del file principale ogni record del file indice ha due campi che contengono: un puntatore ad un blocco del file principale e il più piccolo valore della chiave presente nel blocco

Ricerca matr blocco 1 - 031 101 … blocco 2 blocco 3 blocco m 220 Esempi: Il record con chiave 090 deve trovarsi nel blocco del file principale che contiene 031 in quanto i valori della chiave nei blocchi precedenti sono <031 e quelli nei blocchi successivi sono ≥101 (031090<101) Il record con chiave 234 deve trovarsi nell’ultimo blocco del file principale in quanto i valori della chiave nei blocchi precedenti sono <220 (220234)

- 090 234 matr blocco 1 031 101 … blocco 2 blocco 3 blocco m 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 099 101 123 124 133 220 234 090 234

Ricerca matr blocco 1 - 031 101 … blocco 2 blocco 3 blocco m 220 Per ricercare un record con valore della chiave k occorre ricercare sul file indice un valore k’ della chiave che ricopre k, cioè tale che: k’k e se il record con chiave k’ non è l’ultimo record del file indice e k’’ è il valore della chiave nel record successivo kk’’

La ricerca di un record con chiave k richiede una ricerca sul file matr blocco 1 - 031 101 … blocco 2 blocco 3 blocco m 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 099 101 123 124 133 220 234 La ricerca di un record con chiave k richiede una ricerca sul file indice + 1 accesso in lettura sul file principale

Ricerca binaria sul file indice Poichè il file indice è ordinato in base al valore della chiave, la ricerca di un valore che ricopre la chiave può essere fatta in modo efficiente mediante la ricerca binaria.

Si fa un accesso in lettura al blocco (m/2)+1 e si confronta k con k1. matr blocco 1 - 031 101 … blocco m/2 blocco (m/2)+1 k1 blocco m 220 Ricerca binaria Si fa un accesso in lettura al blocco (m/2)+1 e si confronta k con k1. Se k  k1 allora si ripete il procedimento sui blocchi da 1 a (m/2) altrimenti si ripete il procedimento sui blocchi da (m/2)+1 ad m. Ci si ferma quando lo spazio di ricerca è ridotto ad un unico blocco, quindi dopo log2 m accessi.

Ricerca per interpolazione sul file indice la ricerca per interpolazione è basata sulla conoscenza della distribuzione dei valori della chiave: deve essere disponibile una funzione f che dati tre valori k1, k2, k3 della chiave fornisce un valore che è la frazione dell’intervallo di valori della chiave compresi tra k2 e k3 in cui deve trovarsi k1.

matr blocco 1 k2 … blocco i-1 blocco i k blocco m k3 k1 deve essere confrontato con il valore k della chiave nel primo record del blocco i , dove if(k1,k2,k3 )*m; analogamente a quanto accade nella ricerca binaria, se k1 è minore di tale valore allora il procedimento deve essere ripetuto sui blocchi 1, 2,…, i-1 , mentre se è maggiore il procedimento deve essere ripetuto sui blocchi i, i+1,…, m, finchè la ricerca si restringe ad un unico blocco.

la ricerca per interpolazione richiede circa 1+log2log2m accessi.

Inserimento - 048 Bellini costo per la ricerca … matr 031 101 … 220 cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 050 Neri 099 Gialli 101 123 124 133 220 234 048 Bellini costo per la ricerca …

Inserimento …+1 (per scrivere il blocco modificato) matr - 031 101 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 Neri 099 101 123 124 133 220 234 …+1 (per scrivere il blocco modificato) se nel blocco c’è spazio per inserire il nuovo record. Altrimenti …

Inserimento - 048 Bellini … se c’è spazio nel blocco successivo … matr - 031 101 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 050 Neri 099 100 Gialli 101 123 124 220 234 048 Bellini … se c’è spazio nel blocco successivo …

Inserimento - … possono essere necessari ulteriori accessi matr 031 100 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 Neri 099 100 Gialli 101 123 124 220 234 … possono essere necessari ulteriori accessi

Inserimento - 040 Toni Se non c’è spazio né nel matr - 031 100 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 Neri 099 100 Gialli 101 123 124 220 234 040 Toni Se non c’è spazio né nel blocco precedente né in quello successivo …

Inserimento - … occorre richiedere un nuovo blocco al file system, matr - 031 050 100 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 040 Toni 048 Bellini 100 Gialli 101 123 124 220 234 Inserimento 050 Neri … 099 … occorre richiedere un nuovo blocco al file system, ripartire i record tra vecchio e nuovo blocco e riscrivere tutti i blocchi modificati.

Cancellazione costo per la ricerca … - 050 Neri matr 031 101 … 220 cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 050 Neri 099 Gialli 101 123 124 133 220 234 050 Neri costo per la ricerca …

Cancellazione …+1 (per scrivere il blocco modificato) - matr 031 101 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 099 Gialli 101 123 124 133 220 234 …+1 (per scrivere il blocco modificato)

Cancellazione Se il record cancellato è il primo di un blocco … - 031 matr - 031 101 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 099 Gialli 101 123 124 133 220 234 031 Bianchi … Se il record cancellato è il primo di un blocco …

Cancellazione … sono necessari ulteriori accessi - matr 099 101 … 220 cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 099 Gialli 101 123 124 133 220 234 … sono necessari ulteriori accessi

Cancellazione Se il record cancellato è l’unico record del blocco … - matr - 099 101 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 099 Gialli 101 123 124 133 220 234 099 Gialli … Se il record cancellato è l’unico record del blocco …

Cancellazione … il blocco viene restituito al sistema e matr - 101 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 101 123 124 133 220 234 … il blocco viene restituito al sistema e viene modificato il file indice

Modifica (non coinvolge la chiave) costo per la ricerca … 048 Bellini matr - 031 100 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Bellini 050 Neri 099 100 Gialli 101 123 124 220 234 048 Bellini Belloni costo per la ricerca …

Modifica (non coinvolge la chiave) …+1 per riscrivere matr - 031 100 … 220 matr cognome … 003 Neroni 005 Verdi 009 Carini 010 Rossi 031 Bianchi 048 Belloni 050 Neri 099 100 Gialli 101 123 124 220 234 …+1 per riscrivere il blocco modificato

cancellazione + inserimento Modifica Se la modifica coinvolge la chiave, allora cancellazione + inserimento