La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso:

Presentazioni simili


Presentazione sul tema: "Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso:"— Transcript della presentazione:

1 Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso:

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

3 ANALISI REQUISITI Tabella2Tabella1TabellaN PROGETTAZIONE CONCETTUALE PROGETTAZIONE LOGICA Cosa si rappresenta Come lo si rappresenta Dove memorizzare le tabelle ? Quali strutture dati usare?

4 Organizzazione della Memoria Memoria Primaria Memoria Secondaria Volatile Accesso casuale Persistente Accesso diretto

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

6 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 { Dimensione blocco B Fattore di blocco = B/L ( numero di record per blocco )

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

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

9 Struttura seriale le tuple si presentano nel file nellordine con cui sono inserite nel DB. Organizzazione della Memoria MatricolaNomeCognome 012MarcoRossi 013SimoneBianchi 014SaraVerdi DB FILE MatricolaNomeCognome 012MarcoRossi 013SimoneBianchi INSERT INTO DB VALUES (013,Sara, Verdi)

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

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

12 Struttura sequenziali le tuple sono memorizzate secondo lordine di uno o piu attributi dello schema relazionale. Organizzazione della Memoria MatricolaNomeCognome 012MarcoRossi 014SaraVerdi 013SimoneBianchi DB FILE MatricolaNomeCognome 012MarcoRossi 013SimoneBianchi INSERT INTO DB VALUES (013,Sara, Verdi)

13 Le strutture sequenziali facilitano le operazioni SQL di ordinamento/raggruppamento/ricerca sugli attributi su cui e definito lordinamento. Organizzazione della Memoria 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 ?

14 Le strutture sequenziali sono piu complesse da gestire in caso di operazioni di aggiornamento/cancellazione/inserimento. Organizzazione della Memoria 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)

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

16 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). Organizzazione della Memoria K : valore della chiave della tupla. f(K) : numero di blocco in cui e contenuta la tupla con valore della chiave pari a K. Come fatta f(K) ? Funzione iniettiva ( caso ideale )

17 Organizzazione della Memoria Esempio di STRUTTURE HASH f: I [0,B[ B: Numero di blocchi

18 Organizzazione della Memoria Esempio di STRUTTURE HASH Vantaggio Strutture Hash buona parte delle operazioni sulle tuple che coinvolgono la chiave possono essere eseguite in tempo costante … B: Numero di blocchi

19 Organizzazione della Memoria Esempio di STRUTTURE HASH f: I [0,B[ B: Numero di blocchi COLLISIONE!

20 Poiche la dimensione della tupla (L) e in genere inferiore alla dimensione del blocco (B), in caso di collisione : Organizzazione della Memoria 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 )

21 Organizzazione della Memoria Esempio di STRUTTURE HASH f: I [0,B[ B: Numero di blocchi

22 PROBLEMI STRUTTURE HASH Organizzazione della Memoria 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?

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

24 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

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

26 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

27 Le tuple della relazione sono contenute nel file F. Un indice secondario e un file (diverso da F) contenente un insieme di coppie: 29 Marco Rossi 14 Sara Verdi 68 Simone Bianchi FILE F Valore ChiavePosizione FILE INDICE Organizzazione della Memoria

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

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

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

31 La realizzazione di indici avviene tipicamente attraverso lutilizzo di strutture ad albero multi-livello. Organizzazione della Memoria

32 Struttura di un nodo NON-foglia P0P0 K1K1 P1P1 … KiKi PiPi … KFKF PFPF Sottoalbero che contiene le chiavi KK F Ciascun nodo NON-foglia contiene F valori di chiave ed F+1 puntatori ( fan-out dellalbero) Organizzazione della Memoria

33 Struttura di un nodo foglia CASO1. Il nodo foglia dellalbero contiene le tuple: P0P0 12P1P1 16P2P2 … 50PFPF Index-Sequential Structure Organizzazione della Memoria

34 Struttura di un nodo foglia CASO2. Il nodo foglia contiene un puntatore al blocco: P0P0 12P1P1 16P2P2 … 50PFPF Organizzazione della Memoria

35 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

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

37 Ricerca : partire dalla radice, confrontare le chiavi per arrivare alle pagine terminali O(log F N). 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(log F N). Cancellazione : trovare la pagina terminale e cancellare la tupla corrispondente. O(log F N). Costo delle operazioni su Alberi ISAM: Organizzazione della Memoria

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

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

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

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

42 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

43 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)) Organizzazione della Memoria

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

45 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

46 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

47 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

48 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

49 Progettazione fisica Sebbene molti dettagli dellorganizzazione 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

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


Scaricare ppt "Basi di Dati e Sistemi Informativi Struttura di un DBMS: Organizzazione della Memoria Home page del corso:"

Presentazioni simili


Annunci Google