SlideShare a Scribd company logo
RCD – czyli, co zrobić z
rozpędzonym SCD
Kto po raz pierwszy słyszy o SCD?
SCD – Slowly Changing Dimension
Fakt Wymiar
Sklep Adres
Biedronka 2028 Kostrzyń ul. Żniwna 5
SCD – Slowly Changing Dimension
Fakt Wymiar
? Zmiana adresu
Sklep Adres
Biedronka 2028 Kostrzyń ul. Żniwna 5
Sklep Adres
Biedronka 2028 Dębno ul. Sobieskiego 38
Dlaczego taki temat prezentacji?
a
a
70 – 85 % wdrożeń
hurtowni danych i
systemów BI kończy
się porażką
Udział SCD w statystykach Gartnera?
Udział SCD w statystykach Gartnera?
Projekt 1
• Brak obsługi SCD
– błędne dane
Projekt 2
• Błędnie zaprojektowane
wymiary SCD po stronie
hurtowni - wydajność
Projekt 3
• Błędnie
zamodelowane
procesy ETL –
błędne dane
Kiedy możemy mówić, że projekt
zakończył się niepowodzeniem?
Kiedy możemy mówić, że projekt
zakończył się niepowodzeniem?
Spalanie 100
l / 100 km
Maksymalna
prędkość 25 km/h
Niedziałające
hamulce na
autostradzie
Koszty
Czas
Bezpieczeństwo
Zaufanie
Kiedy możemy mówić, że projekt
zakończył się niepowodzeniem?
Maksymalne
wykorzystanie
zasobów
• Spalanie 100 l /
100 km
Problem z wydajnością
• Maksymalna prędkość 25
km/h
Błędne dane
• Niedziałające
hamulce na
autostradzie
Koszty
Czas
Bezpieczeństwo
Zaufanie
Kto po raz pierwszy słyszy o SCD?
SCD – Slowly Changing Dimension
Koncept wprowadzony przez Ralpha Kimballa,
nakładający na hurtownie danych
odpowiedzialność za obsługę zmieniających
się wartości atrybutów w modelowanych
wymiarach.
SCD – Slowly Changing Dimension
Przykład: fakt sprzedaży towaru, przez
sprzedawcę, przypisanego do danego
województwa.
Rok
Kraj Województwo Sprzedawca 2015 2016
Polska
Pomorskie Kowalski 1000 2000
Mazowieckie Nowak 500
Wielkopolskie Stolarski 1500
SCD – Slowly Changing Dimension
Przykład: fakt sprzedaży towaru, przez
sprzedawcę, przypisanego do danego
województwa. W 2017 roku, Kowalski zostaje
przeniesiony:
SCD – Slowly Changing Dimension
Przykład: fakt sprzedaży towaru, przez
sprzedawcę, przypisanego do danego
województwa. W 2017 roku, Kowalski zostaje
przeniesiony:
SCD – Slowly Changing Dimension
Przykład: fakt sprzedaży towaru, przez
sprzedawcę, przypisanego do danego
województwa. W 2017 roku, Kowalski zostaje
przeniesiony:
Rok
Kraj Województwo Sprzedawca 2015 2016
Polska
Śląskie Kowalski 1000 2000
Mazowieckie Nowak 500
Wielkopolskie Stolarski 1500
SCD – Slowly Changing Dimension
Rok
Kraj Województwo Sprzedawca 2015 2016 2017
Polska
Pomorskie Kowalski 1000 2000
Mazowieckie Nowak 500
Wielkopolskie Stolarski 1500
Śląskie Kowalski 2000
SCD – Slowly Changing Dimension
Rok
Kraj Województwo Sprzedawca 2015 2016 2017
Polska
Pomorskie Kowalski 1000 2000
Mazowieckie Nowak 500
Wielkopolskie Stolarski 1500
Śląskie Kowalski 2000
SCD – Slowly Changing Dimension
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Nowe kolumny
przechowujące
poprzednią wartość
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Nowe kolumny
przechowujące
poprzednią wartość
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Nowy wiersz z nowym
kluczem głównym
•Stary wiersz zostaje
zachowany
•Nowe kolumny
przechowujące
poprzednią wartość
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Nowy wiersz z nowym
kluczem głównym
•Stary wiersz zostaje
zachowany
•Nowe kolumny
przechowujące
poprzednią wartość
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
•Brak modyfikacji
istniejących wierszy.
•Dopuszczalne
dodawanie nowych
wierszy.
Typ 0 Typ 1
Typ 2Typ 3
SCD – Slowly Changing Dimension
•Nowy wiersz z nowym
kluczem głównym
•Stary wiersz zostaje
zachowany
•W tabeli wymiaru
przechowywane są tylko
najnowsze wartości
atrybutów.
Typ 0 Typ 1
Typ 2Typ 3
Kiedy SCD typu 2 przestaje być
wystarczające?
• Wyobraźmy sobie, że mamy wymiar Pacjent,
który posiada 1000 wierszy (mały wymiar).
• Zakładamy, że jeden z atrybutów może się
zmienić 10 krotnie w ciągu roku:
– Na przykład Waga: pacjent jest ważony co miesiąc.
• Po roku okazuje się wymiar ma już 10 000
wierszy.
Kiedy SCD typu 2 przestaje być
wystarczające?
• Wyobraźmy sobie, że mamy wymiar Pacjent,
który posiada 1000 wierszy (mały wymiar).
• Zakładamy, że jeden z atrybutów może się
zmienić 10 krotnie w ciągu roku:
– Na przykład Waga: pacjent jest ważony co miesiąc.
• Po roku okazuje się wymiar ma już 10 000
wierszy.
Kiedy SCD typu 2 przestaje być
wystarczające?
• Wyobraźmy sobie, że mamy wymiar Pacjent,
który posiada 1000 wierszy (mały wymiar).
• Zakładamy, że jeden z atrybutów może się
zmienić 10 krotnie w ciągu roku:
– Na przykład Waga: pacjent jest ważony co miesiąc.
• Po roku okazuje się wymiar ma już 10 000
wierszy.
Kiedy SCD typu 2 przestaje być
wystarczające?
• A co jeśli wymiar z analogicznego scenariusza
ma 1 000 000 wierszy?
Kiedy SCD typu 2 przestaje być
wystarczające?
• A co jeśli wymiar z analogicznego scenariusza
ma 1 000 000 wierszy?
10 000 000 wierszy w wymiarze po pierwszym roku
działania hurtowni.
Kiedy SCD typu 2 przestaje być
wystarczające?
• A co jeśli wymiar z analogicznego scenariusza
ma 1 000 000 wierszy?
10 000 000 wierszy w wymiarze po pierwszym roku
działania hurtowni.
• A co jeśli analogiczny wymiar ma mieć SCD dla
wielu atrybutów?
.
RCD – Rapidly Changing Dimension
O wymiarze RCD możemy mówić jeżeli dla
jednego lub więcej atrybutów zachodzi dużo,
częstych zmian w wielu wierszach.
RCD – Rapidly Changing Dimension
O wymiarze RCD możemy mówić jeżeli dla
jednego lub więcej atrybutów zachodzi dużo,
częstych zmian w wielu wierszach.
RCD to nic innego, jak SCD typu 4, z
uwzględnieniem nacisku na proces ETL
zapewniający odpowiednie dane historyczne.
RCD czyli SCD typu 4
• O SCD typu 4 mówimy kiedy, grupa atrybutów
wchodzących w skład jednego wymiaru
zostaje rozbita, tworząc dodatkowy mini-
wymiar:
RCD, czyli SCD typu 4
• O SCD typu 4 mówimy kiedy, grupa atrybutów
wchodzących w skład jednego wymiaru
zostaje rozbita, tworząc dodatkowy mini-
wymiar:
https://www.kimballgroup.com/2013/02/design-tip-152-slowly-changing-dimension-types-0-4-5-6-7/
RCD, czyli SCD typu 4
• Rekomendacja Kimballa dla stosowania mini-
wymiaru, oprócz typowego RCD:
RCD, czyli SCD typu 4
• Rekomendacja Kimballa dla stosowania mini-
wymiaru, oprócz typowego RCD:
Wielomilionowe wymiary, które posiadają często
używane atrybuty (nawet jeżeli nie są SCD).
RCD, czyli SCD typu 4
• Najważniejszą kwestią jest poprawne
wskazanie często zmieniających się atrybutów,
które będą elementami mini wymiaru.
RCD, czyli SCD typu 4
• Najważniejszą kwestią jest poprawne
wskazanie często zmieniających się atrybutów,
które będą elementami mini wymiaru.
• Jedną z zalet mini-wymiaru jest możliwość
utrzymywania go jako SCD typu 0, co będzie
się wiązało z brakiem przeładowywania
danych oraz brakiem generowania kolejnych
kluczy surogatowych.
RCD, czyli SCD typu 4
• Mini-wymiar, jako SCD 0 – wymiary te mają
bardzo często skończoną liczbę elementów.
Dostarczenie i wygenerowanie wszystkich
możliwych kombinacji, elementów mini-
wymiaru, pozwali na jedno ładowanie
początkowe bez potrzeby bieżącego
odświeżania. Przykład:
• Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty:
Waga
1
2
…
300
Status
Uczeń
Osoba pracująca
Bezrobotny
Emeryt
• Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty:
• Widzimy, że nasz wymiar będzie miał: 300x4 = 1200 kombinacji możliwych
wartości.
Waga
1
2
…
300
Status
Uczeń
Osoba pracująca
Bezrobotny
Emeryt
• Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty:
• Widzimy, że nasz wymiar będzie miał: 300x4 = 1200 kombinacji możliwych
wartości.
• Do generowania klucza surogatowego, można dodatkowo użyć formuły,
która czasami może być również wykorzystana przy przypisywaniu klucza
surogatowego w tabeli faktu, np.:
klucz surogatowy = liczba przypisana do statusu*1000 + waga
Waga
1
2
…
300
Status
Uczeń
Osoba pracująca
Bezrobotny
Emeryt
Pacjent_Waga_Status_ID Waga Status
1001 1 Uczeń
1080 80 Uczeń
….. … …
2110 110 Osoba pracująca
…. … …
3070 70 Emeryt
3071 71 Emeryt
Z jakimi problemami trzeba się
zmierzyć jeżeli wdrożone SCD 2
będziemy musieli zmienić na SCD 4?
Tabele faktów po stronie
hurtowni bazodanowej
Wymiary po stronie kostki
analitycznej
Zmiana atrybutów w
raportach
•Ingerowanie w struturę dużych i zestagowanych
tabel faktów, z pełnymi danymi historycznymi
•Utworzenie nowej kolumny z kluczem
surogatowym do mini-wymiaru
•Przypisanie kluczu surogatowego (uwaga na
partycje i inne elementy optymalizujące).
•Co jeżeli tabelefaktów mają setki milionów
albo miliardywierszy?
•Edycja dotychczas używanego wymiaru
(usunięcie atrybutów przesuniętych do mini-
wymiaru).
•Utworzenie nowego mini-wymiaru
•Pełen proces kostki dla dostarczenia nowych
struktur.
•Co jeżeli pełen procesliczymyw dziesiątkach
godzin?
• Uwzględnienie nowo dostarczonych
atrybutów z nowo utworzonego wymiaru
do dotychczas stosowanych raportów.
• Co jeżeli są setki albo tysiące raportów?
Tabele faktów po stronie
hurtowni bazodanowej
Wymiary po stronie kostki
analitycznej
Zmiana atrybutów w
raportach
•Ingerowanie w struturę dużych i zestagowanych
tabel faktów, z pełnymi danymi historycznymi
•Utworzenie nowej kolumny z kluczem
surogatowym do mini-wymiaru
•Przypisanie kluczu surogatowego (uwaga na
partycje i inne elementy optymalizujące).
•Co jeżeli tabelefaktów mają setki milionów
albo miliardywierszy?
•Edycja dotychczas używanego wymiaru
(usunięcie atrybutów przesuniętych do mini-
wymiaru).
•Utworzenie nowego mini-wymiaru
•Pełen proces kostki dla dostarczenia nowych
struktur.
•Co jeżeli pełen procesliczymyw dziesiątkach
godzin?
• Uwzględnienie nowo dostarczonych
atrybutów z nowo utworzonego wymiaru
do dotychczas stosowanych raportów.
• Co jeżeli są setki albo tysiące raportów?
Tabele faktów po stronie
hurtowni bazodanowej
Wymiary po stronie kostki
analitycznej
Zmiana atrybutów w
raportach
•Ingerowanie w struturę dużych i zestagowanych
tabel faktów, z pełnymi danymi historycznymi
•Utworzenie nowej kolumny z kluczem
surogatowym do mini-wymiaru
•Przypisanie kluczu surogatowego (uwaga na
partycje i inne elementy optymalizujące).
•Co jeżeli tabelefaktów mają setki milionów
albo miliardywierszy?
•Edycja dotychczas używanego wymiaru
(usunięcie atrybutów przesuniętych do mini-
wymiaru).
•Utworzenie nowego mini-wymiaru
•Pełen proces kostki dla dostarczenia nowych
struktur.
•Co jeżeli pełen procesliczymyw dziesiątkach
godzin?
• Uwzględnienie nowo dostarczonych
atrybutów z nowo utworzonego wymiaru
do dotychczas stosowanych raportów.
• Co jeżeli są setki albo tysiące raportów?
Jak namierzyć zmianę w danych po
stronie systemu źródłowego?
Audyt danych – wbudowane mechanizmy SQL Server
Audyt danych – wbudowane mechanizmy SQL Server
SQL Server
Extended Events
SQL Server Audit
SQL Server
Transaction logs
SQL Server Profiler
and SQL Server
traces
Change Tracking
Change Data
Capture (CDC)
SQL Server Triggers
SQL Server
Temporal tables
Audyt danych – wbudowane mechanizmy SQL Server
SQL Server
Extended Events
SQL Server Audit
SQL Server
Transaction logs
SQL Server Profiler
and SQL Server
traces
Change Tracking
Change Data
Capture (CDC)
SQL Server Triggers
SQL Server
Temporal tables
• Monitorowanie kto i kiedy
dokonał zmian.
• Brak informacji jaka zmiana.
Audyt danych – wbudowane mechanizmy SQL Server
SQL Server
Extended Events
SQL Server Audit
SQL Server
Transaction logs
SQL Server Profiler
and SQL Server
traces
Change Tracking
Change Data
Capture (CDC)
SQL Server Triggers
SQL Server
Temporal tables
• Monitorowanie kto i kiedy
dokonał zmian.
• Brak informacji jaka zmiana.
• Bardzo dużo informacji
• Ciężkie do odczytu.
Zmiana w danych - wbudowane mechanizmy SQL
Server
Change Tracking
Change Data
Capture (CDC)
SQL Server
Triggers
SQL Server
Temporal tables
SQL Server Change Tracking
• Change Tracking jest mechanizmem docelowo
przeznaczonym dla deweloperów i ma zadanie
synchronizować dane pomiędzy bazami,
instancjami i urządzeniami.
• Change Tracking zapewnia dane dla zapytania:
„Potrzebuje ostatnią wartość danych dla
wierszy, które zmieniły się od ostatniego
pobrania danych.”
SQL Server Change Tracking
• CT jest dostępne od SQL Server 2008 dla
wszystkich wersji.
• CT działa synchronicznie z transakcjami
operującymi na wierszach.
• Nie operuje na plikach logów LDF.
• Nie są tworzone żadne nowe obiekty (Triggery,
Joby, dużo dedykowanych tabel).
SQL Server Change Tracking
• CT nie przechowuje pełnych danych historycznych. Możemy się dowiedzieć
wartości tylko dla ostatniej zmiany.
• CT wymaga klucza głównego po stronie tabeli, którą chcemy monitorować.
• CT trzeba włączyć osobno dla bazy:
• Oraz osobno dla wybranej tabeli:
SQL Server Change Tracking
• Zmiany dla wszystkich tabel przechowywane są w jednej tabeli.
• Dostęp do informacji o zmianach mamy przez funkcje CHANGETABLE:
SELECT * FROM CHANGETABLE (CHANGES Employee,1) as
CT ORDER BY SYS_CHANGE_VERSION
Change Data Capture CDC
• CDC jest odpowiedzialne za zapisywanie
wszelkich informacji związanych z operacjami:
INSERT, UPDATE i DELETE dla wybranych tabel.
• Informacje te przechowywane są w
dedykowanych tabelach, które odzwierciedlają
pełną historię zmian zachodzących we
wskazanej tabeli.
• Tabele maja spójna strukturę z tabelą źródłową.
Struktura ta jest rozszerzona o meta-kolumny.
• Tabele znajdują się w schemie ‘cdc’ i posiadają
końcówkę ‘_CT’.
Change Data Capture CDC
• CDC jest działa na asynchronicznym mechanizmie opartym na
odczytywaniu danych z logów transakcyjnych. Nie obciążą to transakcji, ale
wiąże się z rozrastaniem loga.
• Wymaga SQL Agenta.
• Potrzebuje dostępu do plików LDF.
• Do SQL Server 2016 dostępne tylko w wersjach
Enterprise/Developer/DataCenter.
Change Data Capture CDC
• Łatwiejszy i czytelniejszy dostęp do modyfikowanych wpisów:
SQL Server Triggers
• W SQL Server 2005 zostały po raz pierwszy wprowadzone 3
nowe rodzaje triggerów:
– After Insert,
– After Update,
– After Delete.
• Tak rozszerzony mechanizm triggerów, pozwalał na bardzo
dobre monitorowanie i przechwytywanie wszelkich zmian po
stronie wybranych tabel.
SQL Server Triggers
• Stosowane triggerów ma sporo zalet:
– Możliwość przechowywanie pełnej historii zmian w tabelach.
– Pełna kontrola oraz duże możliwości w zakresie struktur oraz formatu
danych.
– Możliwość uwzględnienie dedykowanego filtrowania oraz dodania
dodatkowej logiki biznesowej.
– Zmiany są wyłapywane synchronicznie, dzięki czemu mamy od razu
dostęp do aktualnych danych dotyczących zmian.
– Można je bardzo szybko i bezboleśnie wyłączyć np. przed dużymi
zmianami po stronie danych.
– Mamy większa kontrole ile i jakie dane są przechowywane.
SQL Server Triggers
• Niestety, ale odbywa się to dosyć dużym kosztem.
• Synchronizacja okazuje się też dużym niebezpieczeństwem i
może mieć duży wpływ na wydajność operacji INSERT,
UPDATE, DELETE.
• Triggery z reguły negatywnie wpływają na czasy trwania
transakcji oraz mogą mieć udział w lockach.
• Dodatkowo są bardzo ciężkie w utrzymaniu dla
administratorów.
SQL Server Temporal Tables
• Temporal Tables jest to mechanizm pozwalający na
wersjonowanie zawartości tabel w czasie.
• Odpytując dana tabele, mamy dostęp nie tylko do
aktualnych wartości. Temporal Tables zakładają
możliwość zwrócenia wartości na zadany moment w
czasie.
• Temporal Tables zostały wprowadzone w SQL Server
2016 i są dostępne dla wszystkich wersji.
• Pozwalają na przechowywanie pełnej historii.
SQL Server Temporal Tables
• Tabela, która ma być wersjonowana w czasie
powinna posiadać dwie kolumny typy DateTime2,
które będą wykorzystywane do przechowywania
informacji o zakresie ważności danego wpisu:
• Temporal Tables, jak to działa:
• Temporal Tables, odpytywanie:
Na co uważać? Co może być przeszkodą dla zastosowania?
Na co uważać? Co może być przeszkodą dla zastosowania?
Mechanizmy synchroniczne
– wydłużenie czasu trwania
transakcji
Mechanizmy
asynchroniczne –
zwiększenie Loga
transakcyjnego
Synchroniczne i
asynchroniczne – oba maja
wpływa na wydajność.
Pytanie, jak duże
Możemy nie mieć
wystarczających uprawnień i
dostępów – Idea STAGINGU!
Niektóre mechanizmy
musza byćpredefiniowane
przez dostawce.
Administratorzy nie pozwola
na tak znaczące ingerowanie
w instancje i bazy źródłowe.
Baza jest … na innym silniku
niż SQL Server (np. Oracle).
Co wtedy?
Pamiętajmy, że zawsze możemy liczyć na odpowiednio
skonfigurowanego i zoptymalizowanego SQL Server Agent Joba.
Pamiętajmy, że zawsze możemy liczyć na odpowiednio
skonfigurowanego i zoptymalizowanego SQL Server Agent Joba.
Możemy obsłużyć nie tylko
bazy z SQL Server.
Nie obciąży transakcji.
Może potrzebować mniej
zasobów.
Nie będziemy zależni od
Administratora.
Nie będzie zależni od
dostawcy systemu
źródłowego.
Będziemy mogli zaciągnąć
wiele zmian jednocześnie.
Brak jednoznacznego triggera
– scheduler ustawiony na
15s, 30s, 1 min. w zależności
od scenariusza
Dziękujemy za uwagę!

More Related Content

Featured

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
GetSmarter
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
Project for Public Spaces & National Center for Biking and Walking
 

Featured (20)

AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 

Rapidly Changing Dimensions

  • 1. RCD – czyli, co zrobić z rozpędzonym SCD
  • 2. Kto po raz pierwszy słyszy o SCD?
  • 3. SCD – Slowly Changing Dimension Fakt Wymiar Sklep Adres Biedronka 2028 Kostrzyń ul. Żniwna 5
  • 4. SCD – Slowly Changing Dimension Fakt Wymiar ? Zmiana adresu Sklep Adres Biedronka 2028 Kostrzyń ul. Żniwna 5 Sklep Adres Biedronka 2028 Dębno ul. Sobieskiego 38
  • 5. Dlaczego taki temat prezentacji?
  • 6. a
  • 7. a 70 – 85 % wdrożeń hurtowni danych i systemów BI kończy się porażką
  • 8. Udział SCD w statystykach Gartnera?
  • 9. Udział SCD w statystykach Gartnera? Projekt 1 • Brak obsługi SCD – błędne dane Projekt 2 • Błędnie zaprojektowane wymiary SCD po stronie hurtowni - wydajność Projekt 3 • Błędnie zamodelowane procesy ETL – błędne dane
  • 10. Kiedy możemy mówić, że projekt zakończył się niepowodzeniem?
  • 11. Kiedy możemy mówić, że projekt zakończył się niepowodzeniem? Spalanie 100 l / 100 km Maksymalna prędkość 25 km/h Niedziałające hamulce na autostradzie Koszty Czas Bezpieczeństwo Zaufanie
  • 12. Kiedy możemy mówić, że projekt zakończył się niepowodzeniem? Maksymalne wykorzystanie zasobów • Spalanie 100 l / 100 km Problem z wydajnością • Maksymalna prędkość 25 km/h Błędne dane • Niedziałające hamulce na autostradzie Koszty Czas Bezpieczeństwo Zaufanie
  • 13. Kto po raz pierwszy słyszy o SCD?
  • 14. SCD – Slowly Changing Dimension Koncept wprowadzony przez Ralpha Kimballa, nakładający na hurtownie danych odpowiedzialność za obsługę zmieniających się wartości atrybutów w modelowanych wymiarach.
  • 15. SCD – Slowly Changing Dimension Przykład: fakt sprzedaży towaru, przez sprzedawcę, przypisanego do danego województwa. Rok Kraj Województwo Sprzedawca 2015 2016 Polska Pomorskie Kowalski 1000 2000 Mazowieckie Nowak 500 Wielkopolskie Stolarski 1500
  • 16. SCD – Slowly Changing Dimension Przykład: fakt sprzedaży towaru, przez sprzedawcę, przypisanego do danego województwa. W 2017 roku, Kowalski zostaje przeniesiony:
  • 17. SCD – Slowly Changing Dimension Przykład: fakt sprzedaży towaru, przez sprzedawcę, przypisanego do danego województwa. W 2017 roku, Kowalski zostaje przeniesiony:
  • 18. SCD – Slowly Changing Dimension Przykład: fakt sprzedaży towaru, przez sprzedawcę, przypisanego do danego województwa. W 2017 roku, Kowalski zostaje przeniesiony: Rok Kraj Województwo Sprzedawca 2015 2016 Polska Śląskie Kowalski 1000 2000 Mazowieckie Nowak 500 Wielkopolskie Stolarski 1500
  • 19. SCD – Slowly Changing Dimension Rok Kraj Województwo Sprzedawca 2015 2016 2017 Polska Pomorskie Kowalski 1000 2000 Mazowieckie Nowak 500 Wielkopolskie Stolarski 1500 Śląskie Kowalski 2000
  • 20. SCD – Slowly Changing Dimension Rok Kraj Województwo Sprzedawca 2015 2016 2017 Polska Pomorskie Kowalski 1000 2000 Mazowieckie Nowak 500 Wielkopolskie Stolarski 1500 Śląskie Kowalski 2000
  • 21. SCD – Slowly Changing Dimension Typ 0 Typ 1 Typ 2Typ 3
  • 22. SCD – Slowly Changing Dimension •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 23. SCD – Slowly Changing Dimension •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 24. SCD – Slowly Changing Dimension •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 25. SCD – Slowly Changing Dimension •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 26. SCD – Slowly Changing Dimension •Nowe kolumny przechowujące poprzednią wartość •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 27. SCD – Slowly Changing Dimension •Nowe kolumny przechowujące poprzednią wartość •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 28. SCD – Slowly Changing Dimension •Nowy wiersz z nowym kluczem głównym •Stary wiersz zostaje zachowany •Nowe kolumny przechowujące poprzednią wartość •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 29. SCD – Slowly Changing Dimension •Nowy wiersz z nowym kluczem głównym •Stary wiersz zostaje zachowany •Nowe kolumny przechowujące poprzednią wartość •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. •Brak modyfikacji istniejących wierszy. •Dopuszczalne dodawanie nowych wierszy. Typ 0 Typ 1 Typ 2Typ 3
  • 30. SCD – Slowly Changing Dimension •Nowy wiersz z nowym kluczem głównym •Stary wiersz zostaje zachowany •W tabeli wymiaru przechowywane są tylko najnowsze wartości atrybutów. Typ 0 Typ 1 Typ 2Typ 3
  • 31. Kiedy SCD typu 2 przestaje być wystarczające? • Wyobraźmy sobie, że mamy wymiar Pacjent, który posiada 1000 wierszy (mały wymiar). • Zakładamy, że jeden z atrybutów może się zmienić 10 krotnie w ciągu roku: – Na przykład Waga: pacjent jest ważony co miesiąc. • Po roku okazuje się wymiar ma już 10 000 wierszy.
  • 32. Kiedy SCD typu 2 przestaje być wystarczające? • Wyobraźmy sobie, że mamy wymiar Pacjent, który posiada 1000 wierszy (mały wymiar). • Zakładamy, że jeden z atrybutów może się zmienić 10 krotnie w ciągu roku: – Na przykład Waga: pacjent jest ważony co miesiąc. • Po roku okazuje się wymiar ma już 10 000 wierszy.
  • 33. Kiedy SCD typu 2 przestaje być wystarczające? • Wyobraźmy sobie, że mamy wymiar Pacjent, który posiada 1000 wierszy (mały wymiar). • Zakładamy, że jeden z atrybutów może się zmienić 10 krotnie w ciągu roku: – Na przykład Waga: pacjent jest ważony co miesiąc. • Po roku okazuje się wymiar ma już 10 000 wierszy.
  • 34. Kiedy SCD typu 2 przestaje być wystarczające? • A co jeśli wymiar z analogicznego scenariusza ma 1 000 000 wierszy?
  • 35. Kiedy SCD typu 2 przestaje być wystarczające? • A co jeśli wymiar z analogicznego scenariusza ma 1 000 000 wierszy? 10 000 000 wierszy w wymiarze po pierwszym roku działania hurtowni.
  • 36. Kiedy SCD typu 2 przestaje być wystarczające? • A co jeśli wymiar z analogicznego scenariusza ma 1 000 000 wierszy? 10 000 000 wierszy w wymiarze po pierwszym roku działania hurtowni. • A co jeśli analogiczny wymiar ma mieć SCD dla wielu atrybutów? .
  • 37. RCD – Rapidly Changing Dimension O wymiarze RCD możemy mówić jeżeli dla jednego lub więcej atrybutów zachodzi dużo, częstych zmian w wielu wierszach.
  • 38. RCD – Rapidly Changing Dimension O wymiarze RCD możemy mówić jeżeli dla jednego lub więcej atrybutów zachodzi dużo, częstych zmian w wielu wierszach. RCD to nic innego, jak SCD typu 4, z uwzględnieniem nacisku na proces ETL zapewniający odpowiednie dane historyczne.
  • 39. RCD czyli SCD typu 4 • O SCD typu 4 mówimy kiedy, grupa atrybutów wchodzących w skład jednego wymiaru zostaje rozbita, tworząc dodatkowy mini- wymiar:
  • 40. RCD, czyli SCD typu 4 • O SCD typu 4 mówimy kiedy, grupa atrybutów wchodzących w skład jednego wymiaru zostaje rozbita, tworząc dodatkowy mini- wymiar: https://www.kimballgroup.com/2013/02/design-tip-152-slowly-changing-dimension-types-0-4-5-6-7/
  • 41. RCD, czyli SCD typu 4 • Rekomendacja Kimballa dla stosowania mini- wymiaru, oprócz typowego RCD:
  • 42. RCD, czyli SCD typu 4 • Rekomendacja Kimballa dla stosowania mini- wymiaru, oprócz typowego RCD: Wielomilionowe wymiary, które posiadają często używane atrybuty (nawet jeżeli nie są SCD).
  • 43. RCD, czyli SCD typu 4 • Najważniejszą kwestią jest poprawne wskazanie często zmieniających się atrybutów, które będą elementami mini wymiaru.
  • 44. RCD, czyli SCD typu 4 • Najważniejszą kwestią jest poprawne wskazanie często zmieniających się atrybutów, które będą elementami mini wymiaru. • Jedną z zalet mini-wymiaru jest możliwość utrzymywania go jako SCD typu 0, co będzie się wiązało z brakiem przeładowywania danych oraz brakiem generowania kolejnych kluczy surogatowych.
  • 45. RCD, czyli SCD typu 4 • Mini-wymiar, jako SCD 0 – wymiary te mają bardzo często skończoną liczbę elementów. Dostarczenie i wygenerowanie wszystkich możliwych kombinacji, elementów mini- wymiaru, pozwali na jedno ładowanie początkowe bez potrzeby bieżącego odświeżania. Przykład:
  • 46. • Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty: Waga 1 2 … 300 Status Uczeń Osoba pracująca Bezrobotny Emeryt
  • 47. • Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty: • Widzimy, że nasz wymiar będzie miał: 300x4 = 1200 kombinacji możliwych wartości. Waga 1 2 … 300 Status Uczeń Osoba pracująca Bezrobotny Emeryt
  • 48. • Nasz mini-wymiar wyłączony od pacjenta, będzie zawierał dwa atrybuty: • Widzimy, że nasz wymiar będzie miał: 300x4 = 1200 kombinacji możliwych wartości. • Do generowania klucza surogatowego, można dodatkowo użyć formuły, która czasami może być również wykorzystana przy przypisywaniu klucza surogatowego w tabeli faktu, np.: klucz surogatowy = liczba przypisana do statusu*1000 + waga Waga 1 2 … 300 Status Uczeń Osoba pracująca Bezrobotny Emeryt
  • 49. Pacjent_Waga_Status_ID Waga Status 1001 1 Uczeń 1080 80 Uczeń ….. … … 2110 110 Osoba pracująca …. … … 3070 70 Emeryt 3071 71 Emeryt
  • 50. Z jakimi problemami trzeba się zmierzyć jeżeli wdrożone SCD 2 będziemy musieli zmienić na SCD 4?
  • 51. Tabele faktów po stronie hurtowni bazodanowej Wymiary po stronie kostki analitycznej Zmiana atrybutów w raportach •Ingerowanie w struturę dużych i zestagowanych tabel faktów, z pełnymi danymi historycznymi •Utworzenie nowej kolumny z kluczem surogatowym do mini-wymiaru •Przypisanie kluczu surogatowego (uwaga na partycje i inne elementy optymalizujące). •Co jeżeli tabelefaktów mają setki milionów albo miliardywierszy? •Edycja dotychczas używanego wymiaru (usunięcie atrybutów przesuniętych do mini- wymiaru). •Utworzenie nowego mini-wymiaru •Pełen proces kostki dla dostarczenia nowych struktur. •Co jeżeli pełen procesliczymyw dziesiątkach godzin? • Uwzględnienie nowo dostarczonych atrybutów z nowo utworzonego wymiaru do dotychczas stosowanych raportów. • Co jeżeli są setki albo tysiące raportów?
  • 52. Tabele faktów po stronie hurtowni bazodanowej Wymiary po stronie kostki analitycznej Zmiana atrybutów w raportach •Ingerowanie w struturę dużych i zestagowanych tabel faktów, z pełnymi danymi historycznymi •Utworzenie nowej kolumny z kluczem surogatowym do mini-wymiaru •Przypisanie kluczu surogatowego (uwaga na partycje i inne elementy optymalizujące). •Co jeżeli tabelefaktów mają setki milionów albo miliardywierszy? •Edycja dotychczas używanego wymiaru (usunięcie atrybutów przesuniętych do mini- wymiaru). •Utworzenie nowego mini-wymiaru •Pełen proces kostki dla dostarczenia nowych struktur. •Co jeżeli pełen procesliczymyw dziesiątkach godzin? • Uwzględnienie nowo dostarczonych atrybutów z nowo utworzonego wymiaru do dotychczas stosowanych raportów. • Co jeżeli są setki albo tysiące raportów?
  • 53. Tabele faktów po stronie hurtowni bazodanowej Wymiary po stronie kostki analitycznej Zmiana atrybutów w raportach •Ingerowanie w struturę dużych i zestagowanych tabel faktów, z pełnymi danymi historycznymi •Utworzenie nowej kolumny z kluczem surogatowym do mini-wymiaru •Przypisanie kluczu surogatowego (uwaga na partycje i inne elementy optymalizujące). •Co jeżeli tabelefaktów mają setki milionów albo miliardywierszy? •Edycja dotychczas używanego wymiaru (usunięcie atrybutów przesuniętych do mini- wymiaru). •Utworzenie nowego mini-wymiaru •Pełen proces kostki dla dostarczenia nowych struktur. •Co jeżeli pełen procesliczymyw dziesiątkach godzin? • Uwzględnienie nowo dostarczonych atrybutów z nowo utworzonego wymiaru do dotychczas stosowanych raportów. • Co jeżeli są setki albo tysiące raportów?
  • 54. Jak namierzyć zmianę w danych po stronie systemu źródłowego?
  • 55. Audyt danych – wbudowane mechanizmy SQL Server
  • 56. Audyt danych – wbudowane mechanizmy SQL Server SQL Server Extended Events SQL Server Audit SQL Server Transaction logs SQL Server Profiler and SQL Server traces Change Tracking Change Data Capture (CDC) SQL Server Triggers SQL Server Temporal tables
  • 57. Audyt danych – wbudowane mechanizmy SQL Server SQL Server Extended Events SQL Server Audit SQL Server Transaction logs SQL Server Profiler and SQL Server traces Change Tracking Change Data Capture (CDC) SQL Server Triggers SQL Server Temporal tables • Monitorowanie kto i kiedy dokonał zmian. • Brak informacji jaka zmiana.
  • 58. Audyt danych – wbudowane mechanizmy SQL Server SQL Server Extended Events SQL Server Audit SQL Server Transaction logs SQL Server Profiler and SQL Server traces Change Tracking Change Data Capture (CDC) SQL Server Triggers SQL Server Temporal tables • Monitorowanie kto i kiedy dokonał zmian. • Brak informacji jaka zmiana. • Bardzo dużo informacji • Ciężkie do odczytu.
  • 59. Zmiana w danych - wbudowane mechanizmy SQL Server Change Tracking Change Data Capture (CDC) SQL Server Triggers SQL Server Temporal tables
  • 60. SQL Server Change Tracking • Change Tracking jest mechanizmem docelowo przeznaczonym dla deweloperów i ma zadanie synchronizować dane pomiędzy bazami, instancjami i urządzeniami. • Change Tracking zapewnia dane dla zapytania: „Potrzebuje ostatnią wartość danych dla wierszy, które zmieniły się od ostatniego pobrania danych.”
  • 61. SQL Server Change Tracking • CT jest dostępne od SQL Server 2008 dla wszystkich wersji. • CT działa synchronicznie z transakcjami operującymi na wierszach. • Nie operuje na plikach logów LDF. • Nie są tworzone żadne nowe obiekty (Triggery, Joby, dużo dedykowanych tabel).
  • 62. SQL Server Change Tracking • CT nie przechowuje pełnych danych historycznych. Możemy się dowiedzieć wartości tylko dla ostatniej zmiany. • CT wymaga klucza głównego po stronie tabeli, którą chcemy monitorować. • CT trzeba włączyć osobno dla bazy: • Oraz osobno dla wybranej tabeli:
  • 63. SQL Server Change Tracking • Zmiany dla wszystkich tabel przechowywane są w jednej tabeli. • Dostęp do informacji o zmianach mamy przez funkcje CHANGETABLE: SELECT * FROM CHANGETABLE (CHANGES Employee,1) as CT ORDER BY SYS_CHANGE_VERSION
  • 64. Change Data Capture CDC • CDC jest odpowiedzialne za zapisywanie wszelkich informacji związanych z operacjami: INSERT, UPDATE i DELETE dla wybranych tabel. • Informacje te przechowywane są w dedykowanych tabelach, które odzwierciedlają pełną historię zmian zachodzących we wskazanej tabeli. • Tabele maja spójna strukturę z tabelą źródłową. Struktura ta jest rozszerzona o meta-kolumny. • Tabele znajdują się w schemie ‘cdc’ i posiadają końcówkę ‘_CT’.
  • 65. Change Data Capture CDC • CDC jest działa na asynchronicznym mechanizmie opartym na odczytywaniu danych z logów transakcyjnych. Nie obciążą to transakcji, ale wiąże się z rozrastaniem loga. • Wymaga SQL Agenta. • Potrzebuje dostępu do plików LDF. • Do SQL Server 2016 dostępne tylko w wersjach Enterprise/Developer/DataCenter.
  • 66. Change Data Capture CDC • Łatwiejszy i czytelniejszy dostęp do modyfikowanych wpisów:
  • 67. SQL Server Triggers • W SQL Server 2005 zostały po raz pierwszy wprowadzone 3 nowe rodzaje triggerów: – After Insert, – After Update, – After Delete. • Tak rozszerzony mechanizm triggerów, pozwalał na bardzo dobre monitorowanie i przechwytywanie wszelkich zmian po stronie wybranych tabel.
  • 68. SQL Server Triggers • Stosowane triggerów ma sporo zalet: – Możliwość przechowywanie pełnej historii zmian w tabelach. – Pełna kontrola oraz duże możliwości w zakresie struktur oraz formatu danych. – Możliwość uwzględnienie dedykowanego filtrowania oraz dodania dodatkowej logiki biznesowej. – Zmiany są wyłapywane synchronicznie, dzięki czemu mamy od razu dostęp do aktualnych danych dotyczących zmian. – Można je bardzo szybko i bezboleśnie wyłączyć np. przed dużymi zmianami po stronie danych. – Mamy większa kontrole ile i jakie dane są przechowywane.
  • 69. SQL Server Triggers • Niestety, ale odbywa się to dosyć dużym kosztem. • Synchronizacja okazuje się też dużym niebezpieczeństwem i może mieć duży wpływ na wydajność operacji INSERT, UPDATE, DELETE. • Triggery z reguły negatywnie wpływają na czasy trwania transakcji oraz mogą mieć udział w lockach. • Dodatkowo są bardzo ciężkie w utrzymaniu dla administratorów.
  • 70. SQL Server Temporal Tables • Temporal Tables jest to mechanizm pozwalający na wersjonowanie zawartości tabel w czasie. • Odpytując dana tabele, mamy dostęp nie tylko do aktualnych wartości. Temporal Tables zakładają możliwość zwrócenia wartości na zadany moment w czasie. • Temporal Tables zostały wprowadzone w SQL Server 2016 i są dostępne dla wszystkich wersji. • Pozwalają na przechowywanie pełnej historii.
  • 71. SQL Server Temporal Tables • Tabela, która ma być wersjonowana w czasie powinna posiadać dwie kolumny typy DateTime2, które będą wykorzystywane do przechowywania informacji o zakresie ważności danego wpisu:
  • 72. • Temporal Tables, jak to działa: • Temporal Tables, odpytywanie:
  • 73. Na co uważać? Co może być przeszkodą dla zastosowania?
  • 74. Na co uważać? Co może być przeszkodą dla zastosowania? Mechanizmy synchroniczne – wydłużenie czasu trwania transakcji Mechanizmy asynchroniczne – zwiększenie Loga transakcyjnego Synchroniczne i asynchroniczne – oba maja wpływa na wydajność. Pytanie, jak duże Możemy nie mieć wystarczających uprawnień i dostępów – Idea STAGINGU! Niektóre mechanizmy musza byćpredefiniowane przez dostawce. Administratorzy nie pozwola na tak znaczące ingerowanie w instancje i bazy źródłowe. Baza jest … na innym silniku niż SQL Server (np. Oracle). Co wtedy?
  • 75. Pamiętajmy, że zawsze możemy liczyć na odpowiednio skonfigurowanego i zoptymalizowanego SQL Server Agent Joba.
  • 76. Pamiętajmy, że zawsze możemy liczyć na odpowiednio skonfigurowanego i zoptymalizowanego SQL Server Agent Joba. Możemy obsłużyć nie tylko bazy z SQL Server. Nie obciąży transakcji. Może potrzebować mniej zasobów. Nie będziemy zależni od Administratora. Nie będzie zależni od dostawcy systemu źródłowego. Będziemy mogli zaciągnąć wiele zmian jednocześnie. Brak jednoznacznego triggera – scheduler ustawiony na 15s, 30s, 1 min. w zależności od scenariusza