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.
Po co mi Temporal Tables?
SQLDay Lite 2015, Warszawa
Sponsorzy strategiczni
Sponsorzy srebrni
O czym będzie?
O przechowywaniu danych, które zmieniają się w czasie
Jak to obsługujemy teraz
Jak będziemy to mogli zro...
O mnie
Bartosz Ratajczyk
Programista baz danych
(i aplikacji)
czasem też administrator
MCTS SQL Server 2008, MCSA SQL Serv...
Dane zmienne w czasie
SYSTEM VERSIONING – zarejestrowano zmianę
BUSINESS VERSIONING – ważne biznesowo od - do
(Dane) Valid...
Dlaczego je przechowujemy?
Bo wymagają tego przepisy
Bo chcemy wiedzieć kiedy dane się zmieniły (audyt)
Bo chcemy znać ...
Jak sobie radzimy teraz?
• Własna logika w aplikacji, procedury składowane, klauzula OUTPUT
• Wyzwalacze
• Change Tracking...
Nowa możliwość
Temporal Tables, czyli tabele z definicją OKRESU
Mechanizm samodzielny, bez zależności od innych komponen...
DEMO
Testujemy wydajność
Zbiór wejściowy: 10 mln rekordów
Cztery zbiory pomocnicze po 1 mln rekordów losowane ze zbioru
wejśc...
Czy to zajmie dużo miejsca?
3479
2560
355
454
90
98
0 500 1000 1500 2000 2500 3000 3500 4000 4500
Scenariusz 1: rowstore/r...
A szybkie to jest? (1)
1717
1762
498
0 200 400 600 800 1000 1200 1400 1600 1800 2000
Scenariusz 1: rowstore/rowstore
Scena...
A szybkie to jest? (2)
220121
95120
841
0 50000 100000 150000 200000 250000
Scenariusz 1: rowstore/rowstore
Scenariusz 2: ...
A szybkie to jest? (3)
907
231
102738
116246
664
284
51868
42304
454
263
63
61
0 20000 40000 60000 80000 100000 120000 140...
O czym jeszcze warto wspomnieć?
Możliwość odmiennego partycjonowania tabeli głównej i historycznej
Wsparcie dla In-Memor...
Obecne ograniczenia
Nie można zrobić TRUNCATE TABLE
Nie można przełączyć partycji między tabelą główną a historyczną
Do...
No dobrze, ale po co mi one?
Kolejne narzędzie do monitorowania zmian rekordów
Zgodne ze standardem SQL:2011
Szybsze od...
Gdzie poczytać więcej na ten temat?
Alex Volok – blog: http://www.alexvolok.com
Itzik Ben-Gan – artykuły na SQL Server P...
Sponsorzy strategiczni
Sponsorzy srebrni
Upcoming SlideShare
Loading in …5
×

Po co mi Temporal Tables?

209 views

Published on

SQL Server 2016 wprowadzi nową funkcjonalność związaną z wersjonowaniem danych - Temporal Tables. Co to jest, jak działa i czy się przyda?

Published in: Education
  • Be the first to comment

  • Be the first to like this

Po co mi Temporal Tables?

  1. 1. Po co mi Temporal Tables? SQLDay Lite 2015, Warszawa
  2. 2. Sponsorzy strategiczni Sponsorzy srebrni
  3. 3. O czym będzie? O przechowywaniu danych, które zmieniają się w czasie Jak to obsługujemy teraz Jak będziemy to mogli zrobić za pomocą Temporal Tables Czy to ma sensowną wydajność? Przydaje się?
  4. 4. O mnie Bartosz Ratajczyk Programista baz danych (i aplikacji) czasem też administrator MCTS SQL Server 2008, MCSA SQL Server 2012, MCT http://bartekr.net | b.ratajczyk@gmail.com
  5. 5. Dane zmienne w czasie SYSTEM VERSIONING – zarejestrowano zmianę BUSINESS VERSIONING – ważne biznesowo od - do (Dane) ValidFrom ValidTo (…) 2015-10-01 10:21:15 2015-10-10 18:11:24 (Dane) DateFrom DateTo (…) 2015-10-01 2015-10-10
  6. 6. Dlaczego je przechowujemy? Bo wymagają tego przepisy Bo chcemy wiedzieć kiedy dane się zmieniły (audyt) Bo chcemy znać poprzednie wersje danych (SCD) Bo chcemy móc szybko przywrócić poprzednią wersję danych (oops!) Bo nasze dane mają okres obowiązywania w czasie (cennik) BO TAK! (BO TAK!)
  7. 7. Jak sobie radzimy teraz? • Własna logika w aplikacji, procedury składowane, klauzula OUTPUT • Wyzwalacze • Change Tracking • Change Data Capture
  8. 8. Nowa możliwość Temporal Tables, czyli tabele z definicją OKRESU Mechanizm samodzielny, bez zależności od innych komponentów Automatycznie tworzy poprzednie wersje danych i dodaje nowe Obsługuje tylko wersjonowanie systemowe (co oczywiście nie wyklucza wersjonowania biznesowego we własnym zakresie)
  9. 9. DEMO
  10. 10. Testujemy wydajność Zbiór wejściowy: 10 mln rekordów Cztery zbiory pomocnicze po 1 mln rekordów losowane ze zbioru wejściowego Cztery kolejne operacje: UPDATE, DELETE, UPDATE, DELETE na zbiorze wejściowym z wykorzystaniem zbiorów pomocniczych Cztery zapytania sumujące dane w zbiorze wejściowym: Sumowanie danych z wyszukiwaniem po kluczu głównym Sumowanie danych z klauzulą AS OF z wyszukiwaniem po kluczu głównym Sumowanie danych z wyszukiwaniem po kolumnie spoza PK Sumowanie danych z klauzulą AS OF z wyszukiwaniem po kolumnie spoza PK Trzy przypadki testowe – indeksy rowstore i columnstore
  11. 11. Czy to zajmie dużo miejsca? 3479 2560 355 454 90 98 0 500 1000 1500 2000 2500 3000 3500 4000 4500 Scenariusz 1: rowstore/rowstore Scenariusz 2: rowstore/columnstore Scenariusz 3: columnstore/columnstore Zajętość dysku (MB) Tabela główna Tabela historyczna
  12. 12. A szybkie to jest? (1) 1717 1762 498 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Scenariusz 1: rowstore/rowstore Scenariusz 2: rowstore/columnstore Scenariusz 3: columnstore/columnstore Czasy trwania operacjiUPDATE/DELETE (w sekundach) Całkowity czas trwania
  13. 13. A szybkie to jest? (2) 220121 95120 841 0 50000 100000 150000 200000 250000 Scenariusz 1: rowstore/rowstore Scenariusz 2: rowstore/columnstore Scenariusz 3: columnstore/columnstore Czasy zapytań (w milisekundach)
  14. 14. A szybkie to jest? (3) 907 231 102738 116246 664 284 51868 42304 454 263 63 61 0 20000 40000 60000 80000 100000 120000 140000 SELECT 1 (SUM, WHERE PK) SELECT 2 (SUM, WHERE PK, AS OF) SELECT 3 (SUM, WHERE) SELECT 4 (SUM, WHERE, AS OF) SELECT 1 (SUM, WHERE PK) SELECT 2 (SUM, WHERE PK, AS OF) SELECT 3 (SUM, WHERE) SELECT 4 (SUM, WHERE, AS OF) SELECT 1 (SUM, WHERE PK) SELECT 2 (SUM, WHERE PK, AS OF) SELECT 3 (SUM, WHERE) SELECT 4 (SUM, WHERE, AS OF) Scenariusz1: rowstore/rowstore Scenariusz2: rowstore/columnstore Scenariusz3: columnstore/columnstore Czasy zapytań (w milisekundach)
  15. 15. O czym jeszcze warto wspomnieć? Możliwość odmiennego partycjonowania tabeli głównej i historycznej Wsparcie dla In-Memory OLTP od wersji 3.0
  16. 16. Obecne ograniczenia Nie można zrobić TRUNCATE TABLE Nie można przełączyć partycji między tabelą główną a historyczną Do historii trafiają wszystkie zmiany (UPDATE T1 SET k = 1 WHERE k = 1) Nie możemy ręcznie modyfikować danych historycznych Nie możemy ustawić śledzenia zmian tylko dla części kolumn Nie można przenieść danych historycznych do chmury (Stretch Database) Nie można używać wyzwalaczy INSTEAD OF Nie wiadomo w których edycjach będzie dostępne
  17. 17. No dobrze, ale po co mi one? Kolejne narzędzie do monitorowania zmian rekordów Zgodne ze standardem SQL:2011 Szybsze od samodzielnych implementacji na wyzwalaczach
  18. 18. Gdzie poczytać więcej na ten temat? Alex Volok – blog: http://www.alexvolok.com Itzik Ben-Gan – artykuły na SQL Server Pro: http://sqlmag.com/sql- server/first-look-system-versioned-temporal-tables-part-1-creating- tables-and-modifying-data Channel9 – nagranie o Temporal Tables + dyskusja pod nim https://channel9.msdn.com/Shows/Data-Exposed/Temporal-in-SQL- Server-2016 Dokumentacja – Books OnLine
  19. 19. Sponsorzy strategiczni Sponsorzy srebrni

×