(57)【要約】データベース操作方法及び装置が開示される。方法は、ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得すること（３０１）と、サービス論理コードに従ってターゲットトランザクションの推測的実行を行い、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録すること（３０２）と、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御すること（３０３）と、を含む。方法は、トランザクションの実行効率を改善し、トランザクションのスループットを増大させる。
2019503534.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従って前記ターゲットトランザクションのトリガ命令を実行することと、
前記サービス論理コードに従って前記ターゲットトランザクションの推測的実行を行い、前記推測的実行の処理において取得される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を記録することと、
前記推測的実行が成功するとき、前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示されるデータベースを制御することと、
を含む、データベース操作方法。
【請求項２】
前記サービス論理コードに従って前記ターゲットトランザクションの前記推測的実行を前記行うことは、
前記サービス論理コードにおける命令を実行することと、
前記命令が前記サービス論理コードにおいてカプセル化された前記ターゲットトランザクションにおけるデータベース操作命令であるとき、前記データベース操作命令の前記推測的実行を行うことと、
を含む、請求項１に記載の方法。
【請求項３】
前記データベース操作命令の前記推測的実行を前記行うことは、
前記データベース操作命令がデータベース修正命令である場合、ローカルに生成されたメモリライブラリにおける前記データベース操作命令のデータ環境をシミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行うこと、または
前記データベース操作命令がデータベース修正命令でない場合、前記データベース操作命令の前記推測的実行を行うように前記データベースにおける前記データベース操作命令を実行すること、
を含む、請求項２に記載の方法。
【請求項４】
前記ローカルに生成されたメモリライブラリにおける前記データベース操作命令の前記データ環境を前記シミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行うことは、
前記データベース操作命令を読み出し命令及び書き込み命令に分割することと、
読み出しデータセットを取得するように前記データベースにおける前記読み出し命令を実行し、前記データベース操作命令の前記データ環境をシミュレートするために前記読み出しデータセットを前記メモリライブラリに記憶することと、
前記読み出しデータセットを修正するように前記メモリライブラリにおける前記書き込み命令を実行することと、
を含む、請求項３に記載の方法。
【請求項５】
前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示される前記データベースを前記制御することは、
前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行するように前記データベースを指示するために、前記サービス論理コードの名前を前記データベースに発行し、実際の実行の処理において取得され、前記データベースによって返される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を受信することと、
実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一である場合、前記ターゲットトランザクションをコミットするためにトランザクションコミット命令を前記データベースに発行することと、
実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも１つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なる場合、前記ターゲットトランザクションをロールバックするためにトランザクションロールバック命令を前記データベースに発行することと、
を含む、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示される前記データベースを前記制御することは、
前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一であるとき、前記ターゲットトランザクションをコミットし、または実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも１つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なるとき、前記ターゲットトランザクションをロールバックするように前記データベースを指示するために、前記サービス論理コードの名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに発行することを含む、
請求項１〜４のいずれか一項に記載の方法。
【請求項７】
前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに前記発行することは、
前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに同時に発行することを含む、
請求項６に記載の方法。
【請求項８】
前記サービス論理コードは、記憶手順である、
請求項１〜４のいずれか一項に記載の方法。
【請求項９】
ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従って前記ターゲットトランザクションのトリガ命令を実行するように構成された取得モジュールと、
前記サービス論理コードに従って前記ターゲットトランザクションの推測的実行を行い、前記推測的実行の処理において取得される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成された推測的実行モジュールと、
前記推測的実行が成功するとき、前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示されるデータベースを制御するように構成された実行制御モジュールと、
を含む、データベース操作装置。
【請求項１０】
前記推測的実行モジュールは特に、
前記サービス論理コードにおける命令を実行し、
前記命令が前記サービス論理コードにおいてカプセル化された前記ターゲットトランザクションにおけるデータベース操作命令であるとき、前記データベース操作命令の前記推測的実行を行う、
ように構成される、請求項９に記載の装置。
【請求項１１】
前記推測的実行モジュールは特に、
前記データベース操作命令がデータベース修正命令である場合、ローカルに生成されたメモリライブラリにおける前記データベース操作命令のデータ環境をシミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行い、
前記データベース操作命令がデータベース修正命令でない場合、前記データベース操作命令の前記推測的実行を行うように前記データベースにおける前記データベース操作命令を実行する、
ように構成される、請求項１０に記載の装置。
【請求項１２】
前記推測的実行モジュールは特に、
前記データベース操作命令を読み出し命令及び書き込み命令に分割し、
読み出しデータセットを取得するように前記データベースにおける前記読み出し命令を実行し、前記データベース操作命令の前記データ環境をシミュレートするために前記読み出しデータセットを前記メモリライブラリに記憶し、
前記読み出しデータセットを修正するように前記メモリライブラリにおける前記書き込み命令を実行する、
ように構成される、請求項１１に記載の装置。
【請求項１３】
前記実行制御モジュールは特に、
前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行するように前記データベースを指示するために、前記サービス論理コードの名前を前記データベースに発行し、実際の実行の処理において取得され、前記データベースによって返される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を受信し、
実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一である場合、前記ターゲットトランザクションをコミットするためにトランザクションコミット命令を前記データベースに発行し
実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも１つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なる場合、前記ターゲットトランザクションをロールバックするためにトランザクションロールバック命令を前記データベースに発行する、
ように構成される、請求項９〜１２のいずれか一項に記載の装置。
【請求項１４】
前記実行制御モジュールは特に、
前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一であるとき、前記ターゲットトランザクションをコミットし、または実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも１つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なるとき、前記ターゲットトランザクションをロールバックするように前記データベースを指示するために、前記サービス論理コードの名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに発行する、
ように構成される、請求項９〜１２のいずれか一項に記載の装置。
【請求項１５】
前記実行制御モジュールは特に、
前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに同時に発行する、
ように構成される、請求項１４に記載の装置。
【請求項１６】
前記サービス論理コードは、記憶手順である、
請求項９〜１２のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベース技術の分野に関し、特に、データベース操作方法及び装置に関する。
【背景技術】
【０００２】
データベースのトランザクションは、完全に実行され、または全く実行されないかのいずれかである、作業の単一の論理単位として実行される一連の操作を指す。１つのトランザクションは、構造化クエリ言語（ＳＱＬ）の命令文などの一連のデータベース操作命令から構成される。区分化条件、及びデータベース操作命令の間のジャンプなどの論理が存在し、それは、トランザクションにおけるデータベース操作命令のうちのいくつかが１つの実行手順においてスキップされてもよいことを意味する。しかしながら、従来技術では、区分化条件またはトランザクションのジャンプ論理などの情報を事前に学習することが不可能である。従って、トランザクションの実行の間に実行論理に従って判定が行われる必要があり、データベース上で操作を実装するようにトランザクションにおける命令文が順番に実行される。そのようなトランザクションの実行方式は非効率であり、トランザクションのスループットが低い。
【発明の概要】
【０００３】
多くの態様では、本開示は、トランザクションの実行効率を改善し、トランザクションのスループットを増大させるデータベース操作方法及び装置を提供する。
【０００４】
一態様では、本開示は、
ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得することと、
サービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録することと、
推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御することと、
を含む、データベース操作方法を提供する。
【０００５】
別の態様では、本開示は、
ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように構成された取得モジュールと、
サービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成された推測的実行モジュールと、
推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御するように構成された実行制御モジュールと、
を含む、データベース操作装置を提供する。
【０００６】
本開示では、データベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがカプセル化されるサービス論理コードを取得し、サービス論理コードに従ってターゲットトランザクションを推測して実行し、ターゲットトランザクションの区分化条件及び関係するデータ範囲を推測し、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションのターゲットトランザクション及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御する。ターゲットトランザクションの区分化条件は、推測的実行を通して取得されてもよく、ターゲットトランザクションが実行されるべきデータベースまたはデータベース（複数）が判定されてもよく、データベースの消費の確実度を保証する。一方では、本開示の技術は、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかを事前に判定し、他方では、データは事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
【０００７】
本開示の例示的な実施形態における技術的解決策をより明確に示すために、例示的な実施形態または従来技術を説明するために必要とされる添付図面が以下で簡単に述べられる。明らかに、以下の説明における添付図面は、本開示の例示的な実施形態のうちのいくつかを記しているにすぎず、当業者にとって、想像的な努力なしにそれらの添付図面から他の図面を導出することができる。
【図面の簡単な説明】
【０００８】
【図１】従来技術におけるデータベースアプリケーションシステムの配置図である。
【図２】本開示の例示的な実施形態に従ったデータベースアプリケーションシステムの配置図である。
【図３】本開示の例示的な実施形態に従ったデータベース操作方法の概略フローチャートである。
【図４】本開示の例示的な実施形態に従ったデータベース操作装置の概略構造図である。
【発明を実施するための形態】
【０００９】
本開示の例示的な実施形態の目的、技術的解決策及び利点をより明確にするために、本開示の例示的な実施形態における技術的解決策は、本開示の例示的な実施形態における添付図面を参照して、明確かつ完全に以下で説明される。説明される例示的な実施形態は、本開示の実施形態の全てではなくいくつかの例示的な実施形態を表しているにすぎないことが明らかである。本開示における例示的な実施形態に基づいて、想像的な努力なしに当業者によって得られる全ての他の例示的な実施形態は、本開示の保護範囲に属するべきである。
【００１０】
図１は、従来技術に従ったデータベースアプリケーションシステムの配置図である。図１に示されるように、システムは、アプリケーションサーバ１０及びデータベース２０を含む。１つ以上のアプリケーションサーバ１０が存在してもよい。また、１つ以上のデータベース２０が存在してもよい。図１は、例として、１つのアプリケーションサーバ１０及び１つのデータベース２０のみを示す。データベース２０がトランザクションによってアクセスされる必要があるとき、アプリケーションサーバ１０は、トランザクション論理を実行し、トランザクションにおけるデータベース操作命令をデータベース２０に順番に適用する。そのようなトランザクション実行方式は非効率であり、トランザクションのスループットが低い。
【００１１】
従来技術における欠点を考慮して、本開示は、図２に示されるように、新規なデータベースアプリケーションシステムを提供する。このシステムでは、データベース操作装置３０は、アプリケーションサーバ１０とデータベース２０との間で追加される。データベース操作装置３０は、新たなタイプのトランザクション実行論理を実現するように本開示によって提供されるデータベース操作方法を実行する、すなわち、ターゲットトランザクションがそれにカプセル化されるサービス論理コードに基づいてターゲットトランザクションを推測して実行するように構成され、次いで、ターゲットトランザクションがそれにカプセル化されるサービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するようにデータベース２０を制御する。
【００１２】
本開示は、推測的実行を通してターゲットトランザクションの区分化条件を取得することができ、ターゲットトランザクションが実行されるべきデータベースまたはデータベース（複数）を判定することができ、それによって、データベースの消費の確実性を保証する。一方では、トランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定され、他方では、データは、事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。加えて、本開示は、推測的実行をサービス論理コードと組み合わせる。サービス論理コードは、ターゲットトランザクションの実行論理を含む。従って、データベースは、共有データセット（すなわち、データベースにおけるデータ）における変更に関して関わる必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、その結果、トランザクションのロールバックの可能性を減少させることができる。トランザクションのスループットは、単位時間ごとに実行されるトランザクションの数を指す。
【００１３】
データベース操作装置３０は、実際には論理処理装置であり、論理処理装置は、単独で配置されてもよく、アプリケーションサーバ１０とデータベース２０との間に位置してもよく、または実装のためにアプリケーションサーバ１０上に配置されてもよく、もしくは実装のためにデータベース２０上に配置されてもよいことに留意されたい。
【００１４】
本開示における技術的解決策の方法の処理は、以下例示的な実施形態において詳細に説明される。
【００１５】
図３は、本開示の例示的な実施形態に従ったデータベース操作方法の概略フローチャートである。図３に示されるように、方法は、以下のステップを含む。
【００１６】
３０１：ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従ってターゲットトランザクションのトリガ命令が実行される。
【００１７】
３０２：サービス論理コードに従ってターゲットトランザクションが推測して実行され、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲が記録される。
【００１８】
３０３：推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースが制御される。
【００１９】
説明を容易にするために、ユーザが実行する必要があるトランザクションは、この例示的な実施形態ではターゲットトランザクションと称されることにまず留意されたい。ターゲットトランザクションは主に、データベースを操作する命令を含む。データベース操作命令に加え、ターゲットトランザクションは更に、ターゲットトランザクションの実行状態を制御するいくつかの制御命令、例えば、トランザクション開始命令、トランザクションコミット命令、及びトランザクションロールバック命令などを含む。命令は実際には、データベース言語で記述された命令文である。異なるデータベース言語に応じて、命令は、異なる言語で記述された命令文であってもよい。例えば、ＳＱＬが採用される場合、上述したデータベース操作命令及び制御命令は実際には、一連のＳＱＬ命令文である。
【００２０】
この例示的な実施形態では、ターゲットトランザクションは、サービス論理コードにカプセル化される必要がある。ターゲットトランザクションにおけるデータベース操作命令、並びにデータベース操作命令の間のジャンプ条件及び論理などの情報は、サービス論理コードにおいてカプセル化される。すなわち、推測的実行の処理及び実際の実行の処理では、ターゲットトランザクション全体の実行論理は、データベース操作装置及びデータベースそれぞれによって制御される。
【００２１】
サービス論理コードは、データベース操作装置及び各々のデータベース上に事前に配置される必要があり、予めコンパイルされる。サービス論理コードの実際の使用では、サービス論理コードの名前は、一度提供するために必要とされるにすぎない。データベース操作命令の絶え間ない送信と比較して、この方法は、ネットワークトラフィックを削減し、ネットワークリソースを節約することを支援する。任意選択で、サービス論理コードが入力パラメータを更に必要とする場合、必要とされる入力パラメータはまた、サービス論理コードの名前に加えて提供されてもよい。例えば、ユーザは、トリガ命令を使用することによってサービス論理コードの名前をデータベース操作装置に提供してもよく、データベース操作装置は、名前に従ってサービス論理コードを取得してもよい。
【００２２】
任意選択で、サービス論理コードは、記憶手順であってもよく、または他の方式で実装されてもよい。サービス論理コードが記憶手順である場合、記憶手順における全ての命令文がコンパイルされていることを理由に実行速度がより高い。使用するとき、記憶手順の名前及び必要なパラメータのみが送信される必要があり、それによって、少ない量のネットワークトラフィックのみを消費する。
【００２３】
例として、以下では、在庫削減トランザクションが使用される。在庫削減トランザクションのＳＱＬコードは以下の通りであり、カッコ内のワードは、注釈である。
ｂｅｇｉｎ  ｔｒａｎｓａｃｔｉｏｎ（ｔｈｅ  ｔｒａｎｓａｃｔｉｏｎ  ｂｅｇｉｎｓ）
ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？  ｆｏｒ  ｕｐｄａｔｅ（ｔｈｅ  ｃｕｒｒｅｎｔ  ｉｎｖｅｎｔｏｒｙ  ｉｓ  ｃｈｅｃｋｅｄ  ｂｙ  ｕｓｉｎｇ  ａｎ  ｉｔｅｍ  ｉｄ，ａｎｄ  ｉｓ  ｌｏｃｋｅｄ）
ｉｆ（ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＞  ０）
ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ−−；
ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？
ｃｏｍｍｉｔ；
ｅｌｓｅ
ｒｏｌｌｂａｃｋ；（ｉｆ  ｔｈｅ  ｃｕｒｒｅｎｔ  ｉｎｖｅｎｔｏｒｙ  ｉｓ  ｇｒｅａｔｅｒ  ｔｈａｎ  ０，ｔｈｅ  ｉｔｅｍ  ｉｎｖｅｎｔｏｒｙ  ｉｓ  ｒｅｄｕｃｅｄ、ｕｐｄａｔｅｄ  ａｎｄ  ｃｏｍｍｉｔｔｅｄ；ｏｔｈｅｒｗｉｓｅ，ｔｈｅ  ｔｒａｎｓａｃｔｉｏｎ  ｉｓ  ｒｏｌｌｅｄ  ｂａｃｋ）
【００２４】
在庫削減トランザクションは、手順にカプセル化されてもよく、手順は、ｂｕｙＳｔｈ（ｌｏｎｇ  ｉｔｅｍＩｄ）と命名されてもよい。手順は、在庫削減トランザクションが成功したかを示すｔｒｕｅ／ｆａｌｓｅを返す。手順の疑似コードは以下の通りである。
ｐｒｏｃｅｄｕｒｅ：
ｂｏｏｌｅａｎ  ｂｕｙＳｔｈ（ｌｏｎｇ  ｉｔｅｍＩｄ）｛
Ｉｔｅｍ  ｉｔｅｍ＝ｅｘｅｃｕｔｅＱｕｅｒｙ（゛ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？  ｆｏｒ  ｕｐｄａｔｅ″）；
ｉｆ（ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ＞  ０）｛
ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ−−；
ｅｘｅｃｕｔｅＵｐｄａｔｅ（ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？）
ｃｏｍｍｉｔ（）；
ｒｅｔｕｒｎ  ｔｒｕｅ；
｝ｅｌｓｅ｛
ｒｏｌｌｂａｃｋ（）；
ｒｅｔｕｒｎ  ｆａｌｓｅ；
｝
【００２５】
上述したことから示されるように、在庫削減トランザクションがそれにカプセル化される上述した記憶手順は、在庫削減トランザクションにおけるデータベース操作命令、記憶手順自体のいくつかの命令、また、在庫削減トランザクションのサービス論理を含む。
【００２６】
特に、ターゲットトランザクションを実行する必要があるとき、ユーザは、ターゲットトランザクションの実行を指示するためにトリガ命令を送信してもよい。データベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得する。任意選択で、トリガ命令は、サービス論理コードの名前を含んでもよく、またはトリガ命令とサービス論理コードの名前との間のマッピング関係が存在する。全体で、データベース操作装置は、トリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得してもよい。
【００２７】
サービス論理コードを取得した後、データベース操作装置は、サービス論理コードに従ってターゲットトランザクションを推測して実行してもよく、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録してもよい。ターゲットトランザクションの区分化条件は、どのデータベースまたはデータベース（複数）がターゲットトランザクションに関連するかを示すために使用される。例えば、ターゲットトランザクションの区分化条件は、区分化キー（ＰａｒｔｉｔｉｏｎＫｅｙ）などの情報によって表されてもよい。すなわち、ターゲットトランザクションの推測的実行の処理におけるＰａｒｔｉｔｉｏｎＫｅｙｓのリストの判定は、ターゲットトランザクションの区分化条件の判定に等しい。ターゲットトランザクションの関係するデータ範囲は、区分化条件がそれに指示されるデータベースにおけるデータのどの部分または部分（複数）が特にターゲットトランザクションに関連することを示すために使用される。例えば、ターゲットトランザクションに関連するデータは、データのプライマリキー（ＰｒｉｍａｒｙＫｅｙｓ）などの情報によって表されてもよい。すなわち、ターゲットトランザクションの推測的実行の処理におけるＰｒｉｍａｒｙＫｅｙｓのリストの判定は、ターゲットトランザクションの関係するデータ範囲の判定に等しい。
【００２８】
サービス論理コードに従ってターゲットトランザクションを推測して実行するデータベース操作装置の処理は実際には、サービス論理コードにおける命令を実行すること、及び命令がサービス論理コードにおいてカプセル化されたターゲットトランザクションにおけるデータベース操作命令であるとき、ターゲットトランザクションの推測的実行を実装するようにデータベース操作命令を推測して実行することである。実行されたターゲットトランザクションにおけるデータベース操作命令を推測して実行する処理では、データベース操作装置は、推測的実行の結果に従って、実行される必要がある次のデータベース操作命令を判定してもよい。
【００２９】
データベース上でデータベース操作命令によって実行される操作は主に、データベースにおけるデータにアクセスするためのものである。従って、データベース操作命令のデータ環境がシミュレートされてもよく、データベース操作命令は、シミュレートされたデータ環境に基づいて推測して実行される。このことに基づいて、データベース操作命令は、以下の方式、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行すること、において推測して実行されてもよい。
【００３０】
更に、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行する実装態様は、以下のステップを含む。
【００３１】
取得されたデータベース操作命令は、読み出し命令及び書き込み命令に分割され、読み出し命令は、実際のデータベース上で実行され、すなわち、読み出し命令は、読み出しデータセット（ＲｅａｄＳｅｔ）を取得するようにデータベースにおいて実行される。読み出しデータセットは、データベース操作命令に必要とされるデータ環境をシミュレートするためにローカルメモリライブラリに記憶される。次いで、書き込み命令は、データベース操作命令の推測的実行を実現するためにメモリライブラリに適用され、すなわち、書き込み命令は、読み出しデータセットを修正するようにメモリライブラリにおいて実行される。例えば、読み出しデータセットにおける関連するデータは、更新、クエリ、又はそうでない場合、処理される。結果として得られるデータセット（ａｆｆｅｃｔＲｏｗＩｎＭｅｍｄｂ）は、読み出しデータセットを修正するために書き込み命令が実行された後に生成されてもよい。
【００３２】
推測的実行の上述した処理では、データベース操作装置がデータベース操作命令を推測して実行する都度、データベース操作命令によって読み出された読み出しデータセットにおけるＰｒｉｍａｒｙＫｅｙｓ及びＰａｒｔｉｔｉｏｎＫｅｙは、ローカルに記録される。任意選択で、データベース操作装置はまた、読み出しデータセット全体、及びプライマリキーに対応するバージョン番号などの情報を含む結果として得られるデータを記録してもよいが、本開示はそれらに限定されない。
【００３３】
読み出しデータセットにおけるＰｒｉｍａｒｙＫｅｙｓは、ターゲットトランザクションの関係するデータ範囲を反映し、読み出しデータセットにおけるＰａｒｔｉｔｉｏｎＫｅｙは、ターゲットトランザクションに関係するデータがそれに分散されるデータベースまたはデータベース（複数）を反映し、従って、ターゲットトランザクションの区分化条件として使用されてもよい。
【００３４】
データベース操作装置は、サービス論理コードを実行することを続ける。装置がサービス論理コードに含まれるターゲットトランザクションにおけるトランザクションコミット命令（上述したｃｏｍｍｉｔ（）など）を続けて行うとき、推測的実行が成功したことを示す「ｔｒｕｅ」が返されてもよい。逆に、装置がサービス論理コードに含まれるターゲットトランザクションにおけるトランザクションロールバック命令（上述したｒｏｌｌｂａｃｋ（）など）を続けて行うとき、推測的実行が失敗したことを示す「ｆａｌｓｅ」が返されてもよい。
【００３５】
データベース操作装置は、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、推測的実行の処理において取得されるターゲットトランザクションの区分化条件がそれに指示されるデータベースを制御してもよい。
【００３６】
特定の実装態様では、データベース操作装置は、サービス論理コードを実行してターゲットトランザクションを実際に実行するようデータベースに指示するために、サービス論理コードの名前をデータベースに発行してもよく、実際の実行の処理において取得され、データベースによって返されるターゲットトランザクションの区分化条件及び関係するデータ範囲を受信してもよい。実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一である場合、データベース操作装置は、データベースがターゲットトランザクションをコミットするために、トランザクションコミット命令をデータベースに発行してもよい。実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲のうちの少なくとも１つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なる場合、データベース操作装置は、データベースがターゲットトランザクションをロールバックするために、トランザクションロールバック命令をデータベースに発行してもよい。
【００３７】
別の特定の実装態様では、データベース操作装置は、サービス論理コードを実行してターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一であるとき、ターゲットトランザクションをコミットし、または実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲のうちの少なくとも１つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なるとき、ターゲットトランザクションをロールバックするようにデータベースを指示するために、サービス論理コードの名前と共に、データベースへの推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を発行してもよい。
【００３８】
任意選択で、データベース操作装置とデータベースとの間の対話の数を削減し、ネットワークリソースを節約するために、サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲は、データベースに同時に（共に）発行されてもよい。
【００３９】
純粋な手順の解決策と比較して、本開示は、推測的実行の処理を追加し、その結果、ターゲットトランザクションの区分化条件及び関係するデータ範囲を事前に取得することができ、ターゲットトランザクションが実行されるべきデータベースまたはデータベース（複数）を判定することができる。
【００４０】
一方では、ターゲットトランザクションの推測された区分化条件に基づいて、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定される。ターゲットトランザクションがスタンドアロントランザクションとして判定される場合、データベースは、スタンドアロントランザクション処理論理に従ってターゲットトランザクションを実際に実行するように制御されてもよい。ターゲットトランザクションが分散型トランザクションとして判定される場合、データベースは、分散型トランザクション処理論理に従ってターゲットトランザクションを実際に実行するように制御されてもよい。分散型トランザクション処理論理及びスタンドアロントランザクション処理論理は異なる。スタンドアロントランザクション処理論理は比較的単純であり、例えば、それは、読み出し／書き込みロックなどの事柄を含まず、従って、より少ないリソースが消費される。このことに基づいて、ターゲットトランザクションがスタンドアロントランザクションであるかを特定し、ターゲットトランザクションがスタンドアロントランザクションとして特定されるときにスタンドアロントランザクション処理論理に従ってターゲットトランザクションを処理することによって、この例示的な実施形態は、処理効率を改善し、トランザクションのスループットを増大させ、処理コストを削減することを支援する。
【００４１】
他方では、データは、ターゲットトランザクションの推測された区分化条件及び関係するデータ範囲に基づいて事前に用意されてもよい。例えば、全てのクロスノードデータは、他のデータベースまたはローカルデータベースの「下位レベルのディスク記憶装置」から事前にロードされ、それによって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
【００４２】
加えて、本開示は、アプリケーションサーバがターゲットトランザクションの実行論理を制御する、主に推測的実行の解決策を指す純粋な推測的実行の解決策を提供する。この解決策では、アプリケーションサーバによってターゲットトランザクションを実行する処理では、アプリケーションサーバが続けて行うターゲットトランザクションのデータベース操作命令は順番に取得される。データベース操作命令は、推測して実行され、推測的実行結果は、アプリケーションサーバに返され、その結果、アプリケーションサーバは、実行される必要があるデータベース操作命令を判定することができ、データベース操作命令及び推測的実行の間に生成された推測的実行データをローカルに記録することができる。ターゲットトランザクションにおけるトランザクションコミット命令が取得されるとき、アプリケーションサーバに対応するデータベースは、ローカルに記録されたデータベース操作命令及び推測的実行データに従ってターゲットトランザクションを実際に実行するように制御される。ターゲットトランザクションを実際に実行するようにアプリケーションサーバに対応するデータベースを制御する方法は、データベース操作命令を実行するようにデータベースを指示するためにローカルに記録されたデータベース操作命令をデータベースに発行すること、実際の実行結果が推測的実行結果と同一である場合、ターゲットトランザクションをコミットすること、及び実際の実行結果が推測的実行結果と異なる場合、ターゲットトランザクションをロールバックすることを含んでもよい。
【００４３】
トランザクションは、データベースにおける実際の実行の間に推測的実行の処理において並列し、連続して順番に実行される。従って、同一のデータを操作する２つのトランザクションは、推測的実行の段階で正確であることができる。しかしながら、実際の実行の段階では、トランザクションが最初に実行されようと、他のトランザクションは、データが変更されたので推測的実行結果が実際の実行結果と異なることを理由にロールバックされ、高いロールバックの可能性をもたらす。
【００４４】
例えば、２つのトランザクション、トランザクション１及びトランザクション２が存在し、両方のトランザクションがキーの値を読み出しており、値をｉｄに割り当てていることが想定される。ｉｄ＝０の場合、ｉｄは、１をインクリメントされ、ｉｄ＋１がキーの新たな値として使用される。推測的実行の処理では、データベースにおける値が変更されないことを理由に、両方のトランザクションは、ｋｅｙ＝０を読み出してもよく、値をｉｄに割り当ててもよく、更に、ｉｄ＝０であることを理由に、第２の命令文を成功して実行することができ、すなわち、ｉｄは、１をインクリメントされ、ｉｄ＋１がキーに割り当てられ、すなわち、両方のトランザクションの推測的実行結果はｋｅｙ＝１である。しかしながら、実際の実行の処理では、２つのトランザクションは順番に実行される必要がある。トランザクション１が最初に実行され、次いで、トランザクション２が実行されることが想定される。このケースでは、トランザクション１は、ｉｄ＝０を読み出してもよく、１をインクリメントしてもよく、ｋｅｙ＝１となるようにｉｄ＋１をキーに割り当ててもよく、トランザクション２は実行されるとき、ｋｅｙ＝１を読み出し、ｋｅｙ＝１となるように値をｉｄに割り当てられ、次いで、ｉｄは１をインクリメントされ、ｋｅｙ＝２となるようにｉｄ＋１がキーに割り当てられる。実際の実行結果を２つのトランザクションの推測的実行結果と比較することによって、トランザクション２の実際の実行結果及び推測的実行結果は異なり、従って、トランザクション２は、ロールバックされる必要がある。しかしながら、実際には、データベースがトランザクション２のサービス論理を取得することができる場合、第２の命令文は、ｉｄ＞０のときに実行される必要がなく、すなわち、ｉｄに１をインクリメントし、ｉｄ＋１をキーに割り当てる操作を実行する必要がない。このケースでは、得られた実行結果はなおｋｅｙ＝１であり、その結果、トランザクション２は、ロールバックされる必要がない。
【００４５】
純粋な推測的実行の解決策と比較して、本開示は、手順の解決策を追加し、手順の解決策の利点を完全に使用するようにする。データベースは、実際の実行の処理におけるターゲットトランザクションのサービス論理を取得することができ、ターゲットトランザクションのサービス論理に従ってターゲットトランザクションを実行することができる。従って、データベースは、共有データセット（すなわち、データベースにおけるデータ）における変更に関して関わる必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、それは、純粋な推測的実行の解決策におけるロールバック事象を或る程度解決することができ、よって、ロールバックの可能性を低減させ、トランザクションの実行効率を改善することを支援する。
【００４６】
上述した在庫削減トランザクションはなお、本開示の技術的解決策の作動する手順を詳細に示すために以下では例として使用される。
【００４７】
在庫削減トランザクションのＳＱＬコードは、上記のように説明され、在庫削減トランザクションがそれにカプセル化される手順の疑似コードも上記のように説明される。
【００４８】
実際の実行の処理では、データベース操作装置（または、実行サーバと称される）は、ユーザのトリガ命令に従って上述した手順を取得し、次いで、手順を実行する。
【００４９】
最初に、データベース操作装置は、メモリライブラリをローカルに生成する。
【００５０】
ＳＱＬ命令文：ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？  ｆｏｒ  ｕｐｄａｔｅを続けて行うとき、データベース操作装置は、データベースにおけるＳＱＬ命令文を直接検索し、このクエリの結果（すなわち、発見された処理されるデータ、すなわち、現在の在庫量）をローカルメモリライブラリに記録し、同時に、このクエリに含まれるＰｒｉｍａｒｙＫｅｙｓ及びＰａｒｔｉｔｉｏｎＫｅｙを記録する。
【００５１】
ＳＱＬ命令文は、クエリの命令文であり、従って、結果は、命令文が分割されるか否かに関わらず変わらないままであることに留意されたい。操作を簡易化するために、クエリの命令文は、分割されなくてもよい。
【００５２】
データベース操作装置は、クエリの結果が０よりも大きいかを判定する。ｙｅｓの場合、データベース操作装置は、現在の在庫量を削減し、更新命令文、すなわち、ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝＄ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？；を実行し、ｎｏの場合、データベース操作装置は、命令文をロールバックする。
【００５３】
ロールバック命令文を続けて行う場合、データベース操作装置は、ローカルメモリライブラリを消去する。このケースでは、トランザクションがデータベースにおいて実行されないことを理由に、データベースは、ロールバック操作を実行する必要がない。
【００５４】
更新命令文、すなわち、ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝？  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？を続けて行う場合、データベース操作装置は、ＳＱＬ命令文をデータベース読み出し命令、すなわち、ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？、及びデータベース書き込み命令、すなわち、ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝？  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？に分割する。次いで、データベース操作装置は、命令文、ｓｅｌｅｃｔ  ＊  ｆｒｏｍ  ｉｎｖｅｎｔｏｒｙ  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？をデータベースに発行して読み出しデータセットを取得し、読み出しデータセットにおけるデータをローカルメモリライブラリに書き込む。次に、データベース操作装置は、命令文、ｕｐｄａｔｅ  ｉｎｖｅｎｔｏｒｙ  ｓｅｔ  ｉｔｅｍ．ｉｎｖｅｎｔｏｒｙ＝？  ｗｈｅｒｅ  ｉｔｅｍＩｄ＝？に従ってローカルメモリライブラリにおける更新操作を実行して、結果として得られるデータセットを取得し、同時に、結果として得られる読み出しセットにおけるＰｒｉｍａｒｙＫｅｙｓ及び対応するバージョン番号情報を記録し、ＰａｒｔｉｔｉｏｎＫｅｙを記録する。
【００５５】
コミット命令を実行した後、データベース操作装置は、値「ｔｒｕｅ」を返し、全ての上述した命令をトランザクションと共に再度、下位レベルのデータベースにおいて実行する（この実行は実際の実行である）。
【００５６】
上述した手順を終了した後、データベース操作装置は以下のトランザクション実行テンプレートを取得する。
呼び出される手順：
ブールｂｕｙＳｔｈ（ｌｏｎｇ  ｉｔｅｍＩｄ）
対応するパラメータ：ｉｔｅｍＩｄ＝ｘｘｘ
対応するＰａｒｔｉｔｉｏｎＫｅｙリスト＝ｘｘｘ。
【００５７】
更に、手順を実行する上述した処理では、ＲｅａｄＳｅｔにおけるＰｒｉｍａｒｙＫｅｙｓ及びその対応するバージョン番号情報が更に記録されてもよい。これは、下位レベルのデータベースにおける実行の前に記録されたＰｒｉｍａｒｙＫｅｙｓに従って、全てのクロスノードデータを他の「下位レベルのデータベース」及びローカルデータベースの「下位レベルのディスク記憶装置」から予めロードすることを支援する。クロスノードデータを予めロードする方式は、低速度デバイスでデータを一まとめでメモリにロードすることができ、手順の順次実行における重要な役割を果たすことができ、実行効率を著しく改善することができる。
【００５８】
上述した方法の例示的な実施形態は全て、説明を容易にするために一連のアクションの組み合わせとして表されることに留意されたい。しかしながら、当業者は、いくつかのステップが本開示に従って他の順序で、または同時に実行されてもよいことを理由に、本開示が説明されたアクションの順序によって限定されないことを知るべきである。第２に、当業者はまた、本明細書で説明される例示的な実施形態が全て好ましい例示的な実施形態であり、含まれるアクション及びモジュールが本開示に必須でないことを知るべきである。
【００５９】
上述した例示的な実施形態では、各々の例示的な実施形態の説明は、その自身の焦点を有する。１つの例示的な実施形態で詳細にされない内容について、別の例示的な実施形態の関連する説明に対して参照がされてもよい。
【００６０】
図４は、本開示の例示的な実施形態に従ったデータベース操作装置の概略構造図である。図４に示されるように、装置は、取得モジュール４１、推測的実行モジュール４２、及び実行制御モジュール４３を含む。
【００６１】
取得モジュール４１は、ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように構成される。
【００６２】
推測的実行モジュール４２は、取得モジュール４１によって取得されたサービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成される。
【００６３】
実行制御モジュール４３は、推測的実行モジュール４２によって実行された推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御するように構成される。
【００６４】
任意選択の実装態様では、推測的実行モジュール４２は特に、
サービス論理コードにおける命令を実行し、
命令がサービス論理コードにおいてカプセル化されたターゲットトランザクションにおけるデータベース操作命令であるとき、データベース操作命令を推測して実行する、
ように構成される。
【００６５】
更に、実行されたデータベース操作命令を推測して実行するとき、推測的実行モジュール４２は特に、
データベース操作命令がデータベース修正命令である場合、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行し、
データベース操作命令がデータベース修正命令でない場合、データベース操作命令を推測して実行するようにデータベースにおけるデータベース操作命令を実行する、
ように構成される。
【００６６】
更に、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行するとき、推測的実行モジュール４２は特に、
データベース操作命令を読み出し命令及び書き込み命令に分割し、
読み出しデータセットを取得するようにデータベースにおける読み出し命令を実行し、データベース操作命令のデータ環境をシミュレートするために読み出しデータセットをメモリライブラリに記憶し、
読み出しデータセットを修正するようにメモリライブラリにおける書き込み命令を実行する、
ように構成される。
【００６７】
任意選択の実装態様では、実行制御モジュール４３は特に、
サービス論理コードを実行してターゲットトランザクションを実際に実行するようにデータベースを指示するためにサービス論理コードの名前をデータベースに発行し、実際の実行の処理において取得され、データベースによって返されるターゲットトランザクションの区分化条件及び関係するデータ範囲を受信し、
実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一である場合、データベースがターゲットトランザクションをコミットするためにトランザクションコミット命令をデータベースに発行し、
実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の少なくとも１つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なる場合、データベースがターゲットトランザクションをロールバックするためにトランザクションロールバック命令をデータベースに発行する、
ように構成される。
【００６８】
別の任意選択の実装態様では、実行制御モジュール４３は特に、
サービス論理コードを実行してターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一であるとき、ターゲットトランザクションをコミットし、または実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の少なくとも１つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なるとき、ターゲットトランザクションをロールバックするようにデータベースを指示するために、サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲をデータベースに発行する、
ように構成されてもよい。
【００６９】
更に、実行制御モジュール４３は特に、
サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲をデータベースに同時に発行する、
ように構成されてもよい。
【００７０】
任意選択で、上述したサービス論理コードは、記憶手順であってもよいがそれに限定されない。記憶手順は、様々な言語、例えば、ＭｙＳＱＬまたはＪａｖａを使用することによって実装されてもよい。
【００７１】
この例示的な実施形態で提供されるデータベース操作装置は実際には論理処理装置であり、論理処理装置は、単独で配置されてもよく、アプリケーションサーバとデータベースとの間に位置してもよく、または実装のためにアプリケーションサーバ上に配置されてもよく、もしくは実装のためにデータベース上に配置されてもよい。
【００７２】
この例示的な実施形態で提供されるデータベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得し、サービス論理コードに従ってターゲットトランザクションを推測して実行し、ターゲットトランザクションの区分化条件及び関係するデータ範囲を推測し、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションのターゲットトランザクション及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御する。ターゲットトランザクションの区分化条件は、推測的実行を通して取得されてもよく、ターゲットトランザクションが実行されるべきデータベースまたはデータベース（複数）が判定されてもよく、データベースの消費の確実度を保証する。一方では、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定され、他方では、データが事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
【００７３】
加えて、この例示的な実施形態におけるデータベース操作装置は、推測的実行及び手順を組み合わせる。純粋な推測的実行の解決策と比較して、データベース操作装置は、手順の解決策の利点を完全に使用するようにする。データベースは、実際の実行の処理におけるターゲットトランザクションのサービス論理を確認することができ、ターゲットトランザクションのサービス論理に従ってターゲットトランザクションを実行することができる。従って、データベースは、共有データセット（すなわち、データベースにおけるデータ）における変更に関して気にかける必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、それは、純粋な推測的実行の解決策におけるロールバック事象を或る程度解決することができ、よって、ロールバックの可能性を低減させ、トランザクションの実行効率を改善することを支援する。
【００７４】
当業者は、説明を容易かつ簡潔にするために、上述した特定のシステム、装置及びユニットの特定の作用する処理について、上述した方法の例示的な実施形態における対応する処理に対して参照がされてもよいことを明確に理解するべきである。詳細はここでは再度説明されない。
【００７５】
本開示で提供されるいくつかの例示的な実施形態では、開示されるシステム、装置及び方法が他の方式で実装されてもよいことを理解されるべきである。例えば、上記説明された装置の例示的な実施形態は例示にすぎない。例えば、ユニットの分離は、論理的な機能に基づく分離にすぎず、実際の実装態様では、他の分離の方式が存在してもよい。例えば、複数のユニットまたは構成要素が組み合わされてもよく、もしくは別のシステムに統合されてもよく、またはいくつかの特徴が無視されてもよく、もしくは実行されなくてもよい。加えて、表示または議論される相互結合もしくは直接結合、または通信接続は、いくつかのインタフェースを使用することによって実装されてもよく、間接結合、または装置もしくはユニットの間の通信接続は、電気的、機械的、または別の形式で実装されてもよい。
【００７６】
別個の部分として説明されるユニットは、物理的に分離されてもよく、または分離されなくてもよい。ユニットとして表示される部分は、物理的ユニットであってもよく、またはそうでなくてもよく、１つの位置に位置してもよく、または複数のネットワークユニットに分散されてもよい。ユニットのうちのいくつかまたは全ては、例示的な実施形態の解決策の目的を達成するための必要性に従って選択されてもよい。
【００７７】
加えて、本開示の例示的な実施形態における機能的ユニットが１つのプロセシングユニットに統合されてもよく、ユニットの各々が物理的に単独で存在してもよく、または２つ以上のユニットが１つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実装されてもよく、またはハードウェアに加え、ソフトウェアの機能的ユニットの形式で実装されてもよい。
【００７８】
統合されたユニットがソフトウェアの機能的ユニットの形式で実装されるとき、統合されたユニットは、コンピュータ可読記憶媒体に記憶されてもよい。ソフトウェアの機能的ユニットは、記憶媒体に記憶され、本開示の例示的な実施形態で説明された方法のステップのうちの全てまたはいくつかを実行するようにコンピュータデバイス（パーソナルコンピュータ、サーバ、もしくはネットワークデバイスなどであってもよい）またはプロセッサに指示するためのいくつかの命令を含む。上述した記憶媒体は、ＵＳＢフラッシュドライブ、着脱可能ハードディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができるいずれかの媒体を含む。
【００７９】
最後に、上述した例示的な実施形態は、本開示の技術的解決策を限定するのではなく、示すために使用されるにすぎないことに留意されたい。本開示は上述した例示的な実施形態を参照して詳細に説明されたが、当業者は、上述した例示的な実施形態で説明された技術的解決策に対して修正が行われてもよく、またはいくつかの技術的特徴に対して同等の置き換えがされてもよいことを理解するべきである。しかしながら、それらの修正または置き換えは、対応する技術的解決策の本質を、本開示の例示的な実施形態の技術的解決策の精神および範囲から逸脱させない。
【図１】
2019503534.tif 000003
【図２】
2019503534.tif 000004
【図３】
2019503534.tif 000005
【図４】
2019503534.tif 000006
【国際調査報告】
2019503534.tif 000007
2019503534.tif 000008
2019503534.tif 000009
2019503534.tif 000010