Strutture fisiche di accesso

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

Esercizio 10.1 Soluzione

Strutture di accesso ai dati: B + -tree

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Progettazione Fisica FILE

5. Strutture di indici per file

Sommario. Tabelle ad indirizzamento diretto e hash Funzioni Hash

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

Rappresentazione di numeri relativi (interi con segno) Rappresentazione di numeri interi relativi (con N bit) Segno e Valore Assoluto

Somma di numeri binari

2. I numeri reali e le funzioni di variabile reale

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Esercizi svolti sulle cache - Soluzioni

Basi di dati I 27 gennaio 2016 Esame Compito A Tempo a disposizione: un ora e quarantacinque minuti. Libri chiusi.

Calcolo numerico e programmazione Rappresentazione dei numeri

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Cache associativa. Possibili alternative per il trasferimento di un blocco dalla memoria inferiore alla memoria superiore:

Esercizi Capitolo 7 - Hash

GESTIONE INVENTARIO Note operative

Rappresentazione dell Informazione

Traduzione ER - relazionale

percorso 4 Estensione on line lezione 2 I fattori della produzione e le forme di mercato La produttività La produzione

Corso di Access. Prerequisiti. Modulo L2A (Access) 2.5 Sottomaschere e Report avanzati

SISTEMI DI RIFERIMENTO SU UNA RETTA E SU UN PIANO

Architettura degli elaboratori Docente:

Equivalenza di Espressioni Algebriche

Codifica binaria. Rappresentazioni medianti basi diverse

Indici ad albero. Albero Binario di Ricerca

File System. Capitolo 13

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

La codifica. dell informazione

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

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

I B+ Alberi. Sommario

Esercitazione 5 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

PROVE SCRITTE DI MATEMATICA APPLICATA, ANNO 2006/07

SOLUZIONI: Memoria virtuale

1.2f: Operazioni Binarie

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

Rappresentazione dei Dati

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

Modi di indirizzamento

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

SOLUZIONE Istruzioni: Indirizzo logico Legittimo? Indirizzo fisico SI NO SI Dati:

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

Caratteristiche di un linguaggio ad alto livello

L errore percentuale di una misura è l errore relativo moltiplicato per 100 ed espresso in percentuale. Si indica con e p e risulta: e ( e 100)%

RELAZIONI E BASI DI DATI

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Basi di Dati Concetti Introduttivi

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Esercitazioni di statistica

INDICI DI POSIZIONE - I QUANTILI

Esercitazione n o 3 per il corso di Ricerca Operativa

L Allocazione Dinamica della Memoria

Esercizi di Calcolo delle Probabilità

Esercitazione 14 Aprile 2016 (Viki Nellas)

Istituzioni di Statistica e Statistica Economica

Basi di dati 19 dicembre 2016 Prova parziale Compito A Tempo a disposizione: un ora e quindici minuti. Libri chiusi.

PIANO CARTESIANO. NB: attenzione ai punti con una coordinata nulla: si trovano sugli assi

La codifica. dell informazione

Teoria dell informazione

Strutture dati e loro organizzazione. Gabriella Trucco

La codifica digitale

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni reali di variabile reale

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

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

2. Algoritmi e Programmi

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

LE MISURE DI TENDENZA CENTRALE. Dott. Giuseppe Di Martino Scuola di Specializzazione in Igiene e Medicina Preventiva

Problemi, istanze, soluzioni

Altri metodi di indicizzazione

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Transcript:

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 dell header del blocco RH=10 la dimensione dell header del record R=120 bytes la dimensione totale dei campi di un record Sapendo che si vogliono memorizzare 10.000 record e che la dimensione di ogni record è fissa, calcolare quanti blocchi sono necessari per memorizzare l intera relazione. 1

Soluzione esercizio 1 BFR = (Dim Block dim BH)/(dim RH + dim R) = (4096-12)/(10+120)=31,4xxxx = 31 NB=Numero Record/bfr= 10.000/31=322,58xxxx=323 ATTENZIONE nei prossimi esercizi di solito vengono trascurate, sia per il blocco che per i record, le dimensione degli header. Esercizio 2 Si considerino i dati dell esercizio precedente, e si ipotizzi di avere una struttura sequenziale ordinata con possibilità di overflow. Utilizzando l approccio linked list e sapendo che la dimensione di un puntatore è di 4 bytes Calcolare il numero di blocchi necessari alla memorizzazione di 10.000 record. 2

Soluzione esercizio 2 Soluzione esercizio 2 BFR = (Dim Block dim BH)/(dim RH + dim R + Puntatore)=(4096-12)/(10+120+4) = 30 NB = Numero Record/bfr = 10.000 / 30 = 334 3

Esercizio 3 Si consideri una base di dati gestita tramite hashing, il cui campo chiave contenga i seguenti nominativi: Green, Lovano, Osby, Peterson, Pullen Scofield, Allen, Haden, Sheep, Harris, MacCann, Mann, Brown, Hutcherson, Newmann, Ponty, Cobbham, Coleman, Mingus, Lloyd, Tyner, Fortune, Coltrane. Proporre un algoritmo di hashing con B=8 e F=4 (ovvero 8 bucket e 4 record per bucket). Teoria: Funzione Hash Funzione hash: Associa ad ogni valore della chiave un "indirizzo", in uno spazio di B blocchi o bucket; Ogni bucket contiene in generale F > 1 record. La funzione non è iniettiva e quindi esiste la possibilità di collisioni (chiavi diverse che corrispondono allo stesso indirizzo) Composta da due fasi: Folding: mappa i valori della chiave su interi positivi uniformemente distribuiti su un range ampio (es. somma dei bytes associati ai caratteri della chiave); Hashing: mappa un intero positivo su un range (0,B-1) (es. Funzione modulo B). 4

Soluzione esercizio 3 Una semplice funzione di hashing per i nomi dati è: Per ogni carattere del nome, considerare il corrispondente numero di ordine alfabetico (a=1, b=2 ): Sommare tutti i numeri ottenuti Fare il modulo B della divisione In questo caso otteremo per ogni nome un numero compreso tra 0 e B-1. ESEMPIO: Hash(Green)=(7+18+5+5+14) mod 8 = 1 Hash(Lovano)=(12+15+22+1+13+15) mod 8 = 6 Hash(Osby)=(15+19+2+25) mod 8 = 5 Hash(Peterson)=(16+5+20+5+18+19+15+13) mod 8 = 7 Esercizio 4 Sia data la seguente funzione hash h(x)=x mod 3 e i seguenti valori: 3, 4, 5, 6, 7, 8, 9, 13, 15, 24, 28 Calcolare il numero di collisioni e il tempo di accesso medio assumendo bucket prima di dimensione 1 poi di dimensione 4. 5

Soluzione esercizio 4 h(3)=3 mod 3 = 0 h(4)=4 mod 3 = 1 h(5)=5 mod 3 = 2 h(6)=6 mod 3 = 0 h(7)=7 mod 3 = 1 h(8)=8 mod 3 = 2 h(9)=9 mod 3 = 0 h(13)=13 mod 3 = 1 h(15)=15 mod 3 = 0 h(24)=24 mod 3 = 0 h(28)=28 mod 3 = 1 5 collisioni sul bucket 0 4 collisioni sul bucket 1 2 collisioni sul bucket 2 Bucket di dimension 1: 3 record in posizione giusta, 8 overflow Tempo medio: (3*1+8*2)/11= 1,72 Bucket di dimensione 4: Solo un overflow con il valore 24 Tempo medio: (10*1+1*2)/11=1.09 Esercizio 5 Considerare una relazione definita su vari attributi tra cui Matricola e Cognome, sotto le seguenti ipotesi: i record hanno lunghezza fissa pari a 110 byte e i campi Matricola e Cognome ne occupano rispettivamente 4 e 20. la relazione occupa 10.000 record il file system prevede blocchi da 500 byte nel file system i puntatori occupano 4 byte. Costruire una struttura fisica (aiutandosi eventualmente con disegni) che preveda: un indice primario su Cognome (e quindi una struttura ordinata su di esso). Assumere che il livello delle foglie dell albero abbia un puntatore per ogni blocco del file dei dati. un indice secondario, di tipo B+tree, su Matricola. Calcolare il numero di blocchi necessari per ciascuna struttura (cioe per il file dei dati e per ciascuno degli indici). Si suggerisce di calcolare prima il numero di blocchi per il file dei dati, e poi per i due file degli indici, dapprima per le foglie e poi per i livelli successivi. 6

Teoria: Formule per le dimensioni L numero di record nel file dati B dimensione dei blocchi R lunghezza dei record (fissa) K lunghezza del campo chiave P lunghezza dei puntatori/indirizzi (ai blocchi) N. di blocchi per il file dati: NF = L/ [B/R] N. di blocchi per un indice denso: ND = L / [B/(K+P)] N. di blocchi per un indice sparso: NS = NF / [B/(K+P)] dove [B/R] prendere parte intera inferiore [L/[B/R] prendere parte intera superiore File dati Soluzione esercizio 5 Calcoliamo quanti record entrano in un blocco: Fattore di blocco = 500/110 = 4 Calcoliamo il numero dei blocchi NB = 10.000/4 = 2.500 7

Soluzione esercizio 5 Indice primario: primo livello Dimensione del record = 20 + 4 = 24 Indice sparso: un puntatore a ogni blocco: Fattore di blocco = 500/24= 20 Numero blocchi = 2500/20= 125 Soluzione esercizio 5 Indice primario: secondo livello Numero blocchi = 125/20= 7 blocchi 8

Soluzione esercizio 5 Indice primario: terzo livello Numero blocchi =7/20= 1 blocco Teoria: Occupazione dei blocchi di memoria per un albero L occupazione di memoria, attraverso la strategia di esecuzione delle operazioni di aggiornamento e mantenuta tra il 50% e il 100% della occupazione teorica (statisticamente il 70% di riempimento e considerato ottimo) 9

Indice secondario Soluzione esercizio 5 indice denso: un record per ciascun record del file Dimensione del record= 4 + 4 = 8 Fattore di blocco = 500/8=62 Essendo un B-tree adottiamo il 70% di riempimento Fattore di blocco reale= 40 Numero blocchi = 10.000/40 = 250 blocchi Soluzione esercizio 5 Indice secondario: secondo livello Numero blocchi = 250/40=7 blocchi 10

Soluzione esercizio 5 Indice secondario: terzo livello Numero blocchi = 7/40= 1 blocco Esercizio 6 Supponiamo di avere un file ordinato con L=30,000 records R= 100 bytes (dimensione fissa) B= 1024 bytes Si vuole costurire un indice primario con: Chiave v= 9 bytes (su un campo che detta ordinamento in memoria) Block pointer P= 6 bytes Si vuole costruire un indice secondario con: Chiave v= 9 bytes (su un campo che non detta ordinamento in memoria) Block pointer P= 6 bytes 11

Soluzione esercizio 6 Il B/R =bfr= 1024/100= 10 record per blocco Il numero di blocchi necessari per il file è : L/ B/R = 30000/ 10 = 3000 Indice primario: la dimensione di ogni entry dell indice è Ri= (9+6)= 15 bytes Il bfr per l indice è: 1024/15= 68 entry per blocco Il numero totale di entry deve esser uguale al numero di blocchi nel data file ovvero 3000. Il numero di blocchi per l indice è quindi: Bindex= 3000/ 68 =45 Soluzione esercizio 6 Indice secondario: La dimensione di ogni entry dell indice è Ri= (9+6)= 15 bytes Il bfr per l indice è: 024/15=68 entry per blocco Il numero totale di entry deve esser uguale al numero di record nel data file ovvero 30000 Il numero di blocchi per l indice è quindi: Bindex= 30000/ 68 =442 12

Esercizio 7 Si consideri una relazione IMPIEGATO(Matricola, Cognome, Nome, DataNascita) con un numero di tuple pari a L abbastanza stabile nel tempo e una dimensione di ciascuna tupla (a lunghezza fissa) pari a R byte, di cui K per la chiave. Supporre di avere a disposizione un DBMS che permetta strutture fisiche disordinate e hash e che preveda la possibilità di definire indici secondari e operi su un sistema operativo che utilizza blocchi di dimensione B e con puntatori ai blocchi di P caratteri. Le operazioni principali siano le seguenti: ricerca esatta sul numero di matricola con frequenza f1; ricerca sul cognome (anche su sottostringa iniziale) con frequenza f2; mediamente una richiesta restituisce 4 record. Individuare alcune (almeno una) possibili organizzazioni fisiche per tale relazione e calcolare (approssimativamente) il numero di accessi a memoria secondaria (nell unità di tempo) supponendo L =5.000.000, R = 125, K = 5, B = 1.000, P = 4, f1 = 100, f2 = 1.000. Soluzione esercizio 7 Una possibile organizzazione fisica per tale relazione è: una struttura hash sulla matricola un indice secondario (un albero B+) sull attributo cognome. Esaminiamo l albero: Ipotizziamo dimensione attributo cognome pari a 20 caratteri. Il nostro Fattore di blocco per l albero B+ sarà quindi: 1.000/(20+4) = 41.6 arrotondato a 41. Essendo un B-tree adottiamo il 70% di riempimento (quindi bfr=28) La profondità del nostro albero per L = 5.000.000 sarà pari a 5 livelli. (5.000.000/28= 178.572 /28 = 6378/28= 228/28= 9/28=1) 13

Soluzione esercizio 7 Analizzando il numero di accessi per le interrogazioni ottengo che: L operazione 1 (con Hash) ha un costo di 1 accesso in memoria per 100 volte, pari a 100 accessi in memoria. L operazione 2 (con B+tree) ha un costo di 5 accessi in memoria per trovare una corrispondenza, alla quale vanno aggiunti 4 accessi (scorrendo l albero,) per ottenere i quattro record forniti mediamente. Moltiplicando quindi accessi per una ricerca per la frequenza f2 di 1.000 ottengo un totale di 9.000 accessi in memoria. Questa organizzazione ha un costo di 9.000 + 100 = 9.100 accessi 14