Speichern von Daten zur späteren Verarbeitung mithilfe des temporären Speichers im Jitterbit Design Studio
Anwendungsfall
Ein gängiges Muster bei der Datenintegration ist die Verwendung von Dateien zur vorübergehenden Speicherung von Daten, die im Rahmen des Prozesses der Transformation oder Verschiebung der Daten von der Quelle zum Ziel verwendet werden.
Beispiele
Temporäre Dateien
Ein typisches Muster besteht darin, eine Quelle Abfrage, die Ausgabe in einer temporären Datei zu speichern und dann im nächsten Schritt die Ausgabe zu lesen.
Im obigen Beispiel wird regelmäßig eine Salesforce Abfrage ausgeführt, die eine Ausgabe generiert, die in ein Ziel namens „Abgebrochene Aufträge“ geschrieben wird. Im zweiten Operation wird eine Quelle mit demselben Namen als Eingabe für ein NetSuite Update gelesen.
Überlegungen zur Verwendung von temporärem Speicher
- Der temporäre Speicher wird in das temporäre Verzeichnis des Standardbetriebssystems auf dem Agenten geschrieben, der die Arbeit ausführt. Im Fall eines einzelnen privaten Agenten ist dies das standardmäßige temporäre Verzeichnis des Serverhosts dieses privaten Agenten. Wenn die Agentengruppe mehr als einen privaten Agenten ausführt, ist dies das temporäre Verzeichnis auf dem Host für den jeweiligen Agenten, der die Arbeit ausführt. Wenn Sie in den temporären Speicher von Cloud-Agenten (die geclustert sind) schreiben, wird dies auf den Host des jeweiligen Cloud-Agenten geschrieben.
- Standardmäßig wird der temporäre Speicher nach 24 Stunden durch einen Jitterbit-Bereinigungsdienst gelöscht
-
Das Erstellen einer Quelle aus einem Ziel ist einfach: Erstellen Sie zunächst ein Ziel und geben Sie ihm einen eindeutigen Namen. Verwenden Sie dann die Option „In neue Quelle kopieren“, um die Quelle mit demselben Dateinamen zu erstellen (klicken Sie mit der rechten Maustaste auf den Zielnamen im Projektelementbaum im Bedienfeld auf der linken Seite des Bildschirms und wählen Sie im Dropdown-Menü „In neue Quelle kopieren“). Ziel und Quellen sind tatsächlich unabhängig, sodass eine einseitige Änderung eines Dateinamens in einem Ziel keine Auswirkungen auf eine Quelle mit demselben Namen hat.
-
In einer Cluster-Umfeld (private oder Cloud-Agenten) erfolgen alle Lese- und Schreibvorgänge für temporäre Dateien auf demselben Server Host, solange die Vorgänge, die den temporären Speicher verwenden, miteinander verknüpft (verkettet) sind.
-
Bei Zielen wird die Datei standardmäßig überschrieben. Dies kann mit der Option „An Datei anhängen“ geändert werden (Doppelklicken Sie auf das Ziel, klicken Sie auf Optionen und aktivieren Sie das Kontrollkästchen „An Datei anhängen“). Wenn die Datei gelesen wird, muss sie so behandelt werden, dass bei einem späteren Operation nichts mehr an die Datei angehängt wird. Wenn die Datei als Quelle gelesen wird, wird sie normalerweise gelöscht oder archiviert. Eine einfache Möglichkeit hierfür besteht darin, in der Quelle „Datei löschen“ oder „Datei umbenennen“ auszuwählen (Doppelklicken Sie auf die Quelle, klicken Sie auf Optionen und aktivieren Sie das Kontrollkästchen „Datei löschen“ oder geben Sie einen Namen in das Feld „Datei umbenennen“ ein).
-
Es gibt mehrere eingeklammerte Schlüsselwörter, die im Dateinamen verwendet werden können:
- Datum - fügt JJJJ-MM-TT ein
- Datum_Uhrzeit - fügt JJJJ-MM-TT_HHMMSS ein
- Zeit - fügt HHMMSS ein
- ext - ersetzt die Dateierweiterung
- Datei - ersetzt den Dateinamen
- Sequenz - fügt die Sequenznummer (1,2,3) der Datei ein
- eindeutig - fügt eine GUID ein, um einen eindeutigen Dateinamen zu erstellen. Wenn dies verwendet wird, muss der Operation den Quelltyp „Quelle aus vorherigem Vorgang verwenden“ oder ein Platzhalterzeichen in der Quelle verwenden.
- Es ist möglich, Ihren eigenen „eindeutigen“ Dateinamenteil zu konstruieren, indem Sie ein Script erstellen, das eine globale Variable verwendet, die einer GUID zugewiesen ist: $unique_filename = Guid(). Übergeben Sie dann „[unique_filename]“ an die Quelle und das Ziel.
- Eine temporäre Datei kann im Studio gelesen werden, indem ein Script mit der Funktion ReadFile() erstellt wird: ReadFile("\<TAG>Sources/test\</TAG>"). Testen Sie anschließend das Script. Bedenken Sie, dass dies nur zuverlässig funktioniert, wenn ein einzelner privater Agent vorhanden ist.
Temporäre Dateien vs. globale Variablen als Quellen und Ziele
Anstatt temporäre Dateien auf einem Agenten zu lesen und zu schreiben, ist es möglich, stattdessen eine globale Variable zu verwenden.
Vorteile der Verwendung globaler Variablen als Quelle oder Ziel
- Einfacher zu schreiben. Um in einem Script in eine temporäre Datei zu schreiben, sind zwei Funktionen erforderlich: WriteFile() und FlushFile(). Dasselbe kann in einem einzelnen Script erreicht werden, indem einer Variablen einfach ein Wert zugewiesen wird, z. B. $foo="123","456","789".
- Einfacher in Funktionen zu verwenden. Eine globale Variable zu haben, die an andere Funktionen übergeben werden kann, wie z. B. WriteToOperationLog(), ist sehr praktisch. Dasselbe kann mit temporären Dateien gemacht werden, erfordert aber ein ReadFile(), um die Daten abzurufen.
- Keine Bereinigung. Da es sich um globale Variablen handelt, bleiben die Daten nach Abschluss des Operation, egal ob erfolgreich oder nicht, nicht erhalten. Bei temporären Dateien kann ein fehlgeschlagener Operation verwaiste Dateien in der temporären Datei hinterlassen, die sich schnell anhäufen und die Speichergrenzen überschreiten können.
Vorteile der Verwendung temporärer Dateien als Quelle oder Ziel
- Einfacher zu debuggen. Wenn Sie einen privaten Agenten verwenden, kann der Zugriff auf die eigentliche Datei sehr hilfreich sein, um Integrationsdetails zu debuggen
- Funktionsreich. Es gibt viele praktische integrierte Schlüsselwortfunktionen für Zieldateinamen. Beispiele sind Datum, Datum_Uhrzeit, Sequenz, eindeutig. Außerdem kann SCOPE_CHUNK verwendet werden, um temporäre Dateien in Blöcke aufzuteilen.
- Viele Optionen und mehr Kontrolle. Zeilenende-Typ, Optionen zum Schreiben von Headern, Anhängen an Datei, keine leeren Dateien erstellen, Zeichenkodierung und Komprimierung.
- Dynamisch. Die Pfad- und Dateinameneinträge können mit einer globalen Variable gefüllt werden, sodass die Werte auf Grundlage vorheriger Operation festgelegt werden können. Bei richtiger Konstruktion können ein einzelnes Ziel und eine einzelne Quelle von mehreren Operationen wiederverwendet werden.