Basi di dati - INAF IASF BOLOGNAbulgarelli/AB/Basi_di_Dati_files/1.pdf · Andrea Bulgarelli 3 DBMS:...
Transcript of Basi di dati - INAF IASF BOLOGNAbulgarelli/AB/Basi_di_Dati_files/1.pdf · Andrea Bulgarelli 3 DBMS:...
Andrea Bulgarelli - Basi di Dati 1
Basi di dati
Docente: Andrea Bulgarelli [email protected] Argomento: presentazione corso (1.0)
Università di Modena e Reggio Emilia
2 Andrea Bulgarelli - Basi di Dati
Materiale didattico Web site:
www.andrea.bulgarelli.name/corso Bibliografia
Beneventano, Bergamaschi Guerra Vincini “Progetto di Basi di Dati Relazionali”,
SQLBOL (SQL Book On Line) link disponibile sul sito del corso
Dispense del corso
3 Andrea Bulgarelli
DBMS: generalità Un DBMS è un sistema software in grado di gestire grandi quantità di dati in
modo efficiente. Ad esempio, SQL Server un database può avere dimensioni da 1 MB a 1 TB (1.048.576 MB).
Le caratteristiche funzionali di un DBMS possono essere così riassunte: Supporto per almeno un modello dei dati Linguaggi di alto livello per la creazione, la manipolazione (inserimento,
modifica e cancellazione) e l’interrogazione dei dati e per il controllo del database. Da un punto di vista concettuale, i linguaggi di alto livello possono essere classificati in:
DDL Data Definition Language: linguaggio non procedurale che permette di definire e mantenere la struttura del database. Permette inoltre di specificare la connessione tra le strutture logiche e fisiche del database
DML Data Manipulation Language: o query language, consente l’interrogazione e la modifica dei dati del database
DCL Data Control Language: Gestione degli utenti e assegnazione dei privilegi di accesso
Gestione delle transazioni Controllo degli accessi (o protezione): Resilienza (fault tolerance): garantisce la massima disponibilità mediante le
funzioni di backup e manutenzione in linea, il ripristino automatico nel caso di malfunzionamenti e la possibilità di installare il DBMS in un cluster per il supporto del failover.
Presenza di diversi ambienti di sviluppo e utilità: interfacce di programmazione, Visual Basic, C++, ASP (per la programmazione Internet).
4 Andrea Bulgarelli
Transazioni Una transazione è l’unità fondamentale di lavoro
di un DBMS. Essa consiste in diversi comandi DML che leggono e aggiornano il database. Un DBMS deve gestire: Transazioni concorrenti: due transazioni si dicono
concorrenti se avvengono nello stesso istante di tempo.
Malfunzionamenti: Transaction abort: interruzione di una transazione. Non
comporta perdita dei dati. Causata da una situazione prevista dal programma
System abort: interruzione di transazioni attive derivanti da un’anomalia hardware o software. Si assume che il contenuto della memoria permanente sopravviva, mentre viene perduto il contenuto della memoria temporanea
System crash: anomalia che danneggia il contenuto della memoria permanente
5 Andrea Bulgarelli
L’aggiornamento non viene considerato definitivo fino a quando non viene inoltrato il COMMIT, che indica la fine della transazione. Si consideri il seguente esempio di un trasferimento bancario tra due conti, per comprendere meglio che cosa sia una transazione: BEGIN TRANSACTION Accredita 1 ML sul conto 2254/1 Addebita 1 ML sul conto 2378/1 COMMIT TRANSACTION
Transazioni (2)
6 Andrea Bulgarelli
che potrebbe anche essere eseguita nel seguente ordine: BEGIN TRANSACTION Addebita 1 ML sul conto 2378/1 Accredita 1 ML sul conto 2254/1 COMMIT TRANSACTION
Transazioni (3)
7 Andrea Bulgarelli
Transazione (4) L’elaborazione delle transazioni in un DBMS garantisce
che tutte le manipolazioni dei dati siano eseguite come unità di lavoro individuale, anche in presenza di malfunzionamenti.
Per raggiungere questo obiettivo le transazioni devono rispettare le proprietà ACID: Atomicità: una transazione è confermata o annullata senza
possibilità intermedie. Se una transazione è confermata, tutti i suoi effetti sono mantenuti;
Coerenza: questa proprietà fa in modo che le transazioni non consentano al database di raggiungere uno stato logico non corretto. In questo caso la regola logica è che il denaro non può essere né creato né distrutto;
Isolamento: l’isolamento separa le transazioni concorrenti da altre transazioni concorrenti.
Durabilità: Successivamente al commit di una transazione, la durabilità garantisce che gli effetti della transazione restino validi anche in caso di errori del sistema
9 Andrea Bulgarelli
Problemi di concorrenza Lost update problem
Uncommitted dependency problem
Inconsistency analysys problem: consiste nell’eseguire analisi sui dati durante la modifica di questi (si vedano i DSS, Decision Support System).
Read R
Andrea Bulgarelli 10 Andrea Bulgarelli
Principali servizi SQL Server
Motore DBMS relazionale: scalabilità, prestazioni
Analysis services: strumenti per analizzare i dati memorizzati per il supporto alle decisioni.
Andrea Bulgarelli 13 Andrea Bulgarelli
Architettura di protezione Autenticazione: determina se l’utente ha o
meno un account di accesso valido per connettersi a un’istanza di SQL Server: di Windows: sfrutta il sistema di protezione di
Windows di SQL Server: indipendenti da qualsiasi account
utente o gruppo Windows Autorizzazione: determina che attività l’utente
può svolgere dopo essere stato autenticato.
Andrea Bulgarelli 14 Andrea Bulgarelli
Autenticazione La modalità di default
è l’autenticazione Windows.
Andrea Bulgarelli 15 Andrea Bulgarelli
Autorizzazione Dopo che SQL Server 2000 ha autenticato un utente,
determina se tale ID di accesso è stato autorizzato a svolgere attività in un qualsiasi database.
Account utente: In generale, un amministratore di database deve associare un ID di accesso a un ID utente prima che qualcuno con quell’ID di accesso possa accedere agli oggetti e svolgere operazioni nel database in questione. Un amministratore di database applica i permessi di protezione per gli oggetti del database.
Andrea Bulgarelli 16 Andrea Bulgarelli
Autorizzazione (2) Account guest: Se un ID di accesso non è stato
esplicitamente associato con un qualsiasi ID utente in un database, esso viene associato all’ID dell’utente guest di quel database, se esiste. Se un database ha un account utente guest, l’accesso è limitato ai diritti che vengono conferiti all’utente guest. Se un database non ha un account utente guest, si può accedere al database solo se si dispone di un account utente valido. Di default, tutti i database utente appena creati non dispongono di un account utente guest.
Andrea Bulgarelli 17 Andrea Bulgarelli
Autorizzazione (3)
Ruoli: i ruoli sono usati per raccogliere gli utenti in una singola unità e poi attribuire a tutti gli stessi permessi. Ogni utente in un database appartiene al ruolo di database pubblico e fruisce di tutti i permessi assegnati al ruolo pubblico, a meno che non si sia deciso di negare a un determinato utente determinati permessi. I diritti aggiuntivi devono essere conferiti esplicitamente a un utente o a un gruppo di utenti a cui l’utente appartiene.
18 Andrea Bulgarelli
Database e file di database Un database SQL server …
È un insieme di molti oggetti (fino ad un massimo di 231-1) (di cui un massimo di 32767 database)
È proprietà di un singolo utente, ma può contenere oggetti di proprietà di altri utenti
Dispone di tabelle di sistema per catalogare le definizioni del database
Gestisce un proprio insieme di account utente e protezioni
Dispone di un log e gestisce le transazioni Può espandersi su più unità disco e macchine Ha dimensione minima di 1MB e massima
1.000.000MB
20 Andrea Bulgarelli
File di database
Un database SQL server consiste di tre tipi di file: MDF: file di dati primario che elenca tutti gli
elementi nel database ed i dati memorizzati NDF: file di dati secondario (può non essere
presente) LDF: file di log delle operazioni
21 Andrea Bulgarelli
Esempio (esecuzione da Query Analyzer)
CREATE DATABASE Sales_AB ON ( NAME = Sales_AB_dat, FILENAME = ‘C:\sqlserver\data\sales_AB_Dat.mdf', SIZE = 5, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON ( NAME = 'Sales_AB_log', FILENAME = ‘C:\sqlserver\data\sales_AB_Log.ldf', SIZE = 5MB, MAXSIZE = 25MB, FILEGROWTH = 5MB )
GO
22 Andrea Bulgarelli
Considerazioni per il design di un database
Nella progettazione di un database, per la realizzazione fisica del database bisogna tenere presente: Lo scopo del database Le regole di normalizzazione L’integrità dei dati La sicurezza del sistema e l’accesso ai dati Esigenze di performance La gestione e manutenzione del database Le dimensioni stimate della base dati
23 Andrea Bulgarelli
Modifica di un database La modifica di un database in genere
riguarda Il cambio del nome del database Aggiungere uno o più nuovi file o filegroup al
database Aggiungere uno o più nuovi file di log Rimuovere file o filegroup dal database Modificare un file esistente del database per
Aumentare il valore della proprietà SIZE Modificare le proprietà MAXSIZE o FILEGROWTH Modificare il nome del file (NEWNAME)
24 Andrea Bulgarelli
Formato ALTER DATABASE ALTER DATABASE database
{ ADD FILE <filespec> [,...n] [TO FILEGROUP filegroup_name] | ADD LOG FILE <filespec> [,...n] | REMOVE FILE logical_file_name | ADD FILEGROUP filegroup_name | REMOVE FILEGROUP filegroup_name | MODIFY FILE <filespec> | MODIFY FILEGROUP filegroup_name filegroup_property }
<filespec> ::= (NAME = logical_file_name [, FILENAME = 'os_file_name' ] [, SIZE = size] [, MAXSIZE = { max_size | UNLIMITED } ] [, FILEGROWTH = growth_increment] )
25 Andrea Bulgarelli
Esempio – Alter Database USE master GO CREATE DATABASE Test1 ON ( NAME = Test1dat1, FILENAME = 'c:\mssql\data\t1dat1.mdf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) GO
ALTER DATABASE Test1 ADD FILE ( NAME = Test1dat2, FILENAME = 'c:\mssql\data\t1dat2.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB ) GO