(57)【要約】データベース動作方法及び装置が、本出願において提供される。方法は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、データベース動作コマンドについて予測実行を行うこと、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にすること、データベース動作コマンドをローカルに記録すること、及びデータベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、予測実行により生成される予測実行データを記録することと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することと、を含む。本出願は、トランザクションの実行効率を改善し、スループットキャパシティを改善することができる。
2018538634.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、
前記データベース動作コマンドについて予測実行を行うこと、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にすること、前記データベース動作コマンドをローカルに記録すること、及び前記データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、前記予測実行により生成される予測実行データを記録することと、
前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することと、
を含む、データベース動作方法。
【請求項２】
前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属するときに、前記データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみを前記予測実行データとして記録する、請求項１に記載の方法。
【請求項３】
前記対象トランザクションが、前記アプリケーションサーバによって実行される前に、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルにおいて前記データベースを構成することをさらに含む、請求項１に記載の方法。
【請求項４】
前記データベース動作コマンドについて前記予測実行を行うことが、
前記データベース動作コマンドが、前記データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされた前記データ環境に基づいて前記データベース動作コマンドの前記予測実行を行うことと、
前記データベース動作コマンドが、前記データベース非修正型コマンドに属する場合に、前記データベースにおいて前記データベース動作コマンドを実行して、前記データベース動作コマンドの前記予測実行を行うことと、を含む、請求項１に記載の方法。
【請求項５】
前記ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドの前記データ環境をシミュレートすること、及び前記シミュレートされたデータ環境に基づいて前記データベース動作コマンドの前記予測実行を行うことが、
前記データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、
前記データベースにおいて前記読み取りコマンドを実行してリードデータセットを取得すること、及び前記データベース動作コマンドの前記データ環境をシミュレートするためにローカルメモリバンク内に前記リードデータセットを記憶することと、
前記メモリバンクにおいて前記書き込みコマンドを実行して、前記リードデータセットを修正することと、を含む、請求項４に記載の方法。
【請求項６】
前記アプリケーションサーバに対応する前記データベースを制御して、前記ローカルに記録されたデータベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することが、
前記ローカルに記録されたデータベース動作コマンドを前記データベースに送信して、前記データベース動作コマンドを実行するように前記データベースに命令すること、及び前記データベースから返される前記データベース動作コマンドの実際の実行結果を受信することと、
前記実際の実行結果が、前記予測実行結果と一致する場合に、前記トランザクションコミットコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをコミット可能にすることと、
前記実際の実行結果が、前記予測実行結果と異なる場合に、トランザクションロールバックコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをロールバック可能にすることと、を含む、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
対象トランザクションがアプリケーションサーバによって実行されるときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、
前記データベース動作コマンドについて予測実行を行うこと、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にすること、前記データベース動作コマンドをローカルに記録すること、及び前記データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、前記予測実行により生成される予測実行データを記録することと、
前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することと、
を含む、データベース動作方法。
【請求項８】
アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、
前記データベース動作コマンドについて予測実行を行い、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にし、前記データベース動作コマンドをローカルに記録し、前記データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、前記予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、
前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、前記ローカルに記録されたデータベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行するために使用される、制御実行モジュールと、
を備える、データベース動作装置。
【請求項９】
前記予測実行モジュールは、前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属するときに、前記データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみを前記予測実行データとして記録するために使用される、請求項８に記載の装置。
【請求項１０】
前記対象トランザクションが、前記アプリケーションサーバによって実行される前に、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルにおいて前記データベースを構成するために使用される、構成モジュールをさらに備える、請求項８に記載の装置。
【請求項１１】
前記予測実行モジュールは、
前記データベース動作コマンドが、前記データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドのデータ環境をシミュレートし、シミュレートされた前記データ環境に基づいて前記データベース動作コマンドの前記予測実行を行い、
前記データベース動作コマンドが、前記データベース非修正型コマンドに属する場合に、前記データベースにおいて前記データベース動作コマンドを実行して、前記データベース動作コマンドの前記予測実行を行うために使用される、請求項８に記載の装置。
【請求項１２】
前記予測実行モジュールは、
前記データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、
前記データベースにおいて前記読み取りコマンドを実行してリードデータセットを取得し、前記データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内に前記リードデータセットを記憶し、
前記メモリバンクにおいて前記書き込みコマンドを実行して、前記リードデータセットを修正するために使用される、請求項１１に記載の装置。
【請求項１３】
前記制御実行モジュールは、
前記ローカルに記録されたデータベース動作コマンドを前記データベースに送信して、前記データベース動作コマンドを実行するように前記データベースに命令し、前記データベースから返される前記データベース動作コマンドの実際の実行結果を受信し、
前記実際の実行結果が、前記予測実行結果と一致する場合に、トランザクションコミットコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをコミット可能にし、
前記実際の実行結果が、前記予測実行結果と異なる場合に、トランザクションロールバックコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをロールバック可能にするために使用される、請求項８〜１２のいずれか１項に記載の装置。
【請求項１４】
アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、
前記データベース動作コマンドについて予測実行を行い、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にし、前記データベース動作コマンドをローカルに記録し、前記データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、前記予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、
前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行するために使用される、制御実行モジュールと、
を備える、データベース動作装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの技術分野に関し、特に、データベース動作方法及び装置に関する。
【背景技術】
【０００２】
データベーストランザクションは、作業の単一論理ユニットによって実行される一連の動作をいい、それらの動作は、実行が完了したか、または全く実行されていないかのいずれかである。単一トランザクションは、ステートメントなどの、一連のデータベース動作コマンドによって形成される。
【０００３】
データの読み取り同時実行性の正確性を保証するために、トランザクション分離レベルの概念が、データベース動作について提案されている。ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）標準において、４つのトランザクション分離レベルが定義されている。Ｒｅａｄ  Ｃｏｍｍｉｔｔｅｄは、いくつかのアプリケーションプログラムによって優先的に考慮される分離レベルであり、それは、ダーティリードを回避することができ、比較的良好な同時実行性性能を有する。しかしながら、非再現リードの問題が、依然として起こり得る。
【０００４】
Ｒｅａｄ  Ｃｏｍｍｉｔｔｅｄ分離レベルのトランザクションが直面する非再現リードの問題について、Ｒｅａｄ  Ｃｏｍｍｉｔｔｅｄ分離レベルのトランザクションにおけるあるデータの分離レベルは、データが再現的に読み取られ得ることを保証するために、「ｆｏｒ  ｕｐｄａｔｅ」ステートメントを通して一時的にアップグレードされ得る。しかしながら、これは、システムの同時実行性能に重大な影響を及ぼし、かつ実行効率低下につながることとなり、比較的低いトランザクションのスループットキャパシティを有する。
【発明の概要】
【０００５】
本出願のいくつかの態様は、データベース動作の方法及び装置を提供し、それは、データベースシステムの同時実行性能を保証し、トランザクションの実行効率を改善し、トランザクションのスループットキャパシティを増加させるために使用される。
【０００６】
本出願の１つの態様では、データベース動作方法が提供される。データベース動作方法は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、データベース動作コマンドについて予測実行を行うこと、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にすること、データベース動作コマンドをローカルに記録すること、及びデータベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、予測実行により生成される予測実行データを記録することと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することと、を含む。
【０００７】
本出願の別の態様では、データベース動作方法が提供される。データベース動作方法は、対象トランザクションがアプリケーションサーバによって実行されるときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、データベース動作コマンドについて予測実行を行うこと、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にすること、データベース動作コマンドをローカルに記録すること、及びデータベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録することと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することと、を含む。
【０００８】
本出願のさらなる別の態様では、データベース動作装置が提供される。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される、制御実行モジュールと、を含む。
【０００９】
本出願のさらなる別の態様では、データベース動作装置が提供される。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される、制御実行モジュールと、を含む。
【００１０】
本出願において、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、データベース修正型コマンドもしくはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し、これによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
【００１１】
本出願の実施形態における技術的解決法をより良く説明するために、実施形態または既存技術の説明のために必要とされる添付図面が、ここで簡単に説明される。説明される図面が、実施形態のうちのいくつかを表すことは明らかである。これらの図面に基づいて、当業者は、いかなる創造的努力も行うことなく、他の図面を得ることができる。
【図面の簡単な説明】
【００１２】
【図１】既存技術における、データベースアプリケーションシステムの配置図である。
【図２】本出願の実施形態によって提供される、データベースアプリケーションシステムの配置図である。
【図３】本出願の別の実施形態によって提供される、データベースアプリケーション方法のフローチャートである。
【図４】本出願のさらなる別の実施形態によって提供される、データベースアプリケーション方法のフローチャートである。
【図５】本出願のさらなる別の実施形態によって提供される、データベースアプリケーション装置の概略的な構造図である。
【図６】本出願のさらなる別の実施形態によって提供される、データベースアプリケーション装置の概略的な構造図である。
【発明を実施するための形態】
【００１３】
本出願の実施形態の目的、技術的解決法及び利点をより明確にするために、本出願の実施形態における技術的解決法が、本出願の実施形態における添付図面と併せて、明確かつ完全なやり方で説明される。説明される実施形態が、実施形態のうちの全てではなくいくつかを表すことは明らかである。本出願の実施形態に基づいて、当業者によっていかなる創造的努力も行うことなく得られる他の実施形態全てが、本出願の保護範囲に属するものとする。
【００１４】
図１は、既存技術における、データベースアプリケーションシステムの配置図である。図１に示されるように、システムは、アプリケーションサーバ１０と、データベース２０とを含む。１つまたは複数のアプリケーションサーバ１０と、１つまたは複数のデータベース２０とが存在してもよい。図１は、１つのアプリケーションサーバ１０と、１つのデータベース２０を、一例として単に示しているだけである。データベース２０に対してトランザクションの形態でアクセスが行われるとき、アプリケーションサーバ１０は、トランザクションのロジックを実行し、トランザクション内のデータベース動作コマンドをデータベース２０に対して適用する。実行される必要があるトランザクション内のデータベース動作コマンドは、予め知られることができないため、それによりトランザクションの実行効率は低い。これは、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルの下で「ｆｏｒ  ｕｐｄａｔｅ」ステートメントを通してデータをロックする方式について特に当てはまる。その実行効率はより低く、比較的低いスループットキャパシティを有する。
【００１５】
本出願は、既存技術において存在する不備を対象とする、新規なデータベースアプリケーションシステムを提供する。図２に示されるように、システムは、アプリケーションサーバ１０とデータベース２０との間に、データベース動作装置３０を追加する。データベース動作装置３０は、本出願において提供されるデータベース動作方法を実行するために使用され、そのデータベース動作方法は、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルの下においてロック方式で新たなトランザクション実行ロジックを実施する。具体的には、予測実行が、トランザクションについてまず実行されて、トランザクション内で実行される必要があるデータベース動作コマンドを予め取得し、それによって、実行パスの予測を達成する。さらに、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベル及びロック状態と併せて、予測実行によって生成される予測実行データが、データベース修正型コマンド及びロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについてのみ、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについてのみ、記録される。次いで、トランザクションの実際の実行が、予測実行から得られるデータベース動作コマンド及び予測実行データに基づいてデータベース２０に対して行われ、これによって、トランザクションの実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。トランザクションのスループットキャパシティは、単位時間ピリオド内に処理されるトランザクションの数をいう。
【００１６】
データベース動作装置３０は、実際には論理処理装置であり、それは、アプリケーションサーバ１０とデータベース２０との間に独立して配置され、位置してもよく、または実施態様についてアプリケーションサーバ１０内に配置されてもよく、または実施態様についてデータベース２０内に配置されてもよいことに留意すべきである。
【００１７】
本出願の技術的解決法の方法論的プロセスが、以下の実施形態を用いて詳細に説明される。
【００１８】
図３は、本出願の別の実施形態によって提供される、データベース動作方法のフローチャートである。図３に示すように、方法は、以下を含む。
【００１９】
３０１：アプリケーションサーバによって対象トランザクションを実行するプロセス中に、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを適当な順序で取得する。
【００２０】
３０２：データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンド及びロックされたデータベース非修正型コマンドのうちの１つに属するときに、予測実行により生成される予測実行データを記録する。
【００２１】
３０３：対象トランザクション内のトランザクションコミットコマンドが取得されるとき、アプリケーションサーバに対応するデータベースを制御して、対象トランザクションを実際に実行する。
【００２２】
説明のため、本実施形態は、アプリケーションサーバによって実行される必要があるトランザクションを、対象トランザクションと呼ぶことに留意する。対象トランザクションは、主に、データベースに対して動作を実行するために使用される動作コマンドを含む。データベース動作コマンド以外に、対象トランザクションの実行状態を制御するために使用されるいくつかの制御コマンド、例えば、トランザクション開始コマンド、トランザクションコミットコマンド、トランザクションロールバックコマンドなども、使用される。これらのコマンドは、実際には、データベース言語で編集され、書かれているステートメントである。異なるデータベース言語によれば、これらのコマンドは、異なる言語で編集され、書かれたステートメントであり得る。例えば、ＳＱＬが使用される場合、上記のデータベース動作コマンド及び制御コマンドは、実際には、一連のＳＱＬステートメントである。
【００２３】
さらに、トランザクション処理は、いくつかの適用シナリオにおいて、まずいくつかのレコードを選択し、次いでこれらのレコードを処理する必要がある。したがって、選択されたレコードに対して、排他的ロックをかける必要がある。これは、本実施形態におけるデータベース動作コマンド（複数可）が、ロックされたデータベース動作コマンド（複数可）であってもよいことを意味する。例えば、１００ドルが、ボブの口座から振替される場合、この動作は、ボブの口座をチェックすること、この口座に１００ドル分の十分な資金があるかどうかを判断すること、及びボブの口座内の預金を１００ドル減少させること、の３つのステップで完結される。２つの振替動作が、同時に実行される場合、最初の振替動作がボブの口座の残高をチェックするときには１００ドルがあることが分かる。別の振替動作も、同時にボブの口座をチェックする場合、ボブの口座には、やはり１００ドルがあることが分かる。したがって、振替は、これら２つの振替動作によって両方とも行われ、第１の動作はボブの口座から１００ドルを差し引き、他の動作もまた、ボブの口座から１００ドルを差し引く。この場合、ボブの口座の残高は、マイナスになる可能性がある。この種の状況を回避するために、第２の振替動作が、ロックを得ることができず、よって、第１の振替動作を実行しているときにチェックを行うことができないことを保証するために、「ｆｏｒ  ｕｐｄａｔｅ」ステートメントが、ボブの口座にロックをかけるのに必要とされる。
【００２４】
本実施形態によって提供される方法は、分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるデータベースに対して動作を実行するのに適している。いくつかのデータベースは、デフォルトで、分離レベルとしてこのＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用する。例えば、Ｏｒａｃｌｅデータベースは、デフォルトで、分離レベルとしてＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用する。デフォルトで、分離レベルとしてこのＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用しないデータベースもある。例えば、ＭｙＳＱＬデータベースは、デフォルトで、分離レベルとしてＲｅｐｅａｔａｂｌｅ  ｒｅａｄｓを使用する。したがって、本実施形態により提供される方法を実行する前に、データベースの分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるかどうかについて判断が行われてもよく、そうでない場合、データベースは、まず、このＲｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルで構成される必要がある。例えば、アプリケーションサーバが、対象トランザクションを実行する前に、データベースは、このＲｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルで構成される。
【００２５】
データベースの分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄである状況において、本実施形態により提供される方法が、データベースにおいて対象トランザクションを実行するために実行され得る。そのプロセスの詳細は、以下を含む。
【００２６】
アプリケーションサーバは、対象トランザクションの全実行ロジックを制御し、既存の手法を用いて対象トランザクションを実行する。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを連続的に取得する。
【００２７】
任意の実施態様では、アプリケーションサーバは、データベースへのアクセスを達成するための既存の手法を用いて、データベース動作コマンドをデータベースに送信する。データベース動作装置は、アプリケーションサーバとデータベースとの間の通信をモニタリングして、アプリケーションサーバからデータベースに送信されるデータベース動作コマンドを傍受してもよい。
【００２８】
別の任意の実施態様では、アプリケーションサーバの処理ロジックが、わずかに修正され、データベース動作コマンドをデータベースへ送信することから、それらをデータベース動作装置へ送信することへと、処理ロジックを変更する。したがって、データベース動作装置は、アプリケーションサーバから能動的に送信されるデータベース動作コマンドを受信し得る。
【００２９】
対象トランザクションが明示トランザクションである場合、対象トランザクション内の最初のコマンドは、Ｂｅｇｉｎ  Ｔｒａｎｓａｃｔｉｏｎなどのトランザクション開始コマンドであることに、ここで留意する。したがって、アプリケーションサーバにより実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバからデータベースに送信される、対象トランザクション内のトランザクション開始コマンドを傍受してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。代替的には、アプリケーションサーバによって実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバから能動的に送信される、対象トランザクション内のトランザクション開始コマンドを受信してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。対象トランザクションが、暗黙トランザクションである場合、対象トランザクションの最初のコマンドは、データベース動作コマンドであり、トランザクション開始コマンドを取得する手続きは、含まれない。
【００３０】
アプリケーションサーバによって実行されるデータベース動作コマンドを取得した後、データベース動作装置は、取得されたデータベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にする。予測実行結果は、対象トランザクションの実行パスを決定する。ここでの実行パスは、データベース動作コマンド間のジャンプロジックをいう。予測実行結果をアプリケーションサーバに返すことによって、対象トランザクションの実行ロジック全体を制御するためにアプリケーションサーバを有するという目的が達成される。
【００３１】
さらに、データベース動作装置は、また、取得されたデータベース動作コマンドをローカルに記録する必要があり、データベース動作コマンドが、データベース修正型コマンド、またはロックされたデータベース非修正型コマンドのうちの１つに属するときに、データベース動作コマンドの予測実行によって生成される予測実行データを記録する。データベース修正型コマンドは、ｕｐｄａｔｅ、ｉｎｓｅｒｔなどで始まるコマンドのように、データベースに変化をもたらすデータベース動作コマンドをいう。概して、ｓｅｌｅｃｔで始まるコマンドは、データベース修正型コマンドに属しない（データベース非修正型コマンドと呼ばれる）。Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルは、複数個のデータの書き込みが原子的であることを保証するだけであって、読み取り時には本来ロックをかけないが、いくつかのデータベース非修正型コマンドは、トランザクションの一貫性を保証するため、及びロールバックの可能性を減少させるために、ｆｏｒ  ｕｐｄａｔｅステートメントを通じてロックをかける必要がある場合がある。上記振替の例では、例えば、ｓｅｌｅｃｔ．．．．．．ｆｏｒ  ｕｐｄａｔｅの形式でデータベース動作コマンドを形成するように、ｓｅｌｅｃｔコマンドについてロックがかけられる必要がある。この種のコマンドは、ロックされたデータベース非修正型コマンドと呼ばれ得る。予測実行データは、主に、データベース動作コマンドによって操作されるデータ、ならびにデータの主キーＩＤ及び主キーＩＤに対応するバージョンなどの、データベース動作コマンドについて予測実行を行うプロセスにおける何らかのデータをいう。
【００３２】
同一のデータベース動作コマンドは、データベース修正型コマンド、ロックされたデータベース非修正型コマンド、またはロックされていない非修正動作コマンドに属することに留意すべきである。一方、対象トランザクションの全体の観点から、対象トランザクション内の全てのデータベース修正型コマンド及び全てのロックされたデータベース非修正型コマンドについての予測実行によって生成される予測実行データが、ローカルに記録される。
【００３３】
例えば、データベース動作装置は、メモリバンクをローカルに作成し、取得されたデータベース動作コマンド及び予測実行データをメモリバンクに記憶してもよい。さらに、予測実行データが、予測実行結果（複数可）を含まない場合、予測実行結果（複数可）もまた、メモリバンクに記憶され得る。
【００３４】
予測実行のこのような中心概念に基づいてＲｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルの下でロック方式のシミュレーションを実施するために、本実施形態は、データベース修正型コマンド、またはロックされたデータベース非修正型コマンドのうちの１つに属するデータベース動作コマンドの予測実行によって生成される予測実行データを記録し、ロックされていないデータベース非修正型コマンドに属するデータベース動作コマンドに対応する予測実行データを記録しない。このように、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルの下でロック方式が実施されるとき、記録されるデータ量は、比較的小さい。このようにして、処理される必要があるデータの量は、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて、データベースにおける対象トランザクションの実際の実行の後続プロセスの間は、比較的小さく、それによって、実行の効率及び性能のさらなる改善を容易にし、トランザクションのスループットキャパシティを増加させる。
【００３５】
データベースについてのデータベース動作コマンドの動作は、主に、データベース内のデータにアクセスしている。したがって、データベース動作コマンドにおけるデータ環境が、シミュレートされてもよく、データベース動作コマンドの予測実行が、シミュレートされたデータ環境に基づいて行われる。さらに、データベース非修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらさないことを考慮すると、このデータベース動作コマンドについての予測実行は、データベースにおいて直接行われてもよく、それによって、データ環境をシミュレートする動作を省く。その実施態様は、比較的単純であり、それによって、リソースを節約し、実行効率を改善するのに役立つ。一方、データベース修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらすこととなる（主に、データベース内のデータの変更である）ため、シミュレートされたデータ環境が必要であり、予測実行は、シミュレートされたデータ環境において行われる。
【００３６】
上記分析に基づいて、データベース動作コマンドの予測実行を行う手法は、取得されるデータベース動作コマンドの種類を識別することと、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことと、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行すること、及びデータベース動作コマンドの予測実行を行うことと、を含み得る。
【００３７】
さらに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことの実施態様は、取得されたデータベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、実際のデータベースにおいて読み取りコマンドを実行すること、即ち、データベースにおいて読み取りコマンドを実行してリードデータセット（ＲｅａｄＳｅｔ）を取得することと、データベース動作コマンドによって必要とされるデータ環境をシミュレートするために、ローカルメモリバンク内にリードデータセットを記憶することと、メモリバンクにおいて書き込みコマンドを適用してデータベース動作コマンドの予測実行を実施すること、即ち、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正すること、例えば、リードデータセット内の関連データを更新または照会することと、を含む。結果データセット（ａｆｆｅｃｔＲｏｗＩｎＭｅｍｄｂ）は、書き込みコマンドを実行してリードデータセットを修正することによって生成され得る。結果データセットは、予測実行結果を含む。
【００３８】
予測実行の上記プロセスにおいて、データベース動作コマンドが、データベース修正型コマンドに属する場合、データベース動作装置は、読み取りコマンドによって読み取られるリードデータセット、及び書き込みコマンドの実行から生成される結果データセットをローカルに記録し得る。このように、予測実行データは、リードデータセット及び結果データセットを含んでもよく、またはリードデータセット及び結果データセット内のデータの一部を含んでもよい。実施例は、データベースにおける対象トランザクションの実際の実行に有益な効果をもたらし得るいくつかのデータを含む。実施例は、第１レベルインデックス、第２レベルインデックス、主キーＩＤ、バージョンなどの、いくつかのデータ値の多様なインデックスである。
【００３９】
好ましくは、記録されるデータの量をさらに減少させるために、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみが、予測実行データとして記録される。このようにして、ローカルに記録されているデータベース動作コマンド及び予測実行データに基づく、データベースにおける対象トランザクションの実際の実行の後続プロセスでは、処理される必要があるデータの量が比較的小さく、それによって、実行の効率及び性能をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。さらに、データは、トランザクションプロセス中にいくつかの変更を経て、最後には初期値に戻ることがあってもよい。一方、データの主ＩＤ及びバージョンは、変化しない。したがって、データそれ自体を記録する手法が用いられる場合、予測実行が実際の実行と比較されるときに、データが同一ではないことがあり、ロールバックの発生につながる。ロールバックのコストは、比較的大きい。しかしながら、本実施形態は、主キーＩＤ及びバージョンのみを記録する手法を採用する。予測実行と実際の実行が比較されるときに、ロールバックが発生する可能性は比較的低く、ロールバックの可能性が低くなる。
【００４０】
対象トランザクション内のトランザクションコミットコマンド（即ち、アプリケーションサーバによって実行されるトランザクションコミットコマンド）を取得することに応答して、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し得る。
【００４１】
アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの、任意の実施態様は、ローカルに記録されたデータベース動作コマンドをデータベース動作装置からデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令すること、及びデータベースから返されるデータベース動作コマンドの実際の実行結果を受信することと、データベース動作コマンドの実際の実行結果を予測実行結果と比較すること、及び実際の実行結果が予測実行結果と同一である場合に、トランザクションコミットコマンドをデータベースに送信することと、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にすることと、を含む。
【００４２】
上記実施態様では、トランザクションの原子性を考慮することによって、トランザクションの実行プロセスにおけるエラーが、実際の実行結果を予測実行結果と比較することによって回避され得る。それによって、トランザクション実行の成功率を改善するのに役立つ。
【００４３】
さらに、トランザクションにおいて実行される必要がある全てのデータベース動作コマンドが、既存技術では予め知られることができないため、データベース動作コマンドは、トランザクションの実行ロジックに従って、逐次的に実行されることしかできない。これは、アプリケーションサーバとデータベースとの間の頻繁なやり取りにつながり、遠隔での適用シナリオでは、大量のネットワークリソースを浪費することになる。一方、本実施形態は、トランザクションにおいて実行される必要がある全てのデータベース動作コマンド、即ち、ローカルに記録されたデータベース動作コマンドを、予測実行のプロセスを通して予め取得した。したがって、ローカルに記録されたデータベース動作コマンドが、データベース動作コマンドを実行するようにデータベースに命令するためにデータベースに送信されるとき、ローカルに記録されたデータベース動作コマンドは、同時に（または組み合わせて）データベースに送信され得る。それによって、ネットワークリソースを節約するのに役立つ。さらに、データベースは、また、いくつかの並行データベース動作コマンドについての並行動作を実行し得る。それによって、トランザクションの実行効率をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。
【００４４】
さらに、全てのローカルに記録されたデータベース動作コマンド及びローカルに記録された予測実行データもまた、共にデータベースに送信されてもよい。
【００４５】
さらに、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの実施態様において、データベース動作装置は、ローカルに記録されたデータベース動作コマンドに基づいて、対象トランザクションが単一機械トランザクションであるかどうかを判断し得る。判断結果が肯定的である場合、データベースは、単一機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。判断結果が否定的である場合、データベースは、分散型機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。
【００４６】
対象トランザクションが、単一機械トランザクションか、または分散型トランザクションかについての識別は、予測実行のプロセスにおいて取得されるデータベース動作コマンドに基づいて行われ得る。例えば、ローカルに記録されたデータベース動作コマンドの動作の対象が、同一の物理デバイスに適用されるかどうかについての判断が行われてもよい。判断結果が肯定的である場合、対象トランザクションは、単一機械トランザクションであるという判断が行われ得る。判断結果が否定的である場合、対象トランザクションは分散型トランザクションであるという判断が行われ得る。
【００４７】
分散型トランザクションの処理ロジックと単一機械トランザクションの処理ロジックは異なる。単一機械トランザクションの処理ロジックは、比較的単純であり（例えば、読み取り及び書き込みのためにロックをかけるといった問題が関係しない）、したがって、それにより消費されるリソースが、比較的少ない。したがって、対象トランザクションが単一機械トランザクションであるかどうかを識別することによって、本実施形態は、分散型処理ロジックを用いて処理を汎用的に行うのではなく、対象トランザクションが、単一機械トランザクションとして識別されるときには、単一機械トランザクション処理ロジックを用いて処理を行う。それによって、処理効率を改善するのに役立ち、処理コストを節約する。
【００４８】
任意の実施態様では、対象トランザクションにおいてトランザクションロールバックコマンドが取得される場合、データベース動作装置は、ローカルに記録されたデータベース動作コマンド及び予測実行データを削除してもよい。例えば、ローカルメモリバンクが、直接的にクリアされ、それによって、ロールバック動作を実施する。この状況では、対象トランザクションは、実際にはデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。このように、この種のトランザクションロールバックの状況においては、トランザクションの実行効率も、本実施形態の方法を用いることによって改善され得る。
【００４９】
上記から分かるように、本実施形態によって提供される方法では、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、予測実行のプロセスにおいて対象トランザクションの実行パス、即ち、実際に実行される必要があるデータベース動作コマンドを予め取得し得る。さらに、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、予測実行によって生成される予測実行データは、データベース修正型コマンドに属するデータベース動作コマンドのみについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、記録される。対象トランザクションが、記録されているデータベース動作コマンド及び予測実行データに基づいて実際に実行されるとき、関連データ情報が、予測実行データに基づいて予め取得されてもよく、コマンド間のジャンプが減少され得る。それによって、実行効率が改善し、トランザクションのスループットキャパシティを増加させる。
【００５０】
インベントリを減少させるトランザクションが、本出願の技術的解決法の作業プロセスを詳細に説明するために、ここで一例として使用される。データベースの分離レベルは、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルである。
【００５１】
インベントリを減少させるためのＳＱＬコードが、以下のように示されており、丸括弧内に含まれる文字は、注釈である。
ｂｅｇｉｎ  ｔｒａｎｓａｃｔｉｏｎ（トランザクションを開始する。）
ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？  ｆｏｒ  ｕｐｄａｔｅ（プロダクトＩＤを使用して現在のインベントリをチェックし、外部表示用にロックをかけるためにｆｏｒ  ｕｐｄａｔｅを使用することについてここで注意する。）
ｉｆ  （ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＞０）
ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  −−；
ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？
ｃｏｍｍｉｔ；
ｅｌｓｅ
ｒｏｌｌｂａｃｋ；（現在のインベントリが０より大きい場合、減少が行われ、プロダクトインベントリが更新され、コミットメントが行われる。そうでない場合、ロールバックが実行される。）
【００５２】
実際の実行プロセスでは、アプリケーションサーバは、インベントリを減少させるこのようなトランザクションのロジック全体を担当し、データベース動作装置（代替的には、実行サーバと呼ばれてもよい）は、アプリケーションサーバによって実行される開始トランザクション、実行される必要があるＳＱＬステートメント（複数可）、及びコミット／ロールバックコマンドを取得することのみを担当する。
【００５３】
まず、トランザクションが開始された後、データベース動作装置が、ローカルにメモリバンクを作成する。
【００５４】
“ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？  ｆｏｒ  ｕｐｄａｔｅ”のＳＱＬステートメントを取得すると、データベース動作装置は、このＳＱＬステートメントが、データベースを変更しないことを認識し、したがって、このＳＱＬステートメントを実際のデータベースに対して直接適用する。即ち、データベースにおいてＳＱＬステートメントを実行して、クエリ結果（即ち、リードデータセット）を取得する。データベース動作装置は、全クエリ結果をアプリケーションサーバに返して、実行される必要がある次のＳＱＬステートメントをアプリケーションサーバが判断可能にし、このＳＱＬステートメントをメモリバンクにローカルに記録する。このステートメントはロックがかけられるため、このステートメントの実行に関連するデータは、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルにおいてでさえも、記録される必要がある。実施態様では、このＳＱＬステートメントによって照会されるデータの主キーＩＤ及びバージョンのみが、記録されてもよい。
【００５５】
データベース動作装置によって返されるクエリ結果を受信すると、アプリケーションサーバは、現在のインベントリが０より大きいかどうかを判断する。判断結果が肯定的である場合、現在のインベントリが減少され、ｕｐｄａｔｅステートメント、即ち、“ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”が実行される。判断結果が否定的である場合、ｒｏｌｌｂａｃｋステートメントが実行される。
【００５６】
第１の種類の状況では、アプリケーションサーバは、ｒｏｌｌｂａｃｋステートメントを実行すると考えられ、データベース動作装置は、ｒｏｌｌｂａｃｋステートメントを受信することとなる。ｒｏｌｌｂａｃｋステートメントを取得することに応答して、データベース動作装置は、ローカルメモリバンクをクリアする。それは、主に、以前に記録されたＳＱＬステートメント“ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？  ｆｏｒ  ｕｐｄａｔｅ”を取り除くことをいう。この種の状況では、トランザクションがデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。
【００５７】
第２の種類の状況では、アプリケーションサーバは、“ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”のステートメントを実行すると考えられる。“ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”の、このステートメントを受信すると、データベース動作装置は、このＳＱＬステートメントが、データベースに変更をもたらすこととなると識別し、したがって、このＳＱＬステートメントを読み取りコマンド（即ち、“ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”）と、書き込みコマンド（即ち、“ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”）とに分割する。次いで、データベース動作装置は、“ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”のステートメントをデータベースに送信し、リードデータセットを取得し、リードデータセット内のデータをローカルメモリバンクに書き込む。この場合に、リードデータセットは、主キーリスト（ｉｔｅｍＩｄ）、及び主キーに対応するバージョンを含む。次いで、“ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？”のステートメントに基づいて、更新動作がローカルメモリバンクにおいて実行されて結果データセットを取得し、結果データセットは、アプリケーションサーバに返される。結果データセットは、修正レコード情報、修正されたいくつかのレコードの数に類似の何らかのものであってもよい。例えば、ａｆｆｅｃｔＲｏｗ＝１は、１つのレコードが修正されたことを表す。代替的には、結果データセットは、また、修正の詳細情報を記録する修正詳細情報であってもよい。結果データセット及びリードデータセットは、予測実行データを形成する。
【００５８】
アプリケーションサーバは、このときコミットコマンドを実行する。
【００５９】
コミットコマンドを取得すると、データベース動作装置は、ローカルメモリバンク内のＳＱＬステートメント及び予測実行データに基づいて、データベース内のインベントリを減少させるトランザクションを実行する。このときのトランザクション実行プロセスは、実際の実行である。例えば、ローカルに記録されているＳＱＬステートメント及び予測実行データは、以下のように示される。
｛
ｓｅｌｅｃｔ  *  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？
ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ−ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？
［ｒｅａｄＶｅｒｓｉｏｎ  ：  ｉｔｅｍＩｄ  ＝  ｘｘｘ  ａｎｄ  ｖｅｒｓｉｏｎ  ＝  ｘｘｘ  ／  ａｆｆｅｃｔＲｏｗ  ＝  １］
ｃｏｍｍｉｔ（）
｝
【００６０】
好ましくは、データベース動作装置は、ローカルメモリバンク内の全てのＳＱＬステートメントを一度にデータベースに提供してもよく、データベースは、それに基づいて実行を行う。これは、ＳＱＬステートメントを送信することにより消費されるネットワークリソースを節約することに役立つ。
【００６１】
このときの実際の実行もまた、実行結果を返す。予測実行結果は、実際の実行結果と比較され得る。例えば、これらの２つの結果内の主キーＩＤ及びバージョンが、まず比較されてもよく、次いで、２つの結果内のａｆｆｅｃｔＲｏｗが比較される。比較結果が相違を示す場合、コミットは、失敗であると考えられる。この種の状況において、トランザクションがデータベースにおいて全く実際に実行されず、コミットされないため、アプリケーションサーバが再投入を行うことを可能にするために、リクエスト全体が、単純なやり方でロールバックされ得る。
【００６２】
上記の予測実行を通して、実行される必要がある全てのＳＱＬステートメント、及び全てのセグメンテーション状態、値のインデックス、バージョンなどの対応する予測実行データが、取得されている。データのこれらの部分は、トランザクションが単一機械トランザクションかどうかを予め判断するのに十分である。したがって、対応するトランザクション処理ロジックが、処理のために使用されてもよく、それによって、リソースを節約するのに役立つ。
【００６３】
図４は、本出願の別の実施形態によって提供されるデータベース動作方法のフローチャートである。図４に示すように、方法は、以下を含む。
【００６４】
４０１：アプリケーションサーバによって対象トランザクションを実行するプロセス中に、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを適当な順序で取得する。
【００６５】
４０２：データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、予測実行により生成される予測実行データを記録する。
【００６６】
４０３：対象トランザクション内のトランザクションコミットコマンドが取得されるとき、アプリケーションサーバに対応するデータベースを制御して、対象トランザクションを実際に実行する。
【００６７】
本実施形態は、図３に示される実施形態に類似している。その相違点は、データベース修正型コマンドの予測実行によって生成される予測実行データ、及びロックされたデータベース非修正型コマンドの予測実行によって生成される予測実行データを記録するのではなく、対象トランザクション内のロックされたデータベース非修正型コマンドの予測実行によって生成される予測実行データのみを記録することを含む。さらに本実施形態は、ロックされたデータベース非修正型コマンド（複数可）を含む対象トランザクションに適している。動作されるデータベースは、分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるデータベースシナリオだけでなく、他のデータベースシナリオもまた、含んでもよい。
【００６８】
本実施形態において提供される方法が、分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるデータベースにおいて使用される場合、いくつかのデータベースが、デフォルトで分離レベルとしてＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用しており（Ｏｒａｃｌｅデータベースが、デフォルトで分離レベルとしてＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用するなど）、いくつかのデータベースは、デフォルトで分離レベルとしてＲｅａｄ  ｃｏｍｍｉｔｔｅｄを使用していない（例えば、ＭｓＳＱＬデータベースは、分離レベルとしてＲｅｐｅａｔａｂｌｅ  ｒｅａｄｓを使用する）ことを考慮して、データベースの分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるかどうかの判断は、本実施形態において提供される方法を実行する前に行われてもよい。そうでない場合、データベースは、最初に分離レベルがＲｅａｄ  ｃｏｍｍｉｔｔｅｄであるように構成される必要がある。例えば、アプリケーションサーバが対象トランザクションを実行する前に、データベースは、分離レベルとしてＲｅａｄ  ｃｏｍｍｉｔｔｅｄで構成されてもよい。
【００６９】
任意の実施態様では、アプリケーションサーバは、データベースへのアクセスを達成するための既存の手法を用いて、データベース動作コマンドをデータベースに送信する。データベース動作装置は、アプリケーションサーバとデータベースとの間の通信をモニタリングして、アプリケーションサーバからデータベースに送信されるデータベース動作コマンドを傍受してもよい。
【００７０】
別の実施態様では、アプリケーションサーバの処理ロジックが、わずかに修正され、データベース動作コマンドをデータベースへ送信することから、それらをデータベース動作装置へ送信することへと、処理ロジックを変更する。したがって、データベース動作装置は、アプリケーションサーバから能動的に送信されるデータベース動作コマンドを受信し得る。
【００７１】
対象トランザクションが明示トランザクションである場合、対象トランザクション内の最初のコマンドは、Ｂｅｇｉｎ  Ｔｒａｎｓａｃｔｉｏｎなどのトランザクション開始コマンドであることに、ここで留意する。したがって、アプリケーションサーバにより実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバからデータベースに送信される、対象トランザクション内のトランザクション開始コマンドを傍受してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。代替的には、アプリケーションサーバによって実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバから能動的に送信される、対象トランザクション内のトランザクション開始コマンドを受信してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。対象トランザクションが、暗黙トランザクションである場合、対象トランザクションの最初のコマンドは、データベース動作コマンドであり、トランザクション開始コマンドを取得する手続きは、含まれない。
【００７２】
アプリケーションサーバによって実行されるデータベース動作コマンドを取得した後、データベース動作装置は、取得されたデータベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にする。予測実行結果は、対象トランザクションの実行パスを決定する。ここでの実行パスは、データベース動作コマンド間のジャンプロジックをいう。予測実行結果をアプリケーションサーバに返すことによって、対象トランザクションの実行ロジック全体を制御するためにアプリケーションサーバを有するという目的が達成される。
【００７３】
さらに、データベース動作装置は、また、取得されたデータベース動作コマンドをローカルに記録する必要があり、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドの予測実行によって生成される予測実行データを記録する。データベース修正型コマンドは、ｕｐｄａｔｅ、ｉｎｓｅｒｔなどで始まるコマンドのように、データベースに変化をもたらすデータベース動作コマンドをいう。概して、ｓｅｌｅｃｔで始まるコマンドは、データベース修正型コマンドに属しない（データベース非修正型コマンドと呼ばれる）。時には、いくつかのデータベース非修正型コマンドは、トランザクションの一貫性を保証するため、及びロールバックの可能性を減少させるために、ｆｏｒ  ｕｐｄａｔｅステートメントを通じてロックをかける必要がある場合がある。上記振替の例では、例えば、ｓｅｌｅｃｔ．．．．．．ｆｏｒ  ｕｐｄａｔｅの形式でデータベース動作コマンドを形成するように、ｓｅｌｅｃｔコマンドについてロックがかけられる必要がある。この種のコマンドは、ロックされたデータベース非修正型コマンドと呼ばれ得る。予測実行データは、主に、データベース動作コマンドによって操作されるデータ、ならびにデータの主キーＩＤ及び主キーＩＤに対応するバージョンなどの、データベース動作コマンドについて予測実行を行うプロセスにおける何らかのデータをいう。
【００７４】
同一のデータベース動作コマンドは、データベース修正型コマンド、ロックされたデータベース非修正型コマンド、またはロックされていない非修正動作コマンドに属することに留意すべきである。本実施形態では、対象トランザクション内の全てのロックされたデータベース非修正型コマンドについての予測実行によって生成される予測実行データが、ローカルに記録される。
【００７５】
例えば、データベース動作装置は、メモリバンクをローカルに作成し、取得されたデータベース動作コマンド及び予測実行データをメモリバンクに記憶してもよい。さらに、予測実行データが、予測実行結果（複数可）を含まない場合、予測実行結果（複数可）もまた、メモリバンクに記憶され得る。
【００７６】
予測実行のこのような中心概念に基づいてロック方式のシミュレーションを実施するために、本実施形態は、ロックされたデータベース非修正型コマンドに属するデータベース動作コマンドの予測実行によって生成される予測実行データを記録し、他のデータベース型コマンドに対応する予測実行データを記録しない。このように、下でロック方式が実施されるとき、記録されるデータの量は、比較的小さい。このようにして、処理される必要があるデータの量は、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて、データベースにおける対象トランザクションの実際の実行の後続プロセスの間は、比較的小さく、それによって、実行の効率及び性能のさらなる改善を容易にし、トランザクションのスループットキャパシティを増加させる。
【００７７】
好ましくは、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみが、予測実行データとして記録される。このようにして、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づく、データベースにおける対象トランザクションの実際の実行の後続プロセスでは、処理される必要があるデータの量が比較的小さく、それによって、実行の効率及び性能をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。さらに、データは、トランザクションプロセス中にいくつかの変更を経て、最後には初期値に戻ることがあってもよい。一方、データの主ＩＤ及びバージョンは、変化しない。したがって、データそれ自体を記録する手法が用いられる場合、予測実行が実際の実行と比較されるときに、データが同一ではないことがあり、ロールバックの発生につながる。ロールバックのコストは、比較的大きい。しかしながら、本実施形態は、主キーＩＤ及びバージョンのみを記録する手法を採用する。予測実行と実際の実行が比較されるときに、ロールバックが発生する可能性は比較的低く、ロールバックの可能性が低くなる。
【００７８】
データベースについてのデータベース動作コマンドの動作は、主に、データベース内のデータにアクセスしている。したがって、データベース動作コマンドにおけるデータ環境が、シミュレートされてもよく、データベース動作コマンドの予測実行が、シミュレートされたデータ環境に基づいて行われる。さらに、データベース非修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらさないことを考慮すると、このデータベース動作コマンドについての予測実行は、データベースにおいて直接行われてもよく、それによって、データ環境をシミュレートする動作を省く。その実施態様は、比較的単純であり、それによって、リソースを節約し、実行効率を改善するのに役立つ。一方、データベース修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらすこととなる（主に、データベース内のデータの変更である）ため、シミュレートされたデータ環境が必要であり、予測実行は、シミュレートされたデータ環境において行われる。
【００７９】
上記分析に基づいて、データベース動作コマンドの予測実行を行う手法は、取得されるデータベース動作コマンドの種類を識別することと、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことと、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行すること、及びデータベース動作コマンドの予測実行を行うことと、を含み得る。
【００８０】
さらに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことの実施態様は、取得されたデータベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、実際のデータベースにおいて読み取りコマンドを実行すること、即ち、データベースにおいて読み取りコマンドを実行してリードデータセット（ＲｅａｄＳｅｔ）を取得することと、データベース動作コマンドによって必要とされるデータ環境をシミュレートするために、ローカルメモリバンク内にリードデータセットを記憶することと、メモリバンクにおいて書き込みコマンドを適用してデータベース動作コマンドの予測実行を実施すること、即ち、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正すること、例えば、リードデータセット内の関連データを更新または照会することと、を含む。結果データセット（ａｆｆｅｃｔＲｏｗＩｎＭｅｍｄｂ）は、書き込みコマンドを実行してリードデータセットを修正することによって生成され得る。結果データセットは、予測実行結果を含む。
【００８１】
対象トランザクション内のトランザクションコミットコマンド（即ち、アプリケーションサーバによって実行されるトランザクションコミットコマンド）を取得することに応答して、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し得る。
【００８２】
アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの任意の実施態様は、ローカルに記録されたデータベース動作コマンドをデータベース動作装置からデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令すること、及びデータベースから返されるデータベース動作コマンドの実際の実行結果を受信することと、データベース動作コマンドの実際の実行結果を予測実行結果と比較すること、及び実際の実行結果が、予測実行結果と同一である場合に、トランザクションコミットコマンドをデータベースに送信することと、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にすることと、を含む。
【００８３】
上記実施態様では、トランザクションの原子性を考慮することによって、トランザクションの実行プロセスにおけるエラーが、実際の実行結果を予測実行結果と比較することによって回避され得る。それによって、トランザクション実行の成功率を改善するのに役立つ。
【００８４】
さらに、トランザクションにおいて実行される必要がある全てのデータベース動作コマンドが、既存技術では予め知られることができないため、データベース動作コマンドは、トランザクションの実行ロジックに従って、逐次的に実行されることしかできない。これは、アプリケーションサーバとデータベースとの間の頻繁なやり取りにつながり、遠隔での適用シナリオでは、大量のネットワークリソースを浪費することになる。一方、本実施形態は、トランザクションにおいて実行される必要がある全てのデータベース動作コマンド、即ち、ローカルに記録されたデータベース動作コマンドを、予測実行のプロセスを通して予め取得した。したがって、ローカルに記録されたデータベース動作コマンドが、データベース動作コマンドを実行するようにデータベースに命令するためにデータベースに送信されるとき、ローカルに記録されたデータベース動作コマンドは、同時に（または組み合わせて）データベースに送信され得る。それによって、ネットワークリソースを節約するのに役立つ。さらに、データベースは、また、いくつかの並行データベース動作コマンドについての並行動作を実行し得る。それによって、トランザクションの実行効率をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。
【００８５】
さらに、全てのローカルに記録されたデータベース動作コマンド及びローカルに記録された予測実行データもまた、共にデータベースに送信されてもよい。
【００８６】
さらに、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの実施態様において、データベース動作装置は、ローカルに記録されたデータベース動作コマンドに基づいて、対象トランザクションが単一機械トランザクションであるかどうかを判断し得る。判断結果が肯定的である場合、データベースは、単一機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。判断結果が否定的である場合、データベースは、分散型機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。
【００８７】
対象トランザクションが、単一機械トランザクションか、または分散型トランザクションかについての識別は、予測実行のプロセスにおいて取得されるデータベース動作コマンドに基づいて行われ得る。例えば、ローカルに記録されたデータベース動作コマンドの動作の対象が、同一の物理デバイスに適用されるかどうかについての判断が行われてもよい。判断結果が肯定的である場合、対象トランザクションは、単一機械トランザクションであるという判断が行われ得る。判断結果が否定的である場合、対象トランザクションは分散型トランザクションであるという判断が行われ得る。
【００８８】
分散型トランザクションの処理ロジックと、単一機械トランザクションの処理ロジックは異なる。単一機械トランザクションの処理ロジックは、比較的単純であり（例えば、読み取り及び書き込みのためにロックをかけるといった問題が関係しない）、したがって、それにより消費されるリソースが、比較的少ない。したがって、対象トランザクションが単一機械トランザクションであるかどうかを識別することによって、本実施形態は、分散型処理ロジックを用いて処理を汎用的に行うのではなく、対象トランザクションが、単一機械トランザクションとして識別されるときには、単一機械トランザクション処理ロジックを用いて処理を行う。それによって、処理効率を改善するのに役立ち、処理コストを節約する。
【００８９】
任意の実施態様では、対象トランザクションにおいてトランザクションロールバックコマンドが取得される場合、データベース動作装置は、ローカルに記録されたデータベース動作コマンド及び予測実行データを削除してもよい。例えば、ローカルメモリバンクが、直接的にクリアされ、これによって、ロールバック動作を実施する。この状況では、対象トランザクションは、実際にはデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。このように、この種のトランザクションロールバックの状況においては、トランザクションの実行効率も、本実施形態の方法を用いることによって改善され得る。
【００９０】
上記から分かるように、本実施形態によって提供される方法では、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、予測実行のプロセスにおいて対象トランザクションの実行パス、即ち、実際に実行される必要があるデータベース動作コマンドを予め取得し得る。さらに、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、予測実行によって生成される予測実行データは、ロックされたデータベース非修正型コマンドのみに属するデータベース動作コマンドについて、記録される。対象トランザクションが、記録されているデータベース動作コマンド及び予測実行データに基づいて実際に実行されるとき、関連データ情報が、予測実行データに基づいて予め取得されてもよく、コマンド間のジャンプが減少され得る。それによって、実行効率が改善し、トランザクションのスループットキャパシティを増加させる。
【００９１】
前述の方法の実施形態は、説明のために一連の動作の組み合わせとして表されていることに留意すべきである。一方、ある動作は、本出願に従って、他の順序で、または並行して実行されてもよいため、本出願は、説明された動作の順序に限定されないことを、当業者は理解すべきである。さらに、本出願において説明された実施形態が好適な実施形態に属することもまた、当業者は、理解すべきである。そこに含まれる動作及びモジュールは、本出願に必須ではない場合がある。
【００９２】
上記実施形態では、多様な実施形態の説明が、異なる焦点を有する。ある実施形態において詳細に説明されていない部分は、他の実施形態の関連する説明を参照されてもよい。
【００９３】
図５は、本出願の別の実施形態によって提供されるデータベース動作装置の概略的な構造図である。図５に示すように、装置は、取得モジュール５１、予測実行モジュール５２、及び制御実行モジュール５３を含み得る。
【００９４】
取得モジュール５１は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される。
【００９５】
予測実行モジュール５２は、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属する場合に、予測実行により生成される予測実行データを記録するために使用される。
【００９６】
制御実行モジュール５３は、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される。
【００９７】
任意の実施態様では、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの１つに属するときに、予測実行によって生成される予測実行データを記録するプロセスにおいて、予測実行モジュール５２は、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみを予測実行データとして記録するために使用される。
【００９８】
任意の実施態様では、装置は、対象トランザクションが、アプリケーションサーバによって実行される前に、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルでデータベースを構成するために使用される、構成モジュールをさらに含んでもよい。
【００９９】
任意の実施態様では、予測実行モジュール５２は、さらに、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行い、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行して、データベース動作コマンドの予測実行を行うために使用される。
【０１００】
さらに、データベース動作コマンドが、データベース修正型コマンドに属するときに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うプロセスにおいて、予測実行モジュール５２は、さらに、データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、データベースにおいて読み取りコマンドを実行してリードデータセットを取得し、データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内にリードデータセットを記憶し、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正するために使用される。
【０１０１】
任意の実施態様では、制御実行モジュール５３は、さらに、ローカルに記録されたデータベース動作コマンドをデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令し、データベースから返されるデータベース動作コマンドの実際の実行結果を受信し、実際の実行結果が、予測実行結果と一致する場合に、トランザクションコミットコマンドをデータベースに送信して、データベースが対象トランザクションをコミット可能にし、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にするために使用され得る。
【０１０２】
本実施形態により提供されるデータベース動作装置は、アプリケーションサーバと協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄ分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、データベース修正型コマンドもしくはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行する。それによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
【０１０３】
図６は、本出願の別の実施形態によって提供されるデータベース動作装置の概略的な構造図である。図６に示すように、装置は、取得モジュール６１、予測実行モジュール６２、及び制御実行モジュール６３を含み得る。
【０１０４】
取得モジュール６１は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される。
【０１０５】
予測実行モジュール６２は、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録するために使用される。
【０１０６】
制御実行モジュール６３は、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される。
【０１０７】
任意の実施態様では、予測実行モジュール６２は、さらに、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーＩＤ及びバージョンのみを予測実行データとして記録するために使用される。
【０１０８】
任意の実施態様では、装置は、対象トランザクションが、アプリケーションサーバによって実行される前に、Ｒｅａｄ  ｃｏｍｍｉｔｔｅｄの分離レベルとしてデータベースを構成するために使用される、構成モジュールをさらに含んでもよい。
【０１０９】
任意の実施態様では、予測実行モジュール６２は、さらに、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行い、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行して、データベース動作コマンドの予測実行を行うために使用される。
【０１１０】
さらに、データベース動作コマンドが、データベース修正型コマンドに属するときに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うプロセスにおいて、予測実行モジュール６２は、さらに、データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、データベースにおいて読み取りコマンドを実行してリードデータセットを取得し、データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内にリードデータセットを記憶し、メモリバンクにおいて書き込みコマンドを実行して、リードデータセットを修正するために使用される。
【０１１１】
任意の実施態様では、制御実行モジュール６３は、さらに、ローカルに記録されたデータベース動作コマンドをデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令し、データベースから返されるデータベース動作コマンドの実際の実行結果を受信し、実際の実行結果が、予測実行結果と一致する場合に、トランザクションコミットコマンドをデータベースに送信して、データベースが対象トランザクションをコミット可能にし、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にするために使用され得る。
【０１１２】
本実施形態により提供されるデータベース動作装置は、アプリケーションサーバと協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、ロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、ロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行する。それによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
【０１１３】
上述のシステム、装置、及びユニットの作業プロセスの詳細は、前述の方法の実施形態における対応するプロセスを参照されてもよく、説明の便宜及び単純化のために、ここで繰り返し説明されないことを、当業者は明らかに理解し得る。
【０１１４】
本出願により提供される実施形態では、開示されたシステム、装置、及び方法が、他のやり方で実施されてもよいことが、理解され得る。例えば、上述した装置の実施形態は、単なる例示である。例えば、説明された分割ユニットは、単に、論理機能の分割であり、分割の他の方法が、実際の実施態様において存在してもよい。例えば、複数のユニットもしくはコンポーネントが、別のシステムに結合され、もしくは統合されてもよく、または、いくつかの特徴が、無視され、もしくは実行されなくともよい。さらに、表示され、または論じられる相互連結または直接連結もしくは通信接続は、いくつかのインターフェース、装置またはユニットの間接連結または通信接続を通して行われてもよく、電子的、機械的、または他の形態であってもよい。
【０１１５】
別々のコンポーネントとして説明されるユニットは、物理的に分離されていてもよく、分離されていなくともよい。ユニットとして表示されるコンポーネントは、物理ユニットであってもなくてもよく、即ち、単一の場所に位置してもよく、または複数のネットワークユニット間に分散されてもよい。ユニットのうちのいくつかまたは全てが、実際の必要性に基づいて、本実施形態の技術的解決法の目的を実施するために選択され得る。
【０１１６】
さらに、本出願の実施形態における多様な機能ユニットが、単一の処理ユニットに統合されてもよい。代替的には、多様なユニットが、独立の物理エンティティとして存在してもよい。代替的には、２つ以上のユニットが、単一ユニットに統合されてもよい。上記統合されたユニットが、ハードウェアの形態で実施されてもよく、または、ハードウェア及びソフトウェア機能ユニット（複数可）の形態で実施されてもよい。
【０１１７】
上記ソフトウェア機能ユニットの形態で実施される統合されたユニットは、コンピュータ読み取り可能な記憶媒体に記憶されてもよい。ソフトウェア機能ユニットは、記憶媒体に記憶され、コンピューティングデバイス（パーソナルコンピュータ、サーバ、もしくはネットワークデバイスなどであってもよい）、またはプロセッサに、本出願の実施形態の方法のいくつかの動作を実行させるために使用される命令を含む。記憶媒体は、フラスコドライブ、移動可能なハードディスク、読み取り専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク、または光学ドライブなどの、プログラムコードを記憶し得る多様な媒体を含む。
【０１１８】
最後に、上記実施形態は、単に本出願の技術的解決法を説明するために用いられ、それらに対する限定ではないことに留意すべきである。本出願は、前述の実施形態を参照して詳細に説明されているが、当業者は、前述の実施形態において記録される技術的解決法が、修正され得ること、またはその中のいくつかの技術的特徴が、等価に置換され得ることを理解すべきである。これらの修正及び等価な置換は、対応する技術的解決法の本質を、本出願の実施形態の技術的解決法の思想及び範囲から逸脱させるものではない。
【図１】
2018538634.tif 000003
【図２】
2018538634.tif 000004
【図３】
2018538634.tif 000005
【図４】
2018538634.tif 000006
【図５】
2018538634.tif 000007
【図６】
2018538634.tif 000008
【国際調査報告】
2018538634.tif 000009
2018538634.tif 000010
2018538634.tif 000011
2018538634.tif 000012