Prezentacja przedstawiona podczas dBConf 2015. Opisuje jaki sposób zaimplementować model Data Vault, który pozwala na wersjonowanie i logiczną odrębność bytów/obiektów/encji w hurtowni danych.
1. Data Vault w chmurze
IMPLEMENTACJA MODELU NA PRZYKŁADZIE REDSHIFT
Adrian Najczuk, dBConf 2015
1
2. O mnie
DW&BI LEADER
IMPLEMENTACJE DW&BI W OPARCIU O IBM COGNOS/DB2 I REDSHIFT
TRENER BI
BIZ DEV MANAGER
2
najczuk@gmail.com
https://pl.linkedin.com/in/najczuk
3. Agenda
1. Wprowadzenie – czym jest HD i DV
2. Benchmark TPC H
3. Implementacja
1. Huby
2. Linki
3. Satelity
4. DV 2.0
3
4. Czym jest Hurtownia Danych (HD)
Dane w przedsiębiorstwie są rozproszone
◦ aplikacje, pliki, webservice’y, maile, ludzie
HD to miejsce, w którym wszystkie te źródła są integrowane
Dzięki HD z danych mogą korzystać użytkownicy biznesowi
HD nie obciążają systemów transakcyjnych
4
• Analiza
• OczyszczanieŹródła
• Oczyszczanie
• ŁączenieStaging
• Raporty
• Analizy
• Data Marts
• Report Marts
• Kostki
Data
Acces
5. Data Vault – Metodologia
Konflikt danych w
systemie a informacji
biznesowych
5
Zmienność reguł
biznesowych
Zmienność systemów
6. SAT
Data Vault – Model
6
HUB
LINK
LINKSAT
SAT
SAT
SAT
HUBLINK
LINK
SATSAT
SAT
7. Data Vault - Architektura
7
AnalizaŹródła CleansingStaging
• Data Vault
• Business
Vault
EDW
• Raporty
• Analizy
• Data Marts
• Report
Marts
• Kostki
Data
Access
9. Implementacja
9
4 generyczne skrypty
w Talend
konfiguracja w oparciu
o tabele pomocnicze
Amazon Redshift
bezobsługowe
wersjonowanie
danych
nazewnictwo wg
standardów
Amazon S3
10. Hub - konfiguracja
hub_params
id identyfikator wpisu
rsrc źródło pochodzenia
danych
hub_name nazwa huba
source_business_key nazwa kolumny z
kluczem biznesowym
source_schema_name nazwa schemy w
obrębie stagingu
source_table_name nazwa tabeli w stagingu
10
Dane z różnych warstw (STG, EDW, …)
znajdują się na tym samym klastrze.
11. Hub – przykład encji
11
dv.hub_customer
customer_sqn klucz
sekwencyjny
customer_ldts czas przybycia
customer_ledts czas odejścia
customer_rsrc id źródła
customer_id klucz biznesowy
dv_helpers.hub_params
id 1
rsrc TPC
hub_name customer
source_business_key c_custkey
source_schema_name tpc
source_table_name customer
12. Hub – kroki ładowania
Params
Pobierz parametry
Przybycie
Dopisz rekordy, których
klucz biznesowy
(customer_id) nie
występuje lub
występuje z datą
odejścia
(customer_ledts)
Odejścia
Sprawdź co jest w hubie
a brakuje w źródle
12
14. Sat - konfiguracja
sat_params
id identyfikator wpisu
rsrc źródło pochodzenia
danych
sat_name nazwa satelity
hub_name nazwa huba
source_business_key nazwa kolumny z
kluczem biznesowym
source_schema_name nazwa schemy w
obrębie stagingu
source_table_name nazwa tabeli w stagingu
14
Wariant dedykowany dla satelit
pochodzących z jednej tabeli systemu
źródłowego
15. Sat – przykład encji
15
dv.sat_customer
customer_sqn/
customer_hkey
123
customer_ldts czas przybycia
customer_ledts czas odejścia
customer_rsrc id źródła
customer_hash hash z atrybutów
opisowych
atrybut 1-n atrybuty opisowe
dv_helpers.sat_params
id 5
rsrc TPC
sat_name customer
hub_name customer
source_business_key c_custkey
source_schema_name tpc
source_table_name customer
dv_helpers.sat_cols
id 5 5
source_col name surname
target_col name surname
order 1 2
16. Sat – kroki ładowania
Przybycie
Pobierz rekordy dla
których
- nie występuje
customer_id,
- występuje z
customer_ledts
- customer_hash różni
się
Zrzut
Zapisz przy pomocy
polecenia UNLOAD
rekody na S3
Zaimportuj regordy
przy pomocy COPY na
S3
Aktualizacja
Dla zdublowanych
rekordów ustaw
customer_ledts dla
starszego.
- stwórz tmp_table dla
starszych
- usun te rekordy z sat
- wstaw z temp_table
Usunięcia
Dla rekordów, które
znikły
przeprowadzamy
podobną procedurę
jak w przypadku
aktualizacji
16
18. Lnk - konfiguracja
lnk_params
id identyfikator wpisu
rsrc źródło pochodzenia
danych
lnk_name nazwa linka
hub1_name nazwa huba 1
col_name_1 nazwa kolumny
docelowej
…
source_sql_query Zapytanie wyciągające
potrzebne klucze
has_business_key jeżeli true wstawiamy
pierwszą wartość z
zapytania jako id
hubs_no ilość hub’ów
18
Domyślnie skonfigurowany pod
maksymalnie n hub’ów, ale można
pokusić się o generalizację
19. Lnk – przykład encji
19
dv.lnk_customer_order
customer_order_hkey hash z {hub1_sqn,…}
customer_order_ldts czas przybycia
customer_order_ledts czas odejścia
customer_order_rsrc id źródła
{hub1_sqn,…} sqn’y hubów
customer_order_id klucz biznesowy relacji,
jeżeli istnieje
lnk_params
id 4
rsrc TPC
lnk_name customer_order
hub1_name customer
col_name_1 customer
hub1_name order
col_name_1 order
source_sql_query
has_business_key 0
hubs_no 2
20. Lnk – kroki ładowania
Przybycie
Pobierz rekordy dla których
- nie występuje
customer_order_hkey/
customer_order_id,
- występuje z
customer_order_ledts
Zrzut
Zapisz przy pomocy
polecenia UNLOAD rekordy
na S3
Zaimportuj rekordy przy
pomocy COPY na S3
Usunięcia
Dla zdublowanych hkey
ustaw customer_order_ledts
dla starszego
- stwórz tmp_table dla
starszych
- usuń te rekordy z lnk
- wstaw z rekordy
temp_table
20
22. DV 2.0
22
eliminacja SQN na
rzecz HKEY
wparcie NoSQL
klucze kompozytowe
w HUB
usunięcie LEDTS z
linków na rzecz satelit
realtime z
wykorzystaniem ESB