存続期間の長い変数

フローを通過する単一のメッセージの存続期間より長い期間に渡ってデータを保管することが望ましい場合があります。その方法の 1 つとして、データベースにデータを保管するというものがあります。この方法は、長期の持続性とトランザクション特性の点では優れていますが、アクセス (特に書き込みアクセス) は低速になります。

代わりに適切な「存続期間の長い」ESQL データ・タイプを使用し、一定期間に渡ってデータをキャッシュに入れることもできます。これならデータベースを使った場合よりもアクセスがずっと高速になりますが、持続性が短くなり、トランザクション特性がなくなるという犠牲が伴います。

存続期間の長い変数を作成するには、DECLARE ステートメントで SHARED キーワードを使用します。

存続期間の長いデータ・タイプは長期に渡って存続し、ノードを通り抜ける単一のメッセージの存続時間を上回ります。以下の表で説明されているように、このタイプは複数のスレッドの間で共用され、メッセージ・フローの存続期間 (厳密に言えば、メッセージ・フローへの構成変更から次の構成変更までの間) 存在します。

  有効範囲 存続期間 共用
存続期間の短い変数
スキーマおよびモジュール ノード ノード内のスレッド なし
ルーチンのローカル ノード ルーチン内のスレッド なし
ブロックのローカル ノード ブロック内のスレッド なし
存続期間の長い変数
ノード共用 ノード ノードの存続期間 フローのすべてのスレッド
フロー共用 フロー フローの存続期間 フローのすべてのスレッド
存続期間の長い ESQL データ・タイプの特徴は以下のとおりです。

これらのデータ・タイプの典型的な使用法として、データ表がフローに対しては「読み取り専用」である場合に、そのフローの中でこうしたデータ・タイプを使用するというものがあります。表データは実際には静的ではありませんが、フローがこれを変更することはありません。表データに何らかの変更が加えられるまでの間に、何千ものメッセージがフローの中を移動します。

一例として、1 日のクレジット・カードの取り引きが入った表があります。この表は毎日作成され、その日のメッセージはこの表に対して実行されます。それからフローが停止し、表が更新され、次の日のメッセージが実行されます。この種のフローの場合、メッセージごとにデータベースから読み取りを行うよりも、表データをキャッシュに入れた方が、ほぼ確実にパフォーマンス向上が見込めます。

これらのデータ・タイプの別の使用法として、複数のメッセージからのデータの集計と統合があります。

関連概念
ESQL ノード
ESQL 変数
ユーザー定義プロパティー
関連資料
DECLARE ステートメント
ESQL ROW データ・タイプ
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック
Copyright IBM Corporation 1999, 2005 Last updated: 11/07/2005
ak35120_