500 likes | 645 Views
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. Fasi della p rogettazione. Risultati. SCHEMA CONCETTUALE.
E N D
Basi di Dati e SistemiInformativi Struttura di un DBMS: OrganizzazionedellaMemoria Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/
Organizzazione della Memoria Studio/analisideirequisiti Fasidellaprogettazione Risultati SCHEMA CONCETTUALE Progettazioneconcettuale SCHEMA LOGICO Progettazionelogica SCHEMA FISICO Progettazionefisica
Organizzazione della Memoria ANALISI REQUISITI PROGETTAZIONE CONCETTUALE Cosasirappresenta Come losirappresenta ? PROGETTAZIONE LOGICA • Dove memorizzarele tabelle? • Qualistrutturedatiusare?
OrganizzazionedellaMemoria GERARCHIE DI MEMORIA MemoriaPrimaria MemoriaSecondaria • Volatile • Accessocasuale • Persistente • Accessodiretto
OrganizzazionedellaMemoria Per garantire lapersistenzadeidati, un DMBS devememorizzareidatisumemoriasecondaria. • Suddivisa in blocchi(unita’ minima di allocazione). • Latenza di accesso = • Latenza di posizionamento + • Latenza di rotazione + • Latenza di trasferimento • Principio di localita’ deidatiper ridurre la latenzad’accesso.
OrganizzazionedellaMemoria Le tuple di unarelazione (record) sonogeneralmente di dimensioneinferiorealladimensione di un blocco. { Tupladimensionefissapari a L Fattore di blocco= B/L DimensionebloccoB (numero di record per blocco)
OrganizzazionedellaMemoria Per l’accesso e la memorizzazionesumemoria secondaria, i DMBS utilizzano le funzionalita’ offerte dal sistemaoperativo (file-system). API del FILE SYSTEM FileDescriptor* open(String) close(FileDescriptor*) byte[] read(FileDescriptor*) write(FileDescriptor*, byte[]) FILE SYSTEM UNIX
OrganizzazionedellaMemoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazionedeidatiall’internodeiblocchi di memoriasecondariaallocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE • Strutturaseriale (disordinata). • Strutturasequenziale. • Struttura con accessocalcolato (hash).
OrganizzazionedellaMemoria Strutturaseriale le tuple sipresentanonel file nell’ordine con cui sonoinseritenel DB. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE 0100110110000001111000001110 11011110000001
OrganizzazionedellaMemoria Strutturaseriale le tuple sipresentanonel file nell’ordine con cui sonoinseritenel DB. • Inserimentodati O(1) • Ricercadati O(N) • Aggiornamentodati O(N) • Cancellazionedati O(N) 0100110110000001111000001110 11011110000001 11011110000001 11011110000001 FRAMMENTAZIONE INTERNA N=numero di tuple nel file
OrganizzazionedellaMemoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazionedeidatiall’internodeiblocchi di memoriasecondariaallocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE • Strutturaseriale (disordinata). • Strutturasequenziale. • Struttura con accessocalcolato (hash).
OrganizzazionedellaMemoria Strutturasequenziali le tuple sonomemorizzate secondo l’ordine di uno o piu’ attributidello schema relazionale. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE 0100110110000001111000001110 0100110110000011011110000001 01111000001110
OrganizzazionedellaMemoria Le strutturesequenzialifacilitano le operazioni SQL di ordinamento/raggruppamento/ricercasugliattributisu cui e’ definitol’ordinamento. • SELECT * FROM StudentiORDER BY Nome • SELECT * FROM StudentiWHERE (Nome=“Sara”) • SELECT Nome FROM StudentiGROUP BY Nome Q. Complessita’ algoritmicadellaricercadicotomica?
OrganizzazionedellaMemoria Le strutturesequenzialisonopiu’ complesse da gestire in caso di operazioni di aggiornamento/cancellazione/inserimento. • In questicasi, e’ necessarioprocedere a periodicheriorganizzazionidellastruttura. • Per questomotivo, le strutturesequenzialisonospessousate in associazione con indici ISAM (Index Sequential Access Method)
OrganizzazionedellaMemoria Per motivi di efficienza, ogni DBMS gestisce l’organizzazionedeidatiall’internodeiblocchi di memoriasecondariaallocati dal SO. CATEGORIE DI ORGANIZZAZIONE DEI FILE • Strutturaseriale (disordinata). • Strutturasequenziale. • Struttura con accessocalcolato(hash).
OrganizzazionedellaMemoria Struttura hash Si utilizzaunafunzione (hash) per determinareilblocco in cui e’ memorizzatounatupla, a partire dal valore di un suoattributo (in genere, la chiave). • K: valoredellachiavedellatupla. • f(K): numero di bloccoin cui e’ contenuta la tupla con valoredellachiavepari a K. • Com’e’ fattaf(K)? Funzioneiniettiva (casoideale)
OrganizzazionedellaMemoria Esempio di STRUTTURE HASH B: Numero di blocchi f(29)=2 <29, Marco, Rossi> 0 1 2 <68, Simone, Bianchi> f(68)=5 3 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 f: I [0,B[ Es. f(Matricola)=Matricola % B
OrganizzazionedellaMemoria Esempio di STRUTTURE HASH B: Numero di blocchi f(29)=2 <29, Marco, Rossi> 0 1 2 <68, Simone, Bianchi> f(68)=5 3 4 5 6 7 8 <71, Sara, Verdi> f(71)=8 VantaggioStrutture Hash buona parte delleoperazionisulle tuple checoinvolgono la chiavepossonoessereeseguite in tempo costante …
OrganizzazionedellaMemoria Esempio di STRUTTURE HASH B: Numero di blocchi f(29)=2 <29, Marco, Rossi> 0 1 2 <68, Simone, Bianchi> f(68)=5 3 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I [0,B[ Es. f(Matricola)=Matricola % B COLLISIONE!
OrganizzazionedellaMemoria Poiche’ la dimensionedellatupla (L) e’ in genereinferiorealladimensione del blocco (B), in caso di collisione: • Si memorizza la tuplasequenzialmentenelblocco, • fino ad esaurire lo spaziodisponibile. • Max Collisioni= Fattore di blocco=B/L • In caso non vi siapiu’ spazionelblocco, viene • allocato un nuovoblocco e vienecollegato a quello • precedente (catena di overflow)
OrganizzazionedellaMemoria Esempio di STRUTTURE HASH B: Numero di blocchi f(29)=2 <29, Marco, Rossi> 0 1 2 <68, Simone, Bianchi> f(68)=5 3 4 5 6 7 8 <14, Sara, Verdi> f(71)=5 f: I [0,B[ Es. f(Matricola)=Matricola % B
OrganizzazionedellaMemoria PROBLEMI STRUTTURE HASH • Numero di blocchicostituisce un trade-off • Se troppo piccolo rispetto al DB frequenti • collisioni (con catene di overflow, etc). • Se troppogranderispetto al DB fattore di • riempimentodeiblocchi molto basso. • Gestionedinamicita’ del sistema?
OrganizzazionedellaMemoria PROBLEMI STRUTTURE HASH • Struttura Hash NONefficiente per operazioni • di selezionesu un range di valori: • SELECT * • FROM STUDENTI • WHERE (MATRICOLA>10) AND (MATRICOLA<100) • Struttura Hash NONefficiente per operazioni • checoinvolgonoattributi NON chiave.
OrganizzazionedellaMemoria Indice strutturachecontieneinformazioni sullaposizione di memorizzazionedelle 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
OrganizzazionedellaMemoria Indice strutturachecontieneinformazioni sullaposizione di memorizzazionedelle tuple sulla base del valore del campo chiave. Q. A che serve l’indice in un DB? Consentireaccesso diretto (sulla chiave) efficiente, sia puntuale sia per intervalli, quindi ottimizzare l’esecuzioni di query SQL che si basano sulla chiave dell’indice.
OrganizzazionedellaMemoria • Indice strutturachecontieneinformazioni • sullaposizione di memorizzazionedelle tuple • sulla base del valore del campo chiave. • Chiaveindice (spesso) ==Chiaverelazione. • Gliindicipossonoessere di due tipi: • Indicisecondari. • Indiciprimari.
OrganizzazionedellaMemoria Le tuple dellarelazionesonocontenutenel file F. Un indicesecondarioe’ un file (diverso da F) contenente un insieme di coppie: <valore_chiave, offset_tupla_in_F> FILE INDICE FILE F 29 Marco Rossi 14 Sara Verdi 68 Simone Bianchi
OrganizzazionedellaMemoria • Un indicesecondariopuo’essereutilizzatosustruttureseriali(disordinate). • Un indicesecondariodeveconteneretutteivaloridellachiave.(indicedenso).
OrganizzazionedellaMemoria • Indice strutturachecontieneinformazioni • sullaposizione di memorizzazionedelle tuple • sulla base del valore del campo chiave. • La chiavedell’indice e’ (spesso) anche la chiave • dellarelazione. Due tipi di indice: • Indicisecondari. • Indiciprimari.
OrganizzazionedellaMemoria Un indiceprimario: (i) contiene al suointernoi datioppure (ii) e’ realizzatosu un file ordinato sullostesso campo dellachiavedell’indice. • Puo’ esseresparso: non tutte le chiavidellarelazionedevonocomparirenell’indice per consentire le operazioni di ricerca.
OrganizzazionedellaMemoria La realizzazione di indiciavvienetipicamente attraversol’utilizzo di strutturead albero multi-livello.
OrganizzazionedellaMemoria Struttura di un nodoNON-foglia P0 K1 P1 … Ki Pi … KF PF Sottoalberochecontiene le chiavi K<K1 Sottoalberochecontiene le chiavi Ki<=K<Ki+1 Sottoalberochecontiene le chiavi K>KF • Ciascunnodo NON-fogliacontieneFvalori di • chiaveedF+1puntatori (fan-out dell’albero)
OrganizzazionedellaMemoria Struttura di un nodofoglia CASO1. Il nodofogliadell’alberocontiene le tuple: P0 12 P1 16 P2 … 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> Index-Sequential Structure
OrganizzazionedellaMemoria Struttura di un nodofoglia CASO2. Il nodofogliacontiene un puntatore al blocco: P0 12 P1 16 P2 … 50 PF <14, Sara, Verdi> <15, Michele, Bianchi> 0 1 2 3 4 5
OrganizzazionedellaMemoria • Due tipologie di indici ad albero: • Indicistatici La struttura ad alberovienecreatasulla base deidatipresentinel DB, e non piu’ modificata(o modificataperiodicamente). • Indicidinamici La struttura ad alberovieneaggiornata ad ognioperazionesulla base di datidi inserimento/cancellazione.
OrganizzazionedellaMemoria Indexed Sequential Access Method (ISAM) F=gradomedio Pagine NONterminali Npagineterminali
OrganizzazionedellaMemoria CostodelleoperazionisuAlberi ISAM: • Ricerca: partiredallaradice, confrontare le chiavi per arrivareallepagineterminali O(logFN). • Inserimento: trovare la paginaterminaledellachiaveedinserire la tupla. Nelcaso di paginapiena, allocareunapagina di overlow e linkarlaallaprecedente. O(logFN). • Cancellazione: trovare la paginaterminale e cancellare la tuplacorrispondente. O(logFN).
OrganizzazionedellaMemoria InserimentosuISAM 4 (SENZA overflow) F=gradomedio Pagine NONterminali 4 Npagineterminali
OrganizzazionedellaMemoria InserimentosuISAM 5 (CON overflow) F=gradomedio Pagine NONterminali 4 Npagineterminali 5
OrganizzazionedellaMemoria CancellazionesuISAM 5 F=gradomedio Pagine NONterminali 4 Npagineterminali 5
OrganizzazionedellaMemoria • ISAM: vantaggi • Le operazioni di inserimento/cancellazioneNON modificano la strutturadell’albero. • ISAM: svantaggi • In presenza di sistemi molto dinamici, le prestazionidell’indicepeggiorano al cresceredellecatene di overflow. • Necessariori-crearel’indicecon unacertaperiodicita’.
OrganizzazionedellaMemoria • Due tipologie di indici ad albero: • Indicistatici La struttura ad alberovienecreatasulla base deidatipresentinel DB, e non piu’ modificata(o modificataperiodicamente) • Indicidinamici La struttura ad alberovieneaggiornata ad ognioperazionesulla base di datidi inserimento/cancellazione.
4 1 8 3 5 9 OrganizzazionedellaMemoria 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. • Ricerca O(log(N)) • Inserimento O(log(n)) • Cancellazione O(log(n)) 0
OrganizzazionedellaMemoria Un B+-tree e’ un B-tree nel quale i nodi terminali sono linkati sequenzialmente. Blocchi Dati
OrganizzazionedellaMemoria • B-tree e B+ tree sonostrutturedinamiche: • Consentiteoperazioni di inserimento/aggiornamento/cancellazione di nodi. • Rispetto al B-tree, ilB+tree e’ piu’ efficienteper operazionidi selezione/ricercasu un range di valori. • SELECT * FROM STUDENTI WHERE ((MATRICOLA>3) AND (MATRICOLA<10))
OrganizzazionedellaMemoria • I DBMS differiscono in base allestrutturedati • utilizzate per memorizzareidati. • Quasi tuttiisistemiprevedonostrutture ad albero (B-tree/B+-tree) ed hash. • Generalmente, siusanostruttureseriali(disordinate), ma con indicisullachiave di unarelazione.
OrganizzazionedellaMemoria • Creazione di un indice(da schema): • CREATE [UNIQUE|FULLTEXT|SPATIAL] • INDEXnome_indice ON nome_tabella(Lista_Attributi) • CREATE UNIQUE INDEX IndiceStudenteONStudenti(Matricola) INDICI in MYSQL
OrganizzazionedellaMemoria • Creazione di un indice(con tabella): • CREATE TABLE Studenti ( • … • INDEX(Matricola)); • Rimozionedi un indice • DROP INDEX Nome_IndiceONNome_Tabella • DROP INDEX IndiceStudentiON Studenti INDICI in MYSQL
OrganizzazionedellaMemoria • ProgettazionefisicaSebbenemoltidettagli • dell’organizzazionedellamemoriasianogia’ • pre-impostati dal DBMS in uso(e non • configurabili), ilprogettista del DB puo’: • Selezionare le strutturefisichepiu’ adatte • per il DB da implementare. • In MySQL, i tipi di tabellesichiamano • STORAGE ENGINE: es.MyISAM, INNODB,…
OrganizzazionedellaMemoria • ProgettazionefisicaSebbenemoltidettagli • dell’organizzazionedellamemoriasianogia’ • pre-impostati dal DBMS in uso(e non • configurabili), ilprogettista del DB puo’: • Creareindicisecondariper ottimizzare • l’esecuzione di query SQL specifiche. • In questicasi, l’analisideicosti (tavola • operazioni/carico/etc) puo’ essere utile …