Significato delle componenti

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

FILE E INDICI Architettura DBMS

Strutture di accesso ai dati: B + -tree

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.

Heap e code di priorità

Pag Politecnico di Torino 1

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Introduzione Definizioni

I B+ Alberi. Sommario

Informatica 3. LEZIONE 20: Ordinamento esterno. Modulo 1: Organizzazione della memoria Modulo 2: Ordinamento esterno

Alberi binari di ricerca

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Indici ad albero. Albero Binario di Ricerca

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

Note per la Lezione 4 Ugo Vaccaro

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Il file È un insieme di informazioni: programmi. Il File System. Il file system

Un esempio: l ADT Dizionario (mutabile) Definizione. Alberi binari di ricerca (BST = binary search tree) search(chiave k) -> elem

Architettura hardware

Algoritmi e Principi dell'informatica Seconda Prova in Itinere - 14 Febbraio 2014

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione

Alberi binari e alberi binari di ricerca

Algoritmi e Strutture Dati

Cap. 1-I 1 I sistemi informatici

PROCESSI NON SEQUENZIALI E TIPI DI INTERAZIONE

Esercitazione 6. Alberi binari di ricerca

Alberi Binari di Ricerca

Strutture fisiche di accesso

Esercizi Capitolo 6 - Alberi binari di ricerca

Libri di supporto. A.Albano Costruire Sistemi per Basi di Dati Addison-Wesley

ADT Coda con priorità

Le Memorie. Si distinguono per: Supporti sui quali le informazioni vengono fisicamente memorizzate.

Progettazione Fisica FILE

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

CORSO ACCESS PARTE IV

Basi di Dati Ingegneria Informatica e delle Telecomunicazioni

Minimo albero di copertura

Cognome Nome Matricola Ordin.

Albero di Riscorsione

Ricevimento: dopo la lezione (in aula) o su appuntamento (Sede Scientifica Pal. 1 Primo Piano)

Esercizi di Algoritmi e Strutture Dati

Architettura degli elaboratori Docente:

Informatica 10. appunti dalla lezione del 16/11/2010

Esercitazione. Ricorsione. May 31, Esercizi presi dal libro di Rosen

Introduzione Concetti Generali Pratica su Access Link utili. ECDL - Database. European Computer Driving Licence - Modulo 5 - Database LEZIONE 1

Realizzazione del file system. Fabio Buttussi HCI Lab Dipart. Di Matematica ed Informatica Università degli studi di Udine

Linguaggio C. Problemi di Ricerca e Ordinamento: Algoritmi e Complessità.

TRIE (albero digitale di ricerca)

2.2 Alberi di supporto di costo ottimo

MODELLI DEI DATI. Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

Sistema Operativo (Software di base)

Ordinamenti per confronto: albero di decisione

Le basi di dati. Definizione 1. Lezione 2. Bisogna garantire. Definizione 2 DBMS. Differenza

Basi di Dati Concetti Introduttivi

Progettazione logica

static dynamic random access memory

INFORMATICA PER LE SCIENZE UMANE a.a. 2015/2016

La memoria principale

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, La normalizzazione

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati. HeapSort

Elena Baralis 2007 Politecnico di Torino 1

Memorizzazione dei dati: Dischi e File

Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2010/2011. Basi di dati

alberi binari di ricerca (BST)

Esercizio 10.1 Soluzione

Requisiti della base di dati. Schema concettuale

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

DEFINIZIONI SMART E RELATIVE ESERCITAZIONI

SISTEMI INFORMATIVI E DATABASE

Funzioni, Stack e Visibilità delle Variabili in C

Basi di dati Basi di dati per bioinformatica

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw -Hill, Progettazione logica. Dati di ingresso e uscita

Esercizi Capitolo 7 - Hash

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

File system: aspetti implementativi

La memoria secondaria

Parte 6 Esercitazione sull accesso ai file

GESTIONE DELLA MEMORIA CENTRALE

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

PRIMI PASSI CON UN DATABASE

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2011/2012. Basi di dati

5. Strutture di indici per file

File e Indici. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Linguaggio C: i file

Algoritmi e strutture dati

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Informatica giuridica

Caratteristiche dei linguaggi per Database

Union-find. Insiemi disgiunti. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

La memoria secondaria

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

8 bit per la parola nel blocco 10 bit per l insieme (gruppo) nella cache 12 bit di etichetta. Esercizio 3 Memoria Cache

Bibliografia. INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Definizione di DB e di DBMS

Dizionario. Marina Zanella Algoritmi e strutture dati Tabelle hash 1

Transcript:

Sull organizzazione fisica delle basidi dati (1) Riferimenti: P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone. Basi di dati: concetti, linguaggi e architetture, McGraw-Hill, 1999 (Cap. 9.3 e Cap. 9.5) oppure Basi di dati: architetture e linee di evoluzione, McGraw-Hill, 2003 (Cap. 1) A. Albano. Costruire sistemi per basi di dati, Addison Wesley Longman, Milano, 2001 (su cui sono essenzialmente basati questi lucidi) Simulazioni dei B-tree on-line Architettura Centralizzata di un SGBD Relazionale Significato delle componenti Gestore concorrenza Gestore autorizzazioni Ottimizzatore Gestore catalogo Esecutore piani d accesso Gestore accesso Gestore strutture dimemorizzaz. Gestore buffer buffer Gestore memoria permanente Gestore affidabilità SGBD= Sistema di Gestione di Basi di Dati Gestore memoria permanente Gestore buffer Gestore delle strutture di memorizzazione Gestore d accesso Gestore affidabilità Gestore concorrenza Ottimizzatore Esecutore piani d accesso Gestore autorizzazioni Gestore catalogo BaseDati Gestore di buffer e interazione con il SO gestore buffer buffer pool pagina fisica memoria temporanea tabella pag. residenti: <id_pag, posiz. buffer> - pincount - dirty/nondirty - pag. fisica memoria permanente Gestore della memoria permanente è la componente di un sgbd che si occupa del trasferimento dei dati persistenti dal buffer in memoria temporanea alla memoria permanente e viceversa, e riveste la memoria fisica permanente con una astrazione secondo cui: la memoria permanente è un insieme di basi di dati una base dati è un insieme di file un file è un insieme di blocchi, o pagine fisiche, numerati progressivamente e di lunghezza prefissata in cui viene memorizzata una collezione di record (tabella o indice) un file logico può essere realizzato come un file fisico o parte di un file fisico

scrittura di una pagina da memoria temp. a permanente : per sostituzione, quando si deve fare spazio nel buffer ad una nuova pagina richiesta da qualche applicativo per gestire in modo sicuro le modifiche fatte da una transazione o la sua fine, cioè per via di commit o end_transaction modifica di pagina: fatta direttamente sulle pagine del buffer_pool dalle componenti del sgbd di livello superiore rispetto al buffer mgr la componente che ha eseguito la modifica chiede al buffer mgr di aggiornare la proprietá dirty/nondirty della pagina modificata rilascio di una pagina, per fine applicativo o transazione: provoca il decremento del pincount richiesta di una pagina se la pagina si trova nel buffer pool il buffer_mgr incrementa il pincount di quella pagina e restituisce alla componente che ha richiesto la pagina il riferimento a questa nel pool altrimenti il buffer_mgr sostituisce una pagina residente nel buffer pool: tra le pagine con pincount=0 sceglie # una pagina da eliminare, naturalmente scrivendola prima in mem. permanente se è dirty; segnala errore se non ci sono celle con pincount a 0; scrive nella cella di buffer pool la pagina fisica richiesta, il pincount a 0 e la proprietà dirty a false aggiorna la tabella delle pagine residenti con la coppia <cella_scelta, Id_pagina_fisica> incrementa il pincount di quella pagina e restituisce alla componente che ha richiesto la pagina il riferimento a questa nel pool # : scelta guidata da una strategia di sostituzione (al limite LRU, LeastRecentlyUsed, sperimentalmente la migliore in caso di accessi concorrenti, ma solo in media) Struttura interna delle pagine intestazione o header di pagina contiene: quantità di spazio libero riferimento all inizio dello spazio utilizzab. riferimento prossima pag. libera del file Struttura interna delle pagine riferimento ad un record o RID diretto j Pid, offset_in_pg header k record vettore di indirizzamento (possibile) contiene offset ai record nella pagina indiretto, ad es. tramite vettore di indirizzamento interno alla pagina Pid, j Organizzazioni dei dati Per realizzare un sgbd Per progettare una base dati Per ottimizzare interrogazioni Strutture per organizza re la memorizzazione di collezioni di record in memoria permanente: sequenziale oppure seriale (a heap file) : i dati sono memorizzati in pagine consecutive e ordinati secondo una chiave/ non ordinati per chiave con metodo procedurale: i dati sono memorizzati in pagine consecutive e ordinati secondo una chiave (hash) per chiave con strutture ad albero: i dati sono memorizzati in strutture indice (directory) + dati; è la più usata; per attributi non chiave: per la ricerca di un sottoinsieme di record in base al valore di un attributo non identificatore per dati multidimensionali: quando i dati sono vettori che rappresentano oggetti geometrici, immagini (GIS, CAD )

Tempo di accesso ai dati su disco riferimento al record diretto: va bene per collezioni di dati statici indiretto, tramite vettore di indirizzamento: va bene per collezioni di dati volatili o se la memoria è gestita con spostamento dei record nelle pagine (ad esempio per mantenere ordinamento) Tempo medio trasferimento di un blocco da memoria permanente a temporanea dipende da: ts: seek time o tempo di posizionamento delle testine di lettura sul cilindro richiesto del disco; parametro che incide di piú tr: rotation latency o tempo di latenza è il tempo di attesa per avere un blocco sotto la testina di lettura già posizionata sulla traccia tb: tempo di trasferimento di un blocco Due livelli di memoria, memoria perm. e memoria temp. sono la soluzione piú comune per applicazioni bd; si hanno anche applicazioni ad uno o tre livelli di memoria. un livello: tutta la base dati è gestita in memoria centrale (piccole basi dati). Organizzazione con indici Memorizzazione di collezioni di record in memoria permanente per chiave e con strutture ad albero: dati memorizzati in forma tabellare in insiemi di coppie (chiave, record-id) (indice) Per cui, per accedere ad un valore di chiave si ha: <indici, dati> No alberi bilanciati Non si possono usare alberi binari bilanciati perché: 1. se non si fa attenzione al modo in cui i nodi dell albero sono memorizzati nelle paginedella memoria permanente la ricerca di un elemento dell indice può richiedere un grande numero di accessi alla memoria permanente; 2. il bilanciamento dell albero in memoria permanente è troppo costoso la ricerca di un elemento dell indice può richiedere un grande numero di accessi alla memoria permanente ESEMPIO un indice di 1 milione di elementi senza ipotesi su dove sono memorizzati richiede circa 20 accessi in media: log 2 1.000.000 ~ 20 se invece mettiamo nella stessa pagina piú nodidi un albero riduciamo gli accessi a memoria sec.; 1 milione di elementi con l'ipotesi di avere 100 nodi di albero per pagina fisica: log 100 1.000.000 = 3 punto 1: i nodi di un albero binario devono essere memorizzati opportunamente nelle pagine della memoria permanente albero binario impaginato punto 2: il bilanciamento deve essere risolto localmente dall albero binario impaginato al B-albero autori: Bayer e McCreight, 1972

Organizzazione con B-albero o B-tree Sono le organizzazioni più comuni nei sgbd relazionali moderni Il B-tree è una struttura dai aggiuntiva che viene memorizzata in pagine e gestita con i meccanismi dei sgbd Autori: Bayer e McCreight, 1972 Definizione di B-tree Ogni nodo ha la struttura seguente [p 0 (k 1,r 1 )p 1.p j- 1 (k j,r j )p j ] r i è un indirizzo al record di chiave k i p i è un puntatore ad un figlio Le chiavi k i in ogni nodo sono ordinate Ogni nodo non foglia con j chiavi ha j+1 figli Tutte le chiavi associate ad un figlio tramite il puntatore p i sono comprese strettamente tra k i e k i+1 : fa parte degli alberi di ricerca Definizione di B-tree di ordine m (m>=3) la radice ha 0 <= nodi figli <= m 1 <=nro chiavi <= m-1 ogni nodo interno ha Øm/2ø <= nro_figli <= m Øm/2ø -1 <= nro_chiavi <= m-1 tutte le foglie si trovano allo stesso livello Estratto di un B-tree (ordine 5) 46 66 Ogni nodo di albero si fa coincidere con una pagina del file in cui è memorizzato l albero: 50 55 60 68 71 74 78 nodo = pagina Ricerca in B-tree di k k=k r (1<=r<=j) nel nodo corrente: ok Se no, si segue p i : i=0 se k<k 1 i=q se k q <k<k q+1, 1<=q<=j-1 i=j se k>k j Ricerca per intervallo: si ripete l operazione di ricerca di chiave per chiave nell intervallo (efficiente per come sono fatti i B-alberi) Complessità della ricerca in B-albero Il costo C r della ricerca di una chiave nell albero è compreso tra 1 e h (altezza del B-tree) Se h è l altezza di un B-tree e N è il numero di chiavi inserite, allora log m (N+1) <= h <= log m/2 ((N+1)/2)+1 il calcolo dettagliato è nei lucidi che seguono L altezza dell albero si approssima a log m (N) (se N è grande)

Numero massimo di nodi, bmax, in un B-albero di ordine m, altezza h e nodi riempiti al massimo quindi con m figli: livello 1: 1 livello 2: m livello 3: m * m livello 4: m 2 * m livello i: m i-1. livello h: m h-1 Σ h-1 i=0 mi = (m h 1)/(m-1) = bmax Numero minimo, bmin, di nodi in un B-albero di ordine m altezza h e nodi riempiti al minimo, quindi con Øm/2ø figli : livello 1: 1 livello 2: 2 livello 3: 2 * m/2 livello 4: 2 * m/2 * m/2 livello i: 2 ( m/2 ) i-2. livello h: 2 ( m/2 ) h-2 1+ 2 Σ h-2 i=0 ( m/2)i =1+ 2(((m/2) h-1 1)/(m/2-1))= bmin Per cui, numero di nodi: 1+ 2 (((m/2) h-1 1)/(m/2-1))<= N nodi <=(m h 1)/(m-1) Numero minimo di chiavi per un B-albero: radice+(bmin -1)*(min numchiavi per nodo)=radice + [1+ 2 (((m/2) h-1 1)/(m/2-1)) 1] * (m/2 1) = = 2 (((m/2) h-1 1)/(m/2-1)) * (m/2 1) + radice = = 2 ((m/2) h-1 1) + radice = 2 (m/2) h-1 2 +1 Numero massimo di chiavi per un B-albero: bmax*(max num chiavi per nodo)=[(m h 1)/(m-1)]*(m-1) = m h 1 2 (m/2) h-1 1 <= N chiavi <= m h 1 Complessità della ricerca (in B-albero di altezza h e numero di chiavi inserite N) 2 (m/2) h- 1 1 <= N <= m h 1 2 (m/2) h- 1 <= N + 1 <= m h log m (N+1) <= h 2 (m/2) h-1 <= N + 1 da cui: (m/2) h-1 <= (N + 1)/2 h-1 <= log m/2 ((N+1)/2 ) e h <= 1 + log m/2 ((N+1)/2) log m (N+1) <= h <= 1 + log m/2 ((N+1)/2) Complessità della Ricerca (cont.) Altezza max, H, e min, h, di un B-albero in funzione della dimensione delle pagine: chiavi 10 bytes e rid 4 bytes Il costo C r della ricerca di una chiave nell albero è compreso tra 1 e l altezza h Della formula precedente abbiamo preso i logaritmi: log m (N+1)<=h<=1+log m/2 ((N+1)/2) Se N è grande l altezza h del B-albero si approssima a log m N Dim pag 512 1024 m 28 56 1000 h min 2,1 1,7 1000 H max 3,4 2,9 10k h min 2,7 2,3 10k H max 4,2 3,6 100k h min 3,5 2,9 100k H max 5,1 4,3 1M h min 4,1 3,9 1M H max 6,0 4,9 2048 113 1,5 2,5 2,0 3,1 2,4 3,7 2,9 4,3 4096 227 1,3 2,3 1,7 2,8 2,4 3,3 2,6 3,8

Inserimento in B-tree ricordare: inserimento in foglia Si verifica se chiave è presente, se no si scende a foglia appropriata (alla albero ricerca) Se foglia non è complet a (cio è contiene meno di m-1 chiavi), allora vi si può inserire il record o meglio la coppia (k j,r j ) Se il nodo è completo, si crea un altro nodo (splitting) e si considera il valore mediano tra le chiavi del nodo completo piú la chiave da inserire: il valore mediano si inserisce nel nodo padre; se il padre è completo si esegue la suddivisione (splitting) del padre (processo ricorsivo). Inserimento e nodo saturo se il nodo è saturo, cioè contiene m-1 chiavi, si esegue lo splitting o suddivisione del nodo p : si crea un altro nodo p in cui si memorizzano le chiavi > della chiave di valore mediano oppure di posto mediano k c nella sequenza (considerando chiavi del nodo e chiave da inserire) togliendole dal nodo originario la chiave di valore mediano k c si inserisce ricorsivamente nel nodo padre, o meglio si inserisce p (k c,r kc ) p. e se il padre è completo si esegue la suddivisione (splitting) del padre e così via fino alla radice. Inserimento in B-tree: splitting (inserimento della chiave 70 in B-tree della slide: Estratto di un B-tree (ordine 5) ) 68+ 70+ 71+ 74+ 78 = 361 media= 72,2 50 55 60 46 68 70 66 71 74 78 Cancellazione da B-tree di chiave k P0. la chiave k da cancellare sia nel nodo n; P1. se n è una foglia, si cancella k da n e si va a P3 P2. se n NON è una foglia si sostituisce k prendendo il piú piccolo (grande) fra gli elementi maggiori (minori) di k; tale chiave sostitutiva è in una foglia f, per costruzione dell albero. P3. controllo numero chiavi nella foglia [NB: n, oppure f ] se m/2 1 <= numero chiavi <= m-1 allora fine cancellaz. altrimenti bisogna P4)concatenare o P5) bilanciare Cancellazione in B-tree (cancellazione della chiave 66: al suo posto ) questa 50 55 60 46 68 71 74 78 66 o questa Concatenazione di nodi (P4) processo opposto allo splitting perché unisce due nodi in un solo nodo num. chiavi in n (al piú) = (m+1)/2 2 Cerco un nodo q adiacente ad n nell albero tale che num. chiavi in q (al piú) = (m+1)/2 1 (m+1)/2 2 +(m+1)/2 1 + 1 = m+1-3 + 1 = m 1 (ricordiamo che questo è il max num di chiavi possibile) +1: chiave dal nodo padre

Concatenazione (cont.) nodo padre: [ (k j-1, r j-1 ) p j-1 (k j,r j ) p j (k j+1, r j+1 ) p j+1 ] nodo-1 da conc: [p 0 (k 1, r 1 ) p 1 p e-1 (k e, r e ) p e ] nodo-2 da conc: [p 0 (k e+1, r e+1 ) ] p j-1 e p j sono puntatori ai nodi 1 e 2 i nodi 1 e 2 sono concatenati in [p 0 (k 1, r 1 ) p 1 p e-1 (k e, r e ) p e (k j,r j ) p 0 (k e+1, r e+1 ) ] e nel nodo padre: [ (k j-1, r j-1 ) p j-1 (k j+1, r j+1 ) p j+1 ] Cancellazione in B-tree: concatenazione B-tree di ordine 5 per cui: 2 <=num. chiavi<=4 cancellazione della chiave 68 prima dopo 50 55 60 63 46 66 70 74 78 66 68 70 74 78 Bilanciamento (P5) Se non si puo fare la concatenzione(se si supera m-1). Dati due nodi adiacenti in un B-albero, bilanciamento vuol dire ridistribuire le chiavi tra i due nodi in modo da bilanciare i nodi medesimi. Q (padre): [, k f, ] Q 1 : [p 0 (k 1, r 1 )p 1,, p e-1 (k e,r e )p e ] Q 2 : [p 0 (k 1, r 1 )p 1,, p j-1 (k j,r j )p j ] con j<parte-int(m/2)-1. Si lasciano parte-int((e+j)/2) chiavi nel nodo sx, si sost. nel padre k f con k parte-int((e+j)/2) +1 e si inseriscono k f e le rimanenti chiavi nel nodo dx Cancellazione in B-tree: bilanciamento (cancellare la chiave 70) prima dopo 50 55 60 50 55 68 70 71 60 71 68 72 73 74 78 Dalla sequenza: 50, 55, 60,, 68, 70 ho la sequenza: 50, 55, 60,, 68 distribuita: nodo padre: 60 nodo-figlio-1: 50, 55 nodo-figlio-2:, 68 Struttura di un B-albero Dipende dall ordine con cui si caricano le chiavi. Si parla di densità di riempimento di un indice Esercizio: costruire il B-albero di ordine m= 5, numero massimo figli, relativo alle due sequenze di chiavi 1) 10, 15, 30, 27, 35, 40, 45, 37, 20, 50, 55, 46, 71, 66, 74, 85, 90,, 78, 95, 25, 81, 68, 60, 2) 10, 15, 20, 25, 27, 30, 35, 37, 40, 45, 46, 50, 55, 60,, 66, 68, 71, 74, 78,, 81, 85, 90, 95 Per chiavi ordinate, sequenza 2 sopra, si ottiene un B-albero con foglie di (m+1)/2 chiavi tranne al più l ultima: in caso di caricamento di una sequenza ordinata si preferisce una strategia di trattamento del nodo saturo attraverso bilanciamento (invece di suddivisione) con il fratello a sinistra del nodo saturo fino a quando anche questo non sia saturo. Prestazioni dei B-tree N numero chiavi log m (N+1)<=h<=1+log m/2 ((N+1)/2) Occupazione di memoria: dipende dall ordine e da quanto sono riempiti i nodi Costo ricerca per chiave : tra 1 e h Costo ricerca per intervallo (v 1 <=k<=v 2 ): ricerca della prima + ricerca della seconda+ +ricerca dell ultima in media (considerando distr. uniforme dei valori) proporzionale a: [(v_2-v_1)/(k_max-k_min)]*n Caso piu favorevole: se sono tutte nella pagina gia` in mem. Caso peggiore: chiave successiva a una in radice (h-1 accessi nell indice, è in foglia)

Prestazioni dei B-tree (cont.) Inserimento: se non c è split: h letture e 1 scrittura se c è split del nodo: nel caso peggiore quando si risale fino alla radice (h letture e 1+2h scritture). Costo medio pero` inferiore poco probabile che si arrivi fino alla radice Prestazioni dei B-tree (cont.) Cancellazione: Se chiave e` in foglia + no bil/conc: h letture e 1 scrittura Se chiave e` in nodo interno + no bil/conc: h letture e 2 scritture Caso peggiore: per tutti i nodi del cammino si ha conc/bil: letture proporzionali a 2h e scritture a h Indici e sgbd La definizione di una chiave primaria al momento di una create table di solito genera automaticamente un indice B+-albero che serve a controllare l unicità dei valori della chiave; La dichiarazione di una chiave esterna non crea automaticamente un indice, ma un tale indice puo` essere utile per verificare il vincolo referenziale corrispondente Scelta dell organizzazione L organizzazione dipende dal sgbd Una volta nota l organizzazione è necessario analizzare i suoi elementi per poter ottenere una base dati realmente efficiente L efficienza deve generalmente essere valutata sulla base delle applicazioni utente che accedono alla base dati