Introduzione all Architettura del DBMS Data Base Management System (DBMS) Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo sicuro per lunghi periodi di tempo. Un DBMS fornisce agli utenti questi servizi: Persistent storage: come un file system, un DBMS permette la memorizzazione di grandi quantità di dati, ma garantisce una flessibilità molto più elevata Programming interface: permette agli utenti di accedere e modificare i dati attraverso un potente linguaggio di interrogazione Transaction management: supporta l accesso concorrente ai dati evitandone le conseguenze indesiderate 2
DBMS: Architettura Consideriamo due diversi tipi di utenti utenti convenzionali/applicazioni che modificano dati e formulano interrogazioni l amministratore della base di dati (database administrator DBA) responsabile per la struttura, lo schema e la gestione della base di dati Notazione: rettangoli denotano componenti software, rettangoli spessi denotano strutture dati in memoria, linee continue rappresentano flusso dei dati e controllo, e le linee tratteggiate indicano solo il flusso dei dati 3 DBMS: Architettura Query\update Utente/Applicazione Query Compiler Query plan Execution Engine richieste di indici, record e file Index/file/record comandi su pagine Buffer Lettura/scrittura pagine Storage metadati, statistiche metadati, indici, statistiche transazioni Transaction Logging/ Recovery Buffers pagine di log Amministratore Comandi DDL Concurrency control Lock Table DDL Compiler metadati dischi 4
Data Definition Language (DDL): Comandi I comandi DDL relativi alla definizione degli schemi dei dati e alla gestione del DBMS sono i più semplici da gestire Inizialmente sono analizzati dal DDL compiler, che li passa al Execution engine, che passando attraverso il Resource manager (Index/File/Record), modifica i metadati, ossia le informazioni sugli schemi del DB contenuti nel catalogo I comandi DDL di modifica dello schema (alter/drop) hanno un effetto molto pesante sul DB 5 Comandi di Query La maggior parte delle interazioni con il DBMS sono di questo tipo: operazioni che non modificano lo schema del database ma ne alterano il contenuto o semplicemente ne leggono i dati Questi comandi attivano due sottosistemi distinti del DBMS: - Query Processing - Transaction Processing 6
Query Processing Il Query Compiler fa il parsing e ottimizza la query. Il risultante query plan viene passato al Execution Engine, che crea una sequenza di richieste di dati (tipicamente record) al Resource (Index/File/record), che sa dove sono i dati (file) e come recuperarli velocemente (indici). Le richieste di dati vengono tradotte in richieste di pagine ed inoltrate al Buffer, che ha il compito di trasportare in memoria principale le pagine rilevanti (per la risposta alla query) dallo... Storage, che ha il compito di gestire i dati memorizzati nelle pagine dei... Dischi, che immagazzinano stabilmente tutti i dati 7 Transaction Processing Una query e altre azioni vengono raggruppate in una transazione che deve: - essere eseguita atomicamente - essere isolata dalle altre - modificare in modo permanente e consistente il DB Tale comportamento è assicurato da: - Concurrency Control : garantisce atomicità e isolamento - Logging/Recovery : garantisce durabilità e consistenza 8
Le proprietà ACID delle Transazioni Le proprietà di cui godono le transazioni sono comunemente chiamate ACID: - Atomicity: la transazione viene eseguita completamente o non viene eseguita affatto - Consistency: le transazioni devono conservare la consistenza dei dati nel database - Isolation: l effetto di una transazione eseguita in ambiente concorrente deve essere lo stesso della medesima transazione eseguita singolarmente - Durability: l effetto di una transazione sul database non deve mai essere perso, neppure in presenza di crash 9 Log Per assicurare la persistenza dei dati del database anche in caso di crash, ogni modifica al database viene registrata separatamente sul disco Il log manager registra queste modifiche per consentire in qualsiasi momento (in seguito ad un crash) al recovery manager di ripristinare il database in uno stato consistente Anche il log manager scrive i suoi dati attraverso il Buffer ma prima di continuare si assicura che siano stati effettivamente scritti sul disco. 10
ConcurrencyControl Le transazioni devono essere eseguite in isolamento le une dalle altre ma spesso molte transazioni vengono eseguite concorrentemente nello stesso sistema Il concurrency control manager si assicura che le singole azioni delle varie transazioni vengano eseguite in un ordine tale da non interferire le une con le altre Tipicamente questo risultato viene ottenuto attraverso la gestione di lock memorizzati nella lock table Il concurrency control manager ha anche il compito di risolvere i deadlock causati dai lock facendo abortire una o più transazioni 11 Buffer I dati sono in memoria secondaria (dischi magnetici) Per eseguire operazioni sui dati questi devono essere in memoria principale (RAM) A tale proposito una componente del DBMS chiamata Buffer si occupa di gestire il movimento dei dati tra i due tipi di memoria organizzando la memoria principale in pagine che corrispondono ai blocchi dei dischi magnetici I dati gestiti dal buffer manager sono di vari tipi: Data: il contenuto del database Metadata: lo schema dei dati Statistics: informazioni sul funzionamento del database Indexes: strutture dati di supporto per l accesso veloce ai dati 12
Query Processor Questo è il componente del DBMS che maggiormente influisce sulle performance del sistema. Il query processor è composto da due componenti: - Query Compiler: trasforma le query in un formato interno chiamato query plan. È composto da tre unità funzionali: Il query parser analizza la query e crea l albero di parsing Il query preprocessor effettua i controlli semantici e crea il query plan Il query optimizer ottimizza il query plan per migliorare le prestazioni - Execution Engine: esegue le istruzioni presenti nel query plan 13 Componenti dell architettura Esamineremo le varie componenti e discuteremo le loro relazioni. Più precisamente: Dischi e file Storage manager Buffer manager Index/file/record manager Execution engine Query compiler Concurreny control Logging/recovery Transaction manager 14