Der Tourplan-XML-Import schlägt bei großen Lieferantenkatalogen fehl und die klumpige Importpipeline verhinderte Zeitüberschreitungen
Veröffentlicht: 2025-11-25In der schnelllebigen Welt der Reisetechnologie, in der Daten von Hunderten von Lieferanten ständig erfasst und aktualisiert werden müssen, werden Leistung und Zuverlässigkeit geschäftskritisch. Viele Unternehmen verlassen sich auf Tourplan, ein führendes Reisemanagementsystem, um Lieferanteninhalte über XML-Importfunktionen zu verwalten. Als jedoch die Größe der Lieferantenkataloge zunahm – manchmal Hunderttausende von Produkten – begann der herkömmliche XML-Importprozess zu scheitern. Dieser Engpass veranlasste Entwickler, eine intelligentere, fragmentierte Importpipeline zu implementieren, um die Systemstabilität und -leistung aufrechtzuerhalten.
TL;DR
Beim Import großer Lieferantenkataloge über XML in Tourplan kam es in vielen Unternehmen immer wieder zu Ausfällen und Timeout-Fehlern. Das Problem entstand dadurch, dass das System nicht in der Lage war, riesige XML-Nutzlasten in einer einzigen Transaktion zu verarbeiten. Die Einführung einer Chunked-Import-Pipeline, bei der Daten in kleinere, überschaubare Teile aufgeteilt werden, ermöglichte eine erfolgreiche Verarbeitung ohne Zeitüberschreitungen. Diese Lösung verbesserte sowohl die Zuverlässigkeit als auch die Skalierbarkeit für Tourplan-Benutzer, die große Mengen an Lieferantendaten verarbeiten.
Die Herausforderung bei umfangreichen XML-Importen
Im Kern wurde die XML-Datenimportfunktion in Tourplan entwickelt, um die Automatisierung der Aufnahme von Lieferanteninhalten zu erleichtern. Lieferanten würden XML-Dateien mit riesigen Datensätzen generieren – Hotels, Ausflüge, Preisstrukturen, Saisonregeln, Verfügbarkeitskalender und mehr. Diese Dateien sind für Reiseunternehmen unerlässlich, um ihre Bestände auf dem neuesten Stand zu halten.
Viele Teams stießen jedoch auf ein kritisches Problem: Als die Größe dieser XML-Dateien zunahm, scheiterte der Importvorgang aufgrund von Zeitüberschreitungen, Speicherauslastung auf den Servern oder völligen Abstürzen. Das Grundproblem lässt sich auf einige wesentliche Einschränkungen zurückführen:
- Single-Threaded-Importe: Der XML-Import von Tourplan verarbeitete die gesamte Datei auf einmal und verbrauchte enorme Ressourcen.
- Keine Fortschrittsverfolgung: Sobald der Importvorgang gestartet war, gab es keine Möglichkeit, ihn anzuhalten, fortzusetzen oder nach einem Fehler ordnungsgemäß wiederherzustellen.
- Fehlende Batch-Mechanismen: Die Importpipeline ging davon aus, dass alle Daten im Speicher analysiert und validiert werden könnten.
Das Ergebnis? Fehlgeschlagene Importe, beschädigte Datensätze und ein Rückstand bei Lieferantenaktualisierungen. Eine einfache Erhöhung der Serverressourcen war auf lange Sicht keine praktikable Lösung.
Symptome, die auf einen Engpass hindeuten
Es zeigten sich mehrere deutliche Symptome, die auf einen systemischen Engpass in der Importpipeline von Tourplan hindeuteten:
- Zeitüberschreitungsfehler: Importjobs würden stundenlang ausgeführt, nur um dann von Server-Watchdog-Timern beendet zu werden.
- Teilweise Datenaufnahme: Die Teams stellten fest, dass einige Datensätze zwar aktualisiert wurden, andere jedoch veraltet blieben, was zu inkonsistenten Preisen und Verfügbarkeiten führte.
- Erhöhte Support-Tickets: Endbenutzer bemerkten Anomalien in Reiseplänen und Angeboten, die aus veralteten Katalogen generiert wurden.
Da die Einsätze immer größer werden und die Kataloggröße von Jahr zu Jahr zunimmt, musste eine skalierbarere und belastbarere Methode entwickelt werden.
Die Lösung: Eine Chunked-Import-Pipeline
Das Überdenken der Importarchitektur führte zu einer entscheidenden Erkenntnis: Wenn die Daten in Etappen oder Blöcken verarbeitet werden könnten, könnte das Risiko von Zeitüberschreitungen und Leistungsabstürzen erheblich verringert werden. Aus dieser Idee entstand die neue Chunked-Import-Pipeline.
Was ist Chunking? Im Kontext von XML-Datenimporten bezieht sich Chunking auf die Aufteilung großer Dateien in kleinere, logisch getrennte Segmente, die einzeln verarbeitet werden. Jedes Segment könnte eine bestimmte Art von Daten (Hotels, Preise, Kalender) oder sogar Abschnitte identischer Datentypen (z. B. 5.000 Hotelobjekte pro Block) darstellen.

Die Chunked-Import-Pipeline folgte mehreren Best Practices:
- Vorverarbeitungsschritt: Die ursprüngliche XML-Datei wird zunächst mithilfe eines Parsers analysiert und aufgeteilt, der logische Haltepunkte wie schließende Tags oder vordefinierte Objektgruppierungen identifiziert.
- Warteschlangenbasierte Verarbeitung: Jeder resultierende Block wird einer Jobwarteschlange hinzugefügt und asynchron verarbeitet, um eine Überlastung des Systemspeichers zu vermeiden.
- Ausfallsichere Prüfpunkte: Jeder Chunk enthält Metadaten für die Prüfung und kann im Fehlerfall unabhängig wiederholt werden.
- Fortschrittsverfolgung und -protokollierung: Für vollständige Transparenz wurden Dashboards implementiert, um den Erfolg/Misserfolg jedes Abschnitts zu verfolgen.
Technische Implementierungsdetails
Sehen wir uns genauer an, wie dies technisch erreicht wurde.

1. Chunking-Mechanismus
Mithilfe eines XML-Streaming-Parsers (z. B. SAX oder StAX in Java oder lxml in Python) wurde die Datei Zeile für Zeile gelesen, anstatt sie auf einmal in den Speicher zu laden. Logische Knoten (z. B. <Hotel>, <Exkursion>) wurden als eigenständige Dokumente in separate Dateien oder Speicherblöcke extrahiert.
2. Asynchrone Worker-Warteschlange
Eine Jobwarteschlange, die auf Tools wie RabbitMQ oder AWS SQS basiert, verwaltete die Übermittlung von Chunk-Jobs. Mehrere Worker könnten gleichzeitig ausgeführt werden, um Blöcke über verschiedene CPU-Kerne oder Cluster-Knoten hinweg zu verarbeiten, was die Leistung drastisch verbessert.
3. Fehlerbehandlungs-Framework
Wenn ein Block fehlschlug, wurde er separat protokolliert und konnte erneut verarbeitet werden, ohne den gesamten Import wiederholen zu müssen. Dies reduzierte das Risiko und verkürzte die Wiederherstellungszeiten erheblich.

Vorteile in der Produktion
Nach der Einführung des Chunked-Import-Systems stellten mehrere Reiseunternehmen deutliche Verbesserungen fest:
- Reduzierung der Importfehler um 90 %: Importe, die zuvor aufgrund einer Zeitüberschreitung fehlschlugen, wurden jetzt ohne Probleme abgeschlossen.
- Schnellere Wiederherstellung: Fehlgeschlagene Chunks konnten sofort wiederholt werden, was eine flexiblere Fehlerkorrektur ermöglichte.
- Reduzierte Serverlast: Da die Blöcke kleiner waren und asynchron verarbeitet wurden, stabilisierten sich die Speicher- und CPU-Auslastung.
- Transparenz: Importprotokolle und Dashboards sorgten für klare Sicht darüber, welche Daten verarbeitet wurden und welche nicht.
Dieser Ansatz erwies sich als besonders effektiv während der Hauptreisesaison, wenn Lieferantenaktualisierungen häufig und zeitkritisch sind. Teams könnten nächtliche oder stündliche Importe planen, ohne befürchten zu müssen, dass Systeme ausfallen oder fehlerhafte Reisepläne erstellt werden.
Gelernte Lektionen
Diese Erfahrung lieferte mehrere wichtige Lehren für ETL-Prozesse (Extract, Transform, Load) in modernen Reiseplattformen:
- Skalierung ist wichtig: Was bei Tausenden von Datensätzen funktioniert, kann bei Millionen Datensätzen kaputt gehen – Systeme müssen sich mit der Datenmenge weiterentwickeln.
- Beobachtbarkeit ist der Schlüssel: Protokolle, Metriken und Dashboards sollten die Grundlage für jedes automatisierte Importsystem sein.
- Design für Fehler: Alles sollte wiederholbar sein und kein Vorgang sollte jemals einen „perfekten Ablauf“ annehmen.
Zukünftige Verbesserungen und nächste Schritte
Obwohl die Chunked-Pipeline bahnbrechend war, endete die Innovation hier nicht. Mehrere Unternehmen prüfen derzeit Folgendes:
- Lieferanten-API-Integrationen in Echtzeit: XML-Dateidumps werden vollständig umgangen, indem Daten über REST-APIs synchronisiert werden.
- Datenvalidierung am Edge: Implementierung der Validierung vor dem Import mithilfe von XSDs und JSON-Schema, um Garbage-In-Szenarien zu reduzieren.
- Automatisch skalierende Infrastruktur: Verwendung von Kubernetes oder serverlosen Frameworks zur dynamischen Skalierung der Anzahl der Import-Worker basierend auf dem Auftragsvolumen.
Abschluss
Daten sind das Lebenselixier jedes modernen Reiseunternehmens. Da die Ökosysteme der Zulieferer immer komplexer werden, müssen sich Systeme wie Tourplan weiterentwickeln, um immer größere und häufigere Updates bewältigen zu können. Der Wechsel zu einer Chunked-Import-Pipeline löste nicht nur das Problem der Zeitüberschreitungen beim XML-Import, sondern öffnete auch die Tür zu einem robusteren, effizienteren und skalierbaren Datenmanagement-Ökosystem.
Unternehmen, die diese Architektur übernommen haben, verarbeiten Importe jetzt schneller, mit größerer Genauigkeit und Verfügbarkeit – und verwandeln so einen früheren Schwachpunkt in einen Wettbewerbsvorteil.
