Basi di Dati e Sistemi Informativi

Slides:



Advertisements
Presentazioni simili
Modulo 5 DataBase ACCESS.
Advertisements

Tecnologia delle basi di dati: Strutture fisiche di accesso
DBMS (DataBase Management System)
Unità D2 Archivi e file.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
CORSO ITP Informatica Gestionale Modulo – Le basi di dati
Le Strutture Dati Su Disco Parte Prima
File System Cos’è un File System File e Directory
Biglietti e Ritardi: schema E/R
Biglietti e Ritardi: schema E/R
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
Basi di Dati prof. A. Longheu
ESEMPI DI ARCHIVI DI DATI
Realizzazione del file system
Interfaccia del file system
Hash Tables Indirizzamento diretto Tabelle Hash Risoluzioni di collisioni Indirizzamento aperto.
Realizzazione del file system
Interfaccia del file system
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
File.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL Per la modifica di basi di dati
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Appunti informatica- prof. Orlando De Pietro
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Programma del Corso Dati e DBMS DBMS relazionali SQL
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Basi di dati Claudia Raibulet
Introduzione alle Basi di Dati. Overview Informazione = contenuto + struttura Informazione non strutturata Molto contenuto, poca struttura Un romanzo.
Esercitazione di Basi di Dati
L’algebra relazionale
MODELLO LOGICO DEI DATI
Introduzione a Oracle 9i
Corso di Basi di Dati Progettazione di Basi di Dati
Sistemi Informativi sul Web
Sistemi di Elaborazione delle Informazioni Mod.I.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
Architettura Centralizzata di un DBMS Relazionale
Informatica II – Basi di Dati (07/08) – Parte 2 Gianluca Torta Dipartimento di Informatica dell’Università di Torino
DB- Sistemi Informativi
Modulo 5 DataBase ACCESS. Informazioni e Dati INFORMAZIONI vengono scambiate con linguaggio scritto o parlato DATI rappresentazione di informazioni in.
I DATABASE.
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Pagine ASP parte 3 I data base Stefano Schacherl.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
GLI ARCHIVI Pandini Lorenzo 4^ E S.I.A.
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.
Microsoft Access Query (III).
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
1 File System Concetti e tecniche generali. 2 Il file system Il file system è la parte del SO che si occupa di mantenere i dati/programmi in modo persistente.
Database Elaborato da: Claudio Ciavarella & Marco Salvati.
Relazione su Access Database
PLSQL 1.1 LA REALIZZAZIONE DI APPLICAZIONI Quattro parti: Gestione dati Business rules Logica applicativa Interfaccia utente Molte possibili architetture.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
1 File system Casi di studio. 2 Esempi di File System Il file system di un CD-ROM Rappresentazione di un elemento di una directory nel file system ISO.
Funzionalità del DBMS relazionale l Funzioni per –definizione della base di dati –inserimento / rimozione /aggiornamento di informazioni deve soddisfare.
Linguaggi per basi di dati Linguaggi di definizione dei dati Utilizzati per definire gli schemi e le autorizzazioni per l’accesso Linguaggi di manipolazione.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
Esercizio Una tabella Pubblicazioni ha chiave primaria CodPubbl e come chiave candidata l'ISBN. La tabella contiene di tuple ed è memorizzata.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
Lezione 14 Tecniche di I/O Avanzate Obiettivi di apprendimento: A.Come lavorare con stream binari B.Lavorare con I datalog files C.Vantaggi e svantaggi.
Esercizi SQL Group by. CREATE TABLE dipendente (codDip CHAR(8) NOT NULL UNIQUE PRIMARY KEY, cognome CHAR(60) NOT NULL, nome CHAR(60) NOT NULL, stipendio.
Introduzione alle basi di dati e ai sistemi di gestione di basi di dati.
Organizzazione della Memoria
Transcript della presentazione:

Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

Organizzazione della Memoria Studio/analisi dei requisiti Risultati Fasi della progettazione SCHEMA CONCETTUALE Progettazione concettuale SCHEMA LOGICO Progettazione logica SCHEMA FISICO Progettazione fisica

Organizzazione della Memoria ANALISI REQUISITI PROGETTAZIONE CONCETTUALE Cosa si rappresenta Come lo si rappresenta ? Tabella1 Tabella2 TabellaN PROGETTAZIONE LOGICA Dove memorizzare le tabelle? Quali strutture dati usare?

Organizzazione della Memoria GERARCHIE DI MEMORIA Memoria Primaria Memoria Secondaria Volatile Accesso casuale Persistente Accesso diretto

Organizzazione della Memoria Per garantire la persistenza dei dati, un DMBS deve memorizzare i dati su memoria secondaria. Suddivisa in blocchi (unita’ minima di allocazione). Latenza di accesso = Latenza di posizionamento + Latenza di rotazione + Latenza di trasferimento Principio di localita’ dei dati per ridurre la latenza d’accesso.

Organizzazione della Memoria Le tuple di una relazione (record) sono generalmente di dimensione inferiore alla dimensione di un blocco. { Tupla dimensione fissa pari a L Fattore di blocco = B/L Dimensione blocco B (numero di record per blocco)

Organizzazione della Memoria Per l’accesso e la memorizzazione su memoria secondaria, i DMBS utilizzano le funzionalita’ offerte dal sistema operativo (file-system). API del FILE SYSTEM FileDescriptor* open(String) close(FileDescriptor*) byte[] read(FileDescriptor*) FILE SYSTEM UNIX write(FileDescriptor*, byte[])

Organizzazione della Memoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Organizzazione della Memoria Struttura seriale  le tuple si presentano nel file nell’ordine con cui sono inserite nel DB. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi 014 Sara Verdi 0100110110000001111000001110 11011110000001

Organizzazione della Memoria Struttura seriale  le tuple si presentano nel file nell’ordine con cui sono inserite nel DB. Inserimento dati  O(1) Ricerca dati  O(N) Aggiornamento dati  O(N) Cancellazione dati  O(N) 0100110110000001111000001110 11011110000001 N=numero di tuple nel file FRAMMENTAZIONE INTERNA

Organizzazione della Memoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Organizzazione della Memoria Struttura sequenziali  le tuple sono memorizzate secondo l’ordine di uno o piu’ attributi dello schema relazionale. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE Matricola Nome Cognome 012 Marco Rossi 014 Sara Verdi 013 Simone Bianchi Matricola Nome Cognome 012 Marco Rossi 013 Simone Bianchi 0100110110000011011110000001 01111000001110 0100110110000001111000001110

Organizzazione della Memoria Le strutture sequenziali facilitano le operazioni SQL di ordinamento/raggruppamento/ricerca sugli attributi su cui e’ definito l’ordinamento. SELECT * FROM Studenti ORDER BY Nome SELECT * FROM Studenti WHERE (Nome=“Sara”) SELECT Nome FROM Studenti GROUP BY Nome Q. Complessita’ algoritmica della ricerca dicotomica?

Organizzazione della Memoria Le strutture sequenziali sono piu’ complesse da gestire in caso di operazioni di aggiornamento/cancellazione/inserimento. In questi casi, e’ necessario procedere a periodiche riorganizzazioni della struttura. Per questo motivo, le strutture sequenziali sono spesso usate in associazione con indici  ISAM (Index Sequential Access Method)

Organizzazione della Memoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazione dei dati all’interno dei blocchi di memoria secondaria allocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE Struttura seriale (disordinata). Struttura sequenziale. Struttura con accesso calcolato (hash).

Organizzazione della Memoria Struttura hash  Si utilizza una funzione (hash) per determinare il blocco in cui e’ memorizzato una tupla, a partire dal valore di un suo attributo (in genere, la chiave). K: valore della chiave della tupla. f(K): numero di blocco in cui e’ contenuta la tupla con valore della chiave pari a K. Com’e’ fatta f(K)? Funzione iniettiva (caso ideale)

Organizzazione della Memoria Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 f: I  [0,B[ Es. f(Matricola)=Matricola % B

Organizzazione della Memoria Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 Vantaggio Strutture Hash  buona parte delle operazioni sulle tuple che coinvolgono la chiave possono essere eseguite in tempo costante …

Organizzazione della Memoria Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I  [0,B[ Es. f(Matricola)=Matricola % B COLLISIONE!

Organizzazione della Memoria Poiche’ la dimensione della tupla (L) e’ in genere inferiore alla dimensione del blocco (B), in caso di collisione: Si memorizza la tupla sequenzialmente nel blocco, fino ad esaurire lo spazio disponibile. Max Collisioni= Fattore di blocco=B/L In caso non vi sia piu’ spazio nel blocco, viene allocato un nuovo blocco e viene collegato a quello precedente (catena di overflow)

Organizzazione della Memoria Esempio di STRUTTURE HASH B: Numero di blocchi <29, Marco, Rossi> f(29)=2 1 2 <68, Simone, Bianchi> 3 f(68)=5 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I  [0,B[ Es. f(Matricola)=Matricola % B

Organizzazione della Memoria PROBLEMI STRUTTURE HASH Numero di blocchi costituisce un trade-off Se troppo piccolo rispetto al DB  frequenti collisioni (con catene di overflow, etc). Se troppo grande rispetto al DB  fattore di riempimento dei blocchi molto basso. Gestione dinamicita’ del sistema?

Organizzazione della Memoria PROBLEMI STRUTTURE HASH Struttura Hash NON efficiente per operazioni di selezione su un range di valori: SELECT * FROM STUDENTI WHERE (MATRICOLA>10) AND (MATRICOLA<100) che coinvolgono attributi NON chiave.

Organizzazione della Memoria Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave. Q. A che serve un indice? Indice Introduzione 1 Capitolo 1 20 Capitolo 2 40 Capitolo 3 60 Conclusioni 65 ACCESSO DIRETTO

Organizzazione della Memoria Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave. Q. A che serve l’indice in un DB? Consentire accesso diretto (sulla chiave) efficiente, sia puntuale sia per intervalli, quindi ottimizzare l’esecuzioni di query SQL che si basano sulla chiave dell’indice.

Organizzazione della Memoria Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave. Chiave indice (spesso) == Chiave relazione. Gli indici possono essere di due tipi: Indici secondari. Indici primari.

Organizzazione della Memoria Le tuple della relazione sono contenute nel file F. Un indice secondario e’ un file (diverso da F) contenente un insieme di coppie: <valore_chiave, offset_tupla_in_F> FILE INDICE FILE F Valore Chiave Posizione 14 29 68 29 Marco Rossi 14 Sara Verdi 68 Simone Bianchi

Organizzazione della Memoria Un indice secondario puo’essere utilizzato su strutture seriali (disordinate). Un indice secondario deve contenere tutte i valori della chiave.(indice denso).

Organizzazione della Memoria Indice  struttura che contiene informazioni sulla posizione di memorizzazione delle tuple sulla base del valore del campo chiave. La chiave dell’indice e’ (spesso) anche la chiave della relazione. Due tipi di indice: Indici secondari. Indici primari.

Organizzazione della Memoria Un indice primario: (i) contiene al suo interno i dati oppure (ii) e’ realizzato su un file ordinato sullo stesso campo della chiave dell’indice. Puo’ essere sparso: non tutte le chiavi della relazione devono comparire nell’indice per consentire le operazioni di ricerca.

Organizzazione della Memoria La realizzazione di indici avviene tipicamente attraverso l’utilizzo di strutture ad albero multi-livello.

Organizzazione della Memoria Struttura di un nodo NON-foglia P0 K1 P1 … Ki Pi … KF PF Sottoalbero che contiene le chiavi K<K1 Sottoalbero che contiene le chiavi Ki<=K<Ki+1 Sottoalbero che contiene le chiavi K>KF Ciascun nodo NON-foglia contiene F valori di chiave ed F+1 puntatori (fan-out dell’albero)

Organizzazione della Memoria Struttura di un nodo foglia CASO1. Il nodo foglia dell’albero contiene le tuple: P0 12 P1 16 P2 … 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> Index-Sequential Structure

Organizzazione della Memoria Struttura di un nodo foglia CASO2. Il nodo foglia contiene un puntatore al blocco: P0 12 P1 16 P2 … 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> 1 2 3 4 5

Organizzazione della Memoria Due tipologie di indici ad albero: Indici statici  La struttura ad albero viene creata sulla base dei dati presenti nel DB, e non piu’ modificata (o modificata periodicamente). Indici dinamici  La struttura ad albero viene aggiornata ad ogni operazione sulla base di dati di inserimento/cancellazione.

Organizzazione della Memoria Indexed Sequential Access Method (ISAM) F=grado medio NON terminali Pagine N pagine terminali

Organizzazione della Memoria Costo delle operazioni su Alberi ISAM: Ricerca: partire dalla radice, confrontare le chiavi per arrivare alle pagine terminali  O(logFN). Inserimento: trovare la pagina terminale della chiave ed inserire la tupla. Nel caso di pagina piena, allocare una pagina di overlow e linkarla alla precedente.  O(logFN). Cancellazione: trovare la pagina terminale e cancellare la tupla corrispondente.  O(logFN).

Organizzazione della Memoria Inserimento su ISAM 4 (SENZA overflow) F=grado medio NON terminali Pagine 4 N pagine terminali

Organizzazione della Memoria Inserimento su ISAM 5 (CON overflow) F=grado medio NON terminali Pagine 4 N pagine terminali 5

Organizzazione della Memoria Cancellazione su ISAM 5 F=grado medio NON terminali Pagine 4 N pagine terminali 5

Organizzazione della Memoria ISAM: vantaggi Le operazioni di inserimento/cancellazione NON modificano la struttura dell’albero. ISAM: svantaggi In presenza di sistemi molto dinamici, le prestazioni dell’indice peggiorano al crescere delle catene di overflow. Necessario ri-creare l’indice con una certa periodicita’.

Organizzazione della Memoria Due tipologie di indici ad albero: Indici statici  La struttura ad albero viene creata sulla base dei dati presenti nel DB, e non piu’ modificata (o modificata periodicamente) Indici dinamici  La struttura ad albero viene aggiornata ad ogni operazione sulla base di dati di inserimento/cancellazione.

Organizzazione della Memoria Un B-tree e’ un albero binario etichettato in cui per ogni nodo x, il suo sottoalbero sinistro contiene solo etichette minori di x e il sottoalbero destro solo etichette maggiori. 4 1 9 8 5 3 Ricerca  O(log(N)) Inserimento  O(log(n)) Cancellazione  O(log(n))

Organizzazione della Memoria Un B+-tree e’ un B-tree nel quale i nodi terminali sono linkati sequenzialmente. Blocchi Dati

Organizzazione della Memoria B-tree e B+ tree sono strutture dinamiche: Consentite operazioni di inserimento/aggiornamento/cancellazione di nodi. Rispetto al B-tree, il B+tree e’ piu’ efficiente per operazioni di selezione/ricerca su un range di valori. SELECT * FROM STUDENTI WHERE ((MATRICOLA>3) AND (MATRICOLA<10))

Organizzazione della Memoria I DBMS differiscono in base alle strutture dati utilizzate per memorizzare i dati. Quasi tutti i sistemi prevedono strutture ad albero (B-tree/B+-tree) ed hash. Generalmente, si usano strutture seriali (disordinate), ma con indici sulla chiave di una relazione.

Organizzazione della Memoria Creazione di un indice (da schema): CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX nome_indice ON nome_tabella(Lista_Attributi) CREATE UNIQUE INDEX IndiceStudente ON Studenti(Matricola) INDICI in MYSQL

Organizzazione della Memoria Creazione di un indice (con tabella): CREATE TABLE Studenti ( … INDEX(Matricola)); Rimozione di un indice DROP INDEX Nome_Indice ON Nome_Tabella DROP INDEX IndiceStudenti ON Studenti INDICI in MYSQL

Organizzazione della Memoria Progettazione fisica  Sebbene molti dettagli dell’organizzazione della memoria siano gia’ pre-impostati dal DBMS in uso (e non configurabili), il progettista del DB puo’: Selezionare le strutture fisiche piu’ adatte per il DB da implementare. In MySQL, i tipi di tabelle si chiamano STORAGE ENGINE: es. MyISAM, INNODB,…

Organizzazione della Memoria Progettazione fisica  Sebbene molti dettagli dell’organizzazione della memoria siano gia’ pre-impostati dal DBMS in uso (e non configurabili), il progettista del DB puo’: Creare indici secondari per ottimizzare l’esecuzione di query SQL specifiche. In questi casi, l’analisi dei costi (tavola operazioni/carico/etc) puo’ essere utile …