Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Back to the future – Temporal Tables
in
SQL Server 2016
Stéphane Fréchette
Thursday September 17, 2015
My name is Stéphane Fréchette
SQL Server MVP | Data & Business Intelligence Solutions Architect | Consultant |
Speaker | B...
Temporal
Query back in time
A temporal table is a table for which a PERIOD definition exists and which
contains system columns with a datatype of date...
Real data sources are dynamic
Historical data may be critical to business success
Traditional databases fail to provide re...
No change in programming model New Insights
INSERT / BULK INSERT
UPDATE
DELETE
MERGE
DML SELECT * FROM temporal
Querying
H...
Temporal table (actual data)
Insert / Bulk Insert
* Old versions
Update */ Delete *
How system-time works?
History Table
Temporal table (actual data)
Temporal Queries *
(Time travel,etc.)
How system-time works?
History Table
Regular queries
(c...
Querying Temporal Data
Expression Qualifying Rows
AS OF <date_time> SysStartTime < = date_time AND SysEndTime >
date_time
...
DepNum DepName MngrID From To
A001 Marketing 5 2005 2008
A002 Sales 2 2005 2007
A003 Consulting 6 2005 2006
A003 Consultin...
Provides correct information
about stored facts at any
point in time, or between 2
points in time.
There are two orthogona...
• A temporal table must have a primary key defined
• History table cannot have constraints; primary key, foreign key, tabl...
SELECT * FROM Department
FOR SYSTEM_TIME
AS OF '2010.01.01' Facts:
1. History is much bigger than actual data
2. Retained ...
MSDN Documentation
https://msdn.microsoft.com/en-CA/library/dn935015.aspx
Temporal in SQL Server 2016 (Video) – Channel 9
...
What Questions Do You Have?
Thank You
For attending this session
Upcoming SlideShare
Loading in …5
×

Back to the future - Temporal Table in SQL Server 2016

4,363 views

Published on

SQL Server 2016 CTP2 introduced support for temporal tables as a database feature that provides built-in support for provide information about data stored in the table at any point in time rather than only the data that is correct at the current moment in time.

Topics will cover:
What is a Temporal Table?, Why Temporal? How does this work?, When to use (use cases) and demos...

Published in: Technology
  • Be the first to comment

Back to the future - Temporal Table in SQL Server 2016

  1. 1. Back to the future – Temporal Tables in SQL Server 2016 Stéphane Fréchette Thursday September 17, 2015
  2. 2. My name is Stéphane Fréchette SQL Server MVP | Data & Business Intelligence Solutions Architect | Consultant | Speaker | Big Data | NoSQL | Data Science. Drums, good food and fine wine. I have a passion for architecting, designing and building solutions that matter. Twitter: @sfrechette LinkedIn: ca.linkedin.com/stephanefrechette Blog: stephanefrechette.com Email: stephanefrechette@ukubu.com SQLSaturday Boston #364 Who Am I?
  3. 3. Temporal Query back in time
  4. 4. A temporal table is a table for which a PERIOD definition exists and which contains system columns with a datatype of datetime2 into which the period of validity is recorded by the system, and which has an associated history table into which the system records all prior versions of each record with their period of validity. With a temporal table, the value of each record at any point in time can be determined, rather than just the current value of each record. A temporal table is also referred to as a system-versioned table What is a Temporal Table?
  5. 5. Real data sources are dynamic Historical data may be critical to business success Traditional databases fail to provide required insights Workarounds are… Complex, expensive, limited, inflexible, inefficient SQL Server 2016 makes life easy No change in programming model New Insights Why Temporal Time Travel Data Audit Slowly Changing Dimensions Repair record-level corruptions
  6. 6. No change in programming model New Insights INSERT / BULK INSERT UPDATE DELETE MERGE DML SELECT * FROM temporal Querying How to start with temporal 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
  7. 7. Temporal table (actual data) Insert / Bulk Insert * Old versions Update */ Delete * How system-time works? History Table
  8. 8. Temporal table (actual data) Temporal Queries * (Time travel,etc.) How system-time works? History Table Regular queries (current data) * Include Historical Version
  9. 9. Querying Temporal Data Expression Qualifying Rows AS OF <date_time> SysStartTime < = date_time AND SysEndTime > date_time FROM <start_date_time> TO <end_date_time> SysStartTime < end_date_time AND SysEndTime > start_date_time BETWEEN <start_date_time> AND <end_date_time> SysStartTime < = end_date_time AND SysEndTime > start_date_time CONTAINED IN (<start_date_time>, <end_date_time> SysStartTime > = start_date_time AND SysEndTime < = end_date_time
  10. 10. DepNum DepName MngrID From To A001 Marketing 5 2005 2008 A002 Sales 2 2005 2007 A003 Consulting 6 2005 2006 A003 Consulting 10 2009 2012 DepNum DepName MngrID A001 Marketing 5 A001 Marketing 6 A002 Sales 2 A002 Sales 5 A003 Consulting 6 A003 Consulting 10 DepNum DepName MngrID From To A001 Marketing 6 2008 ∞ A002 Sales 5 2007 ∞ A001 A002 A003 period of validity current time ∞ ∞ Department (current) Department (history) Department (current + history) 2005 2015 SELECT * FROM DepartmentSELECT * FROM Department FOR SYSTEM_TIME BETWEEN '2006.01.01' AND '2007.01.01' SELECT * FROM Department FOR SYSTEM_TIME CONTAINED IN ('2007.01.01', '2009.01.01') SELECT * FROM Department FOR SYSTEM_TIME AS OF '2006.01.01' Getting insights from temporal A001 A002 A003 “Get actual row versions”AS OFBETWEEN..ANDCONTAINED IN
  11. 11. Provides correct information about stored facts at any point in time, or between 2 points in time. There are two orthogonal sets of scenarios with regards to temporal data: System(transaction)-time Application-time SELECT * FROM Person.BusinessEntityContact FOR SYSTEM_TIME BETWEEN @Start AND @End WHERE ContactTypeID = 17 Performance Temporal database support - BETWEEN
  12. 12. • A temporal table must have a primary key defined • History table cannot have constraints; primary key, foreign key, table or column constraints • INSERT and UPDATE statements cannot reference the SYSTEM_TIME period columns • TRUNCATE TABLE is not supported while SYSTEM_VERSIONING is ON • Direct modification of the data in a history table is not permitted • INSTEAD OF triggers not permitted on current and history table, AFTER triggers permitted only on current table • REPLICATION usage is limited, some objects/properties are not replicated Limitations…
  13. 13. SELECT * FROM Department FOR SYSTEM_TIME AS OF '2010.01.01' Facts: 1. History is much bigger than actual data 2. Retained between 3 and 10 years 3. “Warm”: up to a few weeks/months 4. “Cold”: rarely queried Solution: History as a stretch table: PeriodEnd < “Now - 6 months” Azure SQL Database Business Scenario…
  14. 14. MSDN Documentation https://msdn.microsoft.com/en-CA/library/dn935015.aspx Temporal in SQL Server 2016 (Video) – Channel 9 https://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL-Server-2016 SQL Server Pro – First Look at System-Versioned Temporal Tables… http://sqlmag.com/sql-server/first-look-system-versioned-temporal-tables-part-1-creating-tables-and-modifying-data Resources
  15. 15. What Questions Do You Have?
  16. 16. Thank You For attending this session

×