Zasilanie hurtowni danych 
w SSIS w praktyce 
Kamil Nowiński 
kamil@nowinski.net
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)
Jak poradzić sobie z ustaleniem kolejności ładowania tabel 
DEMO #2
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.net 
kamil.nowinski 
http://pl.linkedin.com/in/kamilnowinski/ 
@NowinskiK

Zasilanie hurtowni danych w SSIS w praktyce

  • 1.
    Zasilanie hurtowni danych w SSIS w praktyce Kamil Nowiński kamil@nowinski.net
  • 2.
    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)
  • 3.
    Agenda Źródła zasileńhurtowni danych Częstotliwość zasilania hurtowni Sposoby zasilania hurtowni Demo Więzy integralności w hurtowni
  • 4.
    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!
  • 5.
    Źródła zasileń hurtownidanych • Systemy bazodanowe (operacyjne) – Microsoft SQL Server – Oracle – PostgreSQL – SyBase – DB2 – … • Pliki płaskie – CSV – Excel • Bazy Microsoft Access • Pliki XML • WebServices
  • 6.
    Częstotliwość zasilania hurtowni • Miesięczny • Tygodniowy • Dzienny • Częściej? (RealTime?)
  • 7.
    Stage • Poco, dlaczego? • Lokalizacja • Ale co dalej z danymi?
  • 8.
    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
  • 9.
  • 10.
    Więzy integralności whurtowni • 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
  • 11.
    Load/Merge Order •Gdy mamy jedną tabelę… (iluzja)
  • 12.
    Load/Merge Order •Dwie tabele (robisz DW na zaliczenie laborek?)
  • 13.
    Load/Merge Order •Kilka tabel (marzenia)
  • 14.
    Load/Merge Order •KilkaNAŚCIE tabel
  • 15.
    Load/Merge Order •KilkaSET tabel (utopia)
  • 16.
    Jak poradzić sobiez ustaleniem kolejności ładowania tabel DEMO #2
  • 17.
    Podsumowanie • Obszar„Stage” w osobnej bazie danych zaraz „obok” • Eliminacja duplikatów: – Lookup niekoniecznie (tylko z opcją CACHE!) – MERGE
  • 18.
  • 19.
    DZIĘKUJĘ ZA UWAGĘ Zapraszam do kontaktu kamil@nowinski.net kamil.nowinski http://pl.linkedin.com/in/kamilnowinski/ @NowinskiK

Editor's Notes

  • #9 SPLIT PARTITION INSERT DELETE/TRUNCATE & INSERT Z aktualizacją danych / eliminacją duplikatów: Mechanizm CDC (nie zawsze możliwy) DISTINCT, SORT (sort all cols with remove duplicates) LookUp (wolny) DELETE, INSERT, UPDATE -> MERGE
  • #11 * Gdy ma relacje i nie wyłączyliśmy ich podczas ładowania