Organizzazione dei file e indici Strutture fisiche di accesso Organizzazione dei file e indici 1. Introduzione agli indici 2. Diverse strutture dati per gli indici Antonella Poggi Dipartimento di Informatica e Sistemistica “Antonio Ruberti” Università di Roma “La Sapienza” 3. Confronto tra diverse organizzazioni di file Anno Accademico 2003/2004 http://www.dis.uniroma1.it/∼lenzerini/didattica/sistemigestionebasidati/ Antonella Poggi Organizzazione dei file e indici Sistemi di gestione di basi di dati Strutture fisiche di accesso - 3 Richiamo: Organizzazione di file ¾ La più semplice organizzazione di file è quella di un file disordinato (file heap). 1. Introduzione agli indici 2. Diverse strutture dati per gli indici 3. Confronto tra diverse organizzazioni di file I data record sono memorizzati in ordine casuale attraverso le pagine del file. → Efficienza dell’inserimento di un nuovo data record → Pb: Costo della ricerca di un data record in particolare ¾ E’ anche possibile memorizzare il file in modo tale che sia ordinato (file ordinato). → Efficienza della ricerca di un data record, o di un intervallo di data record → Pb: Costo dell’inserimento di un nuovo data record Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 2 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 4 1 1.1. Indice 1.2. Data Entry ¾ Un indice è una struttura dati ausiliaria che organizza i record nel disco in modo tale da ottimizzare le operazioni di estrazione dei dati base al valore di un campo chiave di ricerca dell’indice. ¾ Un indice contiene una collezione di data entry, dove un data entry k* contiene l’informazione sufficiente ad estrarre i record che hanno k come valore del campo chiave di ricerca. Un qualsiasi sottoinsieme dei campi di una relazione può essere il campo di ricerca chiave dell’indice nella relazione. Una chiave di ricerca NON è da confondere con la chiave della relazione (insieme minimale di campi che identifica univocamente un record in una relazione). Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 5 Antonella Poggi 1.1. Indice (continua) ¾ Un indice è anche detto struttura di accesso in quanto permette di localizzare, in modo più efficiente, i data record di interesse. Si può organizzare il file dei data record sugli impiegati in base all’età. Il file costituisce un indice il cui campo chiave di ricerca è l’età degli impiegati. Si può poi creare un indice basato sullo stipendio che permette di localizzare i data record che soddisfano una certa query sullo stipendio. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 6 Sistemi di gestione di basi di dati Strutture fisiche di accesso - 7 1.2. Data Entry (continua) ¾ 3 principali modi di memorizzare un data entry: 1) k* è un data record (con chiave di ricerca pari a k) →indice è un caso particolare di organizzazione di file 2) k* è una coppia (k,rid), dove rid è l’identificatore di un data record con chiave di ricerca pari a k →indice indipendente dall’organizzazione del file 3) k* è una coppia (k, rid-lista), dove rid-lista è una lista di identificatori di data record con chiave di ricerca pari a k →indice indipendente dall’organizzazione del file; migliore utilizzazione dello spazio ma data entry di lunghezza variabile Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 8 2 1.3. Indici clusterizzati ¾ Dicesi che un indice è clusterizzato quando l’ordine dei suoi data entry è identico (o simile) all’ordine dei data record nel file che permette di accedere. CLUSTERIZZATO NON CLUSTERIZZATO Data entry 1.3. Indici clusterizzati (continua) ¾ Ci può essere un unico indice clusterizzato per data file! N.B. Nella pratica, i file non sono che raramente mantenuti in ordine (troppo costoso: a fronte di inserimenti o cancellazione è necessario mantenere l’ordine!). Pertanto, tipicamente, un indice clusterizzato è un indice che usa l’alternativa 1), mentre gli altri tipi di indici non sono clusterizzati. Data entry File indice File di data record Data record Antonella Poggi Sistemi di gestione di basi di dati Data record Strutture fisiche di accesso - 9 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 11 1.3. Indici clusterizzati (continua) 1.4. Indici primari e secondari ¾ Un indice i cui data entry sono memorizzati come nell’alternativa 1) è clusterizzato per definizione. ¾ Per le altre alternative, un indice è clusterizzato solo se i data record sono ordinati in base al campo chiave di ricerca. ¾ Forte variazione del costo di estrazione di un intervallo di valori, a seconda che il file sia clusterizzato o meno. ¾ Dicesi indice primario un indice su di un insieme di campi che include la chiave primaria di una relazione. Altrimenti un indice è detto indice secondario. ¾ Diconsi duplicati due data entry che hanno lo stesso valore per il campo chiave di ricerca. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 10 → Un indice primario non può contenere duplicati → Un indice secondario può contenere duplicati → Se non esistono duplicati in un indice secondario, allora il campo chiave di ricerca contiene una chiave candidata: si dice che l’indice è unique. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 12 3 1.5. Indici sparsi e indici densi ¾ Si dice che un indice è denso se ogni valore del campo chiave di ricerca presente sul data file ha almeno un corrispondente data entry. Altrimenti si dice che l’indice è sparso. 1.5. Indici sparsi e indici densi (continua) ¾ Un indice i cui data entry sono memorizzati come nell’alternativa 1) è denso per definizione. ¾ Un indice sparso è più piccolo di un indice denso! ¾ Un indice sparso è per forza clusterizzato! → al massimo un indice sparso per data file! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 13 Antonella Poggi 1.5. Indici sparsi e indici densi (esempio) Azzurri, 20,3000 Bianchi, 50,5004 Gialli, 28,3500 Azzurri, 20,3000 Lilla, 30,4000 Viola, 26,5000 Indice sparso sul nome Lilla, 30,4000 Neri, 40,6003 Rosa, 35,4500 Rossi, 44,3000 Verdi, 22,6003 40 20 28 50 35 44 22 30 Viola, 26,5000 Data File Antonella Poggi Sistemi di gestione di basi di dati Indice denso sull’età Strutture fisiche di accesso - 14 Sistemi di gestione di basi di dati Strutture fisiche di accesso - 15 1.6. Indici semplici e composti ¾ Dipende da quanti campi formano la chiave di ricerca: chiave di ricerca semplice se un solo campo, altrimenti composta. ¾ Se chiave composta, allora una query in base a criterio di uguaglianza (equality query) è una query in cui il valore di ogni campo della chiave è fissato, mentre una query in base ad un intervallo di valori (range query) è una query che fissa solo alcuni campi e lascia libero il valore per i campi non specificati. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 16 4 1.6. Inidici semplici e composti (esempio) 20,4000 22,6003 30,3000 40,6003 Azzurri, 20,4000 <età, stip> Bianchi, 30,3000 3000,30 4000,20 6003,22 6003,40 Verdi, 22, 6003 20 22 30 40 3000 4000 6003 6003 <stip, età> <stip> Data entry in indice ordinato in base <stip,età> Data entry in indice ordinato in base <stip> Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 17 1.6. Indici semplici e composti (osservazioni) ¾ Un indice composto supporta un maggior numero di query ed, inoltre, dato che l’indice contiene più campi, attraverso l’accesso al solo indice si riesce ad estrarre più informazione (cf. index-only evaluation). ¾ Un indice composto necessita più di frequente di essere aggiornato (a seguito di ogni operazione che modifica uno qualsiasi dei suoi campi). Antonella Poggi Sistemi di gestione di basi di dati 1. Introduzione agli indici 2. Diverse strutture dati per gli indici <età> Neri, 40, 6003 Data records ordinati in base al nome Organizzazione dei file e indici Strutture fisiche di accesso - 18 3. Confronto tra diverse organizzazioni di file Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 19 2.1. Indice che utilizza una funzione di hash ¾ Data entry organizzati in gruppi, chiamati bucket. ¾ Un bucket consiste in: una pagina, chiamata pagina primaria eventualmente, ulteriori pagine (dette di pagine di overflow) collegate alla pagina primaria. ¾ Il bucket a cui un data entry appartiene può essere determinato applicando una funzione detta di hash alla chiave di ricerca. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 20 5 2.1. Indice che utilizza una funzione di hash (continua) 2.1.1. Esempio (continua) ¾ Numero fissato N di pagine primarie (N=numero di bucket) allocate sequenzialmente mai de-allocated pagine in overflow se necessario. età ¾ h(k) mod N = bucket a cui appartiene il data entry con chiave k h(k) mod N chiave k h(età)=00 h1 Rossi, 44,3000 3000 Neri, 40,6003 5004 .... …. Bianchi, 50,5004 6003 h(età)=10 0 2 Verdi, 22,6003 Data file sugli impiegati h h(stip)=00 h2 stipendio h(stip)=11 6003 File di data entry (stip,rid) N.B. Uno o più campi qualsiasi possono rappresentare la chiave di N-1 Pagine primarie Antonella Poggi Pagine in overflow Sistemi di gestione di basi di dati Strutture fisiche di accesso - 21 ricerca di un indice: non è necessario che identifichi in maniera univoca un data record! Nell’indice sullo stipendio due data entry hanno la stessa chiave 6003. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 23 2.1.1. Esempio 2.1.2. Osservazioni File di data record sugli impiegati organizzato secondo la funzione di hash h1 (alternativa 1), dove h1 restituisce le 2 cifre meno significative dell’età tradotta in binario. Ulteriore indice (alternativa 2) in cui i data entry sono coppie (stipendio,rid) ¾ La presenza delle pagine di overflow rallenta il tempo di ricerca in quanto è necessario richiedere un’operazione di ingresso-uscita per ogni pagina a partire da quella primaria. rid rappresenta il puntatore al data record con chiave pari a stip utilizza h2 (simile ad h1) per localizzare i data entry Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 22 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 24 6 2.1.2. Osservazioni (continua) ¾ L’hashing è la tecnica più efficiente per accedere a dati in base a predicati di uguaglianza con valori definiti nell’uguaglianza. ¾ Inefficiente per interrogazioni che richiedono l’accesso ad intervalli di valori. 2.2. Indice che utilizza una struttura ad albero (continua) ¾ La struttura tipica di ciascun nodo intermedio di un albero (inclusa la radice) è la seguente: P0 K1 P1 K2 Km Pm Sequenza di m+1 puntatori separati da diversi valori ordinati della chiave di ricerca. Il puntatore Pi-1 alla sinistra della chiave Ki (1 ≤ i ≤ m) punta al sottoalbero che contiene solo data entry relativi a valori di chiave strettamente inferiori a Ki. Il puntatore Pi alla sinistra della chiave Ki punta al sottoalbero che contiene solo data entry con chiavi superiori a Ki. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 25 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 27 2.2. Indice che utilizza una struttura ad albero 2.2. Indice che utilizza una struttura ad albero (continua) ¾ I data entry sono organizzati in diverse pagine in base al valore del campo chiave di ricerca. ¾ Le ricerche sono dirette verso la pagina corretta dei data entry, mediante l’utilizzo di una struttura dati gerarchica di ricerca. ¾ Il numero medio di figli per un nodo intermedio è detto fan-out dell’albero. ¾ Con buona approssimazione, dato un albero con altezza h e fan-out F, si ha che il numero di foglie è pari a Fh. Ogni nodo coincide con una pagina. Le pagine con i data entry costituiscono le foglie dell’albero. Tutte le ricerche cominciano dalla radice e finiscono su una foglia: importante usare alberi con altezza minima! I legami fra nodi vengono stabiliti da puntatori che collegano fra loro le pagine. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 26 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 28 7 2.2.1. Struttura ad albero di tipo B+-tree 2.2.2. Ricerca con indice ad albero di tipo B+-tree: osservazioni ¾ Alberi bilanciati (in altezza), in cui la lunghezza del cammino dalla radice ad una foglia è la stessa per tutte le foglie. ¾ Ogni nodo contiene un numero paragonabile di tuple m, con d <= m <= 2d tuple, dove d è chiamato ordine dell’albero. ¾ Foglie collegate da lista in base all’ordine sulla chiave ¾ Il numero di operazioni di ingresso-uscita che occorrono durante una ricerca è al più pari alla lunghezza del cammino dalla radice alle foglie: logFN, con N numero totale di foglie ¾ Si fa in modo che ogni nodo abbia un numero di discendenti grande (che dipende dalla dimensione della pagina): → Utile per le interrogazioni in cui il predicato definisce un intervallo di valori ammissibili: • si accede al primo valore dell’intervallo (con una normale ricerca) • si scandiscono uno dopo l’altro i nodi foglia dell’albero fino a trovare valori di chiave maggiori dell’estremo superiore dell’intervallo. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 29 → tipicamente il fan-out è almeno pari a 100 → alberi con numero limitato di livelli → maggioranza delle pagine occupata da nodi foglia Antonella Poggi 2.2.2. Ricerca con indice ad albero di tipo B+-tree: esempio Si cercano i data entry con 24 < età ≤ 44 → Ricerca diretta verso foglia con primo data entry di interesse. → Tutte le foglie sono collegate da una lista: si recuperano così quei data entry in F2 e F3 che soddisfano il criterio di ricerca. Inizio ricerca 12 età < 12 3 78 12 ≤ età < 78 19 9 età > 78 56 86 Sistemi di gestione di basi di dati Strutture fisiche di accesso - 31 2.2.3. Osservazioni ¾ Gli alberi di tipo B+-tree costituiscono la tecnica ideale per accedere a dati compresi in un intervallo di valori. ¾ Sono anche buoni per accedere a dati in base a predicati di uguaglianza con valori definiti nell’uguaglianza. 94 19 ≤ età < 56 … … F1 FOGLIE Verdi, 22,6003 Viola, 26,5000 Antonella Poggi … … 33 44 … … … … F2 F3 Neri, 40, 6003 Rossi, 44,3000 Bianchi, 50,5004 Sistemi di gestione di basi di dati Strutture fisiche di accesso - 30 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 32 8 Organizzazione dei file e indici 1. Introduzione agli indici 2. Diverse strutture dati per gli indici 3.2. Modello di costo (in termini di tempo di esecuzione) ¾ B: numero di pagine non vuote del data file. ¾ R: numero di data record per pagina. ¾ D: tempo medio di scrittura/lettura di una pagina su disco. Tipicamente (oggi): 15 ms 3. Confronto tra diverse organizzazioni di file ¾ C: tempo medio di elaborazione di un data record (es. confronto di un campo con costante di selezione). Tipicamente (oggi): 100 ns →operazioni di I/O dominanti! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 33 Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 35 3.1. Setting di confronto 3.2. Modello di costo (continua) ¾ Confronto sul costo di semplici operazioni su diverse organizzazioni di file per una collezione di data record sugli impiegati di una società. ¾ In caso di file con struttura di accesso, il costo delle operazioni di selezione viene calcolato assumendo che l’indice sia composto e che le operazioni vertano su almeno il primo campo della chiave di ricerca composta (altrimenti costo uguale al caso di file non ordinato) ¾ Modello che si concentra sui costi delle operazioni di ingresso-uscita (I/O). Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 34 C semplicisticamente considerata costante. ¾ I sistemi reali devono considerare anche: Tempi di CPU Costi delle trasmissioni via rete nelle basi di dati distribuite ¾ Costo delle operazioni di I/O basato sul numero di pagine lette/scritte su disco Semplicistico: tipicamente è possibile accedere ad un blocco di pagine contigue mediante una singola operazione di I/O. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 36 9 4.1. Setting di confronto: semplici operazioni sui dati 1. Scansione di tutti i data record di un file. Costo del caricamento delle pagine del file nel buffer Costo CPU per localizzare ogni data record nella pagina 2. Selezione in base a predicati di uguaglianza. Caricamento delle pagine con data record di interesse Localizzazione dei data record di interesse nelle pagine caricate 3. Selezione in base a predicati che vertono su di un intervallo di valori. idem Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 37 3.3.A. Heap file 1. Scansione: B(D+RC) Per ogni pagina (B) non vuota del file: caricamento Per ogni data record (R): elaborazione (C) 2. Selezione in base a criterio di uguaglianza: B(D+RC) → il data record può essere assente o può essercene più di uno 3. Selezione in base ad un intervallo di valori: B(D+RC) Antonella Poggi 4.1. Setting di confronto: semplici operazioni sui dati (continua) Costo dell’identificazione della pagina nel file Caricamento della pagina Modifica della pagina Scrittura su disco della pagina modificata Eventualmente, caricamento, modifica e scrittura di altre pagine idem Sistemi di gestione di basi di dati 3.3.A. Heap file (continua) caricamento dell’ultima pagina inserimento nell’ultima pagina scrittura 5. Cancellazione 5. Cancellazione di un data record. Antonella Poggi Strutture fisiche di accesso - 39 4. Inserimento: D+C+D 4. Inserimento di un data record. Sistemi di gestione di basi di dati Strutture fisiche di accesso - 38 Se dato record identificato dall’rid: D+C+D (pagina identificata direttamente da rid) Se data record specificato in base a criterio di uguaglianza o intervallo di selezione: B(D+RC)+XC+YD • X numero di data record da cancellare • Y numero di pagine con almeno un data record da cancellare N.B. Abbiamo considerato trascurabile il tempo necessario a compattare file in seguito a nuovo spazio libero. Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 40 10 3.3.B. File ordinato 1. Scansione: B(D+RC) 2. Selezione basata su criterio di uguaglianza: D log2B+C log2R (caso peggiore) Ricerca binaria della pagina con (primo) data record di interesse (se pagine memorizzate sequenzialemente) • log2B passi per localizzare la pagina • ad ogni passo, operazione di I/O + 2 confronti (che rispetto all’operazione di I/O si possono trascurare) Ricerca binaria del (primo) data record di interesse: C log2R 3. Selezione in base ad un intervallo di valori: Ragionamento analogo Eventuale costo di caricamento di ulteriori pagine (se data record che soddisfano criterio riempiono più pagine) Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 41 3.3.B. File ordinato (continua) 4. Inserimento: D log2B+C log2R + C+ 2B (D+RC) Caso peggiore: in prima posizione, nella prima pagina Costo di ricerca della corretta posizione nel file (cf. selezione in base a criterio di uguaglianza): D log2B+C log2R Inserimento del data record: C Caricamento e scrittura di tutte le altre pagine: 2B(D+RC) 5. Cancellazione: Sistemi di gestione di basi di dati Premesse: studi empirici hanno dimostrato che in un data file clusterizzato, le pagine sono riempite per il 67% → numero di pagine diventa B’=1.5B F è il numero di fan-out della struttura ad albero 1. Scansione: 1.5B(D+RC) 2. Selezione basata su criterio di uguaglianza: DlogF(1.5B)+Clog2R localizzazione della (prima) pagina con data record di interesse localizzazione del (primo) data record con ricerca binaria N.B. Nella pratica, la radice è sempre nel buffer in quanto è acceduta di frequente → si risparmia un’operazione di I/O! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 43 3.3.C. File clusterizzato con struttura di accesso ad albero B+-tree (continua) 3. Selezione in base ad un intervallo di valori: come per selezione in base a criterio di uguaglianza eventualmente ulteriori operazioni di I/O se data record di interesse comprese in altre foglie (collegate) 4. Inserimento: DlogF(1.5B)+Clog2R+C+D costo di ricerca + inserimento + scrittura ignoriamo costi aggiuntivi che si presentano quando l’inserimento deve avvenire in una pagina piena (casi rari!) 5. Cancellazione Ragionamento analogo Se condizione di cancellazione basata su criterio di uguaglianza o appartenenza ad un intervallo di valori, costo dipende dal numero di data record da cancellare. Antonella Poggi 3.3.C. File clusterizzato con struttura di accesso ad albero B+-tree Strutture fisiche di accesso - 42 come per l’inserimento (se un solo data record da cancellare) eventualmente ulteriori operazioni di cancellazione e di I/O se più data record da cancellare comprese in altre foglie Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 44 11 3.3.D. Heap file con indice ad albero non clusterizzato Premesse: Un data entry di una foglia dell’indice ha una dimensione pari a un decimo di un data record sugli impiegati → numero di foglie dell’indice: 0.1(1.5B)=0.15B → numero di data entry in una pagina di indice: 10(0.67R)=6.7R F è il numero di fan-out della struttura ad albero 1. Scansione: 0.15B(D+6.7RC) + BR(D+C) scansione di tutte i data entry dell’indice: 0.15B(D+6.7RC) → costo trascurabile! ogni data entry in una foglia dell’indice può puntare ad una pagina differente: BR(D+C) → costo proibitivo! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 45 3.3.D. Heap file con indice ad albero non clusterizzato (continua) 2. Selezione in base a criterio di uguaglianza: DlogF(0.15B)+Clog2(6.7R)+XD localizzazione della (prima) pagina dell’indice con data entry di interesse: DlogF(0.15B) ricerca binaria del (primo) data entry: Clog2(6.7R) X: numero di data record che soddisfano il criterio → un’operazione di I/O per ognuna 3. Selezione basata su di un intervallo di valori: ragionamento analogo N.B. → Costo dipende dal numero di data record da selezionare (può diventare proibitivo!) → Sia per la scansione che per la selezione, a volte può convenire non utilizzare l’indice, ordinare il file ed effettuare le operazioni direttamente sul file! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 46 3.3.D. Heap file con indice ad albero non clusterizzato (continua) 4. Inserimento: 2D+C+ DlogF(0.15B)+Clog2(6.7R)+D inserimento nel file di data record (non ordinato): 2D+C ricerca della posizione corretta nell’indice per inserire il data entry: DlogF(0.15B)+Clog2(6.7R) scrittura della corrispondente pagina dell’indice: D 5. Cancellazione (caso di un solo data record ): DlogF(0.15B)+Clog2(6.7R)+D+2(C+D) ricerca del data entry: DlogF(0.15B)+Clog2(6.7R) caricamento della pagina con data record da cancellare: D modifica+scrittura delle pagine modificate dell’indice e del file: 2(C+D) Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 47 3.3.E. Heap file non clusterizzato con indice basato su funzione di hash Premesse: Data entry di dimensione pari ad un decimo di un data record Trascuriamo le pagine in overflow Pagine primarie piene all’80% (per lasciare spazio a futuri inserimenti) → numero di pagine dell’indice: 1.25(0.10B)=0.125B → numero di data entry in una pagina: 10(0.80R)=8R H tempo di calcolo della funzione di hash 1. Scansione: BR(D+C)+0.125B(D+8RC) → costo proibitivo! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 48 12 3.3.E. Heap file non clusterizzato con indice basato su funzione di hash (continua) 2. Selezione in base a criterio di uguaglianza: H+D+8RC+XD → calcolo della pagina dell’indice con corretto data entry: H caricamento della pagina con data entry: D scansione dei data entry nella pagina: 8RC (caso peggiore) caricamento delle pagine con data record di interesse: XD costo dipende dal numero di data record da selezionare 3. Selezione in base ad intervallo di valori: B(D+RC) indice non utile →scansione dell’intero file! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 49 3.4. Tabella riassuntiva sul confronto Tipo di file Scansione Ricerca con criterio di uguaglianza Ricerca con intervallo di valori Inserimento Cancellazione Heap file BD BD BD 2D Ricerca + D File ordinato BD Dlog2B Dlog2B + # pagine interessate Ricerca + 2BD Ricerca + 2BD Indice clusterizzato 1.5BD DlogF(1.5B) DlogF(1.5B) + # pagine interessate Ricerca + D Ricerca + D Indice ad albero non clusterizzato BD(R+ 0.15) D(logF(0.15B) + # data rec. di interesse) D(logF(0.15B) + # data rec. di interesse) D(3+ logF(0.15B)) Ricerca + 2D Indice con hashing non clusterizzato BD(R+ 0.125) D(1+ # data rec. di interesse) BD 4D Ricerca + 2D Antonella Poggi Sistemi di gestione di basi di dati 3.3.E. Heap file non clusterizzato con indice basato su funzione di hash (continua) ¾ Inserimento: H+2D+C+2D+C ¾ Cancellazione (caso di un solo data record): H+D+8RC+D+2(C+D) calcolo della corretta pagina dell’indice: H caricamento della pagina con data entry: D localizzazione del data entry: 8RC (caso peggiore) caricamento della pagina con data record da cancellare: D modifica+scrittura delle pagine modificate dell’indice e del file: 2(C+D) Antonella Poggi Sistemi di gestione di basi di dati 3.5. Conclusioni ¾ Heap file: calcolo della corretta pagina dell’indice: H inserimento del data record nel file non ordinato: 2D+C lettura/modifica/scrittura della pagina dell’indice con il data entry di interesse: 2D+C Strutture fisiche di accesso - 51 Strutture fisiche di accesso - 50 efficiente in termini di occupazione di spazio scansione e inserimento veloci ricerche e cancellazione lente ¾ File ordinato: efficiente in termini di occupazione di spazio inserimento e cancellazione lente ricerche più veloci rispetto al caso dei file disordinati Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 52 13 3.5. Conclusioni (continua) ¾ Indice clusterizzato: piccolo overhead in termini di spazio di occupazione inserimento e cancellazione efficienti ricerche più veloci rispetto al caso dei file ordinati, tranne quando vertono su di un grande numero di data record contigui (grazie ad accesso a blocchi di memoria) ¾ Indici non clusterizzati: ricerca con criterio di uguaglianza, inserimento e cancellazione veloci scansione e ricerca con largo intervallo di valori lente hashing un pò più veloce con criterio di uguaglianza, ma non supporta criterio di intervallo di valori! → Nessuna organizzazione di file è uniformemente superiore in tutte le situazioni! Antonella Poggi Sistemi di gestione di basi di dati Strutture fisiche di accesso - 53 14