JP6937759B2 - データベース操作方法及び装置 - Google Patents

データベース操作方法及び装置 Download PDF

Info

Publication number
JP6937759B2
JP6937759B2 JP2018532418A JP2018532418A JP6937759B2 JP 6937759 B2 JP6937759 B2 JP 6937759B2 JP 2018532418 A JP2018532418 A JP 2018532418A JP 2018532418 A JP2018532418 A JP 2018532418A JP 6937759 B2 JP6937759 B2 JP 6937759B2
Authority
JP
Japan
Prior art keywords
database
target transaction
instruction
acquired
speculative execution
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018532418A
Other languages
English (en)
Other versions
JP2019503534A (ja
Inventor
ジンユー ワン
ジンユー ワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Publication of JP2019503534A publication Critical patent/JP2019503534A/ja
Application granted granted Critical
Publication of JP6937759B2 publication Critical patent/JP6937759B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2358Change logging, detection, and notification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24549Run-time optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • G06F9/528Mutual exclusion algorithms by using speculative mechanisms

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本開示は、データベース技術の分野に関し、特に、データベース操作方法及び装置に関する。
データベースのトランザクションは、完全に実行され、または全く実行されないかのいずれかである、作業の単一の論理単位として実行される一連の操作を指す。1つのトランザクションは、構造化クエリ言語(SQL)の命令文などの一連のデータベース操作命令から構成される。区分化条件、及びデータベース操作命令の間のジャンプなどの論理が存在し、それは、トランザクションにおけるデータベース操作命令のうちのいくつかが1つの実行手順においてスキップされてもよいことを意味する。しかしながら、従来技術では、区分化条件またはトランザクションのジャンプ論理などの情報を事前に学習することが不可能である。従って、トランザクションの実行の間に実行論理に従って判定が行われる必要があり、データベース上で操作を実装するようにトランザクションにおける命令文が順番に実行される。そのようなトランザクションの実行方式は非効率であり、トランザクションのスループットが低い。
多くの態様では、本開示は、トランザクションの実行効率を改善し、トランザクションのスループットを増大させるデータベース操作方法及び装置を提供する。
一態様では、本開示は、
ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得することと、
サービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録することと、
推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御することと、
を含む、データベース操作方法を提供する。
別の態様では、本開示は、
ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように構成された取得モジュールと、
サービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成された推測的実行モジュールと、
推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御するように構成された実行制御モジュールと、
を含む、データベース操作装置を提供する。
本開示では、データベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがカプセル化されるサービス論理コードを取得し、サービス論理コードに従ってターゲットトランザクションを推測して実行し、ターゲットトランザクションの区分化条件及び関係するデータ範囲を推測し、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションのターゲットトランザクション及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御する。ターゲットトランザクションの区分化条件は、推測的実行を通して取得されてもよく、ターゲットトランザクションが実行されるべきデータベースまたはデータベース(複数)が判定されてもよく、データベースの消費の確実度を保証する。一方では、本開示の技術は、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかを事前に判定し、他方では、データは事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
本開示の例示的な実施形態における技術的解決策をより明確に示すために、例示的な実施形態または従来技術を説明するために必要とされる添付図面が以下で簡単に述べられる。明らかに、以下の説明における添付図面は、本開示の例示的な実施形態のうちのいくつかを記しているにすぎず、当業者にとって、想像的な努力なしにそれらの添付図面から他の図面を導出することができる。
従来技術におけるデータベースアプリケーションシステムの配置図である。 本開示の例示的な実施形態に従ったデータベースアプリケーションシステムの配置図である。 本開示の例示的な実施形態に従ったデータベース操作方法の概略フローチャートである。 本開示の例示的な実施形態に従ったデータベース操作装置の概略構造図である。
本開示の例示的な実施形態の目的、技術的解決策及び利点をより明確にするために、本開示の例示的な実施形態における技術的解決策は、本開示の例示的な実施形態における添付図面を参照して、明確かつ完全に以下で説明される。説明される例示的な実施形態は、本開示の実施形態の全てではなくいくつかの例示的な実施形態を表しているにすぎないことが明らかである。本開示における例示的な実施形態に基づいて、想像的な努力なしに当業者によって得られる全ての他の例示的な実施形態は、本開示の保護範囲に属するべきである。
図1は、従来技術に従ったデータベースアプリケーションシステムの配置図である。図1に示されるように、システムは、アプリケーションサーバ10及びデータベース20を含む。1つ以上のアプリケーションサーバ10が存在してもよい。また、1つ以上のデータベース20が存在してもよい。図1は、例として、1つのアプリケーションサーバ10及び1つのデータベース20のみを示す。データベース20がトランザクションによってアクセスされる必要があるとき、アプリケーションサーバ10は、トランザクション論理を実行し、トランザクションにおけるデータベース操作命令をデータベース20に順番に適用する。そのようなトランザクション実行方式は非効率であり、トランザクションのスループットが低い。
従来技術における欠点を考慮して、本開示は、図2に示されるように、新規なデータベースアプリケーションシステムを提供する。このシステムでは、データベース操作装置30は、アプリケーションサーバ10とデータベース20との間で追加される。データベース操作装置30は、新たなタイプのトランザクション実行論理を実現するように本開示によって提供されるデータベース操作方法を実行する、すなわち、ターゲットトランザクションがそれにカプセル化されるサービス論理コードに基づいてターゲットトランザクションを推測して実行するように構成され、次いで、ターゲットトランザクションがそれにカプセル化されるサービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するようにデータベース20を制御する。
本開示は、推測的実行を通してターゲットトランザクションの区分化条件を取得することができ、ターゲットトランザクションが実行されるべきデータベースまたはデータベース(複数)を判定することができ、それによって、データベースの消費の確実性を保証する。一方では、トランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定され、他方では、データは、事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。加えて、本開示は、推測的実行をサービス論理コードと組み合わせる。サービス論理コードは、ターゲットトランザクションの実行論理を含む。従って、データベースは、共有データセット(すなわち、データベースにおけるデータ)における変更に関して関わる必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、その結果、トランザクションのロールバックの可能性を減少させることができる。トランザクションのスループットは、単位時間ごとに実行されるトランザクションの数を指す。
データベース操作装置30は、実際には論理処理装置であり、論理処理装置は、単独で配置されてもよく、アプリケーションサーバ10とデータベース20との間に位置してもよく、または実装のためにアプリケーションサーバ10上に配置されてもよく、もしくは実装のためにデータベース20上に配置されてもよいことに留意されたい。
本開示における技術的解決策の方法の処理は、以下例示的な実施形態において詳細に説明される。
図3は、本開示の例示的な実施形態に従ったデータベース操作方法の概略フローチャートである。図3に示されるように、方法は、以下のステップを含む。
301:ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従ってターゲットトランザクションのトリガ命令が実行される。
302:サービス論理コードに従ってターゲットトランザクションが推測して実行され、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲が記録される。
303:推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースが制御される。
説明を容易にするために、ユーザが実行する必要があるトランザクションは、この例示的な実施形態ではターゲットトランザクションと称されることにまず留意されたい。ターゲットトランザクションは主に、データベースを操作する命令を含む。データベース操作命令に加え、ターゲットトランザクションは更に、ターゲットトランザクションの実行状態を制御するいくつかの制御命令、例えば、トランザクション開始命令、トランザクションコミット命令、及びトランザクションロールバック命令などを含む。命令は実際には、データベース言語で記述された命令文である。異なるデータベース言語に応じて、命令は、異なる言語で記述された命令文であってもよい。例えば、SQLが採用される場合、上述したデータベース操作命令及び制御命令は実際には、一連のSQL命令文である。
この例示的な実施形態では、ターゲットトランザクションは、サービス論理コードにカプセル化される必要がある。ターゲットトランザクションにおけるデータベース操作命令、並びにデータベース操作命令の間のジャンプ条件及び論理などの情報は、サービス論理コードにおいてカプセル化される。すなわち、推測的実行の処理及び実際の実行の処理では、ターゲットトランザクション全体の実行論理は、データベース操作装置及びデータベースそれぞれによって制御される。
サービス論理コードは、データベース操作装置及び各々のデータベース上に事前に配置される必要があり、予めコンパイルされる。サービス論理コードの実際の使用では、サービス論理コードの名前は、一度提供するために必要とされるにすぎない。データベース操作命令の絶え間ない送信と比較して、この方法は、ネットワークトラフィックを削減し、ネットワークリソースを節約することを支援する。任意選択で、サービス論理コードが入力パラメータを更に必要とする場合、必要とされる入力パラメータはまた、サービス論理コードの名前に加えて提供されてもよい。例えば、ユーザは、トリガ命令を使用することによってサービス論理コードの名前をデータベース操作装置に提供してもよく、データベース操作装置は、名前に従ってサービス論理コードを取得してもよい。
任意選択で、サービス論理コードは、記憶手順であってもよく、または他の方式で実装されてもよい。サービス論理コードが記憶手順である場合、記憶手順における全ての命令文がコンパイルされていることを理由に実行速度がより高い。使用するとき、記憶手順の名前及び必要なパラメータのみが送信される必要があり、それによって、少ない量のネットワークトラフィックのみを消費する。
例として、以下では、在庫削減トランザクションが使用される。在庫削減トランザクションのSQLコードは以下の通りであり、カッコ内のワードは、注釈である。
begin transaction(the transaction begins)
select * from inventory where itemId=? for update(the current inventory is checked by using an item id,and is locked)
if(item.inventory > 0)
item.inventory−−;
update inventory set item.inventory=$item.inventory where itemId=?
commit;
else
rollback;(if the current inventory is greater than 0,the item inventory is reduced、updated and committed;otherwise,the transaction is rolled back)
在庫削減トランザクションは、手順にカプセル化されてもよく、手順は、buySth(long itemId)と命名されてもよい。手順は、在庫削減トランザクションが成功したかを示すtrue/falseを返す。手順の疑似コードは以下の通りである。
procedure:
boolean buySth(long itemId){
Item item=executeQuery(゛select * from inventory where itemId=? for update″);
if(item.inventory > 0){
item.inventory−−;
executeUpdate(update inventory set item.inventory=$item.inventory where itemId=?)
commit();
return true;
}else{
rollback();
return false;
上述したことから示されるように、在庫削減トランザクションがそれにカプセル化される上述した記憶手順は、在庫削減トランザクションにおけるデータベース操作命令、記憶手順自体のいくつかの命令、また、在庫削減トランザクションのサービス論理を含む。
特に、ターゲットトランザクションを実行する必要があるとき、ユーザは、ターゲットトランザクションの実行を指示するためにトリガ命令を送信してもよい。データベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得する。任意選択で、トリガ命令は、サービス論理コードの名前を含んでもよく、またはトリガ命令とサービス論理コードの名前との間のマッピング関係が存在する。全体で、データベース操作装置は、トリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得してもよい。
サービス論理コードを取得した後、データベース操作装置は、サービス論理コードに従ってターゲットトランザクションを推測して実行してもよく、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録してもよい。ターゲットトランザクションの区分化条件は、どのデータベースまたはデータベース(複数)がターゲットトランザクションに関連するかを示すために使用される。例えば、ターゲットトランザクションの区分化条件は、区分化キー(PartitionKey)などの情報によって表されてもよい。すなわち、ターゲットトランザクションの推測的実行の処理におけるPartitionKeysのリストの判定は、ターゲットトランザクションの区分化条件の判定に等しい。ターゲットトランザクションの関係するデータ範囲は、区分化条件がそれに指示されるデータベースにおけるデータのどの部分または部分(複数)が特にターゲットトランザクションに関連することを示すために使用される。例えば、ターゲットトランザクションに関連するデータは、データのプライマリキー(PrimaryKeys)などの情報によって表されてもよい。すなわち、ターゲットトランザクションの推測的実行の処理におけるPrimaryKeysのリストの判定は、ターゲットトランザクションの関係するデータ範囲の判定に等しい。
サービス論理コードに従ってターゲットトランザクションを推測して実行するデータベース操作装置の処理は実際には、サービス論理コードにおける命令を実行すること、及び命令がサービス論理コードにおいてカプセル化されたターゲットトランザクションにおけるデータベース操作命令であるとき、ターゲットトランザクションの推測的実行を実装するようにデータベース操作命令を推測して実行することである。実行されたターゲットトランザクションにおけるデータベース操作命令を推測して実行する処理では、データベース操作装置は、推測的実行の結果に従って、実行される必要がある次のデータベース操作命令を判定してもよい。
データベース上でデータベース操作命令によって実行される操作は主に、データベースにおけるデータにアクセスするためのものである。従って、データベース操作命令のデータ環境がシミュレートされてもよく、データベース操作命令は、シミュレートされたデータ環境に基づいて推測して実行される。このことに基づいて、データベース操作命令は、以下の方式、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行すること、において推測して実行されてもよい。
更に、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行する実装態様は、以下のステップを含む。
取得されたデータベース操作命令は、読み出し命令及び書き込み命令に分割され、読み出し命令は、実際のデータベース上で実行され、すなわち、読み出し命令は、読み出しデータセット(ReadSet)を取得するようにデータベースにおいて実行される。読み出しデータセットは、データベース操作命令に必要とされるデータ環境をシミュレートするためにローカルメモリライブラリに記憶される。次いで、書き込み命令は、データベース操作命令の推測的実行を実現するためにメモリライブラリに適用され、すなわち、書き込み命令は、読み出しデータセットを修正するようにメモリライブラリにおいて実行される。例えば、読み出しデータセットにおける関連するデータは、更新、クエリ、又はそうでない場合、処理される。結果として得られるデータセット(affectRowInMemdb)は、読み出しデータセットを修正するために書き込み命令が実行された後に生成されてもよい。
推測的実行の上述した処理では、データベース操作装置がデータベース操作命令を推測して実行する都度、データベース操作命令によって読み出された読み出しデータセットにおけるPrimaryKeys及びPartitionKeyは、ローカルに記録される。任意選択で、データベース操作装置はまた、読み出しデータセット全体、及びプライマリキーに対応するバージョン番号などの情報を含む結果として得られるデータを記録してもよいが、本開示はそれらに限定されない。
読み出しデータセットにおけるPrimaryKeysは、ターゲットトランザクションの関係するデータ範囲を反映し、読み出しデータセットにおけるPartitionKeyは、ターゲットトランザクションに関係するデータがそれに分散されるデータベースまたはデータベース(複数)を反映し、従って、ターゲットトランザクションの区分化条件として使用されてもよい。
データベース操作装置は、サービス論理コードを実行することを続ける。装置がサービス論理コードに含まれるターゲットトランザクションにおけるトランザクションコミット命令(上述したcommit()など)を続けて行うとき、推測的実行が成功したことを示す「true」が返されてもよい。逆に、装置がサービス論理コードに含まれるターゲットトランザクションにおけるトランザクションロールバック命令(上述したrollback()など)を続けて行うとき、推測的実行が失敗したことを示す「false」が返されてもよい。
データベース操作装置は、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、推測的実行の処理において取得されるターゲットトランザクションの区分化条件がそれに指示されるデータベースを制御してもよい。
特定の実装態様では、データベース操作装置は、サービス論理コードを実行してターゲットトランザクションを実際に実行するようデータベースに指示するために、サービス論理コードの名前をデータベースに発行してもよく、実際の実行の処理において取得され、データベースによって返されるターゲットトランザクションの区分化条件及び関係するデータ範囲を受信してもよい。実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一である場合、データベース操作装置は、データベースがターゲットトランザクションをコミットするために、トランザクションコミット命令をデータベースに発行してもよい。実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲のうちの少なくとも1つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なる場合、データベース操作装置は、データベースがターゲットトランザクションをロールバックするために、トランザクションロールバック命令をデータベースに発行してもよい。
別の特定の実装態様では、データベース操作装置は、サービス論理コードを実行してターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一であるとき、ターゲットトランザクションをコミットし、または実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲のうちの少なくとも1つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なるとき、ターゲットトランザクションをロールバックするようにデータベースを指示するために、サービス論理コードの名前と共に、データベースへの推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を発行してもよい。
任意選択で、データベース操作装置とデータベースとの間の対話の数を削減し、ネットワークリソースを節約するために、サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲は、データベースに同時に(共に)発行されてもよい。
純粋な手順の解決策と比較して、本開示は、推測的実行の処理を追加し、その結果、ターゲットトランザクションの区分化条件及び関係するデータ範囲を事前に取得することができ、ターゲットトランザクションが実行されるべきデータベースまたはデータベース(複数)を判定することができる。
一方では、ターゲットトランザクションの推測された区分化条件に基づいて、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定される。ターゲットトランザクションがスタンドアロントランザクションとして判定される場合、データベースは、スタンドアロントランザクション処理論理に従ってターゲットトランザクションを実際に実行するように制御されてもよい。ターゲットトランザクションが分散型トランザクションとして判定される場合、データベースは、分散型トランザクション処理論理に従ってターゲットトランザクションを実際に実行するように制御されてもよい。分散型トランザクション処理論理及びスタンドアロントランザクション処理論理は異なる。スタンドアロントランザクション処理論理は比較的単純であり、例えば、それは、読み出し/書き込みロックなどの事柄を含まず、従って、より少ないリソースが消費される。このことに基づいて、ターゲットトランザクションがスタンドアロントランザクションであるかを特定し、ターゲットトランザクションがスタンドアロントランザクションとして特定されるときにスタンドアロントランザクション処理論理に従ってターゲットトランザクションを処理することによって、この例示的な実施形態は、処理効率を改善し、トランザクションのスループットを増大させ、処理コストを削減することを支援する。
他方では、データは、ターゲットトランザクションの推測された区分化条件及び関係するデータ範囲に基づいて事前に用意されてもよい。例えば、全てのクロスノードデータは、他のデータベースまたはローカルデータベースの「下位レベルのディスク記憶装置」から事前にロードされ、それによって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
加えて、本開示は、アプリケーションサーバがターゲットトランザクションの実行論理を制御する、主に推測的実行の解決策を指す純粋な推測的実行の解決策を提供する。この解決策では、アプリケーションサーバによってターゲットトランザクションを実行する処理では、アプリケーションサーバが続けて行うターゲットトランザクションのデータベース操作命令は順番に取得される。データベース操作命令は、推測して実行され、推測的実行結果は、アプリケーションサーバに返され、その結果、アプリケーションサーバは、実行される必要があるデータベース操作命令を判定することができ、データベース操作命令及び推測的実行の間に生成された推測的実行データをローカルに記録することができる。ターゲットトランザクションにおけるトランザクションコミット命令が取得されるとき、アプリケーションサーバに対応するデータベースは、ローカルに記録されたデータベース操作命令及び推測的実行データに従ってターゲットトランザクションを実際に実行するように制御される。ターゲットトランザクションを実際に実行するようにアプリケーションサーバに対応するデータベースを制御する方法は、データベース操作命令を実行するようにデータベースを指示するためにローカルに記録されたデータベース操作命令をデータベースに発行すること、実際の実行結果が推測的実行結果と同一である場合、ターゲットトランザクションをコミットすること、及び実際の実行結果が推測的実行結果と異なる場合、ターゲットトランザクションをロールバックすることを含んでもよい。
トランザクションは、データベースにおける実際の実行の間に推測的実行の処理において並列し、連続して順番に実行される。従って、同一のデータを操作する2つのトランザクションは、推測的実行の段階で正確であることができる。しかしながら、実際の実行の段階では、トランザクションが最初に実行されようと、他のトランザクションは、データが変更されたので推測的実行結果が実際の実行結果と異なることを理由にロールバックされ、高いロールバックの可能性をもたらす。
例えば、2つのトランザクション、トランザクション1及びトランザクション2が存在し、両方のトランザクションがキーの値を読み出しており、値をidに割り当てていることが想定される。id=0の場合、idは、1をインクリメントされ、id+1がキーの新たな値として使用される。推測的実行の処理では、データベースにおける値が変更されないことを理由に、両方のトランザクションは、key=0を読み出してもよく、値をidに割り当ててもよく、更に、id=0であることを理由に、第2の命令文を成功して実行することができ、すなわち、idは、1をインクリメントされ、id+1がキーに割り当てられ、すなわち、両方のトランザクションの推測的実行結果はkey=1である。しかしながら、実際の実行の処理では、2つのトランザクションは順番に実行される必要がある。トランザクション1が最初に実行され、次いで、トランザクション2が実行されることが想定される。このケースでは、トランザクション1は、id=0を読み出してもよく、1をインクリメントしてもよく、key=1となるようにid+1をキーに割り当ててもよく、トランザクション2は実行されるとき、key=1を読み出し、key=1となるように値をidに割り当てられ、次いで、idは1をインクリメントされ、key=2となるようにid+1がキーに割り当てられる。実際の実行結果を2つのトランザクションの推測的実行結果と比較することによって、トランザクション2の実際の実行結果及び推測的実行結果は異なり、従って、トランザクション2は、ロールバックされる必要がある。しかしながら、実際には、データベースがトランザクション2のサービス論理を取得することができる場合、第2の命令文は、id>0のときに実行される必要がなく、すなわち、idに1をインクリメントし、id+1をキーに割り当てる操作を実行する必要がない。このケースでは、得られた実行結果はなおkey=1であり、その結果、トランザクション2は、ロールバックされる必要がない。
純粋な推測的実行の解決策と比較して、本開示は、手順の解決策を追加し、手順の解決策の利点を完全に使用するようにする。データベースは、実際の実行の処理におけるターゲットトランザクションのサービス論理を取得することができ、ターゲットトランザクションのサービス論理に従ってターゲットトランザクションを実行することができる。従って、データベースは、共有データセット(すなわち、データベースにおけるデータ)における変更に関して関わる必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、それは、純粋な推測的実行の解決策におけるロールバック事象を或る程度解決することができ、よって、ロールバックの可能性を低減させ、トランザクションの実行効率を改善することを支援する。
上述した在庫削減トランザクションはなお、本開示の技術的解決策の作動する手順を詳細に示すために以下では例として使用される。
在庫削減トランザクションのSQLコードは、上記のように説明され、在庫削減トランザクションがそれにカプセル化される手順の疑似コードも上記のように説明される。
実際の実行の処理では、データベース操作装置(または、実行サーバと称される)は、ユーザのトリガ命令に従って上述した手順を取得し、次いで、手順を実行する。
最初に、データベース操作装置は、メモリライブラリをローカルに生成する。
SQL命令文:select * from inventory where itemId=? for updateを続けて行うとき、データベース操作装置は、データベースにおけるSQL命令文を直接検索し、このクエリの結果(すなわち、発見された処理されるデータ、すなわち、現在の在庫量)をローカルメモリライブラリに記録し、同時に、このクエリに含まれるPrimaryKeys及びPartitionKeyを記録する。
SQL命令文は、クエリの命令文であり、従って、結果は、命令文が分割されるか否かに関わらず変わらないままであることに留意されたい。操作を簡易化するために、クエリの命令文は、分割されなくてもよい。
データベース操作装置は、クエリの結果が0よりも大きいかを判定する。yesの場合、データベース操作装置は、現在の在庫量を削減し、更新命令文、すなわち、update inventory set item.inventory=$item.inventory where itemId=?;を実行し、noの場合、データベース操作装置は、命令文をロールバックする。
ロールバック命令文を続けて行う場合、データベース操作装置は、ローカルメモリライブラリを消去する。このケースでは、トランザクションがデータベースにおいて実行されないことを理由に、データベースは、ロールバック操作を実行する必要がない。
更新命令文、すなわち、update inventory set item.inventory=? where itemId=?を続けて行う場合、データベース操作装置は、SQL命令文をデータベース読み出し命令、すなわち、select * from inventory where itemId=?、及びデータベース書き込み命令、すなわち、update inventory set item.inventory=? where itemId=?に分割する。次いで、データベース操作装置は、命令文、select * from inventory where itemId=?をデータベースに発行して読み出しデータセットを取得し、読み出しデータセットにおけるデータをローカルメモリライブラリに書き込む。次に、データベース操作装置は、命令文、update inventory set item.inventory=? where itemId=?に従ってローカルメモリライブラリにおける更新操作を実行して、結果として得られるデータセットを取得し、同時に、結果として得られる読み出しセットにおけるPrimaryKeys及び対応するバージョン番号情報を記録し、PartitionKeyを記録する。
コミット命令を実行した後、データベース操作装置は、値「true」を返し、全ての上述した命令をトランザクションと共に再度、下位レベルのデータベースにおいて実行する(この実行は実際の実行である)。
上述した手順を終了した後、データベース操作装置は以下のトランザクション実行テンプレートを取得する。
呼び出される手順:
ブールbuySth(long itemId)
対応するパラメータ:itemId=xxx
対応するPartitionKeyリスト=xxx。
更に、手順を実行する上述した処理では、ReadSetにおけるPrimaryKeys及びその対応するバージョン番号情報が更に記録されてもよい。これは、下位レベルのデータベースにおける実行の前に記録されたPrimaryKeysに従って、全てのクロスノードデータを他の「下位レベルのデータベース」及びローカルデータベースの「下位レベルのディスク記憶装置」から予めロードすることを支援する。クロスノードデータを予めロードする方式は、低速度デバイスでデータを一まとめでメモリにロードすることができ、手順の順次実行における重要な役割を果たすことができ、実行効率を著しく改善することができる。
上述した方法の例示的な実施形態は全て、説明を容易にするために一連のアクションの組み合わせとして表されることに留意されたい。しかしながら、当業者は、いくつかのステップが本開示に従って他の順序で、または同時に実行されてもよいことを理由に、本開示が説明されたアクションの順序によって限定されないことを知るべきである。第2に、当業者はまた、本明細書で説明される例示的な実施形態が全て好ましい例示的な実施形態であり、含まれるアクション及びモジュールが本開示に必須でないことを知るべきである。
上述した例示的な実施形態では、各々の例示的な実施形態の説明は、その自身の焦点を有する。1つの例示的な実施形態で詳細にされない内容について、別の例示的な実施形態の関連する説明に対して参照がされてもよい。
図4は、本開示の例示的な実施形態に従ったデータベース操作装置の概略構造図である。図4に示されるように、装置は、取得モジュール41、推測的実行モジュール42、及び実行制御モジュール43を含む。
取得モジュール41は、ユーザ命令に従ってターゲットトランザクションのトリガ命令を実行し、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように構成される。
推測的実行モジュール42は、取得モジュール41によって取得されたサービス論理コードに従ってターゲットトランザクションを推測して実行し、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成される。
実行制御モジュール43は、推測的実行モジュール42によって実行された推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御するように構成される。
任意選択の実装態様では、推測的実行モジュール42は特に、
サービス論理コードにおける命令を実行し、
命令がサービス論理コードにおいてカプセル化されたターゲットトランザクションにおけるデータベース操作命令であるとき、データベース操作命令を推測して実行する、
ように構成される。
更に、実行されたデータベース操作命令を推測して実行するとき、推測的実行モジュール42は特に、
データベース操作命令がデータベース修正命令である場合、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行し、
データベース操作命令がデータベース修正命令でない場合、データベース操作命令を推測して実行するようにデータベースにおけるデータベース操作命令を実行する、
ように構成される。
更に、ローカルに生成されたメモリライブラリにおけるデータベース操作命令のデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース操作命令を推測して実行するとき、推測的実行モジュール42は特に、
データベース操作命令を読み出し命令及び書き込み命令に分割し、
読み出しデータセットを取得するようにデータベースにおける読み出し命令を実行し、データベース操作命令のデータ環境をシミュレートするために読み出しデータセットをメモリライブラリに記憶し、
読み出しデータセットを修正するようにメモリライブラリにおける書き込み命令を実行する、
ように構成される。
任意選択の実装態様では、実行制御モジュール43は特に、
サービス論理コードを実行してターゲットトランザクションを実際に実行するようにデータベースを指示するためにサービス論理コードの名前をデータベースに発行し、実際の実行の処理において取得され、データベースによって返されるターゲットトランザクションの区分化条件及び関係するデータ範囲を受信し、
実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一である場合、データベースがターゲットトランザクションをコミットするためにトランザクションコミット命令をデータベースに発行し、
実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の少なくとも1つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なる場合、データベースがターゲットトランザクションをロールバックするためにトランザクションロールバック命令をデータベースに発行する、
ように構成される。
別の任意選択の実装態様では、実行制御モジュール43は特に、
サービス論理コードを実行してターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と同一であるとき、ターゲットトランザクションをコミットし、または実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の少なくとも1つが、推測的実行において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲と異なるとき、ターゲットトランザクションをロールバックするようにデータベースを指示するために、サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲をデータベースに発行する、
ように構成されてもよい。
更に、実行制御モジュール43は特に、
サービス論理コードの名前と共に、推測的実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲をデータベースに同時に発行する、
ように構成されてもよい。
任意選択で、上述したサービス論理コードは、記憶手順であってもよいがそれに限定されない。記憶手順は、様々な言語、例えば、MySQLまたはJavaを使用することによって実装されてもよい。
この例示的な実施形態で提供されるデータベース操作装置は実際には論理処理装置であり、論理処理装置は、単独で配置されてもよく、アプリケーションサーバとデータベースとの間に位置してもよく、または実装のためにアプリケーションサーバ上に配置されてもよく、もしくは実装のためにデータベース上に配置されてもよい。
この例示的な実施形態で提供されるデータベース操作装置は、ユーザのトリガ命令に従って、ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得し、サービス論理コードに従ってターゲットトランザクションを推測して実行し、ターゲットトランザクションの区分化条件及び関係するデータ範囲を推測し、推測的実行が成功するとき、サービス論理コードと共に、推測的実行の処理において取得されるターゲットトランザクションのターゲットトランザクション及び関係するデータ範囲に従ってターゲットトランザクションを実際に実行するように、区分化条件がそれに指示されるデータベースを制御する。ターゲットトランザクションの区分化条件は、推測的実行を通して取得されてもよく、ターゲットトランザクションが実行されるべきデータベースまたはデータベース(複数)が判定されてもよく、データベースの消費の確実度を保証する。一方では、ターゲットトランザクションがスタンドアロントランザクションまたは分散型トランザクションであるかが事前に判定され、他方では、データが事前に用意されてもよく、よって、トランザクションの実行効率を改善することを支援し、更に、トランザクションのスループットを増大させる。
加えて、この例示的な実施形態におけるデータベース操作装置は、推測的実行及び手順を組み合わせる。純粋な推測的実行の解決策と比較して、データベース操作装置は、手順の解決策の利点を完全に使用するようにする。データベースは、実際の実行の処理におけるターゲットトランザクションのサービス論理を確認することができ、ターゲットトランザクションのサービス論理に従ってターゲットトランザクションを実行することができる。従って、データベースは、共有データセット(すなわち、データベースにおけるデータ)における変更に関して気にかける必要がない。ターゲットトランザクションの区分化条件及び関係するデータ範囲が変わらない限り、トランザクションの連続した、かつ正確な実行を保証することができ、それは、純粋な推測的実行の解決策におけるロールバック事象を或る程度解決することができ、よって、ロールバックの可能性を低減させ、トランザクションの実行効率を改善することを支援する。
当業者は、説明を容易かつ簡潔にするために、上述した特定のシステム、装置及びユニットの特定の作用する処理について、上述した方法の例示的な実施形態における対応する処理に対して参照がされてもよいことを明確に理解するべきである。詳細はここでは再度説明されない。
本開示で提供されるいくつかの例示的な実施形態では、開示されるシステム、装置及び方法が他の方式で実装されてもよいことを理解されるべきである。例えば、上記説明された装置の例示的な実施形態は例示にすぎない。例えば、ユニットの分離は、論理的な機能に基づく分離にすぎず、実際の実装態様では、他の分離の方式が存在してもよい。例えば、複数のユニットまたは構成要素が組み合わされてもよく、もしくは別のシステムに統合されてもよく、またはいくつかの特徴が無視されてもよく、もしくは実行されなくてもよい。加えて、表示または議論される相互結合もしくは直接結合、または通信接続は、いくつかのインタフェースを使用することによって実装されてもよく、間接結合、または装置もしくはユニットの間の通信接続は、電気的、機械的、または別の形式で実装されてもよい。
別個の部分として説明されるユニットは、物理的に分離されてもよく、または分離されなくてもよい。ユニットとして表示される部分は、物理的ユニットであってもよく、またはそうでなくてもよく、1つの位置に位置してもよく、または複数のネットワークユニットに分散されてもよい。ユニットのうちのいくつかまたは全ては、例示的な実施形態の解決策の目的を達成するための必要性に従って選択されてもよい。
加えて、本開示の例示的な実施形態における機能的ユニットが1つのプロセシングユニットに統合されてもよく、ユニットの各々が物理的に単独で存在してもよく、または2つ以上のユニットが1つのユニットに統合されてもよい。統合されたユニットは、ハードウェアの形式で実装されてもよく、またはハードウェアに加え、ソフトウェアの機能的ユニットの形式で実装されてもよい。
統合されたユニットがソフトウェアの機能的ユニットの形式で実装されるとき、統合されたユニットは、コンピュータ可読記憶媒体に記憶されてもよい。ソフトウェアの機能的ユニットは、記憶媒体に記憶され、本開示の例示的な実施形態で説明された方法のステップのうちの全てまたはいくつかを実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイスなどであってもよい)またはプロセッサに指示するためのいくつかの命令を含む。上述した記憶媒体は、USBフラッシュドライブ、着脱可能ハードディスク、リードオンリメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができるいずれかの媒体を含む。
最後に、上述した例示的な実施形態は、本開示の技術的解決策を限定するのではなく、示すために使用されるにすぎないことに留意されたい。本開示は上述した例示的な実施形態を参照して詳細に説明されたが、当業者は、上述した例示的な実施形態で説明された技術的解決策に対して修正が行われてもよく、またはいくつかの技術的特徴に対して同等の置き換えがされてもよいことを理解するべきである。しかしながら、それらの修正または置き換えは、対応する技術的解決策の本質を、本開示の例示的な実施形態の技術的解決策の精神および範囲から逸脱させない。

Claims (12)

  1. ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従って前記ターゲットトランザクションのトリガ命令を実行することと、
    前記サービス論理コードに従って前記ターゲットトランザクションの推測的実行を行い、前記推測的実行の処理において取得される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を記録することと、
    前記推測的実行が成功するとき、前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示されるデータベースを制御することと、
    を含み、前記ターゲットトランザクションの前記推測的実行を行うことは、前記サービス論理コードにおける命令を実行することと、前記命令が前記サービス論理コードにおいてカプセル化された前記ターゲットトランザクションにおけるデータベース操作命令であるとき、前記データベース操作命令の前記推測的実行を行うこととを含み、
    前記データベース操作命令の前記推測的実行を行うことは、前記データベース操作命令がデータベース修正命令である場合に、ローカルに生成されたメモリライブラリにおける前記データベース操作命令のデータ環境をシミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行うこと、または前記データベース操作命令がデータベース修正命令でない場合に、前記データベース操作命令の前記推測的実行を行うように前記データベースにおける前記データベース操作命令を実行することを含む、データベース操作方法。
  2. 前記ローカルに生成されたメモリライブラリにおける前記データベース操作命令の前記データ環境を前記シミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行うことは、
    前記データベース操作命令を読み出し命令及び書き込み命令に分割することと、
    読み出しデータセットを取得するように前記データベースにおける前記読み出し命令を実行し、前記データベース操作命令の前記データ環境をシミュレートするために前記読み出しデータセットを前記メモリライブラリに記憶することと、
    前記読み出しデータセットを修正するように前記メモリライブラリにおける前記書き込み命令を実行することと、
    を含む、請求項に記載の方法。
  3. 前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示される前記データベースを前記制御することは、
    前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行するように前記データベースを指示するために、前記サービス論理コードの名前を前記データベースに発行し、実際の実行の処理において取得され、前記データベースによって返される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を受信することと、
    実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一である場合、前記ターゲットトランザクションをコミットするためにトランザクションコミット命令を前記データベースに発行することと、
    実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも1つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なる場合、前記ターゲットトランザクションをロールバックするためにトランザクションロールバック命令を前記データベースに発行することと、
    を含む、請求項1または2に記載の方法。
  4. 前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示される前記データベースを前記制御することは、
    前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一であるとき、前記ターゲットトランザクションをコミットし、または実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも1つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なるとき、前記ターゲットトランザクションをロールバックするように前記データベースを指示するために、前記サービス論理コードの名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに発行することを含む、
    請求項1または2に記載の方法。
  5. 前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに前記発行することは、
    前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに同時に発行することを含む、
    請求項に記載の方法。
  6. 前記サービス論理コードは、記憶手順である、
    請求項1または2に記載の方法。
  7. ターゲットトランザクションがそれにカプセル化されるサービス論理コードを取得するように、ユーザ命令に従って前記ターゲットトランザクションのトリガ命令を実行するように構成された取得モジュールと、
    前記サービス論理コードに従って前記ターゲットトランザクションの推測的実行を行い、前記推測的実行の処理において取得される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を記録するように構成された推測的実行モジュールと、
    前記推測的実行が成功するとき、前記サービス論理コードと共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲に従って前記ターゲットトランザクションを実際に実行するように、前記区分化条件がそれに指示されるデータベースを制御するように構成された実行制御モジュールと、を含み、
    前記推測的実行モジュールは特に、
    前記サービス論理コードにおける命令を実行し、
    前記命令が前記サービス論理コードにおいてカプセル化された前記ターゲットトランザクションにおけるデータベース操作命令であるとき、前記データベース操作命令の前記推測的実行を行うように構成され、
    前記推測的実行モジュールは、
    前記データベース操作命令がデータベース修正命令である場合、ローカルに生成されたメモリライブラリにおける前記データベース操作命令のデータ環境をシミュレートし、前記シミュレートされたデータ環境に基づいて前記データベース操作命令の前記推測的実行を行い、前記データベース操作命令がデータベース修正命令でない場合、前記データベース操作命令の前記推測的実行を行うように前記データベースにおける前記データベース操作命令を実行するようにさらに構成される、
    データベース操作装置。
  8. 前記推測的実行モジュールは特に、
    前記データベース操作命令を読み出し命令及び書き込み命令に分割し、
    読み出しデータセットを取得するように前記データベースにおける前記読み出し命令を実行し、前記データベース操作命令の前記データ環境をシミュレートするために前記読み出しデータセットを前記メモリライブラリに記憶し、
    前記読み出しデータセットを修正するように前記メモリライブラリにおける前記書き込み命令を実行する、
    ように構成される、請求項に記載の装置。
  9. 前記実行制御モジュールは特に、
    前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行するように前記データベースを指示するために、前記サービス論理コードの名前を前記データベースに発行し、実際の実行の処理において取得され、前記データベースによって返される前記ターゲットトランザクションの区分化条件及び関係するデータ範囲を受信し、
    実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一である場合、前記ターゲットトランザクションをコミットするためにトランザクションコミット命令を前記データベースに発行し
    実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも1つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なる場合、前記ターゲットトランザクションをロールバックするためにトランザクションロールバック命令を前記データベースに発行する、
    ように構成される、請求項7または8に記載の装置。
  10. 前記実行制御モジュールは特に、
    前記サービス論理コードを実行して前記ターゲットトランザクションを実際に実行し、実際の実行の処理において取得されるターゲットトランザクションの区分化条件及び関係するデータ範囲の両方が、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と同一であるとき、前記ターゲットトランザクションをコミットし、または実際の実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲の少なくとも1つが、前記推測的実行において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲と異なるとき、前記ターゲットトランザクションをロールバックするように前記データベースを指示するために、前記サービス論理コードの名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに発行する、
    ように構成される、請求項7または8に記載の装置。
  11. 前記実行制御モジュールは特に、
    前記サービス論理コードの前記名前と共に、前記推測的実行の前記処理において取得される前記ターゲットトランザクションの前記区分化条件及び前記関係するデータ範囲を前記データベースに同時に発行する、
    ように構成される、請求項10に記載の装置。
  12. 前記サービス論理コードは、記憶手順である、
    請求項7または8に記載の装置。
JP2018532418A 2015-12-21 2016-12-13 データベース操作方法及び装置 Active JP6937759B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510960860.4 2015-12-21
CN201510960860.4A CN106897123B (zh) 2015-12-21 2015-12-21 数据库操作方法及装置
PCT/CN2016/109653 WO2017107810A1 (zh) 2015-12-21 2016-12-13 数据库操作方法及装置

Publications (2)

Publication Number Publication Date
JP2019503534A JP2019503534A (ja) 2019-02-07
JP6937759B2 true JP6937759B2 (ja) 2021-09-22

Family

ID=59089152

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018532418A Active JP6937759B2 (ja) 2015-12-21 2016-12-13 データベース操作方法及び装置

Country Status (5)

Country Link
US (1) US20180300146A1 (ja)
EP (1) EP3396542B1 (ja)
JP (1) JP6937759B2 (ja)
CN (1) CN106897123B (ja)
WO (1) WO2017107810A1 (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110019131B (zh) * 2017-12-08 2021-10-15 北京京东尚科信息技术有限公司 一种复盘业务的方法和装置
CN109284331B (zh) * 2018-08-16 2024-04-02 中国平安人寿保险股份有限公司 基于业务数据资源的制证信息获取方法、终端设备及介质
CN110515707B (zh) * 2019-08-22 2022-02-25 上海交通大学 基于预先事务处理的确定性并发控制方法及系统
CN113297320B (zh) * 2020-07-24 2024-05-14 阿里巴巴集团控股有限公司 分布式数据库系统及数据处理方法
CN112380195B (zh) * 2020-10-20 2022-10-04 国网电力科学研究院有限公司 一种基于事务时序有向图的sql交互数据预处理方法与装置
CN117827284B (zh) * 2024-03-04 2024-06-14 芯来智融半导体科技(上海)有限公司 向量处理器访存指令处理方法、系统、设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05233397A (ja) * 1992-02-21 1993-09-10 Toshiba Corp 適用プログラム実行管理方法
US6816873B2 (en) * 2001-05-15 2004-11-09 International Business Machines Corporation Method for managing distributed savepoints across multiple DBMS's within a distributed transaction
CN101587447B (zh) * 2008-05-23 2013-03-27 国际商业机器公司 基于预测的事务执行系统和方法
CN102207883A (zh) * 2011-06-01 2011-10-05 华中科技大学 异构分布式实时系统的事务调度方法
CN102508834B (zh) * 2011-09-22 2014-05-07 用友软件股份有限公司 基于消息的大型事务应用装置和方法
CN103810196B (zh) * 2012-11-09 2017-09-22 阿里巴巴集团控股有限公司 基于业务模型进行数据库性能测试的方法
US9053035B1 (en) * 2013-11-25 2015-06-09 Freescale Semiconductor, Inc. Multi-threaded system for performing atomic binary translations
US20150277914A1 (en) * 2014-03-27 2015-10-01 John H. Kelm Lock elision with binary translation based processors

Also Published As

Publication number Publication date
US20180300146A1 (en) 2018-10-18
JP2019503534A (ja) 2019-02-07
EP3396542A1 (en) 2018-10-31
EP3396542A4 (en) 2019-06-19
WO2017107810A1 (zh) 2017-06-29
EP3396542B1 (en) 2023-09-13
CN106897123B (zh) 2021-07-16
CN106897123A (zh) 2017-06-27

Similar Documents

Publication Publication Date Title
JP6937759B2 (ja) データベース操作方法及び装置
US11138227B2 (en) Consistent query execution in hybrid DBMS
JP6877435B2 (ja) データベース動作方法及び装置
CN102184127B (zh) 一种实现处理器预执行的方法及相应的装置
JP6795259B2 (ja) データベーストランザクションを最適化するための方法および装置
JP6432450B2 (ja) 並列計算装置、コンパイル装置、並列処理方法、コンパイル方法、並列処理プログラムおよびコンパイルプログラム
CN110249315B (zh) 在跟踪重放期间存储器值的有效检索
US11080261B2 (en) Hybrid concurrency control
US9002824B1 (en) Query plan management in shared distributed data stores
Munir et al. A cost-based storage format selector for materialized results in big data frameworks
JP2007299021A (ja) インデクス更新方法及びそのシステム
CN112970011A (zh) 记录查询优化中的谱系
CN111737166B (zh) 数据对象的处理方法、装置及设备
DE102013100169A1 (de) Planen und Ausführung einer Rechenaufgabe
US20080189305A1 (en) Predictive Database Pool Preparation
JP5687603B2 (ja) プログラム変換装置、プログラム変換方法、および変換プログラム
CN108334532A (zh) 一种基于Spark的Eclat并行化方法、系统及装置
WO2023219734A1 (en) Evaluating row-store expressions on a column-store database
US11874830B2 (en) Efficient job writing for database member
US11144428B2 (en) Efficient calculation of performance data for a computer
TWI790991B (zh) 資料庫操作方法及裝置
Munir et al. A cost-based storage format selector for materialization in big data frameworks
US11620271B2 (en) Relationship analysis using vector representations of database tables
US9805148B2 (en) Modeling and simulation analytical reply method
TWI805544B (zh) 資料庫操作方法及裝置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201222

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210317

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210407

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210803

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210831

R150 Certificate of patent or registration of utility model

Ref document number: 6937759

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250