(57)【要約】【課題】情報システムにおける変換データの高スループット・高信頼性の複製が必要とされている。【解決手段】ソース・オブジェクトがローカル・トランザクションによって変更されることに応答して、ログ記録を生成するための技法が提供され、ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、ソース特性はターゲット・キー指示子を使用して識別される。処理するためのログ記録は、各ログ記録のフェーズ値に基づいて選択され、フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである。１つまたは複数の素パーティションが、複数の処理インスタンスのそれぞれに割り当てられる。複数の処理インスタンスのそれぞれの制御下で、上記処理インスタンスに割り当てられる１つまたは複数の素パーティション内のログ記録を送信するか否かが判断され、ログ記録を送信すべきであるという判断に応じて、ログ記録が送信される。【選択図】図１
2013513147.tif 000002
【特許請求の範囲】
【請求項１】
方法であって、
ローカル・トランザクションによってソース・オブジェクトが変更されることに応答して、
ログ記録を生成するステップであって、前記ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、前記ソース特性はターゲット・キー指示子を使用して識別される、生成するステップと、
各ログ記録のフェーズ値に基づいて処理するための前記ログ記録を選択するステップであって、前記フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである、選択するステップと、
１つまたは複数の素パーティションを、複数の処理インスタンスのそれぞれに割り当てるステップと、
前記複数の処理インスタンスのそれぞれの制御下で、
前記処理インスタンスに割り当てられた前記１つまたは複数の素パーティション内のログ記録を送信するか否かを判断するステップと、
前記ログ記録を送信すべきであるとの判断に応答して、前記ログ記録を送信するステップとを含む、方法。
【請求項２】
前記ターゲット・キー指示子を使用して前記ソース特性の中のキー・ソース特性を識別するステップであって、前記ターゲット・キー指示子は、前記ソース特性のうちのいずれがターゲット・キーを生成するのに使用されるキー・ソース特性であるかを指示する、識別するステップと、
前記キー・ソース特性を使用して前記ターゲット・キーを生成するステップと、
前記ターゲット・キーを使用して前記ターゲット・パーティション識別子を生成するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ソース特性の値をバッファ内に格納するステップと、
ソース・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ソース・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたソース・メソッドによって返される結果値に置き換えるステップと
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記処理インスタンスのそれぞれは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含み、前記複数の待ち行列ワーカ・スレッドは前記ディスパッチ・マップ内の前記ログ記録を順番に、および並行して消費する、先行する請求項のいずれか一項に記載の方法。
【請求項５】
提出済みの前記フェーズ値を有するログ記録をプルするステップと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするステップと、
前記プルされたログ記録のそれぞれの前記フェーズ値を、送信中の前記フェーズ値に更新するステップと
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項６】
送信中またはソース・システム・エンティティ状態変更完了の前記フェーズ値を有するログ記録をプルするステップと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするステップと
によって、回復処理を実行するステップ
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項７】
前記ログ記録を送信するか否かを判断するステップは、
前記ログ記録の前記ターゲット・キーがターゲット・システム・エンティティ・テーブル内にないという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと、
前記ログ記録の前記ターゲット・キーが前記ターゲット・システム・エンティティ・テーブル内にあるという判断、および、前記ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内のソース・システム・エンティティ修正タイムスタンプよりも小さいという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと、
前記ターゲット・システム・エンティティ・テーブル内の前記ソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内の前記ソース・システム・エンティティ修正タイムスタンプ以上であるという判断、および、前記ソース特性に基づいて前記ログ記録を送信すべきであることを指示する規則が存在するという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと
をさらに含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記ログ記録を送信するステップは、
ターゲット・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ターゲット・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたターゲット・メソッドによって返される結果値に置き換えるステップであって、前記ソース特性は変換される、実行するとともに置き換えるステップと、
複数のターゲット型のそれぞれについて、実行されるべきコード・ブロックを識別するステップと、
前記変換されたソース特性を有する前記ログ記録を前記ターゲット・システムに配信するために、識別された各コード・ブロックを実行するステップと
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項９】
システムであって、
動作を実行するための回路を備え、前記回路は、
ローカル・トランザクションによってソース・オブジェクトが変更されることに応答して、
ログ記録を生成するための手段であって、前記ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、前記ソース特性はターゲット・キー指示子を使用して識別される、生成するための手段と、
各ログ記録のフェーズ値に基づいて処理するための前記ログ記録を選択するための手段であって、前記フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである、選択するための手段と、
１つまたは複数の素パーティションを、複数の処理インスタンスのそれぞれに割り当てるための手段と、
前記複数の処理インスタンスのそれぞれの制御下で、
前記処理インスタンスに割り当てられた前記１つまたは複数の素パーティション内のログ記録を送信するか否かを判断するための手段と、
前記ログ記録を送信すべきであるとの判断に応答して、前記ログ記録を送信するための手段と
を備える、システム。
【請求項１０】
前記回路は、
前記ターゲット・キー指示子を使用して前記ソース特性の中のキー・ソース特性を識別するための手段であって、前記ターゲット・キー指示子は、前記ソース特性のうちのいずれがターゲット・キーを生成するのに使用されるキー・ソース特性であるかを指示する、識別するための手段と、
前記キー・ソース特性を使用して前記ターゲット・キーを生成するための手段と、
前記ターゲット・キーを使用して前記ターゲット・パーティション識別子を生成するための手段と
をさらに備える、請求項９に記載のシステム。
【請求項１１】
前記回路は、
前記ソース特性の値をバッファ内に格納するための手段と、
ソース・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ソース・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたソース・メソッドによって返される結果値に置き換えるための手段と
をさらに備える、請求項９または請求項１０に記載のシステム。
【請求項１２】
前記処理インスタンスのそれぞれは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含み、前記複数の待ち行列ワーカ・スレッドは前記ディスパッチ・マップ内の前記ログ記録を順番に、および並行して消費する、請求項９〜１１のいずれか一項に記載のシステム。
【請求項１３】
前記回路は、
提出済みの前記フェーズ値を有するログ記録をプルするための手段と、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするための手段と、
前記プルされたログ記録のそれぞれの前記フェーズ値を、送信中の前記フェーズ値に更新するための手段と
をさらに備える、請求項９〜１２のいずれか一項に記載のシステム。
【請求項１４】
前記回路は、
回復処理を実行するための手段であって、
送信中またはソース・システム・エンティティ状態変更完了の前記フェーズ値を有するログ記録をプルするための手段と、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするための手段と
を備える、回復処理を実行するための手段
をさらに備える、請求項９〜１３のいずれか一項に記載のシステム。
【請求項１５】
前記ログ記録を送信するか否かを判断するための前記手段は、
各行グループについて作成される前記ログ記録のために、以下の手段；
前記ログ記録の前記ターゲット・キーがターゲット・システム・エンティティ・テーブル内にないという判断に応答して、前記ログ記録をターゲット・システムに送信するための手段と、
前記ログ記録の前記ターゲット・キーが前記ターゲット・システム・エンティティ・テーブル内にあるという判断、および、前記ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内のソース・システム・エンティティ修正タイムスタンプよりも小さいという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するための手段と、
前記ターゲット・システム・エンティティ・テーブル内の前記ソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内の前記ソース・システム・エンティティ修正タイムスタンプ以上であるという判断、および、前記ソース特性に基づいて前記ログ記録を送信すべきであることを指示する規則が存在するという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するための手段と
によって前記ログ記録を前記ターゲット・システムに送信するか否かを判断するための手段、
をさらに備える、請求項９〜１４のいずれか一項に記載のシステム。
【請求項１６】
前記ログ記録を送信するための前記手段は、
ターゲット・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ターゲット・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたターゲット・メソッドによって返される結果値に置き換えるための手段であって、それによって、前記ソース特性を変換する、置き換えるための手段と、
複数のターゲット型のそれぞれについて、実行されるべきコード・ブロックを識別する手段と、
前記変換されたソース特性を有する前記ログ記録を前記ターゲット・システムに配信するために、識別された各コード・ブロックを実行するための手段と
をさらに備える、請求項９〜１５のいずれか一項に記載のシステム。
【請求項１７】
コンピュータ可読プログラムを含むコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品であって、前記コンピュータ可読プログラムは、コンピュータ上のプロセッサによって実行されると前記コンピュータに、
ローカル・トランザクションによってソース・オブジェクトが変更されることに応答して、
ログ記録を生成することであって、前記ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、前記ソース特性はターゲット・キー指示子を使用して識別される、生成することと、
各ログ記録のフェーズ値に基づいて処理するための前記ログ記録を選択することであって、前記フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである、選択することと、
１つまたは複数の素パーティションを、複数の処理インスタンスのそれぞれに割り当てることと、
前記複数の処理インスタンスのそれぞれの制御下で、
前記処理インスタンスに割り当てられた前記１つまたは複数の素パーティション内のログ記録を送信するか否かを判断することと、
前記ログ記録を送信すべきであるとの判断に応答して、前記ログ記録を送信することと
を行わせる、コンピュータ・プログラム製品。
【請求項１８】
前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
前記ターゲット・キー指示子を使用して前記ソース特性の中のキー・ソース特性を識別することであって、前記ターゲット・キー指示子は、前記ソース特性のうちのいずれがターゲット・キーを生成するのに使用されるキー・ソース特性であるかを指示する、識別することと、
前記キー・ソース特性を使用して前記ターゲット・キーを生成することと、
前記ターゲット・キーを使用して前記ターゲット・パーティション識別子を生成することと
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
前記ソース特性の値をバッファ内に格納することと、
ソース・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ソース・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたソース・メソッドによって返される結果値に置き換えることと
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２０】
前記処理インスタンスのそれぞれは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含み、前記複数の待ち行列ワーカ・スレッドは前記ディスパッチ・マップ内の前記ログ記録を順番に、および並行して消費する、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２１】
前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
提出済みの前記フェーズ値を有するログ記録をプルすることと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュすることと、
前記プルされたログ記録のそれぞれの前記フェーズ値を、送信中の前記フェーズ値に更新することと
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２２】
前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
送信中またはソース・システム・エンティティ状態変更完了の前記フェーズ値を有するログ記録をプルすることと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュすることと
によって、回復処理を実行すること
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２３】
前記ログ記録を送信するか否かを判断するとき、前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
各行グループについて作成される前記ログ記録のために、以下のこと：
前記ログ記録の前記ターゲット・キーがターゲット・システム・エンティティ・テーブル内にないという判断に応答して、前記ログ記録をターゲット・システムに送信することと、
前記ログ記録の前記ターゲット・キーが前記ターゲット・システム・エンティティ・テーブル内にあるという判断、および、前記ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内のソース・システム・エンティティ修正タイムスタンプよりも小さいという判断に応答して、前記ログ記録を前記ターゲット・システムに送信することと、
前記ターゲット・システム・エンティティ・テーブル内の前記ソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内の前記ソース・システム・エンティティ修正タイムスタンプ以上であるという判断、および、前記ソース特性に基づいて前記ログ記録を送信すべきであることを指示する規則が存在するという判断に応答して、前記ログ記録を前記ターゲット・システムに送信することと
によって前記ログ記録を前記ターゲット・システムに送信するか否かを判断すること、
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２４】
前記ログ記録を送信するとき、前記コンピュータ可読プログラムは、前記コンピュータ上の前記プロセッサによって実行されると前記コンピュータに、
ターゲット・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ターゲット・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたターゲット・メソッドによって返される結果値に置き換えることであって、前記ソース特性は変換される、実行するとともに置き換えることと、
複数のターゲット型のそれぞれについて、実行されるべきコード・ブロックを識別することと、
前記変換されたソース特性を有する前記ログ記録を前記ターゲット・システムに配信するために、識別された各コード・ブロックを実行することと
を行わせる、請求項１７に記載のコンピュータ・プログラム製品。
【請求項２５】
コンピュータ・プログラムであって、前記プログラムがコンピュータ上で作動しているときに、請求項１〜８のすべてのステップを実行するようになっているプログラム・コード手段を含む、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報システムにおける変換データの高スループット、高信頼性の複製に関する。
【背景技術】
【０００２】
情報は、組織内の、企業内の、またはさらにより大域的に複数の企業にわたる、複数の場所に存在することが多い。多くの場合、この情報は、ローカル・アプリケーションにとって最適な方法で提示され、通常、組織内の、企業内の、またはさらにより大域的に複数の企業にわたるすべてのアプリケーションが、存在する情報のすべてを必要とするわけでもなく、使用するわけでもなく、さらには当該情報へのアクセスを望みもしくは許可されているわけでもない。しかしながら、ローカル・アプリケーションにおいてこの情報がますます共有され利用されることが次第に一般的になってきている。その情報の共有、変換、およびローカルな使用は、データの一貫した表示を可能にし、組み合わせ販売の計画を可能にし、著しいビジネス最適化および新たなビジネスチャンスを見出すことを可能にする基礎的な機能である。
【０００３】
従来のシステムは高い実行コストをもたらし、これは多くの場合、ローカル・アプリケーションを実行している１つのローカル・ソース・システムを、何らかの他のターゲット・システムに整合する試みのすべての展開において被るものである。ローカル・ターゲット・コールは、そのターゲット・システムに対して非常に特異的になり、多くの場合、そのターゲット・システムの構成に対して非常に特定的になる傾向がある。複製およびデータ変換に使用される従来のシステムは、データ変換から導出されるパラメータ値を使用してローカル・ターゲット・コールと整合するにはいたらない。これは、従来のシステム内でローカル・ターゲット・コールを実行および整合するコストに起因して、ローカル・ターゲット・コールをプログラムするコストを高める結果となる。この高いコストの結果として、これらの種類のプロジェクトの多くが、特に企業レベルにおいて、最初に資金供給されることが可能でなく、実行、テスト、および展開するのに多大な時間がかかるようになっている。
【０００４】
高度なデータ整合性を必要とする従来のシステムは、ときにはデータ整合性を確実にするために２つのシステムの間の二相コミットさえ使用する、全体的な作業負荷の従来のトランザクションのシリアライゼーションに依拠する。このシリアライゼーションは、ソース・システム・トランザクション（現在では分散トランザクションになっている）内にもたらされるレイテンシに起因する、ソース・システムおよびターゲット・システムの両方に対する重大な実行結果を有する。このレイテンシは、全体的なスループットを低減する、より長い継続時間にわたってより多くのロックがかけられていることに起因して、増大したシリアライゼーションが発生していることを意味する。全体的なシステムが、全体的なシステム全体が常に利用可能であることに依存しているため、これによって高可用性に対する影響もある。従来のシステムは、ターゲット・システム上での実行を順序付けるためのソース・トランザクションのシリアライゼーションに依拠しており、したがって、高パフォーマンスのクラスタを利用するために完全に並列化することが不可能である。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
高スループットの複製（複数のロケーションに起因する）、変換（データの「ローカルな」表現、およびそのデータに対して実行するアプリケーションに起因する）に対する需要、およびデータ整合性（一貫して信頼できる企業規模のデータ）に対する需要が存在する。したがって、情報システムにおける変換データの高スループット・高信頼性の複製が必要とされている。
【課題を解決するための手段】
【０００６】
ソース・オブジェクトがローカル・トランザクションによって変更されることに応答して、ログ記録を生成するための方法、コンピュータ・プログラム製品、およびシステムが提供され、ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、ソース特性はターゲット・キー指示子を使用して識別される。処理するためのログ記録は、各ログ記録のフェーズ値に基づいて選択され、フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである。１つまたは複数の素パーティションが、複数の処理インスタンスのそれぞれに割り当てられる。複数の処理インスタンスのそれぞれの制御下で、上記処理インスタンスに割り当てられる１つまたは複数の素パーティション内のログ記録を送信するか否かが判断され、ログ記録を送信すべきであるという判断に基づいて、ログ記録が送信される。
【０００７】
ここで例示のみを目的として、添付の図面を参照して本発明の実施形態を説明する。
【図面の簡単な説明】
【０００８】
【図１】特定の実施形態によるコンピューティング・アーキテクチャを示す。
【図２】特定の実施形態による動作の流れを示す。
【図３】特定の実施形態による構造を示す。
【図４】特定の実施形態による処理を示す。
【図５】特定の実施形態による、ログ記録を生成するためのロジックを示す。
【図６】特定の実施形態による、ログ記録を生成するためのロジックを示す。
【図７】特定の実施形態による、ログ記録の非回復処理のためのロジックを示す。
【図８】特定の実施形態による回復処理のためのロジックを示す。
【図９】特定の実施形態による、ログをターゲット・システム記録に送信するためのロジックを示す。
【図１０】特定の実施形態による、ログをターゲット・システム記録に送信するためのロジックを示す。
【図１１】特定の実施形態による、ログをターゲット・システム記録に送信するためのロジックを示す。
【図１２】特定の実施形態による、ログ記録を送信するための詳細なロジックを示す。
【図１３】特定の実施形態によるスケールアップされたシステムを示す。
【図１４】特定の実施形態によるスケールアウトされたシステムを示す。
【図１５】特定の実施形態に従って使用することができるシステム・アーキテクチャを示す。
【発明を実施するための形態】
【０００９】
以下の記載において、本記載の一部を形成するとともに本発明のいくつかの実施形態を説明する添付の図面を参照する。他の実施形態を利用することができ、本発明の範囲から逸脱することなく、構造的および動作上の変更を為すことができることが理解される。
【００１０】
実施形態は、ローカル・コールがどのように為されるか、およびいつ為されるかにおいて、全体的なデータおよびトランザクション整合性を保持する高度な並列性を可能にすることによって、拡張性メカニズムを提供し、システム整合性を維持し、スループットを向上させる。
【００１１】
実施形態によって提供される機能は、フレームワークであって、当該フレームワークのユーザにとってプログラミングを最小限にする結果をもたらすフレームワークにおいて実装される。フレームワークの主要部の設計自体も、このフレームワークの効果的な実装および最適化を可能にするために、本明細書において記載される。
【００１２】
図１は、特定の実施形態によるコンピューティング・アーキテクチャを示す。コンピューティング・デバイス１００は、ログ生成コンポーネント１１０と、ログ・コンシューマ・コンポーネント１２０と、ログ最適化コンポーネント１３０と、ターゲット・システム変換コンポーネント１４０と、ログ１５０とを含む。１つまたは複数のソース・システム１６０および１つまたは複数のターゲット・システム１７０が、コンピューティング・デバイス１００に結合される。特定の実施形態において、コンピューティング・デバイス１００はマスタ・コンテンツ・サーバである。特定の実施形態において、少なくとも１つのソース・システム１６０は企業コンテンツ管理（Ｅｎｔｅｒｐｒｉｓｅ  Ｃｏｎｔｅｎｔ  Ｍａｎａｇｅｍｅｎｔ、ＥＣＭ）システムである。特定の実施形態において、少なくとも１つのターゲット・システム１７０はマスタ・データ管理（Ｍａｓｔｅｒ  Ｄａｔａ  Ｍａｎａｇｅｍｅｎｔ、ＭＤＭ）システムである。
【００１３】
ソース・システム１６０は、トランザクション（たとえば、ｔｘ１、ｔｘ２、ｔｘ３・・・ｔｘｎ）を受信し、当該トランザクションをコンピューティング・デバイス１００へルーティングする。ソース・システム１６０にあるソース・ローカル・アプリケーションがトランザクションを発行する。トランザクションはデータ（例えば、ソース・システム１６０上のソース・オブジェクト）を変更する。コンピューティング・デバイス１００は、１６０と標識されるソース・システムおよび１７０と標識されるターゲット・システムによって表されているような情報システム間の変換データの高スループット・高信頼性の複製を実行する。ログ生成コンポーネント１１０は、変更されたデータを使用して、ログ１５０によって表されているようなログにおいてデータを生成する。ログ１５０の構造定義の詳細が図３に記載されている。ログ最適化コンポーネント１３０は、ログ１５０を処理および最適化して、ログ１５０内に追加のデータを生成する。ターゲット・システム変換コンポーネント１４０は、データ変換を実行して、変換されたデータをターゲット・システム１７０にルーティングし、ターゲット・システムもログ１５０内に追加のデータを生成する。その後、トランザクション（例えば、ｔｘ１１・・・ｔｘｐ）は変換されたデータを使用することができる。このように、データはソース・システム１６０によって変更され、変更されたデータがコンピューティング・デバイス１００にあるターゲット・システム変換コンポーネント１４０によって変換される。
【００１４】
特定の実施形態において、１度に１つのソース・データ変更がある。各変更は、ソース・トランザクション識別子を用いてタグ付けされる。さらに、各変更は、ソース・トランザクションの命令コード（すなわち、挿入、更新または消去）を用いてタグ付けされる。特定の実施形態において、ソース・データ変更内に複数の行が存在し、その行のそれぞれが複数の属性を有する。
【００１５】
ソース・トランザクション内に、実行されるべき複数の命令文が存在する場合があり、複数の命令文のそれぞれに対してデータ変更が存在する場合がある。実施形態は、ソース・トランザクション識別子を有するソース・トランザクションに対してデータ変換を適用する。１つのトランザクション当たりに１つまたは複数のソース・データ変更が存在する場合がある。特定の実施形態において、単一のデータ変換内に関数実行順序が（すなわち、主キー／外部キー関係の確立／維持において介在する例外を回避するために）与えられる。
【００１６】
特定の実施形態において、図１において例示されているシステムは、高信頼性でかつ正確に順序付けされた様式で、ソース・システム１６０内の差分の検出から始まり、抽出、変換、ターゲット・システム１７０への配信へと続く複製パイプラインとして説明されることができる。
【００１７】
図２は、特定の実施形態による動作の流れを示す。図２において、凡例２００によれば、実線の矢印はラベルを示し、破線の矢印はデータ・フローを示し、点線の矢印は制御フローを示す。ソース・システム・エンティティ・インスタンス２１０がコンピューティング・デバイスに結合されており、コンピューティング・デバイスはターゲット・システム・エンティティ・インスタンス２９０に結合されている。コンピューティング・デバイス、詳細なシステム情報、データ・フロー、および制御フロー２００が一点鎖線内に示されている。コンピューティング・デバイス２００は、コンピューティング・デバイス１００（図１）のインスタンスである。ソース・システム・エンティティ・インスタンス２１０は、ソース・システム１６０（図１）のインスタンスである。ターゲット・システム・エンティティ・インスタンス２９０は、ターゲット・システム１７０（図１）のインスタンスである。特定の実施形態では、コンピューティング・デバイス２００はマスタ・コンテンツ・サーバであり、ソース・システム・エンティティ・インスタンス２１０は企業コンテンツ管理システムであり、ターゲット・システム・エンティティ・インスタンス２９０はマスタ・データ管理システムである。
【００１８】
ソース・システム・エンティティ・インスタンス２１０は、ソース文書モデル（例えば、Ｄ３）およびプロキシ・ターゲット・フラット・モデル（例えば、Ｍ３）にアクセスすることができる。プロキシ・ターゲット・フラット・モデルは、現実のインスタンス・データを有しない、ソース・システム上のターゲット・データ・モデルのフラット化されたエミュレーションとして説明されることができる。これは、マップ・テーブルの内容とともに、実施の便宜上、および強力なシステム・メタデータ有効性検証チェックのために使用される。たとえば、Ｄ３は、運転免許証、パスポート、または出生証明書のような身分証明書を表すスキャンされた画像のためのメタデータ文書モデルであることができる。このメタデータ文書モデルは、ソース・システムのデータ・モデル化機能において実装される。ＥＣＭシステムにおいては、これは、オブジェクトベースのデータ・モデルであることができる。例えば、Ｍ３は、データベース管理システム（ＤａｔａＢａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ、ＤＢＭＳ）内のＤ３内に格納されているものと同じかもしくは類似の情報のフラットな関係表現であることができ、またはＤ３は、拡張可能マークアップ言語（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ、ＸＭＬ）、もしくはターゲット・システムによってサポートされる何らかの他のデータ・モデル表現であることができる。特定の実施形態において、ソース文書モデルはオブジェクト・モデルであり、プロキシ・ターゲット・フラット・モデルは関係モデルである。Ｄ３−インスタンス（Ｄ３−Ｉｎｓｔａｎｃｅ）は、ソース・トランザクションを介してＤ３−インスタンス’（Ｄ３−Ｉｎｓｔａｎｃｅ’）に変更される。トランザクションのために、イベント・ハンドラ２２４は文書モデル、状態２２０由来のそのトランザクションのための状態情報、およびマップ２２２由来の行（ラベルを付された「マップ」）にアクセスする。イベント・ハンドラ２２４は文書モデル、状態情報、および行をログ・ジェネレータ２２６に転送する。ログ・ジェネレータ２２６はマップ２２２にアクセスして、マップ２２２由来の行を使用してソース文書モデルを中間モデルに変換し、データをイベント・ハンドラ２２４に返す。イベント・ハンドラ２２４は、ログ２４０に書き込む。ログ・プロセッサ２５０は、ログを処理する。ターゲット型ハンドラ２６０は、マップ２２２を使用して（中間からターゲットへ）データ変換を完了させる。ターゲット・インタフェース（複数の場合もあり）（ｉｎｔｅｒｆａｃｅ、Ｉ／Ｆ）２６２は、適切なパラメータを用いてアプリケーション・プログラミング・インタフェース（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ、ＡＰＩ）を呼び出すための１つまたは複数のインタフェースを提供する。完了したデータ変換からのデータ値は、適切なアプリケーション・プログラミング・インタフェースに対するパラメータとして使用される。
【００１９】
特定の実施形態において、ログ生成コンポーネント１１０（図１）の機能は、イベント・ハンドラ２２４、ログ・ジェネレータ２２６、状態２２０、およびマップ２２２を用いて実施される。特定の実施形態において、ログ最適化コンポーネント１３０（図１）の機能は、ログ・プロセッサ２５０において実施される。特定の実施形態において、ターゲット・システム変換コンポーネント１４０（図１）の機能は、ターゲット型ハンドラ２６０およびターゲットＩ／Ｆ（複数の場合もあり）２６２において実施される。
【００２０】
図３は、特定の実施形態による構造３００を示す。特定の実施形態において、構造３００は状態２２０内に格納される。構造３００は、ターゲット・システム・エンティティ・テーブル３１０と、ソース・システム・エンティティ・リンク・テーブル３２０と、ログ・テーブル３３０と、マップ・テーブル３４０とを含む。エンティティは或る型（例えば、文書モデル）である。ソース・システムのインスタンスは複数のソース・システム・エンティティを有することができ、ターゲット・システムのインスタンスは複数のターゲット・システム・エンティティを有することができる。
【００２１】
構造３００は、二相コミットを必要とすることなく、高いデータ整合性を与える。さらに、ターゲット・システム・エンティティ・テーブル３１０およびソース・システム・エンティティ・リンク・テーブル３２０は、処理の初期段階において重複を認識することによってメッセージおよびコード・パスを低減する。
【００２２】
ターゲット・システム・エンティティ・テーブル３１０は、ターゲット・キー、ターゲット・ハンドル、ソース・システム・エンティティ参照カウント、およびソース・システム・エンティティ修正タイムスタンプのための属性を含む。
【００２３】
ソース・システム・エンティティ・リンク・テーブル３２０は、リンク識別子、ソース・キー、およびターゲット・キーのための属性を含む。リンク識別子は、リンクに与えられる一意の番号として説明される場合がある。ソース・データ・モデル要約インスタンス（例えば、文書）とターゲット・データ・モデル要約インスタンスとの間にリンクが形成される。実施形態によれば、ソース・データ・モデル要約インスタンス（例えば、文書）とソース・システム・エンティティ・リンク・テーブル３２０との間に１対１の関連性が存在し、ターゲット・システム・エンティティ・テーブル３１０とリンク・テーブル３２０との間に１対多の関連性が存在する。
【００２４】
ログ記録に対する命令コードが挿入される場合、リンクが追加され（すなわち、ソース・システム・エンティティ・リンク・テーブル３２０に行が追加され）、ソース・システム・エンティティ参照カウントがインクリメントされる。命令コードが消去される場合、リンクが削除され（すなわち、ソース・システム・エンティティ・リンク・テーブル３２０から対応する行を消去することによる）、ソース・システム・エンティティ参照カウントがデクリメントされる。命令コードが更新される場合、ソース・システム・エンティティ・リンク・テーブル３２０またはソース・システム・エンティティ参照カウントに対する変更は必要とされない。
【００２５】
特定の実施形態において、ログ２４０はログ・テーブル３３０として実装される。ログ・テーブル３３０は、シーケンス番号（ソース・システム・エンティティ・インスタンス２１０上でトランザクションが完了される順序を識別する）、トランザクション識別子、命令コード（すなわち、挿入、更新または消去）、ソース・システム・エンティティ修正タイムスタンプ（ソース・オブジェクトが最後に修正された時刻を示す）、ターゲット型、ターゲット・キー、ターゲット・パーティション識別子、中間型ペイロード（中間型において送信されるべき値を有する）、フェーズ値、フェーズ・タイムスタンプ、および処理状況（例えば、「送信成功」、「送信失敗」または「未送信」）のための属性を含む。特定の実施形態において、単調原子シーケンス番号ジェネレータがシーケンス番号を生成する。特定の実施形態において、ターゲット型はＭ３モデルのためのターゲット・データ型インスタンスである。例えば、文書が身分証明書の場合、名前のような特定の特性が、ターゲットＭ３モデルにおいて特定の型を用いて表されることができる。これは、単純な文字列型、固定長文字列、または、ファースト・ネーム、ミドル・ネーム（またはミドル・ネームの頭文字）、およびラストネームのための構造であり得る。フェーズ値は、ログ記録ライフサイクルにおける、提出済み、送信中、ソース・システム・エンティティ状態変更完了、および完了（すなわち、ターゲット・システム・エンティティ状態変更完了）のフェーズを反映する。システムがコールド・スタートした後、フェーズ値によって識別されるフェーズに基づいて処理を開始することができる。特定の実施形態において、ログ・テーブル３３０は、ソース・オブジェクトから取得される（例えば、上書きされる）ソース・キーをも含み、ソース・キーを生成するために使用されるべきソース特性を決定するためにソース・キー識別子が使用される。
【００２６】
特定の実施形態において、マップ２２２はマップ・テーブル３４０として実装される。マップ・テーブル３４０は、マップ識別子、ソース型、ソース特性識別子、ソース・メソッド識別子、ソース・キー識別子、ターゲット型、ターゲット特性識別子、ターゲット・メソッド識別子、およびターゲット・キー識別子のための属性を含む。マップ・テーブル３４０の各行は、特性変換指定を表す。特定の実施形態において、マップ・テーブルは、ソース・エンティティ・特性の選択およびそのターゲット・エンティティ・特性との関連付けを容易にする何らかの視覚化ツール、およびシステムの目標を達成するための必須のメソッドを使用するかまたはしないかのいずれかのマッピングによって、システムの所与のインスタンス向けに事前にデータ投入されている。
【００２７】
実施形態によれば、ターゲット・キーは、ターゲット・システム１７０の主キーである。
【００２８】
実施形態は、エンティティ関数マッピングを実行する。特定の実施形態において、マッピングはシステム（例えば、図１）構成時に定義される。マップ２２２は、ターゲット関数、およびそれらのターゲット関数のためのターゲット・パラメータを定義する。マップ２２２は、ソース関数および変換されたデータ・インスタンス（例えば、型および方式）を定義する。マップ２２２は、ソース関数がどのようにターゲット関数にマッピングするかを定義する。マップ２２２は、変換されたデータ・インスタンスがどのようにターゲット関数パラメータにマッピングするかを定義する。マップは、動的結合を通じて実行されるべきターゲット関数コードを定義する。
【００２９】
実施形態は、各ソース関数／値をターゲット関数／パラメータにマッピングする。所与のターゲット関数のためのターゲット・パラメータは共にグループ化され、それによって、１つのターゲット関数実行が適用されることができる。任意の残りの割り当てられていないパラメータに対して、初期値、空値、エラーの生成または他の技法が使用される。いくつかの実施形態においては、割り当てられていないパラメータに対して一般的なドメイン整合性規則を使用することができる。
【００３０】
図４は、特定の実施形態による処理を示す。ブロック４００において、ソース・システム１６０上で実行しているローカル・トランザクションによってソース・オブジェクトが変更されることによって、制御が開始する。ブロック４０２において、ログ生成コンポーネント１１０がログ記録を生成し、ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、ソース特性はターゲット・キー指示子を使用して識別される。ブロック４０４において、ログ・コンシューマ・コンポーネント１２０が、各ログ記録のフェーズ値に基づいて処理するためのログ記録を選択し、フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである。ブロック４０６において、ログ・コンシューマ・コンポーネント１２０は、１つまたは複数の素パーティションを複数の処理インスタンスのそれぞれに割り当てる。ブロック４０８において、複数の処理インスタンスのそれぞれの制御下で、ログ最適化コンポーネント１３０は、上記処理インスタンスに割り当てられる１つまたは複数の素パーティション内のログ記録を送信するか否かを判断し、ログ記録を送信すべきであるという判断に基づいて、ログ記録を送信する。
【００３１】
図５および図６は、特定の実施形態による、ログ記録を生成するためのロジックを示す。ブロック５００において、ソース・オブジェクトが変更される（すなわち、挿入される（すなわち、作成される）、更新される（すなわち、修正される）または消去される）ことによって、制御が開始する。たとえば、ソース・オブジェクトは図３におけるＤ３である。ブロック５０２において、ログ生成コンポーネント１１０が、ソース・オブジェクトのソース型を識別する。ブロック５０４において、ログ生成コンポーネント１１０が、識別されたソース型を使用してマップ・テーブル３４０内の行グループを識別し、各行グループは同じターゲット型を有する。ブロック５０６において、ログ生成コンポーネント１１０は、最初の行グループから開始して、次の行グループを選択する。特定の実施形態において、ソース型を有する行がマップ・テーブル３４０内で識別されると、行はターゲット型によってソートされ、行グループが形成される。各行グループ内で、行は昇順のマップ識別子によってソートされる。次いで、ログ生成コンポーネント１１０は、最初の行グループから開始して、特性変換指定を表す各行を処理する。
【００３２】
ブロック５０８において、ログ生成コンポーネント１１０は選択された行グループ内の行のそれぞれのターゲット・キー指示子を使用してソース特性を識別し、ターゲット・キー識別子は、ターゲット・キーを生成するために使用されるべきソース特性（すなわち、キー・ソース特性）、およびターゲット・キーを生成するために使用されないソース特性（すなわち、非キー・ソース特性）を指示する。例えば、ターゲット・キー指示子は、ソース特性のセットのそれぞれに対して１ビットを提供することができ、当該ビットが「真」にセットされると、関連付けられるソース特性の値がターゲット・キーを生成するために使用される。
【００３３】
ブロック５１０において、ログ生成コンポーネント１１０がソース・オブジェクトから識別されたソース特性の値を抽出し、抽出された値を、選択されたグループ内の行のそれぞれの中のマップ識別子によって指定される順序でバッファ内に格納する。処理は、ブロック５１０（図５）からブロック５１２（図６）に続く。
【００３４】
ブロック５１２において、ログ生成コンポーネント１１０が、キー・ソース特性の値をハッシュしてターゲット・キーを生成し、当該ターゲット・キーをバッファに追加する。この時点において、バッファは、キー・ソース特性の値、非キー・ソース特性の値、およびターゲット・キーを格納している。ブロック５１４において、ログ生成コンポーネント１１０が、ターゲット・キーをハッシュしてターゲット・パーティション識別子を生成し、当該ターゲット・パーティション識別子をバッファに追加する。特定の実施形態において、パーティションの数は事前定義（「Ｎ」）であり、ブロック５１４において使用されるハッシュは０〜（Ｎ−１）の範囲内のターゲット・パーティション識別子を生成する。
【００３５】
ブロック５１６において、ログ生成コンポーネント１１０が、ソース・メソッドがそのために存在する各ソース特性に対してソース・メソッドを実行し、バッファ内のソース特性の値を、実行されたソース・メソッドによって返される結果値に置き換える。すなわち、ソース・メソッドは、特定のソース特性のためには存在しない。
【００３６】
この時点において、バッファは、キー・ソース特性の値、非キー・ソース特性の値、ターゲット・キー、およびターゲット・パーティション識別子を格納している。キー・ソース特性の値および非キー・ソース特性の値が中間型ペイロードを形成する。ブロック５１８において、ログ生成コンポーネント１１０が、バッファ内に格納されている値、シーケンス番号、トランザクション識別子、命令コード、ソース・システム・エンティティ修正タイムスタンプ、ターゲット型、提出済みのフェーズ値を示すフェーズ値、フェーズ・タイムスタンプ、および処理状態をログ記録内に書き込むことによって、ログ記録を生成する。いくつかの実施形態では、シーケンス番号は、十分に精度の高い原子単調シーケンス番号ジェネレータに従って生成される。
【００３７】
ブロック５２０において、ログ生成コンポーネント１１０が、すべてのグループが選択されたか否かを判断する。そうである場合、処理が完了し、そうでない場合、処理はブロック５０６に続いて同じターゲット型を有する別の行グループが選択される。
【００３８】
図７は、特定の実施形態による、ログ記録の非回復処理のためのロジックを示す。図７の処理は、「通常」（すなわち、非回復）処理と称される場合がある。制御は、ブロック６００において、ログ・コンシューマ・コンポーネント１２０が、提出済みフェーズにあるログ記録（すなわち、提出済みのフェーズ値を有するログ記録）を、ソース・システム・エンティティ修正タイムスタンプの順にプルすることによって開始する。ブロック６０２において、ログ・コンシューマ・コンポーネント１２０が、プルされたログ記録をディスパッチ・テーブル内にプッシュする。特定の実施形態において、ディスパッチ・テーブルは複数のバケットを有するハッシュ・テーブルであり、プルされた記録のそれぞれが、そのログ記録のターゲット・キーに基づいてバケットのうちの１つの中に格納される。ブロック６０４において、ログ・コンシューマ・コンポーネント１２０が、プッシュされたログ記録のそれぞれのフェーズ値を送信中に更新する。特定の他の実施形態において、バケットは、永続記憶装置内のログ記録の順序付けされた待ち行列であり、当該順序付けは、ログ記録のシーケンス番号およびソース・システム・エンティティ修正タイムスタンプに基づく。
【００３９】
図８は、特定の実施形態による回復処理のためのロジックを示す。制御は、ブロック７００において、ログ・コンシューマ・コンポーネント１２０が、送信中フェーズ、またはソース・システム・エンティティ状態変更完了フェーズにあるログ記録（すなわち、送信中またはソース・システム・エンティティ状態変更完了のフェーズ値を有するログ記録）を、ソース・システム・エンティティ修正タイムスタンプの順にプルすることによって開始する。他の実施形態において、ログ・コンシューマ・コンポーネント１２０は、シーケンス番号の順にログ記録をプルすることができる。ブロック７０２において、ログ・コンシューマ・コンポーネント１２０が、プルされたログ記録をディスパッチ・テーブル内にプッシュする。例えば、前回のクラッシュによる再起動からのコールド・スタートがあった場合、ログ記録のうちのいくつかは完了フェーズにある（例えば、それらが送信中またはソース・システム・エンティティ状態変更完了のフェーズのうちの１つにある）場合もあるし、ない場合もあり、これらのログ記録は未完了フェーズを完了させて記録を適切に完了フェーズにする処理のためにプルされる。従来技術であれば、二相コミットが実行されていたであろう。他方、格納されているフェーズ情報を用いてデータ整合性を提供することによって、二相コミットを使用することが回避される。
【００４０】
特定の実施形態において、トランザクションの所与のセットについて、ログ・コンシューマ・コンポーネント１２０は、ソース内で同じキー値を修正するトランザクションを見つけるか、または１つまたは複数のパラメータについて同じパラメータ値を有する同じターゲットを実行するトランザクションを見つける。これらの識別されたトランザクションは、元のトランザクションの順序で順次実行される。他のトランザクションは任意の順序で実行されることができる。
【００４１】
図９〜図１１は、特定の実施形態による、ログ記録をターゲット・システム１７０に送信するためのロジックを示す。制御は、ブロック８００において、ログ最適化コンポーネント１３０が、ディスパッチ・テーブルから未処理バケットを選択することによって開始する。ブロック８０２において、ログ最適化コンポーネント１３０が、バケットを処理済みとしてマーキングする。特定の実施形態において、バケットは処理済みまたは未処理のいずれかとしてマーキングされることができる。ブロック８０４において、ログ最適化コンポーネント１３０は、ログ記録を、バケットからメモリに移動させて、メモリ内ログ記録を作成する。ブロック８０６において、最適化コンポーネント１３０が、最初のメモリ内ログ記録から始まる、次のメモリ内ログ記録を選択し、メモリ内ログ記録は、先入れ先出し（Ｆｉｒｓｔ−Ｉｎ，  Ｆｉｒｓｔ−Ｏｕｔ、ＦＩＦＯ）順に処理される。ブロック８０８において、ログ最適化コンポーネント１３０が、すべてのメモリ内ログ記録が選択されたか否かを判断する。そうである場合、処理はブロック８３２に続き、そうでない場合、処理はブロック８１０（図１０）に続く。
【００４２】
ブロック８３２において、ログ最適化コンポーネント１３０が、バケット内に新たなログ記録が存在するか否かを判断する。そうである場合、処理はブロック８０４に続き、そうでない場合、処理はブロック８３４に続く。ブロック８３４において、ログ最適化コンポーネント１３０が、ディスパッチ・テーブルからバケットを消去する。
【００４３】
従って、バケットが消去されると、ログ最適化コンポーネント１３０は図９〜図１１に従う処理のために別のバケットを選択する。このように、ログ最適化コンポーネント１３０は、バケットを１つずつ処理する。
【００４４】
ブロック８１０（図１０）において、ログ最適化コンポーネント１３０が、ターゲット・システム・エンティティ・テーブル３１０内にターゲット・キーが存在するか否かを判断する。そうである場合、処理はブロック８２０に続き、そうでない場合、処理はブロック８１２に続く。すなわち、ターゲット・キーがターゲット・システム・エンティティ・テーブル３１０内に存在する場合、ログ最適化コンポーネント１３０はこのログ記録を送信すべきか否かを判断する追加の処理を実行する。ターゲット・キーがターゲット・システム・エンティティ・テーブル３１０内に存在しない場合、ログ最適化コンポーネント１３０はこのログ記録を送信すべきであると判断する。
【００４５】
ブロック８１２において、ログ最適化コンポーネント１３０が、選択されたメモリ内ログ記録のために、ターゲット・システム・エンティティ・テーブル３１０内にターゲット・キーを有する新たな行を作成する。ブロック８１４において、ログ最適化コンポーネント１３０が、ソース・システム・エンティティ・リンク・テーブル３２０内に新たな行を作成し、ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ参照カウントをインクリメントする。ブロック８１４から、処理はブロック８１６（図１１）に続く。
【００４６】
ブロック８１６において、ログ最適化コンポーネント１３０は、選択されたメモリ内ログ記録のフェーズ値を、ソース・システム・エンティティ完了に変更する。ブロック８１８において、ログ最適化コンポーネント１３０が、選択されたログ記録をターゲット・システム１７０に送信する。ブロック８１８の処理のさらなる詳細は、図１２を参照して記載されている。ブロック８２０において、ログ最適化コンポーネント１３０は、選択されたメモリ内ログ記録のフェーズ値を完了に変更し、選択されたメモリ内ログ記録の処理状況を、送信が成功したかまたは失敗したかに応じて「送信成功」または「送信失敗」に変更する。ブロック８２０から、処理はブロック８０６（図９）に続く。
【００４７】
図１０に戻って、ブロック８２２において、ログ最適化コンポーネント１３０が、ターゲット・システム・エンティティ・テーブル３１０内のソース・システム・エンティティ修正タイムスタンプが、選択されたメモリ内ログ記録のソース・システム・エンティティ修正タイムスタンプよりも小さい（すなわち、「＜」）か否かを判断する。そうである場合、処理はブロック８２４に続き、そうでない場合、処理はブロック８２６に続く。ブロック８２４において、ログ最適化コンポーネント１３０が、ターゲット・システム・エンティティ・テーブル３１０内のソース・システム・エンティティ修正タイムスタンプを、選択されたメモリ内ログ記録のソース・システム・エンティティ修正タイムスタンプに更新する。ブロック８２４から、処理はブロック８１６（図１１）に続く。
【００４８】
ブロック８２６において、ログ最適化コンポーネント１３０が、選択されたメモリ内ログ記録が送信されるべきであると指示する規則が存在するか否かを判断する。そうである場合、処理はブロック８１６（図１１）に続き、そうでない場合、処理はブロック８２８に続く。ブロック８２８において、ログ最適化コンポーネント１３０が、選択されたメモリ内ログ記録はターゲット・システム１７０に送信すべきでないと判断する。ブロック８３０において、ログ最適化コンポーネント１３０は、選択されたメモリ内ログ記録のフェーズ値を完了に変更し、選択されたメモリ内ログ記録の処理状況を、「未送信」に変更する。
【００４９】
一例として、ソース・システム１６０におけるソース・ローカル・アプリケーションは、身分証明、書式、請求または何らかの他のアーティファクトに使用される文書を変更するトランザクションを発行する。この例について、図５および図６は、トランザクションを発行するソース・ローカル・アプリケーションからどのようにデータが収集されるかを示し、図７は、どのように正確な順序付けが維持され、従って身分証明、書式、請求または他のアーティファクトのためのソース・ローカル文書整合性がターゲット・システム１７０内で維持されるかを示し、図８は、たとえシステム障害の場合であっても、どのようにデータ整合性が維持され、障害が修正された後に動作を再開することができるかを示し、図９〜図１１は、最適化がどのように機能するか（例えば、複製身分証明書（例えば、運転免許証、パスポートなど）は、細部においては異なるが、全く同じものとして取り扱われるおそれがあり、送信される必要がない場合がある）を示し、図１２を参照すると、ターゲット・システム１７０は、自動的に呼び出すことができるＡＰＩ（例えば、「パーティを追加する」のような機能の周辺のウェブサービスベースのＡＰＩ）を有することができる。
【００５０】
図１２は、特定の実施形態による、ログ記録を送信するための詳細なロジックを示す。制御はブロック９００において、ターゲット・メソッドがそのために存在するバッファ内の各特性に対して、ターゲット・システム変換コンポーネント１４０を用いてターゲット・メソッドを実行し、ターゲット・特性の値を、実行されたターゲット・メソッドによって返される結果値に置き換えてターゲット・バッファを作成することによって開始する。このようにして、ソース特性の値が変換される。ブロック９０２において、各ターゲット型について、ターゲット・システム変換コンポーネント１４０が、ログ記録内の命令コード、ターゲット型、およびターゲット特性識別子に基づいてコード・ブロックを識別する。ブロック９０４において、ターゲット・システム変換コンポーネント１４０が、コード・ブロックを線形化して線形化コードを形成する。コード・ブロックはターゲット・インタフェースとして説明される場合もある。ブロック９０６において、ターゲット・システム変換コンポーネント１４０が、線形化コードを実行して、変換されたソース特性を有するログ記録をターゲット・システム１７０に配信する。特定の実施形態において、この実行はターゲット・システムＡＰＩを使用してログ記録を配信する。例えば、ターゲット・システム変換コンポーネント１４０は線形化コードまで分岐して実行を開始することができる。ブロック９０８において、ターゲット・システム変換コンポーネント１４０が、ターゲット・システム１７０に対してコミット・コード・ブロックを実行する。ブロック９１０において、ターゲット・システム変換コンポーネント１４０が、ターゲット・システム１７０から確認応答を受け取る。ブロック９１２において、ターゲット・システム変換コンポーネント１４０が、ターゲット・システム・エンティティ・テーブル３１０内にターゲット・ハンドルを格納する。
【００５１】
このようにして、ターゲット・システム変換コンポーネント１４０は、識別されたパラメータを用いて、生成された線形化コードを実行する。ターゲット・システム変換コンポーネント１４０はいくつかの拡張点を提供し、当該拡張点は、データ変換が適用されることだけでなく、変換されたデータを用いて、ターゲット・システム１６０に対する正しいローカル・コールが呼び出されることも確実にするために提供される。それらのローカル・コールは、適用されるべき任意のプログラム動作が、ローカル整合性およびローカル最適化を維持するためにフロー全体に正確に投入されることができることを確実にする。
【００５２】
ターゲット・インタフェース（すなわち、コード・ブロック）を含むこと、および変換された値をパラメータ（すなわち、特性）に当てはめることによって、これは、そうでなければ実行しなければならないであろうプログラミングを最小限に抑える。
【００５３】
図１３は、特定の実施形態によるスケールアップされたシステムを示す。特定の実施形態において、ログ１５０はソース・システム１６０データベース１０００内に格納されている。特定の実施形態において、ログ・コンシューマ・コンポーネント１２０は、単一の待ち行列コンシューマ・スレッドおよびユーザが構成可能な複数の待ち行列ワーカ・スレッドを用いて構築される。待ち行列コンシューマ・スレッドは、ディスパッチ・テーブル（例えば、メモリ内ハッシュ・テーブル）にデータを投入する。特定の実施形態において、システムの処理インスタンスは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含むものとして説明される場合がある。
【００５４】
ディスパッチ・テーブルは、それぞれがキーを用いて直接アドレス指定されることができる多数のハッシュ・バケットを有する。使用されるキーは、ログ記録ターゲット・キー値である。ハッシュ・バケットは、単一の順序付けされた待ち行列を含む。バケット内の各順序付けされた待ち行列は、特定のターゲット・キーに関連付けられる。各順序付けされた待ち行列は、すべて同じターゲット・キーを有する多数のメモリ内ログ記録エントリを有することができる。これらのエントリは順番に保持される。これらの待ち行列内の各メモリ内ログ記録は、ターゲット・システム１６０に配信可能なログ行である。待ち行列内のメモリ内ログ記録は、シーケンス番号またはソース・システム・エンティティ修正タイムスタンプのいずれかによって順序付けされる。特定の実施形態において、ディスパッチ・テーブルに対して固定されるバケット数は設定可能である。１つまたは複数の待ち行列ワーカ・スレッドは、ディスパッチ・マップ内のハッシュ・バケットからメモリ内記録を順番にかつ並列に消費し、図１２に記載されるフローを使用してのメモリ内ログ記録のターゲット・システム１６０への配信に進み、その後、エラー有りまたはエラー無しの完了フェーズにあるとしてログ行をマーキングする。
【００５５】
特定の実施形態において、ターゲット・システム１７０にディスパッチされるログ１５０は、ターゲット・システム１７０がトランザクションを処理するべき順序で単一のスレッドに入れられる。ターゲット・システム型ハンドラがハンドルを返すと、待ち行列ワーカ・スレッドはログ１５０を完了フェーズにマーキングする。
【００５６】
図１４は、特定の実施形態によるスケールアウトされたシステムを示す。論理的に区分化されたログ・テーブル１１００が、データベース１０００内に格納されている。特定の実施形態において、各待ち行列コンシューマ・スレッドは互いに素なパーティション・セットを割り当てられる。すなわち、待ち行列コンシューマよりも多くのパーティションが存在する場合がある。Ｎは、達成可能な並列性に関するノード機能の立地因子および実際のターゲット・システム１６０のスループットを考慮に入れて、製品を焼くときにまたは製品の展開／インストール時に設定することができる。図１４において、複数の処理インスタンスが存在し、処理インスタンスのそれぞれは１つまたは複数のパーティションを割り当てられる。実施形態は、システムのデータ整合性を損なうことなくトランザクションを順序付けし直すことを可能にすることによって、順序または整合性を損なうことなく、より良好な並列性を可能にする。これは、図６におけるブロック５１２および５１４の結果として達成される。ブロック５１２および５１４の処理は、その後図１４において使用されるパーティション識別子を生成する。図１４において、パーティションは並列処理インスタンスの間で分散される。従って、実施形態はブロック５１２および５１４に記載されるハッシュ値に基づいてパーティションを使用し、その後、パーティションは、図１４に記載される並列スレッドにわたって分散される。その上、トランザクションを順序付けし直すことによって、そうしない場合に通常発生するよりも多くのパーティションにわたって作業負荷を分散させることが可能になり、これはより良好な並列性をもたらす。
【００５７】
スケールアップおよびスケールアウトに関して、ターゲット・システム１７０は、同じターゲット・キーによる操作に対して冪等である。
【００５８】
実施形態は、情報の共有、変換、およびローカル使用の根本的な機能を達成する効率的で高信頼性の方法を可能にする技術であることを認めるものである。実施形態は、（ローカル・アプリケーションについてデータがどのように表現されるかのローカル最適化を維持するための）データ変換におけるアプリケーションまたは展開に特有の拡張性をプログラムする能力を提供する。
【００５９】
実施形態によれば、ソース・システム１６０からターゲット・システム１７０へとデータが変換され、ここで、各エンティティは関連付けられるキーを有すると想定されている。特定の実施形態において、ソース・キーとターゲット・キーとは同じである。これによって、型変換またはより高度なデータ・モデル変換を単純化することができる。特定の実施形態において、特定のシステムによって提供される基礎的で非標準的なデータ・モデルに起因して必要とされるものは、型変換とデータ・モデル変換との両方の組み合わせである可能性がある。実施形態によれば、特定の変換技法は、拡張可能スタイルシート言語変換（ｅＸｔｅｎｓｉｂｌｅ  Ｓｔｙｌｅｓｈｅｅｔ  Ｌａｎｇｕａｇｅ  Ｔｒａｎｓｆｏｒｍａｔｉｏｎ、ＸＳＬＴ）を含む、現行の技術で利用可能な技法を含むことができる。実施形態は、設計時に１つまたは複数の変換を指定する技法が提供され、かつ実行時に効率的に変換を適用する技法が存在することを想定している。
【００６０】
実施形態は、従来のシステムでは利用可能でない効率的な並列性を可能にしながら、依然として強いデータ整合性をもたらす、データ変換が適用される順序を最適化する能力を提供する。
【００６１】
実施形態によれば、完全に最適化された並列性を有する、新たなトランザクションがソース・システム１６０上で検出される。これは、ソース・システム１６０の末端に内蔵されている特性であり、ソース・システム１６０の末端上のアプリケーションに特別にユーザがカスタマイズする必要はない。実施形態は、トランザクションは、必ずしもソース・システム１６０の元の変更順序ではなく、ターゲット・キー値の順に適用されるべきであることを認識している。
【００６２】
例えば、ソース・システム・エンティティ・インスタンス２１０が、その一時的な順で実行されている２つのトランザクションＳ１、Ｓ２を有していると仮定し、ここで、Ｓ１はソース・システム・エンティティ・インスタンス２１０を特性値Ｐ１＝「ａ」、Ｐ２＝「ｂ」を用いて更新し、Ｓ２は同じソース・システム・エンティティ・インスタンス２１０を特性値Ｐ１＝「ｂ」、Ｐ２＝「ｄ」を用いて更新しているものとする。ターゲット・システム・エンティティ・インスタンス２９０が、Ｐ１をターゲット・システム・エンティティ・インスタンス２９０の主キーにマッピングする、Ｐ１に対する変換を使用する場合、この事例において、実施形態は任意のターゲット・トランザクションの順序でターゲット・システム・トランザクションＲ１およびＲ２を適用する。これは、Ｓ１、Ｓ２は同じソース・システム・エンティティ・インスタンス２１０に影響を及ぼすが、ターゲット・トランザクションは本質的には独立したターゲット・システム・エンティティ・インスタンスに影響を及ぼすことになるため、許容される。しかしながら、Ｓ１およびＳ２が両方ともＰ１＝「ａ」に更新されるとすると、ターゲット・システム・トランザクションＲ１、Ｒ２はソース・システム・エンティティ・インスタンス２１０の順序において適用される。これは、ターゲット・トランザクションが同じターゲット・システム・インスタンス２９０に影響を与えているためである。
【００６３】
別の例では、２つの独立したソース・システム・エンティティ・インスタンス上でランダムに発生する２つのトランザクションＳ１およびＳ２が存在し、ここで、第１のソース・システム・エンティティ・インスタンスにおいてＰ１＝「ａ」かつＰ２＝「ｂ」であり、第２のソース・システム・エンティティ・インスタンスにおいてＰ１＝「ａ」かつＰ２＝「ｃ」であり、この場合、ターゲット・システム・トランザクションＲ１およびＲ２は、Ｓ１およびＳ２がソース・システム・エンティティ・インスタンス内で実際に発生したものと同じ自然な順序に従う。これは、２つのソース・システム・エンティティ・インスタンスが同じターゲット・システム・エンティティ・インスタンスに影響を及ぼしたためである。
【００６４】
実施形態は、ターゲット・トランザクションを順序付けるとともに、高度な設計基準に基づいて、いずれが独立しているかを判断することが可能ないくつかの技法を提供する。これらの技法は、スケールアップおよびスケールアウトの手法を要求するシステム全体に対して必要とされるスループット要件に応じて変化する。
【００６５】
実施形態によれば、拡張可能変換プロシージャを実行することによって取得される変換データを使用してトランザクションが適用される。実施形態は、ログ１５０（いずれの関数が呼び出すのに適切であるかを判断するためのデータ指向型テーブルである場合がある）を使用する。この関数は、実行時にリンクされることができ、アプリケーションまたは展開に特有であることができる。
【００６６】
実施形態は、一般的な情報管理（例えば、ＤＢＭＳ）シナリオに適用可能であり、ここでは、複製およびトランザクションの文脈におけるエンティティおよびモデルの変換は共通である。例えば、データ・ウェアハウスの構築またはターゲット・システム１６０の構築は、本明細書において開示されている実施形態の別の応用形態である。
【００６７】
実施形態は、必要とされるサーバをより少なくし、それらのサーバの必要とされるモニタリングおよび管理を抑えることを可能とし、必要な場合には適用されるサーバをより多くすることを可能とする。
【００６８】
追加の実施形態の詳細
当業者には明らかであろうように、本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。したがって、本発明の諸態様は、本明細書においてはすべて包括的に「回路」、「モジュール」または「システム」と称する場合がある、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、または、ソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態を取り得る。さらに、本発明の諸態様は、その上にコンピュータ可読プログラム・コードを具現化される１つまたは複数のコンピュータ可読媒体内で具現化されるコンピュータ・プログラム製品の形態を取り得る。
【００６９】
１つまたは複数のコンピュータ可読媒体の任意の組み合わせを利用することができる。コンピュータ可読媒体は、コンピュータ可読信号媒体またはコンピュータ可読記憶媒体とすることができる。コンピュータ可読記憶媒体はたとえば、電子、磁気、光学、電磁、赤外線、もしくは半導体のシステム、装置、もしくはデバイス、または上記の任意の適切な組み合わせとすることができるが、これらには限定されない。コンピュータ可読記憶媒体のより具体的な例（非排他的なリスト）は、以下の：１つまたは複数のワイヤを有する電気接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ、ＲＡＭ）、読み出し専用メモリ（ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、ＥＰＲＯＭまたはフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、ＣＤ−ＲＯＭ）、光学記憶デバイス、磁気記憶デバイス、または上記の任意の適切な組み合わせを含むであろう。本明細書の文脈においては、コンピュータ可読記憶媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと関連して使用するためのプログラムを含むか、または記憶することができる任意の有形媒体とすることができる。
【００７０】
コンピュータ可読信号媒体は、その中にコンピュータ可読プログラム・コードを具現化されている、たとえばベースバンド内かまたは搬送波の一部としての伝播データ信号を含むことができる。このような伝播信号は、電磁、光学、またはそれらの任意の適切な組み合わせを含むが、これらには限定されない様々な形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読記憶媒体ではなく、命令実行システム、装置、またはデバイスによって、またはそれらと関連して使用するためのプログラムを通信、伝播、または伝送することができる任意のコンピュータ可読媒体とすることができる。
【００７１】
コンピュータ可読媒体上に具現化されるプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、または上記の任意の適切な組み合わせを含むが、これらには限定されない任意の適切な媒体を使用して伝送することができる。
【００７２】
本発明の諸態様のための動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのようなオブジェクト指向プログラミング言語、および、「Ｃ」プログラミング言語または同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つまたは複数のプログラミング言語の任意の組み合わせで書くことができる。プログラム・コードは、その全体をユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして、部分的にユーザのコンピュータ上でかつ部分的にリモート・コンピュータ上で、またはその全体をリモート・コンピュータもしくはサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ、ＬＡＮ）もしくは広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ、ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続することができるか、または、接続は外部コンピュータに対して（たとえば、インターネット・サービス・プロバイダを使用してインターネットを通じて）為されてもよい。
【００７３】
本発明の実施形態による、方法、装置（システム）およびコンピュータ・プログラム製品のフローチャートの図、もしくはブロック図またはその両方を参照して、本発明の諸態様を下記に記載する。フローチャートの図もしくはブロック図またはその両方の各ブロック、および、フローチャートの図もしくはブロック図またはその両方の中の複数のブロックの組み合わせは、コンピュータ・プログラム命令によって実施することができることは理解されよう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、またはマシンを生成する他のプログラマブル・データ処理装置のプロセッサに提供されることができ、それによって、コンピュータまたは他のプラグラマブル・データ処理装置のプロセッサを通じて実行する命令は、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定される機能／操作を実施するための手段を作り出す。
【００７４】
これらのコンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに特定の様式で機能するように指示することができるコンピュータ可読媒体内に格納することもでき、当該様式によって、コンピュータ可読媒体内に格納される命令が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定される機能／操作を実施する命令を含む製造品を作り出す。
【００７５】
コンピュータ・プログラム命令は、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上にロードされて、一連の動作ステップが、コンピュータ、他のプログラマブル装置、または他のデバイス上で実行されるようにして、コンピュータで実施されるプロセスを生成することもでき、それによって、コンピュータまたは他のプログラマブル装置上で実行する命令が、フローチャートもしくはブロック図またはその両方の１つまたは複数のブロックにおいて指定される機能／操作を実施するためのプロセスを提供する。
【００７６】
記載されている操作を実施するコードはさらに、ハードウェア・ロジックまたは回路（例えば、集積回路チップ、プログラマブル・ゲート・アレイ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、ＰＧＡ）、特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ、ＡＳＩＣ）などにおいて実施されることができる。
【００７７】
図１５は、特定の実施形態に従って使用することができるシステム・アーキテクチャ１２００を示す。コンピューティング・デバイス１００、ソース・システム１６０もしくはターゲット・システム１７０またはそれらの組み合わせが、システム・アーキテクチャ１２００を実装することができる。システム・アーキテクチャ１２００はプログラム・コードの格納もしくは実行またはその両方に適しており、システム・バス１２２０を通じてメモリ要素１２０４に直接的にまたは間接的に結合される少なくとも１つのプロセッサ１２０２を含む。メモリ要素１２０４は、プログラム・コードの実際の実行の間に利用されるローカル・メモリ、大容量記憶装置、および、実行中に大容量記憶装置からコードを取り出さなければならない回数を低減するために少なくともいくらかのプログラム・コードの一時記憶を提供するキャッシュ・メモリを含むことができる。メモリ要素１２０４は、オペレーティング・システム１２０５と、１つまたは複数のコンピュータ・プログラム１２０６とを含む。
【００７８】
入出力（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ、Ｉ／Ｏ）デバイス１２１２、１２１４（キーボード、ディスプレイ、ポインティング・デバイスなどを含むが、これらには限定されない）を、直接に、または、介在するＩ／Ｏコントローラ１２１０を通じてのいずれかでシステムに結合することができる。
【００７９】
ネットワーク・アダプタ１２０８も、データ処理システムが、介在するプライベート・ネットワークまたはパブリック・ネットワークを通じて他のデータ処理システムまたは遠隔のプリンタもしくは記憶デバイスに結合されることを可能にするように、システムに結合することができる。モデム、ケーブル・モデム、およびＥｔｈｅｒｎｅｔ（Ｒ）カードは、現在利用可能なタイプのネットワーク・アダプタ１２０８のほんの一部に過ぎない。
【００８０】
システム・アーキテクチャ１２００は、ストレージ１２１６（例えば、磁気ディスク・ドライブ、光ディスク・ドライブ、またはテープ・ドライブのような不揮発性記憶領域など）に結合することができる。ストレージ１２１６は、内部記憶デバイスまたは付属のもしくはネットワーク・アクセス可能なストレージを含むことができる。ストレージ１２１６内のコンピュータ・プログラム１２０６は、メモリ要素１２０４内に読み出されて当該技術分野において既知の様式でプロセッサ１２０２によって実行されることができる。
【００８１】
システム・アーキテクチャ１２００は、例示されているものよりも少数の構成要素、本明細書には例示されていない追加の構成要素、または例示されている構成要素および追加の構成要素の何らかの組み合わせを含んでもよい。システム・アーキテクチャ１２００は、メインフレーム、サーバ、パーソナル・コンピュータ、ワークステーション、ラップトップ、ハンドヘルド・コンピュータ、電話技術デバイス、ネットワーク・アプライアンス、仮想化デバイス、ストレージ・コントローラなどのような、当該技術分野において既知の任意のコンピューティング・デバイスを含んでもよい。
【００８２】
図面内のフローチャートおよびブロック図は本発明の様々な実施形態によるシステム、方法およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、指定される論理機能（複数の場合もあり）を実施するための１つまたは複数の実行可能命令を含むモジュール、セグメント、またはコードの一部を表すことができる。いくつかの代替的な実施態様では、ブロック内に記載されている機能は、図面内に記載されている順序から外れて行われる場合があることにも留意すべきである。たとえば、連続して示されている２つのブロックは実際には実質的に同時に実行される場合があり、またはこれらのブロックは、関与する機能に応じて、時として逆の順序で実行される場合がある。ブロック図もしくはフローチャートの図またはその両方の各ブロック、およびブロック図もしくはフローチャートの図またはその両方のブロックの組み合わせは、指定される機能もしくは操作を実行する専用ハードウェア・ベースのシステム、または専用ハードウェアとコンピュータ命令との組み合わせによって実施することができることにも留意されよう。
【００８３】
本発明の実施形態の上記の記載は、例示および説明の目的で提示されてきた。排他的であることも、実施形態を開示された正確な形態に限定することも意図されてはいない。上記の教示を考慮して多くの改変および変更が可能である。この詳細な説明ではなく、本明細書に添付される特許請求の範囲の範囲によって、実施形態の範囲が限定されることが意図される。上記の明細書、例およびデータは実施形態の構成の製造および使用の完全な記載を提供する。本実施形態の精神および範囲から逸脱することなく多くの実施形態をなすことができるため、本実施形態は、以下に添付される特許請求の範囲、または後に提出される任意の特許請求の範囲、およびその均等物のうちに存する。
【図１】
2013513147.tif 000003
【図２】
2013513147.tif 000004
【図３】
2013513147.tif 000005
【図４】
2013513147.tif 000006
【図５】
2013513147.tif 000007
【図６】
2013513147.tif 000008
【図７】
2013513147.tif 000009
【図８】
2013513147.tif 000010
【図９】
2013513147.tif 000011
【図１０】
2013513147.tif 000012
【図１１】
2013513147.tif 000013
【図１２】
2013513147.tif 000014
【図１３】
2013513147.tif 000015
【図１４】
2013513147.tif 000016
【図１５】
2013513147.tif 000017
【手続補正書】
【提出日】平成24年7月26日(2012.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
ローカル・トランザクションによってソース・オブジェクトが変更されることに応答して、
ログ記録を生成するステップであって、前記ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、前記ソース特性はターゲット・キー指示子を使用して識別される、生成するステップと、
各ログ記録のフェーズ値に基づいて処理するための前記ログ記録を選択するステップであって、前記フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである、選択するステップと、
１つまたは複数の素パーティションを、複数の処理インスタンスのそれぞれに割り当てるステップと、
前記複数の処理インスタンスのそれぞれの制御下で、
前記処理インスタンスに割り当てられた前記１つまたは複数の素パーティション内のログ記録を送信するか否かを判断するステップと、
前記ログ記録を送信すべきであるとの判断に応答して、前記ログ記録を送信するステップとを含む、方法。
【請求項２】
前記ターゲット・キー指示子を使用して前記ソース特性の中のキー・ソース特性を識別するステップであって、前記ターゲット・キー指示子は、前記ソース特性のうちのいずれがターゲット・キーを生成するのに使用されるキー・ソース特性であるかを指示する、識別するステップと、
前記キー・ソース特性を使用して前記ターゲット・キーを生成するステップと、
前記ターゲット・キーを使用して前記ターゲット・パーティション識別子を生成するステップと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記ソース特性の値をバッファ内に格納するステップと、
ソース・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ソース・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたソース・メソッドによって返される結果値に置き換えるステップと
をさらに含む、請求項１または２に記載の方法。
【請求項４】
前記処理インスタンスのそれぞれは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含み、前記複数の待ち行列ワーカ・スレッドは前記ディスパッチ・マップ内の前記ログ記録を順番に、および並行して消費する、先行する請求項のいずれか一項に記載の方法。
【請求項５】
提出済みの前記フェーズ値を有するログ記録をプルするステップと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするステップと、
前記プルされたログ記録のそれぞれの前記フェーズ値を、送信中の前記フェーズ値に更新するステップと
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項６】
送信中またはソース・システム・エンティティ状態変更完了の前記フェーズ値を有するログ記録をプルするステップと、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするステップと
によって、回復処理を実行するステップ
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項７】
前記ログ記録を送信するか否かを判断するステップは、
前記ログ記録の前記ターゲット・キーがターゲット・システム・エンティティ・テーブル内にないという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと、
前記ログ記録の前記ターゲット・キーが前記ターゲット・システム・エンティティ・テーブル内にあるという判断、および、前記ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内のソース・システム・エンティティ修正タイムスタンプよりも小さいという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと、
前記ターゲット・システム・エンティティ・テーブル内の前記ソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内の前記ソース・システム・エンティティ修正タイムスタンプ以上であるという判断、および、前記ソース特性に基づいて前記ログ記録を送信すべきであることを指示する規則が存在するという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するステップと
をさらに含む、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記ログ記録を送信するステップは、
ターゲット・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ターゲット・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたターゲット・メソッドによって返される結果値に置き換えるステップであって、前記ソース特性は変換される、実行するとともに置き換えるステップと、
複数のターゲット型のそれぞれについて、実行されるべきコード・ブロックを識別するステップと、
前記変換されたソース特性を有する前記ログ記録を前記ターゲット・システムに配信するために、識別された各コード・ブロックを実行するステップと
をさらに含む、先行する請求項のいずれか一項に記載の方法。
【請求項９】
システムであって、
動作を実行するための回路を備え、前記回路は、
ローカル・トランザクションによってソース・オブジェクトが変更されることに応答して、
ログ記録を生成するための手段であって、前記ログ記録のそれぞれは、シーケンス識別子、ソース・システム・エンティティ修正タイムスタンプ、ターゲット・キー、ターゲット・パーティション識別子、およびソース特性の値を含み、前記ソース特性はターゲット・キー指示子を使用して識別される、生成するための手段と、
各ログ記録のフェーズ値に基づいて処理するための前記ログ記録を選択するための手段であって、前記フェーズ値は、提出済み、送信中、およびソース・システム・エンティティ状態変更完了のうちの１つである、選択するための手段と、
１つまたは複数の素パーティションを、複数の処理インスタンスのそれぞれに割り当てるための手段と、
前記複数の処理インスタンスのそれぞれの制御下で、
前記処理インスタンスに割り当てられた前記１つまたは複数の素パーティション内のログ記録を送信するか否かを判断するための手段と、
前記ログ記録を送信すべきであるとの判断に応答して、前記ログ記録を送信するための手段と
を備える、システム。
【請求項１０】
前記回路は、
前記ターゲット・キー指示子を使用して前記ソース特性の中のキー・ソース特性を識別するための手段であって、前記ターゲット・キー指示子は、前記ソース特性のうちのいずれがターゲット・キーを生成するのに使用されるキー・ソース特性であるかを指示する、識別するための手段と、
前記キー・ソース特性を使用して前記ターゲット・キーを生成するための手段と、
前記ターゲット・キーを使用して前記ターゲット・パーティション識別子を生成するための手段と
をさらに備える、請求項９に記載のシステム。
【請求項１１】
前記回路は、
前記ソース特性の値をバッファ内に格納するための手段と、
ソース・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ソース・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたソース・メソッドによって返される結果値に置き換えるための手段と
をさらに備える、請求項９または請求項１０に記載のシステム。
【請求項１２】
前記処理インスタンスのそれぞれは、待ち行列コンシューマ・スレッド、複数の待ち行列ワーカ・スレッド、およびディスパッチ・マップを含み、前記複数の待ち行列ワーカ・スレッドは前記ディスパッチ・マップ内の前記ログ記録を順番に、および並行して消費する、請求項９〜１１のいずれか一項に記載のシステム。
【請求項１３】
前記回路は、
提出済みの前記フェーズ値を有するログ記録をプルするための手段と、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするための手段と、
前記プルされたログ記録のそれぞれの前記フェーズ値を、送信中の前記フェーズ値に更新するための手段と
をさらに備える、請求項９〜１２のいずれか一項に記載のシステム。
【請求項１４】
前記回路は、
回復処理を実行するための手段であって、
送信中またはソース・システム・エンティティ状態変更完了の前記フェーズ値を有するログ記録をプルするための手段と、
前記プルされたログ記録を、前記ターゲット・キーに基づいてディスパッチ・テーブルの複数のバケットのうちの１つの中にプッシュするための手段と
を備える、回復処理を実行するための手段
をさらに備える、請求項９〜１３のいずれか一項に記載のシステム。
【請求項１５】
前記ログ記録を送信するか否かを判断するための前記手段は、
各行グループについて作成される前記ログ記録のために、以下の手段；
前記ログ記録の前記ターゲット・キーがターゲット・システム・エンティティ・テーブル内にないという判断に応答して、前記ログ記録をターゲット・システムに送信するための手段と、
前記ログ記録の前記ターゲット・キーが前記ターゲット・システム・エンティティ・テーブル内にあるという判断、および、前記ターゲット・システム・エンティティ・テーブル内のソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内のソース・システム・エンティティ修正タイムスタンプよりも小さいという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するための手段と、
前記ターゲット・システム・エンティティ・テーブル内の前記ソース・システム・エンティティ修正タイムスタンプが、前記ログ記録内の前記ソース・システム・エンティティ修正タイムスタンプ以上であるという判断、および、前記ソース特性に基づいて前記ログ記録を送信すべきであることを指示する規則が存在するという判断に応答して、前記ログ記録を前記ターゲット・システムに送信するための手段と
によって前記ログ記録を前記ターゲット・システムに送信するか否かを判断するための手段、
をさらに備える、請求項９〜１４のいずれか一項に記載のシステム。
【請求項１６】
前記ログ記録を送信するための前記手段は、
ターゲット・メソッドがそのために存在する前記ソース特性のそれぞれに対して、前記ターゲット・メソッドを実行するとともに、前記ソース特性の値を、前記実行されたターゲット・メソッドによって返される結果値に置き換えるための手段であって、それによって、前記ソース特性を変換する、置き換えるための手段と、
複数のターゲット型のそれぞれについて、実行されるべきコード・ブロックを識別する手段と、
前記変換されたソース特性を有する前記ログ記録を前記ターゲット・システムに配信するために、識別された各コード・ブロックを実行するための手段と
をさらに備える、請求項９〜１５のいずれか一項に記載のシステム。
【請求項１７】
請求項１〜８の何れか１つに記載の方法の各ステップをコンピュータに実行させる、コンピュータ・プログラム。
【請求項１８】
請求項１７記載の前記コンピュータ・プログラムをコンピュータ可読記録媒体に記録した、記録媒体。
【国際調査報告】
2013513147.tif 000018
2013513147.tif 000019
2013513147.tif 000020