Esercizio Una tabella Pubblicazioni ha chiave primaria CodPubbl e come chiave candidata l'ISBN. La tabella contiene 1.000.000 di tuple ed è memorizzata.

Slides:



Advertisements
Presentazioni simili
Tecnologia delle basi di dati: Strutture fisiche di accesso
Advertisements

Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Algebra relazionale Presentazione 12.1
File System Cos’è un File System File e Directory
Biglietti e Ritardi: schema E/R
G. Mecca – – Università della Basilicata Basi di Dati Progettazione Fisica e Tuning: Concetti Avanzati versione 2.0 Questo lavoro è concesso.
1 Stampa dei dati - 1 I dati visualizzati, provenienti sia da tabelle che da query, possono essere stampati selezionando lopzione Stampa dalla voce di.
Realizzazione del file system
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Alberi binari di ricerca
1 Microsoft Access 1. 2 Contenuto Dovete progettare e realizzare, usando Access, una base di dati che riguarda gli esami sostenuti dagli studenti iscritti.
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
Basi di Dati - 3 Dati su più tabelle. Informatica 1 SCICOM - a.a. 2010/11 2 Separare i dati su più tabelle Quando è necessario? – Empiricamente, quando.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Basi di Dati) SQL: Data Manipulation Language (DML) Anno Accademico 2009/2010 Da: Atzeni, Ceri, Paraboschi,
Algoritmi e Strutture Dati
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Informazione incompleta Le tuple che compongono la base di dati devono essere omogenee. Quindi ad ogni attributo deve essere associato un valore in ogni.
Daniel Stoilov Tesi di Laurea
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
SQL: Structured Query Language
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Basi di Dati - 3 Dati su più tabelle Informatica 1 (SAM) - a.a. 2010/11.
Elementi di Informatica di base
Gerarchia delle funzioni e modello FH
Progettazione di un database
COMPITO 2 CELESTE BONANNO MATR CDL: SDFA.
Valutazione costi di una QUERY. A.1-Nome di tutti i fornitori che forniscono il prodotto P2 forpro fornitori CP=P2 Nome fornitori (CF, Nome, Citta) prodotti(CP,
Basi di Dati e Sistemi Informativi
Gerarchie Ricorsive Una gerarchia ricorsiva deriva dalla presenza di una ricorsione o ciclo (un anello nel caso più semplice) nello schema operazionale.
B trees.
Sistemi Informativi Insieme di “strutture” in grado di acquisire, elaborare, trasmettere ed archiviare informazioni in genere ad uso di un’organizzazione.
Architettura Centralizzata di un DBMS Relazionale
Microsoft Access (parte 5) Introduzione alle basi di dati Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Microsoft Access Query (II), filtri.
ITCG “V. De Franchis” - PON FSE Modulo G/1 l’informatica”
alberi completamente sbilanciati
Microsoft Access Maschere (II).
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Implementazione di dizionari Problema del dizionario dinamico Scegliere una struttura dati in cui memorizzare dei record con un campo key e alcuni altri.
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Archivi Esempi Movimenti contabili di un’azienda
Corso di laurea triennale in Chimica - Laboratorio di Informatica 1 ESERCITAZIONE 8 – BASI DI DATI - II ©2003/04 – Gruppo di lavoro Alberti, Boldi, Gaito,
Hashing. 2 argomenti Hashing Tabelle hash Funzioni hash e metodi per generarle Inserimento e risoluzione delle collisioni Eliminazione Funzioni hash per.
Microsoft Access Chiavi, struttura delle tabelle.
Basi di dati e Relazioni Uno schema di relazione R(X) è costituito da un simbolo (nome della relazione) R e da una serie di attributi X={A 1, A 2, …, A.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Progettazione di una base di dati relazionale Terza forma normale.
Raggruppamenti e target list scorretta select padre, avg(f.reddito), p.reddito from persone f join paternita on figlio = nome join persone p on padre =
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
PROGETTAZIONE DI UN DATABASE SARA A. L. DI GAETANO.
Approfondimenti SQL.
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Basi di Dati Esercitazione Modello Relazionale 19 ottobre 2015 Luigi Bellomarini
Primo Appello a.a Gennaio Call Me (on the line) Una base di dati supporta una giuria tecnica che deve votare per delle canzoni votate.
Il linguaggio SQL (Structured Query Language) è il linguaggio standard per creare, manipolare e interrogare database relazionali. SQL non è case-sensitive:
Laurea Magistrale in Informatica Architetture basi di dati A.A Docente: Prof. Carlo Batini Query Optimization nei DDBMS.
DDBMS Distributed database system. DDB Una base di dati distribuita è una collezione di dati che appartengono logicamente allo stesso sistema informativo.
Prof.ssa Rossella Petreschi Lezione del 17 /10/2014 del Corso di Algoritmica Lezione n°5.
Prof.ssa Rossella Petreschi Lezione del 15 /10/2012 del Corso di Algoritmica B-alberi Lezione n°5.
Transcript della presentazione:

Esercizio Una tabella Pubblicazioni ha chiave primaria CodPubbl e come chiave candidata l'ISBN. La tabella contiene di tuple ed è memorizzata tramite un'organizzazione fisica hash che utilizza l'attributo CodPubbl come chiave e presenta un livello di riempimento dell'80% (si hanno in media 10 tuple per blocco, quindi il numero di accessi medi è pari a 1.11).

PRIMO QUESITO a) Trascurando l'impatto dei meccanismi di caching e quantificando solamente il numero di operazioni di lettura su disco, valutare il costo di esecuzione della seguente query: select * from Pubblicazioni where ISBN = ' ' and ( CodPubbl = 'ABC123' or CodPubbl = 'DEF456' )

Soluzione primo quesito Disponendo di una struttura basata su hash per un attributo e nulla per l'altro, il planner decide di accedere innanzitutto tramite la parte "or". Questo comporta due tentativi di trovare la tupla (perché due sono i valori di confronto), il che comporta 2,22 accessi in media.

SECONDO QUESITO b) È inoltre presente una struttura ad albero come indice secondario sull'attributo ISBN, con fan out medio pari a 100. Trascurando anche in questo caso il contributo dei meccanismi di caching, valutare il numero medio di letture necessario per eseguire la query precedente, motivando la risposta. select * from Pubblicazioni where ISBN = ' ' and ( CodPubbl = 'ABC123' or CodPubbl = 'DEF456' )

Soluzione L'indice secondario ad albero sull'attributo ISBN comporta non meno di 3 accessi al disco, in media (se è ben bilanciato). Infatti log = 3. Quindi non conviene usarle tale indice, ma seguire comunque la strategia precedente.

Interpretando il fan-out come valore massimo di ogni nodo (F) e non come valore medio, osserviamo che un fattore di riempimento dei nodi (in termini di valori di chiave) inferiore all'80% comporta un numero medio di accessi più vicino a 4 che a 3, e il ragionamento è valido a fortiori. Del resto le strutture hash sono "imbattibili" per gli accessi mirati, mentre gli alberi B+ sono "imbattibili" per le query su intervalli e simili.

Su una tabella R(A,B,C,D,E) con di tuple, sono definiti 3 indici: Idx1(A,C,D), Idx2(B,C,E) e Idx3(B,D,A), in cui il valore di chiave di ogni indice è composto in ordine dagli attributi indicati da sinistra a destra. Gli attributi A, B, C, D, E presentano una distribuzione uniforme di valori, con il seguente numero di valori distinti: val(A)=1000, val(B)=100, val(C)=1000, val(D)=2000, val(E)=10. | R | = Idx1(A,C,D), Idx2(B,C,E), Idx3(B,D,A) val(A)=1000, val(B)=100, val(C)=1000, val(D)=2000, val(E)=10 Indicare quale indice converrà usare per eseguire la seguente query SQL (argomentando molto brevemente la risposta): select * from R where B=k1 and C=k2 and D=k3 and E=k4 Esercizio

Soluzione Dovendo valutare le quattro condizioni in and, si sceglie l’indice che offre, per gli attributi citati nei predicati, il maggior indice di selettività, scartando subito Idx1 perché inizia con un attributo che non è utilizzato dai predicati presenti nella condizione: Idx2: /(100x1000x10) = 10 tuple in media da scandire Idx3: /(100x2000) = 50 tuple in media da scandire Quindi conviene usare l’indice Idx2

9 Esercizio Si realizzi un albero B+ con F=3 (numero di valori di chiave presenti in ogni nodo) per rappresentare i valori: limone, cipresso, ciliegio, tasso, melo, agrifoglio, acero, fico, pittosphoro, cotoneaster, noce, oleandro, agave, euforbia, dracena. Si mostri poi come potrebbe avvenire un inserimento che richieda lo split di un nodo. Si costruisca anche un albero B (ottimizzato) per gli stessi valori. Requisito: tutti i nodi (tranne la radice) siano riempiti per almeno la metà (almeno la metà dei puntatori di ogni nodo siano diversi da NULL)

10 Il primo pensiero è di riempire l’albero in modo sequenziale. Però un nodo intermedio risulta sparso (ha 3 NULL) ATTENZIONE! I puntatori puntano ai NODI, non agli specifici valori!!. Quelli tratteggiati puntano alle tuple “fisiche”, e sono solo sulle foglie (B+). I puntatori a NULL non sono rappresentati AGRAGAACE FICEUFDRA TASPITOLE LIMDRACIL CIPCIL COTMELLIM NOC

11 I due nodi intermedi possono essere più “bilanciati”, avendo rispettivamente due e tre puntatori diversi da NULL Ora tutti i nodi tranne la radice sono “non sparsi” AGRAGAACE FICEUFDRA TASPITOLE LIM OLE DRACIL CIPCIL COTMELLIM NOC

12 AGRAGAACE COTCIPCIL FICEUFDRA Consideriamo ora l’inserimento del valore “betulla”: dovrebbe posizionarsi nel primo nodo foglia, che però è saturo e si “splitta” in due nodi (entrambi non sparsi). DRACIL AGAACE COTCIPCIL FICEUFDRA CILAGR BETAGR

13 Costruiamo infine il B-tree, notando 15 = 3*(4+1) Anche i nodi non-foglia hanno puntatori alle tuple fisiche, poiché nessun valore è replicato. TASPITOLE MELLIMFIC DRACOTCIP AGRAGAACE CIL EUF NOC I nodi foglia non hanno puntatori ad altri nodi dell’indice, perché sarebbero tutti a NULL, ma solo alle tuple (un dettaglio non menzionato nel libro).

Esercizio Si deve dimensionare un archivio gestito con tecnica hashing relativo a record ciascuno di lunghezza 150byte. Sia 8MByte la dimensione di un blocco fisico, e si supponga che lo spazio utile all’interno del blocco per la memorizzazione dei dati sia l’80%. Indicare la dimensione dell’archivio che consenta una gestione efficiente degli accessi, e esprimente il vostro ragionamento. Discutere poi pregi e difetti di questa soluzione rispetto ad un B+ tree costruito sugli stessi dati.

Soluzione *150*(1/0.8)=281 MByte 281M/8M=31MBlocchi

Esercizio Si ha una tabella Pubblicazioni, che ha come chiave primaria l'attributo CodPubbl e come chiave candidata l'attributo ISBN. La tabella contiene 10 6 tuple ed è memorizzata tramite un'organizzazione fisica hash che utilizza l'attributo CodPubbl come chiave e presenta un livello di riempimento dell'80% (si hanno in media 10 tuple per blocco, quindi il numero di accessi medi è pari a 1.11). Trascurando l'impatto dei meccanismi di caching e quantificando solamente il numero di operazioni di lettura su disco, valutare il costo di esecuzione della seguente query: select * from Pubblicazioni where ISBN = ' ' and (CodPubbl = 'ABC123' or CodPubbl = 'DEF456') È inoltre presente una struttura ad albero come indice secondario sull'attributo ISBN, con fan out medio pari a 100. Trascurando anche in questo caso il contributo dei meccanismi di caching, valutare il numero medio di letture necessario per eseguire la query precedente, motivando la risposta.

Esercizio Si consideri il seguente frammento di schema di una base di dati relazionale: LIBRO (Titolo, Autore, Anno, NomeEditore) EDITORE(NomeEditore, Via, Città) e si supponga che siano stati definiti tre indici di tipo B+ sugli attributi Titolo, Libro.NomeEditore e Editore.NomeEditore. Si vuole eseguire la seguente interrogazione: SELECT Titolo, Autore,NomeEditore,Citta FROM LIBRO L JOIN EDITORE E ON L. NomeEditore =E. NomeEditore WHERE Titolo LIKE ‘C%’ Si spieghi, motivando opportunamente la risposta, quali tipi di tecniche si possono applicare a questa interrogazione per eseguirla in modo efficiente. Si spieghi in dettaglio come si applicano tali tecniche a tale interrogazione (5 punti).

Esercizio Due tabelle Studente(Matr,Nome,DataNascita) e ElaboratoDB(Codice,Matr,Voto) sono memorizzate con una struttura fisica hash, usando la stessa funzione H applicata all'attributo di join Matr. Ciascuna tabella è memorizzata in 1000 blocchi del disco e per la tabella Studente è disponibile un indice secondario B-tree sull'attributo Nome. Si considerino ora le due query SQL: "select Nome,Voto from Studente S join ElaboratoDB E on S.Matr=E.Matr" "select Voto from Studente S join ElaboratoDB E on S.Matr=E.Matr where Nome = 'Carlo Ceravoli‘” Proporre un piano efficiente e stimare il numero di operazioni di lettura da disco richieste per l'esecuzione di ciascuna query.

Esercizio Si ha una tabella che occupa 1000 blocchi consecutivi di disco se rappresentata in modalità sequenziale. Si supponga che: il posizionamento della testina all'inizio di un blocco in modalità di accesso casuale vale sempre 10 ms; il tempo di posizionamento della testina in modalità sequenziale è nullo; la lettura di un blocco una volta che la testina è posizionata all'inizio del blocco richiede 0,5 ms. Si considerino 4 alternative di organizzazione fisica: sequenziale seriale (entry-sequenced); sequenziale ordinata; hash; albero key- sequenced (F=10). Si costruisca una tabella che presenti una stima del tempo richiesto per (1) scandire l'intera tabella e (2) per cercare una tupla caratterizzata da uno specifico valore di chiave.

Esercizio Si hanno due tabelle STUDENTE(Matr,Nome,Altro) ESAME(Matr,CodCorso,Data,Voto). Si deve gestire la query select S.* from Studente S join Esame E on (S.Matr = E.Matr). Si supponga che entrambe le tabelle siano organizzate a livello fisico in modo sequenziale seriale e sia presente per ciascuna tabella un indice B+ con fanout pari a 50. Vi sono tuple su blocchi in STUDENTE, di tuple su blocchi in ESAME. Trascurando l’effetto dei meccanismi di caching, stimare il numero di accessi richiesti per realizzare la query utilizzando i seguenti operatori: 1) nested loop con STUDENTE come tabella esterna; 2) nested loop con ESAME come tabella interna; 3) merge-scan utilizzando i due indici. Quale sarebbe il numero di accessi richiesto per il join merge-scan se entrambe le tabelle fossero organizzate in modo key-sequenced sui due indici sopra citati?

Esercizio Si ha una tabella Studente( Matr, Nome, Cognome, DataNascita) con tuple in blocchi, organizzata con un indice primario sulla matricola con fanout medio pari a 50 e un indice secondario con fanout medio pari a 30 sul cognome. Si ha quindi la seguente query: select * from Studente where Cognome like "Pa%" and Matr between "080115" and "080213“ Valutare il numero di operazioni di lettura di blocco richieste per il calcolo della query, confrontando le due strategie in cui si parte dall'applicazione della selezione rispettivamente prima sul cognome o prima sulla matricola, tenendo conto che la selettività della condizione sul cognome è pari all'1%, mentre la selettività sulla matricola è pari allo 0.2%

Esercizio Descrivere sinteticamente i metodi di join "nested loop", "merge scan" e "hash based" e indicare per ciascuno di essi un contesto che ne renda favorevole la applicazione.

Esercizio Descrivere i metodi di join merge-scan e nested-loop; illustrare in quali condizioni è conveniente usarli, facendo riferimento (in situazioni di costo standard) alla presenza di indici, al costo di sorting, e alle dimensioni delle tabelle. Discutere poi cosa succederebbe se si potesse assumere di avere buffer illimitati e costi di CPU nulli.

Esercizio Spiegare perché la probabilità di conflitto cresce col diminuire del fattore di blocco di un archivio gestito col metodo ad hashing. Mostrare poi un caso in cui, con fattore di riempimento all’80%, la probabilità di conflitto sia molto alta e uno in cui sia molto bassa.