Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Corso di Complementi di Informatica Architettura di MS SQL Server Prof. Pasquale Basile [email protected] SQL Server Architecture Campi di Applicazione OLTP (online transaction processing) Migliaia di transazioni/secondo OLAP (online analytical processing) Analisi di grandi quantità di dati acquisiti precedentemente mediante OLTP 1 Scenari Applicativi Principali classi di applicazioni Applicazioni che trasmettono statement Transact-SQL all’engine. I risultati sono ritornati come result-set. Applicazioni Internet che inviano Transact-SQL o query XPath all’engine. Risultati ritornati come XML Supporto Applicativo API native Altre API OLE DB ODBC DB-Library (proprietaria di SQL-S) Embedded SQL Accesso XML (da un server IIS) Esecuzione di una URL che contiene una query XPath Utilizzo di ADO per eseguire una query XPath verso uno statement SQL con clausola FOR XML Utilizzo di OLE DB … in modalità simile alla precedente 2 Comunicazione con client Login Connessione Autenticazione Windows Nome di rete della macchina su cui risiede SQL-S Nome istanza (opz) Login ID Non c’è bisogno di specificare il login ID Utilizza una trusted connection Autenticazione SQL-Server Modalità di Autenticazione Windows Mista Usa l’una o l’altra automaticamente a seconda se si passa il login ID Componenti 3 Componenti Replicazione Consente di mantenere diverse copie dei dati in siti diversi, per migliorare la sicurezza e le prestazioni, garantendone la Data Transformation Services Consentono, tra l’altro, di prelevare dati da una sorgente, effettuando anche elaborazioni complesse, e memorizzarle in un’altra sorgente Copia di database Net-Libraries [Client e Server] “schermano” i componenti OLE DB, ODBC e DB-Lib di SQL Server dai dettagli delle comunicazioni con altri componenti IPC. NetBEUI TCP/IP Named Pipes AppleTalk … Client Network Configuration Componenti Server MSSQLServer Service (il database engine) SQLServer Agent Service Search Service MS DTS Service Service Manager Consente di gestire (anche separatamente) i servizi 4 Il servizio SQL-Agent Supporta lo scheduling di attività o notifiche di problemi Componenti: Jobs Alerts Operators Il servizio “Search” Indicizzazione Full-Text Crea i cataloghi full-text e i relativi indici. Processa le richieste relative alla gestione dei cataloghi stessi. Motore di ricerca Frasi o parole Parole ravvicinate Verbi o aggettivi declinati Distributed Transaction Coordinator Consente di includere in una singola transazione client differenti sorgenti di dati. Chiamate di stored procedure in server remoti Esecuzione di aggiornamenti distribuiti per l'aggiornamento di dati in più origini dati OLE DB 5 Funzionalità - 1 Supporto integrato XML I risultati di statement sql possono essere restituiti come documenti XML tramite OLE-DB e ADO I documenti XML possono essere aggiunti ai database Istruzione OPENXML (esporre i dati di un documento XML come result set relazionale) Scalabilità e Affidabilità Stesso server su diverse piattaforme Condivisione dello stesso ambiente di sviluppo e programmazione Supporto per terabyte-Database Impiego di parallelismo Parallelismo intra-query Ottimizzatore di Query in grado di fare uso di ottimizzazioni precedenti Funzionalità - 2 Funzionalità Enterprise-Level Query distribuite Semplicità di installazione e amministrazione Data warehousing Componenti Engine di database relazionale Transact-SQL Supporto per ambienti diversi: Enterprise Æ CE Enterprise: supporto multiprocessore, gruppi di server, CE: utilizzabile in ambienti “mobili” Security integrata con il s.o. host Full Text Search Engine MS-SQL Analytical Services Sistema di analisi di dati organizzati in datawarehouse 6 Supporto Applicativo Supporto nativo per ADO, OLE DB, ODBC API utilizzabili per inviare statement SQL o XML all’engine. Supporto HTTP Supporto Amministrativo Query Analyzer. test e debugging Tools grafici (enterprise manager) API di amministrazione SQL-DMO (Distributed Management Objects) DSO (Decision Support Objects) correlato agli Analysis Services Altri Componenti Replication Data Transformation Services (DTS) Mantenere copie multiple dei dati su diversi server (fini: prestazioni, affidabilità) Costruzione di datawarehouse Migrazione tra engine e fonti di dati differenti English Query Meta Data Services Introduzione all’architettura 7 Tabular Data Stream Gli statement SQL sono trasmessi dai client tramite il protocollo proprietario TDS (Tabular Data Stream). Problemi di compatibilità su alcuni client I pacchetti TDS sono costruiti da OLE DB Provider per SQL Server ODBC Driver per SQL Server DB-Library DLL I TDS sono passati al client Net-Library che li incapsula in pacchetti di rete Il Net-library lato server estrae i pacchetti TDS e li passa al motore relazionale Il processo viene invertito quando si ritornano dati ai client Componenti del motore Relational Engine Storage Engine Esempio: SELECT RE compila lo statement RE usa OLE-DB per richiedere allo SE l’apertura dei rowset Durante l’esecuzione dei plans, RE usa OLEDB per il fetch delle righe dai rowset richiesti allo storage engine RE combina i dati provenienti dallo SE e li assembla in un result set per l’utente finale “Compiti” del Motore Relazionale Parsing statement SQL Anche suddivisione in piccole operazioni logiche Ottimizzare gli execution plans Eseguire le operazioni logiche definite negli execution plans Eseguire gli statement DDL Formattare i risultati Forma tabulare tradizionale Documento XML 8 Compiti dello “Storage Engine” Gestione fisica dei files in cui il database è memorizzato e organizzato Accesso alle pagine fisiche utilizzate per la memorizzazione dei dati Gestione dei buffer dati e di tutti gli I/O Logging & Recovery Implementazione delle funzioni di trasferimento dati (BACKUP, RESTORE, BulkCopy, etc…) Localizzazione Formato della data Definiti in Nomi di mesi e giorni Primo giorno della settimana master.dbo.syslanguages Collation (Regole di confronto) Supporto di oggetti con differenti regole in uno stesso database Regola: ordine per Unicode, ordine per non-Unicode, code-page Architettura del Query Processor Gli statement SQL sono gli unici comandi che un’applicazione manda a un SQL-Server. Principali processi per i quali è necessario l’esecuzione di uno statement SQL: Single Statement Processing Batch Processing Collezione di statement SQL multipli trasferiti come una singola unità dal client Stored Procedures, Trigger Execution Execution plan: caching and reuse Parallel Query Processing 9 Single SQL Statement Ottimizzazione di uno statement SELECT Execution Plan Sequenza di esecuzione Metodo di estrazione dei dati Query Optimizer Basato sui costi Overhead compensato dalla velocità di esecuzione della query Esecuzione di uno statement SELECT Parsing dello STATEMENT Creazione della struttura di query (sequenza logica) Query Optimizer Inizia l’esecuzione dell’execution plan Seleziona la migliore traiettoria Modifica la struttura di query e crea l’execution plan vengono richiesti i dati allo storage engine I dati, elaborati, vengono restituiti come resultset al client Qui un esempio di un execution tree [Pubs] select * from titleview [Northwind] select * from [Customer and Suppliers by City] select * from [Category Sales for 1997] select * from [Invoices] 10 Architettura di Memoria Gestione dinamica della memoria Gestione dinamica anche in caso di istanze multiple Enterprise Edition: AWE (Advanced Windows Extensions) 8 GB di memoria fisica su Advanced Server 64 GB di memoria fisica su Data Center Gestione Statica della Memoria Compromesso tra Minimizzare il paging I/O => concentrare le risorse di I/O per gli accessi ai files fisici Minimizzare l’I/O fisico ai database massimizzando la dimensione dei buffers di cache Consumi: 8-12 MB allo startup Allocazione fino a Fisica – [4 | 10]MB Opzioni di configurazione min server memory max server memory possono anche coincidere (eliminazione delle allocazioni e deallocazioni) Architettura Query Distribuite Metodi per fare riferimento a OLE DB Data Source eterogenee Linked Server Names Usa le SP: sp_addlinkedserver, sp_addlinkedserverlogin SELECT * FROM AltroServer.Database.Owner.dbOggetto Connettori Ad Hoc OPENROWSET e OPENDATASOURCE SELECT * FROM OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, ‘c:\db\database.mdb’;’Admin’;’’;tabella) 11 Architettura Query Distribuite SQL Server utilizza OLE DB per la comunicazione con lo storage engine SQL Server, in funzione di quanto restituito dall’OLE DB Provider in termini di grammatica supportata, cerca di delegare quante più possibili operazioni al provider stesso. Architettura Full Text Finalizzata alle ricerche su colonne di tipo stringa Indexing Support Creazione dei cataloghi full text Definizione delle tabelle e delle colonne soggette a full text search Gestione dei cataloghi (popolazione, …) Query Support Esecuzione delle query full text Ritornano l’identità della riga interessata e un valore di ranking. Queste informazioni vengono utilizzati per la costruzione del result-set Full Text Si basa sul servizio ‘Microsoft Search’ installato solo sulle versioni server dei S.O. I cataloghi e gli indici non sono memorizzati nel database, ma in file separati Vengono ignorati nei recovery, backup e restore Si possono soltanto ricostruire Funziona solo su Tabelle 12 Database Architecture Slides sull’architettura pratica …. E sulla fase applicativa (con esempi, possibilmente) 13