Slowly Changing Dimension – jetzt auch schnell!

Wer schon einmal ein bestehendes DWH inkrementell befüllt hat, weiß um die Problematik der langsam veränderlichen Dimension (kurz: SCD). Dabei handelt es sich um meist kleine Veränderungen, die Datensätze einer Dimension betreffen. Dabei lassen sich viele Spezialfälle unterscheiden und in der Regel erfordert der Umgang mit einer SCD viel Fingerspitzengefühl.



Die SQL Server Integration Services bieten dem Benutzer daher einen SCD-Wizard, in dem er schnell und unkompliziert die veränderliche Dimension bearbeiten kann. Wer ihn schon einmal benutzt hat, kennt aber die beiden Hauptärgernisse:

1. Ã?nderungen an der Komponente zerstören schnell die mühsam erstellten Beziehungen zu folgenden Komponenten.
2. Größere Dimensionen werden äußerst unperformant behandelt.

So wird die SCD Komponente oft von workarounds abgelöst und fristet ihr Schattendasein zwischen Skript-Task und SQL-Befehlen.

In den vergangenen Monaten wurde auf Microsofts Community-Plattform Codeplex ein Projekt namens KimballsMethodSCD entwickelt, welches der Slowly Changing Dimension in den SSIS zu neuem Glanz verhelfen soll. Autor der Komponente ist Todd McDermid; als Pate für den Projektnamen stand Ralph Kimball ein, dessen SCD-Best Practices aus seinem Buch The Data Warehouse Toolkit signifikanten Einfluss auf die Entwicklung der Komponente hatten. Aber nun zum Addon: die Installation gestaltet sich dank msi-Installer problemlos; die KimballMethodSCD Komponente ist dann als Datenfluss-Komponente verfügbar. Eine erschöpfende Beschreibung der Fähigkeiten der Komponente würde genügend Stoff für zehn Blog-Einträge liefern, daher seien an dieser Stelle die „Perlen” erwähnt:

KimballMethodSCD

– Umsetzung der Best Practices nach Kimball: unknown member Unterstützung; Angabe eines Ã?nderungsgrundes als Spalte für geänderte Spalten; einfaches Row Auditing für Einfüge- und Updateoperationen
– die existierende Dimension wird aus einem Datenfluss heraus gelesen statt aus einem Connection Manager; dies ermöglicht mehr Flexibilität und besseres Cacheverhalten
– Ã?nderungen wirken sich nicht zerstörerisch auf darunterliegende Komponenten aus
– flexible Spaltenvergleiche sind möglich: z.B. können Spalten Case-(un)sensitiv und Space (un)sensitiv verglichen werden
– eine Performancesteigerung gegenüber der Standard Komponente um den Faktor 100 (!) kann bei großen Dimensionen ohne weiteres erreicht werden

KimballMethodSCD

Während die ersten Punkte im Wesentlichen Designhilfen für den Entwickler darstellen, ist die Performancesteigerung ein netter Nebeneffekt der guten Implementierung des Addons: durch die Nutzung multipler Threads und einer Sortieroptimierung sind Ausführungszeiten möglich, die mit dem Standard Wizard undenkbar sind. Dieser nutzt einen langsamen Row-by-Row Lookup auf die Dimensionstabelle, während der KimballlMethod SCD die gesamte Tabelle in einem Stream einliest.

KimballMethodSCD

Obiges Beispiel, welches neben dem Addon auch als SSIS-Solution zum Download angeboten wird, zeigt den imposanten Performancegewinn: Eine Dimensionstabelle wurde mit 120.000 Datensätzen geladen. Anschließend wurden die Quelldatensätze dahingehend manipuliert, dass 33 SCD1 Ã?nderungen und 42 SCD2 Ã?nderungen entstanden, wodurch ein winziger Bruchteil der Dimensionsdatensätze geändert werden mussten. Bei den Ausführungszeiten zeigte sich, dass der SSIS Standard Wizard 29 Minuten brauchte, der KimballMethod SCD hingegen nur 15 Sekunden (!). Zwar musste das ausführende System einen 10fach gestiegenen Hauptspeicherbedarf kompensieren, der Anwender wurde aber mit einer 118fachen Leistungssteigerung belohnt.

Die Ausführungszeiten, die nach Ralph Kimballs Best Practices erweiterte Funktionalität und letztlich auch die Einfachheit der KimballMethod SCD machen diese zu einer echten Alternative zum Standard Wizard und verhelfen der etwas eingestaubten Slowly Changing Dimension in den SSIS zu neuem Glanz.

Schreibe einen Kommentar