zasilanie hurtowni danych w ssis w praktyce
DESCRIPTION
Temat obejmuje wybrane aspekty zasilania hurtowni danych za pomocą SSIS (SQL Server Integration Services). I choć na pewno nie omawia wszystkiego to pozwala zwrócić uwagę na kilka istotnych szczegółów mogących zadecydować o czasochłonności, a więc koszcie, a więc terminowości i w rezultacie sukcesie projektu zasilania hurtowni danych. Prezentacja po raz pierwszy została przedstawiona na 45. spotkaniu wrocławskiej grupy PLSSUG - 23 października 2014r.TRANSCRIPT
Kamil Nowiński
• Konsultant, freelancer SQL Server
• Obecnie jako architekt w projekcie hurtowni danych „Ari@dna2” programu e-Cło dla Ministerstwa Finansów
• Programista > 20 lat (VB6, VB.NET, C#, .NET Framework)
• Ponad 10-letnie doświadczenie w SQL Server (DEV/DBA)
• Bazy danych: Microsoft SQL 2000 – 2012+
• Członek komisji rewizyjnej Stowarzyszenia PLSSUG,
• Współorganizator konferencji SQLDay
• Certyfikaty SQL Server: MCITP, MCP, MCTS, MCSA, MCSE
• Zainteresowania:
• Optymalizacja baz danych, Hurtownie danych, SSIS
• Fotografia cyfrowa (Nikon D-90, Adobe Lightroom)
Agenda
Źródła zasileń hurtowni danych
Częstotliwość zasilania hurtowni
Sposoby zasilania hurtowni
Demo
Więzy integralności w hurtowni
Nie powiem o…
Projektowaniu hurtowni
SCD (Slowly Changing Dimension)
Przechwytywaniu zdarzeń
Checkpoint
…tym co Roman w listopadzie ;)
Dlaczego? Bo to nie 8-godzinny warsztat SQLDay!
Źródła zasileń hurtowni danych
• Systemy bazodanowe (operacyjne)– Microsoft SQL Server– Oracle– PostgreSQL– SyBase– DB2– …
• Pliki płaskie– CSV– Excel
• Bazy Microsoft Access• Pliki XML• WebServices
Częstotliwość zasilania hurtowni
• Miesięczny
• Tygodniowy
• Dzienny
• Częściej? (RealTime?)
Stage
• Po co, dlaczego?
• Lokalizacja
• Ale co dalej z danymi?
Sposoby zasilania hurtowni
Zasilanie przyrostowe bez aktualizacji:
SPLIT PARTITION & TRUNCATE
INSERT (only)
Zasilanie przyrostowe z „ułomną” aktualizacją: DELETE/TRUNCATE & INSERT
Zasilanie z aktualizacją danych / eliminacją duplikatów: Mechanizm CDC (Net processing mode) DISTINCT SORT Lookup DELETE, INSERT, UPDATE MERGE
DEMO #1
Więzy integralności w hurtowni
• Dobra, jedna tabela została zasilona – co z pozostałymi?
• Pytanie: czy istotna jest kolejność zasilania?
• Odpowiedź brzmi: to zależy
– Nie, gdy zasilamy „Staging”
– Tak*, gdy zasilamy hurtownię (bazę docelową)
• Od czego zależy kolejność?
– CONSTRAINTS typu FOREIGN KEY
Load/Merge Order
• Gdy mamy jedną tabelę… (iluzja)
Load/Merge Order
• Dwie tabele (robisz DW na zaliczenie laborek?)
Load/Merge Order
• Kilka tabel (marzenia)
Load/Merge Order
• KilkaNAŚCIE tabel
Load/Merge Order
• KilkaSET tabel (utopia)
DEMO #2Jak poradzić sobie z ustaleniem kolejności ładowania tabel
Podsumowanie
• Obszar „Stage” w osobnej bazie danych zaraz „obok”
• Eliminacja duplikatów:
– Lookup niekoniecznie (tylko z opcją CACHE!)
– MERGE
Q&A
Pytania?
DZIĘKUJĘ ZA UWAGĘ
Zapraszam do kontaktu
kamil.nowinski
http://pl.linkedin.com/in/kamilnowinski/
@NowinskiK