# ETL Pipeline

Der digitale Lesesaal ist grundsätzlich ein Schaufenster für Daten, die bereits existieren, resp. in anderen Anwendungen wie einem Archivinformationssystem gepflegt werden. Daher ist der digitale Lesesaal nicht optimiert für das manuelle Erfassen von Daten, sondern für das Importieren aus Drittsystemen.

Bei solchen Imports kann es sich um grössere Datenmengen handeln, die während dem Import automatisch transformiert werden müssen, damit sie in der richtigen Form im digitalen Lesesaal gespeichert werden können.

Für den Import verwendet der DLS daher eine sogenannte ETL Pipeline. ETL steht dabei für:

  • Extract (Daten aus Quelle holen)
  • Transform (Daten in die nötige Form bringen)
  • Load (Daten in den DLS laden).

# Pipelines

Im DLS können beliebig viele ETL-Pipelines angelegt und konfiguriert werden. Eine Pipeline besteht dabei aus einer Serie von Sections, die die drei ETL-Aufgaben (Extract, Transform, Load) durchführen. Die Sections werden in einer bestimmten Reihenfolge konfiguriert.

Wird eine Pipeline ausgeführt, so werden einzelne Items (z.B. Zeilen aus einer Datenbank) durch Extract-Sections in die Pipeline geladen und dann durch jede Section verarbeitet bis sie am Schluss mit einer Load-Section gespeichert werden.

# Sections

Eine Section ist eine Komponente, die eine bestimmte Aufgabe in der Verarbeitung von Daten hat. Sie hat folgende Eigenschaften:

  • sie konsumiert einzelne Items in der Pipeline von der vorhergehenden Section
  • sie kann einzelne Items modifizieren, z.B. indem Eigenschaften transformiert werden (Transform)
  • sie kann Items aus der Pipeline entfernen, indem sie nicht mehr an die nächste Section weitergegeben werden
  • sie kann mehr oder andere Items weitergeben
  • sie kann weitere Daten aus Umsystemen holen und in die Pipeline füttern (Extract)
  • sie kann Daten in den DLS oder Umsysteme speichern (Load)
  • sie kann anderweitig mit Umsystemen arbeiten.

Jede Section führt dabei eine eigene Statistik über die verarbeiteten Items, so dass die Pipeline eine Fortschrittsangabe machen kann. Da die Sections aber die Anzahl verarbeiteter Items dynamisch verändern ist diese Fortschrittsangabe ungeeignet für das Erstellen von Prognosen.

# Technischer Aufbau

Die Verarbeitung von Daten in der Pipeline kann ressourcenintensive Arbeit beinhalten, wie das Aufbereiten von Bildern. Daher werden diverse Arbeiten durch eigenständige Services durchgeführt, welche in eigenen Containern laufen.

Dies hat folgende Vorteile:

  • Ressourcenintensive Arbeiten können auf einen anderen Server verlagert werden um den Hauptserver zu entlasten, so dass es keine Beeinträchtigung bei der Bedienung durch Benutzer gibt.
  • Services, die aufwändige Arbeiten durchführen, können horizontal skaliert werden. Das heisst es können beliebig viele Service-Workers parallel betrieben werden. Die Ressourcen des Servers sind hier der limitierende Faktor.

Hier einige wichtige Services für die ETL-Pipeline:

  • «etl-worker»: Führt die Pipelines aus und kontrolliert das Ausführen der Pipelines.
  • «scope-archiv-connector»: Anbindung an eine Scope-Archiv-Datenbank als Datenquelle. Stellt die Daten der ETL-Pipeline als REST-API zur Verfügung und optimiert die Abfrage aus der Quell-Datenbank.
  • «file-downloader»: Bindet ein Quellsystem für Digitalisate an. Unterstützt aktuell HTTP, S3, Fedora Commons API.
  • «image-compression»: Verarbeitet Bilder. Komprimiert die Bilder und bereitet sie für den IIIF Standard auf.
  • «pdf-publisher»: Verarbeitet PDF-Dateien. Macht Vorschau-Bilder und Text-Extraktion für die Volltextindexierung.
  • «book-publisher»: Verarbeitet METS/MODS XML Dateien und erstellt IIIF Manifests für das Betrachten von Büchern im Web.
  • «movie-publisher»: Verarbeitet Videos, macht Vorschau-Bilder.
  • «simple-publisher»: Allgemeiner Service zum Publizieren von Dateien ohne grössere Verarbeitung.

Prozesse die länger als 30 Minuten keinen Fortschritt zeigen, werden automatisch vom System bereinigt.

# Bedienung der Pipeline

Die Pipeline wird in der internen Oberfläche des digitalen Lesesaals bedient. Die Übersichtsseite gibt Auskunft über die geplanten, aktuell ausgeführten und vergangenen Pipelines:

Pipeline Übersicht

Auf der Konfigurationsseite werden die aktuellen Pipeline-Konfigurationen aufgelistet. Dort können neue Pipelines erstellt oder bestehende verändert werden, sowie Pipelines geplant werden.

Pipeline Konfiguration

# Bearbeitung von Pipelines

Die Pipelines können direkt im Browser umkonfiguriert werden. Die Pipeline-Konfiguration wird im Format JSON geschrieben. Der integrierte Konfigurations-Editor prüft dabei automatisch die Syntax und zeigt Fehler an; diese sind zu korrigieren bevor gespeichert wird.

Ungültige Pipeline-Konfiguration

Für die Konfiguration von Pipelines können als Referenz die Standard Pipelines verwendet werden. Die detaillierte Dokumentation der Sections ist auf der Seite Sections ersichtlich.

Bei der Benennung der Pipelines ist die Konvention, dass die Pipelines alphabetisch nach Abhängigkeiten und logischem Aufbau sortiert werden. Eine Präfix-Nummer (z.B. 01_records) hilft dabei dies zu vereinfachen. Dies ist vor allem wichtig, wenn Pipelines automatisch ausgeführt werden und diese in einer bestimmten Reihenfolge ausgeführt werden müssen.

# Importieren der Standard-Pipelines

Mit dem Import Button kann die Pipeline-Konfiguration auf die Werkseinstellungen zurückgesetzt werden. Das bedeutet, dass die Standard Pipelines (oder eine Installationsspezifische Version) importiert werden wobei die Konfiguration von bestehenden Pipelines überschrieben werden.

Pipeline-Import

Aus der Meldung ist ersichtlich, welche Konfigurationen aktualisiert wurden.

# Nächtliches Ausführen

Je nach Datenquelle macht es Sinn, gewisse Pipelines nächtlich auszuführen. Dabei ist zu beachten, dass die nächtlichen Pipelines in weniger als 24 Stunden abgearbeitet sein sollten, ansonsten werden sich die Jobs über Tage anstauen.

In Bearbeitungsmaske der Pipelines kann das nächtliche Ausführen aktiviert werden. Nächtlich um 1:00 Uhr werden dabei alle Pipelines, die nächtliches Ausführen aktiviert haben, automatisch zur Ausführung geplant und seriell abgearbeitet. Die Reihenfolge entspricht der Sortierreihenfolge in der Ansicht "Pipelines", also alphabetisch nach Titel.

Nächtlicher Import