Globale Variable versus temporärer Speicher im Jitterbit Design Studio
Einführung
Zwei der am häufigsten vorinstallierten temporären Speichertypen in Harmony sind Globale Variablen und Temporärer Speicher. Bei der Auswahl des einen oder des anderen müssen mehrere Aspekte berücksichtigt werden.
Globale Variablen
Globale Variable Quellen und Ziele, nicht zu verwechseln mit Skripting globaler Variablen) sind einfach zu codieren und reduzieren die Komplexität, wie später auf dieser Seite beschrieben wird. Sie unterliegen jedoch bestimmten Einschränkungen.
Für ein Szenario, in dem eine Integration mit winzigen 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 globale Endpoint langsamer als der entsprechende temporäre Endpoint. Dies passiert, wenn die globalen Variablendaten eine Größe von über 4 MB erreichen.
Wenn der Datensatz mehrere Megabyte groß ist, besteht die Gefahr einer Datenkürzung. Wir empfehlen ein Limit von 50 MB, um vorsichtig zu sein und jedes Risiko einer Datenkürzung zu vermeiden.
Die Verwendung globaler Endpoints in asynchronen Vorgängen ist ein Anwendungsfall, der besondere Aufmerksamkeit erfordert. Die Größe eines Datensatzes, der in einem globalen Endpoint verwendet wird, der in einem asynchronen Operation verwendet wird, ist auf 7 KB begrenzt. In diesem Szenario kann das Überschreiten dieses Grenzwertes zu einer Kürzung führen. Weitere Informationen finden Sie unter RunOperation()
Funktion für eine Beschreibung des Aufrufs einer asynchronen Operation.
Zwischenspeicherung
Größere Datensätze, wie sie in ETL-Szenarien mit Tausenden von Datensätzen verwendet werden, sollten mithilfe des temporären Speichers verarbeitet werden.
Anders als bei globalen Variablen kommt es bei der Verwendung des temporären Speichers selbst bei sehr großen Datensätzen nicht zu Leistungseinbußen oder Abschneidungen. Die Verwendung des temporären Speichers kann jedoch zusätzliche Skripte erfordern. Durch die Verwendung des temporären Speichers können Sie die Wiederverwendung und Einfachheit globaler Variablen nicht nutzen, wie weiter unten auf dieser Seite beschrieben.
Beachten Sie, dass Cloud-Agenten mit Version 10.10 oder höher haben eine Dateigrößenbeschränkung für den temporären Speicher von 50 GB pro Datei. Wer temporäre Dateien mit mehr als 50 GB erstellen muss, benötigt einen privaten Agenten.
Die Verwendung einer globalen Variable kann die Wiederverwendung erhöhen und die Komplexität reduzieren
Die Verwendung einer globalen Variable für kleine Datensätze kann die Wiederverwendung erhöhen und die Komplexität reduzieren. Wenn Sie beispielsweise verkettete Operationen erstellen, kann jede Operation Quellen und Ziele haben. Anstatt für jede Operation einzelne Quell- oder Zielkombinationen zu erstellen, können Sie einfach eine gemeinsame globale Variable für Ziel und Quelle verwenden (im Beispiel unten rot umrandet):
Um die Wiederverwendbarkeit und Standardisierung zu erhöhen, können Sie ein wiederverwendbares Script erstellen, das den Inhalt der globalen Variable protokolliert (das Script log.memory im obigen Beispiel, grün umrandet). Dieser Ansatz kann auch mit temporärem Speicher erreicht werden, aber es sind zusätzliche Skripte erforderlich, um den Pfad und den Dateinamen zu initialisieren.
Bei Verwendung einer globalen Variable ist ihr Gültigkeitsbereich die Kette - der Thread - der Operationen. Daher sind globale Variablenwerte für einen bestimmten Thread eindeutig und werden vernichtet, wenn der Thread beendet ist. Dies ist bei temporärem Speicher nicht der Fall; daher ist mehr Handhabung erforderlich, um die Eindeutigkeit sicherzustellen. Die beste Vorgehensweise besteht darin, eine GUID zu Beginn einer Operation zu initialisieren und diese GUID dann an jeden der temporären Speicherdateinamen in der Kette zu übergeben, wie in Persistieren von Daten für die spätere Verarbeitung mithilfe von temporärem Speicher beschrieben.
Beim Durchführen von Operation ist es hilfreich, Testdaten zu laden. Die Verwendung einer globalen Variablenquelle oder eines globalen Variablenziels macht dies einfach: Sie fügen ein Pre-Operation Script hinzu, um die Testdaten in ein Ziel zu schreiben:
$memory = "a,b,c";
Das Schreiben von Daten in eine temporäre Speicherdatei sieht dagegen folgendermaßen 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;
So lesen Sie im Gegensatz dazu Daten aus dem temporären Speicher:
myLocalVar = ReadFile("<TAG>Sources/Data</TAG>");
Zusammenfassend lässt sich sagen, dass die Verwendung globaler Variablen zum Lesen, Schreiben und Protokollieren von Eingabe- und Ausgabevorgängen unkompliziert ist. Allerdings muss mit großer Sorgfalt darauf geachtet werden, dass die Daten die richtige Größe haben.