(57)【要約】【課題】トランザクション処理スループットを高める技法を提供すること。【解決手段】メッセージ識別子およびセッション識別子を有するトランザクション・アイテムが入手される。そのトランザクション・アイテムは、他のトランザクション・アイテムが同一のセッション識別子を有しない、集約されたトランザクションのリスト内の最も古い集約されたトランザクションに追加される。実行判断基準を満足した、集約されたトランザクションのリスト内の最初の集約されたトランザクションが実行される。集約されたトランザクションがコミットしていないことの判定に応答して、集約されたトランザクションは、複数のより小さい集約されたトランザクションに分割され、各集約されたトランザクションのターゲット・サイズは、システム・スループットの測定値に基づいて調整される。【選択図】図１
2010537338.tif 000002
【特許請求の範囲】
【請求項１】
メッセージ識別子およびセッション識別子を有するトランザクション・アイテムを入手することと、
他のトランザクション・アイテムが同一のセッション識別子を有しない集約されたトランザクションのリスト内の最も古い集約されたトランザクションに前記トランザクション・アイテムを追加することと、
実行判断基準を満足した集約されたトランザクションの前記リスト内の最初の集約されたトランザクションを実行することと、
前記集約されたトランザクションがコミットしていないことの判定に応答して、前記集約されたトランザクションを複数のより小さい集約されたトランザクションに分解することと、
システム・スループットの測定値に基づいて各集約されたトランザクションのターゲット・サイズを調整することと
を含む、コンピュータ実施される方法。
【請求項２】
前記複数のより小さい集約されたトランザクションを集約されたトランザクションの前記リストの前面に置くことと、
前記複数のより小さい集約されたトランザクションに既に前記実行判断基準を満足したものとしてラベルを付けることと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記実行判断基準が、タイマの満了および前記集約されたトランザクションのサイズが所定のターゲット・サイズに達することのうちの少なくとも１つを含む、請求項１または２に記載の方法。
【請求項４】
前記集約されたトランザクションを分解することが、
エラー原因が入手可能であることを判定することと、
各新しい集約されたトランザクションが前記エラー原因内のメッセージ識別子を有する多くとも１つのトランザクション・アイテムを含むように、前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解することと
をさらに含む、請求項１、２、または３に記載の方法。
【請求項５】
前記集約されたトランザクションを分解することが
エラー原因が入手可能でないことを判定することと、
前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解することと
をさらに含む、請求項１、２、または３に記載の方法。
【請求項６】
前記集約されたトランザクションを実行することが、前記集約されたトランザクションをデータフロー実行プロセスに送ることを含む、請求項１ないし５のいずれかに記載の方法。
【請求項７】
着信トランザクション・アイテムをパーティションに分割することであって、同一セッション識別子を有するトランザクション・アイテムが同一パーティション内にあること、
をさらに含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
前記集約されたトランザクションを構成する個々のトランザクション・アイテムをデータフロー実行プロセスにパイプライン化すること
をさらに含む、請求項１ないし７のいずれかに記載の方法。
【請求項９】
前記集約されたトランザクションがコミットしたことの判定に応答して、システム・スループットの測定値に基づいて各集約されたトランザクションの前記ターゲット・サイズを調整すること
をさらに含む、請求項１ないし８のいずれかに記載の方法。
【請求項１０】
コンピュータ上で実行された時に前記コンピュータに、
メッセージ識別子およびセッション識別子を有するトランザクション・アイテムを入手させ、
他のトランザクション・アイテムが同一のセッション識別子を有しない集約されたトランザクションのリスト内の最も古い集約されたトランザクションに前記トランザクション・アイテムを追加させ、
実行判断基準を満足した集約されたトランザクションの前記リスト内の最初の集約されたトランザクションを実行させ、
前記集約されたトランザクションがコミットしていないことの判定に応答して、前記集約されたトランザクションを複数のより小さい集約されたトランザクションに分解させ、
システム・スループットの測定値に基づいて各集約されたトランザクションのターゲット・サイズを調整させる
コンピュータ可読プログラムを含むコンピュータ使用可能媒体を含むコンピュータ・プログラム製品。
【請求項１１】
前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
前記複数のより小さい集約されたトランザクションを集約されたトランザクションの前記リストの前面に置かせ、
前記複数のより小さい集約されたトランザクションに既に前記実行判断基準を満足したものとしてラベルを付けさせる
請求項１０に記載のコンピュータ・プログラム製品。
【請求項１２】
前記実行判断基準が、タイマの満了および前記集約されたトランザクションのサイズが所定のターゲット・サイズに達することのうちの少なくとも１つを含む、請求項１０または１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記集約されたトランザクションを分解する時に、前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
エラー原因が入手可能であることを判定させ、
各新しい集約されたトランザクションが前記エラー原因内のメッセージ識別子を有する多くとも１つのトランザクション・アイテムを含むように、前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解させる
請求項１０、１１、または１２に記載のコンピュータ・プログラム製品。
【請求項１４】
前記集約されたトランザクションを分解する時に、前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
エラー原因が入手可能でないことを判定させ、
前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解させる
請求項１０、１１、または１２に記載のコンピュータ・プログラム製品。
【請求項１５】
前記集約されたトランザクションを実行することが、前記集約されたトランザクションをデータフロー実行プロセスに送ることを含む、請求項１０ないし１４のいずれかに記載のコンピュータ・プログラム製品。
【請求項１６】
前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
着信トランザクション・アイテムをパーティションに分割させ、同一セッション識別子を有するトランザクション・アイテムが同一パーティション内にある
請求項１０ないし１５のいずれかに記載のコンピュータ・プログラム製品。
【請求項１７】
前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
前記集約されたトランザクションを構成する個々のトランザクション・アイテムをデータフロー実行プロセスにパイプライン化させる
請求項１０ないし１６のいずれかに記載のコンピュータ・プログラム製品。
【請求項１８】
前記コンピュータ可読プログラムが、コンピュータ上で実行される時に、前記コンピュータに、
前記集約されたトランザクションがコミットしたことの判定に応答して、システム・スループットの測定値に基づいて各集約されたトランザクションの前記ターゲット・サイズを調整させる
請求項１０ないし１７のいずれかに記載のコンピュータ・プログラム製品。
【請求項１９】
動作を実行できるロジックであって、前記動作が
メッセージ識別子およびセッション識別子を有するトランザクション・アイテムを入手することと、
他のトランザクション・アイテムが同一のセッション識別子を有しない集約されたトランザクションのリスト内の最も古い集約されたトランザクションに前記トランザクション・アイテムを追加することと、
実行判断基準を満足した集約されたトランザクションの前記リスト内の最初の集約されたトランザクションを実行することと、
前記集約されたトランザクションがコミットしていないことの判定に応答して、前記集約されたトランザクションを複数のより小さい集約されたトランザクションに分解することと、
システム・スループットの測定値に基づいて各集約されたトランザクションのターゲット・サイズを調整することと
を含む、ロジック
を含むシステム。
【請求項２０】
前記動作が
前記複数のより小さい集約されたトランザクションを集約されたトランザクションの前記リストの前面に置くことと、
前記複数のより小さい集約されたトランザクションに既に前記実行判断基準を満足したものとしてラベルを付けることと
をさらに含む、請求項１９に記載のシステム。
【請求項２１】
前記実行判断基準が、タイマの満了および前記集約されたトランザクションのサイズが所定のターゲット・サイズに達することのうちの少なくとも１つを含む、請求項１９または２０に記載のシステム。
【請求項２２】
前記集約されたトランザクションを分解する動作が、
エラー原因が入手可能であることを判定することと、
各新しい集約されたトランザクションが前記エラー原因内のメッセージ識別子を有する多くとも１つのトランザクション・アイテムを含むように、前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解することと
をさらに含む、請求項１９、２０、または２１に記載のシステム。
【請求項２３】
前記集約されたトランザクションを分解する動作が
エラー原因が入手可能でないことを判定することと、
前記集約されたトランザクションを前記複数のより小さい集約されたトランザクションに分解することと
をさらに含む、請求項１９、２０、または２１に記載のシステム。
【請求項２４】
前記集約されたトランザクションを実行することが、前記集約されたトランザクションをデータフロー実行プロセスに送ることを含む、請求項１９ないし２３のいずれかに記載のシステム。
【請求項２５】
前記動作が、
着信トランザクション・アイテムをパーティションに分割することであって、同一セッション識別子を有するトランザクション・アイテムが同一パーティション内にあること、  をさらに含む、請求項１９ないし２４のいずれかに記載のシステム。
【請求項２６】
前記動作が、
前記集約されたトランザクションを構成する個々のトランザクション・アイテムをデータフロー実行プロセスにパイプライン化すること
をさらに含む、請求項１９ないし２５のいずれかに記載のシステム。
【請求項２７】
前記動作が、
前記集約されたトランザクションがコミットしたことの判定に応答して、システム・スループットの測定値に基づいて各集約されたトランザクションの前記ターゲット・サイズを調整すること
をさらに含む、請求項１９ないし２６のいずれかに記載のシステム。
【請求項２８】
プログラムがコンピュータ上で実行される時に請求項１ないし９のいずれかに記載の方法を実行するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、トランザクション処理スループットを高めるための自動化されたトランザクション集約に関する。
【背景技術】
【０００２】
フローベース・プログラミング（Ｆｌｏｗ−ｂａｓｅｄ  Ｐｒｏｇｒａｍｍｉｎｇ、ＦＢＰ）とも呼ばれるデータフロー・プログラミングは、大量バッチ・データ処理の表現を簡単かつ有効にするのに使用されてきた技法である。簡単なのは、ロジックが自然に取り込まれるからである。有効なのは、並列処理とパイプライン化並列処理との両方を使用してスループットを高めることができるからである。しかし、これら同じフローベース・プログラミング技法が、オンライン処理アプリケーションおよびトランザクション処理アプリケーションの表現の手段としてはあまりよく認識されていない。
【０００３】
フローベース・トランザクション処理（Ｆｌｏｗ−Ｂａｓｅｄ  Ｔｒａｎｓａｃｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ、ＦＢＴＰ）は、高パフォーマンストランザクション処理システムを作成するのに使用されるフローベースのアプリケーション開発技法を記述するものである。顧客は、トランザクション処理を包含するためにＦＢＰシステム（たとえば、インターナショナル・ビジネス・マシーンズ・コーポレーション社のＤａｔａＳｔａｇｅ（登録商標）製品）の機能性を拡張することを望む。顧客は、結果のシステムの高パフォーマンスおよび共通のグラフィカル開発ツーリングを使用してトランザクション処理と大量バッチ・データ処理との間でビジネス・ロジックを共用する能力の両方から価値を導出する。
【０００４】
トランザクションのコンポジションを実行する既存システムがある。Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｔｒａｎｓａｃｔｉｏｎ  Ｓｅｒｖｅｒ（ＭＴＳ）とＪａｖａ（登録商標）２  Ｐｌａｔｆｏｒｍ  Ｅｎｔｅｒｐｒｉｓｅ  Ｅｄｉｔｉｏｎ（Ｊ２ＥＥ）アプリケーション・サーバとの両方が、宣言的トランザクション・コンポジションを特徴とする（ＪａｖａおよびすべてのＪａｖａベースの商標およびロゴは、米国、他国、またはその両方でのＳｕｎ  Ｍｉｃｒｏｓｙｓｔｅｍｓ，Ｉｎｃ．社の商標であり、Ｍｉｃｒｏｓｏｆｔは、米国、他国、またはその両方でのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎ社の商標である）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２００５／００８６３６０号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、これらのシステムは、データフロー・ネットワークとして表されてはいないので、付随するデータ分離プロパティの恩恵を受けることができず、したがって、これらが達成できるトランザクション集約のスケールは、より低く、これによって、スループットを高める能力が制限される。
【課題を解決するための手段】
【０００７】
提供されるのは、トランザクション処理スループットを高める方法、コンピュータ・プログラム製品、コンピュータ・プログラム、およびシステムである。メッセージ識別子およびセッション識別子を有するトランザクション・アイテムが入手される。そのトランザクション・アイテムは、他のトランザクション・アイテムが同一のセッション識別子を有しない、集約されたトランザクションのリスト内の最も古い集約されたトランザクションに追加される。実行判断基準を満足した、集約されたトランザクションのリスト内の最初の集約されたトランザクションが実行される。集約されたトランザクションがコミットしていないことの判定に応答して、集約されたトランザクションは、複数のより小さい集約されたトランザクションに分割され、各集約されたトランザクションのターゲット・サイズは、システム・スループットの測定値に基づいて調整される。
【０００８】
本発明の好ましい実施形態を、例としてのみ、添付図面を参照してこれから説明する（同種の参照番号は、全体を通じて対応する部分を表す）。
【図面の簡単な説明】
【０００９】
【図１】ある種の実施形態によるコンピューティング・デバイスの詳細を示す図である。
【図２】ある種の実施形態によるトランザクション・プロセスを伴うデータフロー図である。
【図３】ある種の実施形態によるコミットおよびエラーの処理を伴うデータフロー図である。
【図４】ある種の実施形態によるポイズン（有害）・キュー（ｐｏｉｓｏｎ  ｑｕｅｕｅ）を伴うデータフロー図である。
【図５】ある種の実施形態によるトランザクション処理のフェーズのリストを示す図である。
【図６】ある種の実施形態による集約されたトランザクションの処理を伴うデータフロー図である。
【図７】ある種の実施形態によるパイプラインセーフ概念を伴うデータフロー図である。
【図８】ある種の実施形態による並列性の使用を伴う図である。
【図９】ある種の実施形態によるロジックを示す図である。
【図１０】ある種の実施形態によるロジックを示す図である。
【図１１】ある種の実施形態によるロジックを示す図である。
【図１２】ある種の実施形態に従って使用できるシステム・アーキテクチャを示す図である。
【発明を実施するための形態】
【００１０】
次の説明では、本明細書の一部を形成し、本発明の複数の実施形態を示す添付図面を参照する。本発明の範囲から逸脱せずに、他の実施形態を利用でき、構造的変更および動作変更を行うことができることを理解されたい。
【００１１】
実施形態は、システムの振る舞いがそれでも正しいが、平均トランザクション・サイズをはるかにより大きくすることができる形で、個々のトランザクションをより大きいトランザクションに集約できるトランザクション処理システムを作成し、展開することを可能にする。これは、関連するトランザクション・リソース（たとえば、データベース、キューイング・システム、トランザクション・ファイル・システムなど）に対するはるかにより多数の変更にまたがってトランザクション調整のコストを償却することによって、総合システム・スループットを改善することができる。これらのコストは、分散トランザクション調整環境で特に高い可能性がある。
【００１２】
実施形態は、自動的な形でオーバヘッドを減らし、スループットが高まりつつある間にサイズを増やし、スループットが悪影響を受ける場合にサイズを自動的に減らす、トランザクションを集約する適応ロジックを提供する。
【００１３】
実施形態は、データフロー・ネットワークとしてまたは同等のデータフローベースのプログラミング言語を使用してトランザクション処理システムを表す。実施形態は、トランザクション集約が可能である時の判定を可能にするデータ分離プロパティの識別にも依存する。ある種の実施形態では、データ分離プロパティは、バッチスタイル・データフロー・システムでの並列性の可能性を表すのに使用されるものと同一とすることができる。さらに、データフロー・ネットワークの集合指向の性質は、自動化された集約が働くことを可能にする。
【００１４】
図１に、ある種の実施形態によるコンピューティング・デバイスの詳細を示す。クライアント・コンピュータ１００は、通信経路１９０を介してサーバ・コンピュータ１２０に接続される。クライアント・コンピュータ１００は、１つまたは複数のクライアント・アプリケーション１１０を含む。
【００１５】
サーバ・コンピュータ１２０は、トランザクション集約調整（ＴＡＡ）システム１３０、調整データ１４０（たとえば、システム・スループットの測定値）、集約されたトランザクションのリスト１５０、および１つまたは複数のサーバ・アプリケーション１６０を含む。サーバ・コンピュータ１２０は、クライアント・コンピュータ１００にデータ・ストア１７０内のデータへのアクセスを与える。
【００１６】
クライアント・コンピュータ１００およびサーバ・コンピュータ１２０は、サーバ、メインフレーム、ワークステーション、パーソナル・コンピュータ、ハンドヘルド・コンピュータ、ラップトップ・テレフォニ・デバイス、ネットワーク・アプライアンス、コンピュータ・クラスタ、その他など、当技術分野で既知のすべてのコンピューティング・デバイスを含むことができる。
【００１７】
通信経路１９０は、ピアツーピア・ネットワーク、スポーク・アンド・ハブ・ネットワーク、ストレージ・エリア・ネットワーク（ＳＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、インターネット、イントラネット、その他など、すべてのタイプのネットワークを含むことができる。
【００１８】
データ・ストア１７０は、直接アクセス・ストレージ・デバイス（ＤＡＳＤ）、Ｊｕｓｔ  ａ  Ｂｕｎｃｈ  ｏｆ  Ｄｉｓｋｓ（ＪＢＯＤ）、Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋｓ（ＲＡＩＤ）、仮想化デバイスその他など、数多くのストレージ・デバイスを含むことができる。
【００１９】
プロセスを、データフロー図として記述することができる。プロセスを、データフロー図、オペレータ、およびアークというコンポーネントから構成することができる。データフロー図は、グラフの頂点／ボックスがオペレータと呼ばれ、アークがデータの有向フローを記述する有向グラフとして説明することができる。データフロー図は、さまざまなデータ・ソースから異なるオペレータを介してさまざまなデータ・ターゲットへのデータ・フローとしてデータを記述する。データフロー図は、データフロー・プログラミング言語から描くか作成することができる。オペレータは、外部リソースからデータを読み取り、外部リソースにデータを書き込み、かつ／またはそれを行っている間にデータ変換を適用することができる。一般に、オペレータは、すべての着信アークからのデータを消費することができ、すべての発信アーク上でデータを作ることができる。通常のデータフロー・プロセス−オーサリング・ツールでは、多数のオペレータが、一般的なデータ・アクセスおよび変換を提供するために組込みオペレータとして提供され、他のオペレータは、ユーザによって作成され、システムに簡単に統合され得る。アークは、２つの接続されたオペレータの間のデータの流れを表す。アークは、先入れ先出し（ＦＩＦＯ）キューとして振る舞う。すなわち、あるアーク上のデータ・アイテムは、互いに追い越すことができない。これらのデータ・アイテムは、それが入った順序でアークから出る。
【００２０】
継続的プロセスは、継続的データ・ソース（すなわち、継続的にデータを供給するデータ・ソース）から読み取り、入力データが使用可能になる時に入力データの対応する結果データを生成するプロセスと説明することができる。
【００２１】
トランザクション・プロセスは、そのデータ・ソースとしてトランザクション・リソースから読み取り、そのターゲットとしてトランザクション・データ・リソースに書き込む継続的プロセスである。これの通常の事例は、メッセージ・キューから読み取ることおよび１つまたは複数のデータベース・システム内の１つまたは複数のデータベース・テーブルに書き込むこと、ならびに出力メッセージ・キューおよびトランザクション・ファイル・システムに書き込むことである。
【００２２】
説明を簡単にするために、トランザクション・プロセスが単一の入力オペレータを有すると仮定する。入力としての複数のオペレータを、単一フィードに事前に合併できることに留意されたい。
【００２３】
図２に、ある種の実施形態によるトランザクション・プロセスのデータフロー図２００を示す。図２では、メッセージ・キュー・ゲット・メソッド（ＭＱ  ｇｅｔ）が、メッセージ・キューからメッセージを取り出す。ｌｏｏｋｕｐは、テーブル内のルックアップを実行する。変換（ｘｆｏｒｍ）は、データを変換する。関係データベース管理システム（ＲＤＢＭＳ）のｉｎｓｅｒｔ、ｕｐｄａｔｅ、およびｄｅｌｅｔｅは、テーブルに対してこれらのアクションを実行する。メッセージ・キュー・プット・メソッド（ＭＱ  ｐｕｔ）は、メッセージをメッセージ・キューに書き込む。
【００２４】
入力から読み取られた各データ・アイテムを、トランザクション・アイテムと呼ぶ。各トランザクション・アイテムは、セッション識別子（ＳＩＤ）ならびにトランザクションの内容を記述するのに使用されるすべての他のデータを有する。２つのトランザクション・アイテムが同一のＳＩＤを持っている時に、これは、それらが別々のトランザクションで処理されなければならず、これらのトランザクションが、トランザクション・アイテムの到着の順序で実行されなければならないことを意味する。各トランザクション・アイテムは、同一のＳＩＤを有するすべてのトランザクションに一意のメッセージ識別子（ＭＩＤ）をも持つ。異なるＳＩＤ値を有する２つのトランザクション・アイテムを、同一トランザクションの一部または別々のトランザクションの一部として一緒に処理することができ、この処理の順序は、問題ではない。
【００２５】
ある種の実施形態では、ＳＩＤは、異なるＳＩＤを有するすべての２つのメッセージを並列に処理できる形で入力メッセージに関連付けられたトークンである。実際には、これは、並列に処理できないメッセージのセットを識別することと、同一セット内のすべてのメッセージに同一のＳＩＤを関連付けることとによって達成される。ある種の実施形態では、ＳＩＤは、メッセージの一部である（たとえば、アカウント番号または顧客番号が、セッションを識別することができ、あるいは、ブラウザ・クッキー値を、インターネット・アプリケーション（たとえば、オンライン・ショッピング）のＳＩＤとすることができる）。
【００２６】
ある種の実施形態で、ＭＩＤは、１つのトランザクション実施の一部として他の入力メッセージと組み合わせて実行される場合であっても入力メッセージを一意に識別する、入力メッセージに関連付けられたトークンである。メッセージ・ペイロード内に自然なＭＩＤがない場合には、ＭＩＤを、入力キューへのメッセージの到着の順序に基づくカウンタから割り当てられる整数とすることができる。
【００２７】
ある種の実施形態では、メッセージ識別子は、ＳＩＤ内で一意であり、その結果、ＳＩＤ＋ＭＩＤは、一緒に、そのメッセージの一意ＩＤを形成するようになる。実施形態は、障害を扱うためにこの一意ＩＤを使用する。処理では、入力キューの１つの着信メッセージが、その処理中に処理フロー内で多数のレコードを作成する場合がある（たとえば、すべての勘定残高の表示）。６個のアカウントのそれぞれについて１つ程度のレコードが、１つの着信要求メッセージに起因して作成される場合がある。これらの６個のレコードは、データフロー図全体を移動し、さまざまなオペレータによって分離され、独立に処理され得る。これらのレコードのすべてが、着信要求メッセージと同一のＭＩＤおよびＳＩＤを持つ。したがって、これらのレコードのいずれかに関して何かが失敗する場合に、特定の着信メッセージを一意に識別するＳＩＤ＋ＭＩＤを介してそのメッセージに「責任」を負わせることができる。
【００２８】
実施形態は、入力メッセージ順序付け要件が全くない場合であってもシステムに適用可能である。単に理解の質を高めるために、単純な銀行ＡＴＭの例を本明細書で提供する（これが、ここでの説明のために非常に単純化された例であることに留意されたい。実際のＡＴＭネットワークは、これよりはるかに複雑である）。銀行ＡＴＭ機のネットワークがあると仮定する。各ＡＴＭ機の各人が、そのＡＴＭ機での彼らの個人セッションに関係があるメッセージを作成している。これらのメッセージは、順番に処理されなければならず、したがって、同一のＳＩＤを持たなければならない。しかし、多数のＡＴＭ機からのメッセージ・ストリームは、最終的にアプリケーションの入力キューに入る時にインターリーブされる。各ＡＴＭ機は、一時に１人の顧客だけにサービスできるので、実施形態は、ＡＴＭ機のＩＤをＳＩＤとして使用することができる。
【００２９】
図３に、ある種の実施形態によるコミットおよびエラーの処理を伴うデータフロー図３００を示す。トランザクション・プロセス中に、エラーが収集され、エラー原因文書が生成され、コミット・ブロックに転送される。コミット・ブロックでは、許容できないエラーがない場合には、トランザクション・プロセスがコミットする（すなわち、コミット・ブロックは、エラーがあるが、それでもコミットを行わなければならないと判定することができる）。
【００３０】
図４に、ある種の実施形態によるポイズン・キューを伴うデータフロー図４００を示す。トランザクション・プロセスは、関連するポイズン・キューまたはリジェクト・キュー（ｒｅｊｅｃｔ  ｑｕｅｕｅ）をも有する。ポイズン・キューは、ポイズン・トランザクション・アイテムが置かれるキューと説明することができる。ポイズン・トランザクション・アイテムとは、成功して処理することができないトランザクション・アイテムである。すなわち、そのトランザクション・アイテムを処理するための、「コミット」を含んで「コミット」までの、「ＭＱ  ｇｅｔ」の後に試みられるすべてのリソース・アクションが、エラーを伴って失敗するか、必ずコミットに失敗する（潜在的に、ある回数の繰り返された試みの後でさえ）。
【００３１】
図４では、トランザクション・フローは、所期の処理フローである主プランすなわち「プランＡ」および処理できないトランザクションをポイズン・キューまたはリジェクト・キューに置く代替案すなわち「プランＢ」からなる。
【００３２】
トランザクション・プロセスは、いかなるときも入力での処理可能な並行の別個のセッション識別子（ＳＩＤ）の個数に比例して可能な並列性を有する。各セッションのトランザクション・アイテムは、順次処理されるが、セッションにまたがって、並列性がある。これが、アプリケーション・サーバおよび他のトランザクション処理環境によって頻繁に示される並列性である。
【００３３】
ある種の実施形態では、パフォーマンスを、トランザクション粒度に対して使用可能な並列性をトレード・オフすることによって得ることができる。使用可能な十分に過度の並列性がある場合には、異なるセッションからのトランザクションを集約して、高パフォーマンス実行に十分な並列性を有しながら、オーバーヘッドを減らすことができる。
【００３４】
図５に、ある種の実施形態によるトランザクション処理のフェーズのリストを示す。トランザクション処理は、集約フェーズ５１０、計算フェーズ５１２、コミット・フェーズ５１４、エラー原因を伴うディスアグリケーション（分割）フェーズ５１６、およびエラー原因を伴わないディスアグリゲーション・フェーズ５１８を含む。
【００３５】
集約フェーズ５１０では、トランザクション・アイテムがキューなどのトランザクション・リソースから読み取られる時に、トランザクションを他のトランザクション・アイテムと共により大きいトランザクションに集約できるかどうかを判定するロジックが、開始される。
【００３６】
集約されたトランザクションのリストが、維持される。このリスト内の順序は、トランザクション集約が処理される順序である。着信トランザクション・アイテムは、まだ同一ＳＩＤを有するトランザクションを含まない最初の集約されたトランザクションに追加される。
【００３７】
図６に、ある種の実施形態による集約されたトランザクションの処理を伴うデータフロー図６００を示す。実行判断基準（たとえば、タイマの満了または集約されたトランザクションのサイズがターゲット・サイズに達するなど）が満足される時に、リストの最初の集約されたトランザクションが、除去され、計算フェーズ５１２内の処理のためにデータフローに送られる。集約されたトランザクションのデータ（すなわち、集約されたトランザクションを構成するトランザクション・アイテム）は、一度に１トランザクション・アイテムずつ、データフロー図に送られる。集約の最後のトランザクション・アイテムには、作業単位の終り（「ウェーブ」とも称する）マーカが続く。ウェーブ・マーカは、これがトランザクション境界であること、たとえば、これが図６のＲＤＢＭＳ  ＩｎｓｅｒｔおよびＲＤＢＭＳ  Ｄｅｌｅｔｅにコミットに進むべきであることのシグナルであるように、フェーズへのシグナルと説明することができる。したがって、ウェーブ・マーカを、計算においてそれが続く集約されたトランザクションの計算フェーズの終りをシグナリングするものとして説明することができる。
【００３８】
この集約フェーズ５１０での集約されたトランザクションの蓄積は、以前の集約されたトランザクションの計算フェーズ５１２と並列に継続され得る。
【００３９】
上で述べた実行判断基準は、タイマの満了（トランザクション実行待ち時間に上限を設けるため）および集約されたトランザクションのサイズがターゲット・サイズに達することを含むことができる。
【００４０】
集約されたトランザクションのターゲット・サイズは、適応的に選択される。システムのスループットは、処理される集約されたトランザクションごとに測定される。ターゲット・サイズは、トランザクション・スループットが増える限り、増やされる。トランザクション・スループットが減る時には、ターゲット・サイズが減らされる。ターゲット・サイズの幅が大きくなるのを避けるため、移動平均に基づきターゲット・サイズを調整する、ランダム・ノイズ・ファクタを追加する、等のさまざまな技法がある。実施形態は、そのような調整技法のすべてを包含する。
【００４１】
ある種の実施形態で、集約されたトランザクションのリストの最初のリスト・アイテムを引き止めておかない最適化がある。最初のリスト・アイテムは、集約されたトランザクションのリストに追加される必要がない（たとえば、ウェーブ・マーカが、すべてのリスト・アイテムが処理され、コミットされることを保証するので）で、フローに直接に送られ得る。ウェーブ・マーカが、プロセスのアークを介して流れ、終端オペレータが、その作業単位の計算を終了した時に、計算は、その集約されたトランザクションについて終了したと言われる。
【００４２】
ある種の実施形態で、同一ＳＩＤを有する複数のレコードは、下流のデータフロー処理が単一のプロセスで行われず、パイプライン化された処理を使用する可能性があると仮定されるので集約に置かれず、したがって、副作用が起きた際の順次一貫性の保証がない。下流のデータフロー処理が、順次一貫性（たとえば、唯一のプロセスなのでパイプラインがなく、唯一のデータベース接続がある）を提供する場合に、実施形態は、集約ロジックをそれ相応に変更する。具体的に言うと、実施形態は、データの整合性が順序処理によって固有に維持されるので、同一ＳＩＤを有する複数のレコードが１つの集約に置かれることを可能にするように集約ロジックを変更する。
【００４３】
図７に、ある種の実施形態によるパイプラインセーフ概念を伴うデータフロー図７００を示す。ある種の実施形態では、データフローが、それが更新もするリソースに対して参照（すなわち、ルックアップ）しない場合に、そのデータフローは、パイプラインセーフであると言われる。この状況では、実施形態は、同一ＳＩＤを有する複数のアイテムが到着順で処理される限り、同一ＳＩＤを有するこれらの複数のトランザクション・アイテムを、アプリケーションのセマンティクスに影響せずに集約されたトランザクションに集約することができる。さらに、実施形態は、集約されたトランザクションを構成する個々のトランザクション・アイテムをデータフロー実行プロセスにパイプライン化することができ、パフォーマンスを改善するためにパイプライン並列性の広範囲の使用を可能にする。さらに、実施形態は、最初の集約されたトランザクション・セットを蓄積する必要がない。そうではなく、この最初のセットは、仮想的に存在することができる。最初の集約されたトランザクション・セットについて識別された各アイテムを、フロー・グラフに直接に送ることができる。上で説明した「実行判断基準」が満足される時点で、実施形態は、作業ユニットの終りマーカをフロー・グラフに置くことができ、その直後の次の集約されたトランザクション・セットからのアイテムのパイプライン化を開始することができる。実施形態は、後続の集約されたトランザクションが、先行するトランザクションが完全にコミットされる（すなわち、後で説明するディスアグリゲーションによって作成されるものを含むすべてのトランザクションを含めて）まで、コミットしないことを保証する。
【００４４】
ある種の実施形態で、データフローがパイプラインセーフではない場合に、実施形態は（ａ）データフロー全体を通じて集約されたトランザクションのトランザクション・アイテムを１つずつ処理するが、計算フェーズ５１２の後のすべてのコミットを留保するか、（ｂ）集約されたトランザクションを分離し、その結果、同一ＳＩＤを有する２つのトランザクション・アイテムが、同一の集約されたトランザクション・セットに入らないようにする。集約されたトランザクション・セットは、１つずつ処理される（その最終コミットを含めて）ので、これは、プロセスのセマンティクスの維持を保証する。
【００４５】
ある種の実施形態で、パイプラインセーフは、たとえば、データフローがテーブルＹ内のアカウント番号Ｘをルックアップでき、その後、その結果を用いてテーブルＺを更新できることを意味する。テーブルは、互いに素であり、したがって、ルックアップと更新との間の依存関係はない。したがって、実施形態は、セマンティクスの変化を一切伴わずに要求をフローにパイプライン化することができる。フローのオペレータの間に任意の種類のバッファがある可能性があり、セマンティクスは、影響されない。ある種の実施形態では、すべてのルックアップが実行され、その後、すべての更新が実行される。ある種の実施形態では、ルックアップおよび更新が、インターリーブされる。
【００４６】
パイプラインセーフは、アカウント番号Ｘを持つものがパイプライン内にないことがわかっている限り、データフローが、テーブルＹ内のアカウント番号Ｘをルックアップでき、その後、アカウント番号Ｘのために特定の行でテーブルＹを更新できることをも意味する。この場合に、テーブルは、互いに素ではないが、行は、互いに素であることがわかっている。
【００４７】
パイプラインセーフでないとは、データフローが、テーブルＹ内のアカウント番号Ｘをルックアップでき、その後、ある結果を用いてテーブルＹを更新できるが、実施形態が、更新が後続レコードによる後続ルックアップ内でルックアップされるレコードに対するものであるかどうかを知ることができないことを意味する。ルックアップは、同一レコードに対するものであり、またはそれである可能性がある。この場合に、入力メッセージをデータフローにパイプライン化することは、安全ではない。というのは、更新およびルックアップがどのようにインターリーブされるかが未知であり、異なるインターリーブが異なるセマンティクスを作る可能性があるからである。たとえば、すべての入力メッセージが、同一のアカウント番号Ｘを持つと仮定されたい。すべてのルックアップが、まずテーブルＹで実行され、その後すべての更新が実行された場合、結果は、ルックアップおよび更新がインターリーブされる場合とは明らかに異なる可能性がある。
【００４８】
したがって、データフロー図およびそのオペレータのプロパティの分析を介して入手されるデータフローに関する知識を考慮して、実施形態は、実施態様での並列性／オーバーラップに関して積極的とすることができる。
【００４９】
計算フェーズ５１２で、データフローを介して集約されたトランザクションを処理する時に、個々のトランザクションは、オペレータのグラフを通って流れ、グラフを通る経路は、最終的に、作業単位の終りマーカによってトラバースされ、このマーカは、グラフが空であり、処理の終りが検出できることを保証するために、グラフを通って経路に従うように分割し、結び付く。このウェーブ特徴は、参照によってその全体を本明細書に組み込まれている２００５年４月２１日に公開された米国特許出願公開第２００５／００８６３６０号明細書に記載されている。
【００５０】
データフロー図で流れるすべてのデータ・アイテムは、その作成を引き起こしたオリジナル・トランザクションのセッション識別子（ＳＩＤ）およびメッセージ識別子を持ち、したがって、単一の着信トランザクション・アイテムが、データフロー図に、ある変換ロジックまたはターゲット・リソース宛の多数のデータ・アイテムを作成させる場合に、これらのデータ・アイテムのそれぞれは、そのレコードからのＳＩＤおよびＭＩＤをもつ。
【００５１】
保留中の集約されたトランザクションは、集約されたトランザクションの処理中にプロセスによって表される更新、挿入、削除、エンキュー（キューにいれる）、およびデキュー（キューから出す）などを含む。データフロー図が集約されたトランザクションの処理を完了した後に、実施形態は、保留中の集約されたトランザクションのコミットを試みる。
【００５２】
計算フェーズ中にエラーが検出される、たとえば、ＳＱＬデータベース動作が障害を発生するか、変換計算が０による除算を行う場合に、ＭＩＤが、エラーを引き起こしたデータ・アイテムから抽出される。複数のエラーが検出される場合には、エラーを引き起こしたトランザクション・アイテムのセットを表すＭＩＤのコレクションがある可能性がある。これらのＭＩＤは、エラー原因と呼ばれ、下で説明するディスアグリケーション・フェーズ５１６で使用される。計算フェーズを、少なくとも１つのエラーＭＩＤがエラー原因に現れた後に即座に終了することができる。代替案では、エラー原因ＭＩＤの完全なセットを収集することができ、あるいは、計算フェーズ５１２を、ある個数のＭＩＤがエラー原因内で見つかった後に即座に終了することができる。ここで、さまざまな判断を使用することができる。たとえば、エラーは、トランザクション（不良ＭＩＤ）のすべてまたは一部をディスアグリケーション・フェーズ５１６に向けさせることができる。
【００５３】
計算フェーズが終わった後に、エラー原因がない場合には、実施形態は、コミット・フェーズ５１４を実行する。エラー原因がある場合には、実施形態は、即座にディスアグリケーション・フェーズ５１６に進む。
【００５４】
コミットがある場合には、保留中の集約されたトランザクションが、コミットされる。コミットが成功する場合には、これによって、集約されたトランザクション内のすべてのトランザクションの処理が完了し、実施形態は、別の集約されたトランザクションを識別し、その処理を開始するために集約フェーズ５１０に戻る。
【００５５】
コミットが失敗する場合には、リソースに対するアクションのすべての副作用が、自動的にロール・バックされる（トランザクション・リソースに関して通常通りに）。
【００５６】
ある種の実施形態では、集約フェーズ５１０中に入力キューをブラウズし、更新動作の残りが成功である時に破壊的デキュー動作を実行することによって、トランザクションの開始を最後の可能な瞬間まで延期することが可能である。すなわち、実施形態は、コミット動作の直前に破壊的デキュー動作を実行する。これは、特定の集約粒度を前提として、トランザクション「オープン時間」をできる限り短く保つ。破壊的デキュー動作とは（破壊的読取りとも称する）、メッセージが読み取られるが削除されないブラウジングとは異なって、メッセージが読み取られ、キューから削除される動作である。
【００５７】
エラー原因を伴うディスアグリゲーション・フェーズ５１６では、識別されたエラー原因がある場合に、実施形態は、各新しいトランザクションがエラー原因内の多くとも１つのＭＩＤを有するトランザクション・アイテムだけを含むように、集約されたトランザクションを複数のより小さい集約されたトランザクションに分解する。ある種の実施形態では、違反するエラーを引き起こすトランザクション・アイテムが、それ自体の「集約された」トランザクションに分離され、この集約されたトランザクションのそれぞれは、正確に１つのトランザクション・アイテムを含む。次に、実施形態は、これらの新しい集約されたトランザクションが集約オペレータから最初に流れ出る集約されたトランザクションであるかのように、上で説明したものと同一の形でこれらの新しい集約されたトランザクションのそれぞれを処理する。
【００５８】
ある量のディスアグリゲーションの後に、エラー原因である個々のトランザクション・アイテムが、それぞれ単独の「集約された」トランザクションを構成する。この場合に、実施形態は、できる限り多くのディスアグリゲーションを行っており、トランザクション・アイテムは、それでも、障害を引き起こす。ある種の実施形態では、トランザクション・アイテムは、ある回数だけフロー内で再試行され、トランザクション・アイテムが、ある回数だけエラー原因に終わることがわかった後に、そのトランザクション・アイテムは、ポイズン・データとして拒否される。ポイズン・データ・トランザクションは、ポイズン・データ・キューに置かれ、ポイズン・キューへのエンキューと共に、着信キューからのそのトランザクションのデキューを含むトランザクションが、実行される。このトランザクションは、失敗してはならないが、このトランザクションが失敗する場合には、システムがダウンしていると判定される。
【００５９】
エラー原因を伴わないディスアグリゲーション・フェーズ５１８では、エラー原因がない場合に、システムは、一時的な問題または集約されたトランザクションが単に大きすぎるゆえのリソースの枯渇に起因して、保留中の集約されたトランザクションをコミットするのに失敗した可能性がある。この場合に、実施形態は、集約されたトランザクションを複数のより小さい集約されたトランザクションに分割する（たとえば、トランザクションを、半分に分割する、個々のトランザクション・アイテムに分解するなど）ことによってディスアグリゲートする。その後、実施形態は、これらの新しい集約されたトランザクションが、最初に集約オペレータから流れ出た集約されたトランザクションであるかのように、これらの新しい集約されたトランザクションのそれぞれを、上で説明したものと同一の形で処理する。コミットに失敗した集約されたトランザクションが１つのトランザクション・アイテムからなる場合には、実施形態は、その集約されたトランザクションをポイズン・データとして処理する。
【００６０】
ある種の実施形態では、トランザクション・アイテム用のポイズン・データ・キューを使用する時に、副トランザクションが使用可能である。このポイズン・キューは、異なるロジックを有する代替トランザクション処理データフロー図に供給することができる。この副グラフは、アイテムを異なって処理することを試み、リソースに対する異なるアクションをコミットすることを試みる。トランザクション・アイテムが、オリジナル処理フローに対するポイズンである場合であっても、トランザクション・アイテムを、それでも、副処理フローによって成功して処理することができる。副フローは、トランザクションを再集約することすらでき、そうでない場合に、基本的なトランザクション集約システムについて本明細書で説明するものと同一の技法を使用することができる。副フローは、拒否理由の性質に依存する場合がある。たとえば、無効な名前およびアドレス・データのために拒否されたＭＩＤを、洗浄し、１つの副フロー内で再処理することができ、無効な数値データのために拒否されたＭＩＤを、第２副フローでの修復のためにソースに送り返すことができる。ある種の実施形態では、それぞれが前のフロー（たとえば、オリジナル・フロー、二次フロー、三次フローなど）からの拒否を消費する、この種のフロー・ロジックの任意の長さのチェーンがあってもよい。
【００６１】
図８に、ある種の実施形態による並列性の使用を伴う図８００を示す。実施形態は、分割フェーズと共に集約フェーズを先行させることによって、上で説明した技法を並列に実行することができる。分割フェーズは、同一ＳＩＤを有するすべてのトランザクション・アイテムが同一パーティションになることを保証する任意のロジックによって着信トランザクション・アイテムをパーティションに分割する。各パーティションは、集約から上の処理の別々のインスタンスへの入力となる。ある種の実施形態では、共通のポイズン・データ・キューを、すべてのパーティションによって使用することができる。そのような並列性は、分割のためにＳＩＤに対してハッシュ関数を使用する。ハッシュ・パーティション関数は、同一のキーを有するレコードが同一パーティションに流れ込むことを保証する。
【００６２】
ＴＡＡシステム１３０は、集約フェーズ５１０によって作成された集約されたトランザクションのターゲット・サイズを、システム・スループットの測定値に基づいて自動的に調整する。ディスアグリゲーションおよび再試行ループは、システム・スループットを下げる可能性があるので、ＴＡＡシステム１３０は、自動的にターゲット・サイズをより小さくし、その結果、ターゲット集約サイズは、できる限り大きくなるが、ポイズン・トランザクション・アイテムを含む可能性が高くなるほどに大きくはなく、一時的理由またはリソース制限の理由で障害を発生する可能性が高くなるほどに大きくはならないように選択される。
【００６３】
ある種の実施形態では、集約は、デッドロックを作成し、ディスアグリゲーションは、非集約実施態様では発生しないはずのすべてのデッドロックをクリアすることができる。スループットに基づく集約のサイズの適応調整は、全体的なシステムパフォーマンスを低下させるようにこの問題を非常に悪化させるのを防ぐ。デッドロックおよびタイムアウトは、重い負荷の下で最も頻繁に発生する。重い負荷は、大きいトランザクションまたは多数の小さいトランザクションのオーバーヘッドによって発生し得る。トランザクションのサイズを調整することによって、全体的なシステムパフォーマンスを改善し、したがってデッドロックの可能性を減らすことができる。
【００６４】
実施形態は、処理ロジックを表し、その結果、処理ロジックを、集約されたトランザクションのセットに適用できるようになり、その集約は、同一ＳＩＤを有するトランザクションのＦＩＦＯ処理が必要であることに配慮する。ある種の実施形態では、処理ロジックは、データフロー技法を使用して表され、並列性（パーティションとパイプラインとの両方）を、可能な時には自動化されたトランザクション集約と協力して活用できるという追加の利益を伴う。
【００６５】
図９、１０、および１１に、ある種の実施形態によるロジックを示す。制御は、ブロック９００（図９）で、ＴＡＡシステム１３０がメッセージ識別子（ＭＩＤ）およびセッション識別子（ＳＩＤ）を有するトランザクション・アイテムを入手することから始まる。ブロック９０２で、ＴＡＡシステム１３０は、トランザクション・アイテムを、他のトランザクション・アイテムが同一のＳＩＤを有しない最も古い（すなわち、集約されたトランザクションのリスト１５０の順で）集約されたトランザクションに追加する。ブロック９０４で、ＴＡＡシステム１３０は、集約されたトランザクションのリスト１５０内の最初の集約されたトランザクションが実行判断基準（たとえば、タイマの満了、集約されたトランザクションのサイズがターゲット・サイズに達する、またはディスアグリゲーション（下で説明する図１０の９１６、図１１の９２４）によって作成される）を満足したかどうかを判定する。そうである場合には、処理はブロック９０６に継続し、そうでない場合には、処理はブロック９００にループ・バックする。
【００６６】
ブロック９０６で、ＴＡＡシステム１３０は、実行判断基準を満足した最初の集約されたトランザクションをデータフロー実行プロセスに送り、これを集約されたトランザクションのリスト１５０から除去する。ブロック９０８で、集約されたトランザクションがデータフローの通過を完了した後に、ＴＡＡシステム１３０は、コミットするかどうかを判定する。ある種の実施形態で、ＴＡＡシステム１３０は、トランザクション内のすべてのレコードの後に続くウェーブ・マーカに頼って、コミット・フェーズをいつ始めるべきかを知る。そうである場合には、処理はブロック９１０に継続し、そうでない場合には、処理はブロック９１２（図１０）に継続する。ブロック９１０では、ＴＡＡシステム１３０は、集約されたトランザクションをコミットする。ブロック９１１で、ＴＡＡシステム１３０は、システム・スループットの測定値に基づいて集約されたトランザクションのターゲット・サイズを調整し、処理は、ブロック９０４にループ・バックする。
【００６７】
ブロック９１２では、ＴＡＡシステム１３０は、入手可能なエラー原因があるかどうかを判定する。そうである場合には、処理はブロック９１４に継続し、そうでない場合には、処理はブロック９２２（図１１）に継続する。ブロック９１４では、ＴＡＡシステム１３０は、ディスアグリゲーションを実行すべきかどうかを判定する。たとえば、ＴＡＡシステム１３０は、ディスアグリゲーションが集約されたトランザクションに対して既に複数回実行されたかどうかを判定する。ある種の実施形態では、これが可能である。というのは、三次ディスアグリゲーション・プロセスが、それらが再処理するメッセージが既に拒否されたことを知っており、あるいは、不良メッセージに再試行カウンタを用いてタグ付けできるからである。ディスアグリゲーションを実行する場合には、処理はブロック９１６に進み、そうでない場合には、処理はブロック９２６（図１１）に継続する。ブロック９１６では、ＴＡＡシステム１３０は、集約されたトランザクションを複数のより小さい集約されたトランザクションに分解し、各新しい集約されたトランザクションがエラー原因内のＭＩＤを有する多くとも１つのトランザクション・アイテムを含むようにする。ブロック９１６（図１０）から、処理はブロック９２８（図１１）に進む。ブロック９２８では、新しいより小さい集約されたトランザクションを集約されたトランザクションのリスト１５０の前面に置き、これらに特別にラベルを付け、その結果、これらの新たに作成された集約されたトランザクション（以前に試みられた集約されたトランザクションの分解物である）が実行判断基準を満足したと考えられるようにする。したがって、これらの新しいディスアグリゲーションの最初の分解物が、即座に計算フェーズに送られる。ブロック９３０では、ＴＡＡシステム１３０は、システム・スループットの測定値に基づいて集約されたトランザクションのターゲット・サイズを調整し、処理は、ブロック９０４（図９）にループ・バックする。
【００６８】
ブロック９２２では、ＴＡＡシステム１３０は、入手可能なエラー原因がないにもかかわらず、ディスアグリゲーションを実行するかどうかを判定する。そうである場合には、処理はブロック９２４に継続し、そうでない場合には、処理はブロック９２６に継続する。ブロック９２４では、ＴＡＡシステム１３０は、集約されたトランザクションを複数のより小さい集約されたトランザクションに分解し、処理はブロック９２８に進む。ブロック９２６では、ポイズン・キュー処理を実行する。これは、トランザクション・アイテムをポイズン・キューに送ることと、オプションで、二次フロー、三次フローなどを実行することとを含む。ブロック９２６から、処理はブロック９３０に継続する。
【００６９】
したがって、実施形態は、集約されたトランザクション・サイズの自動チューニングを提供する。実施形態は、より高速のトランザクション処理および自動チューニングを提供する。実施形態は、データフローをトランザクション処理と組み合わせる。
【００７０】
実施形態は、抽出、変換、およびロード（ＥＴＬ）ツール、複合イベント処理システム、ならびにプロセス・レベルとデータ・レベルとの両方での情報統合と両立できる。
【００７１】
ある種の実施形態で、ポイズン・データ・アイテムを作ったセッションについて処理すべきメッセージがある場合に、そのセッションを脇に追いやることができる（すなわち、そのセッションの後続メッセージは、認識され、すべてがポイズン・データ・アイテムとして分類される）。
【００７２】
追加実施形態の詳細
説明された動作を、ソフトウェア、ファームウェア、ハードウェア、またはその組合せを作るための標準的なプログラミング技法または工学技法あるいはその両方を使用して、方法、コンピュータ・プログラム製品、または装置として実施することができる。
【００７３】
実施形態のそれぞれは、完全にハードウェアの実施形態、完全にソフトウェアの実施形態、またはハードウェア要素とソフトウェア要素との両方を含む実施形態の形をとることができる。実施形態を、ファームウェア、常駐ソフトウェア、マイクロコードなどを含むがこれらに限定はされないソフトウェアで実施することができる。
【００７４】
さらに、実施形態は、コンピュータまたは任意の命令実行システムによるまたはこれに関連する使用のためのプログラム・コードを提供するコンピュータ使用可能媒体またはコンピュータ可読媒体からアクセス可能なコンピュータ・プログラム製品の形をとることができる。この説明において、コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置、または命令実行デバイスによるまたはこれに関連する使用のためのプログラムを含み、格納し、通信し、伝搬し、または搬送することのできる任意の装置とすることができる。
【００７５】
説明された動作を、コンピュータ使用可能媒体またはコンピュータ可読媒体内で維持されるコードとして実施することができ、ここで、プロセッサは、コンピュータ可読媒体からコードを読み取り、実行することができる。媒体は、電子的、磁気的、光学的、電磁的、赤外線の、または半導体のシステム（または装置もしくはデバイス）または伝搬媒体とすることができる。コンピュータ可読媒体の例は、半導体またはソリッド・ステートのメモリ、磁気テープ、リムーバブル・コンピュータ・ディスケット、リジッド磁気ディスク、光ディスク、磁気記憶媒体（たとえば、ハード・ディスク・ドライブ、フロッピィ・ディスク、テープなど）、揮発性および不揮発性のメモリ・デバイス（たとえば、ランダム・アクセス・メモリ（ＲＡＭ）、ＤＲＡＭ、ＳＲＡＭ、読取り専用メモリ（ＲＯＭ）、ＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、ファームウェア、プログラマブル・ロジックなど）を含む。光ディスクの現在の例は、コンパクト・ディスク−読取り専用メモリ（ＣＤ−ＲＯＭ）、読み書き可能コンパクト・ディスク（ＣＤ−Ｒ／Ｗ）、およびＤＶＤを含む。
【００７６】
説明された動作を実施するコードは、さらに、ハードウェア・ロジック（たとえば、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）など）で実施することができる。さらに、説明された動作を実施するコードは、「伝送信号」で実施することができ、ここで、伝送信号は、空間を介してまたは光ファイバ、銅ワイヤなどの伝送媒体を介して伝搬することができる。その中でコードまたはロジックが符号化される伝送信号は、さらに、無線信号、衛星伝送、ラジオ波、赤外線信号、Ｂｌｕｅｔｏｏｔｈなどを含むことができる。コードまたはロジックが符号化される伝送信号は、送信局によって送信され、受信局によって受信されることができ、ここで、伝送信号内で符号化されたコードまたはロジックは、受信するおよび送信する局またはデバイスで復号され、ハードウェアまたはコンピュータ可読媒体に格納され得る。
【００７７】
コンピュータ・プログラム製品は、その中でコードを実施できるコンピュータ使用可能媒体、コンピュータ可読媒体、ハードウェア・ロジック、または伝送信号あるいはこれらすべてを含むことができる。もちろん、実施形態の範囲から逸脱せずに、この構成に対して多数の変更を行えることと、コンピュータ・プログラム製品が当技術分野で既知の任意の適切な情報担持媒体を含むことができることとを、当業者は認めるであろう。
【００７８】
用語ロジックは、たとえば、ソフトウェア、ハードウェア、ファームウェア、またはソフトウェアとハードウェアとの組合せあるいはこれらすべてを含むことができる。
【００７９】
ある種の実施態様は、人またはコンピュータ可読コードをコンピューティング・システムに一体化する自動化された処理によってコンピューティング・インフラストラクチャを展開する方法を対象とすることができ、ここで、コンピューティング・システムと組み合わされたコードによって、説明された実施態様の動作を実行することが可能になる。
【００８０】
図９、１０、および１１のロジックは、特定の順序で発生する特定の動作を記述する。代替実施形態では、ロジック動作のいくつかを、異なる順序で、変更して、または除去して実行することができる。さらに、動作を、上で説明したロジックに追加することができ、それでも、説明される実施形態に従うものとすることができる。さらに、本明細書で説明した動作は、順次発生することができ、あるいは、ある動作を並列に処理することができ、あるいは、単一プロセスによって実行されるものとして説明された動作を、分散プロセスによって実行することができる。
【００８１】
図９、１０、および１１の図示されたロジックを、ソフトウェア、ハードウェア、プログラマブルおよび非プログラマブルのゲート・アレイ・ロジック、あるいはハードウェア、ソフトウェア、またはゲート・アレイ・ロジックのある組合せで実施することができる。
【００８２】
図１２に、ある種の実施形態に従って使用できるシステム・アーキテクチャ１０００を示す。クライアント・コンピュータ１００またはサーバ・コンピュータ１２０あるいはその両方は、システム・アーキテクチャ１０００を実施することができる。システム・アーキテクチャ１０００は、プログラム・コードの格納または実行あるいはその両方に適し、システム・バス１０２０を介してメモリ要素１００４に直接にまたは間接に結合された少なくとも１つのプロセッサ１００２を含む。メモリ要素１００４は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、バルク・ストレージ、および実行中にコードをバルク・ストレージから取り出さなければならない回数を減らすために少なくとも一部のプログラム・コードの一時的ストレージを提供するキャッシュ・メモリを含むことができる。メモリ要素１００４は、オペレーティング・システム１００５および１つまたは複数のコンピュータ・プログラム１００６を含む。
【００８３】
入出力（Ｉ／Ｏ）デバイス１０１２、１０１４（キーボード、ディスプレイ、ポインティング・デバイスなどを含むがこれらに限定はされない）を、直接にまたは介在する入出力コントローラ１０１０を介してのいずれかでシステムに結合することができる。
【００８４】
ネットワーク・アダプタ１００８を、システムに結合して、データ処理システムが介在するプライベートネットワークまたはパブリックネットワークを介して他のデータ処理システム、リモート・プリンタ、またはリモート・ストレージ・デバイスに結合されるようにすることを可能にすることもできる。モデム、ケーブル・モデム、およびイーサネット・カードが、現在使用可能なタイプのネットワーク・アダプタ１００８のうちのほんの一例にすぎない。システム・アーキテクチャ１０００を、ストレージ１０１６（たとえば、磁気ディスクドライブ、光ディスク・ドライブ、テープ・ドライブなどの不揮発性ストレージ・エリア）に結合することができる。ストレージ１０１６は、内蔵ストレージ・デバイス、付加されたストレージ、またはネットワーク・アクセス可能ストレージを含むことができる。ストレージ１０１６内のコンピュータ・プログラム１００６を、当技術分野で既知の形でメモリ要素１００４にロードし、プロセッサ１００２によって実行することができる。
【００８５】
システム・アーキテクチャ１０００は、図示より少数のコンポーネント、この図に示されていない追加コンポーネント、または図示のコンポーネントおよび追加コンポーネントのある組合せを含むことができる。システム・アーキテクチャ１０００は、メインフレーム、サーバ、パーソナル・コンピュータ、ワークステーション、ラップトップ、ハンドヘルド・コンピュータ、テレフォニ・デバイス、ネットワーク・アプライアンス、仮想化デバイス、ストレージ・コントローラなど、当技術分野で既知のすべてのコンピューティング・デバイスを含むことができる。
【００８６】
本発明の実施形態の前述の説明は、例示および説明のために提示されたものである。網羅的であることまたは実施形態を開示されたそのままの形態に限定することは、意図されていない。多数の修正形態および変形形態が、上の教示に鑑みて可能である。実施形態の範囲が、この詳細な説明によって限定されるのではなく、本明細書に添付された特許請求の範囲によって限定されることが意図されている。上の明細書、例、およびデータは、実施形態の構成の製造および使用の完全な説明を提供する。多数の実施形態をこの実施形態の趣旨および範囲から逸脱せずに作ることができるので、実施形態は、添付の特許請求の範囲または後に提出される特許請求の範囲およびその同等物に存する。
【図１】
2010537338.tif 000003
【図２】
2010537338.tif 000004
【図３】
2010537338.tif 000005
【図４】
2010537338.tif 000006
【図５】
2010537338.tif 000007
【図６】
2010537338.tif 000008
【図７】
2010537338.tif 000009
【図８】
2010537338.tif 000010
【図９】
2010537338.tif 000011
【図１０】
2010537338.tif 000012
【図１１】
2010537338.tif 000013
【図１２】
2010537338.tif 000014
【国際調査報告】
2010537338.tif 000015
2010537338.tif 000016
2010537338.tif 000017