JP6877435B2 - データベース動作方法及び装置 - Google Patents

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

Info

Publication number
JP6877435B2
JP6877435B2 JP2018532425A JP2018532425A JP6877435B2 JP 6877435 B2 JP6877435 B2 JP 6877435B2 JP 2018532425 A JP2018532425 A JP 2018532425A JP 2018532425 A JP2018532425 A JP 2018532425A JP 6877435 B2 JP6877435 B2 JP 6877435B2
Authority
JP
Japan
Prior art keywords
database
command
operation command
execution
database operation
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
JP2018532425A
Other languages
English (en)
Other versions
JP2018538634A (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 JP2018538634A publication Critical patent/JP2018538634A/ja
Application granted granted Critical
Publication of JP6877435B2 publication Critical patent/JP6877435B2/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
    • 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
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit 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/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
    • 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/25Integrating or interfacing systems involving database management systems
    • 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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Fuzzy Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベースの技術分野に関し、特に、データベース動作方法及び装置に関する。
データベーストランザクションは、作業の単一論理ユニットによって実行される一連の動作をいい、それらの動作は、実行が完了したか、または全く実行されていないかのいずれかである。単一トランザクションは、ステートメントなどの、一連のデータベース動作コマンドによって形成される。
データの読み取り同時実行性の正確性を保証するために、トランザクション分離レベルの概念が、データベース動作について提案されている。SQL(Structured Query Language)標準において、4つのトランザクション分離レベルが定義されている。Read Committedは、いくつかのアプリケーションプログラムによって優先的に考慮される分離レベルであり、それは、ダーティリードを回避することができ、比較的良好な同時実行性性能を有する。しかしながら、非再現リードの問題が、依然として起こり得る。
Read Committed分離レベルのトランザクションが直面する非再現リードの問題について、Read Committed分離レベルのトランザクションにおけるあるデータの分離レベルは、データが再現的に読み取られ得ることを保証するために、「for update」ステートメントを通して一時的にアップグレードされ得る。しかしながら、これは、システムの同時実行性能に重大な影響を及ぼし、かつ実行効率低下につながることとなり、比較的低いトランザクションのスループットキャパシティを有する。
本出願のいくつかの態様は、データベース動作の方法及び装置を提供し、それは、データベースシステムの同時実行性能を保証し、トランザクションの実行効率を改善し、トランザクションのスループットキャパシティを増加させるために使用される。
本出願の1つの態様では、データベース動作方法が提供される。データベース動作方法は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、データベース動作コマンドについて予測実行を行うこと、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にすること、データベース動作コマンドをローカルに記録すること、及びデータベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属する場合に、予測実行により生成される予測実行データを記録することと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することと、を含む。
本出願の別の態様では、データベース動作方法が提供される。データベース動作方法は、対象トランザクションがアプリケーションサーバによって実行されるときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、データベース動作コマンドについて予測実行を行うこと、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にすること、データベース動作コマンドをローカルに記録すること、及びデータベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録することと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することと、を含む。
本出願のさらなる別の態様では、データベース動作装置が提供される。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属する場合に、予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される、制御実行モジュールと、を含む。
本出願のさらなる別の態様では、データベース動作装置が提供される。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される、制御実行モジュールと、を含む。
本出願において、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、Read committed分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、データベース修正型コマンドもしくはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し、これによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
本出願の実施形態における技術的解決法をより良く説明するために、実施形態または既存技術の説明のために必要とされる添付図面が、ここで簡単に説明される。説明される図面が、実施形態のうちのいくつかを表すことは明らかである。これらの図面に基づいて、当業者は、いかなる創造的努力も行うことなく、他の図面を得ることができる。
既存技術における、データベースアプリケーションシステムの配置図である。 本出願の実施形態によって提供される、データベースアプリケーションシステムの配置図である。 本出願の別の実施形態によって提供される、データベースアプリケーション方法のフローチャートである。 本出願のさらなる別の実施形態によって提供される、データベースアプリケーション方法のフローチャートである。 本出願のさらなる別の実施形態によって提供される、データベースアプリケーション装置の概略的な構造図である。 本出願のさらなる別の実施形態によって提供される、データベースアプリケーション装置の概略的な構造図である。
本出願の実施形態の目的、技術的解決法及び利点をより明確にするために、本出願の実施形態における技術的解決法が、本出願の実施形態における添付図面と併せて、明確かつ完全なやり方で説明される。説明される実施形態が、実施形態のうちの全てではなくいくつかを表すことは明らかである。本出願の実施形態に基づいて、当業者によっていかなる創造的努力も行うことなく得られる他の実施形態全てが、本出願の保護範囲に属するものとする。
図1は、既存技術における、データベースアプリケーションシステムの配置図である。図1に示されるように、システムは、アプリケーションサーバ10と、データベース20とを含む。1つまたは複数のアプリケーションサーバ10と、1つまたは複数のデータベース20とが存在してもよい。図1は、1つのアプリケーションサーバ10と、1つのデータベース20を、一例として単に示しているだけである。データベース20に対してトランザクションの形態でアクセスが行われるとき、アプリケーションサーバ10は、トランザクションのロジックを実行し、トランザクション内のデータベース動作コマンドをデータベース20に対して適用する。実行される必要があるトランザクション内のデータベース動作コマンドは、予め知られることができないため、それによりトランザクションの実行効率は低い。これは、Read committedの分離レベルの下で「for update」ステートメントを通してデータをロックする方式について特に当てはまる。その実行効率はより低く、比較的低いスループットキャパシティを有する。
本出願は、既存技術において存在する不備を対象とする、新規なデータベースアプリケーションシステムを提供する。図2に示されるように、システムは、アプリケーションサーバ10とデータベース20との間に、データベース動作装置30を追加する。データベース動作装置30は、本出願において提供されるデータベース動作方法を実行するために使用され、そのデータベース動作方法は、Read committedの分離レベルの下においてロック方式で新たなトランザクション実行ロジックを実施する。具体的には、予測実行が、トランザクションについてまず実行されて、トランザクション内で実行される必要があるデータベース動作コマンドを予め取得し、それによって、実行パスの予測を達成する。さらに、Read committedの分離レベル及びロック状態と併せて、予測実行によって生成される予測実行データが、データベース修正型コマンド及びロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについてのみ、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについてのみ、記録される。次いで、トランザクションの実際の実行が、予測実行から得られるデータベース動作コマンド及び予測実行データに基づいてデータベース20に対して行われ、これによって、トランザクションの実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。トランザクションのスループットキャパシティは、単位時間ピリオド内に処理されるトランザクションの数をいう。
データベース動作装置30は、実際には論理処理装置であり、それは、アプリケーションサーバ10とデータベース20との間に独立して配置され、位置してもよく、または実施態様についてアプリケーションサーバ10内に配置されてもよく、または実施態様についてデータベース20内に配置されてもよいことに留意すべきである。
本出願の技術的解決法の方法論的プロセスが、以下の実施形態を用いて詳細に説明される。
図3は、本出願の別の実施形態によって提供される、データベース動作方法のフローチャートである。図3に示すように、方法は、以下を含む。
301:アプリケーションサーバによって対象トランザクションを実行するプロセス中に、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを適当な順序で取得する。
302:データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンド及びロックされたデータベース非修正型コマンドのうちの1つに属するときに、予測実行により生成される予測実行データを記録する。
303:対象トランザクション内のトランザクションコミットコマンドが取得されるとき、アプリケーションサーバに対応するデータベースを制御して、対象トランザクションを実際に実行する。
説明のため、本実施形態は、アプリケーションサーバによって実行される必要があるトランザクションを、対象トランザクションと呼ぶことに留意する。対象トランザクションは、主に、データベースに対して動作を実行するために使用される動作コマンドを含む。データベース動作コマンド以外に、対象トランザクションの実行状態を制御するために使用されるいくつかの制御コマンド、例えば、トランザクション開始コマンド、トランザクションコミットコマンド、トランザクションロールバックコマンドなども、使用される。これらのコマンドは、実際には、データベース言語で編集され、書かれているステートメントである。異なるデータベース言語によれば、これらのコマンドは、異なる言語で編集され、書かれたステートメントであり得る。例えば、SQLが使用される場合、上記のデータベース動作コマンド及び制御コマンドは、実際には、一連のSQLステートメントである。
さらに、トランザクション処理は、いくつかの適用シナリオにおいて、まずいくつかのレコードを選択し、次いでこれらのレコードを処理する必要がある。したがって、選択されたレコードに対して、排他的ロックをかける必要がある。これは、本実施形態におけるデータベース動作コマンド(複数可)が、ロックされたデータベース動作コマンド(複数可)であってもよいことを意味する。例えば、100ドルが、ボブの口座から振替される場合、この動作は、ボブの口座をチェックすること、この口座に100ドル分の十分な資金があるかどうかを判断すること、及びボブの口座内の預金を100ドル減少させること、の3つのステップで完結される。2つの振替動作が、同時に実行される場合、最初の振替動作がボブの口座の残高をチェックするときには100ドルがあることが分かる。別の振替動作も、同時にボブの口座をチェックする場合、ボブの口座には、やはり100ドルがあることが分かる。したがって、振替は、これら2つの振替動作によって両方とも行われ、第1の動作はボブの口座から100ドルを差し引き、他の動作もまた、ボブの口座から100ドルを差し引く。この場合、ボブの口座の残高は、マイナスになる可能性がある。この種の状況を回避するために、第2の振替動作が、ロックを得ることができず、よって、第1の振替動作を実行しているときにチェックを行うことができないことを保証するために、「for update」ステートメントが、ボブの口座にロックをかけるのに必要とされる。
本実施形態によって提供される方法は、分離レベルがRead committedであるデータベースに対して動作を実行するのに適している。いくつかのデータベースは、デフォルトで、分離レベルとしてこのRead committedを使用する。例えば、Oracleデータベースは、デフォルトで、分離レベルとしてRead committedを使用する。デフォルトで、分離レベルとしてこのRead committedを使用しないデータベースもある。例えば、MySQLデータベースは、デフォルトで、分離レベルとしてRepeatable readsを使用する。したがって、本実施形態により提供される方法を実行する前に、データベースの分離レベルがRead committedであるかどうかについて判断が行われてもよく、そうでない場合、データベースは、まず、このRead committedの分離レベルで構成される必要がある。例えば、アプリケーションサーバが、対象トランザクションを実行する前に、データベースは、このRead committedの分離レベルで構成される。
データベースの分離レベルがRead committedである状況において、本実施形態により提供される方法が、データベースにおいて対象トランザクションを実行するために実行され得る。そのプロセスの詳細は、以下を含む。
アプリケーションサーバは、対象トランザクションの全実行ロジックを制御し、既存の手法を用いて対象トランザクションを実行する。データベース動作装置は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを連続的に取得する。
任意の実施態様では、アプリケーションサーバは、データベースへのアクセスを達成するための既存の手法を用いて、データベース動作コマンドをデータベースに送信する。データベース動作装置は、アプリケーションサーバとデータベースとの間の通信をモニタリングして、アプリケーションサーバからデータベースに送信されるデータベース動作コマンドを傍受してもよい。
別の任意の実施態様では、アプリケーションサーバの処理ロジックが、わずかに修正され、データベース動作コマンドをデータベースへ送信することから、それらをデータベース動作装置へ送信することへと、処理ロジックを変更する。したがって、データベース動作装置は、アプリケーションサーバから能動的に送信されるデータベース動作コマンドを受信し得る。
対象トランザクションが明示トランザクションである場合、対象トランザクション内の最初のコマンドは、Begin Transactionなどのトランザクション開始コマンドであることに、ここで留意する。したがって、アプリケーションサーバにより実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバからデータベースに送信される、対象トランザクション内のトランザクション開始コマンドを傍受してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。代替的には、アプリケーションサーバによって実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバから能動的に送信される、対象トランザクション内のトランザクション開始コマンドを受信してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。対象トランザクションが、暗黙トランザクションである場合、対象トランザクションの最初のコマンドは、データベース動作コマンドであり、トランザクション開始コマンドを取得する手続きは、含まれない。
アプリケーションサーバによって実行されるデータベース動作コマンドを取得した後、データベース動作装置は、取得されたデータベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にする。予測実行結果は、対象トランザクションの実行パスを決定する。ここでの実行パスは、データベース動作コマンド間のジャンプロジックをいう。予測実行結果をアプリケーションサーバに返すことによって、対象トランザクションの実行ロジック全体を制御するためにアプリケーションサーバを有するという目的が達成される。
さらに、データベース動作装置は、また、取得されたデータベース動作コマンドをローカルに記録する必要があり、データベース動作コマンドが、データベース修正型コマンド、またはロックされたデータベース非修正型コマンドのうちの1つに属するときに、データベース動作コマンドの予測実行によって生成される予測実行データを記録する。データベース修正型コマンドは、update、insertなどで始まるコマンドのように、データベースに変化をもたらすデータベース動作コマンドをいう。概して、selectで始まるコマンドは、データベース修正型コマンドに属しない(データベース非修正型コマンドと呼ばれる)。Read committed分離レベルは、複数個のデータの書き込みが原子的であることを保証するだけであって、読み取り時には本来ロックをかけないが、いくつかのデータベース非修正型コマンドは、トランザクションの一貫性を保証するため、及びロールバックの可能性を減少させるために、for updateステートメントを通じてロックをかける必要がある場合がある。上記振替の例では、例えば、select......for updateの形式でデータベース動作コマンドを形成するように、selectコマンドについてロックがかけられる必要がある。この種のコマンドは、ロックされたデータベース非修正型コマンドと呼ばれ得る。予測実行データは、主に、データベース動作コマンドによって操作されるデータ、ならびにデータの主キーID及び主キーIDに対応するバージョンなどの、データベース動作コマンドについて予測実行を行うプロセスにおける何らかのデータをいう。
同一のデータベース動作コマンドは、データベース修正型コマンド、ロックされたデータベース非修正型コマンド、またはロックされていない非修正動作コマンドに属することに留意すべきである。一方、対象トランザクションの全体の観点から、対象トランザクション内の全てのデータベース修正型コマンド及び全てのロックされたデータベース非修正型コマンドについての予測実行によって生成される予測実行データが、ローカルに記録される。
例えば、データベース動作装置は、メモリバンクをローカルに作成し、取得されたデータベース動作コマンド及び予測実行データをメモリバンクに記憶してもよい。さらに、予測実行データが、予測実行結果(複数可)を含まない場合、予測実行結果(複数可)もまた、メモリバンクに記憶され得る。
予測実行のこのような中心概念に基づいてRead committedの分離レベルの下でロック方式のシミュレーションを実施するために、本実施形態は、データベース修正型コマンド、またはロックされたデータベース非修正型コマンドのうちの1つに属するデータベース動作コマンドの予測実行によって生成される予測実行データを記録し、ロックされていないデータベース非修正型コマンドに属するデータベース動作コマンドに対応する予測実行データを記録しない。このように、Read committedの分離レベルの下でロック方式が実施されるとき、記録されるデータ量は、比較的小さい。このようにして、処理される必要があるデータの量は、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて、データベースにおける対象トランザクションの実際の実行の後続プロセスの間は、比較的小さく、それによって、実行の効率及び性能のさらなる改善を容易にし、トランザクションのスループットキャパシティを増加させる。
データベースについてのデータベース動作コマンドの動作は、主に、データベース内のデータにアクセスしている。したがって、データベース動作コマンドにおけるデータ環境が、シミュレートされてもよく、データベース動作コマンドの予測実行が、シミュレートされたデータ環境に基づいて行われる。さらに、データベース非修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらさないことを考慮すると、このデータベース動作コマンドについての予測実行は、データベースにおいて直接行われてもよく、それによって、データ環境をシミュレートする動作を省く。その実施態様は、比較的単純であり、それによって、リソースを節約し、実行効率を改善するのに役立つ。一方、データベース修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらすこととなる(主に、データベース内のデータの変更である)ため、シミュレートされたデータ環境が必要であり、予測実行は、シミュレートされたデータ環境において行われる。
上記分析に基づいて、データベース動作コマンドの予測実行を行う手法は、取得されるデータベース動作コマンドの種類を識別することと、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことと、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行すること、及びデータベース動作コマンドの予測実行を行うことと、を含み得る。
さらに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことの実施態様は、取得されたデータベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、実際のデータベースにおいて読み取りコマンドを実行すること、即ち、データベースにおいて読み取りコマンドを実行してリードデータセット(ReadSet)を取得することと、データベース動作コマンドによって必要とされるデータ環境をシミュレートするために、ローカルメモリバンク内にリードデータセットを記憶することと、メモリバンクにおいて書き込みコマンドを適用してデータベース動作コマンドの予測実行を実施すること、即ち、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正すること、例えば、リードデータセット内の関連データを更新または照会することと、を含む。結果データセット(affectRowInMemdb)は、書き込みコマンドを実行してリードデータセットを修正することによって生成され得る。結果データセットは、予測実行結果を含む。
予測実行の上記プロセスにおいて、データベース動作コマンドが、データベース修正型コマンドに属する場合、データベース動作装置は、読み取りコマンドによって読み取られるリードデータセット、及び書き込みコマンドの実行から生成される結果データセットをローカルに記録し得る。このように、予測実行データは、リードデータセット及び結果データセットを含んでもよく、またはリードデータセット及び結果データセット内のデータの一部を含んでもよい。実施例は、データベースにおける対象トランザクションの実際の実行に有益な効果をもたらし得るいくつかのデータを含む。実施例は、第1レベルインデックス、第2レベルインデックス、主キーID、バージョンなどの、いくつかのデータ値の多様なインデックスである。
好ましくは、記録されるデータの量をさらに減少させるために、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみが、予測実行データとして記録される。このようにして、ローカルに記録されているデータベース動作コマンド及び予測実行データに基づく、データベースにおける対象トランザクションの実際の実行の後続プロセスでは、処理される必要があるデータの量が比較的小さく、それによって、実行の効率及び性能をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。さらに、データは、トランザクションプロセス中にいくつかの変更を経て、最後には初期値に戻ることがあってもよい。一方、データの主ID及びバージョンは、変化しない。したがって、データそれ自体を記録する手法が用いられる場合、予測実行が実際の実行と比較されるときに、データが同一ではないことがあり、ロールバックの発生につながる。ロールバックのコストは、比較的大きい。しかしながら、本実施形態は、主キーID及びバージョンのみを記録する手法を採用する。予測実行と実際の実行が比較されるときに、ロールバックが発生する可能性は比較的低く、ロールバックの可能性が低くなる。
対象トランザクション内のトランザクションコミットコマンド(即ち、アプリケーションサーバによって実行されるトランザクションコミットコマンド)を取得することに応答して、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し得る。
アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの、任意の実施態様は、ローカルに記録されたデータベース動作コマンドをデータベース動作装置からデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令すること、及びデータベースから返されるデータベース動作コマンドの実際の実行結果を受信することと、データベース動作コマンドの実際の実行結果を予測実行結果と比較すること、及び実際の実行結果が予測実行結果と同一である場合に、トランザクションコミットコマンドをデータベースに送信することと、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にすることと、を含む。
上記実施態様では、トランザクションの原子性を考慮することによって、トランザクションの実行プロセスにおけるエラーが、実際の実行結果を予測実行結果と比較することによって回避され得る。それによって、トランザクション実行の成功率を改善するのに役立つ。
さらに、トランザクションにおいて実行される必要がある全てのデータベース動作コマンドが、既存技術では予め知られることができないため、データベース動作コマンドは、トランザクションの実行ロジックに従って、逐次的に実行されることしかできない。これは、アプリケーションサーバとデータベースとの間の頻繁なやり取りにつながり、遠隔での適用シナリオでは、大量のネットワークリソースを浪費することになる。一方、本実施形態は、トランザクションにおいて実行される必要がある全てのデータベース動作コマンド、即ち、ローカルに記録されたデータベース動作コマンドを、予測実行のプロセスを通して予め取得した。したがって、ローカルに記録されたデータベース動作コマンドが、データベース動作コマンドを実行するようにデータベースに命令するためにデータベースに送信されるとき、ローカルに記録されたデータベース動作コマンドは、同時に(または組み合わせて)データベースに送信され得る。それによって、ネットワークリソースを節約するのに役立つ。さらに、データベースは、また、いくつかの並行データベース動作コマンドについての並行動作を実行し得る。それによって、トランザクションの実行効率をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。
さらに、全てのローカルに記録されたデータベース動作コマンド及びローカルに記録された予測実行データもまた、共にデータベースに送信されてもよい。
さらに、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの実施態様において、データベース動作装置は、ローカルに記録されたデータベース動作コマンドに基づいて、対象トランザクションが単一機械トランザクションであるかどうかを判断し得る。判断結果が肯定的である場合、データベースは、単一機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。判断結果が否定的である場合、データベースは、分散型機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。
対象トランザクションが、単一機械トランザクションか、または分散型トランザクションかについての識別は、予測実行のプロセスにおいて取得されるデータベース動作コマンドに基づいて行われ得る。例えば、ローカルに記録されたデータベース動作コマンドの動作の対象が、同一の物理デバイスに適用されるかどうかについての判断が行われてもよい。判断結果が肯定的である場合、対象トランザクションは、単一機械トランザクションであるという判断が行われ得る。判断結果が否定的である場合、対象トランザクションは分散型トランザクションであるという判断が行われ得る。
分散型トランザクションの処理ロジックと単一機械トランザクションの処理ロジックは異なる。単一機械トランザクションの処理ロジックは、比較的単純であり(例えば、読み取り及び書き込みのためにロックをかけるといった問題が関係しない)、したがって、それにより消費されるリソースが、比較的少ない。したがって、対象トランザクションが単一機械トランザクションであるかどうかを識別することによって、本実施形態は、分散型処理ロジックを用いて処理を汎用的に行うのではなく、対象トランザクションが、単一機械トランザクションとして識別されるときには、単一機械トランザクション処理ロジックを用いて処理を行う。それによって、処理効率を改善するのに役立ち、処理コストを節約する。
任意の実施態様では、対象トランザクションにおいてトランザクションロールバックコマンドが取得される場合、データベース動作装置は、ローカルに記録されたデータベース動作コマンド及び予測実行データを削除してもよい。例えば、ローカルメモリバンクが、直接的にクリアされ、それによって、ロールバック動作を実施する。この状況では、対象トランザクションは、実際にはデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。このように、この種のトランザクションロールバックの状況においては、トランザクションの実行効率も、本実施形態の方法を用いることによって改善され得る。
上記から分かるように、本実施形態によって提供される方法では、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、予測実行のプロセスにおいて対象トランザクションの実行パス、即ち、実際に実行される必要があるデータベース動作コマンドを予め取得し得る。さらに、Read committed分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、予測実行によって生成される予測実行データは、データベース修正型コマンドに属するデータベース動作コマンドのみについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、記録される。対象トランザクションが、記録されているデータベース動作コマンド及び予測実行データに基づいて実際に実行されるとき、関連データ情報が、予測実行データに基づいて予め取得されてもよく、コマンド間のジャンプが減少され得る。それによって、実行効率が改善し、トランザクションのスループットキャパシティを増加させる。
インベントリを減少させるトランザクションが、本出願の技術的解決法の作業プロセスを詳細に説明するために、ここで一例として使用される。データベースの分離レベルは、Read committedの分離レベルである。
インベントリを減少させるためのSQLコードが、以下のように示されており、丸括弧内に含まれる文字は、注釈である。
begin transaction(トランザクションを開始する。)
select * from inventory where itemId = ? for update(プロダクトIDを使用して現在のインベントリをチェックし、外部表示用にロックをかけるためにfor updateを使用することについてここで注意する。)
if (item.inventory>0)
item.inventory −−;
update inventory set item−inventory = $item.inventory where itemId = ?
commit;
else
rollback;(現在のインベントリが0より大きい場合、減少が行われ、プロダクトインベントリが更新され、コミットメントが行われる。そうでない場合、ロールバックが実行される。)
実際の実行プロセスでは、アプリケーションサーバは、インベントリを減少させるこのようなトランザクションのロジック全体を担当し、データベース動作装置(代替的には、実行サーバと呼ばれてもよい)は、アプリケーションサーバによって実行される開始トランザクション、実行される必要があるSQLステートメント(複数可)、及びコミット/ロールバックコマンドを取得することのみを担当する。
まず、トランザクションが開始された後、データベース動作装置が、ローカルにメモリバンクを作成する。
“select * from inventory where itemId = ? for update”のSQLステートメントを取得すると、データベース動作装置は、このSQLステートメントが、データベースを変更しないことを認識し、したがって、このSQLステートメントを実際のデータベースに対して直接適用する。即ち、データベースにおいてSQLステートメントを実行して、クエリ結果(即ち、リードデータセット)を取得する。データベース動作装置は、全クエリ結果をアプリケーションサーバに返して、実行される必要がある次のSQLステートメントをアプリケーションサーバが判断可能にし、このSQLステートメントをメモリバンクにローカルに記録する。このステートメントはロックがかけられるため、このステートメントの実行に関連するデータは、Read committed分離レベルにおいてでさえも、記録される必要がある。実施態様では、このSQLステートメントによって照会されるデータの主キーID及びバージョンのみが、記録されてもよい。
データベース動作装置によって返されるクエリ結果を受信すると、アプリケーションサーバは、現在のインベントリが0より大きいかどうかを判断する。判断結果が肯定的である場合、現在のインベントリが減少され、updateステートメント、即ち、“update inventory set item−inventory = $item.inventory where itemId = ?”が実行される。判断結果が否定的である場合、rollbackステートメントが実行される。
第1の種類の状況では、アプリケーションサーバは、rollbackステートメントを実行すると考えられ、データベース動作装置は、rollbackステートメントを受信することとなる。rollbackステートメントを取得することに応答して、データベース動作装置は、ローカルメモリバンクをクリアする。それは、主に、以前に記録されたSQLステートメント“select * from inventory where itemId = ? for update”を取り除くことをいう。この種の状況では、トランザクションがデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。
第2の種類の状況では、アプリケーションサーバは、“update inventory set item−inventory = $item.inventory where itemId = ?”のステートメントを実行すると考えられる。“update inventory set item−inventory = $item.inventory where itemId = ?”の、このステートメントを受信すると、データベース動作装置は、このSQLステートメントが、データベースに変更をもたらすこととなると識別し、したがって、このSQLステートメントを読み取りコマンド(即ち、“select * from inventory where itemId = ?”)と、書き込みコマンド(即ち、“update inventory set item−inventory = $item.inventory where itemId = ?”)とに分割する。次いで、データベース動作装置は、“select * from inventory where itemId = ?”のステートメントをデータベースに送信し、リードデータセットを取得し、リードデータセット内のデータをローカルメモリバンクに書き込む。この場合に、リードデータセットは、主キーリスト(itemId)、及び主キーに対応するバージョンを含む。次いで、“update inventory set item−inventory = $item.inventory where itemId = ?”のステートメントに基づいて、更新動作がローカルメモリバンクにおいて実行されて結果データセットを取得し、結果データセットは、アプリケーションサーバに返される。結果データセットは、修正レコード情報、修正されたいくつかのレコードの数に類似の何らかのものであってもよい。例えば、affectRow=1は、1つのレコードが修正されたことを表す。代替的には、結果データセットは、また、修正の詳細情報を記録する修正詳細情報であってもよい。結果データセット及びリードデータセットは、予測実行データを形成する。
アプリケーションサーバは、このときコミットコマンドを実行する。
コミットコマンドを取得すると、データベース動作装置は、ローカルメモリバンク内のSQLステートメント及び予測実行データに基づいて、データベース内のインベントリを減少させるトランザクションを実行する。このときのトランザクション実行プロセスは、実際の実行である。例えば、ローカルに記録されているSQLステートメント及び予測実行データは、以下のように示される。

select * from inventory where itemId = ?
update inventory set item−inventory = $item.inventory where itemId = ?
[readVersion : itemId = xxx and version = xxx / affectRow = 1]
commit()
好ましくは、データベース動作装置は、ローカルメモリバンク内の全てのSQLステートメントを一度にデータベースに提供してもよく、データベースは、それに基づいて実行を行う。これは、SQLステートメントを送信することにより消費されるネットワークリソースを節約することに役立つ。
このときの実際の実行もまた、実行結果を返す。予測実行結果は、実際の実行結果と比較され得る。例えば、これらの2つの結果内の主キーID及びバージョンが、まず比較されてもよく、次いで、2つの結果内のaffectRowが比較される。比較結果が相違を示す場合、コミットは、失敗であると考えられる。この種の状況において、トランザクションがデータベースにおいて全く実際に実行されず、コミットされないため、アプリケーションサーバが再投入を行うことを可能にするために、リクエスト全体が、単純なやり方でロールバックされ得る。
上記の予測実行を通して、実行される必要がある全てのSQLステートメント、及び全てのセグメンテーション状態、値のインデックス、バージョンなどの対応する予測実行データが、取得されている。データのこれらの部分は、トランザクションが単一機械トランザクションかどうかを予め判断するのに十分である。したがって、対応するトランザクション処理ロジックが、処理のために使用されてもよく、それによって、リソースを節約するのに役立つ。
図4は、本出願の別の実施形態によって提供されるデータベース動作方法のフローチャートである。図4に示すように、方法は、以下を含む。
401:アプリケーションサーバによって対象トランザクションを実行するプロセス中に、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを適当な順序で取得する。
402:データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、予測実行により生成される予測実行データを記録する。
403:対象トランザクション内のトランザクションコミットコマンドが取得されるとき、アプリケーションサーバに対応するデータベースを制御して、対象トランザクションを実際に実行する。
本実施形態は、図3に示される実施形態に類似している。その相違点は、データベース修正型コマンドの予測実行によって生成される予測実行データ、及びロックされたデータベース非修正型コマンドの予測実行によって生成される予測実行データを記録するのではなく、対象トランザクション内のロックされたデータベース非修正型コマンドの予測実行によって生成される予測実行データのみを記録することを含む。さらに本実施形態は、ロックされたデータベース非修正型コマンド(複数可)を含む対象トランザクションに適している。動作されるデータベースは、分離レベルがRead committedであるデータベースシナリオだけでなく、他のデータベースシナリオもまた、含んでもよい。
本実施形態において提供される方法が、分離レベルがRead committedであるデータベースにおいて使用される場合、いくつかのデータベースが、デフォルトで分離レベルとしてRead committedを使用しており(Oracleデータベースが、デフォルトで分離レベルとしてRead committedを使用するなど)、いくつかのデータベースは、デフォルトで分離レベルとしてRead committedを使用していない(例えば、MsSQLデータベースは、分離レベルとしてRepeatable readsを使用する)ことを考慮して、データベースの分離レベルがRead committedであるかどうかの判断は、本実施形態において提供される方法を実行する前に行われてもよい。そうでない場合、データベースは、最初に分離レベルがRead committedであるように構成される必要がある。例えば、アプリケーションサーバが対象トランザクションを実行する前に、データベースは、分離レベルとしてRead committedで構成されてもよい。
任意の実施態様では、アプリケーションサーバは、データベースへのアクセスを達成するための既存の手法を用いて、データベース動作コマンドをデータベースに送信する。データベース動作装置は、アプリケーションサーバとデータベースとの間の通信をモニタリングして、アプリケーションサーバからデータベースに送信されるデータベース動作コマンドを傍受してもよい。
別の実施態様では、アプリケーションサーバの処理ロジックが、わずかに修正され、データベース動作コマンドをデータベースへ送信することから、それらをデータベース動作装置へ送信することへと、処理ロジックを変更する。したがって、データベース動作装置は、アプリケーションサーバから能動的に送信されるデータベース動作コマンドを受信し得る。
対象トランザクションが明示トランザクションである場合、対象トランザクション内の最初のコマンドは、Begin Transactionなどのトランザクション開始コマンドであることに、ここで留意する。したがって、アプリケーションサーバにより実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバからデータベースに送信される、対象トランザクション内のトランザクション開始コマンドを傍受してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。代替的には、アプリケーションサーバによって実行されるデータベース動作コマンドを取得する前に、データベース動作装置は、アプリケーションサーバから能動的に送信される、対象トランザクション内のトランザクション開始コマンドを受信してもよく、トランザクション開始コマンドに基づいて対象トランザクション実行の必要性を認識する。対象トランザクションが、暗黙トランザクションである場合、対象トランザクションの最初のコマンドは、データベース動作コマンドであり、トランザクション開始コマンドを取得する手続きは、含まれない。
アプリケーションサーバによって実行されるデータベース動作コマンドを取得した後、データベース動作装置は、取得されたデータベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にする。予測実行結果は、対象トランザクションの実行パスを決定する。ここでの実行パスは、データベース動作コマンド間のジャンプロジックをいう。予測実行結果をアプリケーションサーバに返すことによって、対象トランザクションの実行ロジック全体を制御するためにアプリケーションサーバを有するという目的が達成される。
さらに、データベース動作装置は、また、取得されたデータベース動作コマンドをローカルに記録する必要があり、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドの予測実行によって生成される予測実行データを記録する。データベース修正型コマンドは、update、insertなどで始まるコマンドのように、データベースに変化をもたらすデータベース動作コマンドをいう。概して、selectで始まるコマンドは、データベース修正型コマンドに属しない(データベース非修正型コマンドと呼ばれる)。時には、いくつかのデータベース非修正型コマンドは、トランザクションの一貫性を保証するため、及びロールバックの可能性を減少させるために、for updateステートメントを通じてロックをかける必要がある場合がある。上記振替の例では、例えば、select......for updateの形式でデータベース動作コマンドを形成するように、selectコマンドについてロックがかけられる必要がある。この種のコマンドは、ロックされたデータベース非修正型コマンドと呼ばれ得る。予測実行データは、主に、データベース動作コマンドによって操作されるデータ、ならびにデータの主キーID及び主キーIDに対応するバージョンなどの、データベース動作コマンドについて予測実行を行うプロセスにおける何らかのデータをいう。
同一のデータベース動作コマンドは、データベース修正型コマンド、ロックされたデータベース非修正型コマンド、またはロックされていない非修正動作コマンドに属することに留意すべきである。本実施形態では、対象トランザクション内の全てのロックされたデータベース非修正型コマンドについての予測実行によって生成される予測実行データが、ローカルに記録される。
例えば、データベース動作装置は、メモリバンクをローカルに作成し、取得されたデータベース動作コマンド及び予測実行データをメモリバンクに記憶してもよい。さらに、予測実行データが、予測実行結果(複数可)を含まない場合、予測実行結果(複数可)もまた、メモリバンクに記憶され得る。
予測実行のこのような中心概念に基づいてロック方式のシミュレーションを実施するために、本実施形態は、ロックされたデータベース非修正型コマンドに属するデータベース動作コマンドの予測実行によって生成される予測実行データを記録し、他のデータベース型コマンドに対応する予測実行データを記録しない。このように、下でロック方式が実施されるとき、記録されるデータの量は、比較的小さい。このようにして、処理される必要があるデータの量は、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて、データベースにおける対象トランザクションの実際の実行の後続プロセスの間は、比較的小さく、それによって、実行の効率及び性能のさらなる改善を容易にし、トランザクションのスループットキャパシティを増加させる。
好ましくは、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみが、予測実行データとして記録される。このようにして、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づく、データベースにおける対象トランザクションの実際の実行の後続プロセスでは、処理される必要があるデータの量が比較的小さく、それによって、実行の効率及び性能をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。さらに、データは、トランザクションプロセス中にいくつかの変更を経て、最後には初期値に戻ることがあってもよい。一方、データの主ID及びバージョンは、変化しない。したがって、データそれ自体を記録する手法が用いられる場合、予測実行が実際の実行と比較されるときに、データが同一ではないことがあり、ロールバックの発生につながる。ロールバックのコストは、比較的大きい。しかしながら、本実施形態は、主キーID及びバージョンのみを記録する手法を採用する。予測実行と実際の実行が比較されるときに、ロールバックが発生する可能性は比較的低く、ロールバックの可能性が低くなる。
データベースについてのデータベース動作コマンドの動作は、主に、データベース内のデータにアクセスしている。したがって、データベース動作コマンドにおけるデータ環境が、シミュレートされてもよく、データベース動作コマンドの予測実行が、シミュレートされたデータ環境に基づいて行われる。さらに、データベース非修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらさないことを考慮すると、このデータベース動作コマンドについての予測実行は、データベースにおいて直接行われてもよく、それによって、データ環境をシミュレートする動作を省く。その実施態様は、比較的単純であり、それによって、リソースを節約し、実行効率を改善するのに役立つ。一方、データベース修正型コマンドに属するデータベース動作コマンドは、データベースに変更をもたらすこととなる(主に、データベース内のデータの変更である)ため、シミュレートされたデータ環境が必要であり、予測実行は、シミュレートされたデータ環境において行われる。
上記分析に基づいて、データベース動作コマンドの予測実行を行う手法は、取得されるデータベース動作コマンドの種類を識別することと、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことと、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行すること、及びデータベース動作コマンドの予測実行を行うことと、を含み得る。
さらに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うことの実施態様は、取得されたデータベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、実際のデータベースにおいて読み取りコマンドを実行すること、即ち、データベースにおいて読み取りコマンドを実行してリードデータセット(ReadSet)を取得することと、データベース動作コマンドによって必要とされるデータ環境をシミュレートするために、ローカルメモリバンク内にリードデータセットを記憶することと、メモリバンクにおいて書き込みコマンドを適用してデータベース動作コマンドの予測実行を実施すること、即ち、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正すること、例えば、リードデータセット内の関連データを更新または照会することと、を含む。結果データセット(affectRowInMemdb)は、書き込みコマンドを実行してリードデータセットを修正することによって生成され得る。結果データセットは、予測実行結果を含む。
対象トランザクション内のトランザクションコミットコマンド(即ち、アプリケーションサーバによって実行されるトランザクションコミットコマンド)を取得することに応答して、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行し得る。
アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの任意の実施態様は、ローカルに記録されたデータベース動作コマンドをデータベース動作装置からデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令すること、及びデータベースから返されるデータベース動作コマンドの実際の実行結果を受信することと、データベース動作コマンドの実際の実行結果を予測実行結果と比較すること、及び実際の実行結果が、予測実行結果と同一である場合に、トランザクションコミットコマンドをデータベースに送信することと、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にすることと、を含む。
上記実施態様では、トランザクションの原子性を考慮することによって、トランザクションの実行プロセスにおけるエラーが、実際の実行結果を予測実行結果と比較することによって回避され得る。それによって、トランザクション実行の成功率を改善するのに役立つ。
さらに、トランザクションにおいて実行される必要がある全てのデータベース動作コマンドが、既存技術では予め知られることができないため、データベース動作コマンドは、トランザクションの実行ロジックに従って、逐次的に実行されることしかできない。これは、アプリケーションサーバとデータベースとの間の頻繁なやり取りにつながり、遠隔での適用シナリオでは、大量のネットワークリソースを浪費することになる。一方、本実施形態は、トランザクションにおいて実行される必要がある全てのデータベース動作コマンド、即ち、ローカルに記録されたデータベース動作コマンドを、予測実行のプロセスを通して予め取得した。したがって、ローカルに記録されたデータベース動作コマンドが、データベース動作コマンドを実行するようにデータベースに命令するためにデータベースに送信されるとき、ローカルに記録されたデータベース動作コマンドは、同時に(または組み合わせて)データベースに送信され得る。それによって、ネットワークリソースを節約するのに役立つ。さらに、データベースは、また、いくつかの並行データベース動作コマンドについての並行動作を実行し得る。それによって、トランザクションの実行効率をさらに改善するのに役立ち、トランザクションのスループットキャパシティを増加させる。
さらに、全てのローカルに記録されたデータベース動作コマンド及びローカルに記録された予測実行データもまた、共にデータベースに送信されてもよい。
さらに、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行することの実施態様において、データベース動作装置は、ローカルに記録されたデータベース動作コマンドに基づいて、対象トランザクションが単一機械トランザクションであるかどうかを判断し得る。判断結果が肯定的である場合、データベースは、単一機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。判断結果が否定的である場合、データベースは、分散型機械トランザクション処理ロジックを用いて、対象トランザクションの実際の実行を行うように制御される。
対象トランザクションが、単一機械トランザクションか、または分散型トランザクションかについての識別は、予測実行のプロセスにおいて取得されるデータベース動作コマンドに基づいて行われ得る。例えば、ローカルに記録されたデータベース動作コマンドの動作の対象が、同一の物理デバイスに適用されるかどうかについての判断が行われてもよい。判断結果が肯定的である場合、対象トランザクションは、単一機械トランザクションであるという判断が行われ得る。判断結果が否定的である場合、対象トランザクションは分散型トランザクションであるという判断が行われ得る。
分散型トランザクションの処理ロジックと、単一機械トランザクションの処理ロジックは異なる。単一機械トランザクションの処理ロジックは、比較的単純であり(例えば、読み取り及び書き込みのためにロックをかけるといった問題が関係しない)、したがって、それにより消費されるリソースが、比較的少ない。したがって、対象トランザクションが単一機械トランザクションであるかどうかを識別することによって、本実施形態は、分散型処理ロジックを用いて処理を汎用的に行うのではなく、対象トランザクションが、単一機械トランザクションとして識別されるときには、単一機械トランザクション処理ロジックを用いて処理を行う。それによって、処理効率を改善するのに役立ち、処理コストを節約する。
任意の実施態様では、対象トランザクションにおいてトランザクションロールバックコマンドが取得される場合、データベース動作装置は、ローカルに記録されたデータベース動作コマンド及び予測実行データを削除してもよい。例えば、ローカルメモリバンクが、直接的にクリアされ、これによって、ロールバック動作を実施する。この状況では、対象トランザクションは、実際にはデータベースにおいて実行されなかったため、データベースは、ロールバック動作を実行する必要はない。このように、この種のトランザクションロールバックの状況においては、トランザクションの実行効率も、本実施形態の方法を用いることによって改善され得る。
上記から分かるように、本実施形態によって提供される方法では、データベース動作装置及びアプリケーションサーバは、互いに協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、予測実行のプロセスにおいて対象トランザクションの実行パス、即ち、実際に実行される必要があるデータベース動作コマンドを予め取得し得る。さらに、Read committed分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、予測実行によって生成される予測実行データは、ロックされたデータベース非修正型コマンドのみに属するデータベース動作コマンドについて、記録される。対象トランザクションが、記録されているデータベース動作コマンド及び予測実行データに基づいて実際に実行されるとき、関連データ情報が、予測実行データに基づいて予め取得されてもよく、コマンド間のジャンプが減少され得る。それによって、実行効率が改善し、トランザクションのスループットキャパシティを増加させる。
前述の方法の実施形態は、説明のために一連の動作の組み合わせとして表されていることに留意すべきである。一方、ある動作は、本出願に従って、他の順序で、または並行して実行されてもよいため、本出願は、説明された動作の順序に限定されないことを、当業者は理解すべきである。さらに、本出願において説明された実施形態が好適な実施形態に属することもまた、当業者は、理解すべきである。そこに含まれる動作及びモジュールは、本出願に必須ではない場合がある。
上記実施形態では、多様な実施形態の説明が、異なる焦点を有する。ある実施形態において詳細に説明されていない部分は、他の実施形態の関連する説明を参照されてもよい。
図5は、本出願の別の実施形態によって提供されるデータベース動作装置の概略的な構造図である。図5に示すように、装置は、取得モジュール51、予測実行モジュール52、及び制御実行モジュール53を含み得る。
取得モジュール51は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される。
予測実行モジュール52は、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属する場合に、予測実行により生成される予測実行データを記録するために使用される。
制御実行モジュール53は、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される。
任意の実施態様では、データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属するときに、予測実行によって生成される予測実行データを記録するプロセスにおいて、予測実行モジュール52は、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみを予測実行データとして記録するために使用される。
任意の実施態様では、装置は、対象トランザクションが、アプリケーションサーバによって実行される前に、Read committedの分離レベルでデータベースを構成するために使用される、構成モジュールをさらに含んでもよい。
任意の実施態様では、予測実行モジュール52は、さらに、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行い、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行して、データベース動作コマンドの予測実行を行うために使用される。
さらに、データベース動作コマンドが、データベース修正型コマンドに属するときに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うプロセスにおいて、予測実行モジュール52は、さらに、データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、データベースにおいて読み取りコマンドを実行してリードデータセットを取得し、データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内にリードデータセットを記憶し、メモリバンクにおいて書き込みコマンドを実行してリードデータセットを修正するために使用される。
任意の実施態様では、制御実行モジュール53は、さらに、ローカルに記録されたデータベース動作コマンドをデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令し、データベースから返されるデータベース動作コマンドの実際の実行結果を受信し、実際の実行結果が、予測実行結果と一致する場合に、トランザクションコミットコマンドをデータベースに送信して、データベースが対象トランザクションをコミット可能にし、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にするために使用され得る。
本実施形態により提供されるデータベース動作装置は、アプリケーションサーバと協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、Read committed分離レベルの下でロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、データベース修正型コマンドもしくはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドについて、またはロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行する。それによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
図6は、本出願の別の実施形態によって提供されるデータベース動作装置の概略的な構造図である。図6に示すように、装置は、取得モジュール61、予測実行モジュール62、及び制御実行モジュール63を含み得る。
取得モジュール61は、アプリケーションサーバが対象トランザクションを実行するときに、アプリケーションサーバによって実行される対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される。
予測実行モジュール62は、データベース動作コマンドについて予測実行を行い、予測実行結果をアプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドをアプリケーションサーバが判断可能にし、データベース動作コマンドをローカルに記録し、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、予測実行により生成される予測実行データを記録するために使用される。
制御実行モジュール63は、対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、アプリケーションサーバに対応するデータベースを制御して、ローカルに記録されたデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行するために使用される。
任意の実施態様では、予測実行モジュール62は、さらに、データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属するときに、データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみを予測実行データとして記録するために使用される。
任意の実施態様では、装置は、対象トランザクションが、アプリケーションサーバによって実行される前に、Read committedの分離レベルとしてデータベースを構成するために使用される、構成モジュールをさらに含んでもよい。
任意の実施態様では、予測実行モジュール62は、さらに、データベース動作コマンドが、データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行い、データベース動作コマンドが、データベース非修正型コマンドに属する場合に、データベースにおいてデータベース動作コマンドを実行して、データベース動作コマンドの予測実行を行うために使用される。
さらに、データベース動作コマンドが、データベース修正型コマンドに属するときに、ローカルに作成されたメモリバンクにおいてデータベース動作コマンドのデータ環境をシミュレートし、シミュレートされたデータ環境に基づいてデータベース動作コマンドの予測実行を行うプロセスにおいて、予測実行モジュール62は、さらに、データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、データベースにおいて読み取りコマンドを実行してリードデータセットを取得し、データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内にリードデータセットを記憶し、メモリバンクにおいて書き込みコマンドを実行して、リードデータセットを修正するために使用される。
任意の実施態様では、制御実行モジュール63は、さらに、ローカルに記録されたデータベース動作コマンドをデータベースに送信して、データベース動作コマンドを実行するようにデータベースに命令し、データベースから返されるデータベース動作コマンドの実際の実行結果を受信し、実際の実行結果が、予測実行結果と一致する場合に、トランザクションコミットコマンドをデータベースに送信して、データベースが対象トランザクションをコミット可能にし、実際の実行結果が、予測実行結果と異なる場合に、トランザクションロールバックコマンドをデータベースに送信して、データベースが対象トランザクションをロールバック可能にするために使用され得る。
本実施形態により提供されるデータベース動作装置は、アプリケーションサーバと協調する。アプリケーションサーバが、対象トランザクションを実行するとき、データベース動作装置は、予測実行のプロセスを追加し、対象トランザクションにおいて実行される必要がある全てのデータベース動作コマンドを予め取得及び記録し、ロック方式に適合するため、及びトランザクションの実際の実行に条件を与えるために、ロックされたデータベース非修正型コマンドに属するデータベース動作コマンドのみについて、予測実行によって生成される予測実行データを記録する。次いで、データベース動作装置は、アプリケーションサーバに対応するデータベースを制御して、記録されているデータベース動作コマンド及び予測実行データに基づいて対象トランザクションを実際に実行する。それによって、実行効率の改善を容易にし、トランザクションのスループットキャパシティを増加させる。
上述のシステム、装置、及びユニットの作業プロセスの詳細は、前述の方法の実施形態における対応するプロセスを参照されてもよく、説明の便宜及び単純化のために、ここで繰り返し説明されないことを、当業者は明らかに理解し得る。
本出願により提供される実施形態では、開示されたシステム、装置、及び方法が、他のやり方で実施されてもよいことが、理解され得る。例えば、上述した装置の実施形態は、単なる例示である。例えば、説明された分割ユニットは、単に、論理機能の分割であり、分割の他の方法が、実際の実施態様において存在してもよい。例えば、複数のユニットもしくはコンポーネントが、別のシステムに結合され、もしくは統合されてもよく、または、いくつかの特徴が、無視され、もしくは実行されなくともよい。さらに、表示され、または論じられる相互連結または直接連結もしくは通信接続は、いくつかのインターフェース、装置またはユニットの間接連結または通信接続を通して行われてもよく、電子的、機械的、または他の形態であってもよい。
別々のコンポーネントとして説明されるユニットは、物理的に分離されていてもよく、分離されていなくともよい。ユニットとして表示されるコンポーネントは、物理ユニットであってもなくてもよく、即ち、単一の場所に位置してもよく、または複数のネットワークユニット間に分散されてもよい。ユニットのうちのいくつかまたは全てが、実際の必要性に基づいて、本実施形態の技術的解決法の目的を実施するために選択され得る。
さらに、本出願の実施形態における多様な機能ユニットが、単一の処理ユニットに統合されてもよい。代替的には、多様なユニットが、独立の物理エンティティとして存在してもよい。代替的には、2つ以上のユニットが、単一ユニットに統合されてもよい。上記統合されたユニットが、ハードウェアの形態で実施されてもよく、または、ハードウェア及びソフトウェア機能ユニット(複数可)の形態で実施されてもよい。
上記ソフトウェア機能ユニットの形態で実施される統合されたユニットは、コンピュータ読み取り可能な記憶媒体に記憶されてもよい。ソフトウェア機能ユニットは、記憶媒体に記憶され、コンピューティングデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイスなどであってもよい)、またはプロセッサに、本出願の実施形態の方法のいくつかの動作を実行させるために使用される命令を含む。記憶媒体は、フラスコドライブ、移動可能なハードディスク、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク、または光学ドライブなどの、プログラムコードを記憶し得る多様な媒体を含む。
最後に、上記実施形態は、単に本出願の技術的解決法を説明するために用いられ、それらに対する限定ではないことに留意すべきである。本出願は、前述の実施形態を参照して詳細に説明されているが、当業者は、前述の実施形態において記録される技術的解決法が、修正され得ること、またはその中のいくつかの技術的特徴が、等価に置換され得ることを理解すべきである。これらの修正及び等価な置換は、対応する技術的解決法の本質を、本出願の実施形態の技術的解決法の思想及び範囲から逸脱させるものではない。

Claims (14)

  1. データベース動作装置が、アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、
    前記データベース動作装置が、前記データベース動作コマンドについて予測実行を行うこと、前記データベース動作装置が、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にすること、前記データベース動作装置が、前記データベース動作コマンドをローカルに記録すること、及び前記データベース動作装置が、前記データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属する場合に、前記予測実行により生成される予測実行データを記録することと、
    前記データベース動作装置が、前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することと、
    を含む、データベース動作方法。
  2. 前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属するときに、前記データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみを前記予測実行データとして記録する、請求項1に記載の方法。
  3. 前記対象トランザクションが、前記アプリケーションサーバによって実行される前に、前記データベース動作装置が、Read committedの分離レベルにおいて前記データベースを構成することをさらに含む、請求項1に記載の方法。
  4. 前記データベース動作装置が、前記データベース動作コマンドについて前記予測実行を行うことが、
    前記データベース動作コマンドが、前記データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドのデータ環境をシミュレートすること、及びシミュレートされた前記データ環境に基づいて前記データベース動作コマンドの前記予測実行を行うことと、
    前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属する場合に、前記データベースにおいて前記データベース動作コマンドを実行して、前記データベース動作コマンドの前記予測実行を行うことと、を含む、請求項1に記載の方法。
  5. 前記ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドの前記データ環境をシミュレートすること、及び前記シミュレートされたデータ環境に基づいて前記データベース動作コマンドの前記予測実行を行うことが、
    前記データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割することと、
    前記データベースにおいて前記読み取りコマンドを実行してリードデータセットを取得すること、及び前記データベース動作コマンドの前記データ環境をシミュレートするためにローカルメモリバンク内に前記リードデータセットを記憶することと、
    前記メモリバンクにおいて前記書き込みコマンドを実行して、前記リードデータセットを修正することと、を含む、請求項4に記載の方法。
  6. 前記データベース動作装置が、前記アプリケーションサーバに対応する前記データベースを制御して、前記ローカルに記録されたデータベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することが、
    前記ローカルに記録されたデータベース動作コマンドを前記データベースに送信して、前記データベース動作コマンドを実行するように前記データベースに命令すること、及び前記データベースから返される前記データベース動作コマンドの実際の実行結果を受信することと、
    前記実際の実行結果が、前記予測実行結果と一致する場合に、前記トランザクションコミットコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをコミット可能にすることと、
    前記実際の実行結果が、前記予測実行結果と異なる場合に、トランザクションロールバックコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをロールバック可能にすることと、を含む、請求項1〜5のいずれか1項に記載の方法。
  7. データベース動作装置が、対象トランザクションがアプリケーションサーバによって実行されるときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得することと、
    前記データベース動作装置が、前記データベース動作コマンドについて予測実行を行うこと、前記データベース動作装置が、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にすること、前記データベース動作装置が、前記データベース動作コマンドをローカルに記録すること、及び前記データベース動作装置が、前記データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、前記予測実行により生成される予測実行データを記録することと、
    前記データベース動作装置が、前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行することと、
    を含む、データベース動作方法。
  8. アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、
    前記データベース動作コマンドについて予測実行を行い、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にし、前記データベース動作コマンドをローカルに記録し、前記データベース動作コマンドが、データベース修正型コマンドまたはロックされたデータベース非修正型コマンドのうちの1つに属する場合に、前記予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、
    前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、前記ローカルに記録されたデータベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行するために使用される、制御実行モジュールと、
    を備える、データベース動作装置。
  9. 前記予測実行モジュールは、前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属するときに、前記データベース動作コマンドによって操作されるデータの主キーID及びバージョンのみを前記予測実行データとして記録するために使用される、請求項8に記載の装置。
  10. 前記対象トランザクションが、前記アプリケーションサーバによって実行される前に、Read committedの分離レベルにおいて前記データベースを構成するために使用される、構成モジュールをさらに備える、請求項8に記載の装置。
  11. 前記予測実行モジュールは、
    前記データベース動作コマンドが、前記データベース修正型コマンドに属する場合に、ローカルに作成されたメモリバンクにおいて前記データベース動作コマンドのデータ環境をシミュレートし、シミュレートされた前記データ環境に基づいて前記データベース動作コマンドの前記予測実行を行い、
    前記データベース動作コマンドが、前記ロックされたデータベース非修正型コマンドに属する場合に、前記データベースにおいて前記データベース動作コマンドを実行して、前記データベース動作コマンドの前記予測実行を行うために使用される、請求項8に記載の装置。
  12. 前記予測実行モジュールは、
    前記データベース動作コマンドを読み取りコマンド及び書き込みコマンドに分割し、
    前記データベースにおいて前記読み取りコマンドを実行してリードデータセットを取得し、前記データベース動作コマンドのデータ環境をシミュレートするためにローカルメモリバンク内に前記リードデータセットを記憶し、
    前記メモリバンクにおいて前記書き込みコマンドを実行して、前記リードデータセットを修正するために使用される、請求項11に記載の装置。
  13. 前記制御実行モジュールは、
    前記ローカルに記録されたデータベース動作コマンドを前記データベースに送信して、前記データベース動作コマンドを実行するように前記データベースに命令し、前記データベースから返される前記データベース動作コマンドの実際の実行結果を受信し、
    前記実際の実行結果が、前記予測実行結果と一致する場合に、トランザクションコミットコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをコミット可能にし、
    前記実際の実行結果が、前記予測実行結果と異なる場合に、トランザクションロールバックコマンドを前記データベースに送信して、前記データベースが前記対象トランザクションをロールバック可能にするために使用される、請求項8〜12のいずれか1項に記載の装置。
  14. アプリケーションサーバが対象トランザクションを実行するときに、前記アプリケーションサーバによって実行される前記対象トランザクション内のデータベース動作コマンドを逐次的に取得するために使用される、取得モジュールと、
    前記データベース動作コマンドについて予測実行を行い、予測実行結果を前記アプリケーションサーバに返して、実行される必要がある次のデータベース動作コマンドを前記アプリケーションサーバが判断可能にし、前記データベース動作コマンドをローカルに記録し、前記データベース動作コマンドが、ロックされたデータベース非修正型コマンドに属する場合に、前記予測実行により生成される予測実行データを記録するために使用される、予測実行モジュールと、
    前記対象トランザクション内のトランザクションコミットコマンドを取得することに応答して、前記アプリケーションサーバに対応するデータベースを制御して、ローカルに記録された前記データベース動作コマンド及び前記予測実行データに基づいて前記対象トランザクションを実際に実行するために使用される、制御実行モジュールと、
    を備える、データベース動作装置。
JP2018532425A 2015-12-21 2016-12-13 データベース動作方法及び装置 Active JP6877435B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201510960091.8 2015-12-21
CN201510960091.8A CN106897306B (zh) 2015-12-21 2015-12-21 数据库操作方法及装置
PCT/CN2016/109666 WO2017107811A1 (zh) 2015-12-21 2016-12-13 数据库操作方法及装置

Publications (2)

Publication Number Publication Date
JP2018538634A JP2018538634A (ja) 2018-12-27
JP6877435B2 true JP6877435B2 (ja) 2021-05-26

Family

ID=59089098

Family Applications (1)

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

Country Status (5)

Country Link
US (1) US20180300147A1 (ja)
EP (1) EP3396560B1 (ja)
JP (1) JP6877435B2 (ja)
CN (1) CN106897306B (ja)
WO (1) WO2017107811A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106503027B (zh) * 2015-09-08 2020-02-21 阿里巴巴集团控股有限公司 数据库操作方法及装置
CN109800062B (zh) * 2018-12-25 2020-02-07 星环信息科技(上海)有限公司 一种分布式数据库事务处理系统
CN112541006B (zh) * 2019-09-23 2023-01-06 拉扎斯网络科技(上海)有限公司 数据库命令请求处理方法、装置、电子设备及存储介质
CN111309740A (zh) * 2020-01-16 2020-06-19 中国建设银行股份有限公司 一种数据处理的方法、装置、设备及存储介质
CN112306995B (zh) * 2020-11-11 2023-06-27 北京奥星贝斯科技有限公司 一种数据库操作的实现方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6718349B2 (en) * 2000-12-14 2004-04-06 Borland Software Corporation Intelligent, optimistic concurrency database access scheme
US7529914B2 (en) * 2004-06-30 2009-05-05 Intel Corporation Method and apparatus for speculative execution of uncontended lock instructions
GB0504810D0 (en) * 2005-03-09 2005-04-13 Ibm Commitment chains for conflict resolution between disconnected data sharing applications
CA2657657A1 (en) * 2005-12-02 2007-06-07 International Business Machines Corporation System for improving access efficiency in database and method thereof
CN102306092B (zh) * 2011-07-29 2014-04-09 北京北大众志微系统科技有限责任公司 超标量处理器实现指令缓存路选择的方法及装置
CN103186733B (zh) * 2011-12-30 2016-01-27 中国移动通信集团广东有限公司 数据库用户行为管理系统和数据库用户行为管理方法
CN102662640B (zh) * 2012-04-12 2015-04-01 苏州睿云智芯微电子有限公司 双重分支目标缓冲器和分支目标处理系统及处理方法
CN103838550B (zh) * 2012-11-26 2018-01-02 上海芯豪微电子有限公司 一种分支处理系统和方法
CN104793988B (zh) * 2014-01-20 2019-01-22 阿里巴巴集团控股有限公司 跨数据库分布式事务的实现方法和装置
CN105069703B (zh) * 2015-08-10 2018-08-28 国家电网公司 一种电网海量数据管理方法

Also Published As

Publication number Publication date
CN106897306A (zh) 2017-06-27
WO2017107811A1 (zh) 2017-06-29
CN106897306B (zh) 2019-04-30
EP3396560A4 (en) 2019-06-19
EP3396560B1 (en) 2024-01-31
EP3396560A1 (en) 2018-10-31
US20180300147A1 (en) 2018-10-18
JP2018538634A (ja) 2018-12-27

Similar Documents

Publication Publication Date Title
JP6877435B2 (ja) データベース動作方法及び装置
CN106471489B (zh) 管理具有灵活模式的数据
US11386065B2 (en) Database concurrency control through hash-bucket latching
Schultz et al. Tunable consistency in mongodb
JP6795259B2 (ja) データベーストランザクションを最適化するための方法および装置
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
CN110019251A (zh) 一种数据处理系统、方法及设备
US20090204570A1 (en) Method and apparatus for performing multi-stage table updates
EP3396542B1 (en) Database operating method and device
US10747777B2 (en) Computer system and transaction processing management method
TWI774643B (zh) 資料庫操作方法及裝置
JP5721056B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
US20140149693A1 (en) Packed storage commands
CN106503027B (zh) 数据库操作方法及装置
CN114022148B (zh) 基于区块链的交易冲突检测方法、装置、设备和存储介质
WO2014061847A1 (ko) 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법
TWI805544B (zh) 資料庫操作方法及裝置
TWI790991B (zh) 資料庫操作方法及裝置
TWI735512B (zh) 資料庫操作方法及裝置
TWI725110B (zh) 資料庫操作方法及裝置
KR20140098529A (ko) 데이터에 대한 접근 패턴이 서로 상이한 olap 응용 및 oltp 응용을 동시에 효과적으로 지원하는 장치 및 방법
US11625386B2 (en) Fast skip list purge
JP6263673B2 (ja) 計算機システム及びデータベース管理方法
WO2023088904A1 (en) Loading data in a target database system using different synchronization programs

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: 20201125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201208

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210304

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: 20210330

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210427

R150 Certificate of patent or registration of utility model

Ref document number: 6877435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE

Ref document number: 6877435

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250