存続期間の長い適切な ESQL データ・タイプを使用して、データをメモリーにキャッシュできます。
フローを通過する 1 つのメッセージの存続期間より長い期間に渡ってデータを保管しなければならない場合もあります。そのようなデータを保管する 1 つの方法は、データベースにデータを保管することです。データベースを使用する方法は、長期の持続性とトランザクション特性の点では優れていますが、アクセス (特に書き込みアクセス) は低速になります。
代わりに、適切な存続期間の長い ESQL データ・タイプを使用し、一定期間に渡ってデータのメモリー内キャッシュを提供できます。存続期間の長い ESQL データ・タイプを使用するならデータベースを使った場合よりもアクセスが高速になりますが、この速度の持続性が短くなり、トランザクション特性がなくなるという犠牲が伴います。
存続期間の長い変数を作成するには、DECLARE ステートメントで SHARED キーワードを使用します。詳細については、 DECLARE ステートメントを参照してください。
存続期間の長いデータ・タイプは長期に渡って存続し、ノードを通り抜ける単一のメッセージの存続時間を上回ります。以下の表で説明されているように、存続期間の長いデータ・タイプは複数のスレッドの間で共用され、メッセージ・フローの存続期間 (厳密に言えば、メッセージ・フローへの構成変更から次の構成変更までの間) 存在します。
有効範囲 | 存続期間 | 共用 | |
---|---|---|---|
存続期間の短い変数 | |||
スキーマおよびモジュール | ノード | ノード内のスレッド | なし |
ルーチンのローカル | ノード | ルーチン内のスレッド | なし |
ブロックのローカル | ノード | ブロック内のスレッド | なし |
存続期間の長い変数 | |||
ノード共用 | ノード | ノードの存続期間 | フローのすべてのスレッド |
フロー共用 | フロー | フローの存続期間 | フローのすべてのスレッド |
これらのデータ・タイプの典型的な使用法として、データ表がフローに対しては「読み取り専用」である場合に、そのフローの中でこうしたデータ・タイプを使用するというものがあります。表データは実際には静的ではありませんが、フローがこれを変更することはありません。表データに何らかの変更が加えられるまでの間に、何千ものメッセージがフローの中を移動します。