BI: Table-Switching bei High-Availability Staging/Reporting Lösungen

In manchen Szenarien ist eine klassische ETL-Lösung mit mehreren Staging/Harmonisierungs-Ebenen nicht realisierbar.

Häufig ist der Grund dafür der Wunsch nach sehr kurzen Latenzzeiten: Damit ist jene Verzögerungszeit gemeint, um Daten vom Vorsystem ins analytische Reporting zu transferieren.

Bei einem Full-Load werden aber die Daten vorher komplett aus der Zieltabelle gelöscht, um diese danach mit den neuesten Daten aus dem Vorsystem erneut zu befüllen.

Die Latenzzeit zwischen Löschen und fertiger Befüllung ist für das Reporting leider problematisch, da keine Daten verfügbar sind.

Um diese Anforderung so gut wie möglich zu bedienen, kommt die „Table-Switching“-ETL-Methode zum Einsatz.

Die Eckpunkte der Lösung:

  • Es gibt für jede Reporting-Tabelle zwei Tabellen:
    • Die originale Tabelle (data.Table), auf die das Reporting abzielt
    • Die Input-Layer-Tabelle (data.Table_in), in welche die Daten transferiert werden
  • Der Full-Load aus dem Vorsystem erfolgt immer in die Input-Layer-Tabelle
  • Wenn alle Input-Layer-Tabellen befüllt sind, dann werden diese 3-stufig auf die originale Tabelle mit dem T-SQL Statement „sp_rename“ umbenannt
    • Zuerst die Input-Layer-Tabelle (data.Table_in) in eine temporäre Tabelle (data.Table_tmp)
    • Dann die originale Tabelle (data.Table) zu (data.Table_in)
    • Dann die temporäre Tabelle wieder zur originalen Tabelle
  • Das Umbenennen geht innerhalb von Millisekunden, wodurch sichergestellt ist, dass nahezu immer Daten für das Reporting vorhanden sind
  • Um das Befüllen noch schneller zu gestalten, können auch Indices behandelt werden
    • Vor dem Laden in die Input-Tabellen werden dort die Indices deaktiviert (alter index idx on data.table disabled)
    • Wenn alle Umbenennungen fertig sind, werden die Indices auf den originalen Tabellen wieder reaktiviert (alter index idx on data.table rebuild)

 

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s