In manchen Fällen ist es nützlich, wenn gespeicherte Daten eine einzelne Nachricht, die einen Fluss durchläuft, überdauern. Dies kann durch Speichern der Daten in einer Datenbank erreicht werden. Mit dieser Methode ist eine langfristige Persistenz und Transaktionalität gewährleistet, jedoch ist der Zugriff (insbesondere der Schreibzugriff) langsam.
Alternativ hierzu können Sie entsprechende "langlebige" ESQL-Datentypen verwenden, um Daten für eine gewisse Zeit in einem Speichercache zwischenzuspeichern. Diese Methode ermöglicht einen schnelleren Zugriff auf die Daten als über eine Datenbank, jedoch muss eine kürzere Persistenz und der Wegfall der Transaktionalität in Kauf genommen werden.
Langlebige Variablen werden unter Verwendung des Schlüsselworts SHARED in der Anweisung DECLARE erstellt.
Das Beispielprogramm 'Message Routing' veranschaulicht die Definition gemeinsamer Variablen unter Verwendung der DECLARE-Anweisung. Hier erfahren Sie, wie Sie Route-Informationen in einer Datenbank speichern und wie Sie mit gemeinsamen Variablen die gespeicherte Datenbanktabelle im Nachrichtenfluss speichern, um die Leistung zu verbessern.
Langlebige Datentypen haben eine längere Laufzeit und überdauern eine einzelne Nachricht, die durch einen Knoten gesendet wird. Sie werden von Threads gemeinsam genutzt und haben die Lebensdauer eines Nachrichtenflusses (entspricht streng genommen dem Zeitraum zwischen Änderungen an der Konfiguration eines Nachrichtenflusses). Eine Beschreibung hierzu finden Sie in der folgenden Tabelle:
Geltungsbereich | Lebensdauer | Gemeinsam | |
---|---|---|---|
Variablen mit kurzer Lebensdauer | |||
Schema & Module | Knoten | Thread in einem Knoten | Überhaupt nicht |
Routine Local | Knoten | Thread in einer Routine | Überhaupt nicht |
Block Local | Knoten | Thread in einem Block | Überhaupt nicht |
Variablen mit langer Lebensdauer | |||
Node Shared | Knoten | Lebensdauer des Knotens | Alle Threads in einem Nachrichtenfluss |
Flow Shared | Fluss | Lebensdauer des Knotens | Alle Threads in einem Nachrichtenfluss |
Diese Daten werden beispielsweise in einem Fluss verwendet, in dem die Datentabellen für den Fluss schreibgeschützt sind. Obwohl die Tabellendaten nicht statisch sind, werden Sie vom Fluss nicht geändert, und Tausende von Nachrichten durchlaufen den Fluss, bevor die Tabellendaten geändert werden.
Ein Beispiel hierfür ist eine Tabelle mit den Kreditkartentransaktionen an einem bestimmten Tag. Die Tabelle wird jeden Tag erstellt und die jeweiligen Tagesnachrichten werden für die Tabelle ausgeführt. Anschließend wird der Fluss gestoppt, die Tabelle aktualisiert und die Nachrichten des nächsten Tages werden ausgeführt. Es ist sehr wahrscheinlich, dass solche Flüsse einen besseren Durchsatz aufzeigen, wenn die Tabellendaten zwischengespeichert und nicht für jede Nachricht aus einer Datenbank gelesen würden.
Eine andere Verwendungsmöglichkeit dieser Datentypen ist die Akkumulation und Integration von Daten aus mehreren Nachrichten.