WPC018 Supporto ai database temporali in SQL Server 2016

Slides:



Advertisements
Presentazioni simili
Primary Italian Saying How You Are.
Advertisements

ISA Server 2004 Enterprise Edition Preview. ISA Server 2004.
3/27/2017 2:27 AM ©2005 Microsoft Corporation. All rights reserved.
Sharepoint Gabriele Castellani
Struttura dellinterfaccia SBN2 Mauro Narbone Udine 20 Aprile 2006.
1.E un algoritmo ricorsivo: Tutti le istanze di oggetti raggiungibili da un oggetto persistente diventano anchessi persistenti.
TIPOLOGIA DELLE VARIABILI SPERIMENTALI: Variabili nominali Variabili quantali Variabili semi-quantitative Variabili quantitative.
Basi di dati attive Paolo Atzeni.
Item Tracking in NAV 5.0 SOLUTIONS. Item Tracking Perchè cambiare Problemi delle release precedenti –Difficoltà di utilizzo –Non perfetta integrazione.
Creazione e manipolazione tabelle. TABELLE una tabella può essere creata in qualsiasi momento,anche quando gli utenti stanno usando il database la struttura.
Attribution-NonCommercial-ShareAlike Le novità
PINK FLOYD DOGS You gotta be crazy, you gotta have a real need. You gotta sleep on your toes. And when you're on the street. You gotta be able to pick.
Microsoft Confidential Gabriele Castellani Developer & Platform Evangelism Microsoft.
Extension pack per IIS7 Piergiorgio Malusardi IT Pro Evangelist
Un problema multi impianto Un’azienda dispone di due fabbriche A e B. Ciascuna fabbrica produce due prodotti: standard e deluxe Ogni fabbrica, A e B, gestisce.
MyEconLab_Univerità degli studi di Milano, corso Prof.ssa Valentina Raimondi How to Access MyEconLab 1.
L A R OUTINE D EL M ATTINO Ellie B.. Io mi sono svegliata alle cinque del mattino.
Project Review Novembrer 17th, Project Review Agenda: Project goals User stories – use cases – scenarios Project plan summary Status as of November.
Panoramica generale di "Questo è NAV" Benvenuti Controllo Margine Crescita Introduzione Customer Evidence Dimostrazione Introduzione Customer Evidence.
#sqlsatPordenone #sqlsat495 February 27, 2016 SQL Server 2016 Temporal Database Support Gianluca
Titolo evento Luogo, data Seminario INSPIRE Bologna, luglio 2012 Profili, strumenti ed implementazioni dei metadati Antonio Rotundo Agenzia per l’Italia.
Activity diagrams Data & Control Flows Esempi
#sqlsatParma #sqlsat462 November 28°, 2015 SQL Server 2016 Query Store: un nuovo modo di ottimizzare le query Saverio Lorenzini PFE Principal Engineer.
Project IOLI Practical exemple in Italy and in Sicily Il presente progetto è finanziato con il sostegno della Commissione europea. L’autore è il solo responsabile.
Inglese Lezione 11, 9/3/15. Annunci Non si terranno le lezioni del 16 Marzo La lezione del 18 Marzo (ore 13) sarà tenuta dal prof. Gregory Landini.
MSc in Communication Sciences Program in Technologies for Human Communication Davide Eynard Facoltà di scienze della comunicazione Università della.
What time does the plane leave? At 12:45 1.
Do You Want To Pass Actual Exam in 1 st Attempt?.
Bing SMB Advertisers – Search Ads
WPC033 - Dai un volto umano alle tue app con Cognitive Services
Office WPC049 Strumenti di supporto e analisi per Office 365
WPC069 Il deployment automatizzato di Windows 10
Agenda Il problema della protezione dei dati
Vito Flavio Lorusso – Senior SDE - Microsoft
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
“Costi di salvataggio e parametri di valutazione” Guglielmo Camera
MONBOX Federico Bitelli bitelli<at>fis.uniroma3.it
Sistemi e Applicazioni per l’Amministrazione Digitale
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
ORACLE Corso Base Copyright © Maggio 2008 Assi Loris Versione : 1
Corso di Basi di Dati Il Linguaggio SQL
Dichiarazione dei servizi di sito nel GOCDB
Jobs and occupations What do they do?
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
WPC034 - Visual Studio Code: sviluppare su Linux, Mac OS e Windows
Gruppo storage CCR Nuove attivita’ 2007 Alessandro Brunengo CCR - Roma
Daniele Pedrini INFN Milano-Bicocca
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
JetWalk: Agenda e review committee
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
X. Specifications (IV).
PROGRAMMAZIONE BASH – ISTRUZIONE IF
Bubble Sort.
Studente : Andrea Cassarà Classe: 5AII A.S. 2014/2015 Link Sito
A.A Architetture di data integration
Il condizionale.
Windows Admin Center La rivoluzione della gestione di Windows Server
La Grammatica Italiana Avanti! p
Introduzione alle basi di dati
Service Level The Service Level is defined as the percentage of orders cycles in which inventory is sufficient to cover demands, or.
SQL per la modifica di basi di dati
Italy Recent Media Mentions The 2017 Report’s Policy Recommendations
Progettazione concettuale
CdS 2017: embargo fino a TAUP2017
Microsoft SQL Graph Database
Build /13/2019 ASP.NET Core Web API all’opera Problemi veri nello sviluppo di un backend vero Marco Minerva Microsoft MVP Windows Development
Wikipedia Wikipedia è un'enciclopedia online, collaborativa e libera. Grazie al contributo di volontari da tutto il mondo, Wikipedia ad ora è disponibile.
TITLE [CENTURY GOTHIC, 35] TITLE [CENTURY GOTHIC, 35]
TITLE [CENTURY GOTHIC, 35] TITLE [CENTURY GOTHIC, 35]
Transcript della presentazione:

WPC018 Supporto ai database temporali in SQL Server 2016 Gianluca Hotz - UGISS - @glhotz

Gianluca Hotz Fondatore e Mentor SolidQ Interessi 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 presidente UGISS User Group Italiano SQL Server (PASS Chapter) Gianluca Hotz www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Agenda Introduzione Tabelle temporali in SQL Server Scenari Futuro www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Introduzione Supporto ai database temporali in SQL Server 2016 www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

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

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 definitiva dei dati

Dati senza temporalità Le righe sono proposizioni istanziate dal predicato: Un fornitore identificato da <S#>, con nome <SNAME>, con sede nella città <CITY>, ha un contratto in corso (correntemente). S (fornitore) S# SNAME CITY S1 Gianluca Varese S2 Davide Milano S3 Andrea Brescia …

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

Semi Temporalizzazione Le righe sono proposizioni istanziate dal predicato: Un fornitore identificato da <S#>, con nome <SNAME>, con sede nella città <CITY>, ha un contratto in corso dal <SINCE>. S_SINCE (fornitore) S# SNAME CITY SINCE S1 Gianluca Varese D04 S2 Davide Milano D07 S3 Andrea Brescia D03 …

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

Temporalizzazione completa Le righe sono proposizioni istanziate dal predicato: Un fornitore identificato da <S#>, con nome <SNAME>, con sede nella città <CITY>, ha (o ha avuto o avrà) un contratto in corso dal <FROM> al <TO>. S_DURING (fornitore) S# SNAME CITY FROM TO S1 Gianluca Varese D04 D10 S2 Davide Milano D07 S3 Andrea Brescia D03 …

Problemi dati completamente temporali 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

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

Bi Temporalizzazione Le righe sono proposizioni istanziate dal predicato: Un fornitore identificato da <S#>, con nome <SNAME>, con sede nella città <CITY>, ha (o ha avuto o avrà) un contratto in corso dal <FROM> al <TO>. Si ritengono vere nel periodo da <S_FROM> a <S_TO>. S_DURING_BI (fornitore) S# SNAME CITY FROM TO S_FROM S_TO S1 Gianluca Varese D02 D10 D01 S2 Davide Milano D07 D99 S3 Andrea Brescia D03 D04 …

Tabelle temporali Supporto ai database temporali in SQL Server 2016 www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

«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»

Scenari obiettivo «Workaround» Funzionalità Complessi Limitati Time Travel Data Audit «Workaround» Complessi Limitati Inefficienti Funzionalità Estensioni DML/DDL ANSI SQL 2011 Slowly Changing Dimensions Repair record-level corruptions https://msdn.microsoft.com/library/mt631669.aspx Data audit: Turn on system versioning for tables that store critical information where you need to track changes, when, and by which user. Using Temporal Tables will allow you to perform a data audit transparently (without breaking existing applications) and to perform efficient data forensics at any point in time. Time travel: Use Temporal Tables to reconstruct the state of your data at any point in time in the past, compare data from multiple moments side-by-side, and perform trend analysis for important business indicators. Utilize new temporal querying capabilities to review business reports as they were in the past without changing the report. Zoom in for business analysis at a specific point in time naturally using the built-in querying capabilities. Slowly changing dimensions: Keep a history of dimension attribute changes in the data warehouse model without additional ETL code. Repair record-level corruptions: Perform the finest level of data repair in case of accidental corruption made either by a human or application. The affected portion of data can be restored to “last good known state” very precisely, without dealing with backups and introducing downtime to your application

Come iniziare con i dati temporali Microsoft Ignite 2015 11/25/2017 4:17 PM Come iniziare con i dati temporali Nessun cambio modello di programmazione Nuovi «Insights» FOR SYSTEM_TIME AS OF FROM..TO BETWEEN..AND CONTAINED IN Temporal Querying CREATE temporal TABLE PERIOD FOR SYSTEM_TIME… ALTER regular_table TABLE ADD PERIOD… DDL INSERT / BULK INSERT UPDATE DELETE MERGE DML SELECT * FROM temporal Querying Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx How Does Temporal Work? System-versioning for a table is implemented as a pair of tables, a current table and a history table. Within each of these tables, two additional datetime (datetime2 datatype) columns are used to define the period of validity for each record – a system start time (SysStartTime) column and a system end time (SysEndTime) column. The current table contains the current value for each record. The history table contains the each previous value for each record, if any, and the start time and end time for the period for which it was valid. INSERTS: On an INSERT, the system sets the value for the SysStartTime column to the UTC time of the current transaction based on the system clock and assigns the value for the SysEndTime column to the maximum value of 9999-12-31 – this marks the record as open. UPDATES: On an UPDATE, the system stores the previous value of the record in the history table and sets the value for the SysEndTime column to the UTC time of the current transaction based on the system clock. This marks the record as closed, with a period recorded for which the record was valid. In the current table, the record is updated with its new value and the system sets the value for the SysStartTime column to the UTC time for the transaction based on the system clock. The value for the updated record in the current table for the SysEndTime column remains the maximum value of 9999-12-31. DELETES: On a DELETE, the system stores the previous value of the record in the history table and sets the value for the SysEndTime column to the UTC time of the current transaction based on the system clock. This marks this record as closed, with a period recorded for which the previous record was valid. In the current table, the record is removed. Queries of the current table will not return this value. Only queries that deal with history data return data for which a record is closed. MERGE: On a MERGE, MERGE behaves as an INSERT, an UPDATE, or a DELETE based on the condition for each record. Performance © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Funzionamento modifiche Microsoft Ignite 2015 11/25/2017 4:17 PM Funzionamento modifiche «Temporal table» (dati correnti) «History table» * Versioni vecchie Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx The SYSTEM_TIME period columns used to record the SysStartTime and SysEndTime values must be defined with a datatype of datetime2. Update */ Delete * Insert / Bulk Insert Performance © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Funzionamento interrogazioni Microsoft Ignite 2015 11/25/2017 4:17 PM Funzionamento interrogazioni «Temporal table» (dati correnti) «History table» * Include versioni storiche Source: https://msdn.microsoft.com/en-us/library/dn935015(v=sql.130).aspx The SYSTEM_TIME period columns used to record the SysStartTime and SysEndTime values must be defined with a datatype of datetime2. Query normali (dati correnti) Query temporali * FOR SYSTEM_TIME ALL, AS OF, BETWEEN … AND …, FROM … TO, CONTAINED IN Performance © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Demo www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Scenari Supporto ai database temporali in SQL Server 2016 www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Gestione «Retention» Stretch Database Partizionamento «History Table» Script di pulizia personalizzato https://msdn.microsoft.com/en-us/library/mt637341.aspx

«Stretch Database» Azure SQL Database SELECT * FROM Department Microsoft Ignite 2015 11/25/2017 4:17 PM «Stretch Database» Considerazioni: Storico più voluminoso dati correnti Dati conservati da 3 a 10 anni «Caldi»: fino a poche settimane/mesi «Freddi»: interrogati raramente SELECT * FROM Department FOR SYSTEM_TIME AS OF '2010.01.01' Soluzione: Storico come «stretch table»: PeriodEnd < “Now - 6 months” Azure SQL Database Source: http://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL-Server-2016 Example of using temporal tables with Azure SQL Database stretch tables. © 2015 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Demo www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Partizionamento «History Table» SWITCH OUT MERGE RANGE SPLIT RANGE Image from https://msdn.microsoft.com/en-us/library/mt637341.aspx

Script di pulizia personalizzato Image from https://msdn.microsoft.com/en-us/library/mt637341.aspx

Interoperabilità con «In-Memory OLTP» Image from https://msdn.microsoft.com/en-us/library/mt637341.aspx

Futuro Supporto ai database temporali in SQL Server 2016 www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

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… https://msdn.microsoft.com/en-us/library/mt604468.aspx

Implementazioni «Valid/Application/Stated Time» Periodo rappresentato tramite intervallo? Operatori relazionali generici? PACK/UNPACK Operatori di Allen Valutare IntervalCID Operatore Notazione Definizione Equals (i1 = i2) (b1 = b2) AND (e1 = e2) Before (i1 before i2) (e1 < b2) After (i1 after i2) (i2 before i1) Includes (i1 ⊇ i2) (b1 ≤ b2) AND (e1 ≥ e2) Properly Includes (i1 ⊃ i2) (i1 ⊇ i2) AND (i1 ≠ i2) Meets (i1 meets i2) (b2 = e1 + 1) OR (b1 = e2 +1) Overlaps (i1 overlaps i2) (b1 ≤ e2) AND (b2 ≤ e1) Merges (i1 merges i2) (i1 overlaps i2) OR (i1 meets i2) Begins (i1 begins i2) (b1 = b2) AND (e1 ≤ e2) Ends (i1 ends i2) (e1 = e2) AND (b1 ≥ b2)

Risorse - Presentazioni UGISS Workshops Database & Time-Dependent Data - Parte 1 Database & Time-Dependent Data - Parte 2 Disponibili demo e Screencast SQL Conference Temporal Database Introduction Pluralsight Working With Temporal Data in SQL Server

Risorse - Libri teoria Temporal Data and The Relational Model C.J.Date, Hugh Darwen, Nikos A. Lorentzos ISBN 978-1558608559 Date on Database Writings 2000-2006 C.J.Date ISBN 978-1590597460 Un capitol con critica a standard proposto TSQL2 Time and Relational Theory: Temporal Databases in the Relational Model and SQL ISBN 978-0128006313 Completamente riscritto (include standard SQL 2011)

Risorse - Libri implementazione Inside Microsoft SQL Server 2008: T-SQL Programming Itzik Ben-Gan, Dejan Sarka, Greg Low et al ISBN 978-0735626027 Capitolo su dati temporali, UDT basato su CLR e intervalli Developing Time-Oriented Database Applications in SQL Richard T. Snodgrass ISBN 978-1558604360 Fuori stampa, download gratuito: http://www.cs.arizona.edu/~rts/publications.html Joe Celko's SQL for Smarties: Advanced SQL Programming Joe Celko ISBN 978-0128007617 Capitoli su dati temporali e interrogazioni

Risorse - Articoli 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 Temporal Tables (MSDN Interval Queries in SQL Server

Domande e Risposte Q&A www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Corsi consigliati MOC10986B Updating Your Skills to SQL Server 2016 MOC20762A Developing SQL Databases Corsi consigliati www.wpc2016.it – info@wpc2016.it - +39 02 365738.11

Contatti OverNet Education info@overneteducation.it www.overneteducation.it Tel. 02 365738 @overnete www.facebook.com/OverNetEducation www.linkedin.com/company/overnet-solutions www.wpc2016.it Contatti OverNet Education www.wpc2016.it – info@wpc2016.it - +39 02 365738.11