Zum Inhalt springen

Chunking im Jitterbit Design Studio

Einführung

Die Mehrzweckfunktion „chunking“ von Jitterbit teilt die Quelldaten basierend auf der konfigurierten Chunkgröße in mehrere Chunks auf. Die verwendete Chunkgrößeneinstellung ist die Anzahl der Quelldatensätze (Knoten) pro Chunk. Die Transformation wird dann für jeden Chunk separat durchgeführt, wobei jeder Quellchunk einen Zielchunk erzeugt. Die resultierenden Zielchunks werden kombiniert, um das endgültige Ziel zu erzeugen.

Beachten Sie, dass LDAP Quellen nicht in Chunks unterteilt werden können und die chunking nur verwendet werden kann, wenn die Datensätze unabhängig sind.

Warnung

Die Verwendung von chunking beeinflusst das Verhalten globaler und Projektvariablen. Siehe den Abschnitt „Überlegungen“ unten für Einzelheiten.

Vorteile des chunking

API Einschränkungen

Viele Webservice-APIs (SOAP/REST) haben Größenbeschränkungen. Beispielsweise eine Salesforce.com Upsert akzeptiert nur 200 Datensätze pro Aufruf. In einem solchen Fall würden Sie eine Operation so konfigurieren, dass sie eine Blockgröße von 200 verwendet. Die Quelle wird in Blöcke von 200 Datensätzen aufgeteilt, und jede Transformation ruft den Webdienst einmal mit den 200 Datensätzen auf. Dies wird wiederholt, bis alle Datensätze verarbeitet wurden. (Beachten Sie, dass Salesforce über ein Massen-Upsert verfügt, das Jitterbit mit seinem Massenverarbeitungsassistenten unterstützt, um die Verwendung von chunking zu vermeiden.)

Bei einer Operation zum Schreiben in eine Zieldatei mittels chunking werden die resultierenden Zieldateien zu einer einzigen Datei zusammengefasst.

Parallele Verarbeitung

Wenn Sie eine große Quelle und einen Computer mit mehreren CPUs haben, kann chunking verwendet werden, um die Quelle für die parallele Verarbeitung aufzuteilen. Da jeder Chunk isoliert verarbeitet wird, können Sie mit dieser Option mehrere Chunks parallel verarbeiten. Dies gilt nur, wenn die Quelldatensätze auf der Chunk-Knotenebene nicht voneinander abhängig sind. Webdienste können mithilfe von chunking parallel aufgerufen werden, was die Leistung verbessert. Es gibt jedoch Überlegungen, wie unten in Überlegungen zum chunking beschrieben.

Begrenzen Sie die Speichernutzung

In Fällen, in denen Streaming/ Charge Transformation nicht verwendet werden kann, können Sie chunking verwenden, damit die Transformation weniger Speicher verbraucht. Weitere Informationen zu Streaming und Charge Transformation finden Sie unter Stream- und Charge Transformations. Streaming/ Charge Transformation ist vorzuziehen, wenn das einzige Problem die Speichernutzung ist. Verwenden Sie in diesem Fall eine möglichst große Blockgröße und stellen Sie sicher, dass die Daten für jeden Block gut in den verfügbaren RAM passen.

Überlegungen zum chunking

Da chunking Multithreading auslösen kann (sofern die Verwendung von mehr als einem Thread konfiguriert ist), kann seine Verwendung das Verhalten von Variablen beeinflussen, die nicht von den Threads gemeinsam genutzt werden.

Globale und Projektvariablen werden zwischen den Instanzen der chunking getrennt. Obwohl Daten kombiniert werden, werden Änderungen an diesen Variablen nicht kombiniert. Nur Änderungen am ursprünglichen Thread bleiben am Ende der Transformation erhalten.

Beispiel: Wenn eine Operation- mit chunking und mehreren Threads - eine Transformation aufweist, die eine globale Variable ändert, ist der Wert der globalen Variable nach Abschluss der Operation der des ersten Threads. Alle Änderungen an der Variable in anderen Threads sind unabhängig und werden verworfen, wenn die Operation abgeschlossen ist.

Diese globalen Variablen werden an die anderen Threads als Wert und nicht als Referenz übergeben, wodurch sichergestellt wird, dass Änderungen an den Variablen nicht in anderen Threads oder Operationen widergespiegelt werden. Dies ist ähnlich wie bei RunOperation() Funktion im asynchronen Modus.

Chunking aktivieren

Da chunking für eine gesamte Operation konfiguriert ist, können Sie die gleiche Transformation je nach Operation entweder im Chunked- oder im Nicht-Chunked-Modus verwenden.

So aktivieren Sie chunking:

  • Erstellen Sie eine Operation und weisen Sie ihr eine Transformation zu.

  • Klicken Sie mit der rechten Maustaste auf die Operation und wählen Sie Optionen…

  • Aktivieren Sie das Kontrollkästchen Chunking aktivieren und geben Sie die Chunk-Größe ein.

  • Ihre Blockgröße hängt von Ihrem Anwendungsfall ab, wie oben unter Vorteile der chunking (beschrieben).

  • Geben Sie die Anzahl der Datensätze pro Datei ein. 0 bedeutet, dass sich alle Datensätze in einer Datei befinden.

  • Geben Sie im Feld Maximale Anzahl von Threads einen Wert größer als 1 ein, um die parallele Verarbeitung zu aktivieren. (Siehe oben Überlegungen zum chunking für die Konsequenzen der Verwendung von Must-Threading.)

  • Quelle und Ziel Chunk Knoten:

    • Für flache Quellen (und Ziele) müssen Sie keinen Chunk-Knoten angeben; er wird als „-flat-".

    • Für hierarchische Quellen müssen Sie einen Quell-Chunk-Knoten angeben.

    • Für hierarchische Ziele müssen Sie einen Ziel-Chunk-Knoten angeben.

    • Klicken Sie auf die Schaltfläche Auswählen…, um nach einem geeigneten Chunk-Knoten zu suchen. Der Chunk-Knoten ist der sich wiederholende Datensatz (oder Schleifenknoten), auf dem die Chunk-Größe basieren soll.

    • Wenn Sie nichts angeben, wird standardmäßig der höchste sich wiederholende Knoten verwendet.

Erweiterte Optionen

  • Wenn das Ziel eine Datenbank ist, werden die Zieldaten zunächst in mehrere Dateien geschrieben (eine pro Block). Diese Dateien werden dann zu einer Zieldatei kombiniert, die zum Einfügen/Aktualisieren an die Datenbank gesendet wird.

  • Wenn Sie das globale Datenelement festlegen jitterbit.target.db.commit_chunks auf 1 (oder true), wird jeder Block in die Datenbank übertragen, sobald er verfügbar ist. Dies kann die Leistung erheblich verbessern, wenn die Parallelverarbeitung aktiviert ist, da die Einfügungen/Aktualisierungen der Datenbank parallel ausgeführt werden.