◊ Con riferimento alla parte di definizione dei dati si distinguono i ruoli necessari per una corretta amministrazione di una base di dati (DBA: Data Base Administrator) : Architettura dei RDBMS • Architettura ANSI/X3/SPARC ◊ Alla fine degli anni 80 il gruppo di studio ANSI/X3/SPARC propose un'architettura di riferimento per i sistemi di gestione di basi di dati. ◊ L'architettura funzionale distingue tre livelli di organizzazione con riferimento ai compiti di amministrazione di una base di dati e altrettanti livelli di funzionalità di manipolazione dei dati. ◊ L'architettura si divide in due parti con riferimento al dizionario dei dati : parte descrittiva dei dati e parte orientata alla manipolazione dei dati. ◊ I ruoli sono indicati da esagoni in figura, mentre i rettangoli indicano moduli funzionali detti processori nella terminologia ANSI. 1 3 6 INTERNAL SCHEMA PROCESSOR CONCEPTUAL SCHEMA PROCESSOR 3 DATA definisce lo schema concettuale attraverso l'interfaccia 1; lo schema concettuale viene compilato dal conceptual schema processor e viene memorizzato nel data dictionary, che contiene tutti gli schemi e le regole di corrispondenza. ♦ Application Administrator : definisce schemi esterni attraverso un linguaggio di descrizione (interfaccia 2); per definire le regole di corrispondenza tra uno schema esterno e schema concettuale può consultare lo schema concettuale attraverso l'interfaccia 3. Gli schemi esterni prodotti, insieme alle regole di corrispondenza, vengono forniti, tramite l'interfaccia 4, all'external schema processor che li compila e li memorizza nel data dictionary. ♦ System Administrator : ◊ Le varie interfacce per la definizione dei dati ai vari livelli sono anche note con il nome di DDL (Data Description Language); più precisamente si distinguono: APPLICATION ADMINISTRATOR 4 2 7 Enterprise Administrator : definisce lo schema interno e le regole di corrispondenza con lo schema concettuale; a tale scopo usa un linguaggio descrittivo (interfaccia 6). Lo schema interno prodotto viene compilato dall'internal schema processor e memorizzato nel data dictionary. ENTERPRISE ADMINISTRATOR DATABASE ADMINISTRATOR ♦ EXTERNAL SCHEMA PROCESSOR 5 DICTIONARY ♦ conceptual DDL source format ♦ conceptual DDL compiled format ♦ conceptual DDL report format ♦ external DDL source format ♦ external DDL compiled format ♦ internal DDL source format ♦ internal DDL compiled format 14 INT ERNAL STORAGE TRANSFORMER 11 10 CONCEPTUAL INT ERNAL TRANSFORMER EXTERNAL CONCEPTUAL TRANSFORMER 9 12 STORAGE SUBSYSTEM APPLICATION 8 8 13 SECONDARY MEMORY PROGRAMMER END USER ANSI/X3/SPARC functional architecture BASI DI DATI Architettura p a g .1 BASI DI DATI Architettura p a g .2 ◊ • Architettura di IBM DB2 Con riferimento alla manipolazione dei dati si distinguono: ♦ Application Programmer : produce il software applicativo ◊ L'architettura di DB2 è derivata da quella di System R. ◊ A grandi linee DB2 è costituito da tre principali componenti : ♦ ♦ Application End User: usa software applicativo ♦ ◊ Le richieste al DBMS si manifestano all'interno di programmi applicativi o vengono introdotte direttamente in interattivo. In ogni caso, dopo una fase di parsing, esse devono essere ricevute da un external-conceptual transformer (interfaccia 9). Si può concepire una pluralità di processori, ad esempio uno per ogni schema esterno. La trasformazione è bidirezionale e il data dictionary funge da deposito di consultazione per le corrispondenze (interfaccia 14). ◊ Il conceptual-internal transformer riceve richieste dai processori suddetti e le mappa sullo schema interno. Anche in questo caso è necessario risolvere il problema opposto. Il data dictionary viene consultato attraverso l'interfaccia 14. ♦ system services operazioni di sistema, comunicazioni all'operatore, logging locking services controllo e gestione degli accessi concorrenti database services definizione, ricerca, aggiornamento dei dati ◊ Le prime due componenti sono per lo più trasparenti per l'utente finale e per il programmatore di applicazioni. ◊ Ad ogni componente é assegnata una macchina virtuale ovvero uno spazio di indirizzi separato di MVS (sistema operativo Multiple Virtual Systems). CICS ◊ IMS/DC IMS/DB TSO L'internal-storage transformer riceve richieste riguardanti lo schema interno e le soddisfa accedendo alla memoria secondaria. Normalmente viene realizzato appoggiandosi al file system. ◊ Le varie interfacce per la manipolazione dei dati ai vari livelli sono per lo più DML (Data Manipulation Language); più precisamente si distinguono: ♦ external DML source format ♦ external DML compiled format ♦ conceptual DML source format ♦ internal DML compiled format Database Services User Data Catalog System Services Operator Active Logs BSDS Directory ♦ storage subsystem language compiled ♦ secondary storage interface ♦ data dictionary access interface BASI DI DATI Locking Services (IRLM) Architettura Archive Logs format Struttura di DB2 p a g .3 BASI DI DATI Architettura p a g .4 ◊ ◊ System Services ♦ Controllo connessioni con altri sottosistemi di MVS (CICS, IMS/DC, IMS/DB, TSO). ♦ Gestione operazioni di system startup, shutdown e comunicazioni per l'operatore. ♦ Gestione log di sistema a cui viene dedicato un insieme predefinito di disk data sets. Il sottosistema RDS realizza l'interfaccia relazionale a livello esterno, provvedendo a fornire primitive di definizione, controllo, ricerca e manipolazione dei dati. I compiti principali svolti sono: ♦analisi sintattica e semantica ♦controlli di autorizzazione ♦verifica di vincoli di integrità ♦gestione del catalogo ♦ottimizzazione degli accessi ♦generazione del codice ♦ Quando un active log data set viene riempito, DB2 ne attiva uno nuovo e copia il vecchio su un archive log data set su disco o su nastro. In caso di riempimento di tutti gli active log data set , essi vengono riciclati a partire dal primo. (Per maggiore sicurezza può essere mantenuta una copia di tutti gli active data set e degli archive log data set). ♦ ♦ Le informazioni relative ai log data set sono memorizzate nel BSDS (Boot Strap Data Set). ◊ Uno degli scopi principali di DB2 è consentire l'elaborazione di due differenti categorie di transazioni : ♦ SQL stand alone statements eseguiti una volta sola isolatamente Estrazione di statistiche circa le prestazioni del sistema e gli accessi. Queste informazioni vengono collezionate con l'Instrumentation Facility di DB2 e possono essere presentate sotto forma di report facendo uso di DB2PM (performance monitor di DB2). ◊ Locking Services ♦ Questi servizi vengono resi a cura del sottosistema IRLM (IMS Resource Lock Manager). Nonostante la presenza del termine IMS, questo modulo non ha nulla a che fare con il gestore IMS, poichè di fatto viene invocato da DB2 per il controllo degli accessi concorrenti al database indipendentemente dalla presenza di IMS nel sistema. ◊ Database Services A questo modulo sono demandati i compiti relativi alla definizione, reperimento e aggiornamento dei dati. È costituito da due sottosistemi che insieme sovraintendono alla preparazione di un'applicazione e alla sua successiva esecuzione, così organizzati : ♦ Bind ♦ Runtime Supervisor BASI DI DATI Data Manager ♦ Buffer Manager Architettura Precompiler Il precompilatore è un preprocessore per applicazioni scritte in un linguaggio ospite (PL/I, COBOL,...) che includono statement SQL. Il precompilatore analizza il modulo sorgente e sostituisce gli statement SQL con chiamate nel linguaggio ospite al Runtime Supervisor. Per ogni statement SQL il precompilatore genera un DBRM : Database Request Module, che chiama in causa l'ottimizzatore per la produzione di un piano di accesso. Dopo la precompilazione e la susseguente compilazione di un programma in linguaggio ospite esteso con primitive relazionali, viene generato un modulo di accesso, cioè un codice eseguibile su RSS. Per contro una transazione ad hoc viene ottimizzata al tempo di esecuzione e il suo corrispondente modulo di accesso viene generato dinamicamente. Dal punto di vista del carico di lavoro l'esecuzione di un canned program non include, una volta installato, operazioni di compilazione, ottimizzazione e generazione di codice. ♦ ◊ Bind La funzione del componente Bind è quella di compilare uno o più DBRM per produrre un piano di accesso ottimizzato, che contiene chiamate al Data Manager. Il piano di accesso contiene un insieme di strutture interne di controllo che rappresentano la forma compilata degli statement SQL, evidenziando le modalità di esecuzione delle interrogazioni al database e in particolare le strutture di accesso ai dati scelte. RSS (Research Storage System) ♦ ♦ ◊ ◊ RDS (Relational Data System) Precompiler canned programs eseguiti più di una volta e corrispondenti ad applicazioni di una certa complessità ◊ ♦ ♦ ♦ p a g .5 BASI DI DATI Architettura p a g .6 ♦ ◊ Runtime Supervisor Il Runtime Supervisor è residente in memoria principale e sovraintende all'esecuzione di una applicazione. Per ogni richiesta di accesso, il supervisore usa le informazioni contenute nel piano di accesso e invoca il relativo servizio offerto dal Data Manager. Source Module ◊ Il sottosistema RSS realizza un'interfaccia con il sottosistema di gestione dei file, ovvero fornisce primitive per l'accesso ai singoli record nelle tabelle. Rende inoltre disponibile operatori per il recovery, la gestione della concorrenza, etc. All'interno di RSS un buffer di pagine agisce come memoria di appoggio conservando le pagine dati usate più recentemente. Le funzioni principali svolte sono: Modified Source Module ♦gestione della memoria di lavoro ed esterna ♦gestione di indici e links per l'accesso ai dati ♦controllo della concorrenza ♦logging e recovery ♦ Data Manager: Questo componente interagisce con il database a livello fisico e mette a disposizione sofisticati metodi di accesso, locking, logging e recovery. ♦ Buffer Manager: È responsabile della gestione dei trasferimenti tra memoria di massa e memoria principale (virtuale). Si prefigge lo scopo di minimizzare il traffico di I/O attraverso il ricorso a tecniche di read-ahead buffering e look-aside buffering. ♦ System tables DBRM Compiler Bind Object Module Application Plan Linkage Editor (Load Module) ◊ (Application Plan) Il componente preposto ai servizi database si occupa anche di gestire una serie di tabelle di sistema che memorizzano informazioni e statistiche sulle relazioni, sulle strutture di accesso, sulle operazioni di backup, etc. Load Module Runtime Supervisor Data Manager ◊ DB Buffer Manager Le tabelle di sistema sono organizzate in un system catalog e in una directory. Mentre il catalog è accessibile al DBA tramite interrogazioni SQL, la directory è solo per uso interno di DB2. ♦ Precompiler (Other) Main Storage Utilities sono servizi accessori quali ad esempio: ♦caricamento di relazioni ♦riorganizzazione ♦backup completo o incrementale ♦recovery ♦statistiche sulle relazioni e sugli indici BASI DI DATI Architettura DB2 application preparation and execution p a g .7 BASI DI DATI Architettura p a g .8 ◊ Il DBRM prodotto dal precompilatore per un programma P contiene copia degli statement SQL e altre informazioni aggiuntive, e costituirà input per il Bind. ◊ Il Bind svolge essenzialmente funzioni di syntax checking (necessarie anche se effettuate già dal precompiler in quanto quest'ultimo può essere stato attivato senza la disponibilità di DB2) e di optimization (scelta del migliore piano di accesso ai dati per l'esecuzione dell'interrogazione SQL). PL/I Source Module P Decoupled from Rest of System EXEC SQL SELECT INTO FROM WHERE - CITY :XCIT SUPP S#='S4'; DBRMs - Source Listing - Diagnostics - Cross-Reference etc. Precompiler CALL Language-interface - - Modified PL/I Source Module P - Listing - Diagnostics etc Member of Partitioned Data Set Bind Catalog + Directory DBRM for P (SQL Statements, etc. - Parsing Syntax Checking - Optimization (Access Path Selection) - Plan Generation - Authorization Checking Application Plan Built and Stored in Directory Bind Precompilation BASI DI DATI Architettura p a g .9 BASI DI DATI Architettura p a g .1 0 ◊ L'ottimizzatore sceglie una fra le possibili strategie per l'esecuzione di un'interrogazione sulla base di considerazioni che riguardano: ◊ Un programma PL/I è stato suddiviso in un load module e in un application plan. Il load module viene caricato in memoria ed eseguito. Quando si incontra una chiamata al language interface module il runtime supervisor cerca il piano di accesso e se ancora valido lo carica in memoria e gli passa il controllo. ♦quali e quante relazioni sono coinvolte ♦la cardinalità delle relazioni PL/I Load Module P CALL Language Interface - ♦il numero e il tipo di indici disponibili ♦la selettività degli indici Language Interface Module ♦la disposizione dei record nelle pagine dati ♦la forma della clausola where Runtime Supervisor ♦ .... On First Call Fetch Plan ◊ Il piano generato dall'ottimizzatore dipende dunque dalla situazione corrente del database; pertanto può succedere, in caso di canned programs che sono stati preottimizzati , che all'atto dell'esecuzione non esistano più le condizioni che hanno portato l'ottimizzatore a scegliere il particolare piano d'accesso. In questo caso a run time viene riattivato il bind visto che gli originali statement SQL sono sempre disponibili in modo da produrre un nuovo piano. Catalog + Directory Application Plan (for P) Data Manager Databases Execution time BASI DI DATI Architettura p a g .1 1 BASI DI DATI Architettura p a g .1 2