Parole chiave : Remote DBA Experts | Remote DBA Services | Remote Database Administrator | Remote DBA | Remote DBA Oracle | Database Administrator | On Call Services | IL RUOLO DEL REMOTE DBA : APPUNTI SULLA TEORIA DELLE BASI DI DATI | INTRODUZIONE AI SISTEMI INFORMATIVI| Stefano Fantin | F-O-O-D- : Fast Object Oriented Development
Parole descrittive : Migliaia di persone nel mondo lavorano in molte aziende di database e svolgono il lavoro di database administrator, solo STEFANO FANTIN è l’arte e la scienza dei database Oracle, Postgresql, Microsoft SQL Server. F-O-O-D- di Stefano Fantin realizza e progetta database relazionali e nosql con big data. Offriamo servizi di alta qualità per il lavoro di REMOTE DBA | REMOTE DBA ORACLE | REMOTE DBA POSTGRESQL | REMOTE DBA Microsoft SQL SERVER | IL RUOLO DEL REMOTE DBA : APPUNTI SULLA TEORIA DELLE BASI DI DATI | INTRODUZIONE AI SISTEMI INFORMATIVI | Stefano Fantin.

Remote DBA
F-O-O-D- è attiva per il servizio di Remote DBA a livello internazionale in quanto è presente su Internet in oltre 50 nazioni, offrendo servizi di Remote DBA su standard americano ma designati da Italiani.
F-O-O-D offre il servizio di Remote DBA, quindi remote database administrator, sopratutto in Italia sia nelle principali città italiane quali Milano, Roma, Torino, Bergamo e Brescia ma anche nei piccoli comuni italiani.
Remote DBA Oracle
F-O-O-D ha studi tecnici come Remote DBA Oracle:
– Remote DBA Oracle 8i : webDB, outline, DBMS_REPAIR, logMiner, DROP column, LMT, TRIM function, MERGE partitions, HASH and COMPOSITE partitions
– Remote DBA Oracle 9i : fast-start time-based recovery limit, Flashback Query, Resumable Space Allocation, Trial Recovery, Data Guard, online index rebuild,  Online table redefinitions,SPFILE, External Tables, ASSM, Oracle RAC, OMF
– Remote DBA Oracle 10g : Data Pump, AWR, ASH, ADDM, SQL Tuning Advisor, Oracle scheduler, Segment Shrink, Segment Advisor, BFT, Flash Recovery Area
– Remote DBA Oracle 11g : DNFS, Online Patching, ASM Fast Mirror Resync, md_backup, md_restore, AWR baseline template, File Watcher, AMM, INCREMENTAL and PENDING statistics, Interval Partitioning
– Remote DBA Database Oracle 12c : multitenant Container DataBase, CDB, PDB, ADO, Heat MAp, PGA Size Limit, DBMS_QOPATCH, Automatic Big Table Caching, In- Memory (IM) Column Store
Consulenza database Oracle:
– performance tuning : miglioramenti delle performance del database Oracle, elasticità:futura riduzione del rischio di basse performance,
scalabilità verticale o scalabilità orizzontale per progetti big data con database Oracle
– analisi database e design database
– backup DBA
– sicurezza del database Oracle : analisi delle vulnerabilità, conformità dei report di auditing
– monitoring database Oracle
Oracle Features Implementation:
– ASM (Automatic Storage Management)
– RMAN (Recovery Manager)
– TDE (Transparent Data Encryption)
– SPM (Sql Plan Management)
– Online Redefinition
– Partitioning
– Compression
– Resource Manager
– Flashback
– Streams
– Real Application Testing
– Gateway
– Advanced Security
– Secure Backup
Remote DBA Postgresql
Il Ceo Stefano Fantin ha studiato il codice sorgente del DBMS Postgresql dalla versione 8 di Postgresql fino a Postgresql 9.5, è uscita la versione di Postgresql 9.6 .
REMOTE DBA POSTGRESQL:
Remote DBA Postgresql 8.0 : PITR, Tablespace, Windows Support, Savepoints
Remote DBA Postgresql 8.1  : Table partioning, Bitmap scans, Two-Phase commits, autovacuum
Remote DBA Postgresql 8.2 : Warm Standby, SQL 2003, Concurrent Index Builds, Gin indexes
Remote DBA Postgresql 8.3 : Hot updates, Asynchronous commit, XML, Fulltext search, Distribuited checkpoints
Remote DBA Postgresql 8.4 : Windows functions, CTEs, Database collations, Per-Column permission
Remote DBA Postgresql 9.0 : Hot Standby, Streaming Replication, Column Triggers, Conditional Triggers, hstore
Remote DBA Postgresql 9.1  : Synchronous Replication, Writable CTEs, Extension, Foreign Data Wrappers, Unlogged tables, Serialisable Snapshot Isolation, Column collations
Remote DBA Postgresql 9.2 : Cascading Replication, Index-Only scans, pg_stat_statements, Json, Ranges
Remote DBA Postgresql 9.3 : Writable Foreign Data Wrappers, Materialised Views, JSON functions and operators, LATERAL
Remote DBA Postgresql 9.4 : Logical replication, Replication slots, JSONB –> GIN (Generalized Inverted Index), scalability : Logical Decoding
Remote DBA Postgresql 9.5 : UPSERT, Row-level security, functionality for Big Data: BRIN index, algorithm called “keys abbreviated”,CUBE, ROLLUP, and GROUPING SET, TABLESAMPLE, Foreign Data Wrappers (FDW)
Remote DBA Postgresql 9.6 : Scalabilità verticale tramite query parallele, Scalabilità orizzontale tramite replica sincrona e ‘postgres_fdw’, Miglior ricerca testuale con le frasi. Parallel Query : Parallel sequential scans, parallel joins, parallel aggregates.
Transactions, VACUUM and the Visibility Map : pg_visibility extension for examining visibility maps, Frozen page data in visibility map for skipping vacuum on already-frozen data, User-defined expiration of snapshots to control table bloat. Performance and Monitoring :
Detailed wait information in pg_stat_activity, Index-only scans for partial indexes, Performance improvements for external sort operations. System Views and Administration : New system view pg_config, pg_blocking_pids, Functions pg_get_* to return NULL on invalid
objects, pg_notification_queue_usage to look at notify queue. Backups : pg_basebackup extended with replication slots, New API for hot physical backups. Other Features: Command progress reporting, Generic WAL facility, Trigonometric functions in degrees.

F-O-O-D con il il proprio servizio qualificato di Remote DBA offre amministrazione e manutenzione dei database quali Oracle e Postgresql, offre quindi : troubleshooting, ottimizzazione del database e performance scalability, ma sopratutto un attento monitoraggio del database in modo proattivo.
F-O-O-D ha i propri collaborativi attivi per il remote DBA sia in orario diurno che in orario notturno, quindi :
monitoraggio remoto per database gestiti 24/7
monitoraggio remoto per database gestiti in orario diurno (remote DBA diurno)
monitoraggio remoto per database gestiti in orario notturno (remote DBA notturno)
F-O-O-D offre sessioni di training in aula e training on-the-job, ma sopratutto offre consulenza sia On-Site che consulenza da Remoto.
F-O-O-D è molto attiva nel cloud e ha la propria soluzione di cloud DBA in quanto le aziende delocalizzano i propri dati tramite appunto il cloud ma serve integrazione dei dati tramite personale qualificato come quello di F-O-O-D.
Siccome c’è la globalizzazione il servizio di remote DBA è possibile richiederlo pur avendo attività nelle maggiori città americane quindi Remote DBA New York city, Los Angeles, Chicago, Houston, Filadelfia, Phoenix, San Antonio, San Diego, Dallas, San Jose, Indianapolis, San Francisco, Detroit, ElPaso, Seattle, Boston, Washington, Sacramento, Atlanta, Raleigh. Mi piacerebbe conoscere Remote DBA di New York city, Los Angeles, Chicago, Houston, Filadelfia, Phoenix, San Antonio, San Diego, Dallas, San Jose, Indianapolis, San Francisco, Detroit, ElPaso, Seattle, Boston, Washington, Sacramento, Atlanta, Raleigh e confrontare le mie idee sul lavoro di Remote DBA di queste città americane dove ricordo che gli americani hanno ottime aziende e un ottimo know how quindi faccio i complimenti ai lavoratori delle precedenti città perchè è difficile competere in America e bisogna essere molto bravi.
Mi piacerebbe prendere l’aereo e partecipare a meetup nelle città americane per Remote DBA. Mi piacerebbe lavorare come Remote DBA delle principali città del Canada sono molto bravi infatti hanno oltre un adeguato stipendio anche la possibilità di essere un tuttuno con i clienti del Canada cioè Remote DBA Toronto, Montréal, Calgary, Ottawa, Edomonton, Missisauga, Winnipeg, Vancouver.
Attualmente ci sono diversi tipi di database dal classico modello E/R cioè entità relazioni a quello NoSQL con partizionamento orizzontale al posto che verticale ma penso che remote DBA London, Glasgow, Sheffield, Liverpool, Manchester, Bristol, Leeds, Birmingham.

IL RUOLO DEL REMOTE DBA : APPUNTI SULLA TEORIA DELLE BASI DI DATI

INTRODUZIONE AI SISTEMI INFORMATIVI:

ORGANIZZAZIONE,  RISORSE E PROCESSI.

Oltre alle nozioni tradizionali di struttura di un’azienda, ovvero di suddivisione dell’organizzazione in differenti unità organizzative alle quali sono attribuiti compiti ed obiettivi specifici e che cooperano attraverso legami di tipo gerarchico e funzionale, due concetti sono utili nel descrivere un’organizzazione: le risorse e i processi.

Una risorsa è tutto ciò con cui l’azienda opera, sia materiale che immateriale, per perseguire i suoi obiettivi. Sono risorse i prodotti o i servizi offerti da un’azienda, i materiali utilizzati, gli immobili, ma sono risorse anche il denaro e le persone utilizzate per produrre. Le risorse si suddividono in:
– Risorse interne, ovvero risorse sulle quali l’organizzazione agisce direttamente;
Un processo è l’insieme delle attività (sequenze di decisioni e azioni) che l’organizzazione nel suo complesso svolge per  gestire il ciclo di vita di una risorsa o di un gruppo omogeneo di risorse.
Un processo è caratterizzato principalmente da  un:
Prodotto (il “risultato definito e misurabile”  che, trasferendo  valore  al cliente, rappresenta il vero obiettivo dell’organizzazione);
Insieme · di  attività  interrelate  (il  flusso  operativo  del  processo,   con  le  sue
attività e le loro relazioni);

EVOLUZIONE DEI SISTEMI INFORMATICI DA SETTORIALI AD INTEGRATI

La prima fase di sviluppo delle applicazioni informatiche ha riguardato l’automazione delle attività di raccolta, archiviazione e reperimento dei dati di natura operativa.

La caratteristica principale dei sistemi informatici di questo tipo è la ripetitività e la precisa definizione delle operazioni da compiere;

Vantaggi:

quantità delle operazioni elementari eseguite con efficienza.

L’ottica nella quale questi sistemi vengono sviluppati è prettamente settoriale, ovvero i processi vengono automatizzati all’interno di un settore e di un’attività aziendale, senza tener conto degli altri settori e attività.

Vantaggi:

Il lavoro impiegatizio di  produzione e  verifica  di  documenti  è  risultato estremamente alleggerito e standardizzato.
I costi dei sistemi informatici operativi sono relativamente bassi, sia rispetto al loro procedimento di progettazione e realizzazione che rispetto agli oneri di gestione;
Non  comportano  processi  profondi  di  ristrutturazione  aziendale  né  generano problemi  di conflittualità  interne rispetto  all’organizzazione  preesistente.

La seconda fase di sviluppo dei sistemi informatici è caratterizzata dall’integrazione fra le applicazioni operative e dal coinvolgimento nell’automazione dei  processi informativi di livello gestionale e direzionale. I sistemi informatici integrati sono orientati ai dati: gli archivi non sono ridondanti e la gestione delle informazioni è centralizzata.

Vantaggi:

l’automazione delle attività di tipo operativo;
diventa un supporto alle attività di tipo gestionale e direzionale, perché i
processi di questo livellò necessitano di dati intersettoriali.

TIPOLOGIE DI DATI

L’evoluzione dei sistemi informatici assegna un ruolo sempre più rilevante ai dati, come fattore d’integrazione fra le varie procedure aziendali.
Le diverse tipologie di dati che intervengono in un sistema informatico sono classificate così:
Dati settoriali e dati aziendali : I dati settoriali sono i dati che vengono generati ed utilizzati unicamente all’interno di un settore, i dati aziendali quelli condivisi da più settori.
Dati personali e dati condivisi : Un dato è personale se la sua definizione nasce da un utente che ne cura per intero tutte le fasi di vita (immissione, modifica, cancellazione, salvataggio) e ne è l’unico responsabile
Dati di analisi e dati di sintesi : Un dato è derivato o di sintesi, se esiste un procedimento di calcolo che permette di ottenere il suo valore a partire da altri dati, altrimenti è un dato elementare o di analisi
Dati interni e dati esterni : Un dato può essere classificato come dato interno se la sua esistenza dipende dall’azienda e cessa quindi di esistere con essa; un dato è esterno se, anche se l’azienda può influire sul suo valore, esiste indipendentemente  da essa.

NB. I processi gestionali e direzionali utilizzano sia dati interni che dati esterni, mentre quelli operativi hanno raramente bisogno di accedere a fonti esterne all’azienda.

I processi gestionali e direzionali utilizzano molti dati di sintesi e pochi dati analitici, mentre la situazione opposta si verifica per quelli operativi.

Gli utenti dei processi gestionali e direzionali utilizzano frequentemente dati personali,mentre in genere l’utente di quelli operativi non ne ha bisogno.

I processi gestionali e direzionali, infine, utilizzano molti dati aziendali, mentre i dati intersettoriali sono meno utilizzati dai processi operativi.

ARCHITETTURE INFORMATICHE DEI SISTEMI INFORMATIVI La  più  semplice:  Stand  alone  + unica base  dati
Architettura centralizzata con più utenti
– Più posti di lavoro, più processi, più basi di dati

Architetture distribuite
– I processi sono presenti su più nodi elaborativi (elaborazione distribuita)

Ci  sono  più   sorgenti  informative,   più  DB,   collegamenti  in  rete  e  reti  locali e geografiche  e processi  interconnessi.

CONSEGUENZA: i DB sono distribuiti, i dati sono replicati e occorre garantirne la consistenza e la concorrenza d’accesso.

Le caratteristiche della sicurezza sono:

AUTENTICITÀ: L’utente coinvolto nel processo deve poter essere identificato dal sistema e distinto da ogni altro;
AUTORIZZAZIONE: L’accesso alle informazioni o al processo deve essere consentito ai soli utenti autorizzati;
DISPONIBILITÀ: Il sistema deve rendere disponibili a ciascun utente abilitato le informazioni alle quali ha diritto di accedere, nei tempi e nei modi previsti.
INTEGRITÀ: Il sistema deve impedire la alterazione diretta o indiretta delle informazioni, sia da parte di utenti non autorizzati, che a seguito di eventi accidentali.
RISERVATEZZA: Nessun utente deve poter ottenere o dedurre dal sistema informazioni che non ha il diritto di conoscere.

PROGETTAZIONE DEI SISTEMI INFORMATIVI

Ex novo: il sistema viene prima progettato concettualmente e poi realizzato. Conseguenza: possono essere adottati standard e tecnologie comuni
Per adattamento o integrazione: vengono integrati sistemi esistenti  Conseguenza: non possono essere adottati standard corriuni e occorre adottare tecnologie (middleware) di integrazione
TIPOLOGIE DI SISTEMI INFORMATIVI
Sistemi  gestionali   o  transazionali
Sono i sistemi più tradizionali  che hanno come obiettivo l’informatizzazione  delle
attività  strutturate  e ripetitive;  riguardano  quindi  prevalentemente  i processi  ed i settori operativi e di controllo.
Sistemi per l’automazione  d’ufficio
Si sono diffusi soprattutto a seguito dell’introduzione dei pc e di software per lo svolgimento di quelle attività tipiche di qualsiasi ufficio (elaboratori di testi, tabelle, grafici e diségni). Lo sviluppo delle reti ha favorito una loro  trasformazione  da sistemi di supporto all’attività individuale a sistemi per le attività di gruppo, attraverso la condivisione di programmi e dati, oltre che di risorse tecnologiche (stampanti, scanner, etc.) comuni.

Sistemi di comunicazione
Sono  sistemi  che  facilitano  lo  scambio  di  comunicazioni  informali  tra  operatori coinvolti nelle stesse attività (email – mainlist).

Sistemi di gestione dei flussi di lavoro
Coordinano le attività d’insiemi di persone coinvolte negli stessi processi formalizzando il flusso di lavoro che guida l’esecuzione di altre procedure manuali o informatizzate.

Sistemi statistici
Sono sistemi il cui obiettivo principale è la rilevazione di dati da una o più fonti, la loro organizzazione, analisi e aggregazione statistica per fini conoscitivi e di pianificazione.

Sistemi di supporto alle decisioni (DSS, MIS, EIS)
Sono sistemi realizzati per i livelli alti delle aziende anche se, in alcuni casi, possono fornire supporto a decisioni di tipo gestionale o anche operativo. A volte sono classificati come DSS (Decision Support Systems) se concorrono alla valutazione di ipotesi e alternative per decisioni poco strutturate, MIS (Management Infonnation Systems) se forniscono supporto alla valutazione di decisioni strutturate per il livello di controllo, EIS (Executive Information Systems) se caratterizzati da elevata interattività e notevole flessibilità nella produzione dei dati di sintesi.

Sistemi in tempo reale
I sistemi in tempo reale sono quelli tipicamente utilizzati dalle aziende in cui  la variabile tempo e i vincoli temporali sono critici (es. sistemi di controllo industriali e monitoraggio della produzione) .

Sistemi territoriali
Sono i sistemi in cui l’aspetto geografico, inteso come il riferimento d’informazioni a posizioni sul territorio, è fondamentale. Sono i sistemi di gestione ed elaborazione di informazioni territoriali tramite carte o mappe e sovrapposizione di dati tematici.

FASI DEL CICLO DI VITA DEI SISTEMI INFORMATIVI
1. Pianificazione dei sistemi informativi
E’ la fase che viene svolta con periodicità stabilita (in genere 1-3 anni) in cui si pianificano i progetti e le attività di sviluppo, manutenzione e gestione del sistema informativo, dopo aver analizzato gli obiettivi che ci si propone e tenuto conto dei vincol organizzativi e di risorse.
Assessment e benchmarking
L’Assessment è costituito dalle attività di verifica del funzionamento di un sistemainformativo in termini di rispondenza alle attese dell’organizzazione e di efficienza interna. Il Benchmarking è il confronto dei risultati ottenuti dall’ Assessment con i parametri di riferimento dei s1stemi  informativi di realtà analoghe a quella  di riferimento  (stesso settore di attività,  stessa dimensione,  etc.).
Reingegnerizzazione  dei processi
E’ la fase in cui, identificati uno o più processi critici per l’organizzazione, si procede ad una loro analisi e ridefinizione, al fine di migliorare i prodotti o i servizi risultato di tali processi.
Studio di fattibilità
E’ un insieme di attività che portano a decidere se la realizzazione di un sistema è possibile, a quali costi e sotto quali vincoli. Ha l’obiettivo di esaminare diverse alternative di realizzazione, definire architetture tecniche e applicative, valutare benefici e costi e produrre, alla conclusione, un piano di sviluppo del sistema.

Analisi
L’obiettivo dell’analisi è l’approfondimento dei requisiti di un sistema per produrre unadescrizione che sia formalizzata, ovvero espressa con un linguaggio non ambiguo e capace di rappresentare in modo soddisfacente il sistema analizzato, integrata, ovvero riferita a tutto il sistema esaminato, indipendente dall’ambiente tecnologico, ovvero concentrata sugli aspetti funzionali, senza essere condizionata dalle scelte tecnologiche.
Progettazione
La progettazione può essere definita come la traduzione delle specifiche d’analisi in strutture tecniche ed è quindi dipendente dalle scelte tecnologiche.
Affidamento delle attività di realizzazione
Le attività di realizzazione sono affidate all’esterno, ferma restando la necessità di un loro costante controllo sia in fase di pianificazione,  che  d’attuazione  e  di  verifica finale.
Realizzazione
Consiste nella realizzazione effettiva dei sistemi, nelle varie componenti.
Manutenzione
Comprende tutte le attività per garantire l’adeguatezza dei sistemi in esercizio. Ci sono 3 tipi di manutenzione:
Correttiva: il software  nel  tempo  dovrà  essere  modificato per  correggere eventuali errori non riscontrati in fase di realizzazione,
Evolutiva: segue i cambiamenti dell’ esigenze degli utenti finale
Adattiva: per adeguarsi alle innovazioni delle tecnologie.
Gestione e conduzione
Questa fase comprende tutte le attività n·ecessarie a rendere operativo e continuo ilfunzionamento dei sistemi. Da un lato vanno eseguite tutte quelle attività di back­ endnecessarie a garantire la continuità, la disponibilità, l’affidabilità, la sicurezza e l’integrità dei sistemi, dall’altra vanno garantiti servizi di front-end atti a consentire un utilizzo più semplice dei sistemi da parte degli utenti.
Project Management
Questa fase è trasversale rispetto alle altre e, in effetti, non è specifica dei sistemi informativi, ma si applica in tutte quei casi in cui sia necessario effettuare la pianificazione operativa ed ilcontrollo delle attività.
TECNOLOGIE PER DBMS

Il DB administrator emette al DDL COMPILER i comandi del Data Description Language riguardanti la struttura dello schema.

Il QUERY COMPILER riceve le query e le compila, inviandole all’ EXECUTION ENGINEche si occupa di frammentarle  in comandi elementari di accesso.

Questi vengono inviati all’INDEX .MANAGER che si occupa di trasformarle  in comandi diaccesso alle pagine. Il risultato è passato al BUFFER .MANAGER, che si occupa della gestione del buffer, il quale lo invia allo STORAGE .MANAGER che le traduce in accessi alle pagine  su disco.

Il TRANSACTION MANAGER si occupa della gestione delle transazioni e, insieme al RECOVERY MANAGER e il CONCURRENCY CONTROL garantisce le proprietà ACID alle  transazioni.

Il CONCURRENCY CONTROL si occupa dell’esecuzione concorrenziale delle transazioni e garantisce l’isolamento.

Il RECOVERY MANAGER, garantisce l’affidabilità e la durabilità. Il BUFFER MANAGER, si occupa della gestione della memoria.

DEFINIZIONE DI TRANSAZIONE:

Una  transazione  è  un’unità  elementare  di  lavoro  svolta  da  un’applicazione  che presenta le caratteristiche di correttezza, robustezza e isolamento.

Può essere definita sintatticamente da:
Begin transaction: identifica l’inizio della transazione
End transaction: identifica la fine della transazione
All’interno del begin transaction ed end transaction  devono essere presenti  almeno uno dei seguenti comandi:
Commit work (commit) : identifica il buon fine della transazione
Rollback work (abort) : identifica l’abort della transazione

NB. L’abort di una transazione può avvenire a seguito di una decisione presa dalla transazione stessa (suicidio ROLLBACK ), oppure a seguito di una decisione presa dal sistema (omicidio).

Sistema   transazionale:   è   un   sistema   dove   viene   fornita   una   definizione   e
l’esecuzione di transazioni per conto di applicazioni multiple e concorrenti.

Una transazione viene definita ben formata, quando:
Il codice  della transazione  inizia  con Begin  transaction  e termina  con End transaction;
All’interno del codice sono presenti Commit o Abort
A seguito del Commit  o dell’Abort non  devono esserci ulteriori  comandi di lettura o scrittura dei dati.

PROPRIETA’ ACID

Atomicità: una transazione è un’unità indivisibile d’esecuzione. Non è possibile lasciare la bd in uno stato intermedio, infatti se, a seguito di un errore, non è possibile  terminare  operazioni di scrittura o di lettura, il sistema deve essere
in  grado  di ripristinare   lo stato  precedente A seguito di un commit, il sistema deve garantire che la bd sia lasciata dalla transazione in uno stato finale e per farlo a volte ènecessario ripetere le stesse operazioni (REDO) .
Consistenza: richiede  che  l’esecuzione  delle  transazioni  non  violi  i  vincoli d’integrità espressi sulla bd. Possono essere effettuati 2 tipi di controllo:
Immediato: durante l’esecuzione della transazione se ci sono  delle operazioni che violano i vincoli, vengono identificate e gli effetti delle stesse vengono cancellati,senza imporre l’abort alla transazione.
Differito: viene effettuato solo al termine della transazione, dopo il commit.
NB se si violano dei vincoli l’intera transazione è abortita.

Isolamento: richiede che l’esecuzione della transazione sia indipendente da quelle concorrenti. Si chiede che l’esecuzione concorrente di un insieme di transazioni produca lo stesso risultato dell’esecuzione delle stesse, svolta in modo separato.
Durabilità: richiede che l’effetto di una transazione che ha eseguito un commit
correttamente  non  venga  più  perso.  La bd  deve  garantire  che nessun  dato venga perso per nessun motivo.

NB.
ATOMICITA e DURABILITA sono garantite dal RECOVERY MANAGER
ISOLAMENTO è garantito dal CONCURRENCY CONTROL SYSTEM
CONSISTENZA è garantita dal DBMS

CONTROLLO DI CONCORRENZA

Un DBMS deve servire diverse applicazioni e rispondere alle richieste provenienti da più utenti. L’unità di misura usata per misurare il buon funzionamento di un DBMS è dato danumero transazioni al secondo.

OBIETTIVO :
Minimizzare i tempi di risposta e d’attesa Massimizzare il numero di transazioni al secondo

* ARCHITETTURA  *

Il controllo di concorrenza effettua delle operazioni  di INPUT-OUTPUT  su degli oggetti astratti x, y,z.

Ogni operazione di lettura comporta il trasferimento di un blocco dalla memoria  di massa a quella centrale.
Ogni operazione  di  scrittura comporta il trasferimento di un blocco dalla  memoria centrale a quella di massa.

I blocchi di ingresso/ uscita vengono chiamati pagine una volta caricati in memoria.

* PROBLEMI I ANOMALIE *
L’esecuzione concorrente di  varie  transazioni può   causare  alcuni  problemi di correttezza o anomalie:

PERDITA DI AGGIORNAMENTO ( LOSS UPDATE)
Suppongo di avere 2 transazioni identiche che operano sullo stesso elemento

Il valore finale di x è 3 perché entrambe le transazioni leggono lo stesso valore  iniziale che è 2.

LETTURE SPORCHE (DIRTY READ) -> ABORT
LETTURE INCONSISTENTI  (INCONSISTENT READ) -> READ READ
AGGIORNAMENTO FANTASMA (GHOST UPDATE) -> SOMMA

* TEORIA DEL CONTROLLO  DI CONCORRENZA  *
Si basa su delle definizioni e su delle “regole”:
Transazione: è una sequenza di azioni di lettura o scrittura;
Ogni transazione ha un unico ID assegnato dal sistema;
Ogni transazione deve iniziare çon begin e terminare con end.

NOZIONE  DI  SCHEDULE: rappresenta la sequenza di operazioni di input/  output presentate da transazioni concorrenti.

NOZIONE   DI   SCHEDULER:  un   sistema  che  tiene  traccia  di  tutte  le   operaz10m compiute dalle transazioni  e accetta o rifiuta le richieste.

SCHEDULE SERIALE: Le azioni di tutte le transazioni sono in sequenza, senza essere inframmezzate da istruzioni di altre transazioni.

SCHEDULE SERIALIZZABILE: dato uno schedule seriale Si diremo che è serializzabile se produce lo stesso risultato di un qualunque schedule seriale Sj delle stesse transazioni.

Secondo la nozione di equivalenza che si vuole adottare si possono ottenere classi più o meno ampie di schedule accettabili, a prezzo di un’analisi più o meno complessa.

Si dice che l’azione ai è in conflitto con l’azione aj (con i#j ) se entrambe operano sullo stesso oggetto e almeno una delle due è una write.

I casi di conflitto di due azioni sono:
LETTURA – SCRITTURA (rw oppure wr) di uno stesso elemento di una transazione
SCRITTURA – SCRITTURA (ww) di uno stesso elemento da parte di due transazioni diverse.

l.CONFLICT – EQUIVALENCE
E’ condizione sufficiente per la serializzabi lità.

Le schedule S1 e S2 sono conflict equivalenti se S1 può essere trasformato in S2 mediante opportune operazioni di scambio (swap) tra azioni non in conflitto tra loro.

Uno schedule è conflict serializzabile se è conflict equivalent ad uno schedule seriale.

La proprietà di conflict serializzabilità è verificabile mediante il GRAFO DI PRECEDENZA:faccio corrispondere ad ogni nodo una transazione. Traccio un arco orientato tra ti e tj se esiste almeno un conflitto tra l’azione ai e aj.

TEOREMA:  IL  GRAFO  DI  PRECEDENZA E’  ACICLICO SE  E   SOLO   SE  UNO SCHEDULE E’ CONFLICT SERIALIZZABILE.

DIM. INTUITIVA: Nel costruire uno schedule seriale equivalente dobbiamo contemporaneamente serializzare almeno le Ti e Tj che causano la ciclicità, il che è impossibile.

SVANTAGGI:
Richiede la verifica durante l’esecuzione, infatti costruisce il grafo e ne controlla la ciclicità; ha quindi complessità lineare, ma è dinamica.

2. CONTROLLO DI CONCORRENZA TRAMITE LOCK

Definisco un protocollo che garantisce a priori la conflict serializzabilità -> richiede la presenza di uno schedule nell’architettura del DBMS.

PRIMITIVE  DI LOCK *

Introduco due nuove operazioni  che si vanno ad aggiungere a quelle già esistenti. Queste richiedono l’utilizzo e il rilascio esclusivo di una risorsa e sono:
LOCK (esclusivo): Li(A) UNLOCK : Ui(A)

TRANSAZIONI  BEN FORMATE  E LEGALI  *

REGOLA  # 1: BEN  FORMATA -> ogni azione P(a) sia di lettura o di scrittura  deve essere contenuta all’interno di una “sezione critica” definita da una coppia di lock e unlock.
Ti: …… Li(A) … Pi(A) … Ui(a)

REGOLA # 2: LEGALI -> comporta il lock esclusivo della risorsa Ti: … Li(A) …… Ui(A)
NO Lj(A)

NB.  Le  prime  due -regole  non  sono  sufficienti  a  garantire  la  serializzabilità:  è necessario introdurne una terza.

3. TWO PHASE LOCKING

REGOLA #3: in ogni transazione tutte le richieste di lock devono precedere tutti gli unlock. Una transazione dopo aver lasciato un lock, non può più acquistarne altri.

Ti: … Li(A) ………… Ui(A)

No Unlock No Lock
# locks
ottenuti do Ti

TEOREMA:   UNO  SCHEDULE 2PL HA UNO  SCHEDULE  SERIALE CONFLICT EQUIVALENT.

DIM. INTUITIVA: Lo schedule seriale conflict equivalent è quello in cui le transazioni sono ordinate secondo l’occorrenza del loro primo unlock.
Ogni transazione 2PL può essere eseguita istantaneamente quando si esegue il suo primo unlock.

4. SHARED LOCK

Finora la situazione è S=…Ll (A) R l (A) U l (A) … L2(A) R2(A) U2(A)

In realtà le due letture non sono in conflitto tra loro: introduco allora un nuovo tipo di lock:shared lock.

PRIMITIVE  DI LOCK  *

Lxi(A) ->LOCK ESCLUSIVO Lsi(A) ->LOCK CONDIVISO Ui(A) ->UNLOCK

TRANSAZIONI  BEN FORMATE   CON  SHARED LOCK *

Shared lock prima di un read Exclusive lock prima di un write

Ti = Lsl (A) …R l(A) …U l (A) Ti = Lxl (A) …w l (A) …U l (A)

* TRANSAZIONI  LEGALI  CON  SHARED LOCK*

Nessun lock tra un lock già acquisito e il suo rilascio si modifica così: S: … Lsi(A) …… Ui(A) S: … LXi(A) …… Ui(A)
NO Lxj(A) NO Lxj(A) e NO /Lsj(A)
MATRICE  DI  COMPATIBILITA’ E REGOLA 2PL:

5 X
s Tr-ue False

X
False
False

lock gia’ ottenuto
In modo
Nunvo lock rìchlesto
REGOLE PER I LOCK GERARCHICI:
consideriamo gerarchie di oggetti strutturate ad albero: i lock vengono richiesti dalla radice vs i discendenti e i lock vengono rilasciati a partire dal nodo con lock proseguendo vs la radice. Per richiedere un lock SL o ISL su un nodo la transazione deve già avere un lock sul nodo genitore. Per
richiedere un lock IXL, XL o SIXL su un nodo la transazione deve avere un lock SIXL o IXL sul nodo corrente.

NUOVI TIPI E GERARCHIE DI LOCK-> introdotte x abbassare il livello d’isolamento

Introduco 3 nuovi tipi per abbassare illivello dell’isolamento, con la consapevolezza della possibile presenza di anomalie:
ISL( Intention shared lock): esprime l’intenzione di bloccare in modalità condivisa un qualsiasi figlio del nodo corrente.
IXL(Intentino exclusive lock): esprime l’intenzione di bloccare in modo esclusivo
uno dei nodi che discendono dal nodo corrente
SIXL (Shared lock intentino esclusive lock): Blocca in modalità condivisa il nodo corrente e esprime l’intenzione di bloccare uno dei nodi discendenti dal nodo corrente in modalità esclusiva.

TABELLA  DI COMPATIBILITA’ PER  LOCK  GERARCHICI
Stato risorsa
Richiesta

ISL OK OK OK OKNo IXL OK OK No No No SL OK NoOK No No SIXL OKNo No No No XL
18

* GESTIONE  DEI  DEADLOCK  *

Un problema comune a tutte le strategie di controllo di concorrenza basate sul locking

TI
11(); Read(A)
A”” A+lOO; Write{A)
lt(B)
T2
lz(B):Read(B)
B Bx2;Wr1te(B)
12(A)

In attesa
La probabilità di deadlock cresce in modo lineare con ilnumero di transazioni e in modo quadratico con il numero di richieste di lock da parte di ogni transazione.

TECNICHE UTILIZZATE  PER RISOLVERE IL DEADLOCK:

./  USO DEI TIMEOUT: viene fissato un tempo T di timeout oltre il quale le transazioni  in attesa vengono  uccise.
CRITICITA’ : T troppo alto risolve tardi il deadlock
T troppo basso uccide troppe transazioni
./ RILEVAMENTO DEL DEADLOCK: costruisce in modo incrementale il grafo di precedenza,  utilizza le tabelle di lock e quando si genera un ciclo viene scelta la vittima e si fa il rollback.
POLITICHE  DI  SCELTA DELLA VITTIMA: (VALGONO X RILEV. & PREVEN.)
Interrompente: si risolve il conflitto uccidendo la transazione che possiede la risorsa
Non Interrompente: solo all’atto di una nuova richiesta
Quelle che hanno effettuato meno lavoro: PROBLEMA -> la transazione che ha fatto meno lavoro viene uccisa ripetutamente -> starvation
./ PREVENZIONE DEADLOCK: Ad ogni transazione viene assegnato un timestarnp ts(Ti)  al momento in cui arriva allo scheduler.
REGOLA: in caso di conflitto su un lock Ti può attendere Tj solo se è più vecchio. Ts(Ti)<ts(Tj) altrimenti viene ucciso.WAIT-DIE
* CASCADING ROLLBACK  *
Finora abbiamo svolto ragionamenti non preoccupandoci di ciò che può avvenire riguardo la correttezza dello schedule a seguito dei rollback.
Il rollback di una transazione T provoca a cascata il rollback di altre transazioni. In particolare occorre:
trovare le transazioni nell’insieme U che hanno letto da T e abortirle;
trovare ricorsivamente le transazioni che hanno letto da quelle in U e così via.
NB. Il cascading rollback è gestito dal RECOVERY MANAGER

CONDIZIONI   NECESSARIE  AGLI  SCHEDULE PER  EVITARE  IL CASCADING ROLLBACK

RECOVERABLE SCHEDULE: Uno schedule S è recoverable se ogni transazione nello schedule effettua un commit solo dopo che ogni transazione dalla quale ha letto ha effettuato un commit. · ·

ES: w lA w lB w2A r2B cl c2 -> serializzabile ma non recoverable W2A w lB w2A r2B c2 cl -> è recoverable ma non serializzabile

Per evitare il cascading rollback occorre imporre una condizione più forte della recoverability.

Uno schedule evita il cascading rollback se le transazioni leggono solo i valori scritti da transazioni che hanno già effettuato il commit.

ES: w2A w lB w lA cl r2B c2

* STRICT 2PL *-> nasce xk:e ho sempre considerato il commit delle trans e nn l’ Uno schedule S è Strict 2PL se:
./ 2PL
./ i lock di ogni transazione vengono mantenuti fino al commit o all’abort
./ illog è stato inviato al disco.
20

PROPRIETA’:

Ogni schedule strict 2PL evita il cascading rè>J. l:>é:tc!S-> una transazione T2 non può leggere  un  valore  di un  elemento X  scritto da Tl  finchè Tl  non  rilascia  ogni lock.
Ogni schedule strict 2PL è serializzabile -> uno schedule strict è equivalente a uno seriale in cui ogni transazione esegue i comandi al tempo di commit.

USO  DEI LOCK IN PRATICA:

Un lock manager  semplificato:
Acquisisce tutti i locks automaticamente
Non si fida della transazione definita dall’applicazione!
A meno che la transazione non utilizzi primitive di lock esplicite
Li mantiene fino al commit (strict 2PL).

LOCK MANAGER

* ALTRI  METODI  PER IL CONTROLLO  DI CONCORRENZA  *
Metodo 1: TIMESTAMP

Evita del tutto l’uso dei lock (elimina il problema dei deadlock).
Ad ogni transazione viene assegnato un timestamp unico al momento del suo inizio, cioè all’arrivo dello schedule -> i timestamp definiscono l’ordine totale sulle transazioni, secondo il loro arrivo.

Uno schedule S che rispetta questo ordine e’ serializzabile, perché è equivalente al particolare schedule seriale corrispondente all’ordinamento dei timestamps.

USO DEI TIMESTAMP:

Le transazioni  vengono  eseguite liberamente.
Ad ogni operazione r/w, lo scheduler controlla che i timestamps delle transazioni  coinvolte non violino la serializability della schedule.
Ad ogni data item (X) vengono associati due timestamps:

./ readTs(X): uguale al timestamp ts(T) della transazione T che ha potuto leggere per ultima X;
./ writeTs(X): uguale al timestamp ts(T) della transazione T che ha potuto scrivere per ultima X;
./ C(X): il bit di commit, vero sse la transazione che ha scritto X più di recente ha effettuato il commit (serve per evitare i fenomeni di dirty read)

Per ogni operazione wi(X):

Se ts(Ti) < readTs(X): rifiuta la richiesta  e uccide Ti (una transazione più recente di Ti ha letto X prima che Ti potesse scriverlo e si viola l’ordine del timestamp.)
Se ts(Ti) < writeTs(X): ignora wi(X) e continua (una transazione più recente di Ti ha già scritto X, quindi questa write è inutile)
Altrimenti,  accetta la richiesta e pone writeTs(X)   = ts(Ti).

* CONFRONTO  TRA  2PL E TIMESTAMP *

2PL TIMESTAMP
Le transazioni vengono messe in attesa. Le transazioni vengono uccise e fatte ricominciare
L’ordine di serializzazione è imposto L’ordine di serializzazione è imposto dai timestamp
dai conflitti
Necessità di attendere il commit di altre transazioni: strict 2pl Necessità di attendere il commit di  altretransazioni: buffering delle scritture.
E’soggetto a deadlock Non provoca deadlock, ma costringe ad un alto numero di restart.

Metodo 2: MULTIVERSION CONCURRENCY CONTROL

Si vuole estendere il concetto di timestamp introducendo versioni diverse Xl Xn di una dataitem  (X).

../  Ogni w i(X) genera una nuova versione Xi+ l
../  Ad ogni versione Xi di X e’ assegnato un timestamp writeTs(Xi)
../  Ad X viene assegnato un timestamp globale readTs(X)
../   Per ogni accesso, lo scheduler utilizza i timestamp come segue:

wi(X): se ts(Ti) < readTs(X) rifiuta la richiesta
altrimenti crea la versione XN+ l e pone writeTs(XN+ l ) = ts(Ti)
ri(X): seleziona per la lettura la versione xk tale che: writeTs(Xk)< ts(Ti) < writeTs(Xk+ 1)
in particolare, seleziona XN se ts(Ti) > writeTs(XN)

Le versioni a cui non possono accedere nuove transazioni, vengono eliminate.

BUFFER MANAGER E RECOVERY MANAGER
* BUFFER  MANAGER*

Il buffer è una zona della memoria centra.le preallocata al DBMS e condivisa tra tutte le transazioni e utilizzata anche dal sistema.

Il buffer è organizzato in pagine che hanno dimensioni multiple dei blocchi di I/ O usati dal File System. Le dimensioni tipiche vanno da 2K a 64K. Quando la pagina della memoria di massa è presente nel buffer, il DBMS può svolgere le sue operazioni di lettura e scrittura direttamente da essa e ciò comporta un vantaggio in termini di prestazione.

* PRIMITIVE  PER  LA GESTIONE  DEL BUFFER  *

Il buffer è gestito con gli stessi criteri una cache: operazioni primitive dei blocchi in cache
principio di località dei dati e strategie di replacement dei blocchi euristica: 1’80% delle applicazioni accede al 20% delle pagine
il hitratio dei Sistemi operativi

Nel caso dei DBMS occorre garantire atomicità e durabilità e quindi sono necessarie delle strategie di recovery in caso di guasto.

./ FIX: viene usata per richiedere l’accesso ad una pagina e provoca il suo eventuale caricamento nel buffer. L’operazione restituisce alla transazione il puntatore alla pagina nel buffer. Al termine dell’operazione la pagina risulta caricata e valida, cioè allocata ad una transazione attiva. L’esecuzione sulla primitiva, richiede certamente un’operazione di lettura da memoria di massa solo quando la pagina prescelta non è già residente nel buffer .
./  FUNZIONAMENTO  DI FIX: Se la pagina richiesta è disponibile nel buffer allora ritorna il riferimento  alla pagina,  altrimenti  cerca una pagina librea nel buffer. Se il buffer è pieno, seleziona una vittima: se la vittima è valida, esegue un flush della pagina e la rialloca e carica la pagina richiesta dal FS al buffer manager  e infine ritorna il riferimento alla nuova pagina.
./  USE: viene usata dalla transazione per accedere alla pagina caricata precedentemente in memoria, confermando il suo stato di pagina valida.
./ UNFIX: indica al buffer manager che la transazione ha terminato di usare la pagina, che non è più valida.
./ FORCE: trasferisce in modo SINCRONO una pagina del buffer manager in memoria di massa. La transazione richiedente viene sospesa fino al termine dell’esecuzione della primitiva, che comporta un’operazione fisica di scrittura sulla memoria di massa.
NB. Le primitive di fix e use consentono di caricare nel buffer e leggere i dati, la primitiva force è usata dalle transazioni per scrivere dati nella memoria di massa.
./  FLUSH: è usata dal buffer manager stesso per trasferire in memoria di massa in modo ASINCRONO e indipendentemente dalle transazioni attive, le pagine non più valide e rimaste inattive da più tempo.

*POLITICHE DI GESTIONE   DEL BUFFER *

./ STEAL: il buffer manager può selezionare come vittima una pagina attiva e non attiva.
./ NO STEAL: il buffer manager può selezionare come vittima una pagina non attiva.
./ FORCE: Le pagine di transazione attive vengono scritte su FS al momento del
commit
./ NO FORCE: le pagine di una transazione attiva vengono scritte dal buffer manager in nodo asincrono rispetto alla transazione (flush).

NO STEAL NO FORCE:
É la politica preferita dal DBMS nelle implementazioni.
La politica no steal è più semplice da realizzare perché non deve gestire la riallocazione di pagine a transazioni che hanno eseguito FIX.
Per quanto riguarda la politica no force garantisce maggior efficienza, infatti, FLUSH è eseguito secondo le politiche del buffer manager, indipendentemente dalle richieste delle transazioni.

E’ possibile anticipare i tempi di caricamento e scaricamento sulle pagine tramite PRE-FETCHING e PRE-FLUSHING, solo quando è noto a priori il comportamento delle transazioni.

* RELAZIONI  TRA BUFFER  MANAGER  E FILE  SYSTEM *

I DBMS usano i file system, ma si creano una propria astrazione del file, per garantire efficienza (tramite ilbuffer) e atomicità e persistenza (recovery manager).

Le funzioni offerte dal file system e sfruttate dal DBM sono: create e delete di un file
open e dose di un file
Read (FileID, F_Blocco, Buffer) per l’accesso diretto ad un blocco del file, individuato tramite i primi 2 parametri, che viene trascritto nella pagina del buffer indicata tramite ilterzo parametro.
Read_seq(FileID, F_Blocco, Count, Buffer) per l’accesso sequenziale ad un numero fisso (count) di blocchi di un file, individuando ilprimo blocco del file tramite il secondo parametro e la prima pagina del buffer tramite l’ultimo parametro.
Write e write_seq analoghi a read e read_seq.

* RECOVERY MANAGER *

Il recovery manager è responsabile  di garantire atomicità e persistenza  e realizzare i comandi transazionali fondamentali come B(T), E(T), C(T), A(T).

Si occupa della scrittura del LOG, un archivio persistente che registra le varie azioni svolte dal DBMS. Ogni azione di scrittura sul DB viene protetta tramite un’azione  sul LOG, in modo che sia possibile disfare (UNDO) le azioni a seguito di un
malfunzionamento o guasti precedenti ilcommit, oppure rifare (REDO) queste azioni qualora la loro buona riuscita sia incerta e le transazioni abbiano effettuato un commit.

L’obiettivo del recovery manager è quindi quello di gestire ilrollback di una transazione e ricostruire uno stato consistente ·del DB che rispetti la semantica delle transazioni, in seguito ad un guasto del DBMS.

* ORGANIZZAZIONE  DEL LOG *

E’ un file sequenziale che viene scritto in memoria stabile, cioè una memoria non soggetta a guasti. Sul log vengono registrate le azioni svolte dalle varie transazioni, nell’ordine in cui vengono eseguite.

I record di log sono di 2 tipi:
./  RECORD DI TRANSAZIONE: registra le attività svolte da ciascuna transazione, nell’ordin. a:!a cuiL3,. ve11RP.o effettuate. Ogni transazione inserisce nel log
un record di B(T), C(T) o A{T) .
./ RECORD DI SISTEMA: indicano l’effettuazione di operazioni di checkpoint e dump. c’-t•\ t•)

* SCRITTURA  DEL RECORD  DI LOG  *

I record di log che vengono scritti per descrivere l’azione di una transazione t1 sono: record di begin, commit e abort, che contengono oltre all’indicazione del tipo di record anche l’ identificativo T della transazione. B(T), C(T), A(T).
record di update, che contengono l’identificativo T della transazione  e l’identificativo O dell’oggetto su cui avviene l’update e poi 2 valori, BS e AS, che descrivono ilvalore  dell’oggetto O precedentemente  alla modifica detto before state (BS)  e successivamente alla modifica,After State (AS).
U(T,O,BS,AS)
record  di insert e delete, analoghi all’update da cui si differenziano per la mancanza nei primi del bs e nei secondi dell’as. I(T,O,AS) ;  D(T,O,BS)

QUESTI RECORD CONSENTONO DI DISFARE E RIFARE LE RISPETTIVA AZIONI SUL DB.

* PRIMITIVE  DI UNDO E REDO: CONSEGUENZE *

./  UNDO: per disfare un’azione su un oggetto O è sufficiente ricopiare nell’oggettoilvalore BS. L’insert viene disfatto cancellando l’oggetto O.
./  REDO: per rifare un’azione su un oggetto O è sufficiente ricopiare nell’oggetto il valore AS. Il dolete viene rifatto cancellando l’oggetto O.

PROPRIETA’ DI IDEMPOTENZA  *

undo( undo( A  )  )= undo(A) redo( redo( A ) )= redo(A)

CHECKPOINT  E DUMP *

Il checkpont è un’operazione che viene svolta periodicamente con l’obiettivo di registrare le transazioni attive nel log. L’operazione viene coordinata con ilbuffer manager: si registrano gli ID delle transazioni in corso e contemporaneamente si trasferiscono tutte le pagine dei buffer relativi a transazioni che hanno effettuato il commit o l’abort, inmemoria di massa.

Le operazioni effettuate dal checkpoint sono:
Per ogni transazione committed, copia le pagine di buffer su DB (FLUSH) Scrive un record CK(t l..tn) contente gli id delle transazioni attive (uncommitted).
CONSEGUENZA: per tutte le transazioni T per cui commit(T) precede CK(t l..tn) non è necessario alcun redo in caso di guasto.

SEQUENZA DI CHECKPOINT:
.  1.   Sospende  l’esecuzione  delle  transazioni
Flush del buffer (pagine attive)
Scrive il record CK(T l..Tn) su log in modo sincrone (force)
Riprende l’esecuzione delle transazioni

Il dump è una copia completa del DB, che viene effettuata in modalità OFFLINE,cioè non cisono transazioni attive. Produce un back-up, cioè il salvataggio su memoria stabile e scrive (force) un record di dump nel log, che segnala che in quell’istante è stata effettuata una copia del DB).

GESTIONE DELLE  TRANSAZIONI  *

Ci sono 2 regole da seguire per ripristinare la correttezza del DB dopo dei guasti.
Regola WAL( Write Alhead Log): impone che la parte bs dei record di un log venga scritta nel log, con un’operazione di scrittura su memoria stabile, prima di effettuare la corrispondente azione sul DB.
Rende consistente le operazioni di UNDO-> un valore può sempre essere riscritto su memoriadi massa con il BS scritto nel log.
Regola COMMIT PRECEDENCE: impone che la parte as dei record di un log venga scritta nel log, con un’operazione di scrittura su memoria stabile, prima di effettuare un commit.
Rende consistente le operazioni di REDO -> se una transazione e’ committed
al momento di un guasto, ma le sue pagine non sono ancora state scritte su disco, posso usare i valore AS che trovo nel log.

MODALITA’ DI UPDATE *->  SI DIFFERENZIANO  PER IL MOMENTO  IN CUI SCRIVONO  LE PAGINE  SU DB

../ Aggiornamento immediato: la transazione scrive inizialmente il record B(T), quindi svolge le sue azioni di update, scrivendo prima il record di log U{T,O,BS,AS)  e successivamente la pagina del DB; che passa da bs ad as.

Tutte queste pagine devono essere effettivamente scritte (con flush o force) dal buffer manager prima del commit, che comporta la scrittura sincrona (force).In questo modo al commit tutte le pagine del db modificate dalla transazione
sono già scritte in memoria di massa. -> NON RICHIEDE REDO

./  Aggiornamento differito: la scrittura del record di log precede quella delle azioni sul DB che però avvengono dopo la decisione di commit e la conseguente scrittura sincrona del record di comm.it su log -> NON RICHIEDE UNDO, MA RICHIEDO REDO.
./ Aggiornamento misto: le scritture nei DB una volta protette dalle opportune scritture su log, possono avvenire in qualunque momento rispetto alla scrittura dei record di comm.it su log. Questo schema consente al buffer manager di ottimizzare le operazione di flush relative ai suoi buffer, indipendentemente dal recovery manager _>RICHIEDE UNDOE REDO

* GESTIONE  DEI  GUASTI:  CLASSIFICAZIONE   *

* POLITICA DI  RIPRISTINO: MODELLO FAIL – STOP*

Quando il sistema individua un guasto sia di sistema che di dispositivo, esso forza un arresto completo delle transazioni e il successivo ripristino del corretto funzionamento del SO (BOOT).

Viene attivata una procedura di ripresa a caldo (warm restart) nel caso di guasto di sistema e di ripresa a freddo (cold restart) nel caso di guasto di dispositivo.

Al termine delle procedure di ripresa, il sistema diventa nuovamente utilizzabile dalle transazioni: ilbuffer è vuoto e può riprendere a caricare pagine del DB o del log.
Gli obiettivi della procedura di ripresa: esisteranno transazioni potenzialmente attive all’atto del guasto, cioè delle quali non si conosce se abbiamo ultimato le loro azioni sul Db (perché il buffer manager ha perso le operazioni) e queste si classificano in 2 categoria in base alle informazioni presenti nel log.

Alcune di esse hanno effettuato il commit e per loro è necessario rifare le azioni al fine di garantire la persistenza.
Altre non hanno effettuato il commit e per loro è necessario disfare le azioni, in
quanto non è noto quali di esse siano state realmente effettuate, ma vi è un impegno a lasciare il Db nel suo stato iniziale precedente all’esecuzione della transazione.

NB. Alcuni sistemi registrano nel log anche il record di end, che attesta che le operazioni di flush sono terminate. In presenza del record di end, è possibileindividuare una classe di transazioni per le quali non è necessario effettuare nessuna azione, né di undo né di redo.

* WARM RESTART *

Ricerca dell’ultimo checkpoint nel log
Costruzione degli insiemi Undo e Redo
Partendo dall’ultimo checkpoint
Undo contiene le transazioni uncommitted
Redo contiene le transazioni  committed
Fase Undo
Ripercorre il log all’indietro disfacendo le transazioni nel setUndo
Fase Redo
Ripercorre il log in avanti rifacendo le transazioni nel set Redo

* COLD RESTART *
Caricamento del dump più recente e copia selettiva dei frammenti danneggiati
Ricerca del record di dump più recente nel log
Forward recovery dallo stato del dump
Riapplica tutte le azioni del log, nel loro ordine
Otteniamo lo stato del DB immediatamente precedente al crash
Esegue un warm restart come descritto in precedenza

STRUTTURE FISICHE
* Organizzazione  fisica e accesso ai dati *
Le strutture fisiche d’accesso descrivono il modo in cui vengono organizzati i dati per garantire operazioni di ricerca e di modifica efficienti da parte dei programmi applicativi.L’organizzazione del contenuto del DB su file system rappresenta un compromesso tra:
E[ficienza di spazi.o: vogliamo minimizzare lo spreco di spazio nel layout  fisico dei dati e la ridondanza nei dati, tenendo conto di sequenze di  operazioni di inserimento, cancellazione, modifica
Efficienza di tempo: vogliamo minimizzare il tempo di accesso all’informazione, sfruttando al meglio l’informazione disponibile per il reperimento, es una chiave, un intervallo tra valori, ecc.
Quindi per tipi d’accesso diversi, la struttura ottimale cambia.  Il DBMS fornisce:
Il supporto per creare e mantenere strutture dati ausiliarie per l’accesso
Una suite di metodi d’accesso, che sfruttano ciascuno le strutture dati ausiliarie disponibili
Algoritmi per la scelta del metodo ottimale, data un’interrogazione

Metodi d’accesso e Architettura del DBMS

Il gestore degli accessi è responsabile di trasformare un piano d’accesso, prodotto dall’ottimizzatore, in opportune sequenze d’accessi alle pagine del DB. Esso utilizza i moduli di accesso, cioè opportuni moduli sw che contengono primitive per l’accesso
e la manipolazione dei dati specifici di ciascuna organizzazione fisica. I metodi di accesso pertanto individuano i blocchi di specifici file che devono essere caricati in memoria, passando questa informazione al buffer manager.

Ad esempio, se i dati sono organizzati sequenzialmente, il metodo d’accesso può richiedere l’esecuzione di una primitiva di scansione (Scan) che legga tutti i blocchi.

Inoltre, il metodo d’accesso conosce la disposizione delle tuple nelle pagine ed è quindi ingrado di individuare specifici valori all’interno di una pagina.

* Organizzazione  delle  tuple  nelle  pagine  *
Sebbene ciascun metodo d’accesso possa avere una propria organizzazione delle pagine, alcuni metodi d’accesso hanno caratteristiche comuni.
In ciascuna pagina sono presenti sia informazioni utili, sia informazioni dLcontrollo.

Ogni pagina, in quanto coincidente con il blocco di memoria di massa ha una parte iniziale(block header) e finale (block trailer) contenente informazioni di controllo utilizzate dal File System.
Ogni pagina, in quanto appartenente ad una struttura di accesso, ha poi una parte iniziale (page header) e finale (page trailer) contenente informazione di controllo relativa al metodo d’accesso.
Ogni pagina ha poi un dizionario di pagina che contiene puntatori a ciascun dato utile elementare contenuto nella pagina e una parte utile che contiene i dati. Il dizionario e i dati utili crescono come stack contrapposti, lasciando libera  la memoria in uno spazio contiguo tra i 2 stack.
Ogni pagina contiene un bit di parità per verificare che  l’informazione in esse contenuta sia valida.
Primitive di page manager *
Inserimento e modifica di una tupla, che non comporta riorganizzazioni della pagina se esiste un sufficiente spazio contiguo per gestire i byte introdotti in più. Altrimenti, le operazioni devono essere precedute da una riorganizzazione della pagina, che ha costo limitato perché svolta in memoria centrale.
Cancellazione di una tupla, che è sempre possibile e spesso effettuata senza riorganizzare l’informazione nella pagina, ma rendendo la tupla “invalida”.
L’accesso a un campo di una particolare tupla, identificata secondo l’offset e la lunghezza del campo stesso, dopo l’identificazione della tupla può avvenire per mezzo di chiave o offset.

* Strutture fisiche *
Data Items
Data items
Consideriamo:
Le opzioni per il layout di record in blocchi
Le opzioni per l’accesso ai blocchi e quindi ai record

Un record  contiene un numero fisso o variabile  di campi; ogni campo può avere lunghezza fissa o variabile. (Es. Stringhe di lunghezza predefinita oppure variabile)
Il tipo di un campo indica l’interpretazione del valore.

Layout di un record

Opzioni principali per il layout di un record: – Formato fisso o variabile

– Lunghezza fissa o variabile
Nb.
Il layout dei records di norma NON è configurabile dal progettista del DB.
L’unica scelta riguarda i tipi di dati.

Record di formato e lunghezza fissa

Schema del record:
# campi
tipo di ogni campo
ordine dei campi nel record
significato di ciascun campo

Record di formato e lunghezza variabile

Varianti – indicatore del tipo di record

3. Layout di un blocco

Ci sono 5 opzioni per l’organizzazione dei blocchi:
Separazione dei records
Record Spanning: records su più blocchi
Record Clustering: record di tipo diverso nello stesso blocco Record Splitting
Record Sequencing: ordinamento fisico

1. Separazione dei records

Opzioni:
../  record a lunghezza fissa => nessun separatore
../   marker di separazione
../   indicazione  di lunghezza/ offset, cioè distanza dall’origine
in ciascun record
nell’header del blocco  2. Spanning
../ No spanning: un record deve essere contenuto in un unico blocco

NB.
C’è un  potenziale  spreco  di  spazio: se block-size=B  e i record  hanno lunghezza  fissa R B, lo spreco di spazio è B – (Trunc  (B / R)*R)  bytes .

../ Spanning: un record può essere allocato su più di un blocco

Occorre  un  puntatore al blocco con i l resto del record

Utilizzando  spanning,  il  blocking   factor  bfr   =  Trunc(  B / R)  rappresenta  il  numero medio  di  records  per  blocco.  In  questo  caso,  il  numero  di  blocchi   necessari  per memorizzare r records è: b  = upper( r I  bfr  )

Clustering di records

Obiettivo:  memorizzare   nello  stesso  blocco  records  che  vengono  acceduti  spesso insieme

•Es. Impiegato dipartimento (vincolo ref erenziale)

Es. In questa query si può sfruttare la co-locazione: Ma nella query:

Q l: select EMP.nome, DEPT.nome, … from EMP, DEPT
where  EMP.DEPT_NAME  = DEPT.NAME
Q2: select * from EMP è controproducente!

Record  splitting

Obiettivo: memorizzare separatamente la parte fissa e quella variabile di un record ibrido.

Record  sequencing

Obiettivo: mantenere l’ordinamento secondo un campo chiave all’interno del blocco e quindi del file.

Consente la lettura efficiente di records nell’ordine indotto dal campo chiave (utile nelle operazioni di merge-join)

Opzione a): record fisicamente contigui
Opzione  b):  record   collegati  (linked)

* Strutture  e metodi  d’accesso fisico *
Ogni DBMS ha un numero limitato di tipi di metodi d’accesso:
Strutture sequenziali
Strutture con accesso calcolato (o hash) Strutture ad albero (o a indice)

1. Strutture sequenziali

Sono caratterizzate da una disposizione sequenziale delle tuple in memoria di massa; ilfile è costituito da vari blocchi di memoria consecutivi e le tuple vengono inserite nei blocchi rispettando una sequenza. Tale sequenza è di vari tipi:
* Sequenziale non ordinata:
* Ad array:
* Sequenziale ordinata:

A) Struttura sequenziale  non ordinata
E’ ottimale  per  svolgere  operazioni  di  lettura  e  scrittura  sequenziali.  C’è un uso efficiente dei blocchi solo per l’append:
Ultimo blocco è copiato nel buffer Il nuovo record viene aggiunto
Il blocco viene riscritto
Altre operazioni: dipende dallo schema di allocazione dei blocchi
Cancellazione: se lo schema del blocco lo prevede, inserisce un mar}{_er, altrimenti lascia un buco. In ogni caso richiede la riorganizzazione periodica dell’intero file (packing)

B) Struttura sequenziale ad array

E’ possibile solo quando le tuple di una tabella sono di lunghezza fissa. In tal caso al file viene associato un numero N di blocchi contigui e ciascun blocco è dotato di un numero M di slot disponibili per le tuple, dando luogo ad un array di N*M slot; ogni tupla è dotata di un valore numerico che funge da indice e viene posta nella
i-esima posizione  dell’array. PRIMITIVE:
Le cancellazioni creano slot liberi, gli inserimenti devono essere svolti negli slot liberi o al termine del file.
Accesso via READ_IND -> lettura tupla con un determinato valore per indice
Struttura sequenziale ordinata

La  posizione  fisica  di  ogni  record  è  determinata  dal valore  di uno  dei  suoi  campi, detto campo chiave (es. Codice fiscale, cognome, ecc.)
Da’  alle  tuple  un  ordinamento  fisico  che  riflette  l’ordinamento  lessico-grafico  dei campi  chiavi.
Ricerca efficiente basata su ricerca binaria  sul campo chiave (eseguita sui blocchi piuttosto che sui records) e per range queries (<, >)
Inserimenti e cancellazioni inefficienti perché richiedono riordinamenti.

Alternative

Al momento  del primo  caricamento,  lasciare  spazio non  allocato per le inserzioni successive
Prevedere un overflow file non ordinato
I nuovi records vengono inseriti usando linked lists
Periodicamente, si fa un merge del file di overflow nel file principale
L’inserimento può richiedere una ricerca lineare sul file di overflow

Strutture con access o calcolato (o hash)

Garantisce un accesso associativo ai dati, in cui c’è la locazione fisica dei dati. Dipende dal valore assunto da un campo chiave.
La struttura viene realizzata allocando al file un numero B di blocchi, spesso contigui; si ottiene un buon funzionamento sovradimensionando il file e non riempiendo tutti i blocchi.

C’è un algoritmo di calcolo (hash) che, una volta applicato alla chiave, restituisce un numero compreso tra O e B-1; tale numero viene interpretato come numero  del blocco, nell’ambito dei blocchi allocati al file, e usato sia per lettura che scrittura delle tuple del file.
E’ la tecnica più efficiente per queries con predicati di uguaglianza, ma è inefficiente per query con predicati di intervalli.

PRIMITIVE:

v’ hash(fileid,Key) : Blockid ->consente di trasformare un valore di chiave in un numero diblocco; riceve come parametri il nome del file e il valore di chiave e restituisce un numero del blocco.
La corrispondente funzione offerta dal sistema consta di 2 parti:
v’ folding, opera sui valori di chiave così che essi si trasformino in valori interi positivi, possibilmente distribuiti in modo uniforme.
v’   hashing, trasforma il numero positivo binario individuato in un numero intero tra O e B-1

Hashing – – Nozioni di base

Questa tecnica funzione bene se viene previsto un basso coefficiente diriempimento,  cioè se sovradimensiono il file.

Collisioni ed efficienza *
Assunto:
T = numero di tuple previsto per ilfile
* F = numero medio di tuple memorizzate in ogni pagina
Allora  B  = T/ (0.8 x  F)  utilizzando  1’80% dello  spazio  disponibile.

PROBLEMA  PRINCIPALE  DELLE  STRUITURE HASH:  COLLISIONI  ->  situazioni in
cui lo stesso numero del blocco è ritornato dall’algoritmo a partire  da 2 valori diversi di chiave.

Quando si eccede il valore F, cioè il massimo numero di tuple, la situazione è critica perché si deve ricorrere ad una tecnica differente per allocare e ritrovare le tuple che non trovano posto.

SOLUZIONE: overflow chain (con scan lineare): Partono dai blocchi in cui si è verificato un numero eccessivo di collisioni. Riporta la lunghezza media della catena di overflow come funzione del rapporto (T/ (F*B)) cioè il coefficiente di riempimento del file e dl numero medio F di tuple per pagina, che varia da 1 a 10.

1 2 3 5 10 (F)
.5 0.5 0.177 0.087 0.031 0.005,
.6 0.75 0.293 0.158 0.066 0.015
.7 1.167 0.494 0.286 0.136 0.042
.8 2.0 0.903 0.554 0.289 0.110
.9 4.495 2.146 1.377 0.777 0.345
T/(F xB)
NB. L’hashing è la tecnica più efficiente per accedere a db a predicati di uguaglianza con valori definiti nell’interrogazione.

Strutture ad  albero

Le strutture ad albero, B-tree o B+tree sono le più frequentemente usate nei DBMS di tipo relazionale. Esse contengono accessi associativi in base ad un valore di uno o più attributi chiave, senza vincolare la collocazione fisica delle tuple in posizioni specifiche del file.

Ogni albero è caratterizzato da:

Un nodo  Ogni  nodo  coincide  con  una radice
Nodi interni pagina  o  blocco  a  livello   di file system e di  buffer
Nodi foglia manager.

I link tra i nodi sono stabiliti dai puntatori che collegano fra loro le pagine.
Ogni nodo ha un grande numero di discendenti (fan out) e quindi la maggioranza di blocchi sono nodi foglia

NB: Un requisito importante per il buon funzionamento di queste strutture è che gli alberi siano bilanciati, cioè la distanza tra la radice e ogni foglia sia costante.

* Organizzazione   dei nodi *
Nodo  Intermedio

Ogni nodo intermedio presenta una sequenza di F valori ordinati di chiave.
Ogni chiave Ki, 1  i F, è seguita da un puntatore Pi, Ki è preceduta dal puntatore Pi-1. Il primo puntatore è Po.

Ciascun nodo contiene F valori di chiave e F+ 1 puntatori. Il valore F+ 1 è detto fan out

Nodo  foglia

Ci sono due tipi d’alberi:
./  Key-sequenced  trees: la posizione di una tupla è vincolata dal valore assunto dal suo campo chiave. Il record contenuto è nella foglia.
E’ tipico quando la chiave è proprio la chiave primaria dei record .
./  Indirect  trees:  le  foglie  contengono  puntatori  ai records.  Le tuple  possono essere allocate con un qualunque altro meccanismo primario (sequenziale dei tre tipi o hash). E’ tipico quando la chiave è una chiave secondaria e quindi a un valore corrispondono più record

Operazioni  su alberi *
./ Ricerca: Ad ogni NODO INTERMEDIO:
Se V < K l segui PO
Se V > KF segui PF
Altrimenti, segui il puntatore Pj tale che Kj .s.V .::_ Kj+ 1

./ Split and merge: L’inserimento non provoca problemi quando è possibile inserire il nuovo valore della chiave in una foglia dell’albero, la cui pagina ha uno slot libero; in tal caso l’indice rimane inalterato e il nuovo valore di chiave viene ritrovato semplicemente applicando l’algoritmo di ricerca. Quando, invece una pagina della foglia non ha spazio libero, si rende necessaria un’operazione di SPLIT, che suddivide l’informazione già presente nella foglia in due, in modo equilibrato, allocando due foglie al posto di una. Uno SPLIT CAUSA IL CRESCERE DI UN’ UNITA DEI PUNTATORI AL LIVELLO
SUPERIORE DELL’ALBERO. L’inserimento è facilitato se ci sono slot liberi.

./ Cancellazi.one: viene fatta marcando una tupla come invalida.  Quando  una chiave ècancellata, è meglio ritrovare la successiva chiave e  sostituirla.  In questo modo l’insieme delle chiavi nell’albero coincide  con  l’insieme  delle chiavi nella base di dati. Quando la cancellazione lascia due pagine adiacenti sottoutilizzate, esse sono fuse in una pagina singola con un’operazione di  MERGE. LA MERGE PROVOCA UNA RIDUZIONE NEL NUMERO DEI PUNTATORI NEL NODO A PIÙ ALTO LIVELLO E PUÒ DAR LUOGO AD UNA ULTERIORE FUSIONE.

Strutture  ad albero: efficienza *

Consentono accesso associativo per chiave
Accesso efficiente sia per valore singolo che per intervalli di valore
Non vincola l’organizzazione dei blocchi di records puntati dall’indice
Le strutture ad albero sono le più comunemente usate nei DBMS

Alberi bilanciati  *

Proprietà: la lunghezza dei cammini verso ogni foglia è uguale. Ciò è ottenuto tramite opportuna strategia di esecuzione delle operazioni di split  e merge -> i tempi di accesso alle foglie sono quasi costanti.
Albero bilanciato         •Albero non bilanciato

Ci sono due tipi di alberi bilanciati:
Btrees
B+trees

Differenze tra B+ trees e B-trees:

Le foglie nel B+trees sono concatenate secondo l’ordine della chiave e il valore di una chiave può essere ripetuto nell’albero.

Nei B-tree non c’è concatenamento sequenziale delle foglie. I nodi  interni usano due puntatori per ogni valore Ki della chiave. Un puntatore al blocco che contiene il record corrispondente a Ki e un puntatore al sotto-albero con chiavi comprese tra Ki e Ki+ 1.

Conseguenze  *

B+trees:
Potenziale maggiore occupazione di memoria
Supporto efficiente di range queries
Usati comunemente da RDBMS

B-trees
Minore occupazione di memoria
Alcune ricerche più efficienti (quelle relative a chiavi che puntano direttamente al record)

* Efficienza dei B e B+  alberi *

Normalmente alta perché le pagine ai primi livelli dell’albero sono spesso nel buffer, visto che sono frequentemente accedute dalle transazioni. Ciò comporta una potenziale contesa e deadlock, che però ha probabilità ridotta perché in genere le transazioni leggono l’albero e raramente lo aggiornano.
* Indexing,  hashing e uso di indici in SOL *

Quando conviene usare hashing?
– Queries per valore di chiave
Quando conviene usare indici?
– Range queries

SELCT   … FROM R WHERE R.A = 5
SELECT …
FROM R WHERE R.A > 5

Creazione di indici in SOL:

Create index name on rel (attr)
Create unique index name on rel (attr) DropINDEX name Candidate key

* Index design  *

Primary index: uno  con  struttura key  sequenze  che supportano  una  ricerca di tipo sequenziale  -> normalmente  unica. · . .
Secondary index: molti con alberi e/o strutture hash -> normalmente su attributi usati da condizioni nelle query.

QUERY OPTIMIZER PARTE 2.6
* Introduzione  all’ottimizzazione  di queries *
* Approcci   alla compilazione   di queries *

– Compila e memorizza: la query è compilata una volta ed eseguita più volte; il codice interno è memorizzato nel DB, insieme alle dipendenze del codice da particolari versioni delle tabelle e degli indici lette nel dizionario. In presenza di cambiamenti, la compilazione dell’interrogazione è invalidata e ripetuta.
Compila ed esegui: esecuzione immediata, nessuna memorizzazione.

* Passi di Query Processing *

Scanning Parsing (syntax check)

Query code

Programmi di accesso
Riceve in ingresso un’interrogazione scritta in SQL.
L’interrogazione viene analizzata per determinare eventuali errori SINTATTICI;SEMANTICI E LESSICALI, che vengono sottoposti all’utente per la correzione. In questa fase il sistema accede al dizionario dei dati per leggere l’informazione contenuta e consentire i controlli; dal dizionario sono lette anche le informazioni statistiche relative alle dimensioni delle tabelle.
Una volta accettata, l’interrogazione viene tradotta in una forma interna di tipo algebrico. Ora inizia l’ottimizazione vera e propria. Si compone delle seguenti fasi:
Viene svolta un’ottimizzazione di tipo algebrico che consiste nell’effettuare tutte le trasformazioni  algebriche  che
si ritiene siano convenienti. Ottimizzazione basata sui costi di sistema (Il O,CPU, etc)
Viene svolta un’ottimizzazione che dipende dalla tipologia dei metodid’accesso ai  dati  supportati  dal sottostante livello sia dal modello dei
costi assunto.
Infine c’è la generazione del codice.

1. Implementazione delle operazioni elementari

Le operazioni elementari sono gli scan, gli ordinamenti e l’accesso con indice.

Scansione: realizza un accesso sequenziale a tutti i record di una tabella. Può essere utilizzata in operazioni di
Proiezione Selezione

Ordinamenti: ci sono vari metodi per ordinare i da.ti in memoria principale. I DBMSs usualmente non possono caricare tutto il DB nel buffer perciò, ordinano separatamente e poi effettuano il merge di tabelle, usando lo spazio disponibile nel buffer.

Accesso con indice: gli indici d’accesso sono creati dall’amministratore  della BD per favorire l’accesso associativo delle interrogazioni quando includono:
Predicati semplici (es. Ai = v)
Predicati d’intervallo (es. vl 5 Ai 5 v2).
Questi predicati sono detti valutabili dall’indice: in presenza di congiunzioni o disgiunzioni di predicati accade in generale che alcuni predicati siano valutabili mentre altri no.

2. Implementazione di operazioni algebriche: selezi.one. ioin Implementazione della selezione:
Predicati di selezione semplici -> es. cr  dno=5  (employee)
Predicati  con  çcmgiUil.zione  di condizioni  ->  es. cr  dno=5  and  salary>30000  !illQ  sex= F
(employee)
Predicati con c::ltsgiunzione di condizioni -> es. cr  dno=5 9r salary>30000 or sex=F (employee)

Selezioni semplici:

Metodi d’accesso disponibili:
Scan lineare
Ricerca binaria -> per file ordinati sulla stessa chiave del predicato
Accesso  ad  indice  · ·

Strategie nel caso di conqiunzi.one di predicati:

Il DBMS sceglie il predicato valutabile più selettivo per l’accesso primario e valuta gli altri predicati nel buffer. (es: trova tutte le persone con più di 100 anni e gli occhi neri).

Selettività delle condizioni:

É il rapporto tra il numero di records che soddisfa la condizione e il numero di records totale del file (relazione). Assumendo uniformità di distribuzione dei valori di un attributo, è pari alla probabilità che un record soddisfi una condizione su un attributo.

Selettività di Ai = v su una relazione R: sel (Ai = v, R)
quando Ai è chiave: 1I IR I
quando sono presenti n valori distinti per Ai: 1/ n

Il DBMS stima la selettività in base a  statistiche  raccolte  durante  l’esecuzione  di query precedenti. I predicati  con  congiunzioni  sono  valutati  partendo  dall’attributo più selettivo: mini (sel (Ai = v, R)).

Strategi,e nel caso di disqi,unzione di predicati:

Se qualcuno non è valutabile è necessario uno scan; se tutti sono valutabili, si possono utilizzare gli indici oppure uno scan; se si utilizzano gli indici allora occorre eliminare i duplicati.
Conviene  uno  scan  quando  l’interrogazione  è  poco  selettiva.  (es:  trova  tutte  le persone con più di 100 anni o gli occhi neri)

Join : metodi per  il calcolo del  fo in

I join sono le operazioni più costose (e spesso più frequenti) per un DBMS. Esistono vari metodi per la valutazione di join:
nested-loop Tali metodi sono basati su uso combinato di:
single loop - scan
merge-scan -  hashing
– hnsh - sort

Valutazi.one dei costi usati per  confrontare  i diversi metodi:

Costi d’accesso a memoria secondaria
Costi di memorizzazione di file intermedi
Costi di calcolo
Costi d’utilizzo della memoria principale

Il fattore di costo più importante è il primo, misurato con il numero di blocchi caricati nel buffer durante il calcolo del join. Si trascurano i costi di accesso al disco e le code al canale e i costi di memorizzazione dei risultati su memoria secondaria (blocchi caricati su disco).

Nel nested loop una tabella viene definita come ESTERNA e una come INTERNA. Si apre una scansione sulla tabella esterna; per ogni tupìa ritrovata dalla scansione, si preleva ilvalore dell’attributo di join  e si cercano qumai le tuple della tabella interna che hanno lo stesso valore.

* Efficienza  di nested-loop join *

Conviene  usare  il file più  piccolo  per  il ciclo esterno -> ottimizza l’uso dei  blocchi di buffer e quindi il numero di caricamenti di blocchi: infatti, applichiamo il metodo di valutazione dei costi.

Es: EMP join dno=dnumber DEPT
Se DEPT occupa bD =  10 blocchi e EMP occupa bE = 2.000 blocchi e assumiamo di avere nB = 6 blocchi di buffer disponibili.
Assumiamo di usare EMP per il ciclo esternoStrategia d’allocazione dei blocchi:
Usiamo nB -1 blocchi per EMP, 1 blocco per DEPT
allora: ogni blocco in EMP viene letto una volta
l’intero file DEPT viene letto ogni volta che viene caricato un nuovo set di (nB -1) blocchi diEMP

Numero totale di blocchi caricati:
EMP: bE
DEPT: bD * [bE / (nB -1)].
Totale = 2.000 + 10*(2.000/ 5) = 6.000 blocchi

Usando invece DEPT per il ciclo esterno, otteniamo
Totale =  10 + 2.000*(10/ 5) = 4.010 blocchi

Single  loop join

Variante al nested-loop  se esiste una struttura d ‘accesso diretto su B di S. Per ogni record r in R cerca con accesso diretto i record s in S tali che s(B) = r(A).
Es: EMP join ssn = mgrssn DEPT “ogni dipartimento con il proprio manager” Ora il numero di blocchi trasferiti è influenzato da:
* bD numero di blocchi di DEPT, * bE numero di blocchi di EMP
Join selection factor (JSF) cioè la percentuale di record che sono messi in join con l’altra relazione.
Assumiamo I DEPT I   = 50, I EMP I   = 5000

JSF (DEPT) = 1 (perché ogni dipartimento ha un manager)
JSF  (EMP) = 50/ 5000    = 0,01    (perché solo  gli  impiegati che sono   manager partecipano  al join)
IL = numero di livelli della struttura ad indici che deve essere visitata

Assumiamo che siano definiti indici secondari su:
SSN con IL (SSN) = 4 e su
MGRSSN con IL(MGRSSN)  = 2

Single loop su EMP
Numero  di blocchi  = bE + ( I EMP I   *(ILIDEP’I1 +  1)) = 2.000 +(5.000*3)=  17.000

A. Single loop su DEPT
Numero di blocchi = bD + ( I DEPT I   *(IL(EMP) +  1)) =  10 + (50 * 5)=260

In altre parole:
dato d in DEPT: la probabilità di trovare e in EMP tale che d.mgrssn = e.ssn è pari ad 1 (nessuno spreco di accessi)
dato e in EMP: la probabilità di trovare d in DEPT tale che d.mgrssn = e.ssn = 50/ 5000 (carico inutilmente 4950 records di EMP!!)

Conviene  usare  DEPT (cioè la  relazione  con  selection  factor  più  alto) nel  ciclo esterno, EMP nel ciclo interno con indice secondario su EMP.SSN

3. Merge-scan foin

Questa tecnica assume che entrambe le tabelle siano ordinate in base agli attributi di join. Vengono aperte due scansioni su di esse, che a questo punto scorrono le tuple in parallelo. Le scansioni possono così ritrovare nelle tuple valori ordinati degli attributi di join; quando coincidono vengono generate ordinatamente tuple del risultato. È utilizzabile anche su indici secondari (più record per ogni valore della chiave), tuttavia se i records puntati non sono fisicamente adiacenti, è necessario un numero maggiore di caricamenti di blocchi.

Costo del merge-scan join:
unico passaggio su ciascun file
# blocchi caricati: #blocchi R + #blocchi S
Richiede però l’ordinamento sugli attributi di join!

Hash- join

È un algoritmo a due fasi.

FASE  1:
Irecord  di R e S sono memorizzati in una tabella hash: usando come chiavi R.A e
S.B e la stessa hash function h per R.A e S.B.

Calcola h( r[A] ) per ogni r in R, e h( s[B] ) per ogni s in S. Richiede uno scan di R e S;
Osservazi.one:
Dati r in R e s in S, se r[A]= s[B], allora h( r[A] ) = h( s[B] ): r e s appartengono allo stesso bucket  (blocco su disco).
Quindi, è sufficiente effettuare join limitati ad ogni bucket.

Passo b): Per ogni bucket indotto da h(),  effettua il join  dei record  all’interno del bucket.Iljoin globale è l’unione dei join di ogni bucket.

Costo dell’ hash-join:
unico passaggio su ciascun file
non richiede ordinamento

3. Ottimizzazi.one algebrica

Tenuto conto che l’algebra relazionale è caratterizzata da molte regole di trasformazione di equivalenza, si applicano all’albero trasformazioni equivalenti che riducono tempo di esecuzione o occupazione di memoria.
i- SEQUENZA a -> Una selezione congiuntiva può essere sostituita da una sequenza d’operazioni  di  selezione  individuali.
ES: o- 1ANJ:Lç2._ ANJ:?. -S’.!!:JRJ gy_iyal It . IJ Jq ç (.,,o çn(R’.).Jl
COMM a -> Commutatività della selezione. ES: o cl (o c2(R.)) equivalente o c2 (o cl( R ))
COMM a X -> Commutatività di selezione e prodotto cartesiano. ES: o c( R X S ) equivalente (o c (R.)) X S
COMM a n -> Commutatività di selezione e proiezione. ES: o c (n (R)) equivalente n (o c (R))
5. EQIUV X a e Join -> Equivalenza di prodotto cartesiano e selezione con Join.
6. COMM n e Join -> Commutatività di proiezione e join.

Osservazione: selezioni e proiezioni riducono le dimensioni dei file e migliorano la performance del join. Il costo di join è proporzionale alle dimensioni dei file, perché consideriamo il numero di blocchi caricati nel buffer. ·
REGOLA:  applicare  selezione  e proiezione  prima.  possibi le  e in ogni    caso prima. di calcolare i join.

4. Ottimizzazione  basata sui costi

Ottimizzazione basata sui costi:

Occorre scegliere, in presenza di alternative, quali operazi.oni di accesso ai dati svolgere. In particolare, per quanto concerne il primo accesso ai dati, occorre talvolta scegliere fra uno scan e un accesso tramite indici.
Occorre scegliere l’ordine delle operazi.oni da compiere (ad es. l’ordine fra i vari join dell’interrogazione).
Quando  il  sistema offre varie  alternative  per  la realizzazione  di un ‘operazione,
occorre scegliere quale alternativa associare a ciascuna operazi.one.
Quando l’interrogazione o il metodo di realizzazione di un’operazione richiedono un ordinamento, occorre definire a quale livello della strategia svolgere l’operazi.one d’ordinamento.

Approccio per l’ottimizzazione:

Gli ottimizzatori costruiscono un albero delle alternative, in  cui  ogni  nodo corrisponde a fissare una particolare opzione fra quelle  citate  in  precedenza.  Ogni nodo FOGLIA dell’albero corrisponde a fissare una specifica strategia di esecuzfone dell’interrogazione, descritta dalle  scelte  che  si trovano  percorrendo  il cammino  che va dalla radice al nodo foglia. IL PROBLMA DELL’OTTIMIZZAZIONE è RIFORMULATO NELLA RICERCA DEL NODO FOGLIA A CUI CORRISPONDE UN COSTO MINORE.
Ogni nodo foglia ha un costo pari a Ctotale = C I/O * n I/O + Ccpu * ncpu. con
C 1;0 , Ccpu parametri noti e
n I/O e ncpu  sono valori  globali che indicano il numero d’operazioni d’ingresso/ uscita e ilnumero d’istruzioni necessarie per valutare il risultato dell’interrogazione.

Profili delle relazioni:

Ciascun DBMS commerciale possiede informazioni quantitative relative alle caratteristiche delle tabelle, organizzate in strutture dati, dette profili delle relazi.oni, che vengono memorizzare nel dizionario dei dati. I profili contengono queste informazioni:
la cardinalità CARD(T) (numero di    p  ) di ciascuna tabella T
la dimensione in byte, SIZE(T) di ciascuna tupla di T (fissa, media)
la dimensione in byte, SIZE(Aj,T): di ciascun attributo Aj di T;
il numero di valori distinti VAL(Aj,T) di ciascun attributo Aj di T;
i valori minimo MIN(Aj,T) e massimo MAX(Aj,T), di ciascun attributo Aj di T
bfr = # records / blocco in T
L’amministratore periodicamente calcola i  valori dei profili (primitiva update statistics).

Obiettivo della valutazione basata sui costi:

Formulare ipotesi sulla dimensione dei risultati intermedi prodotti dalla valutazione d’operazioni algebriche con un approccio statistico.
Data T, vogliamo calcolare il profilo di
T’ = a Ai=v (T)
T’ = n A l…,An (T)
T’ = Tl join A=B T2

Approssimazioni  nelle formule:

Uniforme distribuzione dei dati nelle tabelle
Assenza di correlazione tra le varie condizioni presenti nell’interrogazione
Assenza d’informazione ulteriore sui domini di valori

Altre tecniche:

Realizzazfone ad hoc di strutture temporanee
Pipelining, cioè possibilità di eseguire l’intero albero delle operazioni per una parte delle tuple estratte, invece che realizzare interamente ogni operazione.
Parallelismo, cioè possibilità di eseguire parti delle query indipendentemente con diversi processori
Talvolta è necessario riscrivere i risultati in memoria secondaria, ciò aumenta i costi.

Progettazione fisica per modelli relazionali:

Molti DBMS relazionali supportano solo gli indici e il clustering delle tuple: la progettazione fisica può essere ridotta all’attività di identificazione degli indici definiti in ogni relazione. La chiave di una relazione è spesso involved in selection or join operations (or both). For this reason, each relation normally supports a unique index on the primary key
Other indexes are added so as to support the most common query predicates
If the performance is unsatisfactory, we can tune the system by adding or dropping indexes
It is useful to check how indexes are used by queries, by using the show plan command.

SISTEMI DI BD DISTRIBUITE, ETEROGENEE E AUTONOMEPARTE

Finora abbiamo trattato  problematiche  riguardanti  i sistemi di gestione  di basi  di dati centralizzati.
L’ architettura dati di un DBMS centralizzato e’ stata  definita dall’ente  ANSI/SPARC  ed  e’
a tre livelli

* Le caratteristiche  di un DBMS centralizzato *
Unico schema logico, quindi unica semantica;
Unica base di dati, quindi unico insieme di record osservati e aggiornati da tutti gli utenti;
Unico schema fisico, quindi unica rappresentazione dei dati;
Unico linguaggio di interrogazi.one, quindi unica modalità di accesso e selezione dei dati di interesse;
Unico sistema di gestione, quindi unica modalità di accesso e aggiornamento
per le transazioni;
Unica mod alità di ripristino afronte di guasti.

Architettura di un sistema DB distribuito

* Caratteristiche  dei sistemi di Basi di Dati DEA *

Distribuzione dei dati su server multipli
Frammentazione:’ porzioni diverse del DB sono allocate a server diversi
Replicazione: esistono copie multiple di porzioni del DB, allocate su server diversi
Trasparenza: un DDBMS offre diversi gradi di trasparenza nell’accesso a dati distribuiti e la gestione di transazioni globali su più server.

2. Frammentazi.one e allocazi.one deiframmenti

Data una relazione R, si definiscono due tipi di frammenti di R:

./  Frammentazione orizzontale:  partizione  di  R  in  n  relazioni  (frammenti)
{Rl ,…Rn} tali che:
./ Schema(Ri) = schema(R) per tutti gli i;
./  Ogni Ri contiene un sottoinsieme dei records di R
./  Normalmente definito da una selezione, i.e. Ri = a Ci (R)
./  Completa: Rl U R2 U …U Rn = R
70

./   Frammentazione verticale: partizione di R in n relazioni (frammenti)
{Rl ,…Rn} tali che:
./  Schema(R)  = L = (A l,…Am),  Schema(Ri)  = Li = (Ai l , …,Aik)
./  Li U L2 U …U Ln = L
./  Li n Lj = chiave primaria (R) per ogni i  j

* Regole di correttezza della frammentazione *

Completezza ->  ogni  record  della  relazione  R  frammentata  deve  poter  essere ritrovato in almeno uno dei frammenti
Ricostruibilità -> La relazione  R di partenza  deve poter  essere ricostruita  senza
perdita di informazione a partire dai frammenti
Disgiunzione -> Ogni record della Relazione R deve essere rappresentato in uno solo dei frammenti

NB La disgiunzione può essere persa per scopi di ottimizzazione delle interrogazioni (attenzione: rende più costosa la consistenza delle diverse copie)

* Schemi di allocazione  dei frammenti *

Ogni frammento è allocato in generale su un nodo diverso (e su fùe diversi) quindi, la relazione esiste solo in modo virtuale cioè non è materializzata su un unico nodo.
Lo schema di allocazione descrive il mapping  Frammento ->  nodo

Mapping non-ridondante: esiste una sola copia di ogni frammento su un unico nodo.
Mapping ridond ante: almeno un frammento è replicato su più di un nodo.

4. Livelli di trasparenza  nei sistemi di BD DEA

Trasparenza: separazione della semantica di alto livello (eg queries SQL) da dettagli implementativi di più basso livello

Livelli di trasparenza specifici del caso distribuito:
Dati
Frammentazione
C)  Replicazione   (Allocazione)
D) Linguaggio

A) Indipendenza  dei dati
Invarianza   delle   applicazioni (transazioni, interrogazioni) da   camibamenti    nella definizione e organizzazione dei dati
./’  Logical  Data  Independence:  indipendenza  dell’applicazione  da  perturbazioni
dello schema logico; un’applicazione che utilizza un frammento dello schema non subisce modifiche quando altri frammenti vengono modificati
./’ Physical Data Independence: indipendenza dell’applicazione da perturbazioni
dello schema fisico garantite dai tre livelli ANSI – SPARK

B) Trasparenza di Frammentazione
L’applicazione ignora l’esistenza di frammenti cioè relazione ->  sotto-relazioni. Problema:una query definita su un’intera relazione va ora scomposta in più query, una per ogni sotto-relazione. Global query -> fragment queries.
La strategia di query processing è basata sui frammenti piuttosto che sull’intera relazione

Trasparenza  di Replicazione
L’applicazione è consapevole dei frammenti, ma ne ignora l’allocazione sui nodi La replicazione migliora la performance: consente di supportare applicazioni con requisiti  operazionali diversi sugli stessi dati
Aumenta la località dei dati utilizzati da ogni applicazione: aumenta l’affidabilità
complessiva
Spazio delle decisioni: si decidono quali frammenti replicare, quante copie mantenere e dove allocare le copie.
Complicazioni architetturali: gestione della transazioni e updates di copie multiple

Trasparenza  di linguaggio
L’applicazione deve specificare sia i frammenti che il loro nodo, ma non deve conoscere lo specifico linguaggio o dialetto di interrogazione

Transparenza di allocazione

L’applicazione deve indirizzare i f rammenti ma senza specif icare la loro allocazione
Trasparenza di linguaggio
L’applicazìone deve indìrizzare sia i frammenti che la loro allocazione, non deve conoscere il linguaggio utilizzato nel nodo
Queries espresse a livelli piu1 alti di trasparenza vengono tradotte a
questo  livello dal!’ ottim izzatore di query distr i buite

* Criteri  di classificazione  dei sistemi di BD DEA *
Modelli architetturali per DDBMS
Un DBMS DEA è in generale una federazione di DBMS che collaborano nel fornire servizi di accesso ai dati con livelli di trasparenza definiti (ci riferiamo ai diversi nodi del DBMS DEA).

È possibile distinguere diverse architetture e utilizzare le dimensioni ortogonali utili per la classificazione
– Autonomia
Distribuzione
Eterogeneità

Autonomia  *

Fa riferimento alla distribuzione del controllo Si distinguono diverse forme di autonomia
../  Di design: ogni nodo adotta un proprio modello dei dati e sistema di gestione delle transazioni
../  Di comunicazione: ogni nodo sceglie la porzione di dati che intende condividere
con altri nodi
../ Di esecuzione: ogni nodo decide in che modo eseguire le transazioni che gli vengono sottoposte.

Tipi di autonomia

../ DBMS Strettamente integrati (nessuna autonomia)
Dati logicamente centralizzati
Un unico data manager responsabile delle transazioni applicative
I data manager non operano in modo autonomo
../ Semi-autonomi
Ogni data manager è autonomo ma partecipa a transazioni globali
Una parte dei dati è condivisa
Richiedono modifiche architetturali per poter fare parte della federazione
../ Totalmente autonomi
Ogni DBMS lavora in completa autonomia ed è inconsapevole dell’esistenza degli altri

Distribuzione  *

Fa riferimento alla distribuzione dei dati. Si possono distinguere:
../  Distribuzione clienti server, in cui la gestione dei dati è concentrata nei server, mentre i client forniscono l’ambiente applicativo e la presentazione .
../ Distribuzione peer-to-peer, in cui non c’è distinzione tra client e server, e tutti i
nodi del sistema hanno identiche funzionalità DBMS
Nessuna distribuzione.

Eterogeneità  *

Può riguardare
Modello dei dati ES. Relazionale, Gerarchico, Object Oriented
Linguaggio di query ES. Diversi dialetti SQL, Query by Example, Linguaggi di interrogazione  00
Gestione delle transazi.oni ES. Diversi protocolli per il concurrency control e per il
recovery
Schema concettuale e schema logico ES. Un concetto rappresentato in uno schema come attributo e in un altro come entità

Integrazione cli basi cli dati e sistemi informativi *

L’esigenza di progettare fin dall’inizio o integrare a posteriori sistemi distribuiti, eterogenei,autonomi emerge in molti casi:
-Evoluzione e/ o integrazione di componenti applicativi sviluppati separatamente (per ragioni tecniche, organizzative o temporali)
cooperazione di processi in precedenza separati
cooperazione  (o fusione) di enti o aziende indipendenti   ed è stimolata dallo svilu o delle reti

Tipologie di sistemi di BD distribuite

Tipologie più rilevanti sono sottolineate

../  DBMS distribuiti (DDBMS): strettamente integrati, omogenei
../  DBMS distribuiti eterogenei: strettamente integrati ma con eterogeneità di varia  natura
../ DBMS federati e logicamente integrati: semiautonomous, eterogenei Es: insieme di DBMS che gestiscono dati strutturati, immagini, video, per i quali viene creata un’interfaccia integrata di accesso
../ Multi Data Base MS: totalmente autonomi, omogenei / eterogenei
* Multi  DataBase  Systems *
Et.erogeneità di schema: Ogni DB presenta uno schema indipendente dagli altri
Autonomia di accesso: È molto più difficile offrire trasparenza
Assenza di transazfoni globali: Un DBMS può non partecipare a transazioni controllate esternamente ·

* Differenze nelle architetture dei DDBMS e sistemi multi database *
Le diverse tipologie danno luogo a diverse architetture dati e funzioni.
Architettura dati DDBMS
Architettura funzionale DDBMS
Architettura dati per sistemi multidatabase con schema concettuale globale senza schema concettuale globale
-Architettura funzionale per sistemi multidatabase

* Ruolo dei DBMS ai diversi nodi *
Per ciascuna funzione (query processing, transaction manager, ecc) vi può essere una gestione:
Centralizzata/ gerarchica vs distribuita
Con assegnazione statica vs dinamica dei ruoli

* Architettura  dati MDBS con schema concettuale  globale *

Differenza fondamentale: definizione del Global Logical Schema
Rappresenta solo una parte dei Local Logical Schemas
Il Global Logical Schema integra i Local Logical Schemas oppure i Local External Schemas

Local Internal Schema (LIS) -> Livello fisico dell’organizzazione dati su un nodoLocal Logi,cal Schema (LLS) -> Descrive lo schema logico a livello di singolo nodoGlobal Logical Schema (GLS) -> Livello logico globale su tutti i nodi
Extemal Schema (ES) -> Viste dello schema logico disponibili a diverse classi di
applicazioni

Architettura  MDBS senza schema concettuale  globale *

Nei sistemi con autonomia massima non esiste lo schema concettuale globale Lesingole applicazioni negoziano la visibilità di frammenti di schemi locali per costruire schemi esterni

Ruolo del mediatore:

fornisce allo strato superiore una rappresentazione virtuale unica delle basi di dati che coordina
traduce le richieste di esecuzione di queries in termini di frammenti di queries, inviate ai wrapper
ricompone i risultati restituiti dai wrapper

./ Ruolo del wrapper:

traduce la richiesta che proviene dal mediatore in termini della rappresentazione logico fisica dello schema sottostante
restituisce ilrisultato al mediatore
* Differenze  di progettazione  tra DDBS e MDBS *
La natura fortemente integrata dei DDBMS porta a adottare per essi un approccio top-down alla progettazione, che rispetto alla progettazione di applicazioni DBMS

Ulteriori architetture per DBMS: il parellelismo *
Accanto alle precedenti architetture, lo sviluppo delle architetture parallele ha portato a definire anche per i DBMS modalità di accesso ai dati che sfruttano il parallelismo nella esecuzione di singole interrogazioni e di gruppi di interrogazioni

Architetture Client-server: separazione del server DB dal client
Basi di Dati DEA: diversi server DBMS utilizzati dallo stesso insieme di applicazioni
Basi di Dati Parallele: incremento delle prestazione mediante parallelismo sia di storage devices che di processore
Basi di Dati Replicate: replicazione della stessa informazione su diversi server per motivi diperformance
Data warehouses: DBMS dedicati specificamente alla gestione di dati per il
supporto alle decisioni
Portabilità e interoperabilità nei DBMS DEA *
Portabilità : capacità di eseguire le stesse applicazioni DB su ambienti runtime diversi. - Compile time
– Facilitata dall’aderenza a standards (e.g.: SQL-2, SQL-3)  Interoperabilità: capacità di eseguire applicazioni che coinvolgono contemporaneamente sistemi diversi ed eterogenei:
Run-time
Facilitata dalla standardizzazione dei protocolli di accesso ai dati:
Database Connectivity (ODBC)
X-Open Distributed Transaction Processing (DTP)
Normalmente  limitata al livello di accesso

L’eterogeneità a livello di schema logico e/ o concettuale richiede altri strumenti di standardizzazione.

DBMS DISTRIBUITI (DDBMS) PARTE 3.2
* Vantaggi dei DDBMS *

La partizione dei dati corrisponde spesso a quella naturale delle applicazioni e degli utenti
Utenti locali vs utenti globali (ES: un’organizzazione con sedi diverse distribuite geograficamente)
Vale il principio che i dati risiedano vicino a dove vengono usati più spesso
Ma sono globalmente raggiungibili

Qualità dei DDBMS rispetto al DBMS *
I DDBMS offrono maggiore flessibilità, modularità e resistenza ai guasti
+  Distribuzione  dei dati incrementale  e progressiva:  la configurazione  si adatta alle esigenze delle applicazioni
Presenza d’elementi di rete: maggiore fragilità
+Presenza di ridondanza: maggiore resistenza ai guasti dei singoli nodi (“fail soft”)

Vantaggi  di prestazioni  *
Distribuendo un DB su nodi diversi, ogni nodo supporta un DB di dimensioni più ridotte – Più semplice da gestire e ottimizzare rispetto alle applicazioni locali
Ogni nodo può essere ottimizzato indipendentemente dagli altri
Traffico totale (transazioni / sec) distribuito sui nodi
– Parallelismo fra transazioni locali che fanno parte di una stessa transazione distribuita

Indipendenza  locale  I  cooperazione  tra server *

../ Ogni server mantiene la capacità di supportare applicazioni in modo indipendente
Le interazioni  con  altri server e applicazioni  remote rappresentano  un  carico supplementare  sul sistema
../  Traffico di rete in questa configurazione: - Queries provenienti dalle applicazioni
– Risultati provenienti dal server
../ Ottimizzazione: l’elemento critico è la rete;
../  Esigenza di distribuire i dati in modo che la maggior parte delle transazioni sia locale, o eviti lo spostamento di dati tra nodi

* Funzionalità specifiche dei DDBMS *

Trasmissione sia di queries che di frammenti di DB tra i nodi
Catalogo DB: deve gestire la mappa globale del DB - Frammentazione
– Replicazione
Query processor: il query plan include sub-queries locali.
Replicazione: -Strategie di sincronizzazione delle repliche
Controllo di concorrenza: algoritmi distribuiti
Strategie di recovery di singoli nodi, gestione dei guasti
* Tipiche  applicazioni delle BD per  tipo  di DBMS  e tipo  di rete  *

Tipo di rete Tipo di rete
Tipo di DBMS LAN WAN
Omogeneo Applicazioni gestionali e finanziarie Sistemi di prenotazione e applicazioni finanziarie mono organizzazione
Eterogeneo Applicazioni gestionali iter funzionali Sistemi di prenotazione e applicazioni finanziarie/bancarie pluri organizzazione

QUERY PROCESSING NEI DDBMS

In  un  contesto  di  dati  centralizzati,  le  strategie  d’esecuzione  delle  queries  sono esprimibili tramite estensioni d’algebra relazionale: i query trees.
In un DDBMS, l’algebra relazionale non è più sufficiente.
Una strategia d’esecuzione deve comprendere anche le operazioni e i costi relativi a:
trasferimento di frammenti tra nodi;
scelta del sito migliore dove processare i dati
Queste nuove variabili  rendono ulteriormente  complessa l’ottimizzazione  di query distribuite

* Obiettivi del query processing  distribuito:  parametri  utilizzati *
Costo totale = somma dei costi delle operazioni + costi di comunicazione (trasmissione)
Response time (la computazione può essere parallela)

Rispetto al caso centralizzato, in cui i costi più rilevanti sono quelli di trasferimento dei blocchi, consideriamo i costi di comunicazione.
Costo comunicazfone  = CMSG * # msgs + CTR * # butes
CMSG = costo fisso di spedizione/ ricezione messaggio (setup)
CTR = costo (fisso rispetto alla topologia!) di trasmissione dati
Response time (solo comm) = CMSG * seq   # msgs   + CTR * seq   # bytes
seq_#msgs è il massimo numero di messaggi che devono avvenire in modo sequenziale. Cioè i costi delle operazioni in parallelo non si sommano.

* Rapporto tra costo di comunicazione e costo di 1/0 *

Nelle grandi reti geografiche costo di comunicazione> > costo di I/ O (fattore 1 a
10)
Nelle reti locali costo di comunicazione e costo di I/ O sono paragonabili Tendenza:  il  costo  di  comunicazione  è  ancora  il fattore  critico,  ma  si  stanno avvicinando conviene utilizzare pesi nelle formule di costo.

Esempio: costi di comunicazione

Risultato
al nodo 3

Costo di trasferimento di x unità da 1 a 3 e di y unità da 2 a 3:
Costo comunicazi.one 2 CMSG + CTR * (x + y)
R,f?$Pf> tjT!J-lt = max(CMSG + CTR * x, CMSG + CTR * y) dato che x e y vengono trasferiti  in parallelo
Minimizzazione  response  time: più  parallelismo può  portare  ad  aumento  del costo totale (maggiore numero di trasmissioni  e processing locale)
Minimizzazione  costo totale:  utilizza  di più  le  risorse  aumento  del throughput
(con peggioramento  del response time in generale)

* FASI DEL QUERY PROCESSING *

Sono quattro e sono:

Query decomposition   <- Global schema
Opera sullo schema logico globale
Non considera la distribuzione
Usa tecniche d ‘ottimizzazione algebrica analoghe a quelle centralizzate
Produce un query tree – non ottimizzato rispetto ai costi di comunicazione

Data localization  <- Fragment  schema
Considera la distribuzione dei frammenti
Ottimizza le operazioni rispetto alla frammentazione,  con tecniche  di riduzione Es. EMP a eno = ‘E20’
EMPl O eno = ‘E20’ U EMP2 o eno = ‘E20’ U EMP3 o eno = ‘E20’
Riduzione (E20 è solo in EMP2) EMP2 a eno = ‘E20’
Produce una query che opera sui frammenti – non ottimizzata

Global query optimization  <- Statistiche sui frammenti
Strategia d’esecuzione: nel query tree agli operatori d ‘algebra relazionale vengono aggiunti gli operatori di comunicazione (send/ receive tra nodi)
Obiettivo:  trovare  l’ordinamento  “migliore”  delle  operazioni  definite  dalla fragment
query
Utilizza modelli di costo che tengono conto dei costi di comunicazione
Le decisioni più rilevanti riguardano:
L’ordine dei join n-ari
La scelta tra join e semijoin
CONTROLLO  DI CONCORRENZA  NEI DDBMS *
DDBMS e transazioni – classificazione

../ Richieste remote: sono transazioni di sola lettura costituite cioè da un numero arbitrario di interrogazioni select, indirizzate a u,n solo DBMS remoto.
../  Transazioni remote: sono transazioni  costituite  da un  nu,mero  qualsiasi  di
comandi SQL( select, insert, update, delete) dirette a un solo DBMS remoto .
../ Transazioni distribuite: sono transazioni rivolte a un numero generico di DBMS, ma in cu,i ciascun comando SQL fa riferimento a dati memorizzati su un solo DBMS

Richieste distribuite: sono transazioni arbitrarie costituite da un numero arbitrario di comandi SQL, in cui ciascuna query può far riferimento a dati distribuiti su qualunque DBMS.

Nel primo caso il DBMS remoto può essere solo interrogato; nel secondo caso è possibile operare scritture (ma ciascuna transazione scrive su un solo DBMS); nel terzo caso è possibile includere in una transazione scritture su più nodi, ma ciascuna interrogazione SQL è indirizzata a uno specifico DBMS; nell’ultimo caso la interrogazione SQL deve essere distribuita su più nodi.

DDBMS e proprietà ACID *
La distribuzione non ha conseguenze su consistenza e durabilità
Consistenza:  non  dipende  dalla  distribuzione,  perché  i vincoli  descrivono  solo proprietà locali ad un DBMS
Durabilità: garantita localmente da ogni sistema.
Invece, altri problemi caratterizzano la tecnologia delle basi di dati distribuite:
Ottimizzatore
Concurrency contro!(Isolamento)
Reliability contro!, recovery manager (Atomicità)

1. Controllo di concorrenza (Isolamento)

In questo caso, una transazione ti si scompone in sotto-transazioni tij dove il secondo indice denota il nodo del sistema in cui la sotto-transazione opera.

La serializzabilità locale presso gli schedule non è una garanzia sufficiente per la serializzabilità. Osservando il grafo di conflitti globale scopriamo un ciclo tra t1 e t2.

Serializzabilità globale
La proprietà di serializzabilità globale estende quella  di  conflict-serializability  gia vista: il grafo globale dei conflitti delle transazioni distribuite è l’unione dei grafi delle schedules locali. La schedule globale è serializzabile se e solo se il grafo è aciclico.

L’algoritmo  2PL si estende facilmente  al caso distribuito  e d sono due strategie:
./ Centralized 2PL
./ Primary copy 2PL

Strategia centralized 2PL

Attori:
Ogni nodo ha un Lock Manager, uno viene eletto LM coordinatore
Il Transaction Manager del nodo dove inizia la transazione è considerato TM coordinatore
La transazione è anche eseguita su altri Data Processor e corrispondenti nodi

Strategia:
Il TM coordinatore formula al LM coordinatore le richieste di lock
Il LM le concede, utilizzando un 2PL
Il TM le comunica ai DP
I DP comunicano al TM e il TM al LM la fine delle operazioni

Problema: Il nodo dell’unico lock manager diventa un cono di bottiglia

Strategia Primary copy 2PL

Per ogni risorsa prima dell’ assegnazione dei lock è individuata una copia primaria. Diversi nodi hanno lock managers  attivi, ognuno gestisce una partizione  dei lock complessivi, relativi alle risorse primarie residenti nel nodo.
Per  ogni  risorsa  nella  transazione,  il  TM  comunica  le  richieste  di  lock  al LM responsabile della copia primaria, che assegna i lock.
Conseguenze:
Evita il cono di bottiglia
Complicazione:  è  necessario   determinare  il  lock  manager  che  gestisce  ciascuna risorsa.
– È un problema di directory globale

GESTIONE DEI  DEADLOCK  *
Dead.lock distribuito
È causato da un’attesa circolare tra due o  più nodi. È gestito comunemente nei DDBMS tramite timeout. Esiste anche  un’algoritmo asincrono di rilevazione del deadlock in ambiente distribuito.

Assumiamo un modello base di dati distribuita in cui le transazioni vengono decomposte in sotto-transazioni; in questo contesto è possibile che le sottotransazioni si attivino in modo sincrono e in tal caso quando la sotto­ transazione tl 1 attiva la sotto-transazione t12, tl 1 si mette in attesa della terminazione di t 11.
Questo può dare origine a due tipi di attesa:
ATTESA DA REMOTE PROCEDURE CALL: due sotto-transazioni della stessa transazione possono essere in attesa su DBMS distinti perché l’una attende la terminazione c;iell’altra
ATTESA DA RILASCIO DI RISORSA: due sotto-transazioni diverse sullo stesso DBMS possono attendersi in quanto una blocca un dato a cui l’altra vuole accedere.

* Algoritmo  di risoluzione  del deadlock distribuito *

È attivato periodicamente sui diversi nodi del DDBMS:
In  ogni  nodo,  integra  la  sequenza  d’attesa  con  le  condizioni  di attesa locale  degli altri nodi logicamente legati da condizioni EXT
– Analizza le condizioni d’attesa sul nodo e gestisce i deadlock locali
Comunica le sequenze d’attesa ad altre istanze dello stesso algoritmo

È possibile che lo stesso deadlock venga riscoperto più volte. Per evitare il pròblema, l’algoritmo invia le sequenze di attesa:
in avanti, verso il nodo ove è attiva la sottotransazione ti attesa da tj
-Solamente quando i > jdove i e j sono gli identificatori delle sottotransazioni

* RECOVERY MANAGER  (ATOMICITÀ) *
Gestione dei guasti nei DDBMS

Per garantire l’atomicità è necessario che tutti i nodi che partecipano ad una transazione giungano alla stessa decisione circa la transazione (commit o abort); è perciò necessario eseguire protocolli particolari, detti protocolli di commit, che consentano ad una transazione di raggiungere correttamente una decisione di commit o abort.
Un sistema distribuito è soggetto alle cadute di un nodo, che possono avvenire su
ogni elaboratore; il guasto su un nodo può essere sw o hd. In aggiunta alle cadute dei nodi, è possibile che vengano persi  dei  messaggi, che lasciano l’esecuzione di un protocollo in  situazione  di incertezza.  Proprio  per  garantire  l’avanzamento  di  un protocollo, ciascun messaggio del protocollo è seguito da un messaggio di  risposta, detto ACK; tuttavia la perdita di uno dei due messaggi, quello primario o  quello di ACK, lascia ilmittente in una situazione d’incertezza.
Dato che i messaggi possono essere persi, i protocolli di commit pongono un tempo limite alla ricezione del messaggio d’ack, trascorso il quale il mittente decide di procedere comunque con il protocollo.
Infine, è possibile che qualche collegamento  della  rete  si  interrompa;  in  tal  caso, oltre alla perdita di messaggi, si può verificare il partizi. onamento della rete in 2 sotto reti che non comunicano tra loro.

Il protocollo two phase  commit  (2PC) *

Ricorda nelle sue linee generali un matrimonio. La decisione di due persone viene accolta e ratificata da una terza persona, che celebra il matrimonio. Perché  il matrimonio abbia luogo è necessario che entrambi i partecipanti esprimano la volontà di sposarsi; il celebrante, durante la prima fase, raccoglie il desiderio di sposarsi espresso separatamente dai due partecipanti , per poi in una seconda fase, dar loro notizia che il matrimonio è avvenuto.
Promesso  sposo —+  ciascun  server —+  resource  manager  (RM)
Celebrante  (Coordinatore)  —+  processo  —+   Transaction Manager  (TM)

I protocolli di commit consentono ad una transazione di giungere ad una decisione d ‘abort/ commit su ciascuno dei nodi che partecipano ad una transazione.
Idea:  la  decisione  di commit/ abort  tra  due  o  più  partecipanti è  coordinata  e certificata da un ulteriore partecipante

Il protocollo  si  basa  sullo  scambio  di  messaggi  tra  TM e RM,  che per  rendere  il protocollo resistente ai guasti, RM e TM scrivono alcuni nuovi record nel loro log.

./ FASE I 2PC:

1. Il TM chiede a tutti nodi come intendano terminare la transazione
Ogni nodo decide autonomamente se commit o abort e comunica unilateralmente la sua decisione irrevocabile.

../  FASE II 2PL:

Il TM prende la decisione globale ( se uno solo vuole l’abort questo comporta un abort per tutti, altrimenti commit)
Il TM comunica a tutti la decisione per le azioni locali.

Prepare  record:  contiene  l’identità  di  tutti  i  RM  identificativo  del  nodo  +
processo
Global commit o global abort record: descrive la decisione globale. La decisione del TM diventa esecutiva quando il TM scrive nel proprio log il record global commit o global abort.
Complete record: scritto alla fine del protocollo.

Nuovi records di log – RM

Read y record: disponibilità irrevocabile del RM a partecipare alla fase di commit. Su tale record viene scritto anche l’identificativo (numero di nodo e di processo) del TM.
Assume che il RM sia “recoverable”,cioè mantiene i locks su tutte le risorse che devono essere scritte
Contiene anche l’identificatore del TM
Inoltre, come nel caso centralizzato vengono scritti anche i records begin, insert, delete, update, commit.
Not ready record: indisponibilità del RM al commit.

* Protocollo  2PC in assenza di guasti  *

In assenza di guasti, il  protocollo di commit a due fasi consiste in  una rapida sequenza di scritture sul log e di scambi di messaggi tra TM e RM; nella comunicazione con gli RM, il TM può utilizzare meccanismi di broadcast, cioè che trasmettono a molti nodi lo stesso messaggio e deve essere poi in grado di collezionare risposte provenienti da vari nodi. PJtrimenti, il TM utilizza una comunicazione seriale con tutti i sistemi RM.

Prima fase di 2PC

TM scrive prepare nel suo log e invia un messaggio prepare a tutti i RM. Setta un timeout per indicare il massimo intervallo di tempo d’attesa per le risposte.
Gli  RM  che  sono  recoverable  scrivono  ready  nel  loro  log  record  e  inviano  un messaggio ready al TM
Gli RM che non sono recoverable inviano un messaggio not-ready e terminano il protocollo, effettuando l’abort.
Il TM raccoglie i messaggi di risposta dagli RM:
Se tutti gli RM rispondono positivamente,  scrive global commit nel suo log

Se riceve almeno un messaggio not-ready o scatta il timeout, scrive global abort nel suo log

Second a fase di 2PC

Il TM trasmette la decisione globale agli RM e setta un nuovo timeout.
Gli RMs che sono ready ricevono il messaggio, scrivono commit o abort nel loro log, e inviano un acknowledgment al TM. Poi eseguono il loro commit o abort locale
Il TM raccoglie tutti i messaggi di acknowledgement dagli RM. Se scatta il time­ out, setta un nuovo time-out e ripete la trasmissione a tutti i RMs dai quali non ha ancora ricevuto un ack.
Quando tutti gli acknowledgement sono arrivati, il TM scrive complete nel suo log.

Paradigmi di comunicazione tra TM e RMs
Centralizzato  (è quello che abbiamo visto)
La comunicazione avviene solo tra TM e ogni RM
Nessuna comunicazione tra RM
Lineare:
I RM comunicano tra loro secondo un ordine prestabilito
Il TM è il primo nell’ordine
Utile solo per reti senza possibilità di broadcast
Distribuito:
Nella prima fase, il TM comunica con i RMs
I RMs inviano le loro decisioni a tutti gli altri partecipanti
Ogni RM decide in base ai voti che “ascolta” dagli altri
Non occorre la seconda fase di 2PC

* Protocollo  2PC in caso di guasto *
Un RM nello stato ready perde la sua autonomia e attende la decisione del TM
Un guasto nel TM lascia il RM in uno stato d’incertezza  ·
Le risorse allocate alla transazione restano bloccate
L’intervallo tra la scrittura di ready nel log dei RMs e la scrittura di commit o abort è detta finestra di incertezza
In questo intervallo tutte le risorse del sistema acquisite tramite meccanismi  di lock sono bloccate
2PC riduce al minimo questo intervallo di tempo, che esiste comunque
In seguito a guasti, TM o RMs utilizzano protocolli di recovery

Tipi di guasti da governare con protocolli

Guasti  cli  componenti
– Transaction manager
– Resource manager
Perdita di messaggi
Partizionamento della rete

1. Guasti di componenti
Devono essere utilizzati protocolli con due diversi compiti:
Assicurare la terminazione della procedure –+ protocolli di terminazione
Assicurare il ripristino –+ protocolli di recovery ·
I protocolli  funzionano nell’ipotesi di guasto cli un solo partecipante
Protocolli  di terminazione Timeout del TM
Timeout nello stato WAIT:
Il TM attende la risposta dei RMs
Può solo decidere global-abort
Timeout nello stato COMMIT o ABORT:
Il TM non può sapere se le procedure  di commit/abort  sono state completate dai recovery manager d’ogni nodo
Il TM continua ad inviare lo stesso messaggio global commit oppure global­ abort e ad aspettare il consenso
Può accadere che un nodo RM cada: quando riprende, manda un messaggio di consenso al TM

Timeout dei RM

Facciamo  l’ipotesi che anche gli RM possano  attivare un timeout
Timeout nello stato INITIAL:
Il RM attende il messaggio prepare
Il TM deve essere caduto nello stato INITIAL
Il RM può fare un abort unilaterale
Timeout nello stato READY:
In questo stato, il RM ha votato per il comrnit;
Attende la decisione del TM
Non è in grado di prendere una decisione unilaterale
Resta bloccato in attesa di ulteriori informazioni
Può unilateralmente decidere di abortire.
In questo caso, se è caduto il TM, quando riprende vota abort
Se I RMs sono in grado di comunicare tra loro, è possibile sbloccare la situazione in
assenza del TM chiedendo agli altri RMs di aiutarlo a prendere una decisione

Protocolli  di ripristino

Caduta del coordinatore  (TM  )

l’ultimo record del log è prepare
Il guasto del TM può avere bloccato alcuni RM
-Due opzioni di recovery:
Decidere global abort, e procedere con la seconda fase di 2PC
Ripetere la prima fase, sperando di giungere ad un global comrnit
l’ultimo record nel log è global-comrnit o global-abort
alcuni RMs potrebbero non essere stati informati, e altri possono essere bloccati
Il TM deve ripetere la seconda fase
l’ultimo record nel log è una complete
la caduta del coordinatore non ha effetto

Caduta di un partecipante (RM)

l’ultimo record nel log è Abort o Comrnit
Usa la sequenza di warm restart
Abort: undo della transazione
Comrnit: redo della transazione
l’ultimo record nel log è Ready
– il RM si blocca perché non conosce la decisione del TM
– Durante il warm restart, gli ID delle transazioni in dubbio sono inserite nel ready set.
– Prima soluzione: il partecipante chiede al coordinatore cosa è accaduto (richiesta di
remote recovery)
-Second a soluzi,one: il coordinatore riesegue la seconda fase del protocollo

2. Perdita di messaggi e partizionamento  della rete
Il TM non è in grado di distinguere tra perdita di messaggi prepare o ready
In entrambi i casi, la decisione globale è abort in seguito a timeout nella prima fase Anche la perdita di messaggi di acknowledgement o di decisioni da parte dei RMs non sono distinguibili
In entrambi i casi, la seconda fase viene ripetuta in seguito a timeout
Un partizionamento della rete non causa problemi ulteriori,  dato  che  una transazione può avere successo solo se il TM e tutti i RM appartengono alla stessa partizione

Ottimizzazioni  nel protocollo  2PC *

Obiettivi delle ottimizzazioni: ridurre il numero di messaggi trasmessi tra coordinatore e partecipanti e ridurre il numero di scritture nei log.

Ottimizzazione read-only
L’ottimizzazione la si ha quando un partecipante, pur essendo coinvolto nel protocollo di commit a due fasi, scopre durante l’esecuzione di aver svolto solo operazioni di lettura e nessuna operazione di scrittura. Il partecipante non deve influenzare l’esito finale della transazione e può disinteressarsene. L’ottimizzazione consiste nel rispondere un messaggio  di READ – ONLY al messaggio di prepare, proveniente dal coordinatore. Il partecipante non svolge alcuna operazione di scrittura sul log · e sospende l’esecuzione del protocollo dopo aver spedito il messaggio. Dopo aver ricevuto la risposta al READ -ONLY il coordinatore ignora il partecipante nella seconda fase del protocollo.

Ottimizzazione presumed abort
C’è una regola “Scordarsi gli abort, ricordarsi i commit”
E’ possibile evitare alcune scritture asincrone del record di log del TM; si può evitare di scrivere con la primitiva force i record di prepare e global abort; in caso di perdita di questi record a causa di una caduta del TM, questi darebbe un’identica risposta· durante la recovery della transazione. Quindi i soli record di ready e commit, nel log dell’ RM, e global commit, nel log del TM, devono essere scritti in maniera sincrona, mediante la primitiva force.

INTEROPERABILITÀ  TRA DDBMS  ETEROGENEI  *

Il  problema  principale  nello  sviluppo  di  applicazioni  eterogenee  per  DDBS  è
l’interoperabilità a livello di sistema
Interoperabilità -> capacità di interagire a livello di sistema e richiedere la disponibilità di funzioni di adattamento e conversione che renda possibile lo scambio di informazioni tra sistemi, reti, applicazioni eterogenee.

È necessario introdurre funzioni di adattamento e conversione di formati / protocolli
A livello di protocollo, l’interoperabilità è garantita da standards  quali  FTP, SMTP/ MIME, ecc. mentre nell’area dei DBMS, introduciamo standard di interoperabilità per
Accesso alle funzioni del server ->  interfacce tipo ODBC
Coordinazione di transazioni  su più nodi ->  protocollo DTP

Interfaccia di accesso al DB: ODBC
Tramite un’interfaccia ODBC, le applicazioni scritte in SQL possono accedere a dati remoti; il linguaggio supportato da ODBC è un SQL ristretto, caratterizzato da un insieme mmrmo di istruzioni. Nell’architettura ODBC, il collegamento tra un’applicazione e un server richiede l’uso di un DRNER, una libreria che viene collegata dinamicamente alle applicazioni da essa invocata. Il driver maschera tutti i problemi di interoperabilità e facilita al massimo la scrittura delle applicazioni.

Componenti di ODBC
L’applicazi,one richiama funzioni SQL per eseguire interrogazioni e per acquisirne i risultati.
fl driver manager (Microsoft) carica il driver specifico per il DBMS target + SO + rete
fl driver sono responsabili di eseguire funzioni ODBC, pertanto sono in grado di eseguire interrogazioni in SQL, adattandole alla semantica e alla sintassi dei prodotti cui viene fatto accessi.
fl DB server riceve richieste da ODBC e ritorna i risultati come a qualunque client

X-Open  distributed transaction processing  (DTP)
E’ un protocollo che garantisce l’interoperabilità tra DBMS diversi per transazioni distribuite.
Consta di due interfacce: – L’interfaccia tra il client e TM detta TM-interface
– L’interfaccia tra TM e RM detta XA- interface.
Un DBMS che aderisce al protocollo deve supportare oltre alla propria interfaccia proprietaria per ilprotocollo 2PC anche l’interfaccia XA.
Il TM è di norma un componente fornito da middleware transazionale.
* COOPERAZIONE  TRA SISTEMI PRE-ESISTENTI  *
Per cooperazione s’intende la capacità per un’applicazione di utilizzare servizi applicativi resi disponibili da altri sistemi, eventualmente gestiti da altre organizzazioni.
La necessità di cooperare nasce da ragioni diverse come l’esigenza di integrazione di componenti sviluppati separatamente, la fusione di organizzazioni con sistemi informativi diversi. ..
L’integrazione tra DBs è complessa:
Limitata nella pratica ad integrazione semplice di schemi
Il modello ideale di un DB fortemente integrato che supporta trasparenza totale è difficile da realizzare in pratica.

Distinguiamo due tipi di cooperazione:
– Centrata sui processi: i sistemi offrono l’un l’altro dei servizi, attraverso scambio di messaggi, informazioni, documenti o innescando delle attività senza mettere a disposizione dei dati remoti cioè i dati restano privati.
-Centrata  sui  dati,  in  cui  i  sistemi  sono  distribuiti,  eterogenei  e  autonomi,  e
accessibili da remoto secondo accordi di cooperazione e protocolli standard.

* Cooperazione basata s ui dati – caratteristiche *

Le forme di cooperazione centrate sui dati possono essere  molteplici:  esse differiscono per il livello di trasparenza, complessità delle operazioni gestite e livello dell’attualità  dei  dati.
);- Livello  di  trasparenza:  misura quanto la distribuzione e l’eterogeneità dei dati
siano mascherate cioè quanto l’insieme dei dati siano mascherate e cioè quanto l’insieme delle basi di dati cooperanti appaia all’esterno come un’unica base di dati.
);- Complessità   delle   operazi. oni   distribuite:  misura  il  grado  di  coordinamento
necessario per effettuare operazioni su DB cooperanti.
);- n  livello   di   attualità  (currency)   indica   in   che  misura   i  dati  acceduti   sono
aggiornati. Due possibilità:
Accesso ai dati originali nel sistema che li gestisce
Accesso a copie o a dati derivati, più accessibili, ma per i quali non è garantito l’allineamento.
In base a questi criteri, è possibile distinguere tre architetture per la cooperazione centrata  sui dati.
1 – MultiDatabases

In questi sistemi le singole basi di dati partecipanti continuano ad essere utilizzate dai rispettivi utenti (programmi o utenti finali). Ai singoli sistemi accedono anche moduli, chiamati mediatori., che trasformano e filtrano gli accessi, mostrando solo porzioni di DB che si desidera esportare, e la mettono a disposizione di un gestore globale, che è responsabile dell’integrazione e realizza l’integrazione e mette a disposizione degli utenti  della cooperazione una visione integrata ” come se il db fosse unico”.
Caratteristiche:
Forniscono un alto livello di trasparenza
Garantiscono buona attualità perché alle sorgenti dati si accede direttamente.

2- Sistemi basati su replicazione

Garantiscono accesso in sola lettura a copie di dati secondarie e derivate, ed elaborazioni fuori linea. L’unica differenza rispetto ai sistemi multidatabase è costituita dalla presenza dellaDATA WAREHOUSE, che contiene sistemi estratti da vari sistemi eterogenei distribuiti e offre una visione globale dei dati.
Caratteristiche:
Presentano  un  alto livello d’integrazione  e trasparenza,  ma un  grado minore  di
attualità (currency)

3 – Sistemi locali con dati esterni

La differenza rispetto ai casi precedenti è costituita dal fatto che in questa architettura non c’è alcun gestore locale e le integrazioni sono realizzate esplicitamente dall’applicazione (client) che integra;
Caratteristiche:
L’architettura ha un basso grado di trasparenza e di complessità, con un grado d’attualità variabile a seconda delle esigenze specifiche.

* IL PARALLELISMO  NEI DBMS *

Dal punto di vista architetturale, il parallelismo è possibile sia con architetture multiprocessore   a  memoria   condivisa  (SHARED MEMORY),  sia  con   architetture multiprocessore con memorie separate (SHARED NOTHING).
Il motivo del successo del parallelismo nei DB è che le computazioni svolte da un DB si prestano ad essere eseguite in parallelo con grand’efficienza. Una scansione completa di un grande DB può essere svolta tramite N scansioni, ciascuna relativa a una frazione del DB a patto di separare il file corrispondente in N parti uguali, allocate su dispositivi differenti, si ottengono tempi di risposta che approssimano il valore ideale di (1/ N) rispetto al tempo di risposta ideale.

Ci sono due tipologie di parallelismo:

– Parallelismo inter-query: quando si eseguono interrogazioni diverse in parallelo. Il carico cui il DBMS è sottoposto è tipicamente caratterizzato da molteplici transazioni molto semplici, che però sono presentate con una frequenza assai elevata. È utile quando il DBMS gestisce transazioni in linea (Sistema OLTP).
È caratterizzato da un forte carico transazionale e da un limitato numero di servizi offerti: il parallelismo viene introdotto moltiplicando il numero di processi server allocando su ciascun processore un numero ideale di questi processi.

Parallelismo intra-query: quando si eseguono parti della stessa interrogazione in parallelo. Il carico cui il DBMS è tipicamente sottoposto è caratterizzato da poche interrogazioni assai complesse, quindi è opportuno suddividere l’interrogazione in varie sotto-interrogazioni parziali, da affidare ai vari processori.
È caratterizzato da interrogazioni complesse che coinvolgono cioè molti operatori e si valutano su DB di grosse dimensioni.
È particolarmente  utile  per  sistemi  OLAP  (On  Line  Analytical Processing) che effettuano tipicamente aggregazioni sui dati

* Parallelismo e frammentazione  *
L’efficienza del parallelismo è correlata con la frammentazione dei dati. I frammenti vengono distribuiti su più processori e dischi distinti.
Esempio: -
ACCOUNT(AccNum,  Name, Balance) TRANSACTION(AccNum,Date,SerialNumber, Transaction Type, Amount) Schema frammentato in modo orizzontale in base a intervalli di AccNum

Metriche per il parallelismo: Speed-up e scale-up

Gli effetti del parallelismo vengono tipicamente descritti da due curve, dette di speed-up e scale-up. La curva di speed-up caratterizza  solamente  il parallelismo inter- query e misura l’incremento delle prestazioni, misurate in Tps( transazioni per secondo) detto THROUGHPUT.
In una situazione ideale, il throughput cresce in modo quasi lineare con il numero di processori.

La curva di scale-up caratterizza sia il parallelismo inter-query che quello intra­ query e misura il costo medio di una transazione rispetto all’incremento nel numero dei processori.
In una situazione ideale, il costo medio rimane pressoché costante all’aumentare dei processori.

* Benchmarks  delle transazioni *
Le curve di speed-up e scale-up hanno introdotto un problema generale, quello di valutare le prestazioni delle architetture per DB, siano esse centralizzate o parallele. La misura delle prestazioni di un sistema richiede che esistano specifiche oggettive e precise delle transazioni e delle condizioni di carico in cui operare le misure; tali specifiche prendono il nome dibenchmark.
Standardizzate dal TPC (Transaction Processing  Performance  Council):  sono definiti tre benchmarks (TPC-A, TPC-B and TPC-C) rispettivamente per applicazioni transazionali, miste, e su dati aggregati (On Line Analytical Processing) .

BASI DI DATI  REPLICATE *

La replicazione è un servizio garantito da specifici prodotti, detti replicatori dei dati, che consentono la creazione di copie di tabelle o sottoinsiemi di tabelle in  un generico contesto distribuito. La funzione principale di un replicatore di dati è quella di mantenere l’allineamento tra le copie di dati. In generale, per ogni dato esiste una copia principale e diverse copie secondarie e gli aggiornamenti sono propagati dalla copia principale alle secondarie in modo asincrono, senza il supporto del 2PC.
La propagazione  può  essere  incrementale  quando  dalla  copia principale  alle  copie
secondarie viene inviata una descrizione delle variazioni che vengono riapplicate alla copia secondaria; l’uso della replicazione rende il sistema più resistente ai guasti in quanto se non c’è disponibilità della copia principale, è possibile usare una delle copie.

Architettura tipica per data replication
L’architettura ha due siti identici. Ogni sito gestisce l’intero DB; una metà contiene la copia principale, l’altra metà è la copia secondaria.
Tutte le transazioni sono inviate alla copia principale e ridirette in modo differito alla copiasecondaria. Ogni punto d’accesso al sistema è connesso ad ambedue i siti.

In caso di guasto che coinvolge solamente un sito, il sistema è capace di commutare rapidamente tutte  le transazioni verso l’altro sito, che deve essere in grado di supportare l’intero carico. Una volta risolto il problema, il replication manager fa un restore dei dati in modo trasparente e quindi pone ambedue i siti in modalità normale

Funzioni avanzate dei replication managers

./’ Replicazi.one simmetrica: le modifiche possono essere originate da ogni copia
Configurazione peer-to-peer
In assenza di concurrency control, è possibile introdurre conflitti tra le copie, come abbiamo visto negli esempi di anomalie degli schedule
– È possibile determinare i conflitti in modo automatico, e definire strategie di risoluzione diverse per diversi tipi di dati
./’  Replicazi.one non-connessa: si ha con sistemi mobili, nei quali è comune che la
comunicazione tra i nodi s’interrompa
Es.: un venditore si connette con il server per scaricare le disponibilità del magazzino e per caricare nuovi ordini
Il venditore è normalmente  sconnesso dal server. Le sue transazioni operano su copie (del magazzino)
La copia viene periodicamente “riconciliata” con la copia principale

* GENERALITÀ  SU SISTEMI  CLIENT SERVER  *
Modello client-server

Prevede due insiemi di processi, distribuiti in generale su più host connessi in rete:
Processi client: richiedono servizi
Processi server: offrono servizi
Il modello client-server prevede la definizione di:
Interfacce di servizio implementate dal server
Protocolli di accesso ai servizi che consentono al client di raggiungere le interfacce.
Es.: submit(query) fa parte dell’interfaccia del servizio. È poi necessario un protocollo per consentire al client di invocare la richiesta.
Il cliente ha un ruolo attivo. Il server è esclusivamente reattivo (risponde alle richieste).
Relazione l:N tra client e server:
Un client esegue poche richieste ad un processo server, e in sequenza
Un  server  accoglie  richieste  multiple  in  concorrenza  tra  processi  client multipli.

Modello client-server per data management
Il modello client-server è comunemente adottato dalle architetture DBMS utilizzando processi server distribuiti su rete:
Le funzioni del server sono ben definite e limitate
Il server è dedicato alla gestione efficiente dei dati (Retrieval, update)
Il client ottiene i dati ed esegue il processing nel proprio spazio di processo( Notare che l’uso di stored procedures consente l’esecuzione di computazioni sul server)
Essenziale per garantire un throughput accettabile sul server.

SQL offre un paradigma di programmazione ideale per la definizione dell’interfaccia di servizio
Le queries SQL sono formulate dal client e inviate al server per l’esecuzione
Il server ritorna risultati in un formato standardizzabile (vedi ODBC)
Quindi la standardizzazione sia delle query che dei risultati consente la portabilità delle applicazioni nelle due direzioni:
La stessa applicazione client può utilizzare server diversi
Lo stesso server può accettare richieste da client eterogenei

Requisiti degli host per client e server

Client host:
Dedicato all’interazione utente
Supporta applicazioni diverse per il processing dell’informazione (e.g. spreadsheet)
Server host:
Main memory: deve contenere il buffer del DBMS e l’area temporanea eg di esecuzione queries
CPU: deve supportare processi server concorrenti (Buffer manager, recovery manager, query processor, ecc.)
Disk  memory:  oltre  ai  dati  applicativi,  contiene  i log e  altre  informazioni necessarie per l’operazione del DBMS

Multithreading

Modello comune a tutti i server concorrenti, non specifico dei DBMS! Uno stesso processo è internamente suddiviso in threads di controllo
– Threads: processi lightweight che condividono le risorse allocate al processo
– I threads sono sincronizzati secondo lo stesso modello dei processi concorrenti (attraverso monitor, semafori, sezioni critiche)
– ll processo server definisce la strategia d’allocazione dei thread alle transazioni
utente (e.g. un thread per transazione)

Il lifetime del DBMS coincide con il tempo di esecuzione di un pool critico di processi server. Le richieste client in arrivo su una porta predefinita vengono accolte da un listener cioè un thread del server in attesa su una coda.
Il listener  (o dispatcher)  controlla l’allocazione del pool di threads alle richieste

– Server class: il numero  di thread  (e quindi l’impegno di memoria e processore) variano dinamicamente con il carico, fino ad un limite
– Le richieste possono essere sincrone o asincrone …

.* Architetture  two-tier  e multi-tier  *
La logica dell’applicazione client comprende normalmente funzionalità diverse:
Interazione utente
Interazione con il DBMS
Interazione con altre applicazioni
Computazione sui dati
Architettura Two-tier. il client esegue l’intero set di funzionalità del client: thick-client Nel caso in cui parte della logica client è comune a più applicazioni, la parte comune può essere separata:
Architettura   Three-tier. client, application  server e DBMS server. Ad es.:
Client: Solo interazione utente ( thin client). Es. Web browser
Application server: logica comune:
Interazione con il DBMS (l’AS è ilvero DBMS client)
Interazione con altre applicazioni (nello stesso spazio AS o in altri spazi) Computazione sui dati -> AS ospitato su host di tipo enterprise
Architettura di dettaglio – Componenti User processor:
– User interface handler: interprete comandi e formattatore risultati
Semantic data controller. controlli semantici sulla query (controllo vincoli a livello di schema globale), autorizzazioni
Global query optimizer and decomposer
Determina la strategia di esecuzione
Traduce la query globale in sotto – query elementari usando i LCS e GD/ D
Distributed execution monitor I transaction manager
Coordina l’esecuzione di transazioni globali con i TM sugli altri nodi
Data processor:
Local query optimizer
Local recovery manager
Run-time support processor: local buffer manager

ARCHITETTURA TANDEM – DESCRIZIONE *

Applicazione creata da Tandem verso la metà degli anni ’80 Tandem aveva una decina di fabbriche sparse per ilmondo
Ogni fabbrica responsabile della produzione di una parte specifica dell’architettura di un computer
Le tabelle  erano frammentate  in modo  corrispondente  alla distribuzione  fisica dei componenti e allocate ai nodi in modo ridondante:

Main copy: sul nodo responsabile del processo produttivo dei componenti descritti
in quel frammento
Secondary copies: replicate a tutti gli altri nodi
Il replication manager entrava in   funzione periodicamente, propagando le modifiche ad un nodo in modo asincrono a tutte le altre copie

DATAWARE HOUSE – PARTE 4
Basi di dati: teoria e realtà

Sistemi informativi classificazione

Transaction processing systems: per i  processi  operativi

Base di dati *

“Collezione di dati persistente e condivisa, gestita in modo efficace, efficiente e affidabile  (da un  DBMS)”  : il concetto  di base  di dati nasce per  rispondere  alle esigenze di “gestione di una risorsa pregiata”, condivisa da più applicazioni.

Basi di dati: teoria
“ogni organizzazione ha una base di dati, che organizza tutti i dati d’interesse in forma integrata e non ridondante”
“Ciascun’applicazione ha accesso a tutti i dati di proprio interesse, in tempo reale e senza duplicazione, riorganizzati secondo le proprie necessità”

La base di dati “ideale” BD DBMS

On Line Transaction Processing  e On Line Analytical Processing *
On Line .Transaction Processing (OLTP): tramite questa tecnologia, le imprese accumulano grandi moli di dati relativi alla loro gestione operativa quotidiana. Questi dati potrebbero rivelarsi utili per la gestione dell’impresa e per la pianificazione  e il supporto delle decisioni.

Con l’inizio degli anni ’90, si sono imposte nuove architetture, caratterizzate dalla separazfone degli ambienti: a fianco dei sistemi per OLTP si sono sviluppati sistemi dedicati esclusivamente all’elaborazione e analisi dei dati, e cioè ad OLAP (On line Analitycal Processing).

L’elemento principale dei sistemi OLAP, che svolge il ruolo di server è la data warehouse  (magazzino di dati).

Mentre i sistemi OLTP sono normalmente condivisi da un elevato numero d’utenti finali, i sistemi OLAP sono caratterizzati dalla presenza di pochi utenti, che però occupano posizioni d’alto livello nell’impresa e svolgono attività di supporto alle decisioni.

Nei sistemi OLTP i dati presenti nella warehouse possono essere di tipo storico – temporale, i meccanismi d’importazione dei dati sono normalmente di tipo asincrono e periodico, in modo da non penalizzare le prestazioni della data source, specie se si tratta di sistemi OLTP con prestazioni particolarmente critiche. In questo caso la data warehouse non contiene dati perfettamente aggiornati rispetto al flusso di transazioni che operano nei sistemi OLTP.

Un altro problema importante nella gestione di una warehouse è quello della qualità dei dati:la semplice raccolta di dati sulla warehouse non consente analisi significative, in quanto i dati contengono molte inesattezze, errori e omissioni.

CARATTERISTICHE OLTP:

Tradizionale elaborazione di  transazioni, che realizzano 1  processi operativi dell’azienda – ente
Operazioni predefinite e relativamente semplici
Ogni operazione coinvolge “pochi” dati
Querie senza aggregazioni o con aggregazioni semplici (es. Prenotazioni online, ricerche per chiave..)
Dati elementari, aggiornati
Frequenti, molti utenti
Le proprietà ”acide” (atomicità, correttezza, isolamento, durabilità) delle transazioni sono essenziali
Ottimizzano il throughput di transazioni di lettura e scrittura in presenza di concorrenza: 100- 1000 transazioni al secondo

Sistemi di supporto alle decisioni
Richiedono operazioni non previste a priori
Coinvolgono spesso grandi quantità di dati, anche storici e aggregati
Coinvolgono dati provenienti da varie fonti operative, anche esterne.

CARATTERISTICHE  OLAP:

Elaborazione d’operazioni per il supporto alle decisioni
Operazioni complesse e casuali
Queries con aggregazioni contemporanee su più dimensioni (es.: totale posti prenotati aggregati per regione e per tipo di cliente, vs totale posti prenotati per periodo e per agenzia)
Ogni operazione può coinvolgere molti dati
Dati aggregati, storici, anche non attualissimi
Utenti selezionati
Le proprietà “acide” non sono rilevanti, perché le operazioni sono di sola lettura

Data warehouse: Generalità

Una base di dati:
utilizzata principalmente per il supporto alle decisioni direzionali
integrata  ( aziendale  e non  dipartimentale) orientata ai dati e non  alle applicazioni
storici (con un ampio orizzonte temporale,  e indicazione  (di solito) di elementi di tempo)
non volatile (i dati sono caricati e acceduti fuori linea) mantenuta separatamente dalle basi di dati operazionali

… integrata …

I  dati  di  interesse  provengono  da  tutte  le  sorgenti  informative,  ciascun  dato proviene_ da una o più di esse
Il data warehouse rappresenta i dati in modo univoco, riconciliando le eterogeneità dalle diverse rappresentazioni
norm
codifica
rappresentazione  multipla

… orientata ai dati …

Le basi di dati operazionali sono costruite a supporto dei singoli processi operativi o applicazioni di produzione o vendita
Il   data   warehouse è   costruito   attorno   alle   principali entità   del   patrimonio informativo aziendale ( prodotto, cliente)

… dati storici …

Le basi di dati operazionali mantengono il valore corrente delle informazioni
L’orizzonte temporale di interesse è dell’ordine dei pochi mesi
Nel data warehouse è di interesse l’evoluzione storica delle informazioni
L’orizzonte temporale di interesse è dell’ordine degli anni

… non volatile …

In una base di dati operazionale, 1 dati vengono acceduti, inseriti, modificati e cancellati
pochi record alla volta
Nel data warehouse, abbiamo operazioni di accesso e interrogazione “diurne”
operazioni di caricamento e aggiornamento dei dati “notturne”
che riguardano milioni di record

… una base di dati separata …

Per tanti motivi
non esiste un ‘unica base di dati operazionale che contiene tutti i dati di interesse
la base di dati deve essere integrata
non è tecnicamente possibile fare l’integrazione in linea
i dati di interesse sarebbero comunque diversi
devono essere mantenuti dati storici
devono essere mantenuti dati aggregati
l’analisi  dei  dati  richiede  per  i  dati  organizzazioni  speciali  e  metodi  d’accesso specifici
degrado generale delle prestazioni senza la separazione

Struttura di un data warehouse e modelli per la sua descrizione
Architettura per il data warehouse

Strumenti di analis

COMPONENTI PRINCIPALI DELL’ARCHITETTURA:  *
Filtraggio  dei  dati che ne controlli la correttezza prima dell’inserimento  nella warehouse.  I filtri possono eliminare dati palesemente scorretti sulla  base di vincoli e controlli che si applicano a singole data source, oppure  rilevare e talvolta correggere inconsistenze nei dati estratti da molteplici data source.
Esporta:done  dei  dati: che  consente  di  estrarre  i  dati  dalla  data  source.  Il sistema per l’esportazione dei dati colleziona le sole modifiche )inserzioni  o cancellazioni) delle data source, che vengono importate dalla DW.
Allineamento dei dati: che propaga incrementalmente le modifiche della  data source in modo da aggiornare il contenuto della DW. Si possono usare  due tecniche: INVIO DEI DATI (data shipping)  : basata  su  primitive   eventi – condizioni – azioni attivate sulle sorgenti di dati.
INVI DELLE TRANSAZIONI( transaction shipping) : utilizza i log di trasmissione. o Accesso ai dati: responsabile di realizzare le operazioni dianalisi dei dati.

* DW e  data mart *

I data mart  sono sottoinsiemi logici dell’intero data warehouse  cioè restrizioni  del data warehouse a un particolare processo di supporto alle decisioni
Pro e contro dei data mart
In genere esprimono un obiettivo fattibile
Mentre la realizzazione di un intero DW è in genere un obiettivo improbo
Tuttavia, portano in genere a seguire un progetto bottom- up, che non da luogo alla fine alla realizzazione dell’intero DW

* MODELLI  DESCRITTIVI  DI DATA WAREHOUSE *

Concetti rilevanti nella analisi multidimensionale

L’analisi richiede normalmente dimensioni multiple:
“quanto ho incassato MISURA
a seguito di vendite di automobili FATTO
per regione DIMENSIONI
per mese
per tipo di cliente?”

Rappresentazione multidimensionale

L’analisi dei dati avviene rappresentando i dati in forma multidimensionale Concetti rilevanti:
Fatto –   > un concetto sul quale centrare l’analisi
Misura/e –  > una/ più proprietà atomica di un fatto da analizzare
Dimensione –  > descrive una prospettiva secondo la quale effettuare l’analisi

Esempi di fatti/misure / dimensioni
Catena di negozi
Fatto: vendita
Misure: unità vendute, incasso
Dimensione: prodotto, tempo, zona

Compagnia telefonica
Fatto: telefonata
Misure: costo, durata
Dimensione: chiamante, chiamato, tempo

Due modelli per DW
../ Modello logico: per rappresentare fatti, misure, dimensioni rispetto al modello Entità Relazione si dimostra più espressivo il modello detto Star Schema, che corrisponde a uno schema relazionale di forma particolare
../  Modello    operazionale:   un   Data    Cube,   che   descrive   tutte   le    possibili aggregazioni che possono  essere effettuate partendo  dalle  dimensioni  scelte, implementabile su un DB relazionale.

OPERAZIONI  TIPICHE  SUI DATA WAREHOUSE *

Roll up: aggrega i dati, cioè riassumi i dati, salendo nella gerarchia dei concetti per una dimensione o attraverso una riduzione di una dimensione
Es. volume di vendita totale dello scorso anno per categoria di prodotto e regione
Drill down: disaggrega i dati, cioè passa da un livello di dettaglio basso ad un livello di dettaglio alto, scendendo nella gerarchia o introducendo una nuova dimensione.
Es.  per   una   particolare categoria  di  prodotto e  regione, mostra  le  vendite giornaliere dettagliate per ciascun negozio
Slice and dice: select & project
…:..  Slice: esegue una selezione su una dimensione del cubo
Dice: definisce un sottocubo eseguendo una proiezione su due o più dimensioni

PROGETTAZIONE  DI DATA WAREHOUSE  *

La progettazione di un data warehouse è diversa dalla progettazione di una base di dati operazionale in quanto i dati da memorizzare hanno caratteristiche diverse, la progettazione è vincolata dalle basi di dati esistenti e guidata da criteri progettuali diversi.
Attività principali
analisi delle sorgenti informative esistenti
integrazione
progettazione concettuale, logica e fisica

Fasi della progettazione di un DW
Fase O: Requisiti degli utenti, basi di dati aziendali, altre fonti informative esterne Fase  1: Analisi
Selezione e analisi delle sorgenti informative
Traduzione in un modello concettuale comune Fase 2: Integrazione
Produzione dello schema concettuale integrato
Integrazioni delle sorgenti informative

Fase 3: Progettazione
Progettazione concettuale
Progettazione logica
Progettazione fisica

O. Informazioni in ingresso

Le informazioni in ingresso necessarie alla progettazione di un data warehouse sono:
requisiti -> !’esigenze aziendali di analisi
descrizione delle basi di dati -> con una documentazione sufficiente per la loro comprensione
descrizione di altre sorgenti informative -> l’analisi  richiede spesso la correlazione con dati non di proprietà dell’azienda ma comunque da essa accessibili (es. dati ISTAT o sull’andamento dei concorrenti)

1.1 Selezione e analisi delle sorgenti informative

Prevede un ‘analisi preliminare del patrimonio informativo aziendale
analisi di qualità delle singole sorgenti
correlazione del patrimonio informativo con i requisiti
identificazione di priorità tra schemi

1.2. Traduzione in un modello concettuale comune

Uno schema ER è più espressivo di uno schema relazionale -> è necessario conoscere la realtà di interesse per recuperare la conoscenza persa nella fase di progettazione logica
Utilizza tecniche di reverse engineering cioè l’attività di:
comprensione concettuale di uno schema di dati (tipicamente relazionale)
rappresentazione di uno schema relazionale in un modello concettuale

2.1 Integrazione di schemi concettuali

L’integrazione  di schemi concettuali  è l’attività di fusione dei dati rappresentati  in più sorgenti in un’unica base di dati globale che rappresenta l’intero patrimonio informativo aziendale, rappresentato a livello concettuale

Lo scopo principale dell’integrazione è l’identificazione di tutte le porzioni delle diverse sorgenti informative che si riferiscono a uno stesso aspetto della realtà d’interesse, per unificare la loro rappresentazione

L’approccio è  orientato all’identificazione, analisi e  risoluzione di conflitti
terminologici, strutturali, di codifica

Integrazione di schemi concettuali
L’integrazione di schemi richiede la risoluzione dei conflitti relativi a:
rappresentazione concettuale e
rappresentazione dei dati

Progettazione concettuale

L’integrazione delle sorgenti informative ha prodotto una descrizione globale del patrimonio informativo aziendale. Questo è solo il risultato dell’integrazione di dati operazionali e non descrive tutti i dati di interesse per il DW
Fasi
Si completa la rappresentazione dei concetti dimensionali necessari per l’analisi ad esempio, dati storici e geografici – ristrutturando eventualmente lo schema concettuale
Identificazione di fatti, misure e dimensioni
Traduzione nello star schema o nel data cube

* PROGETTAZIONE  LOGICO  FISICA DI DATA WAREHOUSE  *
Esistono due soluzioni:

Relational OLAP (ROLAP)
Utilizza DBMS relazionale o esteso per memorizzare e gestire i dati del dataWarehouse  e  di  fatto,  corrisponde   allo   star   schema:  usa  SQL  come   strumento principale e ha un’elevata scalabilità.

Multidimensional OLAP (MOLAP)
I dati sono fisicamente rappresentati sotto forma di cubo multidimensionale.
C’è l’indicizzazione veloce a dati riassuntivi pre - calcolati;
usa queries multidimensionali che si mappano sul server in modo immediato
Ma:
I dati sparsi sono difficili da gestire
La memoria è sottoutilizzata
Non ci sono interfacce SQL (API)
Esiste la necessità di un sistema relazionale per dati dettaglio
Richiede l’uso di file molto grandi
Esistono delle limitazioni a circa 1OGB (problemi scalabilità)

Vista materializzata

È  definita come un qualunque risultato di interrogazione che
si  decide di memorizzare permanentemente, piuttosto che ricostruirlo ogni volta in risposta a
una nuova interrogazione
* PROGETTAZIONE  LOGICA DI DW *

Scelta tra star e snowflake

Nel  caso star privilegiamo  la disponibilità delle tabelle  dimensioni già aggregate, al costo della ridondanza  (non normalizzazione)
Nel caso snowflake privilegiamo l’ occupazione di memoria a scapito di un maggior
costo nel calcolo delle interrogazioni

* PROGETTAZIONE  FISICA IN AMBIENTE  ROLAP  *
Strumenti: indici bitmap e indici di join

INDICI BITMAP: Consentono una implementazione efficiente delle congiunzioni o disgiunzioni nelle selezioni oppure operazioni algebriche di unione e intersezione. Si basano sull’idea di rappresentare ciascuna tupla come un elemento di un vettore di bit; la lunghezza del vettore coincide con la cardinalità della tabella.
Rappresentano ciascun attributo di selezione che abbia nel dominio di definizione n valori, tramite n vettori di k bit dove k è il numero dei record della tabella su cui fare selezioni. Il generico vettore (nell’esempio SALES, ad esempio quello associato al colore “red”, avrà in posizione i il valore vero se l’i-esimo record ha come colore il valore red, falso altrimenti.

* Confronto  ROLAP  & MOLAP *
Performance
Que:ry: MOLAP
Caricamento: ROLAP
Analisi: MOLAP
Dimensione DW: ROLAP
MOLAP: problema sparsità
Flessibilità nello schema: ROLAP
MOLAP: minor numero di dimensioni ammesse

Confronto MOLAP –   ROLAP

MOLAP –  Multidimensional OLAP ROLAP –  Relational OLAP

Dati memorizzati in multidimensional cube
Richiede trasformazioni dei dati 3.Dati disponibili per l’analisi direttamente dai cube
Analytical processing più veloce
Limitazioni sulle dimensioni dei cubes
Dati memorizzati in relational database come cubes virtuali
Non richiede trasformazioni dei dati
Dati recuperati tramite SQL
Analytical processing più lento
Nessuna limitazione sulle dimensioni dei cubes

Visualizzazione dei dati
I dati vengono infine visualizzati in veste grafica, in maniera da essere facilmente comprensibili.
Si fa uso di:
tabelle, istogrammi, grafici, torte, superfici 3D, bolle, area in pila, ecc.

QUALITA’ DEI DATI

* Perché la qualità dei dati è importante  *
La qualità dei dati ha un impatto sulla qualità, sull’ efficacia e sui costi del processo e del servizio reso all’utente finale, porta ad elevati costi (es. % Data Warehouse)e riduce la soddisfazione dell’utente e la soddisfazione nel lavoro, inoltre ha un impatto sul supporto alle decisioni.

CLASSIFICAZIONE DEI DATI PER ELABORAZIONE

Y Dati grezzi: sono i dati raccolti ma non ancora sottoposti ad elaborazioni significative, e che quindi si trovano sostanzialmente nella forma in cui sono stati acquisiti, come moduli di carta oppure via internet tramite moduli elettronici o via email.

Y Dati di base: dati già sottoposti alle elaborazioni strettamente necessarie a renderli elaborabili al di fuori di un singolo sistema o di una singola tecnologia, solitamente da parte di soggetti diversi da quello che li ha raccolti, attraverso operazioni di normalizzazione, standardizzazione, verifica o validazione. ES. indirizzi postali normalizzati, estremi di professionisti iscritti ad un albo.

Y Dati arricchiti (anche detti aggregati o elaborati): sono i dati risultanti da operazioni di ricerca e di confronto con informazioni di diversa provenienza, ma collegate ad uno stesso oggetto informativo; la categoria contiene anche i dati aggregati in senso statistico, come le medie e gli indici.
ES. la posizione fiscale di un’impresa come risulta da diverse basi di dati del Ministero delle finanze; i dati contenuti nello stato di famiglia di un cittadino; l’indice dei  prezzi al consumo; una carta geografica ricavata da dati fotogrammetrici grezzi.

Dimensioni della DO *
Ci sono tre differenti tipi di dimensioni della qualità dei dati:

Concettuale -> fanno riferimento allo schema (Il livello dello schema. ES. archivio dipendenti,  archivio stipendi, ecc.)
Valori dei dati -> fanno riferimento ai dati (Il livello dei valori. ES. Mario Rossi, nato a Brescia il  5 -10 – 1981)
Formato dei dati -> fanno riferimento  alla rappresentazione  dei dati (Il livello del formato. ES. Campo Cognome di tipo String)

CONCETTUALE:

La qualità del modello concettuale è essenziale, in quanto il modello rappresenta la porzione di mondo reale catturata, e quindi è il contesto all’interno del quale valutare l’utilità del dato. Ledimensioni legate al modello concettuale sono 6, per complessive 15 caratteristiche .

../   Contenuto riguarda il significato dei dati.

Rilevanza – il modello deve fornire i dati rilevanti per l’applicazione. Questa caratteristica pone in evidenza l’importanza della  fase  di  raccolta  dei requisisti, in quanto spesso gli utenti non sono in grado di esprimere chiaramente quali dati sono interessanti e come verranno utilizzati. Un aspetto da considerare è l’utilizzo di surrogati al posto di dati desiderati e difficilmente ottenibili: questa pratica è giustificata solamente quando esistono delle correlazioni e dei modelli empirici provati.

ES RILEVANZA: In una organizzazione si vuole misurare la penetrazione dell’utilizzo della posta elettronica nei processi aziendali, cioè il grado di utilizzo dei pc per posta elettronica per i soli processi della organizzazione, e non per svago personale.
Scelta n.1: numero messaggi per impiegato (o percentuale dei messaggi) inviati nell’eseguire attività aziendali
Ma è difficile distinguere con strumenti automatici.
Scelta n. 2: Numero messaggi totali inviati
Ma può essere costoso attivare un sistema di monitoraggio sulla posta.
Scelta n. 3: Numero di pc per impiegato

Chiarezza della definizfone – ogni termine nella definizione del modello deve essere chiaramente definito. Le metodologie di progettazione dei database pongono sempre in primo piano l’importanza del glossario degli elementi del modello utilizzati.

Schema normalizzato: i concetti sono rappresentanti separatamente nelle tre tabelle

Ottenibilità – i valori devono essere facilmente ottenibili. Questa caratteristica è legata alla precedente (nel caso in cui i dati non sono disponibili è meglio utilizzare dei surrogati, piuttosto che non possedere nessun tipo di informazione6) e sempre più spesso a problemi diriservatezza e rispetto della privacy.

./ Scope è definito come il grado con cui il modello comprende abbastanza dati per soddisfare le necessità delle applicazioni, e non comprende dati in eccesso. Idealmente il database dovrebbe contenere tutti e soli i dati necessari e niente di più.
Comprensivi.tà – ogni dato necessario deve essere compreso nel modello. E’ necessario considerare tutti i possibili utenti e come le rispettive necessità si
. sovrappongono; inoltre può essere necessario considerare, oltre alle applicazioni attuali, anche eventuali applicazioni future, estendendo quindi lo scope del modello.

Essenzialità – nessun dato non necessario deve essere compreso; infatti dati non necessari distolgono dalla “cura adeguata” dei dati effettivamente necessari e aumentano i costi della gestione dei dati stessi.

./  Livello di Dettaglio è la quantità di dati da includere e quanto precisi essi debbano essere.

Granularità degli attributi – numero e copertura degli attributi utilizzati  per rappresentare un singolo concetto.

ES GRANULARITA: Il concetto di “indirizzo” può essere rappresentato in alcune applicazioni semplicemente da “Stato”, in altre da “via”+”numero civico”+ “Città”+” Stato”; la granularità può aumentare la precisione ma anche i costi e può diminuire la flessibilità nelle modifiche alle applicazioni.

Precisione d ei d omini – è il livello di dettaglio nelle misure (o nello schema di classificazione) che definiscono il dominio. In generale maggiore è il numero di valori nel dominio, maggiore è la precisione.

ES PRECISIONE: un dominio definito su un tipo enumerato con 20 valori è pm preciso dello stesso definito su 5 valori. Deve essere valutato se la precisione è effettivamente necessaria ed utile .

../  Composizione: riguarda la struttura interna dello schema o delle view.

Naturalezza . – Ogni concetto dello schema deve avere una controparte “naturale” nel mondo reale.
Identificabilità  – Ogni  entità  deve  essere univocamente  identificabile  rispetto
alle altre mediante l’uso delle chiavi primarie.
Omogeneità – tipi delle entità dovrebbero essere definiti in modo da minimizzare l’occorrenza di attributi non necessari/ non applicabili. Per promuovere l’omogeneità è utile ricorrere alle generalizzazioni (supertipi e sottotipi). l
Minima ridondanza – La ridondanza va eliminata perché aumenta i costi e la gestione della sua coerenza distoglie da dati maggiormente importanti. Per eliminarla si ricorre alla normalizzazione .

../    Consistenza
Consistenza semantica – Lo schema dovrebbe essere non ambiguo e i significati dei concetti dovrebbero essere consistenti
ES SEMANTICA: se nello schema sono dichiarati vincoli d’integrità dovrebbero non essere contraddittori
In una relazione A -> Ruolo = “manager” Stipendio >  100.000 € In una relazione B -> Stipendio > 100.000 €  -> Tasse = 43%
In una relazione C -> Ruolo = “manager” ->  Tasse =40%

../  Reazione al cambiamento: Capacità dello schema di soddisfare le necessità di evoluzione che hanno le rappresentazioni dei dati.
Robustezza – lo schema dovrebbe essere abbastanza ampio da non richiedere
cambiamenti ogni volta che l’applicazione cambia
Flessibilità – lo schema dovrebbe essere facilmente manutenibile, cioè dovrebbe essere facile individuare i concetti da modificare (Es. forme normali nel modello relazionale)

VALORE DEI DATI:

Per qu.anto riguarda la qualità dei valori, ci sono 6 dimensioni, di cui l’accuratezza è sicuramente la più importante.
Accuratezza sintattica: rappresenta  la vicinanza del valore del dato ad un valore nel dominio di definizione considerato corretto (cioè che è corretto nel mondo reale).
ES ACCURATEZZA il dato < NOME, Mrio> è in accurato sintatticamente perché diverso dal dato <NOME, Mario>, appartenente al dominio dei nomi di persona. Accuratezza del significato. è la vicinanza del dato all’elemento del dominio di definizione che corrisponde al fenomeno osservato.

Correttezza: esiste sia la completezza sintattica che è l’accuratezza sintattica al grado massimo e quella semantica che è l’accuratezza semantica al grado massimo.

Completezza: (di un insieme di dati), cioè la copertura con la quale il fenomeno osservato è rappresentato nell’insieme di dati.

Livello di Aggiornamento: corrisponde alla differenza tra la data di utilizzo del dato e la data del suo ultimo  aggiornamento.
ES AGGIORNAMENTO. se lo stipendio è stato aggiornato l’ultima volta nel mese di maggio, una sua lettura a luglio può portare ad un valore obsoleto, cioè non più valido.

Tempestività: misura l’utilità di un dato nel momento temporale in cui serve un dato può essere aggiornato ma non tempestivo.
ES TEMPESTIVITA: orario delle lezioni pubblicato dopo la fine dei corsi

Consistenza: L’inconsistenza si ha quando due attributi tra i quali esiste una relazione funzionale presentano valori non possibili. ·
ES CONSISTENZA: tra CAP e Città vi è una relazione, per cui un dato che presenta CAP =20100 e Città = Roma è chiaramente inconsistente.
NB. la consistenza può implicare una ridondanza (nel CAP è implicitamente definita la Città).

Coerenza nei valori: per ogni tipo di dato, deve essere definito un formato canonico di rappresentazione. Per ‘Tipo” non si intende il tipo base (numerico, alfanumerico) ma la presenza di una forma canonica di rappresentazione di un dato (ad esempio l’informazione della data costituita di tre sotto campi nel formato Anno – Mese – Giorno).
ES  COERENZA:l’anno in una data deve essere rappresentato  sempre con quattro cifre, piuttosto che opzionalmente con due in alcuni archivi.

FORMATO  DEI  DATI:

Appropriatezza,  un  formato è più  appropriato  di un  altro se è più  adatto a soddisfare le esigenze dell’utente
Es.  i  codici  a barre  sono  comprensibili  ad  una  macchina  ma  non  ad  un  utente umano.

Interpretabilità, aiuta l’utente ad interpretare i valori correttamente. Es. (1, 2, 3, 4) vs (scarso, insufficiente, sufficiente, buono).

Portabilità, o Universalità tra diverse tipologie d’utenti. Es. le icone agli aeroporti.

Precisione:  un  formato  è  preciso  se  permette  di  distinguere  elementi  del dominio che devono essere distinti dall’utente.

Flessibilità, rispetto all’evolversi dei requisiti utente. Es. Adeguamento delle date all’anno
Uso  e[ficiente  della  memoria
Metodologie  per migliorare la qualità dei dati *

Struttura di una metodologia:

SELEZIONE DATI – Individua le tipologie di dati cui si è interessati
MISURAZIONE QUALITÀ – Misura la qualità attuale
Definisci il valore di qualità desiderato
MIGLIORAMENTO – Per ogni scostamento, definisci un processo di miglioramento della qualità che porti alla qualità desiderata, scegliendo tra
metodi basati sui dati
metodi basati sui processi

Metodologia per misurare la qualità dei dati: passi
./ Individuazione delle dimensioni più rilevanti nel contesto
./  Individuazione delle proprietà misurabili che saranno utilizzate per valutare le dimensioni
./ Scelta ed esecuzione della procedura di misuraiione
* METODOLOGIE  PER IL MIGLIORAMENTO  DELLA  OD *
I metodi per migliorare la qualità possono essere basati sia sui dati che sui processi.

Metodi basati sui dati (ovvero d’ispezione e correzione)
Confronto dei dati con il fenomeno che rappresentano
Confronto dei dati tra due o più archivi (ovvero DB bashing o record matching)
Utilizzo di vincoli d’integrità
Metodi basati sui processi che operano sui dati
1. Miglioramento  e Reingegnerizzazione  dei processi di trattamento e scambio dei dati

. Confronto  dei dati con il fenom eno che rappresentano
Si effettua una nuova rilevazione del fenomeno e un nuovo caricamento della base dati.
Es. per tutto il personale si rileva mediante autodichiarazione la città di nascita, la data di nascita, l’indirizzo di residenza.

Record  matching  (Database Bashing)
Prevede il confronto di record in due o più database, (1) Se coincidono si assumono corretti, altrimenti (2) se discordano e se esiste conoscenza di contesto, si utilizza la conoscenza per scegliere il dato ritenuto corretto, altrimenti si controllano entrambi rispetto al mondo reale.
È meno efficace del confronto con la realtà ma anche meno costoso. Ha un elemento di rischio: l’assunzione che se i dati coincidono allora i dati sono corretti è molto rischiosa, inoltre non è facile da applicare perché richiede l’applicazione di tecniche sofisticate. –

Record Matching: Il problema conosciuto come record matching si manifesta quando dei record che non corrispondono tra loro precisamente, possono tuttavia riferirsi allo stesso oggetto del mondo reale ( Object Identity Problem).
Es: un Data Base può avere memorizzati il nome e cognome di una persona (“Gianluigi Raiss”), mentre un altro DB può riportare di questa stessa persona solo le iniziali del nome ed il cognome (“G.L. Raiss”).
Per capire se due records in due DB sono tra loro “equivalenti”, si deve definire una funzione che misura la “distanza” tra i due record

#1 database Oracle come Remote DBA Oracle
Remote DBA Experts | Remote DBA Services | Remote Database Administrator | Remote DBA | Stefano Fantin

– Remote DBA Oracle 8i : webDB, outline, DBMS_REPAIR, logMiner, DROP column, LMT, TRIM function, MERGE partitions, HASH and COMPOSITE partitions
– Remote DBA Oracle 9i : fast-start time-based recovery limit, Flashback Query, Resumable Space Allocation, Trial Recovery, Data Guard, online index rebuild,  Online table redefinitions,SPFILE, External Tables, ASSM, Oracle RAC, OMF
– Remote DBA Oracle 10g : Data Pump, AWR, ASH, ADDM, SQL Tuning Advisor, Oracle scheduler, Segment Shrink, Segment Advisor, BFT, Flash Recovery Area
– Remote DBA Oracle 11g : DNFS, Online Patching, ASM Fast Mirror Resync, md_backup, md_restore, AWR baseline template, File Watcher, AMM, INCREMENTAL and PENDING statistics, Interval Partitioning
– Remote DBA Database Oracle 12c : multitenant Container DataBase, CDB, PDB, ADO, Heat MAp, PGA Size Limit, DBMS_QOPATCH, Automatic Big Table Caching, In- Memory (IM) Column Store
Consulenza database Oracle:
– performance tuning : miglioramenti delle performance del database Oracle, elasticità:futura riduzione del rischio di basse performance,
scalabilità verticale o scalabilità orizzontale per progetti big data con database Oracle
– analisi database e design database
– backup DBA
– sicurezza del database Oracle : analisi delle vulnerabilità, conformità dei report di auditing
– monitoring database Oracle
Oracle Features Implementation:
– ASM (Automatic Storage Management)
– RMAN (Recovery Manager)
– TDE (Transparent Data Encryption)
– SPM (Sql Plan Management)
– Online Redefinition
– Partitioning
– Compression
– Resource Manager
– Flashback
– Streams
– Real Application Testing
– Gateway
– Advanced Security
– Secure Backup

#2 database Postgresql come Remote DBA Postgresql
Remote DBA Experts | Remote DBA Services | Remote Database Administrator | Remote DBA | Stefano Fantin

Remote DBA Postgresql 8.0 : PITR, Tablespace, Windows Support, Savepoints
Remote DBA Postgresql 8.1  : Table partioning, Bitmap scans, Two-Phase commits, autovacuum
Remote DBA Postgresql 8.2 : Warm Standby, SQL 2003, Concurrent Index Builds, Gin indexes
Remote DBA Postgresql 8.3 : Hot updates, Asynchronous commit, XML, Fulltext search, Distribuited checkpoints
Remote DBA Postgresql 8.4 : Windows functions, CTEs, Database collations, Per-Column permission
Remote DBA Postgresql 9.0 : Hot Standby, Streaming Replication, Column Triggers, Conditional Triggers, hstore
Remote DBA Postgresql 9.1  : Synchronous Replication, Writable CTEs, Extension, Foreign Data Wrappers, Unlogged tables, Serialisable Snapshot Isolation, Column collations
Remote DBA Postgresql 9.2 : Cascading Replication, Index-Only scans, pg_stat_statements, Json, Ranges
Remote DBA Postgresql 9.3 : Writable Foreign Data Wrappers, Materialised Views, JSON functions and operators, LATERAL
Remote DBA Postgresql 9.4 : Logical replication, Replication slots, JSONB –> GIN (Generalized Inverted Index), scalability : Logical Decoding
Remote DBA Postgresql 9.5 : UPSERT, Row-level security, functionality for Big Data: BRIN index, algorithm called “keys abbreviated”,CUBE, ROLLUP, and GROUPING SET, TABLESAMPLE, Foreign Data Wrappers (FDW)
Remote DBA Postgresql 9.6 : Scalabilità verticale tramite query parallele, Scalabilità orizzontale tramite replica sincrona e ‘postgres_fdw’, Miglior ricerca testuale con le frasi. Parallel Query : Parallel sequential scans, parallel joins, parallel aggregates.
Transactions, VACUUM and the Visibility Map : pg_visibility extension for examining visibility maps, Frozen page data in visibility map for skipping vacuum on already-frozen data, User-defined expiration of snapshots to control table bloat. Performance and Monitoring :
Detailed wait information in pg_stat_activity, Index-only scans for partial indexes, Performance improvements for external sort operations. System Views and Administration : New system view pg_config, pg_blocking_pids, Functions pg_get_* to return NULL on invalid
objects, pg_notification_queue_usage to look at notify queue. Backups : pg_basebackup extended with replication slots, New API for hot physical backups. Other Features: Command progress reporting, Generic WAL facility, Trigonometric functions in degrees.