Pipe & Filter
Pipe & Filter verarbeitet Daten durch eine Folge unabhängiger Schritte. Jeder Filter übernimmt Eingaben in einem bekannten Format und liefert definierte Ausgaben.
- FilterEin Schritt mit genau einer Aufgabe.
- ZwischenformatDefinierte Ein- und Ausgabe je Filter.
- ZusammensteckbarFilter einfügen, ohne andere zu ändern.
Einordnung
Warum das wichtig ist
Ein einziger großer Importschritt verbirgt, wo ein Fehler entsteht. Pipe & Filter zerlegt die Verarbeitung in Filter mit klaren Zwischenformaten, die sich kombinieren lassen, bekannt aus Unix-Pipes (cat import.csv | grep … | sort) und ETL. Für fachliche Abläufe mit Rücknahme über mehrere Transaktionen siehe Saga.
Dieser Baustein erklärt lineare Datenverarbeitung. Für fachliche Abläufe mit Rücknahme über mehrere Transaktionen siehe Saga.
Auf einen Blick · Filterkette mit Pipes
Eine Zeile durch die Pipeline schicken
Der Katalog importiert jeden Morgen eine CSV-Datei mit neuen Tassen. Ungültige Zeilen sollen protokolliert werden, ohne gültige Produktdaten zu verfälschen.
So liest du das Bild
- Filter Die Stationen Lesen, Prüfen, Normalisieren und Katalog, jede mit eigenem Ergebnis.
- Zwischenformat Unter jedem Filter das Format, etwa Rohdatensatz oder gültiger Datensatz.
- Zusammensteckbar „+ Filter Dubletten entfernen“ steckt sich zwischen Prüfen und Normalisieren.
Was nach jedem Filter vorliegt
LesenRohdatensatz
nr T-7, preis "24,95 EUR"Prüfengültiger Datensatz
Pflichtfelder und Preis vorhandenNormalisierenProduktimport
preis Geldbetrag(2495 Cent, EUR)Katalogim Katalog
T-7 angelegt
Zeilen illustrativ
Nutzen & Grenzen
Hilft, wenn
- Geordnete Transformationen erhalten durch einzeln prüfbare Filter klare Übergaben.
- Stabile Ein- und Ausgabeformate erlauben es, Verarbeitungsschritte wiederzuverwenden oder auszutauschen.
- Ein eigener Fehlerpfad macht die Ursache fehlerhafter Datensätze sichtbar und hält die übrige Verarbeitung handlungsfähig.
Grenzen
- Viele Verzweigungen und Rücksprünge sprengen die lineare Kette; dann braucht es Prozesssteuerung, siehe Orchestrierung.
- Teilzustände: Fällt ein späterer Filter aus, ist vorher schon etwas geschrieben; lege Wiederaufnahmepunkte fest.
- Overhead je Übergabe: Bei sehr kleinen Schritten lohnt die Zerlegung nicht.
In der Praxis
- Definiere für jeden Filter Eingabe, Ausgabe und Fehlerform. Stabile Zwischenformate erlauben gezielte Tests und zeigen, welcher Verarbeitungsschritt für einen Wert zuständig ist.
- Begrenze Filter auf eine Transformation und halte gemeinsamen veränderlichen Zustand aus der Kette heraus. Dadurch kann ein fehlerhafter Schritt isoliert geprüft und ersetzt werden.
- Lege Fehlerablage und Wiederaufnahme fest und miss Rückstand je Stufe. Für zeitliche Entkopplung siehe Asynchrone Kommunikation; Laststeuerung vertieft Backpressure.
Ausführliche Erklärung lesen
Eine Pipeline besteht aus Filtern mit klar definierten Ein- und Ausgaben. Jeder Filter übernimmt einen Verarbeitungsschritt; eine Pipe übergibt dessen Ergebnis an den nächsten. Die Reihenfolge und Form der Übergaben bestimmen den Ablauf.
Kleine, zustandsarme Filter lassen sich gezielt testen und austauschen. Fehlerpolitik, Wiederaufnahme und Nebenwirkungen müssen dennoch über die gesamte Pipeline abgestimmt sein. Bei vielen Verzweigungen, Rücksprüngen oder lang laufenden Zuständen braucht der Ablauf eine explizite Prozesssteuerung.
Asynchrone Kommunikation entkoppelt Zeitpunkte zwischen Verarbeitungsschritten; Backpressure regelt, wie eine Kette Überlast an vorgelagerte Stufen zurückmeldet.
Das bekannteste Beispiel sind Unix-Pipes, in denen kleine Programme über Standardein- und -ausgabe verbunden werden. ETL-Strecken und Streams-APIs wie Java Streams folgen derselben Idee. Für Nachrichten beschreiben die Enterprise Integration Patterns das Muster mit Kanälen zwischen den Filtern.
Selbst prüfen
Teste dich in drei Stufen
AblesenIm Bild nachsehen
Zeile 2 hat keinen Preis. Wo endet sie, und was passiert mit ihr?
Lösung mit Begründung ansehen
Im Filter Prüfen. Sie wird mit Zeilennummer ins Fehlerprotokoll geschrieben; Normalisieren und Katalog sehen sie nie.
AnwendenAuf eine neue Lage übertragen
Neue Regel: Preise unter 1 EUR werden abgelehnt. In welchen Filter gehört sie?
Lösung mit Begründung ansehen
In Prüfen, denn dort wird über gültig oder ungültig entschieden. Lesen, Normalisieren und Katalog bleiben unverändert.
BewertenEine Alternative abwägen
Soll Prüfen und Normalisieren zu einem Schritt zusammengelegt werden? Wie wägst du ab?
Lösung mit Begründung ansehen
Ein Schritt spart eine Übergabe. Getrennt bleibt aber sichtbar, wo ein Fehler entsteht, und Normalisieren verarbeitet nur Geprüftes. Empfehlung: getrennt lassen, solange beide Schritte eigene Regeln haben.
Vertiefen
Diese optionalen Vertiefungen ergänzen das Lernziel dieser Seite.
Blackboard
Das Blackboard-Muster bietet eine gemeinsame Wissensbasis, zu der spezialisierte Komponenten schrittweise Beiträge liefern, bis eine Lösung entsteht. Es eignet sich für Aufgaben, bei denen sich die Bearbeitungsreihenfolge aus dem verfügbaren Wissen ergibt und mehrere Ansätze zusammenwirken. Anders als eine Pipe-filter-Kette schreibt es keine lineare Reihenfolge vor; Beiträge, Konflikte und Abschlussbedingungen brauchen klare Regeln.
Zum AusprobierenVergleiche im Shop eine lineare Rabattberechnung mit einem Blackboard für komplexe Produktempfehlungen: Mehrere Komponenten könnten Produktwissen beitragen und eine Auswahl verfeinern. Benenne, welche Komponente welchen Beitrag veröffentlichen darf, wie widersprüchliche Vorschläge behandelt werden und woran die Lösung als vollständig gilt.
Weiterführende Bausteine
Quellen
- Microsoft · Pipes and Filters (öffnet in neuem Tab)Zerlegt Verarbeitung in kombinierbare, unabhängig betreibbare Stufen.
- Enterprise Integration Patterns · Pipes and Filters (öffnet in neuem Tab)Originalmuster für die Zerlegung von Nachrichtenverarbeitung in Filter.
- Enterprise Integration Patterns · Message Channel (öffnet in neuem Tab)Erklärt die Verbindung von Verarbeitungsschritten über Nachrichtenkanäle.
- arc42 · Dataflow Architectures (öffnet in neuem Tab)Ordnet Pipe-and-Filter und Blackboard als Formen der Datenverarbeitung ein.