tidsresor – med sql server 2016 temporal tables · 2020-03-09 · sql server 2016 temporal tables...

30
TIDSRESOR – MED SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12

Upload: others

Post on 20-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

TIDSRESOR – MED SQL SERVER 2016

TEMPORAL TABLESJOHAN ÅHLÉN, MALMÖ, 2016-10-12

Page 2: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

OM MIG

Johan Åhlén• Driver det egna konsultföretaget Visionova Solutions AB

• Microsoft MVP

• Utsetts av Techworld / Computer Sweden till en av Sveriges främsta utvecklare

• F d ordförande i SQLUG

Page 3: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

VILKA ÄR NI?

Page 4: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

SQL SERVER 2016 VIKTIGASTE NYHETER

• Kraftigt förbättrad In-Memory OLTP

• Live Query Statistics

• Query Store (”svarta lådan”)

• Always Encrypted

• Stretch Databases

• Integration med R

• …och… Temporal Tables (Obs!!! Blanda inte ihop med ”temporary” tables!)

Page 5: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

VAD ÄR TEMPORAL TABLES?

Vad finns för alternativ?

Page 6: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

VAD KAN TEMPORAL TABLES ANVÄNDAS TILL?

Några exempel

• Change Data Capture

• ”Undo” funktion

• Data Auditing (säkerhet)

• Slowly-Changing Dimensions

Page 7: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

HUR FUNKAR DET?

Starttid Sluttid

Current

History

SYSUTCDATETIME()

Primary key

System-versioned Temporal Table

Page 8: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

EXEMPEL: SKAPA TABELL

CREATE TABLE [dbo].[Inventory](

[ProductId] nvarchar(20) PRIMARY KEY CLUSTERED,

[QuantityInStock] int NOT NULL,

[QuantityReserved] int NOT NULL,

[SysStartTime] datetime2(0) GENERATED ALWAYS AS ROW START NOT NULL,

[SysEndTime] datetime2(0) GENERATED ALWAYS AS ROW END NOT NULL,

PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime])

)

WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[Inventory_History]));

Page 9: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

EXEMPEL: ÄNDRA BEFINTLIG TABELL

ALTER TABLE [dbo].[Inventory] ADD

[SysStartTime] datetime2(0) GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,

[SysEndTime] datetime2(0) GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,

PERIOD FOR SYSTEM_TIME ([SysStartTime], [SysEndTime]);

ALTER TABLE [dbo].[Inventory]

SET (SYSTEM_VERSIONING = ON);

Vad betyder HIDDEN?

Page 10: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

DEMOTAJM!

Page 11: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

HUR LÄSA FRÅN TEMPORAL TABLES?

Page 12: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

LÄSA FRÅN TEMPORAL TABLES

SELECT …FROM …FOR SYSTEM_TIME AS OF ’2016-10-12 09:00:00’

Point-in-time queries

Page 13: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

LÄSA FRÅN TEMPORAL TABLES

SELECT …FROM …FOR SYSTEM_TIME …

Interval queries

Page 14: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

LÄSA FRÅN TEMPORAL TABLES

SELECT …FROM …FOR SYSTEM_TIME ALL

Hämta rubbet…

Page 15: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

DEMOTAJM!

Page 16: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

GÖRA STRUKTURFÖRÄNDRINGAR I TEMPORAL TABLES

Är det några problem?

Page 17: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

BEGRÄNSA HISTORIKEN I TEMPORAL TABLES

Är det några problem?

Page 18: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

SCENARIO: CHANGE DATA CAPTURE (CDC)

Operation Tid Data

INSERT …

UPDATE …

DELETE …

UPDATE …

Page 19: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

CHANGE DATA CAPTURE - TRADITIONELL

Page 20: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

CHANGE DATA CAPTURE – MED TEMPORAL TABLES

• Fungerar även på In-Memory tabeller

• Fungerar även i Azure SQL Databases (molnet)

• Fungerar även på Standard Edition

• Effektivare.

Page 21: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

HUR GÖR VI?

Tid

INSERT UPDATE DELETE INSERT DELETE

Page 22: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

DEMOTAJM!

Page 23: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

KAN VI FÅ NETTOFÖRÄNDRINGAR?

Tid

Nettoförändring

Page 24: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

TRE TYPER AV NETTOFÖRÄNDRINGAR

Tid

INSERT

UPDATE

DELETE

Page 25: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

DEMOTAJM!

Page 26: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

SCENARIO: ”UNDO”

Page 27: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

HUR GÖR JAG EN UNDO?

1.Gå in direkt i ”current” och ”history” och ändra/radera poster (dålig idé!)

2.Gör en MERGE från en Point-In-Time query.

3.Gör en ”omvänd CDC” från sluttiden till starttiden.

Page 28: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

DEMOTAJM!

Page 29: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

MER INFO!

• Microsofthttps://msdn.microsoft.com/en-us/library/dn935015.aspx

• SQL Server Centralwww.sqlservercentral.com

• Min bloggwww.johanahlen.info

Page 30: Tidsresor – med SQL Server 2016 Temporal Tables · 2020-03-09 · SQL SERVER 2016 TEMPORAL TABLES JOHAN ÅHLÉN, MALMÖ, 2016-10-12. OM MIG Johan Åhlén • Driver det egna konsultföretaget

TACK!

Johan Åhlén

Läs mer på min blogg:www.johanahlen.info