Archivi e basi di dati Vito Perrone Corso di Informatica A per Gestionali
Memorie di massa
Indice Memorie di massa Organizzazione degli archivi e basi di dati Basi di dati relazionali
Introduzione Memoria di tipo persistente Obiettivi: Un dato è persistente se è mantenuto integralmente quando il calcolatore viene spento oppure si verifica un errore Obiettivi: Memorizzare in modo compatto grandi quantità di dati Accesso efficientemente e selettivo ai dati Possiamo classificare i dispositivi di memoria di massa in: Dispositivi ad accesso sequenziale (nastri) Dispositivi ad accesso diretto (dischi) Tipicamente, sono basati su tecnologia magnetica La tecnologia ottica è sempre più diffusa (per i dischi)
Nastri (1) Accesso sequenziale Sul nastro magnetico sono incise delle piste orizzontali, parallele fra loro I dati vengono registrati serialmente su ogni traccia Il nastro scorre al di sopra della testina di lettura/scrittura Ai dati sono aggiunti alcuni bit di controllo per consentire il rilevamento di errori (es. bit di parità) Bit 1 2 3 4 5 6 7 8 Bit di parità
Nastri (2) I dati sono organizzati sul nastro in zone contigue, dette record Sono previste zone prove di dati (gap) tra i record e all’inizio Parametri principali: Densità di memorizzazione: è misurata in bit per inch (bpi) Capacità di memorizzazione = densità lunghezza (in pollici) Velocità di movimento del nastro Alcuni nastri hanno le tracce poste diagonalmente e sono letti da testine rotanti (scansione elicoidale) I nastri sono attualmente impiegati solo per il backup
Dischi (1) Accesso diretto Disk-pack: un certo numero di piatti coperti da uno strato magnetico Ciascun piatto ha una serie di cerchi concentrici (tracce) su entrambi i lati Le tracce sono suddivise in spicchi di ugual grandezza (settori) Le testine di lettura/scrittura si spostano (tutte insieme) radialmente tra le varie tracce
Dischi (2) L’inizio e la fine dei settori sono marcati con sequenze particolari di bit (formattazione) Blocco di ingresso/uscita: gruppo di dati che vengono letti o scritti con un’unica operazione di ingresso/uscita Ciascun blocco è individuato dalla terna: (num. superficie, num. traccia, num. settore) Una zona di memoria (il buffer) contiene i dati prima che vengano scritti su disco o dopo essere stati letti da disco
Dischi (3) Accesso ai dati: Quindi: ti/u = tseek + tlat + ttrasf Spostamento della testina verso la traccia richiesta (tempo di seek) Attesa del passaggio del settore richiesto (tempo di latenza) Mediamente, pari a metà del tempo di rotazione Trasferimento dei dati da/verso il buffer (tempo di trasferimento) Quindi: ti/u = tseek + tlat + ttrasf Cilindro: l’insieme delle tracce, appartenenti a tutte le superfici, poste alla stessa distanza dal centro
Altre memoria di massa Floppy disk: magnetico Dischi ottici CD-ROM CD-R/RW DVD Chiavi USB: memorie a stato solido Flash EPROM
Organizzazione degli archivi e basi di dati
Organizzazione degli archivi Le informazioni vengono organizzate in memoria in record logici Blocchi di ingresso/uscita e record logici: In un medesimo blocco di ingresso/uscita può trovare posto un certo numero di record logici Esistono record logici così grandi da occupare più blocchi di ingresso/uscita L’accesso ad un record logico comporta il trasferimento di uno o più blocchi di ingresso/uscita Coefficiente di riempimento di un file: numero di byte allocati a record logici nel file numero di byte dei blocchi fisici allocati al file
Basi di dati Base di dati (o database): insieme i dati, raccolti in base a precise regole, e organizzati in strutture piuttosto rigide DBMS: sistema software che organizza e gestisce basi di dati Opera al di sopra del sistema operativo Offre linguaggi specifici per l’organizzazione e la gestione dei dati Offre meccanismi efficienti per l’accesso ai dati
Basi di dati e archivi separati (1) Dati gestiti basandosi sui file Più applicazioni accedono ai file Problemi: Inconsistenza e ridondanza dei dati Riservatezza dei dati Integrità dei dati Concorrenza Progr. 1 Progr. 2 Progr. 3 File File modificati
Basi di dati e archivi separati (2) Dati gestiti da un DBMS Vantaggi: I dati hanno una sola rappresentazione L’accesso alla base di dati viene disciplinato dal DBMS Alcuni vincoli di integrità possono essere definiti e verificati in modo automatico Progr. 1 DBMS Base di dati
Modelli per la gestione dei dati Modello dei dati: Gerarchico: basato su strutture ad albero Reticolare: basato su strutture a grafo Relazionale: basato sul concetto di insieme e sulla strutturazione dei dati tramite tabelle Ad oggetti: estende alle basi di dati alcune caratteristiche dei linguaggi di programmazione orientati agli oggetti Schema di una base di dati: descrizione dei dati di uno specifico contesto applicativo Definita tramite un attività detta database design Istanza (od occorrenza) di una base di dati: valore assunto dalla base di dati in un particolare istante di tempo
Categorie di linguaggi Data Definition Language (DDL): Utilizzato per definire lo schema della base di dati Lo schema viene salvato nel dizionario dei dati Data Manipulation Language (DML): Per formulare interrogazioni (o query) sulla base di dati Per modificare il contenuto della base di dati Nel seguito vedremo il linguaggio SQL (che supporta entrambi questi aspetti)
Livelli di astrazione Livelli di astrazione: Livelli di indipendenza: Fisico: descrive la base di dati come un insieme di record in memoria di massa Logico: descrive la struttura di ciascun dato e i collegamenti tra dati diversi Esterno: presenta i dati così come vengono visti da un particolare utente o da una classe di utenti Livelli di indipendenza: Fisica: ridefinire il livello fisico senza modificare il livello logico Logica: definire nuovi schemi esterni senza modifica la struttura logica Descrizione esterna 1 Descrizione esterna 2 Descrizione esterna n Descrizione logica Descrizione interna Utente 1 Utente 2 Utente 3 Utente 4 Utente n Archivi
Transazioni Transazioni: non lasciano mai la base di dati in uno stato inconsistente Proprietà “acide” delle transazioni: Atomicità: vi sono solo due possibili terminazioni Successo: tutte le attività della transazione sono andate a buon fine, la base di dati è aggiornata (commit) Fallimento: qualche attività della transazione non va a buon fine, la transazione fallisce tutta, la base di dati non viene modificata (rollback) Consistenza: i vincoli di integrità dei dati non sono mai violati Isolamento: transazioni concorrenti sono isolate le une dalle altre Durabilità: una volta completata con successo, l’effetto della transazione sulla base di dati è permanente
Utenti di una base di dati Data Base Administrator (DBA): Definizione degli schemi esterni, logico e fisico Definizione dei vincoli di integrità e dei requisiti di riservatezza Per questi compiti, il DBA utilizza il DDL Terminalista: Interagisce con un’applicazione che a sua volta si interfaccerà con la base di dati Programmatore: Scrive le applicazioni e le rende disponibili agli utenti Utilizza il DML per interfacciare applicazione e base di dati Utente occasionale: Formula query non previste dalle applicazioni, usando il DML
Basi di dati relazionali
Base di dati relazionale Relazione, una tabella caratterizzata da: Un numero fisso di colonne (dette attributi); ciascuna colonna assume valori estratti da uno stesso dominio Un numero variabile di righe (dette tuple) Grado di una relazione: il numero di colonne Cardinalità di una relazione: il numero di righe Schema di una relazione: il nome della relazione seguito dai nomi dei suoi attributi; a ciascun attributo è associato un dominio Istanza di una relazione: insieme delle tuple presenti nella base di dati in un determinato istante (quindi, varia nel tempo) Base di dati relazionale, un insieme di relazioni: Schema di una base di dati: l’elenco delle relazioni Istanza di una base di dati: insieme delle istanze delle relazioni
Esempio: schema dase di dati Relation CONTO-CORRENTE (NUMERO-CC: integer, NOME: char (20), INDIRIZZO: char (20), SALDO: decimal (14, 2)). Relation MOVIMENTO (NUMERO-CC:integer, DATA-MOV: date, NUMERO-MOV: integer, IMPORTO: decimal (14, 2), CAUSALE: char (1)).
Esempio: istanza base di dati CONTO-CORRENTE NUMERO-CC NOME INDIRIZZO SALDO 1 Rossi v. Anemoni 5 3,678.00 2 Bianchi v. Bolla 64 664.00 3 Brunelli v. Po 41 6,777.50 4 Grandi v. Romolo 3 3,400.00 MOVIMENTO NUMERO-CC DATA-MOV NUMERO-MOV IMPORTO CAUSALE 1 14-01-03 +200.00 V 2 -500.00 P 27-01-03 +2,700.00 S 4 +1,850.40 3 25-01-03 -650.00 A
Restrizione e chiave Restrizione: di una tupla t sugli attributi A di R, indicata con t[A], è data dalla lista dei valori assunti da t sugli attributi A di R Chiave di una relazione R: un sottoinsieme K degli attributi di R, tale che valgano: Unicità: in una qualunque istanza di R, non possono esistere due tuple distinte di R la cui restrizione su K sia uguale Minimalità: non è possibile sottrarre a K un attributo senza che la condizione di unicità cessi di valere Ogni relazione deve avere almeno una chiave Se la relazione ha più chiavi, una di esse sarà la chiave primaria CONTO-CORRENTE (NUMERO-CC; NOME, INDIRIZZO, SALDO) MOVIMENTO (NUMERO-CC, DATA-MOV, NUMERO-MOV, IMPORTO, CAUSALE)
Il linguaggio SQL E’ presente in tutti i DBMS relazionali Standard ANSI e ISO Mette a disposizione sia un DDL, sia un DML DDL: permette di creare lo schema della base di darti CREATE TABLE: crea una relazione a livello logico CREATE INDEX: crea indici per una certa relazione; gli indici permettono di accedere ai dati con maggiore efficienza DROP TABLE: cancella una relazione DROP INDEX: cancella un indice DML: permette di scrivere le query Basato sull’algebra relazionale Operatori: selezione, proiezione, join, unione e differenza
Il linguaggio SQL: select L’istruzione che permette di formulare le query Sintassi: SELECT nomi di attributi FROM nomi di relazioni WHERE condizioni di ricerca sui dati Le tre clausole individuano rispettivamente: gli attributi da includere nel risultato; le relazioni da cui estrarre i dati; la condizione di ricerca. Questa condizione può essere assai complessa e coinvolgere nel suo interno altri blocchi SQL
Le applicazioni SQL non è adatto agli utenti finali delle basi di dati Si realizzano applicazioni che permettono un’interazione semplice e schematica L’informazione scambiata con l’utente durante l’esecuzione di un’applicazione è mostrata in una maschera (o form) Esistono strumenti software per la gestione delle maschere che permettono al programmatore di: Definire le maschere Associare ogni maschera l’operazione da eseguire sulla base di dati L’utente finale interagisce con le maschere e non vede né l’SQL, né lo schema della base di dati
Maschere: definizione
Maschere: uso
Rapporti (o report) Ulteriore modo per estrarre informazioni dalla base di dati Caratteristiche tipiche: Destinati alla stampa o ad essere visualizzati in pagine Web Contengono grandi quantità di dati Generati periodicamente, senza interazioni con l’utente Esistono strumenti software per la definizione dei rapporti (generatori di report)
Altri linguaggi Linguaggi di quarta generazione Consentono di realizzare applicazioni specificandole a un alto livello Il progettista usa tali linguaggi interagendo con loro tramite interfacce a menu e maschere