1 / 50

Basi di Dati e Sistemi Informativi

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.

iorwen
Download Presentation

Basi di Dati e Sistemi Informativi

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Basi di Dati e SistemiInformativi Struttura di un DBMS: OrganizzazionedellaMemoria Home page del corso: http://www.cs.unibo.it/~difelice/dbsi/

  2. Organizzazione della Memoria Studio/analisideirequisiti Fasidellaprogettazione Risultati SCHEMA CONCETTUALE Progettazioneconcettuale SCHEMA LOGICO Progettazionelogica SCHEMA FISICO Progettazionefisica

  3. Organizzazione della Memoria ANALISI REQUISITI PROGETTAZIONE CONCETTUALE Cosasirappresenta Come losirappresenta ? PROGETTAZIONE LOGICA • Dove memorizzarele tabelle? • Qualistrutturedatiusare?

  4. OrganizzazionedellaMemoria GERARCHIE DI MEMORIA MemoriaPrimaria MemoriaSecondaria • Volatile • Accessocasuale • Persistente • Accessodiretto

  5. 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.

  6. 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)

  7. 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

  8. 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).

  9. OrganizzazionedellaMemoria Strutturaseriale le tuple sipresentanonel file nell’ordine con cui sonoinseritenel DB. INSERT INTO DB VALUES (“013”,”Sara”, “Verdi”) DB FILE 0100110110000001111000001110 11011110000001

  10. 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

  11. 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).

  12. 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

  13. 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?

  14. 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)

  15. 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).

  16. 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)

  17. 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

  18. 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 …

  19. 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!

  20. 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)

  21. 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

  22. 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?

  23. 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.

  24. 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

  25. 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.

  26. OrganizzazionedellaMemoria • Indice strutturachecontieneinformazioni • sullaposizione di memorizzazionedelle tuple • sulla base del valore del campo chiave. • Chiaveindice (spesso) ==Chiaverelazione. • Gliindicipossonoessere di due tipi: • Indicisecondari. • Indiciprimari.

  27. 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

  28. OrganizzazionedellaMemoria • Un indicesecondariopuo’essereutilizzatosustruttureseriali(disordinate). • Un indicesecondariodeveconteneretutteivaloridellachiave.(indicedenso).

  29. 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.

  30. 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.

  31. OrganizzazionedellaMemoria La realizzazione di indiciavvienetipicamente attraversol’utilizzo di strutturead albero multi-livello.

  32. 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)

  33. 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

  34. 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

  35. 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.

  36. OrganizzazionedellaMemoria Indexed Sequential Access Method (ISAM) F=gradomedio Pagine NONterminali Npagineterminali

  37. 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).

  38. OrganizzazionedellaMemoria InserimentosuISAM 4 (SENZA overflow) F=gradomedio Pagine NONterminali 4 Npagineterminali

  39. OrganizzazionedellaMemoria InserimentosuISAM 5 (CON overflow) F=gradomedio Pagine NONterminali 4 Npagineterminali 5

  40. OrganizzazionedellaMemoria CancellazionesuISAM 5 F=gradomedio Pagine NONterminali 4 Npagineterminali 5

  41. 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’.

  42. 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.

  43. 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

  44. OrganizzazionedellaMemoria Un B+-tree e’ un B-tree nel quale i nodi terminali sono linkati sequenzialmente. Blocchi Dati

  45. 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))

  46. 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.

  47. 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

  48. 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

  49. OrganizzazionedellaMemoria • ProgettazionefisicaSebbenemoltidettagli • 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,…

  50. OrganizzazionedellaMemoria • ProgettazionefisicaSebbenemoltidettagli • 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 …

More Related