#sqlsatPordenone #sqlsat495 February 27, 2016 SQL Server 2016 Temporal Database Support Gianluca

Slides:



Advertisements
Presentazioni simili
Accesso ai dati su Relational Database Management Systems LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento.
Advertisements

DBMS (DataBase Management System)
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
SQL applicato a SQL Server
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Nana Mbinkeu Rodrigue Carlos 1 DB unimo OTTIMIZZAZIONE DI QUERY IN MOMIS Università degli studi di Modena e Reggio Emilia Relatore: Prof. Sonia.
Biglietti e Ritardi: schema E/R
Biglietti: schema E/R.
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Basi di dati attive Dispongono di un sottosistema integrato per definire e gestire regole di produzione (regole attive) Regole di tipo: Evento-Condizione-Azione.
1 SQL come linguaggio di definizione di dati Eugenio Di Sciascio.
Esercitazioni del Corso di Sistemi Informativi Marina Mongiello
SQL Structured Query Language
19/01/2014 Viste. 19/01/2014 Viste Le Viste Logiche o Viste o View possono essere definite come delle tabelle virtuali, i cui dati sono riaggregazioni.
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Basi di dati attive Paolo Atzeni.
Basi di dati Università Degli Studi Parthenope di Napoli
SQL: Lezione 7 Nataliya Rassadko
SQL Per la definizione di basi di dati SQL per definire ed amministrare Ogni utente puo definire una base di dati di cui diventa lamministratore potendo.
Equivalenza di espressioni
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
SQL SQL (pronunciato anche come l’inglese sequel) è l’acronimo di Structured Query Language (linguaggio di interrogazione strutturato) E’ un linguaggio.
Manipolazione dei dati I comandi SQL che permettono di modificare il contenuto di una base di dati sono insertdeleteupdate insert ha la seguente sintassi:
Daniel Stoilov Tesi di Laurea
Transazioni.
Viste. Cosè una vista? è possibile creare un subset logico di dati o una combinazione di dati una vista è una tabella logica basata su una tabella o su.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
SQL basato su ANSI (American National Standards Institute) – standard SQL SQL – Structured Query Language è un linguaggio dichiarativo e permette di comunicare.
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
100% Generation: Truth or bullshit? By Salvatore Silvio Caggia 100% Generation: Truth or bullshit? By Salvatore Silvio Caggia Questo è il form di partenza.
ACCESS Introduzione Una delle necessità più importanti in informatica è la gestione di grandi quantità di dati. I dati possono essere memorizzati.
Introduzione a Oracle 9i
Corso di Basi di Dati Il Linguaggio SQL Home page del corso:
sql: esempi di linguaggio sql nell'implementazione mysql
1 Il Linguaggio SQL Il Linguaggio SQL Prof. Lorenzo Vita, Ing. Luigi Testa.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi Il Linguaggio SQL Home page del corso:
CORSI DI FORMAZIONE - Basi di Dati: MySql - Parte 4 - Dicembre Utenti e privilegi del database - 1 Root è lutente amministratore predefinito, ma.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
Corso di Informatica Corso di Laurea in Conservazione e Restauro dei Beni Culturali Gianluca Torta Dipartimento di Informatica Tel: Mail:
ITCG “V. De Franchis” - PON FSE Modulo G/1 l’informatica”
#sqlsatPordenone #sqlsat367 February 28, 2015 Ricerche full-text Emiliano Pinto
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
SQL, esempi 30/10/2014Basi di dati SQL1. 30/10/2014Basi di dati SQL2 CREATE TABLE, esempi CREATE TABLE corsi( codice numeric NOT NULL PRIMARY KEY, titolo.
Interazione col DB Per interagire con una base dati da una pagina PHP occorre procedere come segue: Eseguire la connessione al DBMS MySQL in ascolto;
1 Basi di Dati S tructured Q uery L anguage Appunti Matteo Longhi.
Tema 2: progettazione e interrogazione di data warehouse
SQL (III) Data Definition Language/ Data Manipulation Language.
MySQL Database Management System
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Nozione ed uso Operazioni eseguite automaticamente ogni volta che avviene un certo evento Uso: –Gestione di vincoli di integrità: Per fallimento Per modifica.
Introduzione a SQL Server 2000 LSA - Laboratorio di Sistemi Informativi Economico-Aziendali Salvatore Ruggieri Dipartimento di Informatica, Università.
Vincoli Interrelazionali Per i vincoli visti l’inserimento di un valore che li viola viene semplicemente impedito. In caso di vincoli di integrità referenziale,
Vincoli interrelazionali
#sqlsatTorino #sqlsat400 May 23, 2015 Entity Framework 7 Back To The Future Nuove piattaforme, nuovi data store Michael about.me/micdenny.
© 2015 Giorgio Porcu - Aggiornamennto 28/03/2015 UdA 1A Database Progettazione Fisica G IORGIO P ORCU
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
Basi di Dati attive. Sistemi Informativi DEE - Politecnico di Bari E. TinelliBasi di dati attive2 Definizione Una base di dati si dice attiva quando dispone.
Elementi di statistica con R e i database LEZIONE 2 Rocco De Marco rocco.demarco(a)an.ismar.cnr.it Ancona, 12 Aprile 2012.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
I DONEITÀ DI C ONOSCENZE E C OMPETENZE I NFORMATICHE ( A – D ) Un database è un insieme di record (registrazioni) e di file (archivi) organizzati per uno.
#sqlsatTorino #sqlsat400 May 23, 2015 AzureML - Creating and Using Machine Learning Solutions Davide
#sqlsatPordenone #sqlsat495 February 27, 2016 SQL Server 2016 Query Store: un nuovo modo di monitorare le query Saverio Lorenzini PFE Principal Engineer.
Microsoft SQL Server 2005: Temporary Objects & Troubleshooting Francesco Quaratino Francesco Quaratino MCP, MCDBA, MCT Francesco
WPC018 Supporto ai database temporali in SQL Server 2016
Transcript della presentazione:

#sqlsatPordenone #sqlsat495 February 27, 2016 SQL Server 2016 Temporal Database Support Gianluca

#sqlsatPordenone #sqlsat495 February 27, 2016 Organizers

#sqlsatPordenone #sqlsat495 February 27, 2016 Gold Sponsors

#sqlsatPordenone #sqlsat495 February 27, 2016 Bronze Sponsors

#sqlsatPordenone #sqlsat495 February 27, 2016 Gianluca Hotz  Fondatore e Mentor SolidQ  20 anni con SQL Server (dalla 4.21 nel 1996)  Modellazione basi di dati, dimensionamento e amministrazione, sviluppo, ottimizzazione  Interessi  Modello relazionale, architettura DBMS, alta disponibilità e Disaster Recovery  Microsoft MVP SQL Server dal 1998  Fondatore e vice presidente UGISS  User Group Italiano SQL Server (PASS Chapter)  Mail: -

#sqlsatPordenone #sqlsat495 February 27, 2016 Agenda  Introduzione  SQL Server Temporal Tables  Cosa manca?

#sqlsatPordenone #sqlsat495 February 27, 2016 INTRODUZIONE

#sqlsatPordenone #sqlsat495 February 27, 2016 Cos’é un database?  Collezione strutturata di fatti  sottoinsieme di fatti del mondo reale di interesse  rappresenta proposizioni considerate vere  assiomi  permette di derivare nuove proposizioni  tramite regole formali di inferenza 8

#sqlsatPordenone #sqlsat495 February 27, 2016 Database e temporalità  Database convenzionale  Codifica solo dati correnti  Dati modificati non appena proposizioni cambiano  Dati eliminati non appena proposizioni cessano di essere vere  Database temporale  Codifica anche dati storici (passati e futuri)  Nessuna modifica o eliminazione diretta dei dati

#sqlsatPordenone #sqlsat495 February 27, 2016 Dati senza temporalità  Le righe sono proposizioni istanziate dal predicato:  Un fornitore identificato da, con nome, con sede nella città, ha un contratto in corso (correntemente). S#SNAMECITY S1GianlucaVarese S2DavideMilano S3AndreaBrescia ……… S (fornitore)

#sqlsatPordenone #sqlsat495 February 27, 2016 Problema dati non temporali  Non sappiamo quando è iniziato il contratto  Non sappiamo quando termina il contratto  Se il contratto è già terminato  Non sappiamo quando è finito!  La proposizione viene eliminata…  …non sapremo neppure che è stato a contratto!  Non posso registrare un contratto futuro

#sqlsatPordenone #sqlsat495 February 27, 2016 Semi Temporalizzazione  Le righe sono proposizioni istanziate dal predicato:  Un fornitore identificato da, con nome, con sede nella città, ha un contratto in corso dal. S#SNAMECITYSINCE S1GianlucaVareseD04 S2DavideMilanoD07 S3AndreaBresciaD03 ………… S_SINCE (fornitore)

#sqlsatPordenone #sqlsat495 February 27, 2016 Problemi dati semi temporali  Sappiamo quando è iniziato il contratto  Non sappiamo quando termina il contratto  Se il contratto è già terminato  Non sappiamo quando è finito!  La proposizione viene eliminata…  …non sapremo neppure che è stato a contratto!  Posso registrare un contratto futuro

#sqlsatPordenone #sqlsat495 February 27, 2016 Temporalizzazione completa  Le righe sono proposizioni istanziate dal predicato:  Un fornitore identificato da, con nome, con sede nella città, ha (o ha avuto o avrà) un contratto in corso dal al. S#SNAMECITYFROMTO S1GianlucaVareseD04D10 S2DavideMilanoD07D10 S3AndreaBresciaD03D10 …………… S_SINCE

#sqlsatPordenone #sqlsat495 February 27, 2016 Problemi dati completamente temporali  Interrogazioni  Due attributi per indicare gli estremi dell’intervallo  Espressioni complesse per filtri o operazioni relazionali  Definizione dei vincoli  Chiave primaria  Dati ridondanti o contradditori in periodi sovrapposti  Circonlocuzione  Dati ripetuti in periodi immediatamente consecutivi  Chiavi esterne  Vincolo di integrità deve comprendere il periodo

#sqlsatPordenone #sqlsat495 February 27, 2016 Bi Temporalità  Stated Time (o Valid/Application Time)  Si riferisce a quando crediamo che qualcosa sia/sia stato/sarà vero secondo quanto sappiamo ora  Specificato da utente/applicazione  Permette di gestire anche periodi futuri  Logged Time (o Transaction/System Time)  Si riferisce a quando il database ha registrato qualcosa come vero  Gestito direttamente dal sistema  Permette di gestire solo presente e passato

#sqlsatPordenone #sqlsat495 February 27, 2016 Bi Temporalità formale  Stated Time (o Valid/Application Time)  per una proposizione P è l’insieme dei tempi T in modo che, secondo quanto a nostra conoscenza ora, P è, è stata o sarà vera al tempo T.  Logged Time (o Transaction/System Time)  per una proposizione P è l’insieme dei tempi T in modo che, secondo quanto afferma, o ha affermato, il database al tempo T, P è o è stata vera.

#sqlsatPordenone #sqlsat495 February 27, 2016 Bi Temporalizzazione  Le righe sono proposizioni istanziate dal predicato:  Un fornitore identificato da, con nome, con sede nella città, ha (o ha avuto o avrà) un contratto in corso dal al  Si ritengono vere nel periodo da a S#SNAMECITYFROMTOS_FROMS_TO S1GianlucaVareseD02D10D01D02 S2DavideMilanoD07D10D01D99 S3AndreaBresciaD03D10D01D99 S1GianlucaVareseD04D10D02D99 ………………… S_SINCE

#sqlsatPordenone #sqlsat495 February 27, 2016 SQL SERVER TEMPORAL TABLES

#sqlsatPordenone #sqlsat495 February 27, 2016 «Temporal Table» in SQL Server 2016  «System-versioned Temporal Table»  Permette di gestire valori correnti e storici  Periodo validità  definito da due colonne di tipo datetime2  aggiornato dal sistema a fronte di modifiche  Implementata tramite due tabelle fisiche  «Current Table» per dati correnti  «History Table» per dati storici (modificati)  Schema speculare a «Current Table»

#sqlsatPordenone #sqlsat495 February 27, 2016 Scenari obiettivo  «Workaround»  Complessi  Limitati  Inefficienti  Funzionalità  Estensioni DML/DDL  ANSI SQL 2011 Time TravelData Audit Slowly Changing Dimensions Repair record- level corruptions

#sqlsatPordenone #sqlsat495 February 27, 2016 «Temporal table» (dati correnti) Insert / Bulk Insert * Versioni vecchie Update */ Delete * «History table» Performance Funzionamento modifiche

#sqlsatPordenone #sqlsat495 February 27, 2016 «Temporal table» (dati correnti) Query temporali * FOR SYSTEM_TIME ALL, AS OF, BETWEEN … AND …, FROM … TO, CONTAINED IN «History table» Query normali (dati correnti) * Include versioni storiche Performance Funzionamento interrogazioni

#sqlsatPordenone #sqlsat495 February 27, 2016 Predicati temporali Image from FOR SYSTEM_TIME

#sqlsatPordenone #sqlsat495 February 27, 2016 Nessun cambio modello di programmazioneNuovi «Insights» INSERT / BULK INSERT UPDATE DELETE MERGE DML SELECT * FROM temporal Querying CREATE temporal TABLE PERIOD FOR SYSTEM_TIME… ALTER regular_table TABLE ADD PERIOD… DDL FOR SYSTEM_TIME AS OF FROM..TO BETWEEN..AND CONTAINED IN Temporal Querying Performance Come iniziare con i dati temporali

#sqlsatPordenone #sqlsat495 February 27, 2016 DEMO Exploring Temporal Tables

#sqlsatPordenone #sqlsat495 February 27, 2016 Modifiche allo schema  Prima della CTP3  Disabilitare «versionamento»  Modificare entrambi gli schemi  Riabilitare «versionamento»  Dalla CTP3  In generale, operazione diretta  Qualche limite  Es. aggiunta colonne «computed», «identity»

#sqlsatPordenone #sqlsat495 February 27, 2016 Gestione «Retention»  Stretch Database  Partizionamento «History Table»  Script di pulizia personalizzato

#sqlsatPordenone #sqlsat495 February 27, 2016 SELECT * FROM Department FOR SYSTEM_TIME AS OF ' ' Considerazioni: 1.Storico più voluminoso dati correnti 2.Dati conservati da 3 a 10 anni 3.«Caldi»: fino a poche settimane/mesi 4.«Freddi»: interrogati raramente Soluzione: Storico come «stretch table»: PeriodEnd < “Now - 6 months” Azure SQL Dùtabase «Stretch Database»

#sqlsatPordenone #sqlsat495 February 27, 2016 Partizionamento «History Table» 1.SWITCH OUT 2.MERGE RANGE 3.SPLIT RANGE Image from

#sqlsatPordenone #sqlsat495 February 27, 2016 Script di pulizia personalizzato Image from

#sqlsatPordenone #sqlsat495 February 27, 2016 Interoperabilità con «In-Memory OLTP» Image from

#sqlsatPordenone #sqlsat495 February 27, 2016 COSA MANCA?

#sqlsatPordenone #sqlsat495 February 27, 2016 Limitazioni  Tabelle non possono essere FILETABLE  No colonne tipo FILESTREAM  No query temporali via «Linked Server»  «History Table» nello stesso database  «History Table» non può avere vincoli  INSERT e UPDATE non possono referenziare colonne periodo  TRUNCATE TABLE richiede disabilitazione «versionamento»  Dati «History Table» non modificabili direttamente  ON [DELETE|UPDATE] CASCADE non permessi  INSTEAD OF trigger non permessi  AFTER trigger permessi solo su «Current Table»  CDC e CDT supportati solo con «Current Table»  Altri punti di attenzione…

#sqlsatPordenone #sqlsat495 February 27, 2016 Implementazioni  «Valid/Application/Stated Time»  Periodo rappresentato tramite intervallo?  Operatori relazionali generici?  PACK/UNPACK  Operatori di Allen  Valutare IntervalCID OperatoreNotazioneDefinizione Equals(i 1 = i 2 )(b 1 = b 2 ) AND (e 1 = e 2 ) Before(i 1 before i 2 )(e 1 < b 2 ) After(i 1 after i 2 )(i 2 before i 1 ) Includes (i 1 ⊇ i 2 ) (b 1 ≤ b 2 ) AND (e 1 ≥ e 2 ) Properly Includes (i 1 ⊃ i 2 )(i 1 ⊇ i 2 ) AND (i 1 ≠ i 2 ) Meets(i 1 meets i 2 )(b 2 = e 1 + 1) OR (b 1 = e 2 +1) Overlaps(i 1 overlaps i 2 )(b 1 ≤ e 2 ) AND (b 2 ≤ e 1 ) Merges(i 1 merges i 2 )(i 1 overlaps i 2 ) OR (i 1 meets i 2 ) Begins(i 1 begins i 2 )(b 1 = b 2 ) AND (e 1 ≤ e 2 ) Ends(i 1 ends i 2 )(e 1 = e 2 ) AND (b 1 ≥ b 2 )

#sqlsatPordenone #sqlsat495 February 27, 2016 Risorse - Presentazioni  UGISS Workshops  Database & Time-Dependent Data - Parte 1 Database & Time-Dependent Data - Parte 1  Database & Time-Dependent Data - Parte 2 Database & Time-Dependent Data - Parte 2  Disponibili demo e Screencast  SQL Conference  Temporal Database Introduction Temporal Database Introduction

#sqlsatPordenone #sqlsat495 February 27, 2016 Risorse - Libri teoria  Temporal Data and The Relational Model Temporal Data and The Relational Model  C.J.Date, Hugh Darwen, Nikos A. Lorentzos  ISBN  Date on Database Writings Date on Database Writings  C.J.Date  ISBN  Un capitol con critica a standard proposto TSQL2  Time and Relational Theory: Temporal Databases in the Relational Model and SQL Time and Relational Theory: Temporal Databases in the Relational Model and SQL  C.J.Date, Hugh Darwen, Nikos A. Lorentzos  ISBN  Completamente riscritto (include standard SQL 2011)

#sqlsatPordenone #sqlsat495 February 27, 2016 Risorse - Libri implementazione  Inside Microsoft SQL Server 2008: T-SQL Programming Inside Microsoft SQL Server 2008: T-SQL Programming  Itzik Ben-Gan, Dejan Sarka, Greg Low et al  ISBN  Capitolo su dati temporali, UDT basato su CLR e intervalli  Developing Time-Oriented Database Applications in SQL Developing Time-Oriented Database Applications in SQL  Richard T. Snodgrass  ISBN  Fuori stampa, download gratuito:  Joe Celko's SQL for Smarties: Advanced SQL Programming Joe Celko's SQL for Smarties: Advanced SQL Programming  Joe Celko  ISBN  Capitoli su dati temporali e interrogazioni

#sqlsatPordenone #sqlsat495 February 27, 2016 Risorse - Articoli  First Look at System-Versioned Temporal Tables-Part 1: Creating Tables and Modifying Data First Look at System-Versioned Temporal Tables-Part 1: Creating Tables and Modifying Data  First Look at System-Versioned Temporal Tables-Part 2: Querying Data and Optimization Considerations First Look at System-Versioned Temporal Tables-Part 2: Querying Data and Optimization Considerations  Temporal Tables (MSDN) Temporal Tables (MSDN) 

#sqlsatPordenone #sqlsat495 February 27, 2016 Q&A  Questions?

#sqlsatPordenone #sqlsat495 February 27, 2016 THANKS! #sqlsatPordenone #sqlsat495