INDICI, IMPLEMENTAZIONE DI OPERATORI ALGEBRICI E QUERY PROCESSING

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "INDICI, IMPLEMENTAZIONE DI OPERATORI ALGEBRICI E QUERY PROCESSING"

Transcript

1 INDICI, IMPLEMENTAZIONE DI OPERATORI ALGEBRICI E QUERY PROCESSING 1 PREMESSA OCCUPAZIONE DI MEMORIA DI UNA RELAZIONE ORGANIZZAZIONI SERIALE E SEQUENZIALE Organizzazione seriale (heap) Organizzazione sequenziale INDICI Indice calcolato - Funzione Hash (statico) Indice Tabellato B+-tree IMPLEMENTAZIONE OPERATORI RELAZIONALI CON GLI INDICI Selezione con B+Tree Primario Selezione con B+Tree Secondario Selezioni composte Join Nested loop Index Join Sort-merge Hash Join (Classic) PIANI DI ESECUZIONE

2 1 Premessa Retrieval time from external memory (e.g. disk) is thousands of times greater than high-speed memory. The goal of physical database optimization is to minimize the number of disk accesses, since disk access takes longer than computations. When a record on external memory is to be accessed, an entire page (or block) of data is transferred at once in main memory. By fetching a disk page that contains many records, we take advantage of the locality of reference -- if a record is being retrieved and we have organized the records based on how they are accessed, then it is likely that the records that are in the fetched block will be retrieved next. 2 Occupazione di memoria di una relazione Data una relazione R formata da Ntuple tuple di lunghezza Ltuple e memorizzata su pagine di lunghezza Lpag, l occupazione di memoria di R è Num tuple per pagina: #TuPag = Lpag/ Ltuple Occupazione memoria: Npag = Ntuple / #TuPag Esempio: Si consideri una relazione R con Ntuple= , ognuna di lunghezza Ltuple=100 byte, memorizzate su pagine di lunghezza Lpag=1024 byte. Le tuple sono indivisibili. Pertanto, il numero di tuple per pagina è 10, ed il numero di pagine necessario per memorizzare R è pari a Npag= /10 = Nella seguente tabella sono riportati i simboli utilizzati in questo documento. Simbolo Npag Lpag Ltuple Ntuple #TuPag significato numero di pagine lunghezza di una pagina lunghezza di una tuple Numero di tuple Numero di tuple per pagina 3 Organizzazioni seriale e sequenziale 3.1 Organizzazione seriale (heap) Un heap è un file non ordinato Costi: Costo medio ricerca per chiave σ A=a (R): C= Npag/2, oppure C= Npag, se la chiave non è presente Costo ricerca per intervallo: σ k1 k k2 (R) = Npag 2

3 3.2 Organizzazione sequenziale In tal caso il file è ordinato. Assumiamo che K sia l attributo di ordinamento. Costi: Costo medio ricerca sequenziale per chiave σ K=k (R): C = Npag/2 (sempre) Costo massimo ricerca binaria per chiave σ K=k (R): C = log(npag) (caso peggiore) 1 Costo ricerca per intervallo σ k1 K k2 (R): C = log(npag) + sel(k1 K k2 )* Npag - 1 dove sel(k1 K k2 ) è la frazione di tuple che soddisfano la condizione di selezione; in particolare, se K è numerico e si assume una distribuzione uniforme, allora sel(k1 K k2 )= (k1-k2)/(kmax-kmin) Esempio: Una ricerca binaria sulla relazione di cui all esempio precedente costa log2(30.000) = 15 accessi a pagine (nel caso peggiore). Siano Kmax=10.000, Kmin=1000, K1=300, K2=500. Il costo della ricerca per intervallo è 15+0,02*30.000= 615 pagine 4 INDICI Un indice è una struttura dati (ausiliaria) che velocizza le ricerche per chiave (di ricerca). Esso può essere calcolato (funzioni hash) o tabellato. In quest ultimo caso, esso è un insieme di coppie (k,p), dove k è un valore della chiave e p è il puntatore alla pagina che contiene il record (o i record) con chiave k. Un indice può essere: primario: l attributo di indicizzazione è chiave (o superchiave) secondario: l attributo di indicizzazione non contiene una chiave (quindi, in generale, ammette duplicati) 4.1 Indice calcolato - Funzione Hash (statico) È una tecnica di ricerca e/o memorizzazione. La funzione tipica è la seguente h(k) = k mod n dove k: codifica numerica della chiave n: numero di pagine del file Sinonimi: chiavi assegnate alla stessa pagina gestione dell overflow 4.2 Indice Tabellato B+- tree Un B+-tree di ordine m 3 è un albero ad m vie definito induttivamente come segue: Base: un nodo N con 1 k m-1 chiavi e k puntatori è un B+-tree ad un livello (h=1); le chiavi sono ordinate in ordine crescente; i puntatori puntano alle pagine della relazione indicizzata (si noti che N è un nodo foglia, oltre che radice) Induzione: siano dati 1) un nodo ordinato N = (p 0, k 1, p 1,, k n, p n ), con 1 n < m, e 2) n+1 B+-tree B 0,, B n di profondità h-1, tali che o tutte le chiavi C(Bi) in Bi sono tali che k i < C(Bi) k i+1 (0 < i < n), C(B 0 ) k 1 e C(B n ) > k n o ogni chiave in N appare in una foglia di un sottoalbero 1 Deve essere supportato l accesso diretto alle pagine; ciò richiede che siano memorizzate sequenzialmente 3

4 o ogni nodo non foglia in Bi (0 i n) ha un numero di puntatori m/2 p m o ogni nodo foglia in Bi (0 i n) ha un numero di puntatori m/2 m-1 allora l albero che ha radice N e sottoalberi B 0,, B n è un B+tree di profondità h Proprietà di un B+-tree di ordine m: 1. è bilanciato (le foglie sono tutte allo stesso livello) 2. i valori all interno di ogni nodo sono ordinati 3. La radice o è una foglia o ha almeno 2 figli 4. ogni nodo non foglia, tranne la radice, ha un numero di figli m/2 f m 5. se un nodo non foglia ha j figli, ha j-1 valori della chiave 6. ogni foglia ha un numero di coppie (valore, puntatore al record) m/2 m-1, un puntatore alla foglia successiva ed uno a quella precedente; 7. Ogni chiave appare in una foglia 8. Ogni nodo è memorizzato in una pagina NOTA: la struttura dell albero dipende dall ordine di caricamento delle chiavi. L ordine dell albero dipende dalla dimensione delle pagine (in genere tra 1 e16 K), dalle lunghezze delle chiavi e dei puntatori. ESEMPIO. Si supponga che l attributo di indicizzazione sia lungo 9 byte e che il puntatore alle pagine sia lungo 6 byte. Se indichiamo con m l ordine dell albero, ogni nodo interno può contenere al massimo (m-1) chiavi e m puntatori. Pertanto, nell ipotesi che una pagina sia lunga 2K byte, il valore di m si ottiene come segue: (m-1)*9 + m* m 2057 m= 137. Un B+-tree può essere un indice di ordinamento (clustered) o no (unclustered): o ordinamento (clustered): la relazione è ordinata sull attributo di indicizzazione; ogni chiave in un nodo foglia punta alla pagina che contiene la prima tupla con un dato valore dell attributo o non di ordinamento (unclustered): la relazione non è ordinata sull attributo di indicizzazione. Siccome in generale esistono valori duplicati (più tuple con lo stesso valore della chiave), ogni puntatore delle foglie punta ad un blocco di indici che contiene i puntatori a tutte le tuple con un dato valore della chiave. L altezza (o profondità) di un B+-tree è pari al numero di nodi che si incontrano in un qualsiasi percorso dalla radice ad una foglia. Altezza Minima di un B+-tree. Tutti i nodi contengono m-1 chiavi. Siccome ogni nodo non foglia ha m figli, allora al livello h ci sono 2 Nodi(h) = m h-1 Punt(h)= m* m h-1 = m h (nodi non foglia) 2 Il livello 1 è quello della radice 4

5 Pertanto, se il B+-tree ha profondità h, allora il numero di chiavi nelle foglie è K max (h) = (m-1)* m h-1 = m h m h-1 m h (quando m è grande) Se la relazione da indicizzare contiene K valori della chiave di indicizzazione, allora sarà necessario un albero di profondità (minima) h, dove h è il più piccolo valore tale che m h K h min (m,k) = log m K Altezza Massima di un B+-tree. Tutti i nodi contengono m/2-1 chiavi (e m/2 puntatori), tranne la radice che contiene una chiave e 2 puntatori. Pertanto, Nodi(h=1) = 1 Punt(h=1) = 2 Nodi(h=2) = 2 Punt(h=2)= 2 m/2 (nodi non foglia) Nodi(h>2) = 2 m/2 h-2 Ne deriva che, se l albero ha profondità h, allora il numero di chiavi nelle foglie è K min (h) = 2 m/2 h-2 * ( m/2-1) = 2 m/2 h-1-2 m/2 h-2 2 m/2 h-1 Se la relazione da indicizzare contiene K valori della chiave di indicizzazione, allora sarà necessario un albero di profondità (massima) h, dove h è il più piccolo valore tale che 2 m/2 h-1 K h max (m,k) = log m/2 K/2 + 1 In conclusione, per indicizzare K chiavi attraverso un albero di ordine m, la profondità h(m,k) dell albero sarà tale che h min (m,k) h(m,k) h max (m,k) ESEMPIO. Assumendo m=137 e K = h min (m,k) = log m K = log = 3 h max (m,k) = log m/2 K/2 + 1 = log = 5 5 Implementazione Operatori Relazionali con gli indici Gli operatori dell algebra relazionale possono essere implementati in modi diversi, a seconda del tipo di organizzazione fisica delle relazioni coinvolte. 5

6 5.1 Selezione con B+Tree Primario Ipotesi: Sulla chiave primaria della relazione è definito B+-tree di profondità h. Ricerca per chiave: seleziona tutte le tuple con valore k=a della chiave. Il costo C della ricerca è C = h+1 Ricerca per intervallo: seleziona tutte le tuple con valore k della chiave tale che v1 k v2. Sia sel(v1 k v2) il fattore di selettività della condizione di selezione (frazione di tuple che soddisfano la condizione): 1) Indice di ordinamento: C = h + sel(v1 k v2)*npag 2) Indice non di ordinamento: C = h + sel(v1 k v2)*nfoglie 1 +sel(v1 k v2)*ntuple Nel primo caso, la ricerca attraverso l indice è conveniente rispetto alla ricerca binaria se h + sel((v1 k v2))*npag < log 2 Npag+ sel(v1 k v2)*npag/2 Nel secondo caso, la ricerca attraverso l indice è conveniente rispetto alla scansione sequenziale se h + sel(v1 k v2)*nfoglie 1 + sel(v1 k v2)*ntuple < Npag ESEMPIO. La ricerca σ K=k in una relazione tuple di una chiave primaria, attraverso un albero di ordine m=137, costa 4 accessi nel caso migliore, e 6 nel peggiore. Se si facesse una ricerca binaria, nell ipotesi di Ltuple=100 e Lpag=1024, il costo sarebbe pari a 17 pagine (caso peggiore). NOTA. Se il B+-tree è un indice primario, le foglie possono memorizzare le tuple intere (e non solo la chiave). 5.2 Selezione con B+Tree Secondario Ipotesi: un B+-tree di profondità h è definito su un attributo non chiave primaria della relazione. Ricerca per chiave: seleziona le tuple con valore k=a della chiave. Sia sel(k=a) la selettività della condizione k=a: Indice di ordinamento: C = h + sel(k=a)*npag Indice non di ordinamento: C = h sel(k=a)*ntuple Ricerca per intervallo: seleziona tutte le tuple con valore k della chiave tale che v1 k v2. Sia sel(v1 k v2) il fattore di selettività della condizione di selezione: 1) Indice di ordinamento: C = h + sel(v1 k v2)*npag 2) Indice non di ordinamento: C = h + sel(v1 k v2)*nfoglie 1 + sel(v1 k v2)*ntuple*(1+sel(k=a)*ntuple) 6

7 dove sel(v1 k v2)*nfoglie 1 è il costo di scansione delle foglie, e sel(v1 k v2)*ntuple*(1+sel(k=a)*ntuple) è il costo di accesso ad ogni singola tupla che soddisfa il predicato di selezione (v1 k v2). 5.3 Selezioni composte. Esempio 1: σ (A=a and B=b) (R). Si supponga che su A sia definito un B+tree clustered di profondità h. Una possibile strategia è la seguente: 1) si usa l indice su A per selezionare tutte le tuple tali che A=a; 2) per ogni tupla selezionata, si verifica se anche la condizione B=b è soddisfatta C = C A = h + sel(a=a)*npag Ovviamente, l approccio è vantaggioso rispetto ad una scansione sequenziale se h + sel(a=a)*npag < Npag(R). Esempio 2: σ (A=a or B=b) (R). Si supponga che su A sia definito un B+tree. In tal caso, l indice non è utile, ed il costo è quello della scansione sequenziale. 5.4 Join Ricordiamo che l operatore di join R S è commutativo Nested loop Algoritmo NestedLoop (R è relazione esterna) for each page r of R transfer r in main memory for each page s of S transfer s in main memory join the tuples in r with those in s Costo = NPag(R)+NPag(R)*NPag(S) con R relazione esterna Costo = NPag(S)+NPag(R)*NPag(S) con S relazione esterna Confrontando le due equazioni, si evince facilmente che, nel caso del nested loop, conviene usare come relazione esterna quella più piccola (cioè, memorizzata su un numero minore di pagine) Index Join Assumiamo che la condizione di join sia R.A = S.B e che su B sia definito un qualsiasi indice (hash, B+-tree, ecc.). In tal cso, R funge da relazione esterna. Quindi, per ogni tupla di R, si accede alle tuple di S che hanno quel valore sfruttando l indice. 7

8 Algoritmo Index join for each page r of R transfer r in main memory for each tuple t in r let t.a be the value of the join attribute X = index_lookup(s,s.b=t.a) //X is the set of pages containing tuples of S s.t. S.B=t.a for each page p in X for each tuple t in p oin t and t A titolo d esempio, supponiamo che l indice sia un B+-tree. I costi del join sono: a. B+-tree primario sull attributo di giunzione B di S (cioè, B è chiave primaria di S): C= NPag(R) + Ntuple(R) * (h+1) b. B+-tree secondario di ordinamento sull attributo di giunzione B di S: C= NPag (R) + Ntuple(R) * (h+ sel(b=r.a) * Npag(S) ) c. B+-tree secondario NON di ordinamento sull attributo di giunzione B di S: C= NPag (R) + Ntuple(R) * (h+1 + sel(b=r.a) * Ntuple(S) ) Sort- merge R e S sono ordinate rispetto agli attributi di giunzione A e B (la condizione di join è R.A = S.B) Algoritmo SortMerge i <- 1; j <- 1; While (i <= R ) AND (j <= S ) do if R[i].C = S[j].C then outputtuples else if R[i].C > S[j].C then j <- j+1 else if R[i].C < S[j].C then i <- i+1 Procedure outputtuples While (R[i].C = S[j].C) AND (i <= R ) do k <- j; While (R[i].C = S[k].C) AND (k <= S ) do output R[i], S[k] pair; k <- k + 1; i <- i + 1; Il costo è C= NPag (R)+ NPag (S) Hash Join (Classico) Viene creata una hash table in memoria centrale in cui è memorizzata la relazione più piccola (assumiamo che sia R) usando l attributo di join A di R. Algoritmo HashJoin 1. For each tuple r in the R 1. Add r to the in-memory hash table at the address h(r.a) 2. If the size of the hash table equals the maximum in-memory size: 8

9 Scan the S and add matching join tuples to the output relation Reset the hash table 2. Do a final scan of S and add the resulting join tuples to the output relation Nel caso migliore, la relazione R è interamente contenuta in memoria centrale. In tal caso, quindi, il costo del join è C = Npag(R) + Npag(S) (caso migliore) ESEMPIO. La relazione R ha 1000 tuple memorizzate su 100 pagine. La relazione S è memorizzata su pagine ed ha una funzione hash sulla chiave primaria Ks. Il costo del join tra R e S, a cui S partecipa con Ks, nei vari casi è il seguente: 1) Nested loop con R ext: C1 = Npag(R) + Npag(R)*Npag(S) = pag 2) Nested loop con S ext: C2 = Npag(S) + Npag(R)*Npag(S) = pag 3) Index join: C3 = Npag(R) + Ntuple(R) = = 1100 pag (usa la funzione hash) 4) Hash join: C4 = Npag(R) + Npag(S) (caso migliore) = pag NOTA: l index join (che sfrutta l indice hash) è circa 1000 volte più veloce del nested loop. ESEMPIO. La relazione IMP ha un indice secondario B+-tree sull attributo Dip. La relazione DIP ha un indice primario hash sull attributo Codice. IMP ha tuple memorizzate su pagine. DIP ha 125 tuple memorizzate su 13 pagine. Il B+-tree ha 3 livelli. Ogni DIP ha in media /125=800 IMP. IMP non è ordinato su Dip. Quindi il B+-tree non è di ordinamento ed ha un ulteriore livello che contiene i blocchi di puntatori Costi del join: 1) nested loop con IMP ext à C = 2000+(13*20.000) = pagine 2) nested loop con DIP ext, à C = 13+(13*20.000) = pagine 3) index join: uso hash su DIP con IMP esterno à C = Npag(Imp)+Ntuple(imp) = = pagine 4) Uso B+tree su IMP con DIP esterno à C = Npag(Dip)+Ntuple(Dip)*(h+1+800) = ( ) = pag 6 PIANI DI ESECUZIONE Segue un esempio di esecuzione di query con calcolo del relativo costo. Esempio. Si consideri la seguente interrogazione Q in Algebra Relazionale: π codcalc (σ città=milano (HA-GIOCATO SQUADRA)) -- π codcalc (σ città=roma HA-GIOCATO SQUADRA) definita sulla seguente base di dati: CALCIATORE(codCalc, nome, cognome, età) SQUADRA(codSquadra, nome, città) HA-GIOCATO(codCalc, codsquadra) Scegliere un piano di esecuzione di Q e calcolarne il costo. A tal fine, si assumano i seguenti dati: 9

10 a. Ogni città ha un unica squadra b. CALCIATORE: tuple c. HA-GIOCATO: tuple; le chiavi codcalc e codsquadra sono entrambe lunghe 10 byte d. SQUADRA: 500 tuple, ognuna lunga 50 byte e. Ogni pagina è lunga 1024 byte e contiene un numero intero di tuple. Pertanto #tupag(h) = 1024/20 = 51 NPag(H) = /51 = 1961 pages #tupag(s) = 1024/50 = 20 bytes NPag(S)= 500/20 = 25 pages 1) Ottimizzazione logica: anticipazione della selezione rispetto al join π codcalc (HA-GIOCATO σ città=milano SQUADRA) -- π codcalc (HA-GIOCATO σ città=roma SQUADRA) _ π π j j H σ H σ S S Albero di esecuzione 2) Valutazione bottom up del piano di esecuzione a) selezione: (σ città=roma (S): in assenza di indici su città, si esegue una scansione sequenziale C1 = costo(σ città=roma (S)) = 25 pagine (scansione sequenziale) size(s =σ città=roma (S)) = 1 tupla (ipotesi a) b) join: S H: assumendo che ci sia un B-+tree clustered a 3 livelli su codsquadra di H, si valutano due alternative: nested loop e join con indice b.1) nested loop S inner C2 = costo(s H) = 1+1*2000= 2001 pages b.2) Join con indice 10

11 C2 = costo(s H) = h + fs*npag(h) = 3 + 1/500*2000 = = 7 pages Viene quindi eseguito il secondo join, in quanto più efficiente. La relazione risultante H ha la seguente dimensione (si noti che le tuple di H sono di 60 bytes): size(h = S H) = /500 = 200 tuples * 60/1024 = 12 pages c) proiezione: π codcalc H C3= costo(π codcalc H ) = 12 pages Siccome la lunghezza delle tuple di H è pari a 10 byte size (H ) = 200 tuple * 10/1024 = 2 pages Considerato che la query è simmetrica (rispetto all operatore di sottrazione), l esecuzione dell altro sottoalbero ha lo stesso costo e produce una relazione H delle stesse dimensioni di H. Pertanto, il costo della differenza H e H è il seguente d) differenza: H H C4= costo(h -H ) = Npag(H ) + Npag(H )*Npag(H ) = 2 + 2*2= 6 pages Infine, il costo totale di esecuzione è la somma dei singoli costi parziali costototale = C4 + 2*( C1+C2+C3) = 94 pages 11

Cognome Nome Matricola Ordin.

Cognome Nome Matricola Ordin. Basi di dati II, primo modulo Tecnologia delle basi di dati Prova parziale 27 marzo 2009 Compito A Scrivere il nome su questo foglio e su quello protocollo. Rispondere su questo foglio, eventualmente con

Dettagli

La gestione delle interrogazioni

La gestione delle interrogazioni La gestione delle interrogazioni Basi di dati: Architetture e linee di evoluzione - Seconda edizione Capitolo 1 Appunti dalle lezioni Esecuzione e ottimizzazione delle query Un modulo del DBMS Query processor

Dettagli

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso INDICI PER FILE Strutture ausiliarie di accesso 2 Accesso secondario Diamo per scontato che esista già un file con una certa organizzazione primaria con dati non ordinati, ordinati o organizzati secondo

Dettagli

Ottimizzazione delle query. Stima dell IO: Per generare i piani si considera: --> Generare e confrontare i piani Query

Ottimizzazione delle query. Stima dell IO: Per generare i piani si considera: --> Generare e confrontare i piani Query Ottimizzazione delle query Ottimizzazione delle query --> Generare e confrontare i piani Genera Query Piani Leggere il capitolo 15 del Garcia-Molina et al. Lucidi derivati da quelli di Hector Garcia-Molina

Dettagli

FILE E INDICI Architettura DBMS

FILE E INDICI Architettura DBMS FILE E INDICI Architettura DBMS Giorgio Giacinto 2010 Database 2 Dati su dispositivi di memorizzazione esterni! Dischi! si può leggere qualunque pagina a costo medio fisso! Nastri! si possono leggere le

Dettagli

Parte 6 Esercitazione sull accesso ai file

Parte 6 Esercitazione sull accesso ai file Gestione dei dati Parte 6 Esercitazione sull accesso ai file Maurizio Lenzerini, Riccardo Rosati Facoltà di Ingegneria Sapienza Università di Roma Anno Accademico 2012/2013 http://www.dis.uniroma1.it/~rosati/gd/

Dettagli

Strutture di accesso ai dati: B + -tree

Strutture di accesso ai dati: B + -tree Strutture di accesso ai dati: B + -tree A L B E R T O B E L U S S I S E C O N D A P A R T E A N N O A C C A D E M I C O 2 0 0 9-2 0 0 Osservazione Quando l indice aumenta di dimensioni, non può risiedere

Dettagli

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

Basi di Dati e Sistemi Informativi. Organizzazione fisica dei dati. Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Giuseppe Loseto Corso di Laurea in Ing. Informatica Ing. Gestionale Magistrale Struttura DBMS Gestore delle interrogazioni Decide le strategie di accesso ai dati per rispondere alle interrogazioni Gestore

Dettagli

Pag Politecnico di Torino 1

Pag Politecnico di Torino 1 Introduzione Strutture fisiche di accesso Definizione di indici in SQL Progettazione fisica Linguaggio SQL: costrutti avanzati D B M G D B M G2 Organizzazione fisica dei dati All interno di un DBMS relazionale,

Dettagli

I B+ Alberi. Sommario

I B+ Alberi. Sommario 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

Dettagli

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

Indici multilivello dinamici (B-alberi e B + -alberi) Alberi di ricerca - 1. Un esempio. Alberi di ricerca - 3. Alberi di ricerca - 2 INDICI MULTILIVELLO DINAMICI Indici multilivello dinamici (B-alberi e B + -alberi) Gli indici multilivello dinamici (B-alberi e B + -alberi) sono casi speciali di strutture ad albero. Un albero è formato

Dettagli

Organizzazione fisica dei dati: Gli Indici

Organizzazione fisica dei dati: Gli Indici Organizzazione fisica dei dati: Gli Indici Basi di dati: Architetture e linee di evoluzione - Seconda edizione Capitolo 1 Appunti dalle lezioni Indici Struttura ausiliaria per l'accesso ai record di un

Dettagli

Strutture fisiche di accesso

Strutture fisiche di accesso Strutture fisiche di accesso Esercitazioni - Basi di dati (complementi) Autore: Dr. Simone Grega Esercizio 1 Siano date le seguenti informazioni: B=4096 bytes la dimensione di un blocco H=12 bytes la dimensione

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Heap Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2006/07 Heap Heap binari: definizione Un heap binario è una struttura dati composta

Dettagli

Algoritmi e Strutture Dati. HeapSort

Algoritmi e Strutture Dati. HeapSort Algoritmi e Strutture Dati HeapSort Selection Sort: intuizioni L algoritmo Selection-Sort scandisce tutti gli elementi dell array a partire dall ultimo elemento fino all inizio e ad ogni iterazione: Viene

Dettagli

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

File e Indici. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma File e Indici 1 File Dati di un DBMS memorizzati come record Un file è una collezione di record Organizzazione del file: metodo per registrare un file su un dispositivo di memorizzazione esterno Un record

Dettagli

Organizzazione fisica dei dati. L. Vigliano

Organizzazione fisica dei dati. L. Vigliano Organizzazione fisica dei dati 2 punti di vista Come costruire un DB? Flusso di progetto, schemi logici livello logico Come memorizzare i dati? Struttura dei dati livello fisico DBMS : Architettura a livelli

Dettagli

5. Strutture di indici per file

5. Strutture di indici per file 5. Strutture di indici per file I file hanno un'organizzazione primaria, ossia possono essere organizzati su disco in maniera ordinata, non ordinata, oppure a hash. Per velocizzare le operazioni di reperimento

Dettagli

Alberi binari di ricerca

Alberi binari di ricerca Alberi binari di ricerca Ilaria Castelli castelli@dii.unisi.it Università degli Studi di Siena Dipartimento di Ingegneria dell Informazione A.A. 2009/20010 I. Castelli Alberi binari di ricerca, A.A. 2009/20010

Dettagli

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35

ORDINE DI INSERIMENTO DELLE CHIAVI <35 >35 LIBRERIA WEB Alberi binari 3. Alberi binari e tecniche di hashing per la gestione delle chiavi Gli indici di un file possono essere trattati in modo efficiente con tecniche che si basano sull uso di alberi

Dettagli

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j L insieme delle istruzioni (2) Architetture dei Calcolatori (lettere A-I) Istruzioni per operazioni logiche: shift Shift (traslazione) dei bit di una parola a destra o sinistra sll (shift left logical):

Dettagli

Compito DA e BD. Tempo concesso: 90 minuti 21 gennaio 04 Nome: Cognome: Matricola: Esercizio 1

Compito DA e BD. Tempo concesso: 90 minuti 21 gennaio 04 Nome: Cognome: Matricola: Esercizio 1 Compito DA e BD. Tempo concesso: 90 minuti 21 gennaio 04 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione della base di dati della prossima edizione

Dettagli

Si definisca il relativo schema E/R (nella metodologia proposta a lezione) e si evidenzino eventuali vincoli inespressi e attributi derivati.

Si definisca il relativo schema E/R (nella metodologia proposta a lezione) e si evidenzino eventuali vincoli inespressi e attributi derivati. 20 Giugno 2014 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione di un sistema informativo per la gestione delle iscrizioni a strutture scolastiche.

Dettagli

Algebra relazionale: operazioni

Algebra relazionale: operazioni Dipartimento di Elettronica ed ormazione Politecnico di Milano ormatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2011/2012 Algebra relazionale: operazioni Le presenti slide sono tratte dalle slide

Dettagli

Esercizio 10.1 Soluzione

Esercizio 10.1 Soluzione Esercizio 10.1 Calcolare il fattore di blocco e il numero di blocchi occupati da una relazione con T = 1000000) di tuple di lunghezza fissa pari a L = 200 byte in un sistema con blocchi di dimensione pari

Dettagli

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1

Algoritmi (9 CFU) (A.A ) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Algoritmi (9 CFU) (A.A. 2009-10) Heap e Algoritmo HeapSort. Prof. V. Cutello Algoritmi 1 Overview Definiamo la struttura dati heap Operazioni di costruzione e gestione di un heap Algoritmo Heapsort Code

Dettagli

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002 Processo di ottimizzazione Ottimizzatore di Oracle Silvia Chiusano Politecnico di Torino chiusano@polito.it Scelta della esecuzione più efficiente per uno statement SQL Influenzato da: Metodi di accesso

Dettagli

Heap e code di priorità

Heap e code di priorità Heap e code di priorità Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e strutture dati Roberto Cordone A. A. 2015-16 Capitolo 4 Implementazioni delle partizioni Nota: queste dispense sono un rapido riassunto delle lezioni svolte nel dicembre 2015 e gennaio 2016.

Dettagli

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola:

Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola: Compito Basi di Dati. Tempo concesso: 2 ore 18 Febbraio 2013 Nome: Cognome: Matricola: Esercizio 1 Si considerino le seguenti specifiche relative alla realizzazione della base dati a supporto di un applicativo

Dettagli

Indici ad albero. Albero Binario di Ricerca

Indici ad albero. Albero Binario di Ricerca Indici ad albero Ogni nodo contiene una sequenza di valori ed un insieme di puntatori ai nodi successivi. I valori sono le chiavi di ricerca dell indice N.B. In strutture fisiche ogni nodo corrisponde

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 3 novembre 2010 1 Trova la somma/1 Scrivere un algoritmo che dati in input un array A[1... n] di n interi

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 9 Agosto, 204 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti

Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Esercizi Capitolo 10 - Code con priorità e insiemi disgiunti Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente,

Dettagli

Esempio: rappresentare gli insiemi

Esempio: rappresentare gli insiemi Esempio: rappresentare gli insiemi Problema: rappresentare gli insiemi Vedremo che la scelta della rappresentazione per implementarli non è così ovvia come era stato per i numeri razionali In realtà ci

Dettagli

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

Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro

Dettagli

PROVETTE D ESAME. Algoritmi e Strutture Dati

PROVETTE D ESAME. Algoritmi e Strutture Dati PROVETTE D ESAME Algoritmi e Strutture Dati ESERCIZIO 1 Si ottengano limiti superiori e inferiori per la seguente ricorrenza ESERCIZIO 1 ESERCIZIO 2 Dato un albero binario T, il grado di sbilanciamento

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

Parte 5 Gestione dell accesso ai file e valutazione delle query

Parte 5 Gestione dell accesso ai file e valutazione delle query Gestione dei dati Parte 5 Gestione dell accesso ai file e valutazione delle query Maurizio Lenzerini, Riccardo Rosati Facoltà di Ingegneria Sapienza Università di Roma Anno Accademico 2012/2013 http://www.dis.uniroma1.it/~rosati/gd/

Dettagli

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

Introduzione. Heap-binomiali: un heap binomiale è un insieme di alberi binomiali. Heap binomiali 1 Introduzione Heap-binomiali: un heap binomiale è un insieme di alberi binomiali. Alberi-binomiali: un albero binomiale è un albero ordinato definito ricorsivamente. 2 Proprietà degli alberi

Dettagli

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli.

Alberi. Se x è il genitore di y, allora y è un figlio di x. Un albero binario è un albero in cui ogni nodo ha al massimo due figli. Alberi Un albero è un insieme di oggetti, chiamati nodi, su cui è definita una relazione binaria G(x, y) che leggiamo x è genitore di y tale che: 1. esiste un unico nodo, chiamato radice, che non ha genitori;

Dettagli

Equivalenza di Espressioni Algebriche

Equivalenza di Espressioni Algebriche Equivalenza di Espressioni Algebriche Basi di dati e sistemi informativi 1 Equivalenza di Espressioni Algebriche Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Equivalenza

Dettagli

Indici. Sistemi Informativi L-B. Home Page del corso: Versione elettronica: Indici.pdf

Indici. Sistemi Informativi L-B. Home Page del corso:  Versione elettronica: Indici.pdf Indici Sistemi Informativi L-B Home Page del corso: http://www-db.deis.unibo.it/courses/sil-b/ Versione elettronica: Indici.pdf Sistemi Informativi L-B Perché gli indici Le organizzazioni dei file viste

Dettagli

Basi di dati II 30 gennaio 2015

Basi di dati II 30 gennaio 2015 Tempo a disposizione: due ore. Cognome Nome Matricola Domanda 1 (20%) Una tecnica per il controllo di concorrenza diversa da quelle viste nel corso va sotto il nome di concorrenza basata sulla validazione

Dettagli

Ordinamenti per confronto: albero di decisione

Ordinamenti per confronto: albero di decisione Ordinamenti per confronto: albero di decisione Albero di decisione = rappresentazione grafica di tutte le possibili sequenze di confronti eseguite da un algoritmo assegnato di ordinamento per confronto

Dettagli

Esercizi Capitolo 7 - Hash

Esercizi Capitolo 7 - Hash Esercizi Capitolo 7 - Hash Alberto Montresor 19 Agosto, 2014 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile saltare alle rispettive

Dettagli

Parte III. L algebra relazionale

Parte III. L algebra relazionale Parte III L algebra relazionale asi di dati - prof. Silvio Salza - a.a. 2014-2015 III - 1 Linguaggi di interrogazione Dichiarativi: specificano le proprietà del risultato ("che cosa") Procedurali: specificano

Dettagli

<Nome Tabella>.<attributo>

<Nome Tabella>.<attributo> Informatica Generale (AA 07/08) Corso di laurea in Scienze della Comunicazione Facoltà di Lettere e Filosofia Università degli Studi di Salerno : SQL (2) Tabelle mult., variabili, aggreg, group Prof. Alberto

Dettagli

Alberi Binari di Ricerca

Alberi Binari di Ricerca Alberi Binari di Ricerca Algoritmi su gli alberi binari: visite Dato un puntatore alla radice di un albero vogliamo scandire in modo sistematico tutti i nodi di tale albero In una lista abbiamo una unica

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente .. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato

Dettagli

Progettazione Fisica FILE

Progettazione Fisica FILE Progettazione Fisica Organizzazione dei files Organizzazione indici FILE Insieme di record lunghezza fissa (R) lunghezza variabile Record Header BH RH record1 RH record2 RH record2 RH record3 Block Header

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

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

Laboratorio di Algoritmi e Strutture Dati. Aniello Murano. people.na.infn.it/~murano/ Murano Aniello - Lab. di ASD Terza Lezione Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Heap e Heapsort Algoritmi di ordinamento Insertion Sort Quicksort Heapsort Insertion Sort L

Dettagli

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie:

Tipi di operatori. Gli operatori dell algebra relazionale sono classificabili nelle seguenti categorie: lgebra relazionale Il linguaggio per interrogare ed aggiornare la base di dati fa parte del modello di questi ultimi. Un operazione di aggiornamento può essere vista come una funzione che, data un istanza

Dettagli

Basi di dati. Selezione, proiezione e join. Linguaggi di interrogazione. Selezione, proiezione e join. Equivalenza di espressioni

Basi di dati. Selezione, proiezione e join. Linguaggi di interrogazione. Selezione, proiezione e join. Equivalenza di espressioni elezione, proiezione e join Basi di dati Linguaggi di interrogazione quali professori hanno esaminato Antonio? Nome Città CDip Carlo Carlo Bologna Bologna Antonio oma Log Cod Corso 1 2 3 Data Voto 7997

Dettagli

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve LE STRUTTURE DATI DINAMICHE: GLI ALBERI Cosimo Laneve 1 argomenti 1. definizione di alberi e nozioni relative 2. implementazione degli alberi, creazione, visita 3. algoritmo di visita iterativa e sua implementazione

Dettagli

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio

APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio APPUNTI DELLA LEZIONE DI DATABASE DEL 26/10/2016 Studenti: Marco D'Amato, Adriano Luigi Piscopello Professore: Mario Bochicchio INTRODUZIONE L algebra relazionale è l algebra su cui si basa il linguaggio

Dettagli

I DATI E LA LORO INTEGRAZIONE 63 4/001.0

I DATI E LA LORO INTEGRAZIONE 63 4/001.0 I DATI E LA LORO INTEGRAZIONE 63 4/001.0 L INTEGRAZIONE DEI DATI INTEGRAZIONE DEI DATI SIGNIFICA LA CONDIVISIONE DEGLI ARCHIVI DA PARTE DI PIÙ AREE FUNZIONALI, PROCESSI E PROCEDURE AUTOMATIZZATE NELL AMBITO

Dettagli

CORSO ACCESS PARTE IV

CORSO ACCESS PARTE IV Creazione di un database / gestione tabelle Per creare un nuovo database Menu File Selezionare Nuovo Scegliere Database vuoto nella scheda Generale e confermare con Ok Impostare il nome e il percorso nella

Dettagli

Gestione di basi di dati in Access. SUISM Docente: Ugo de Liguoro a.a Asti

Gestione di basi di dati in Access. SUISM Docente: Ugo de Liguoro a.a Asti Gestione di basi di dati in Access SUISM Docente: Ugo de Liguoro a.a. 2003-2004 Asti Indice 1. Un primo esempio: la rubrica telefonica 2. Progettazione di un DB 3. Popolamento 4. Interrogazioni (Queries)

Dettagli

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati

Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica. Modulo di Laboratorio di Algoritmi e Strutture Dati Università degli Studi di L Aquila Facoltà di Scienze M.F.N. Corso di Laurea in Informatica Modulo di Laboratorio di Algoritmi e Strutture Dati Alberi binari Giovanna Melideo melideo@di.univaq.it 1 Alberi

Dettagli

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

Alberi ( GT. 7 ) In informatica, un albero è un modello astratto con cui viene rappresentata una struttura gerarchica Alberi ( GT. 7 ) Albero definizioni Albero ADT (Abstract Data Type) Algoritmi di base su alberi Alberi binari Strutture dati per rappresentare alberi Implementazione AlberoBinario 1 Alberi (GT. 7) In informatica,

Dettagli

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a

B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a Matricola Cognome Nome B a s i d i D a t i ( M o d u l o T e o r i a ) P r o v a s c r i t t a Durata: 2 ore e 15 minuti Avvertenze: è severamente vietato consultare libri e appunti. DOMANDE PRELIMINARI

Dettagli

ADT Coda con priorità

ADT Coda con priorità Code con priorità ADT Coda con priorità Una coda con priorità è una struttura dati dinamica che permette di gestire una collezione di dati con chiave numerica. Una coda con priorità offre le operazioni

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Linguaggio SQL: fondamenti Struttura di base Clausola WHEE Ordinamento del risultato Join unzioni aggregate Operatore GOU BY Istruzione SELECT: esempio di BD forniture prodotti Istruzione SELECT: esempio

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

SQL - Structured Query Language

SQL - Structured Query Language SQL - Structured Query Language Lab 05 Alessandro Lori Università di Pisa 27 Aprile 2012 Riepilogo esercitazione precedente Operatori insiemistici (UNION, INTERSECT, EXCEPT) Riepilogo esercitazione precedente

Dettagli

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale.

Algebra relazionale. Algebra relazionale. Operatori dell algebra relazionale. Operatori dell algebra relazionale. Algebra relazionale. Algebra relazionale Algebra relazionale Introduzione Selezione e proiezione Prodotto cartesiano e join Natural join, theta-join e semi-join Outer join Unione e intersezione Differenza e antijoin Divisione

Dettagli

0. Introduzione alla esecuzione delle interrogazioni

0. Introduzione alla esecuzione delle interrogazioni Fonti di riferimento Basi di Dati Complementi 2. Tecnologie per DBMS -2.3 Esecuzione e ottimizzazione delle interrogazioni Carlo Batini 2005-2006 Queste trasparenze parte 2.6 Basi di Dati Vol. 2 (Atzeni,

Dettagli

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento

Fondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento

Dettagli

Alberi binari e alberi binari di ricerca

Alberi binari e alberi binari di ricerca Alberi binari e alberi binari di ricerca Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

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

ADT Dizionario. Ordered search table. Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: Ordered search table Supponiamo che sia definita una relazione d'ordine totale sulle chiavi del dizionario D: possiamo memorizzare le entrate di D in un array list S in ordine non decrescente di chiavi:

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

In questa lezione Alberi binari di ricerca: la cancellazione

In questa lezione Alberi binari di ricerca: la cancellazione In questa leione Alberi binari di ricerca: la cancellaione 1 L algoritmo di Hibbard per cancellare (1962) Sia il nodo da cancellare: 1) è una foglia: si rimuove 2) ha un solo figlio x: si rende x figlio

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Puntatori e Alberi, ABR StudentiDIA

Dettagli

Tipici tempi di esecuzione. Martedì 7 ottobre 2014

Tipici tempi di esecuzione. Martedì 7 ottobre 2014 Tipici tempi di esecuzione Martedì 7 ottobre 2014 Punto della situazione Abbiamo definito il tempo di esecuzione di un algoritmo Scelto l analisi asintotica Abbiamo definito le notazioni asintotiche che

Dettagli

SOLUZIONI: Memoria virtuale

SOLUZIONI: Memoria virtuale SOLUZIONI: Memoria virtuale INTRODUZIONE Memoria Virtuale: Si parla di memoria virtuale quando la memoria principale viene utilizzata come cache per la memoria di massa (dischi, nastri): - I programmi

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Tipi di memoria dati Nella macchina astratta C esistono tre tipi di memoria per allocare

Dettagli

Esame Informatica Generale 13/04/2016 Tema A

Esame Informatica Generale 13/04/2016 Tema A Esame Informatica Generale 13/04/2016 Tema A! 1/! Quesito 1 (punteggio 2) Si considerino le seguenti istruzioni del linguaggio c/c++. int x[100]; void fz(int[], double[], double*); // puntatori void fz(int[],

Dettagli

Caratteristiche dei linguaggi per Database

Caratteristiche dei linguaggi per Database IL LINGUAGGIO Caratteristiche dei linguaggi per Database I linguaggi per basi di dati relazionali possiedono i comandi per: definizione del data base; manipolazione dei dati; associazione tra tabelle diverse;

Dettagli

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

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo. PROBLEMA. Un albergo di una grande città intende gestire in modo automatizzato sia le prenotazioni sia i soggiorni e realizzare un database. Ogni cliente viene individuato, tra l altro, con i dati anagrafici,

Dettagli

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

Informatica 3. Informatica 3. LEZIONE 17: Alberi generici. Lezione 17 - Modulo 1. Introduzione. ADT dell albero generico. Informatica 3 Informatica 3 LEZIONE 17: lberi generici Lezione 17 - Modulo 1 Modulo 1: Definizione e DT Modulo 2: Implementazione Modulo 3: lberi e classi di equivalenza Definizione e DT Politecnico di

Dettagli

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114

In questa lezione. Heapsort. ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 114 In questa lezione Heapsort ordinamento con complessità, nel caso peggiore, O(nlogn) [CLRS01] cap. 6 da pag. 106 a pag. 11 1 Paternità L heapsort è stato pubblicato da J. W. J. Williams nel 106. Pochi mesi

Dettagli

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi

Query. Query (Interrogazioni) SQL SQL. Significato dell interrogazione. Sintassi Informatica della Facoltà di Lingue e Letterature dell Università degli Studi di Torino. Qualsiasi altro Query (Interrogazioni) SQL Materiale aggiuntivo per il corso di laurea in Lingue e Culture per il

Dettagli

Lezione 6. Algebra e Calcolo Relazionale

Lezione 6. Algebra e Calcolo Relazionale Lezione 6 Algebra e Calcolo Relazionale 1 Sommario Esempio di Applicazione con Database (AZIENDA) Algebra Relazionale Operazioni Relazionali Unarie Operazioni dell Algebra Relazionale dalla teoria degli

Dettagli

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

B-Tree. Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in: B-Tree Prof. Rudolf Bayer Struttura dati usata in applicazioni che necessitano di gestire insiemi di chiavi ordinate Una variante (B+-Tree) è diffusa in: Filesystem: btrfs, NTFS, ReiserFS, NSS, XFS, JFS

Dettagli

Alberi ed Alberi Binari

Alberi ed Alberi Binari Alberi ed Alberi Binari Il tipo di dato Albero Un albero è una struttura di data organizzata gerarchicamente. È costituito da un insieme di nodi collegati tra di loro: ogni nodo contiene dell informazione,

Dettagli

4.1 Modelli di calcolo analisi asintotica e ricorrenze

4.1 Modelli di calcolo analisi asintotica e ricorrenze 4 Esercizi Prima Parte 4.1 Modelli di calcolo analisi asintotica e ricorrenze Esercizio 4 1 Rispondere alle seguenti domande: 1. Come misuriamo l efficienza di un algoritmo?. Quali sono gli algoritmi più

Dettagli

ALGEBRA RELAZIONALE. L algebra relazionale

ALGEBRA RELAZIONALE. L algebra relazionale ALGEBRA RELAZIONALE 2 L algebra relazionale L insieme principale di operazioni per il modello relazionale è l algebra relazionale. Le operazioni dell algebra relazionale consentono all utente di specificare

Dettagli

Schema Del DB Operazionale TELEFONATE

Schema Del DB Operazionale TELEFONATE Schema Del DB Operazionale TELEFONATE Costruire lo Schema di Fatto per analizzare le chiamate considerando come dimensioni TelefonoDA e TelefonoA, Data e Fascia, intesa come FasciaOraria della chiamata

Dettagli

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH

INTRODUZIONE INTRODUZIONE TABELLE HASH FUNZIONE HASH INTRODUZIONE INTRODUZIONE Una tabella hash è una struttura dati che permette operazioni di ricerca e inserimento molto veloci: in pratica si ha un costo computazionale costante O(1). Si ricorda che la

Dettagli

CALCOLO DEL COSTO DI ACCESSO AI DATI

CALCOLO DEL COSTO DI ACCESSO AI DATI CALCOLO DEL COSTO DI ACCESSO AI DATI costo di accesso 1 Nelle lezioni precedenti Avete visto: i le basi di dati relazionali ed il linguaggio SQL la struttura dei files gli indici B + tree questa è dedicata

Dettagli

Esercizi di Algoritmi e Strutture Dati

Esercizi di Algoritmi e Strutture Dati Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera

Dettagli

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi

Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina) Esercizi sugli Alberi Dati e Algoritmi I (Pietracaprina): Esercizi 1 Problema 1 Dimostrare che un albero non vuoto con n nodi interni, dove ogni nodo interno ha almeno

Dettagli

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative

SQL. Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative SQL SQL Il nome sta per Structured Query Language Le interrogazioni SQL sono dichiarative l utente specifica quale informazione è di suo interesse, ma non come estrarla dai dati Le interrogazioni vengono

Dettagli

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica

Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica Università degli Studi di Padova Dipartimento di Matematica. - Corso di Laurea in Informatica Regole dell'esame Il presente esame scritto deve essere svolto in forma individuale in un tempo massimo di

Dettagli

Albero di Riscorsione

Albero di Riscorsione Albero di Riscorsione Albero di ricorsione Un albero di ricorsione è un modo di visualizzare cosa accade in un algoritmo divide et impera L etichetta della radice rappresenta il costo non ricorsivo della

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 7 Tabelle hash Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Implementazioni Dizionario Tempo richiesto dall operazione più costosa: -Liste - Alberi di ricerca

Dettagli

ALGORITMI E STRUTTURE DATI

ALGORITMI E STRUTTURE DATI ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~ orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 HEAP SORT StudentiDIA Forum

Dettagli