Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1.

Documenti analoghi
Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1

Data warehouse in Oracle

Data warehouse in Oracle

Viste materializzate in Oracle e SQL esteso. Sistemi di gestione di basi di dati. Tania Cerquitelli e Paolo Garza 1. Data warehouse in Oracle

Data warehouse in Oracle

Data warehouse in Oracle

D B M G D B M G 2. Sistemi informativi. Linguaggio SQL: costrutti avanzati

Data warehouse Analisi dei dati

Data warehouse: analisi dei dati

Data warehouse Analisi dei dati

Estensioni del linguaggio SQL per interrogazioni OLAP

Analysis Service. Dutto Riccardo IPSI - tel Dutto Riccardo - SQL Server 2008.

SQL: le funzioni di aggregazione

Select From Where...

SQL Server BI Development Studio. SQL Server Business Intelligence Development Studio. Analysis Services

SQL Server Business Intelligence Development Studio. SQL Server BI Development Studio. SQL Server BI Development Studio *Analysis Services*

SQL Server Business Intelligence Development Studio

SQL - Structured Query Language

Microsoft Access. Microsoft Access. Maurizio Rebaudengo, Paolo Garza 1. Microsoft Access. Creazione base di dati. Apertura di una base dati

Elena Baralis 2007 Politecnico di Torino 1

D B M G 2. Linguaggio SQL: fondamenti. Istruzioni di aggiornamento. Introduzione Istruzione INSERT Istruzione DELETE Istruzione UPDATE

Elena Baralis 2013 Politecnico di Torino 1

Corso di. Basi di Dati I. 9. Esercitazioni in SQL: Check, asserzioni, viste

<Nome Tabella>.<attributo>

Queries su più tabelle

Linguaggio SQL seconda parte

Manuale Comandi SQL SQL. Sito per esercitarsi (on line) SQL

SQL Server Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

Linguaggio SQL: fondamenti

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Caratteristiche dei linguaggi per Database

Prova Pratica di Informatica, Modulo Basi di dati Appello 23/07/2018

V. Moriggia Modelli di Base Dati. Modelli di Base Dati. a.a. 2001/

Basi di Dati: Corso di laboratorio

Manuale SQL. Manuale SQL - 1 -

Sistemi di Elaborazione delle Informazioni

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Raggruppamento. Raggruppamento

Interrogazioni complesse. SQL avanzato 1

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Gestione di basi di dati relazionali con SQL (parte II) Valutazione delle condizioni su insiemi di tuple

VISTE. 19/11/2015 Concetti Avanzati - SQL 71

E possibile ordinare le righe del risultato di una interrogazione attraverso la clausola order by, a chiusura di una interrogazione.

Processo di ottimizzazione. Ottimizzatore di Oracle. Execution plan. Esempio. Albero di esecuzione. Ottimizzatore di Oracle Dicembre 2002

Esempi SQL con Access. Orazio Battaglia

Un problemino semplice semplice: in una tabella

Laboratorio linguaggio SQL

Corso sul linguaggio SQL

Interrogazioni di tipo insiemistico. Select. Interrogazioni di tipo insiemistico. Interrogazioni nidificate

Operazioni sui dati. Interrogazioni con operatori aggregati. Capitolo 4

Microsoft Access. Relazioni e query SQL. Domenico Fabio Savo

Gestione delle informazioni. Tot. h 10. Base di Dati. Tot. h 56. Grafica in C# - Laboratorio- Tot. h 40. Dipartimento Informatica Materia Informatica

Appunti su SQL. Query Language. Comando Select

SQL quick reference. piccolo manuale di riferimento dei principali comandi SQL (prof. Claudio Maccherani, Perugia, 2013)

SQL - Sottointerrogazioni

Definizione e calcolo delle misure

Basi di dati attive. Una base di dati è ATTIVA quando consente la definizione e la gestione di regole di produzione (regole attive o trigger).

Il sistema informativo deve essere di tipo centralizzato e accessibile mediante un computer server installato nella rete locale dell albergo.

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Operatori aggregati. Operatori aggregati. Interrogazioni con raggruppamento. Interrogazioni con raggruppamento

Laboratorio Architettura

Librerie digitali. Uso di XML per memorizzare i metadati. Descrizione generale. XML per memorizzare i metadati. Motivi dell uso di XML

IL LINGUAGGIO SQL LE BASI

Laboratorio di Basi di Dati

Basi di dati - Laboratorio

Operazioni su insiemi: unione, intersezione e differenza

Interrogazioni$e$il$valore$NULL$

Interpretazione delle query nidificate

Check, esempio. Vincoli di integrità generici. Asserzioni. Asserzioni

Interrogazioni nidificate

Vincoli di integrità generici: check

Basi di Dati. Concetti Avanzati

Gestione dei valori nulli

SQL. Argomenti della lezione. Join esplicito. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Sistemi Informativi Avanzati Anno Accademico 2011/2012 Prof. Domenico Beneventano SQL-OLAP. Estensioni OLAP in SQL

D B M G 2. Linguaggio SQL: costrutti avanzati. SQL per le applicazioni

Operatori aggregati. Gli operatori di aggregazione NON sono rappresentabili in Algebra Relazionale. conteggio, minimo, massimo, media, somma

SQL: DDL, VI, Aggiornamenti e Viste

insert into Dipartimento(NomeDip, Città) values('produzione','torino') insert into ProdottiMilanesi (select codice, descrizione from Prodotto

Inserimento. Cancellazione. Modifica. INSERT INTO Persone VALUES ('Mario',25,52) INSERT INTO Persone(Nome, Eta, Reddito) VALUES('Pino',25,52)

Data Science e Tecnologie per le Basi di Dati

Interrogare una base di dati: algebra relazionale e SQL. Savino Castagnozzi Giorgio Macauda Michele Meomartino Salvatore Picerno Massimiliano Sartor

Schema Del DB Operazionale TELEFONATE

Ricorsione in SQL-99

Interrogazioni nidificate

SQL Avanzato. Interrogazioni e il valore NULL. Interrogazioni complesse, trigger, viste e modifiche dello schema. Giorgio Giacinto 2015

Tipi numerici esatti Valori interi o con parte decimale di lunghezza prefissata

Structured Query Language

Silvia Chiusano, Paolo Garza 1

QL (Query Language) Alice Pavarani

Capitolo 9. Sistemi di basi di dati Pearson Addison-Wesley. All rights reserved

MODULO 2. Query normali e parametriche Query di:

Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

Corso di. Basi di Dati I. 10. Esercitazioni in SQL: Complementi

SQL e linguaggi di programmazione. Cursori. Cursori. L interazione con l ambiente SQL può avvenire in 3 modi:

Appunti su SQL. Query Language. Comando Select

SQL DDL. Create database. Alter database. Drop database

OPERATORI LOGICI: AND, OR, NOT

ESERCITAZIONE: Fornitore-Fornisce-Articolo

Argomenti della lezione. Interrogazioni complesse in SQL join esplicito outer join operatori aggregati interrogazioni nidificate

Transcript:

Tabella d esempio Data warehouse in Oracle Schema tabella VENDITE(Città, Data, Importo) Viste materializzate ed estensioni al linguaggio SQL per l analisi dei dati presenti nei data warehouse Estensioni al linguaggio SQL per l analisi dei dati presenti nei data warehouse Esempio di raggruppamento a livello fisico Selezionare per ogni data l importo e la media dell importo considerando la riga corrente e le due righe che la precedono Funzioni OLAP disponibili Finestre di calcolo window Funzioni di ranking rank, dense rank,... Estenzione della clausola group by rollup, cube,... Esempio di raggruppamento a livello fisico SELECT Data, Importo, AVG(Importo) OVER ( ORDER BY Data ROWS 2 PRECEDING ) AS MediaMobile FROM Vendite ORDER BY Data; Tania Cerquitelli e Paolo Garza 1

Esempio di raggruppamento a livello logico Selezionare per ogni data l importo e la media dell importo considerando la riga corrente e le vendite avvenute nei due giorni precedenti Esempio di ranking Selezionare per ogni articolo la quantità totale venduta e il ranking in funzione delle quantità totali vendute per ogni articolo Esempio di raggruppamento a livello logico SELECT Data, Importo, AVG(Importo) OVER ( ORDER BY Data RANGE BETWEEN INTERVAL 2 DAY PRECEDING AND CURRENT ROW ) AS MediaUltimi3Giorni FROM Vendite ORDER BY Data; Esempio di ranking SELECT COD_A, SUM(Q), RANK() OVER ( ORDER BY SUM(Q) ) AS RankVendite GROUP BY COD_A; Tabelle d esempio Schema tabelle FRN(COD_F, Nome, Sede_F, ) ART(COD_A, A, Tipo, Colore, Peso) PRG(COD_P, Nome, Sede_P) FAP(COD_F, COD_P, COD_A, Q) Esempio di ranking COD_A SUM(Q) RankVendite --------------- ---------- ---------------- A2 300 1 A5 1100 2 A4 1300 3 A6 1300 3 A1 1900 5 A3 4500 6 Tania Cerquitelli e Paolo Garza 2

Esempio di dense ranking SELECT COD_A, SUM(Q), DENSE_RANK() OVER ( ORDER BY SUM(Q) ) AS DenseRankVendite GROUP BY COD_A; Esempio doppio ranking SELECT ART.COD_A, ART.Peso, SUM(Q), RANK() OVER (ORDER BY ART.Peso ) AS R_Peso, RANK() OVER (ORDER BY SUM(Q) ) AS R_Vend,ART WHERE FAP.COD_A=ART.COD_A GROUP BY ART.COD_A, ART.Peso ORDER BY R_Peso; Esempio di dense ranking COD_A SUM(Q) DenseRankVendite --------------- ---------- ----------------------- A2 300 1 A5 1100 2 A4 1300 3 A6 1300 3 A1 1900 4 A3 4500 5 Esempio di doppio ranking COD_A PESO SUM(Q) R_Peso R_Vend ---------- -------- ---------- ----------- ----------- A1 12 1900 1 5 A5 12 1100 1 2 A4 14 1300 3 3 A2 17 300 4 1 A3 17 4500 4 6 A6 19 1300 6 3 Esempio di doppio ranking Selezionare per ogni articolo il codice, il peso, la quantità totale venduta, il ranking in funzione del peso e il ranking in funzione delle quantità totali vendute per ogni articolo Selezione Top N nel ranking Se voglio solo i primi due articoli nel ranking posso usare l interrogazione che calcola il ranking come sottointerrogazione e poi fare una selezione in base al campo di ranking La sottointerrogazione è specificata tra parentesi tonde subito dopo la FROM e viene utilizzata come se fosse una tabella Tania Cerquitelli e Paolo Garza 3

Selezione Top N nel ranking SELECT * FROM (SELECT COD_A, SUM(Q), RANK() OVER (ORDER BY SUM(Q)) AS RankVendite GROUP BY COD_A) WHERE RankVendite<=2; ROW_NUMBER ROW_NUMBER all interno di ogni partizione assegna un numero progressivo ad ogni riga Selezione Top N nel ranking SELECT * FROM (SELECT COD_A, SUM(Q), RANK() OVER (ORDER BY SUM(Q)) AS RankVendite GROUP BY COD_A) WHERE RankVendite<=2; Viene gestita come una tabella temporanea creata a runtime ed eliminata alla conclusione dell esecuzione della query principale Esempio ROW_NUMBER Partizionare gli articoli in base alla tipologia ed enumerare in modo progressivo i dati all interno di ogni partizione. All interno di ogni partizione i dati sono ordinati in base al peso. Selezione Top N nel ranking COD_A SUM(Q) RankVendite --------------- ---------- ---------------- A2 300 1 A5 1100 2 Esempio ROW_NUMBER SELECT Tipo, Peso, ROW_NUMBER OVER ( PARTITION BY Tipo ORDER BY Peso ) AS RowNumberPeso FROM ART; Tania Cerquitelli e Paolo Garza 4

Esempio ROW_NUMBER Tipo Peso RowNumberPeso --------------- ---------- ------------------------- Barra 12 1 Partizione 1 Ingranaggio 19 1 Partizione 2 Vite 12 1 Partizione 3 Vite 14 2 Vite 16 3 Vite 16 4 Vite 16 5 Vite 16 6 Vite 17 7 Vite 17 8 Vite 18 9 Vite 20 10 Esempio CUME_DIST Partizionare gli articoli in base alla tipologia degli articoli ed effettuare un ordinamento nei gruppi in base al peso degli articoli. Associare ad ogni riga il rispettivo valore di CUME_DIST CUME_DIST CUME_DIST all interno di ogni partizione (gruppo) viene assegnato un peso tra 0 e 1 ad ogni riga in funzione del numero di valori che precedono il valore assunto dal campo usato per effettuare l ordinamento all interno delle partizioni Esempio CUME_DIST SELECT Tipo, Peso, CUME_DIST() OVER ( PARTITION BY Tipo ORDER BY Peso ) AS CumePeso FROM ART; CUME_DIST Data una partizione contenente N dati, per ogni riga x calcolo CUME_DIST come CUME_DIST(x) DIST(x)=numero valori che precedono o hanno lo stesso valore assunto dal campo di ordinamento all interno di x diviso N Esempio CUME_DIST Tipo Peso CumePeso --------------- ---------- ------------- Barra 12 1 ( = 1/1) Partizione 1 Ingranaggio 19 1 ( = 1/1) Partizione 2 Vite 12.1 ( = 1/10) Partizione 3 Vite 14.2 ( = 2/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 16.6 ( = 6/10) Vite 17.8 ( = 8/10) Vite 17.8 ( = 8/10) Vite 18.9 ( = 9/10) Vite 20 1 ( = 10/10) Tania Cerquitelli e Paolo Garza 5

NTILE NTILE(n) permette di dividere ogni partizione in n sottogruppi (se possibile) ognuno con lo stesso numero di dati/record. Ad ogni sottogruppo viene associato un numero identificativo Esempio NTILE Tipo Peso Ntile3Peso --------------- ---------- ------------- Barra 12 1 Partizione 1 Ingranaggio 19 1 Partizione 2 Vite 12 1 Partizione 3 Vite 14 1 Vite 16 1 Sottogruppo 1 Vite 16 1 Vite 16 2 Vite 16 2 Sottogruppo 2 Vite 17 2 Vite 17 3 Vite 18 3 Sottogruppo 3 Vite 20 3 Esempio NTILE Partizionare gli articoli in base alla tipologia ed effettuare un ulteriore suddivisione in 3 sottogruppi ognuno contenente lo stesso numero di dati. All interno di ogni partizione i dati sono ordinati in base al peso degli articoli Viste materializzate Esempio NTILE SELECT Tipo, Peso, NTILE(3) OVER ( PARTITION BY Tipo ORDER BY Peso ) AS Ntile3Peso FROM ART; Viste materializzate Viste materializzate sono viste il cui risultato viene precalcolato e memorizzato su disco permettono di velocizzare i tempi di risposta precalcolo degli aggregati, join,... solitamente sono associate a interrogazioni che operano aggregazioni possono essere usate anche per interrogazioni che non operano aggregazioni Tania Cerquitelli e Paolo Garza 6

Viste materializzate La vista materializzata può essere usata in qualunque interrogazione di selezione come se fosse una tabella Name: nome della vista materializzata Query: interrogazione associata alla vista materializzata Viste materializzate e riscrittura delle interrogazioni Queries rewriting il DBMS può trasformare le interrogazione al fine di ottimizzarne l esecuzione le viste materializzate possono essere usate automaticamente in fase di riscrittura delle interrogazioni in modo trasparente all utente usate per risolvere interrogazioni simili a quella alla quale sono associate BUILD IMMEDIATE crea la vista materializzata e carica immediatamente i risultati dell interrogazione al suo interno DEFERRED crea la vista materializzata ma non carica i dati associati all interrogazione al suo interno CREATE MATERIALIZED VIEW Nome [BUILD {IMMEDIATE DEFERRED}] [REFRESH {COMPLETE FAST FORCE NEVER} {ON COMMIT ON DEMAND}] [ENABLE QUERY REWRITE] AS Query REFRESH COMPLETE ricalcola il risultato dell interrogazione eseguendo l interrogazione su tutti i dati FAST aggiorna il contenuto della vista materializzata basandosi sulle variazioni avvenute dall ultima operazione di refresh ad ora Tania Cerquitelli e Paolo Garza 7

REFRESH FORCE se possibile viene eseguito il refresh in modalità FAST altrimenti viene usata la modalità COMPLETE NEVER il contenuto della vista non viene aggiornata con le procedure standard di Oracle Schema tabelle FRN(Cod_F, Nome, Sede_F ) ART(Cod_A, A, Tipo, Colore) PRG(Cod_P, Nome, Sede_P) FAP(Cod_F, Cod_P, Cod_A, Q) Opzioni ON COMMIT refresh effettuato automaticamente quando le operazioni sql eseguite comportano una variazione del contenuto della vista materializzata ON DEMAND refresh effettuato solo su richiesta esplicita dell utente usando la procedura DBMS_MVIEW.REFRESH Voglio materializzare l interrogazione SELECT Cod_F, Cod_A, SUM(Q) GROUP BY Cod_F, Cod_A; Opzioni Caricamento dei dati immediato, refresh completo operato solo su richiesta dell utente e abilitazione alla riscrittura delle interrogazioni ENABLE QUERY REWRITE abilita il DBMS ad utilizzare la vista materializzata come blocco base per eseguire più velocemente altre interrogazioni CREATE MATERIALIZED VIEW Frn_Art_sumQ BUILD IMMEDIATE REFRESH COMPLETE ON DEMAND ENABLE QUERY REWRITE AS SELECT Cod_F, Cod_A, SUM(Q) GROUP BY Cod_F, Cod_A; Tania Cerquitelli e Paolo Garza 8

Procedura per il refresh delle viste materializzate L utente, o un job di sistema, può richiedere il refresh del contenuto di una vista materializzata usando la procedura DBMS_MVIEW.REFRESH( vista, { C F }) vista: nome vista da aggiornare C : refresh di tipo COMPLETE F : refresh di tipo FAST Fast refresh Richiede l uso di apposite strutture di appoggio per il log delle variazioni relative alle tabelle usate nell interrogazione associata alla vista materializzata MATERIALIZED VIEW LOG memorizza le variazioni che avvengono sulla tabella a cui è associato ogni materialized view log è associato ad una sola tabella e ad alcuni dei suoi attributi Procedura per il refresh delle viste materializzate Esempio refresh in modalità COMPLETE della vista materializzata Frn_Art_sumQ _ EXECUTE DBMS_MVIEW.REFRESH( Frn_Art_sumQ, C ); Fast refresh L opzione FAST REFRESH può essere usata solo se l interrogazione associata alla vista soddisfa un insieme di vincoli devono esistere le materialized view log per le tabelle e gli attributi utilizzati nell interrogazione quando si usa la group by deve sempre essere presente COUNT(*), SUM(..), o una funzione di aggregazione nella clausola SELECT ecc. Vincoli sulla creazione delle viste materializzate Data un interrogazione è possibile creare una vista materializzata associata a tale interrogazione solo se sono soddisfatti alcuni vincoli vincoli sugli attributi rispetto ai quali si opera il raggruppamento vincoli sulle tabelle usate e sul tipo di join ecc. Esempio di materialized view log Creare un materialized view log associato alla tabella FAP e in particolare agli attributi Cod_ F, Cod_ A,,Q abilitare le opzioni SEQUENCE e ROWID abilitare la gestione di nuovi valori Tania Cerquitelli e Paolo Garza 9

Esempio di materialized view log CREATE MATERIALIZED VIEW LOG ON FAP WITH SEQUENCE, ROWID (Cod_F, Cod_A, Q) INCLUDING NEW VALUES; con opzione fast refresh CREATE MATERIALIZED VIEW Frn_Art_sumQ BUILD IMMEDIATE REFRESH FAST ON COMMIT ENABLE QUERY REWRITE AS SELECT Cod_F, Cod_A, SUM(Q) GROUP BY Cod_f, Cod_a; con opzione fast refresh Voglio materializzare l interrogazione SELECT Cod_F, Cod_A, SUM(Q) GROUP BY Cod_F, Cod_A; Opzioni Caricamento dei dati immediato, fast refresh eseguita automaticamente dopo ogni commit e abilitazione alla riscrittura delle interrogazioni Eliminazione e modifica delle viste materializzate Eliminazione DROP MATERIALIZED VIEW Nome; Modifica ALTER MATERIALIZED VIEW Nome opzioni; con opzione fast refresh CREATE MATERIALIZED VIEW LOG ON FAP WITH SEQUENCE, ROWID (Cod _ F, Cod_ A,,Q) INCLUDING NEW VALUES; Analisi delle viste materializzate La procedura DBMS_MVIEW.EXPLAIN_MVIEW permette di analizzare le caratteristiche delle viste materializzate tipo di refresh operazioni su cui il fast refresh è abilitato query rewrite abilitato, possibile, vietato errori Tania Cerquitelli e Paolo Garza 10

Piano d esecuzione Analizzando il piano d esecuzione delle interrogazioni frequenti è possibile verificare se le viste materializzate sono utilizzate oppure no Si può vedere il piano d esecuzione delle interrogazioni abilitando l opzione autotrace di SQLPLUS SQLPLUS> set autotrace on; Tania Cerquitelli e Paolo Garza 11