Zum Inhalt springen

Globale Variablen versus Temporäre Speicherung im Jitterbit Design Studio

Einführung

Zwei der häufigsten sofort einsatzbereiten temporären Speichertypen in Harmony sind Globale Variablen und Temporäre Speicherung. Es gibt mehrere Überlegungen, die bei der Wahl zwischen den beiden angestellt werden sollten.

Globale Variablen

Globale Variablen Quellen und Ziele, die nicht mit Skript globalen Variablen verwechselt werden sollten, sind einfach zu codieren und reduzieren die Komplexität, wie weiter unten auf dieser Seite beschrieben. Sie haben jedoch bestimmte Einschränkungen.

Für ein Szenario, in dem eine Integration mit kleinen Datensätzen arbeitet — typisch für Webdienstanfragen und -antworten oder kleine Dateien mit einigen hundert Datensätzen — empfehlen wir die Verwendung globaler Variablen.

Wenn der Datensatz im Megabyte-Bereich liegt, wird der Endpunkt der globalen Variablen langsamer als der entsprechende Endpunkt der temporären Speicherung. Dies beginnt zu geschehen, wenn die Daten der globalen Variablen über 4 MB groß werden.

Wenn der Datensatz im größeren Multi-Megabyte-Bereich liegt, besteht das Risiko einer Datenabschneidung. Wir empfehlen eine Grenze von 50 MB, um konservativ zu sein und das Risiko einer Abschneidung zu vermeiden.

Die Verwendung von Endpunkten globaler Variablen in asynchronen Operationen ist ein Anwendungsfall, der besondere Überlegungen erfordert. Es gibt eine Grenze von 7 KB für die Größe eines Datensatzes, der in einem Endpunkt globaler Variablen verwendet wird, der in einer asynchronen Operation verwendet wird. In diesem Szenario kann das Überschreiten dieser Grenze zu einer Abschneidung führen. Siehe die RunOperation() Funktion für eine Beschreibung des Aufrufs einer asynchronen Operation.

Temporärer Speicher

Größere Datensätze, wie sie in ETL-Szenarien mit Tausenden von Datensätzen verwendet werden, sollten mit temporärem Speicher behandelt werden.

Im Gegensatz zu globalen Variablen gibt es bei der Verwendung von temporärem Speicher keine Leistungseinbußen oder Trunkierungen, selbst bei sehr großen Datensätzen. Die Verwendung von temporärem Speicher kann jedoch zusätzliche Skripting erfordern. Durch die Verwendung von temporärem Speicher können die Wiederverwendbarkeit und die Einfachheit globaler Variablen, wie weiter unten auf dieser Seite beschrieben, nicht genutzt werden.

Beachten Sie, dass Cloud-Agenten, die Version 10.10 oder höher haben, eine Dateigrößenbeschränkung für temporären Speicher von 50 GB pro Datei haben. Wer temporäre Dateien größer als 50 GB erstellen muss, benötigt einen privaten Agenten.

Die Verwendung einer globalen Variablen kann die Wiederverwendbarkeit erhöhen und die Komplexität reduzieren

Die Verwendung einer globalen Variablen für kleine Datensätze kann die Wiederverwendbarkeit erhöhen und die Komplexität reduzieren. Zum Beispiel, wenn verkettete Operationen erstellt werden, kann jede Operation Quellen und Ziele haben. Anstatt individuelle Quell- oder Zielkombinationen für jede Operation zu erstellen, ist es einfach, eine gemeinsame globale Ziel- und Quellevariable zu verwenden (im folgenden Beispiel in Rot hervorgehoben):

attachment

Um die Wiederverwendbarkeit und Standardisierung zu erhöhen, können Sie ein wiederverwendbares Skript erstellen, das den Inhalt der globalen Variablen protokolliert (das Skript log.memory im obigen Beispiel, in Grün hervorgehoben). Dieser Ansatz kann auch mit temporärem Speicher erreicht werden, erfordert jedoch zusätzliches Skripting, um den Pfad und den Dateinamen zu initialisieren.

Bei der Verwendung einer globalen Variablen ist ihr Geltungsbereich die Kette — der Thread — von Operationen. Daher sind die Werte globaler Variablen einzigartig für einen bestimmten Thread und werden zerstört, wenn der Thread beendet ist. Dies ist nicht der Fall bei temporärem Speicher; daher ist mehr Aufwand erforderlich, um die Einzigartigkeit sicherzustellen. Die beste Praxis besteht darin, zu Beginn einer Operationkette eine GUID zu initialisieren und diese GUID dann an jeden der temporären Dateinamen in der Kette weiterzugeben, wie in Daten für die spätere Verarbeitung mit temporärem Speicher speichern beschrieben.

Beim Durchführen von Unit-Tests für Operationen ist es hilfreich, Testdaten zu laden. Die Verwendung einer globalen Variablen als Quelle oder Ziel macht dies einfach: Sie fügen ein Pre-Operation-Skript hinzu, um die Testdaten in ein Ziel zu schreiben:

  $memory = "a,b,c";

Im Gegensatz dazu sieht das Schreiben von Daten in eine temporäre Speicherdatei so aus:

  WriteFile("<TAG>Targets/Data</TAG>", "a,b,c");

  FlushFile("<TAG>Targets/Data</TAG>");

Ebenso ist das Lesen von Daten mit globalen Variablen einfacher:

  myLocalVar= $memory;

Im Gegensatz dazu sieht das Lesen von Daten aus dem temporären Speicher so aus:

  myLocalVar = ReadFile("<TAG>Sources/Data</TAG>");

Zusammenfassend lässt sich sagen, dass die Verwendung globaler Variablen zum Lesen, Schreiben und Protokollieren von Eingaben und Ausgaben von Operationen unkompliziert ist, jedoch große Vorsicht geboten ist, um sicherzustellen, dass die Daten angemessen dimensioniert sind.