(57)【特許請求の範囲】
【請求項１】
データベースオペレーション方法であって、
アプリケーションサーバにより対象トランザクションを実行する処理の間、データベースオペレーション装置が備える取得モジュールにより、前記アプリケーションサーバにより前記対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する段階と、
前記データベースオペレーション装置が備える予測実行モジュールにより、前記データベースオペレーションコマンドを実行して前記対象トランザクションの実行経路を予測する予測アルゴリズムを実行する段階と、
前記予測実行モジュールにより、予測実行結果を前記アプリケーションサーバに戻し、これにより、前記アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定する段階と、
前記予測実行モジュールにより、前記データベースオペレーションコマンドと、前記予測アルゴリズムの前記実行から生成された予測実行データとをローカルに記録する段階と、
前記データベースオペレーション装置が備える制御実行モジュールにより、前記対象トランザクションに関するトランザクションコミットコマンドを取得する場合、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する段階と
を備える方法。
【請求項２】
前記アプリケーションサーバにより前記対象トランザクションを実行する処理の間、前記取得モジュールにより、前記アプリケーションサーバにより前記対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する前記段階は、
前記取得モジュールにより、前記アプリケーションサーバにより前記データベースに対して送信された前記データベースオペレーションコマンドをインタセプトする段階、または
前記取得モジュールにより、前記アプリケーションサーバにより前記データベースオペレーション装置に対して送信された前記データベースオペレーションコマンドを受信する段階
の一方を有する、
請求項１に記載の方法。
【請求項３】
前記予測実行モジュールにより、前記予測アルゴリズムを実行する前記段階は、
前記予測実行モジュールにより、前記データベースオペレーションコマンドを読み取りコマンドおよび書き込みコマンドに分割する段階と、
前記予測実行モジュールにより、前記データベースにおいて前記読み取りコマンドを実行して、読み取りデータセットを取得する段階と、
前記予測実行モジュールにより、前記読み取りデータセットをローカルに確立されたメモリバンクに格納する段階と、
前記予測実行モジュールにより、前記メモリバンクにおいて前記書き込みコマンドを実行して、前記読み取りデータセットを修正する段階と
を含む、
請求項１または２に記載の方法。
【請求項４】
前記制御実行モジュールにより、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する前記段階は、
前記制御実行モジュールにより、ローカルに記録された前記データベースオペレーションコマンドを前記データベースに対して発行して、前記データベースオペレーションコマンドを実行するよう前記データベースに命令し、前記データベースにより戻された前記データベースオペレーションコマンドの実際の実行結果を受信する段階と、
前記実際の実行結果が前記予測実行結果と同じだった場合、前記制御実行モジュールにより、前記トランザクションコミットコマンドを前記データベースに対して発行し、これにより、前記データベースが前記対象トランザクションをコミットする段階と、
前記実際の実行結果が前記予測実行結果とは異なっていた場合、前記制御実行モジュールにより、トランザクションロールバックコマンドを前記データベースに対して発行し、これにより、前記データベースが前記対象トランザクションをロールバックする段階と
を有する、
請求項１から３のいずれか一項に記載の方法。
【請求項５】
前記制御実行モジュールにより、ローカルに記録された前記データベースオペレーションコマンドを前記データベースに対して発行する前記段階は、
前記制御実行モジュールにより、ローカルに記録された前記データベースオペレーションコマンドを前記データベースに対して同時に発行する段階
を含む、
請求項４に記載の方法。
【請求項６】
前記制御実行モジュールにより、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する前記段階は、
前記制御実行モジュールにより、ローカルに記録された前記データベースオペレーションコマンドに従って、前記対象トランザクションがスタンドアロントランザクションであるかどうかを判断する段階と、
判断結果が肯定的であった場合、前記制御実行モジュールにより、スタンドアロントランザクション処理ロジックを用いて前記データベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する段階、または
判断結果が否定的であった場合、前記制御実行モジュールにより、分散トランザクション処理ロジックを用いて前記データベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する段階と
を有する、
請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記対象トランザクションに関するトランザクションロールバックコマンドを取得した場合、前記予測実行モジュールにより、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データを削除する段階
をさらに備える、請求項１から６のいずれか一項に記載の方法。
【請求項８】
データベースオペレーション装置であって、
アプリケーションサーバにより対象トランザクションを実行する処理の間、前記アプリケーションサーバにより前記対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する取得モジュールと、
前記データベースオペレーションコマンドを実行して前記対象トランザクションの実行経路を予測する予測アルゴリズムを実行し、予測実行結果を前記アプリケーションサーバに戻し、これにより、前記アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定し、かつ、前記データベースオペレーションコマンドと、前記予測アルゴリズムの前記実行から生成された予測実行データとをローカルに記録する予測実行モジュールと、
前記対象トランザクションに関するトランザクションコミットコマンドを取得する場合、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する制御実行モジュールと
を備える装置。
【請求項９】
前記取得モジュールは具体的には、
前記アプリケーションサーバにより前記データベースに対して送信された前記データベースオペレーションコマンドをインタセプトするか、または
前記アプリケーションサーバにより前記データベースオペレーション装置に対して送信された前記データベースオペレーションコマンドを受信する、
請求項８に記載の装置。
【請求項１０】
前記予測実行モジュールは具体的には、
前記データベースオペレーションコマンドを読み取りコマンドおよび書き込みコマンドに分割し、
前記データベースにおいて前記読み取りコマンドを実行して、読み取りデータセットを取得し、
前記読み取りデータセットをローカルに確立されたメモリバンクに格納し、かつ、
前記メモリバンクにおいて前記書き込みコマンドを実行して、前記読み取りデータセットを修正する、
請求項８または９に記載の装置。
【請求項１１】
前記制御実行モジュールは具体的には、
ローカルに記録された前記データベースオペレーションコマンドを前記データベースに対して発行して、前記データベースオペレーションコマンドを実行するよう前記データベースに命令し、前記データベースにより戻された前記データベースオペレーションコマンドの実際の実行結果を受信し、
前記実際の実行結果が前記予測実行結果と同じだった場合、前記トランザクションコミットコマンドを前記データベースに対して発行し、これにより、前記データベースが前記対象トランザクションをコミットし、かつ、
前記実際の実行結果が前記予測実行結果とは異なっていた場合、トランザクションロールバックコマンドを前記データベースに対して発行し、これにより、前記データベースが前記対象トランザクションをロールバックする、
請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
前記制御実行モジュールは具体的には、
ローカルに記録された前記データベースオペレーションコマンドを前記データベースに対して同時に発行する、
請求項１１に記載の装置。
【請求項１３】
前記制御実行モジュールは具体的には、
ローカルに記録された前記データベースオペレーションコマンドに従って、前記対象トランザクションがスタンドアロントランザクションであるかどうかを判断し、
判断結果が肯定的であった場合、スタンドアロントランザクション処理ロジックを用いて前記データベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行するか、または
判断結果が否定的であった場合、分散トランザクション処理ロジックを用いて前記データベースを制御して、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データに従って前記対象トランザクションを実際に実行する、
請求項８から１２のいずれか一項に記載の装置。
【請求項１４】
前記予測実行モジュールはさらに、
前記対象トランザクションに関するトランザクションロールバックコマンドが取得された場合、ローカルに記録された前記データベースオペレーションコマンドおよび前記予測実行データを削除する、
請求項８から１３のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照  本願は、２０１５年９月８日に出願された、「データベースオペレーション方法および装置」という発明の名称の中国特許出願第２０１５１０５６３７４５．３号および２０１６年８月３０日に出願された、「データベースオペレーション方法および装置」という発明の名称のＰＣＴ出願第ＰＣＴ／ＣＮ１６／９７２６８号の優先権を主張する。これらの出願は両方とも、参照によりそれらの全体が本明細書に組み込まれている。
【背景技術】
【０００２】
開示される実施形態は、データベース分野に関し、特に、データベーストランザクションの最適化に関する。
【０００３】
データベース「トランザクション」とは、全てであるか、または全てではないかのいずれであるかを問わず、単一の論理作業単位として実行される一連のデータベースオペレーションを指す。トランザクションは、構造化照会言語（ＳＱＬ）ステートメントなど、一連のデータベースオペレーションコマンドから成る。これらのデータベースオペレーションコマンドは、条件付きステートメントおよびジャンプなどのロジックを有する。これは、１回の実行の間、トランザクションにおけるいくつかのデータベースオペレーションコマンドがスキップされ得、実行されない可能性があることを意味する。しかしながら、現在のシステムでは、トランザクションに関して実行される必要があるデータベースオペレーションコマンドは、事前に取得され得ない。データベースオペレーションコマンドは、データベースに対してオペレーションを実行するために順次実行されるトランザクションのロジックおよびステートメントに従って、実行の間にのみ決定され得る。このトランザクション実行技術は効率がより低く、トランザクションスループットが比較的低い。
【発明の概要】
【０００４】
開示される実施形態の様々な態様が、トランザクション実行効率を向上させるための、かつ、トランザクションスループットを増加させるためのデータベースオペレーション方法および装置を提供する。
【０００５】
開示される実施形態の一態様は、データベースオペレーション方法であって、アプリケーションサーバにより対象トランザクションを実行する処理の間、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する段階と、データベースオペレーションコマンドに対して予測アルゴリズムを実行する段階と、
予測実行結果をアプリケーションサーバに戻し、これにより、アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定する段階と、データベースオペレーションコマンドと、予測アルゴリズムの実行から生成された予測実行データとをローカルに記録する段階と、対象トランザクションに関するトランザクションコミットコマンドを取得する場合、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する段階とを備える方法を提供する。
【０００６】
本開示の別の態様は、データベースオペレーション装置であって、アプリケーションサーバにより対象トランザクションを実行する処理の間、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得するように構成される取得モジュールと、データベースオペレーションコマンドに対して予測アルゴリズムを実行し、予測実行結果をアプリケーションサーバに戻し、これにより、アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定し、かつ、データベースオペレーションコマンドと、予測アルゴリズムの実行から生成された予測実行データとをローカルに記録するように構成される予測実行モジュールと、対象トランザクションに関するトランザクションコミットコマンドを取得する場合、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行するように構成される制御実行モジュールとを備える装置を提供する。
【０００７】
本開示において、データベースオペレーション装置は、アプリケーションサーバと共に動作する。アプリケーションサーバが対象トランザクションを実行する場合、対象トランザクションについて実行されるべき全てのデータベースオペレーションコマンドと、予測実行データとを事前に取得および記録するために、予測実行プロセスが追加され、それにより、トランザクションのための実際の実行についての条件が与えられる。次に、記録されたデータベースオペレーションコマンドおよび予測実行データに従って、アプリケーションサーバに対応するデータベースを制御して、対象トランザクションに関する実行を実際にし、それにより、実行効率を向上させ、さらに、トランザクションスループットを増加させる。
【図面の簡単な説明】
【０００８】
開示される実施形態における技術的解決手段をより明確に示すべく、実施形態または現在のシステムの説明において用いられる図面が、以下の説明において簡潔に紹介される。以下に説明される図面は、本開示のいくつかの実施形態に過ぎず、当業者であれば、創造的な努力なしに、これらの図面から他の図面をさらに導出し得る。
【０００９】
【図１】現在のシステムにより用いられるデータベースアプリケーションシステムのブロック図である。
【００１０】
【図２】本開示のいくつかの実施形態に従ったデータベースアプリケーションシステムのブロック図である。
【００１１】
【図３】本開示のいくつかの実施形態に従ったデータベースオペレーション方法を示すフロー図である。
【００１２】
【図４】本開示のいくつかの実施形態に従ったデータベースオペレーション装置の機能ブロック図である。
【発明を実施するための形態】
【００１３】
開示される実施形態の目的、技術的実装および利点をより明確にすべく、開示される実施形態の技術的実装が、図面を参照して以下に明確かつ完全に説明される。説明される実施形態は、実施形態の全てではなく、実施形態の一部である。図示される実施形態に基づいて、当業者が創造的な努力をしないで実現する全ての他の実施形態が、本開示の範囲内に入る。
【００１４】
図１は、現在のシステムにより用いられるデータベースアプリケーションシステムのブロック図である。
【００１５】
図１に示されるように、システムは、アプリケーションサーバ１０およびデータベース２０を含む。データベース２０の数は１または複数であり得る。１つのデータベース２０のみが、図１において例として用いられる。トランザクション方式でデータベース２０にアクセスする場合、アプリケーションサーバ１０は、トランザクションロジックを実行して、データベース２０上で、トランザクションについてのデータベースオペレーションコマンドを順次適用する。そのようなトランザクション実行手段は効率がより低く、トランザクションスループットが比較的低い。
【００１６】
現在のシステムにおける欠陥を考慮して、開示される実施形態は、図２に示されるように、新しいデータベースアプリケーションシステムを提供する。
【００１７】
図示されるシステムは、アプリケーションサーバ１０とデータベース２０との間にデータベースオペレーション装置３０を加えている。データベースオペレーション装置３０は、本明細書において提供されるデータベースオペレーション方法を実行して、新しいトランザクション実行ロジックを実装するように構成される。つまり、まず予測アルゴリズムをトランザクションに対して実行して、トランザクションについて実行される必要があるデータベースオペレーションコマンドを事前に取得し、実行経路を予測し、次に、データベースオペレーションコマンドと、予測の実行を介して取得された予測実行データとに基づいて、データベース２０上でトランザクションを実際に実行する。方法は、論じられるように、トランザクション実行効率を向上させ、トランザクションスループットを増加させる。本明細書において用いられるように、トランザクションスループットとは、単位時間当たりのトランザクション処理数を指す。
【００１８】
データベースオペレーション装置３０は、実際にはロジック処理装置であり、アプリケーションサーバ１０とデータベース２０との間に別々に配置され得ることに留意すべきである。いくつかの実施形態において、データベースオペレーション装置３０は、アプリケーションサーバ１０またはデータベース２０のいずれかに配置され得る。
【００１９】
以下の実施形態は、開示される実施形態の技術的解決手段についての方法のフローを具体的に示す。
【００２０】
図３は、本開示のいくつかの実施形態に従ったデータベースオペレーション方法を示すフロー図である。図３に示されるように、方法は、以下の段階を含む。
【００２１】
段階３０１。アプリケーションサーバにより対象トランザクションを実行する処理の間、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する。
【００２２】
段階３０２。データベースオペレーションコマンドに対して予測アルゴリズムを実行し、予測実行結果をアプリケーションサーバに戻し、これにより、アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定し、かつ、データベースオペレーションコマンドと、予測アルゴリズムの実行から生成された予測実行データとをローカルに記録する。
【００２３】
段階３０３。対象トランザクションに関するトランザクションコミットコマンドを取得する場合、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する。
【００２４】
まず、説明の便宜のために、アプリケーションサーバにより実行される必要があるトランザクションは、本実施形態において、対象トランザクションと称される。対象トランザクションは、データベース上でオペレーションを実行するためのオペレーションコマンドを含み、データベースオペレーションコマンド以外に、トランザクション開始コマンド、トランザクションコミットコマンドおよびトランザクションロールバックコマンドなど、対象トランザクションに関する実行ステータスを制御するためのいくつかの制御コマンドをさらに含む。これらのコマンドは、データベース言語で書き込まれるステートメントであり得る。データベース言語に応じて、これらのコマンドは、異なる言語で書き込まれ得る。例えば、ＳＱＬが用いられる場合、上記のデータベースオペレーションコマンドおよび制御コマンドは、実際には一連のＳＱＬステートメントである。
【００２５】
アプリケーションサーバは、対象トランザクション全体の実行ロジックを制御し、対象トランザクションは、既存の方法に従って実行され得る。データベースオペレーション装置は、アプリケーションサーバにより対象トランザクションを実行する処理の間、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得する。
【００２６】
一実施形態において、アプリケーションサーバは、データベースにアクセスすべく、既存の方式に従って、データベースオペレーションコマンドをデータベースに対して送信する。データベースオペレーション装置は、アプリケーションサーバによりデータベースに対して送信されたデータベースオペレーションコマンドをインタセプトすべく、アプリケーションサーバとデータベースとの間の通信をモニタし得る。
【００２７】
別の実施形態において、アプリケーションサーバの処理ロジックは、わずかに修正され、最初にデータベースオペレーションコマンドをデータベースに対して送信するロジックは、データベースオペレーションコマンドをデータベースオペレーション装置に送信するように変更される。本実施形態において、データベースオペレーション装置は、アプリケーションサーバによりアクティブに発行されたデータベースオペレーションコマンドを受信し得る。
【００２８】
対象トランザクションが明示的なトランザクションである場合、対象トランザクションについての第１コマンドが、「トランザクションを開始する」などのトランザクション開始コマンドであろうことに留意すべきである。この例において、アプリケーションサーバにより実行されたデータベースオペレーションコマンドを取得する前に、データベースオペレーション装置は、対象トランザクションについてアプリケーションサーバによりデータベースに対して送信されたトランザクション開始コマンドをインタセプトし得る。次に、データベースオペレーション装置は、（トランザクション開始コマンドに従って）対象トランザクションが実行される必要があることを決定し得る。代替的に、アプリケーションサーバにより実行されたデータベースオペレーションコマンドを取得する前に、データベースオペレーション装置は、アプリケーションサーバによりアクティブに発行されたトランザクション開始コマンドを受信し得、トランザクション開始コマンドに従って、対象トランザクションが実行される必要があることを決定し得る。対象トランザクションが黙示的なトランザクションである場合、対象トランザクションの第１コマンドは、データベースオペレーションコマンドであろう。この場合、トランザクション開始コマンドを取得する段階は含まれない。
【００２９】
アプリケーションサーバにより実行されたデータベースオペレーションコマンドを取得した後に、データベースオペレーション装置は、取得したデータベースオペレーションコマンドに対して予測アルゴリズムを実行し、予測実行結果をアプリケーションサーバに戻し、これにより、アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定し得る。予測実行結果により、対象トランザクションの実行経路が決定される。本明細書において、実行経路とは、データベースオペレーションコマンド間のジャンプロジックを指す。予測実行結果をアプリケーションサーバに戻すことにより、アプリケーションサーバにより対象トランザクション全体の実行ロジックを制御するという目的が実現される。
【００３０】
加えて、データベースオペレーション装置はさらに、取得したデータベースオペレーションコマンドと、データベースオペレーションコマンドに対する予測アルゴリズムの実行を介して生成された予測実行データとをローカルに記録する必要がある。予測実行データとは主に、データベースオペレーションコマンドに対して予測アルゴリズムを実行する処理におけるいくつかのデータを指す。
【００３１】
例えば、データベースオペレーション装置は、メモリバンクをローカルに確立し得、取得したデータベースオペレーションコマンドと、予測実行データとをメモリバンクに格納し得る。
【００３２】
データベースオペレーションコマンドによりデータベース上で実行されるオペレーションは主に、データベースにおけるデータへのアクセスである。データベースオペレーションコマンドのためのデータ環境がシミュレートされ得、シミュレートされたデータ環境に基づいて、データベースオペレーションコマンドに対して予測アルゴリズムを実行する。そのようなことに基づいて、データベースオペレーションコマンドに対して予測アルゴリズムを実行する方法は、ローカルに確立されたメモリバンクにおいて、データベースオペレーションコマンドにより要求されたデータ環境をシミュレートする段階と、シミュレートされたデータ環境に基づいて、データベースオペレーションコマンドに対して予測アルゴリズムを実行する段階とを含み得る。
【００３３】
さらに、ローカルに確立されたメモリバンクにおいて、データベースオペレーションコマンドにより要求されたデータ環境をシミュレート段階と、シミュレートされたデータ環境に基づいて、データベースオペレーションコマンドに対して予測アルゴリズムを実行する段階とは、取得したデータベースオペレーションコマンドを読み取りコマンドおよび書き込みコマンドに分割する段階と、実データベース上で読み取りコマンドを実行する段階とを含む。つまり、データベースにおける読み取りコマンドを実行して、読み取りデータセット（ＲｅａｄＳｅｔ）を取得し、読み取りデータセットをローカルメモリバンクに格納して、データベースオペレーションコマンドにより要求されたデータ環境をシミュレートする。次に、方法は、メモリバンクに対して書き込みコマンドを適用して、データベースオペレーションコマンドに対して予測アルゴリズムを実行することを可能にし得る。つまり、方法は、メモリバンクにおいて書き込みコマンドを実行して、読み取りデータセットにおける関連データを更新またはクエリするなど、読み取りデータセットを修正する。書き込みコマンドを実行して読み取りデータセットを修正することにより、結果データセット（ａｆｆｅｃｔＲｏｗＩｎＭｅｍｄｂ）が生成され得る。結果データセットは、予測実行結果を含む。
【００３４】
予測アルゴリズムを実行する上記処理において、データベースオペレーション装置は、読み取りコマンドにより読み取られた読み取りデータセットと、書き込みコマンドを実行することにより生成された結果データセットとをローカルに記録し得る。このことを考慮して、予測実行データは、読み取りデータセットおよび結果データセットを含み得るか、またはデータベースにおける実際の対象トランザクションについて有利な効果を生じさせ得るデータなど、読み取りデータセットにおけるいくつかのデータと、結果データセットにおけるいくつかのデータとを含み得る。そのようなデータの例には、第１レベルインデックス、第２レベルインデックスまたは１次キー値など、いくつかの値の様々なインデックスが含まれる。
【００３５】
データベースオペレーション装置は、順次取得したデータベースオペレーションコマンドに対してそれぞれ予測アルゴリズムを実行し、データベースオペレーションコマンドおよび対応する予測実行データを取得し、データオペレーションコマンドおよび対応する予測実行データをメモリバンクに格納する。
【００３６】
対象トランザクションについてのトランザクションコミットコマンドを取得する（つまり、アプリケーションサーバがトランザクションコミットコマンドを実行する）場合、データベースオペレーション装置は、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従ってアプリケーションサーバに対応するデータベースを制御して、対象トランザクションを実際に実行し得る。
【００３７】
上記事項を考慮して、データベースオペレーション装置は、アプリケーションサーバと共に動作する。アプリケーションサーバが対象トランザクションに関する実行をする場合、対象トランザクションについて実行されるべき全てのデータベースオペレーションコマンドと、予測実行データとを事前に取得および記録するために、予測実行プロセスが追加され、それにより、トランザクションのための実際の実行についての条件が与えられる。次に、記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションが実際に実行される場合、関連データ情報が事前に取得され得、コマンド間のジャンプが低減され得る。それにより、実行効率が向上し、トランザクションスループットが増加する。
【００３８】
アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する一実施形態は、ローカルに記録されたデータベースオペレーションコマンドをデータベースオペレーション装置によりデータベースに対して発行して、ローカルに記録されたデータベースオペレーションコマンドを実行するようデータベースに命令すること、データベースにより戻されたデータベースオペレーションコマンドの実際の実行結果を受信すること、次に、データベースオペレーションコマンドの実際の実行結果を予測実行結果と比較することを含む。実際の実行結果が予測実行結果と同じだった場合、トランザクションコミットコマンドをデータベースに対して発行し、これにより、データベースが対象トランザクションをコミットする。実際の実行結果が予測実行結果とは異なっていた場合、トランザクションロールバックコマンドをデータベースに対して発行し、これにより、データベースが対象トランザクションをロールバックする。
【００３９】
上記実施形態において、トランザクションの原子性が、実際の実行結果と予測実行結果との比較を介して考慮される。トランザクションの実行におけるエラーが回避され得、トランザクションが正常に実行される可能性が向上し得る。
【００４０】
さらに、現在のシステムでは、トランザクションにより実行される必要があるデータベースオペレーションコマンドの全てが事前に認識され得るわけではないので、データベースオペレーションコマンドは、トランザクションの実行ロジックに従って順次実行されざるを得ない。これは、アプリケーションサーバとデータベースとの間の頻繁なやり取りをもたらす。上記のことが遠隔的に行われるシナリオでは、大量のネットワークリソースが消費される。しかしながら、本実施形態において、対象トランザクションにより実行される必要がある全てのデータベースオペレーションコマンドは、予測実行処理を通じて、すなわち、ローカルに記録されたデータベースオペレーションコマンドを通じて、事前に取得される。従って、ローカルに記録されたデータベースオペレーションコマンドは、ローカルに記録されたデータベースオペレーションコマンドをデータベースに対して発行して、ローカルに記録されたデータベースオペレーションコマンドを実行するようデータベースに命令する処理において同時に（または一緒に）データベースに対して発行され得、それにより、ネットワークリソースが節約される。加えて、いくつかの並列データベースオペレーションコマンドについて、データベースは、並列オペレーションを実行し得、それにより、トランザクション実行効率をさらに向上させる。
【００４１】
さらに、ローカルに記録されたデータベースオペレーションコマンドおよびローカルに記録された予測実行データの全てが、データベースに対して一緒に発行され得る。
【００４２】
さらに、アプリケーションサーバに対応するデータベースを制御して、メモリバンクに格納されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する一実施形態において、データベースオペレーション装置は、ローカルに記録されたデータベースオペレーションコマンドに従って、対象トランザクションがスタンドアロントランザクションであるかどうかを判断し得る。判断結果が肯定的であった場合、スタンドアロントランザクション処理ロジックを用いてデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する。判断結果が否定的であった場合、分散トランザクション処理ロジックを用いてデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行する。
【００４３】
対象トランザクションがスタンドアロントランザクションであるか、または分散トランザクションであるかは、予測実行プロセスにおいて取得されたデータベースオペレーションコマンドに基づいて判断され得る。例えば、ローカルに記録されたデータベースオペレーションコマンドが適用されるオブジェクトが同じ物理デバイスであるかどうかが判断され得る。判断結果が肯定的であった場合、対象トランザクションはスタンドアロントランザクションであると判断され得る。判断結果が否定的であった場合、対象トランザクションは分散トランザクションであると判断され得る。
【００４４】
分散トランザクションの処理ロジックは、スタンドアロントランザクションのものとは異なる。スタンドアロントランザクションの処理ロジックは、読み取り／書き込みロック等のコマンド発行を伴わないなど、比較的単純である。従って、リソースの消費が比較的少ない。そのようなことに基づいて、本実施形態は、対象トランザクションがスタンドアロントランザクションであるかどうかを判断し、対象トランザクションがスタンドアロントランザクションであると判断した場合、スタンドアロントランザクションの処理ロジックを続行し、それにより、処理効率を向上させ、処理コストを節約する。
【００４５】
一実施形態において、データベースオペレーション装置が対象トランザクションについてのトランザクションロールバックコマンドを取得した場合（つまり、アプリケーションサーバがトランザクションロールバックコマンドを実行した場合）、ローカルメモリバンクが直接クリアされて、ロールバックオペレーションを可能にし得る。この場合、対象トランザクションは実際にはデータベースにおいて実行されないので、データベースは、ロールバックオペレーションを実行する必要がない。このことを考慮して、この場合、本実施形態の方法を用いることにより、トランザクション実行効率も向上させ得る。
【００４６】
開示される実施形態の技術的解決手段の動作フローを詳細に説明するために、以下の説明における例として、在庫削減トランザクションが用いられる。
【００４７】
在庫削減トランザクションのＳＱＬコードは以下のとおりであり、括弧内のテキストは注記である。
ｂｅｇｉｎ  ｔｒａｎｓａｃｔｉｏｎ［トランザクションを開始する］
ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？  ｆｏｒ  ｕｐｄａｔｅ；［アイテムｉｄを用いて、現在の在庫を確認し、ロックする］
ｉｆ  （ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＞  ０）
ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ−−；
ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＝
＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？；
ｃｏｍｍｉｔ；
ｅｌｓｅ
ｒｏｌｌｂａｃｋ；［現在の在庫が０よりも大きい場合、アイテム在庫を削減および更新してコミットし、そうでなければ、ロールバックする］
【００４８】
実際の実行処理の間、アプリケーションサーバは、在庫削減トランザクションのロジック全体を担い、データベースオペレーション装置（または実行サーバと称され得る）は、アプリケーションサーバにより実行されたｂｅｇｉｎ  ｔｒａｎｓａｃｔｉｏｎと、実行される必要があるＳＱＬステートメントと、ｃｏｍｍｉｔ／ｒｏｌｌｂａｃｋコマンドとのみを取得し得る。
【００４９】
まず、トランザクションの開始後、データベースオペレーション装置は、メモリバンクをローカルに確立する。
【００５０】
「ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？  ｆｏｒ  ｕｐｄａｔｅ」というＳＱＬステートメントを取得する場合、データベースオペレーション装置は、当該ＳＱＬステートメントをデータベースにおいて直接検索し、クエリ結果（つまり、処理されるべくクエリされたデータ、現在の在庫）をローカルメモリバンクに記録し、全ての問い合わせ結果をアプリケーションサーバに戻す。
【００５１】
当該ＳＱＬステートメントはクエリステートメントであるので、当該ステートメントを分割すると同じ結果をもたらさないことに留意すべきである。オペレーションを簡略化すべく、クエリステートメントは分割される必要がない可能性がある。
【００５２】
データベースオペレーション装置により戻されたクエリ結果を受信した後、アプリケーションサーバは、クエリ結果が０よりも大きいかどうかを判断し、判断結果が肯定的であった場合、現在の在庫を削減し、当該ステートメントの更新を実行する。つまり、「ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＝  ＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」について判断結果が否定的であった場合、ロールバックステートメントを実行する。
【００５３】
データベースオペレーション装置がロールバックステートメントを受信した場合、ローカルメモリバンクはクリアされる。この場合、トランザクションはデータベースにおいて実行されないので、データベースは、ロールバックオペレーションを実行する必要がない。
【００５４】
データベースオペレーション装置が更新ステートメント、すなわち、「ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＝  ？  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」を受信した場合、データベースオペレーション装置は、当該ＳＱＬステートメントを読み取りデータベースコマンド、すなわち、「ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」と、書き込みデータベースコマンド、すなわち、「ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＝  ？  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」とに分割する。次に、当該装置は、読み取りデータセットを取得するために「ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」というステートメントをデータベースに送信し、読み取りデータセットにおけるデータをローカルメモリバンクに書き込み、次に、結果データセットを取得すべく、かつ、当該結果データセットの実行結果をアプリケーションサーバに戻すべく、「ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＝  ？  ｗｈｅｒｅ  ｉｔｅｍＩｄ  ＝  ？」というステートメントに基づいて、ローカルメモリバンクにおいて更新オペレーションを実行する。次に、アプリケーションサーバは、コミットコマンドを実行する。結果データセットおよび読み取りデータセットにおけるデータは、予測実行データを形成する。
【００５５】
コミットコマンドを取得する場合、データベースオペレーション装置は、ＳＱＬステートメントと、メモリバンクに格納された予測実行データとに基づいて、データベースにおいて在庫削減トランザクションを実行する。この時、トランザクション実行処理が実際に行われる。
【００５６】
好ましくは、データベースオペレーション装置は、メモリバンクにおける全てのＳＱＬステートメントをデータベースに一度にコミットし得、データベースは、これに基づいて実行をし、ＳＱＬステートメントを伝送することにより、ネットワークリソースコストを節約する。
【００５７】
実行結果もこの実際の実行から戻され、予測実行結果が実際の実行結果と比較され得る。比較結果が、２つの結果は同じであるということであった場合、このトランザクションは、データベースにおいてコミットされ得る。比較結果が、２つの結果は異なるということであった場合、当該コミットは失敗とみなされる。この場合、トランザクションは、データベースにおいて実際には実行およびコミットされないので、要求全体が単にロールバックされ得、アプリケーションサーバは、再コミットする。
【００５８】
実行される必要がある全てのＳＱＬステートメントが、全てのスライス条件および数値インデックスなど、それらの対応する予測実行データと共に、上記の予測の実行から既に取得されている。これらのデータは、トランザクションがスタンドアロントランザクションであるかどうかを事前に判断するのに十分なものである。これに基づいて、対応するトランザクションロジックが用いられ得、リソースの節約に役立つ。
【００５９】
前述の方法の実施形態の各々を簡潔に説明すべく、方法の実施形態の全てが一連の動作の組み合わせとして表されることに留意すべきである。当業者であれば、本開示は、説明される一連の動作により限定されないことを認識しているはずである。ある段階は、開示される実施形態に従って、異なる順序で適用され得るか、または同時に実行され得る。第２に、当業者であれば、本明細書において説明される全ての実施形態は、例示的な実施形態に属することも認識しているはずである。関連する動作およびモジュールは、本開示に必ずしも必要ではない。
【００６０】
実施形態において、各実施形態の説明には独自の着目点がある。また、ある実施形態において詳細に説明されないものの参照は、他の実施形態の関連する説明を参照することによりなされ得る。
【００６１】
図４は、本開示のいくつかの実施形態に従ったデータベースオペレーション装置の機能ブロック図である。図４に示されるように、装置は、取得モジュール４１と、予測実行モジュール４２と、制御実行モジュール４３とを含む。
【００６２】
取得モジュール４１は、アプリケーションサーバにより対象トランザクションを実行する処理の間、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを順次取得するように構成される。
【００６３】
予測実行モジュール４２は、データベースオペレーションコマンドに対して予測アルゴリズムを実行し、予測実行結果をアプリケーションサーバに戻し、これにより、アプリケーションサーバが、次に実行されるべきデータベースオペレーションコマンドを決定し、かつ、データベースオペレーションコマンドと、予測アルゴリズムの実行から生成された予測実行データとをローカルに記録するように構成される。
【００６４】
制御実行モジュール４３は、対象トランザクションに関するトランザクションコミットコマンドを取得する場合、アプリケーションサーバに対応するデータベースを制御して、メモリバンクに格納されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行するように構成される。
【００６５】
一実施形態において、取得モジュール４１は具体的には、アプリケーションサーバによりデータベースに対して送信されたデータベースオペレーションコマンドをインタセプトするように、またはアプリケーションサーバによりアクティブに発行されたデータベースオペレーションコマンドを受信するように構成される。
【００６６】
一実施形態において、取得モジュール４１はさらに、アプリケーションサーバにより対象トランザクションについて実行されたデータベースオペレーションコマンドを取得する前に、対象トランザクションについてアプリケーションサーバによりデータベースに対して送信されたトランザクション開始コマンドをインタセプトするように、またはアプリケーションサーバによりアクティブに発行された対象トランザクションについてのトランザクション開始コマンドを受信するように構成される。
【００６７】
一実施形態において、予測実行モジュール４２は具体的には、ローカルに確立されたメモリバンクにおいて、データベースオペレーションコマンドにより要求されたデータ環境をシミュレートし、シミュレートされたデータ環境に基づいて、データベースオペレーションコマンドに対して予測アルゴリズムを実行するように構成される。
【００６８】
さらに、予測実行モジュール４２は具体的には、データベースオペレーションコマンドを読み取りコマンドおよび書き込みコマンドに分割し、データベースにおいて読み取りコマンドを実行して、読み取りデータセットを取得し、読み取りデータセットをメモリバンクに格納して、データベースオペレーションコマンドのためのデータ環境をシミュレートし、かつ、メモリバンクにおいて書き込みコマンドを実行して、読み取りデータセットを修正するように構成される。
【００６９】
一実施形態において、制御実行モジュール４３は具体的には、ローカルに記録されたデータベースオペレーションコマンドをデータベースに対して発行して、データベースオペレーションコマンドを実行するようデータベースに命令し、データベースにより戻されたデータベースオペレーションコマンドの実際の実行結果を受信し、実際の実行結果が予測実行結果と同じだった場合、トランザクションコミットコマンドをデータベースに対して発行し、これにより、データベースが対象トランザクションをコミットし、かつ、実際の実行結果が予測実行結果とは異なっていた場合、トランザクションロールバックコマンドをデータベースに対して発行し、これにより、データベースが対象トランザクションをロールバックするように構成される。
【００７０】
トランザクションの原子性は、制御実行モジュール４３に実際の実行結果を予測実行結果と比較させることにより考慮される。トランザクションの実行におけるエラーが回避され得、トランザクションが正常に実行される可能性が向上し得る。
【００７１】
さらに、制御実行モジュール４３は具体的には、ローカルに記録されたデータベースオペレーションコマンドをデータベースに対して発行する処理において、ローカルに記録されたデータベースオペレーションコマンドをデータベースに対して同時に発行して、ローカルに記録されたデータベースオペレーションコマンドを実行するようデータベースに命令し、それによりネットワークリソースを節約するように構成される。
【００７２】
一実施形態において、制御実行モジュール４３は具体的には、ローカルに記録されたデータベースオペレーションコマンドに従って、対象トランザクションがスタンドアロントランザクションであるかどうかを判断し、判断結果が肯定的だった場合、スタンドアロントランザクション処理ロジックを用いてデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行するように、または判断結果が否定的だった場合、分散トランザクション処理ロジックを用いてデータベースを制御して、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションを実際に実行するように構成される。
【００７３】
分散トランザクションの処理ロジックは、スタンドアロントランザクションのものとは異なる。スタンドアロントランザクションの処理ロジックは、読み取り／書き込みロック等のコマンド発行を伴わないなど、比較的単純である。従って、リソースの消費が比較的少ない。そのようなことに基づいて、制御実行モジュール４３は、対象トランザクションがスタンドアロントランザクションであるかどうかを判断し、対象トランザクションがスタンドアロントランザクションであると判断した場合、スタンドアロントランザクションの処理ロジックを続行し、それにより、処理効率を向上させ、処理コストを節約する。
【００７４】
一実施形態において、予測実行モジュール４２はさらに、対象トランザクションに関するトランザクションロールバックコマンドが取得された場合、メモリバンクをクリアするなど、ローカルに記録されたデータベースオペレーションコマンドおよび予測実行データを削除するように構成される。
【００７５】
本実施形態において提供されるデータベースオペレーション装置は、アプリケーションサーバとデータベースとの間に別々に配置され得るか、またはアプリケーションサーバまたはデータベースに配置され得る。
【００７６】
本実施形態において提供されるデータベースオペレーション装置は、アプリケーションサーバと共に動作する。アプリケーションサーバが対象トランザクションに関する実行をする場合、予測実行プロセスが追加される。予測の実行において、対象トランザクションの実行経路、すなわち、実際に実行されるデータベースオペレーションコマンドが事前に取得され得、トランザクションの実際の実行についての条件を与えるべく、予測の実行から生成された予測実行データが記録される。次に、記録されたデータベースオペレーションコマンドおよび予測実行データに従って対象トランザクションが実際に実行される場合、関連データ情報が予測実行データに基づいて事前に取得され得、コマンド間のジャンプが低減され得、それにより、実行効率が向上し、トランザクションスループットが増加する。
【００７７】
当業者であれば、簡便かつ簡潔な説明のために、上述のシステム、デバイスおよびユニットの特定の作業プロセスの参照が、前述の方法の実施形態における対応するプロセスを参照することによりなされ得ることを明確に理解し得る。このことは本明細書において繰り返し述べない。
【００７８】
本開示により提供されるいくつかの実施形態において、開示されるシステム、装置および方法は、他のやり方で実装され得ることが理解されるべきである。例えば、上述のデバイスの実施形態は、例示的なものに過ぎない。例えば、ユニットの分割は、論理的機能の分割に過ぎず、複数のユニットまたはコンポーネントが組み合わされ得るか、または別のシステムに統合され得る等の実際の実装における他の分割方法が存在し得るか、またはいくつかの特徴が無視され得るか、または実行されない。加えて、表示されるか、または論じられる相互結合、直接結合または通信接続は、デバイスまたはユニットのいくつかのインタフェース、間接結合または通信接続を通じた電気的形式、機械的形式または他の形式であり得る。
【００７９】
別個の部分として説明されるユニットは、物理的に分離され得るか、または物理的に分離され得ない。ユニットとして示される部分は、物理ユニットであり得るか、または物理ユニットであり得ず、一箇所に配置され得るか、または複数のネットワークユニット上に分散され得る。本実施形態の解決手段の目的は、実際の要件に従ってユニットの一部または全部を選択することにより、実現され得る。
【００８０】
加えて、開示される実施形態における様々な機能ユニットは、１つの処理ユニットに統合され得るか、もしくはそれらのユニットは、物理的に、かつ別々に存在するか、または２つまたはそれより多くのユニットが１つのユニットに統合される。統合されたユニットは、ハードウェアを用いることにより実装され得、ハードウェアにソフトウェア機能ユニットを加えた形式でも実装され得る。
【００８１】
ソフトウェア機能ユニットの形式で実装される統合されたユニットは、コンピュータ可読記憶媒体に格納され得る。ソフトウェア機能ユニットは、記憶媒体に格納され、（パーソナルコンピュータ、サーバ、ネットワークデバイスまたは同様のものであり得る）コンピュータデバイス、またはプロセッサが、開示される実施形態における方法の段階の一部を実行することを可能にするいくつかの命令を含む。前述の記憶媒体は、ＵＳＢフラッシュディスク、モバイルハードディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク、光学ディスクまたは同様のものなど、プログラムコードを格納することができる様々な媒体を含む。
【００８２】
最後に、上記実施形態は、本開示の技術的解決手段の限定ではなく、例示のために用いられているに過ぎないことを留意すべきである。開示される実施形態が前述の実施形態を参照して詳細に説明されているが、当業者であれば、前述の実施形態に記録されている技術的解決手段がさらに修正され得るか、またはそれらにおける技術的特徴の一部に対して均等な置き換えがなされ得ることを理解するはずである。これらの修正または置き換えは、対応する技術的解決手段の本質を、本開示の実施形態における技術的解決手段の趣旨および範囲から逸脱させない。
【図１】
0006795259.tif 000002
【図２】
0006795259.tif 000003
【図３】
0006795259.tif 000004
【図４】
0006795259.tif 000005