JP2020522830A - トランザクション処理方法、装置及びデバイス - Google Patents

トランザクション処理方法、装置及びデバイス Download PDF

Info

Publication number
JP2020522830A
JP2020522830A JP2020517246A JP2020517246A JP2020522830A JP 2020522830 A JP2020522830 A JP 2020522830A JP 2020517246 A JP2020517246 A JP 2020517246A JP 2020517246 A JP2020517246 A JP 2020517246A JP 2020522830 A JP2020522830 A JP 2020522830A
Authority
JP
Japan
Prior art keywords
data
transaction
partition
snapshot
partitions
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.)
Granted
Application number
JP2020517246A
Other languages
English (en)
Other versions
JP6924898B2 (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2020522830A publication Critical patent/JP2020522830A/ja
Application granted granted Critical
Publication of JP6924898B2 publication Critical patent/JP6924898B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1865Transactional file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • G06F11/1451Management of the data involved in backup or backup restore by selection of backup contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1466Management of the backup or restore process to make the backup process non-disruptive
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

この出願は、トランザクション処理方法、装置及びデバイスを提供し、データベース技術の分野に関する。当該方法は、複数パーティショントランザクションを受信するステップであり、複数パーティショントランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである、ステップと、少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットを取得するステップと、少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットに基づいて、複数パーティショントランザクションに対応する操作を実行するステップとを含む。この出願によれば、一貫性を満たすデータスナップショットが、複数パーティショントランザクションに関連するデータパーティションのために取得され、複数パーティショントランザクションに対応する操作が、データスナップショットに基づいて実行される。書き込みトランザクションと読み取りトランザクションとの間のブロックを回避するための、読み取りトランザクションと書き込みトランザクションとの並列実行がサポートされ、それにより、システムスループット及びサービスレベルを改善する。

Description

この出願は、データベース技術の分野に関し、特に、トランザクション処理方法、装置及びデバイスに関する。
データベースのローカルトランザクションに基づく従来の解決策は、単一のサービスに対する一回の処理においてのみ一貫性を確保でき、複数の分散サービスの間で処理の一貫性を確保できない。したがって、多版型同時実行制御(multi-version concurrency control, MVCC)を実現するために、分散サービスに対する処理の間の調整機構が確立される必要がある。
関連技術では、サーバは、複数パーティショントランザクション(トランザクション操作が複数のデータパーティションに関連する)と単一パーティショントランザクション(トランザクション操作が1つのデータパーティションのみに関連する)を区別し、データパーティション毎にトランザクションキューを設定する。トランザクションを受信したとき、サーバは、単一パーティショントランザクションを、対応するデータパーティションのトランザクションキューに追加し、複数パーティショントランザクションを、複数の対応するデータパーティションのトランザクションキューに追加する。トランザクションを処理するとき、サーバは、トランザクションキュー内のトランザクションを1つずつ処理する。データパーティションの間での一貫性を確保するために、サーバは、複数のデータパーティションにおける同じ複数パーティション書き込みトランザクションのために協調処理を実行する。
例えば、図1を参照すると、図1は、関連技術におけるトランザクション処理の概略図を示す。図1において、データパーティション1はトランザクションキュー1に対応し、データパーティション2はトランザクションキュー2に対応する。トランザクションキュー1は2つのトランザクション、すなわち、単一パーティショントランザクション1及び複数パーティショントランザクション2を含み、トランザクションキュー2は2つのトランザクション、すなわち、複数パーティショントランザクション2及び単一パーティショントランザクション3を含む。トランザクション処理プロセスにおいて、サーバは、まず、トランザクションキューに基づいて、キュー1内の単一パーティショントランザクション1とキュー2内の複数パーティショントランザクション2とを抽出する。この場合、サーバは、データパーティション1のための単一パーティショントランザクション1を実行し、データパーティション2のための複数パーティショントランザクション2を実行する。単一パーティショントランザクション1に対する処理を完了した後に、サーバは、トランザクションキュー1内の複数パーティショントランザクション2を抽出する。この場合、データパーティション1のための複数パーティショントランザクション2に対する処理が完了していないので、データパーティション2のための複数パーティショントランザクション2が完了していたとしても、サーバは、キュー2内の単一パーティショントランザクション3を直ちに実行せず、データパーティション2のための複数パーティショントランザクション2が完了した後に単一パーティショントランザクション3を実行する。
複数パーティショントランザクションは、通常では、長いトランザクションであり、通常では、比較的長い時間処理される。単一パーティショントランザクションは、通常では、短いトランザクションであり、比較的短い時間処理される。関連技術では、異なるトランザクションキュー内の同じ複数パーティショントランザクションが異なる処理プロセスを有するとき、複数パーティショントランザクションに対する処理が単一パーティショントランザクションをブロックし、低いシステムスループット及びサービスレベルという結果になり、ユーザ体験に影響を与える。
システムスループット及びサービスレベルを改善するために、この出願の実施形態は、トランザクション処理方法、装置及びデバイスを提供する。
第1の態様によれば、トランザクション処理方法が提供され、当該方法は、
処理対象トランザクションを受信するステップであり、処理対象トランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである、ステップと、少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップと、少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットに基づいて、処理対象トランザクションに対応する操作を実行するステップとを含む。
第1の態様に記載の解決策では、少なくとも2つのデータパーティションに関連する複数パーティショントランザクションについて、一貫性を満たすデータスナップショットが、複数パーティショントランザクションに関連するデータパーティションのために取得され、複数パーティショントランザクションに対応する操作が、データスナップショットに基づいて実行される。書き込みトランザクションと読み取りトランザクションとの間のブロックを回避するための、読み取りトランザクションと書き込みトランザクションとの並列実行がサポートされ、それにより、システムスループット及びサービスレベルを改善する。
可能な設計では、処理対象トランザクションは、少なくとも2つのデータパーティションにおいて読み取り操作を実行するトランザクションである。
可能な設計では、少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップは、少なくとも2つのデータパーティションのそれぞれのデータスナップショットと、少なくとも2つのデータパーティションのそれぞれのデータスナップショットのバージョン情報とを取得するステップと、少なくとも2つのデータパーティションのそれぞれのデータスナップショットのバージョン情報に基づいて、少なくとも2つのデータパーティションのそれぞれのデータスナップショットが一貫性を満たすか否かを検出するステップと、検出結果が、少なくとも2つのデータパーティションのそれぞれのデータスナップショットが一貫性を満たすものである場合、少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットがうまく取得されると決定するステップとを含む。
上記の可能な設計の解決策では、複数パーティショントランザクションに対応するデータスナップショットが取得されるとき、データスナップショットのバージョン情報もまた取得され、一貫性を満たさないスナップショットを取得することを回避するために、複数のデータパーティションにそれぞれ対応するデータスナップショットが一貫性を満たすか否かが、データスナップショットの取得されたバージョン情報に基づいて検査される。
可能な設計では、少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップは、検出結果が、少なくとも2つのデータパーティションのそれぞれのデータスナップショットが一貫性を満たさないものである場合、以前のバージョンを有するデータパーティションのデータスナップショットと、再取得されるデータスナップショットのバージョン情報とを再取得するステップと、再取得されたデータスナップショットのバージョン情報に基づいて、少なくとも2つのデータパーティションのそれぞれのデータスナップショットが一貫性を満たすか否かを検出するステップとを更に含む。
上記の可能な設計の解決策では、取得されたデータスナップショットが一貫性を満たさないとき、以前のデータスナップショットバージョンを有するデータパーティションについて、データパーティション及びバージョン情報に対応するデータスナップショットが再取得され、データスナップショットが一貫性を満たすか否かが更に決定される。
可能な設計では、当該方法は、検出結果が、少なくとも2つのデータパーティションのそれぞれのデータスナップショットが一貫性のないものである場合、以前のバージョンを有するデータパーティションの取得されたデータスナップショットを削除するステップを更に含む。
上記の可能な設計の解決策では、データスナップショットのバージョン情報は、データスナップショットが生成されたときにデータスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子を含み、複数パーティション書き込みトランザクションは、少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションである。
上記の可能な設計の解決策では、一貫性なく書き込まれたデータが複数パーティション読み取り操作中に読み取られることを回避し、データ読み取り精度を確保するために、最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子が、データパーティションのバージョン情報として使用される。
可能な設計では、処理対象トランザクションは、少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットに基づいて、処理対象トランザクションに対応する操作を実行するステップは、
少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショット内の処理対象トランザクションに対応する書き込み操作を実行するステップと、対応するデータパーティションにおけるデータとして、処理対象トランザクションに対応する書き込み操作が実行された後に取得されたデータスナップショットを記憶するステップとを含む。
可能な設計では、処理対象トランザクションは、少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、当該方法は、
処理対象トランザクションに対応する書き込み操作が、少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットに基づいてうまく実行された後に、少なくとも2つのデータパーティションにそれぞれ対応するバージョン情報を処理対象トランザクションの識別子で更新するステップを更に含む。
第2の態様によれば、トランザクション処理装置が提供され、当該装置は、第1の態様及び第1の態様の可能な設計の解決策によるトランザクション処理方法を実現する機能を有する。機能は、ハードウェアを使用することにより実現されてもよく、或いは、対応するソフトウェアを動作させることによりハードウェアにより実現されてもよい。ハードウェア又はソフトウェアは、機能に対応する1つ以上のユニットを含む。
第3の態様によれば、トランザクション処理デバイスが提供され、当該デバイスは、プロセッサと、メモリと、通信インタフェースとを含み、通信インタフェースは、プロセッサにより制御されるように構成され、当該デバイス内のプロセッサは、メモリに記憶されたプログラム又は命令を実行することにより、第1の態様及び第1の態様の可能な設計の解決策によるトランザクション処理方法を実現するように、通信インタフェースを制御する。
第4の態様によれば、コンピュータ読み取り可能記憶媒体が提供され、コンピュータ読み取り可能記憶媒体は、実行可能プログラムを記憶し、実行可能プログラムは、第1の態様及び第1の態様の可能な設計の解決策によるトランザクション処理方法を実現するように、プロセッサにより実行される。
第5の態様によれば、トランザクション処理システムが提供され、当該システムは、トランザクション処理装置と、少なくとも2つのデータパーティションとを含み、トランザクション処理装置は、第1の態様及び第1の態様の可能な設計の解決策によるトランザクション処理方法を実現するように構成される。
関連技術におけるトランザクション処理の概略図である。 この出願の実施形態におけるトランザクション処理システムのアーキテクチャ図である。 この出願の実施形態における複数パーティショントランザクションに対する処理の概略フローチャートである。 この出願の例示的な実施形態によるトランザクション処理方法の方法フローチャートである。 図3に示す実施形態における第2の書き込みトランザクションキューとデータパーティションとの間の対応関係の概略図である。 図3に示す実施形態における第2の読み取りトランザクションキューとデータパーティションとの間の対応関係の概略図である。 図3に示す実施形態における第1のトランザクションキューと特殊パーティションとの間の対応関係の概略図である。 この出願の例示的な実施形態による参加ノードの概略構成図である。 この出願の例示的な実施形態によるトランザクション処理デバイスの概略実現図である。 この出願の例示的な実施形態によるトランザクション処理デバイスの概略実現図である。 この出願の例示的な実施形態によるトランザクション処理デバイスの概略構造図である。 この出願の例示的な実施形態によるトランザクション処理装置の構造ブロック図である。 この出願の例示的な実施形態によるトランザクション処理システムのシステム構成図である。
この出願の目的、技術的解決策及び利点をより明確にするために、以下に、添付の図面を参照してこの出願の実現方式について詳細に更に説明する。
図2Aは、この出願におけるトランザクション処理システムのアーキテクチャ図である。当該システムは、以下のデバイス、すなわち、トランザクション処理デバイス210及び少なくとも1つの端末デバイス220を含む。
トランザクション処理デバイス210は、汎用コンピュータ又はワークステーションでもよく、或いは、トランザクション処理デバイス210は、単一のサーバ、サーバクラスタ、クラウドコンピューティングセンタ等でもよい。
この出願の実施形態では、トランザクション処理デバイス210に対応するデータは、1つ以上のデータパーティションに分割されてもよい。パーティションは連続する値の範囲である。この出願のこの実施形態では、データパーティションは、特定のハッシュ(hash)アルゴリズムに基づいてハッシュ計算がデータフィールド(主キーフィールド又は非主キーフィールド)に対して実行された後に取得される連続区間でもよい。
トランザクション処理デバイス210は、有線又は無線ネットワークを通じて少なくとも1つの端末デバイス220に接続される。
トランザクション処理デバイス210は、少なくとも1つの端末デバイス220により送信されたトランザクションを処理するように構成される。少なくとも1つの端末デバイス220により送信されたトランザクションは、単一パーティショントランザクション又は複数パーティショントランザクションでもよい。他の観点からは、少なくとも1つの端末デバイス220により送信されたトランザクションは、読み取りトランザクション又は書き込みトランザクションでもよい。
実際の用途の中では、同じデータパーティションについて、書き込みトランザクションは、データパーティションに記憶されたデータを変更するが、読み取りトランザクションは、データパーティションに記憶されたデータを変更しない。したがって、書き込みトランザクション及び読み取りトランザクションは、実際には並列に実行できる。したがって、図2Bを参照すると、図2Bは、この出願の実施形態における複数パーティショントランザクションに対する処理の概略フローチャートである。図2Bに示すように、トランザクション処理デバイス210がトランザクションを処理するとき、複数パーティショントランザクションに対する処理のステップは以下の通りである。
ステップ21:処理対象トランザクションを受信し、処理対象トランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである。
ステップ22:少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得する。
ステップ23:少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットに基づいて、処理対象トランザクションに対応する操作を実行する。
具体的には、この出願のこの実施形態では、読み取り操作又は書き込み操作を実行するとき、トランザクション処理デバイスは、データパーティションにおいて操作を直接実行せず、データパーティションに対応するデータスナップショットにおいて操作を実行する。1つのデータパーティションについて、データスナップショットは、1つの書き込みトランザクション及び少なくとも1つの読み取りトランザクションのために同時に提供でき、すなわち、1つの書き込みトランザクションに対する処理及び少なくとも1つの読み取りトランザクションに対する処理が同時にサポートできる。具体的には、データパーティションに対する書き込みトランザクション及び読み取りトランザクションは互いにブロックせず、それにより、システムスループット及びサービスレベルを改善する。
図3は、この出願の例示的な実施形態によるトランザクション処理方法の方法フローチャートである。当該方法は、図1に示すシステム内のトランザクション処理デバイス210に適用されてもよい。図3に示すように、トランザクション処理方法は以下のステップを含んでもよい。
ステップ301:端末デバイスにより送信された処理対象トランザクションを受信し、処理対象トランザクションが複数パーティショントランザクションである場合にはステップ302を実行し、或いは、処理対象トランザクションが単一パーティショントランザクションである場合にはステップ303を実行する。
単一パーティショントランザクションは、単一のデータパーティションにおいて操作を実行するトランザクションであり、複数パーティショントランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである。
より具体的には、単一パーティション読み取りトランザクションは、関連する単一のデータパーティションにおいて読み取り操作を実行するトランザクションであり、単一パーティション書き込みトランザクションは、関連する単一のデータパーティションにおいて書き込み操作を実行するトランザクションである。対応して、複数パーティション読み取りトランザクションは、少なくとも2つの関連するデータパーティションにおいて読み取り操作を実行するトランザクションであり、複数パーティション書き込みトランザクションは、少なくとも2つの関連するデータパーティションにおいて書き込み操作を実行するトランザクションである。
この出願のこの実施形態では、端末デバイスは、トランザクション処理要求をトランザクション処理デバイスに送信してもよく、トランザクション処理要求は、処理対象トランザクションを含む。
トランザクション処理要求は、パーティション指示情報を含んでもよく、パーティション指示情報は、処理対象トランザクションが単一パーティショントランザクションであるか複数パーティショントランザクションであるかを示してもよい。
任意選択で、トランザクション処理要求は、パーティション指示情報を含まなくてもよく、パーティション指示情報は、トランザクション処理要求内のキー情報を解析することにより、トランザクション処理デバイスにより取得されてもよい。
ステップ302:複数パーティショントランザクションのトランザクションタイプに基づいて、複数パーティショントランザクションを第1の読み取りトランザクションキュー又は第1の書き込みトランザクションキューに追加する。
トランザクション処理要求は、トランザクションのトランザクションタイプを更に含んでもよく、或いは、トランザクション処理デバイスは、対応するトランザクションタイプを決定するために、処理対象トランザクションに基づいて分析を実行してもよい。
この出願のこの実施形態におけるトランザクションキューは、2つのレベルのキューに分類されてもよい。複数パーティショントランザクションを受信したとき、トランザクション処理デバイスは、まず、複数パーティショントランザクションを第1レベルのキューに追加し、次いで、その後の並列処理プロセスにおいて、第1レベルのキュー内の複数パーティショントランザクションを第2レベルのキューに追加する。第1レベルのキューは、第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキューである。第2レベルのキューは、各データパーティションに対応する第2の読み取りトランザクションキュー及び第2の書き込みトランザクションキューである。
第1レベルのキューは、第1の読み取りトランザクションキュー及び/又は第1の書き込みトランザクションキューを含む。トランザクション処理デバイスが複数パーティショントランザクションを受信したとき、複数パーティショントランザクションのトランザクションタイプが読み取りトランザクションである場合、複数パーティショントランザクションは、第1の読み取りトランザクションキューに追加される。そうでなく、複数パーティショントランザクションのトランザクションタイプが書き込みトランザクションである場合、複数パーティショントランザクションは、第1の書き込みトランザクションキューに追加される。
ステップ303:単一パーティショントランザクションのトランザクションタイプに基づいて、単一パーティショントランザクションを、対応するデータパーティションの第2の読み取りトランザクションキュー又は第2の書き込みトランザクションキューに追加する。
この出願のこの実施形態では、各データパーティションは、1つの第2の書き込みトランザクションキューのみに対応するが、各第2の書き込みトランザクションキューは、1つ以上のデータパーティションに対応してもよい。トランザクション処理デバイスが単一パーティショントランザクションを受信したとき、単一パーティショントランザクションが書き込みトランザクションである場合、単一パーティショントランザクションは、単一パーティショントランザクションに対応する第2の書き込みトランザクションキューに追加される。
例えば、図4を参照すると、図4は、この出願の実施形態における第2の書き込みトランザクションキューとデータパーティションとの間の対応関係の概略図を示す。図4(a)に示すように、データパーティション1及びデータパーティション2は、同じ第2の書き込みトランザクションキュー(書き込みトランザクションキュー1)に対応してもよい。具体的には、データパーティション1に対する単一パーティション書き込みトランザクションとデータパーティション2に対する単一パーティション書き込みトランザクションとの双方は、書き込みトランザクションキュー1に追加される。代替として、図4(b)に示すように、2つのデータパーティションは、1つの第2の書き込みトランザクションキューにそれぞれ対応してもよい(具体的には、データパーティション1は書き込みトランザクションキュー1に対応し、データパーティション2は書き込みトランザクションキュー2に対応する)。具体的には、データパーティション1に対する単一パーティション書き込みトランザクションは、書き込みトランザクションキュー1に追加され、データパーティション2に対する単一パーティション書き込みトランザクションは、書き込みトランザクションキュー2に追加される。
データパーティションと第2の読み取りトランザクションキューとの間の対応関係は限定されず、1対1、1対多、又は多対多の関係でもよい。トランザクション処理デバイスが単一パーティショントランザクションを受信したとき、単一パーティショントランザクションが読み取りトランザクションである場合、単一パーティショントランザクションは、単一パーティショントランザクションに対応する第2の読み取りトランザクションキューに追加される。単一パーティショントランザクションが複数の第2の読み取りトランザクションキューに対応するとき、単一パーティショントランザクションは、複数の対応する第2の読み取りトランザクションキューのうち1つのみに追加される。
例えば、図5を参照すると、図5は、この出願の実施形態における第2の読み取りトランザクションキューとデータパーティションとの間の対応関係の概略図を示す。図5(a)に示すように、データパーティション1及びデータパーティション2は、同じ第2の読み取りトランザクションキュー(読み取りトランザクションキュー1)に対応してもよい。具体的には、データパーティション1に対する単一パーティション読み取りトランザクションとデータパーティション2に対する単一パーティション読み取りトランザクションとの双方は、読み取りトランザクションキュー1に追加される。代替として、図5(b)に示すように、2つのデータパーティションは、1つの第2の読み取りトランザクションキューにそれぞれ対応してもよい(具体的には、データパーティション1は読み取りトランザクションキュー1に対応し、データパーティション2は読み取りトランザクションキュー2に対応する)。具体的には、データパーティション1に対する単一パーティション読み取りトランザクションは、読み取りトランザクションキュー1に追加され、データパーティション2に対する単一パーティション読み取りトランザクションは、読み取りトランザクションキュー2に追加される。代替として、図5(c)に示すように、データパーティション1は、読み取りトランザクションキュー1と読み取りトランザクションキュー2との双方に対応してもよい。具体的には、データパーティション1に対する単一パーティション読み取りトランザクションは、読み取りトランザクションキュー1又は読み取りトランザクションキュー2に追加されてもよい。代替として、図5(d)に示すように、データパーティション1は、読み取りトランザクションキュー1と読み取りトランザクションキュー2との双方に対応してもよく、データパーティション2もまた、読み取りトランザクションキュー1と読み取りトランザクションキュー2との双方に対応してもよい。具体的には、データパーティション1に対する単一パーティション読み取りトランザクションは、読み取りトランザクションキュー1又は読み取りトランザクションキュー2に追加されてもよく、データパーティション2に対する単一パーティション読み取りトランザクションもまた、読み取りトランザクションキュー1又は読み取りトランザクションキュー2に追加されてもよい。
任意選択で、データパーティションと第1のトランザクションキューとの間に対応関係がないが、第1のトランザクションキューは、特殊フラグを有する特殊パーティションを割り当てられてもよい。特殊パーティションは、データを記憶するために使用されず、特殊パーティションの特殊フラグは、データパーティション又は他の特殊パーティションと区別するために使用される。
図6を参照すると、図6は、この出願の実施形態における第1のトランザクションキューと特殊パーティションとの間の対応関係の概略図を示す。図6(a)に示すように、特殊パーティションは、書き込み特殊パーティションと読み取り特殊パーティションとに分割され、1つの書き込み特殊パーティション及び1つの第1の書き込みトランザクションキューが存在し、これらは1対1の対応関係にある。全ての複数パーティション書き込みトランザクションは、書き込み特殊パーティションに対応する第1の書き込みトランザクションキューに追加される。図6(b)に示すように、1つ以上の第1の読み取りトランザクションキューが存在し(2つが図中に示されている)、各第1の読み取りトランザクションキューは1つの読み取り特殊パーティションに対応する(図に示すように、第1の読み取りトランザクションキュー1は読み取り特殊パーティション1に対応し、第1の読み取りトランザクションキュー2は読み取り特殊パーティション2に対応する)。複数パーティション読み取りトランザクションについて、複数パーティショントランザクションは、第1の読み取りトランザクションキュー1に追加されてもよく、或いは、第1の読み取りトランザクションキュー2に追加されてもよい。
書き込み特殊パーティションに対応する第1の書き込みトランザクションキューは、特殊書き込みキューとして第2の書き込みトランザクションキューに追加されてもよい点に留意すべきである。
同様に、読み取り特殊パーティションに対応する第1の読み取りトランザクションキューは、特殊読み取りキューとして第2の読み取りトランザクションキューに追加されてもよい。
ステップ304:読み取りトランザクションキュー及び書き込みトランザクションキューを並列に処理する。
この出願のこの実施形態では、ステップ302及びステップ303において、トランザクション処理デバイスが読み取りトランザクションキュー及び書き込みトランザクションキューを並列に処理するとき、トランザクション処理デバイスは、同じ書き込みトランザクションキューにおいてトランザクションを直列に処理する。具体的には、書き込みトランザクションキュー内の複数の書き込みトランザクションについて、トランザクション処理デバイスは、前の書き込みトランザクションに対する処理を完了した後にのみ、書き込みトランザクションキューにおいて次の書き込みトランザクションを処理する。トランザクション処理デバイスは、同じ読み取りトランザクションキュー内の読み取りトランザクションを直列に処理してもよく、或いは、トランザクション処理デバイスは、同じ読み取りトランザクションキュー内の読み取りトランザクションを並列に処理してもよい。例えば、読み取りトランザクションキューについて、トランザクション処理デバイスは、複数のスレッドを使用することにより、読み取りトランザクションキュー内の複数の読み取りトランザクションを同時に処理してもよい。
この出願のこの実施形態では、トランザクション処理デバイスは、データスナップショットを使用することによりトランザクションを処理してもよい。さらに、この出願のこの実施形態は、複数パーティション読み取りトランザクション及び複数パーティション書き込みトランザクションに対する処理に関連しており、データ一貫性の原則が複数パーティショントランザクションを処理するプロセスにおいて考慮される必要がある。したがって、この出願のこの実施形態では、トランザクションがデータスナップショットを使用することにより処理されるとき、取得されたデータスナップショットが一貫性を満たすことが確保される必要がある。具体的な処理プロセスは以下の通りでもよい。
1.単一パーティション読み取りトランザクション又は単一パーティション書き込みトランザクションについての処理
単一パーティション読み取りトランザクション又は単一パーティション書き込みトランザクションを処理するとき、トランザクション処理デバイスは、単一パーティション読み取りトランザクション又は単一パーティション書き込みトランザクションに対応するデータパーティションのデータスナップショットを取得し、データスナップショットをうまく取得した後に、データスナップショットに基づいてトランザクションの読み取り又は書き込みを実行してもよい。
具体的には、単一パーティション書き込みトランザクションが処理されるとき、上記のいずれかの第2の書き込みトランザクションキューについて、トランザクション処理デバイスは、第2の書き込みトランザクションキュー内の処理位置に到達する単一パーティション書き込みトランザクションを取得し(例えば、処理位置は、キューのキュー先頭位置でもよい)、単一パーティション書き込みトランザクションに対応するデータパーティションのデータスナップショットを取得し、単一パーティション書き込みトランザクションに対応する書き込みデータを取得されたデータスナップショットに書き込み、対応するデータパーティション内のデータとして、データが書き込まれた後に取得されたデータスナップショットを記憶する。データをデータスナップショットに書き込み、データパーティション内のデータとしてデータスナップショットを記憶するステップは、書き込みトランザクションのコミット(commit)と呼ばれてもよい。
同様に、単一パーティション読み取りトランザクションが処理されるとき、上記のいずれかの第2の読み取りトランザクションキューについて、トランザクション処理デバイスは、第2の読み取りトランザクションキューの処理位置に到達する単一パーティション読み取りトランザクションを取得し、単一パーティション読み取りトランザクションに対応するデータパーティションのデータスナップショットを取得し、取得されたデータスナップショットから単一パーティション読み取りトランザクションに対応するデータを読み取り、読み取られたデータを対応する端末デバイスに送信し、データスナップショットを削除する。
単一パーティショントランザクションは、単一のデータパーティションにのみ関連し、一貫性は、単一のデータパーティションのデータスナップショットについて考慮される必要はない。したがって、この出願のこの実施形態では、処理対象トランザクションが1つのデータパーティションのみに関連するとき、処理対象トランザクションに対応する取得されたデータスナップショットは、確実に一貫性を満たすと考えられてもよい。
2.複数パーティション読み取りトランザクションについての処理
読み取りトランザクションキュー内のいずれかの複数パーティショントランザクションについて、トランザクション処理デバイスは、複数パーティショントランザクションに対応するデータパーティションを決定し、データパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットを取得し、データパーティションのそれぞれのデータスナップショットに対して複数パーティショントランザクションに対応する読み取り操作を実行してもよい。
本発明のこの実施形態では、データパーティションにそれぞれ対応するデータスナップショットが一貫性を満たすことは、データパーティションのうちいずれか2つについて、2つのデータパーティションのデータスナップショットが取得されたとき、2つのデータパーティションの双方に関連する最新の複数パーティション書き込みトランザクションの書き込みが2つのデータパーティションにおいて完了したことを意味する。
具体的には、第1の読み取りトランザクションキュー内の複数パーティショントランザクションについて、トランザクション処理デバイスは、第1の読み取りトランザクションキュー内の処理位置に到達する複数パーティショントランザクションを取得し、取得された複数パーティショントランザクションを、複数パーティショントランザクションに対応する第2の読み取りトランザクションキューに追加してもよい。複数パーティショントランザクションが第2の読み取りトランザクションキュー内の処理位置に到達したとき、トランザクション処理デバイスは、複数パーティショントランザクションに対応するデータパーティションのそれぞれのデータスナップショットを取得する。代替として、第1の読み取りトランザクションキュー内の処理位置に到達する複数パーティショントランザクションを取得した後に、トランザクション処理デバイスは、複数パーティショントランザクションに対応するデータパーティションのそれぞれのデータスナップショットを直接取得してもよい。
複数パーティション読み取りトランザクションは、複数のデータパーティション内のデータに対して読み取り操作を実行することであり、この出願のこの実施形態における読み取りトランザクション及び書き込みトランザクションは並列に処理され、複数パーティション書き込みトランザクションは、異なるデータパーティションについて確実に同じcommit時間を有するとは限らない。したがって、複数パーティション書き込みトランザクションはまた、外部にとって順番に見える可能性があり、特定の時点に、同じ複数パーティション読み取りトランザクションに対応する異なるデータパーティションについて取得されたデータスナップショットは、一貫性を満たさない。この場合、取得されたデータスナップショットに基づいて直接読み取られたデータは、一貫性のないものである可能性がある。したがって、この出願のこの実施形態では、複数パーティション読み取りトランザクションに関連する少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するとき、トランザクション処理デバイスは、少なくとも2つのデータパーティションのそれぞれのデータスナップショットと、少なくとも2つのデータパーティションのそれぞれのデータスナップショットのバージョン情報とを取得し、データパーティションのそれぞれのデータスナップショット内のデータのバージョン情報に基づいて、データパーティションのそれぞれのデータスナップショットが一貫性を満たすか否かを検出し、データパーティションのそれぞれのデータスナップショットが一貫性を満たす場合、データパーティションのそれぞれのデータスナップショットに対して複数パーティショントランザクションに対応する読み取り操作を別々に実行するステップを実行してもよい。そうでなく、データパーティションのそれぞれのデータスナップショットが一貫性を満たさない場合、以前のバージョン(すなわち、最新のバージョンではない)有し且つデータバージョン情報に対応するデータパーティションについて、トランザクション処理デバイスは、以前のデータバージョンを有する取得されたデータスナップショットを削除し、データパーティションのデータスナップショットを再取得し、再取得されたデータスナップショット内のデータのバージョン情報に基づいて、データパーティションのデータスナップショットが一貫性があるか否かを検出する。
この出願のこの実施形態では、データスナップショット内のデータのバージョン情報は、データスナップショットが生成されるときに、データスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティショントランザクション(すなわち、複数パーティション書き込みトランザクション)の識別子を含む。
複数パーティショントランザクションを受信した後に、トランザクション処理デバイスは、対応する識別子を複数パーティショントランザクションに割り当ててもよい。具体的には、複数パーティショントランザクションの識別子は、複数パーティショントランザクションのID又は固有の番号でもよい。
さらに、異なる複数パーティショントランザクション識別子は、異なる複数パーティショントランザクションを処理する順序を区別するために使用されてもよい。例えば、複数パーティショントランザクション識別子はIDである。トランザクション処理デバイスが、トランザクションタイプが書き込みトランザクションである複数パーティショントランザクションにIDを割り当てるとき、複数パーティショントランザクションに割り当てられるIDは1から増加する。より小さいIDを有する複数パーティショントランザクションは、より早く処理され、より早いデータバージョンに対応する。より大きいIDを有する複数パーティショントランザクションは、より遅く処理され、より遅いデータバージョンに対応する。
3.複数パーティション書き込みトランザクションについての処理
書き込みトランザクションキュー内のいずれかの処理対象トランザクション(すなわち、複数パーティション書き込みトランザクション)について、トランザクション処理デバイスは、複数パーティション書き込みトランザクションに対応する少なくとも2つのデータパーティションを決定し、少なくとも2つのデータパーティションのそれぞれのデータスナップショットを取得し、少なくとも2つのデータパーティションのそれぞれのデータスナップショットに対して複数パーティション書き込みトランザクションに対応する書き込み操作を別々に実行し、少なくとも2つのデータパーティションのそれぞれのデータスナップショットに対して書き込み操作を別々に完了した後に、少なくとも2つのデータパーティション内のそれぞれのデータとして、少なくとも2つのデータパーティションのそれぞれのデータスナップショットを記憶してもよい。
この出願のこの実施形態では、トランザクション処理デバイスは、同じ書き込みトランザクションキュー内の書き込みトランザクションを直列に処理する。具体的には、書き込みトランザクションキュー内の複数の書き込みトランザクションについて、トランザクション処理デバイスは、前の書き込みトランザクションに対する処理を完了した後にのみ、書き込みトランザクションキュー内の次の書き込みトランザクションを処理する。すなわち、トランザクション処理デバイスが複数パーティション書き込みトランザクションを処理するとき、複数パーティション書き込みトランザクションに対応する少なくとも2つのデータパーティションのそれぞれに対応する前の書き込みトランザクションに対する処理が完了している。したがって、この場合、少なくとも2つのデータパーティションにそれぞれ対応する取得されたデータスナップショットは、確実に統一性を満たす。具体的には、複数パーティション書き込みトランザクションを処理するとき、トランザクション処理デバイスは、データスナップショットに対応するバージョン情報を使用することにより、取得されたデータスナップショットが統一性を満たすか否かを検出する必要はない。
任意選択で、複数パーティション書き込みトランザクション(すなわち、処理対象トランザクション)に対応する書き込み操作が、少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たすデータスナップショットに基づいてうまく実行された後に、トランザクション処理デバイスは、少なくとも2つのデータパーティションにそれぞれ対応するバージョン情報を処理対象トランザクションの識別子で更に更新する。
具体的には、第1の書き込みトランザクションキュー内の複数パーティション書き込みトランザクションについて、トランザクション処理デバイスは、第1の書き込みトランザクションキュー内の処理位置に到達する複数パーティション書き込みトランザクションを取得し、取得された複数パーティション書き込みトランザクションを、複数パーティション書き込みトランザクションに関連するデータパーティションにそれぞれ対応する第2の書き込みトランザクションキューに追加してもよい。複数パーティション書き込みトランザクションが、データパーティションにそれぞれ対応する第2の書き込みトランザクションキュー内の全ての処理位置に到達したとき、トランザクション処理デバイスは、データパーティションのそれぞれのデータスナップショットを取得する。データパーティションは、処理対象の単一パーティション書き込みトランザクション及び複数パーティション書き込みトランザクションに同時に対応してもよい。データの一貫性がないことを回避するために、書き込みトランザクションが処理されるとき、書き込みトランザクションが単一パーティショントランザクションであるか複数パーティショントランザクションであるかにかかわらず、同じデータパーティションに対応する全ての書き込みトランザクションは直列に処理される必要がある。したがって、この出願のこの実施形態では、第1の書き込みトランザクションキュー内の複数パーティション書き込みトランザクションについて、複数パーティション書き込みトランザクションを処理するとき、トランザクション処理デバイスは、データパーティションのそれぞれの単一パーティション書き込みトランザクションと共に複数パーティション書き込みトランザクションを直列に配列するように、関連するデータパーティションにそれぞれ対応する第2の書き込みトランザクションキューのそれぞれに複数パーティション書き込みトランザクションを追加する。トランザクション処理デバイスは、データパーティションにそれぞれ対応する第2の書き込みトランザクションキューのそれぞれが複数パーティション書き込みトランザクションの実行に至るときにのみ、データパーティションに対応するデータスナップショットを取得して書き込み操作を実行する。代替として、上記のいずれかの第2の書き込みトランザクションキューが複数パーティション書き込みトランザクションの実行に至るとき、トランザクション処理デバイスは、複数パーティション書き込みトランザクションを含む他の第2の書き込みトランザクションキューが複数パーティション書き込みトランザクションの実行に至るのを待機せず、複数パーティション書き込みトランザクションの実行に至る第2の書き込みトランザクションキューに対応するデータパーティションのデータスナップショットを直接取得し、取得されたデータスナップショットにおいて書き込み操作を実行し、複数パーティション書き込みトランザクションに対応する書き込み操作が、複数パーティション書き込みトランザクションに関連する全てのデータパーティションに対応するデータスナップショットにおいて完了した後に、それぞれ対応するデータパーティション内のデータとして、複数パーティション書き込みトランザクションに対応する全ての書き込まれたデータスナップショットを記憶してもよい。
任意選択で、第1の書き込みトランザクションキュー内の複数パーティショントランザクションについて、トランザクション処理デバイスは、第1の書き込みトランザクションキュー内の処理位置に到達する複数パーティショントランザクションを取得し、取得された複数パーティショントランザクションを、書き込み特殊パーティションに対応する第2の書き込みトランザクションキューに追加してもよい。書き込み特殊パーティションに対応する第2の書き込みトランザクションキュー内のトランザクションにスケジューリング(すなわち、処理)が至るとき、トランザクション処理デバイスは、データパーティションのそれぞれのデータスナップショットを取得する。実行されるとき、書き込み特殊パーティションに対応する第2の書き込みトランザクションキュー内のトランザクションは、他のデータパーティションに対する単一パーティション書き込みトランザクションをブロックする。
実際の用途の中では、2つのデータパーティションに対応する第2の書き込みトランザクションキューは、同じキューでもよく、トランザクション処理デバイスは、複数パーティション書き込みトランザクションを、2つのデータパーティションに対応する第2の書き込みトランザクションキューに1回のみ追加する。
結論として、この出願のこの実施形態に記載のトランザクション処理方法によれば、複数パーティショントランザクションに関連するデータパーティションについて、トランザクション処理デバイスは、一貫性を満たすデータスナップショットを取得し、データスナップショットに基づいて、複数パーティショントランザクションに対応する読み取り操作又は書き込み操作を実行する。同じデータパーティションに対応する書き込みトランザクションと読み取りトランザクションとの間のブロックを回避するための、読み取りトランザクションと書き込みトランザクションとの並列実行がサポートされ、それにより、システムスループット及びサービスレベルを改善する。
この出願の実施形態では、図3に対応する実施形態におけるステップは、トランザクション処理デバイス内の異なる機能コンポーネントにより実現されてもよい。これらの機能コンポーネントは、ソフトウェア又はソフトウェアとハードウェアとの組み合わせにより実現される論理機能コンポーネントでもよい。例えば、上記の各機能コンポーネントは、独立した機能ノード(例えば、独立した仮想マシン又はプロセス)でもよく、機能ノードは、トランザクション処理を実現するために互いに相互作用する。
具体的には、例えば、トランザクション処理デバイス内の機能ノードは、2つのタイプに分類されてもよく、これらは、コーディネータノード及び参加ノードと呼ばれてもよい。複数パーティショントランザクションに対する処理を調整することを担う1つのコーディネータノードが存在してもよい。任意選択で、複数のコーディネータノードが存在してもよく、1つのコーディネータノードは、複数パーティション書き込み及び/又は読み取りトランザクションを処理するように構成され、他のコーディネータノードは、複数パーティション読み取りトランザクションを処理することを担うように構成される。具体的には、複数パーティション書き込みのための1つのコーディネータノードのみが存在し、複数パーティション読み取りのための複数のコーディネータノードが存在してもよい。複数の参加ノードが存在してもよく、各参加ノードは、それぞれのデータパーティションに対応し、対応するデータパーティションに関連する単一パーティショントランザクションを独立して処理するか、或いは、コーディネータノードの調整で、対応するデータパーティションに関連する複数パーティショントランザクションを処理することを担う。任意選択で、対応するデータパーティションに加えて、各参加ノードは、書き込み特殊パーティション及び読み取り特殊パーティションを有する。書き込み特殊パーティション及び読み取り特殊パーティションは、コーディネータノードにより分配される複数パーティション書き込みトランザクション及び複数パーティション読み取りトランザクションを処理するために使用される。
コーディネータノードは、図3に示す実施形態における第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキューを管理することを担い、各参加ノードは、1つ以上のそれぞれのデータパーティションに対応する第2の読み取りトランザクションキュー及び第2の書き込みトランザクションキューを担う。
任意選択で、各参加ノードが担う第2の読み取りトランザクションキュー及び第2の書き込みトランザクションキューは、読み取り特殊パーティション及び書き込み特殊パーティションに対応する読み取りキュー及び書き込みキューを更に含む。
参加ノードにより実行されるステップは、3つの機能モジュールによりそれぞれ実現されてもよい。具体的には、図7を参照すると、図7は、この出願の例示的な実施形態による参加ノードの概略構成図である。図7において、参加ノード70は、配列モジュール701と、スケジューリングモジュール702と、記憶エンジン703とを含む。
配列モジュール701は、単一パーティショントランザクションを対応する第2の読み取りトランザクションキュー/第2の書き込みトランザクションキューに追加するステップを実現するように構成される。代替として、配列モジュール701は、配列のために、第1のキュー(第1の書き込みトランザクションキュー及び/又は第1の読み取りトランザクションキューを含む)からコーディネータノードにより分配される複数パーティショントランザクションを、対応する第2のキュー(第2の書き込みトランザクションキュー及び/又は第2の読み取りトランザクションキューを含む)に追加するステップを実現するように構成されてもよい。
スケジューリングモジュール702は、第2の読み取りトランザクションキュー/第2の書き込みトランザクションキュー内のトランザクションに対してスケジューリング処理を実行するステップを実現するように構成される。
記憶エンジン703は、対応するデータパーティションのデータスナップショットを取得、記憶及び削除し、取得されたデータスナップショット内のデータのバージョン情報を維持する機能を実現するように構成される。
任意選択で、各参加ノード70には、1つの記憶エンジン703のみが存在し、参加ノード70は、全体として1つ以上の対応するデータパーティションを使用することにより、読み取り/書き込み処理を実行する。具体的には、トランザクションが処理されるとき、トランザクションが参加ノードに対応するデータパーティションの全てに関連するか否かにかかわらず、記憶エンジン703は、全ての対応するデータパーティションのデータスナップショットを取得し、全てのデータパーティション内のデータは、1つのバージョン情報を共有する。
代替として、参加ノード70上に2つ以上のデータパーティションが存在するとき、参加ノード70に複数の記憶エンジン703が存在してもよく、各記憶エンジン703は、データパーティションのうち1つ以上のデータスナップショット及びバージョン情報を記憶することを担う。トランザクションを処理するとき、参加ノード70は、このノード上のデータパーティション内にあり且つトランザクションに関連するいくつかのデータパーティションのデータスナップショットのみを取得してもよい。
可能な実現シナリオでは、複数のデータパーティションは、同じ第2の書き込みトランザクションキューに対応する。具体的には、複数のデータパーティションに関連する単一パーティション書き込みトランザクション及び複数パーティション書き込みトランザクションは全て、同じ第2の書き込みトランザクションキューに追加される。
任意選択で、コーディネータノードは、参加ノードから独立した機能ノードである。コーディネータノードは、第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキューを管理し、第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキュー内の複数パーティショントランザクションに対する参加ノードによる処理を調整することを担う。
代替として、コーディネータノードはまた、参加ノードでもある。第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキューを管理し、第1の読み取りトランザクションキュー及び第1の書き込みトランザクションキュー内の複数パーティショントランザクションに対する参加ノードによる処理を調整することに加えて、コーディネータノードは、対応する第2の読み取りトランザクションキュー及び第2の書き込みトランザクションキューを管理し、対応する第2の読み取りトランザクションキュー及び第2の書き込みトランザクションキュー内のトランザクションを処理することを担う。
代替として、コーディネータノードはまた、参加ノードでもある。コーディネータノードの第1の書き込みトランザクションキューは、第2の書き込みトランザクションキュー内にあり且つ書き込み特殊パーティションに対応する書き込みトランザクションキューであり、コーディネータノードの第1の読み取りトランザクションキューは、第2の読み取りトランザクションキュー内にあり且つ読み取り特殊パーティションに対応する読み取りトランザクションキューである。複数パーティショントランザクションは、まず、第1のトランザクションキューに追加されてもよく、スケジューリングが複数パーティショントランザクションに至るとき、その場合に、複数パーティショントランザクションは、データパーティションに対応する第2のトランザクションキューに分配される。代替として、任意選択で、複数パーティショントランザクションは、まず、第1のトランザクションキューに追加されてもよく、スケジューリングが複数パーティショントランザクションに至るとき、その場合に、複数パーティショントランザクションは、特殊パーティションに対応する第2のトランザクションキューに分配される。このノードでは、複数パーティショントランザクションが実行位置に到達したと考えられ、要求がこのノードの特殊パーティションの第2のトランザクションキューに追加される必要はない。
代替として、コーディネータノードはまた、参加ノードでもある。コーディネータノードの第1の書き込みトランザクションキューは、ノードの第2の書き込みトランザクションキューと等価であり、コーディネータノードの第1の読み取りトランザクションキューは、ノードの第2の読み取りトランザクションキューと等価である。複数パーティション書き込みトランザクションは、第2の書き込みトランザクションキューでもある各第1の書き込みトランザクションキューに直接追加され、同じ複数パーティション書き込みトランザクションが、第2の書き込みトランザクションキューでもある全ての第1の書き込みトランザクションキューにおいてスケジューリングされたとき、その場合に、要求が第2の書き込みトランザクションキューに分配される。このノードでは、複数パーティション書き込みトランザクションが実行位置に到達したと考えられ、要求がこのノードの全ての第2の書き込みトランザクションキューに追加される必要はない。同様に、複数パーティション読み取りトランザクションは、第2の読み取りトランザクションキューでもある第1の読み取りトランザクションキューに直接追加され、スケジューリングがトランザクションに至るとき、その場合に、要求が第2の読み取りトランザクションキューに分配される。このノードでは、複数パーティション読み取りトランザクションが実行位置に到達したと考えられ、要求がこのノードの第2の読み取りトランザクションキューに追加される必要はない。
図8は、この出願の例示的な実施形態によるトランザクション処理デバイスの概略実現図である。図8において、トランザクション処理デバイス80は、少なくとも1つの参加ノード(参加ノード811及び参加ノード812が図8に示されている)と、コーディネータノードと820を含んでもよい。各参加ノードは、1つ以上のデータパーティションを有する(データパーティション1及びデータパーティション2を有する参加ノード811と、データパーティション3を有する参加ノード812とが図8に示されている)。コーディネータノードは、参加ノードの1つでもよく、或いは、コーディネータノードは、独立したノードでもよい。例えば、各参加ノードは、1つの書き込みトランザクションキュー及び1つの読み取りトランザクションキューに対応する。図8において、コーディネータノード820は、第1の書き込みトランザクションキュー851及び第1の読み取りトランザクションキュー852を管理し、参加ノード811は、第2の書き込みトランザクションキュー831及び第2の読み取りトランザクションキュー832を管理し、参加ノード812は、第2の書き込みトランザクションキュー841及び第2の読み取りトランザクションキュー842を管理する。
図9は、この出願の例示的な実施形態によるトランザクション処理デバイスの概略実現図である。図9において、トランザクション処理デバイス80は、少なくとも1つの参加ノード(参加ノード811及び参加ノード812が図9に示されている)と、少なくとも2つのコーディネータノード820(3つのコーディネータノード820、すなわち、コーディネータノード820-1、コーディネータノード820-2及びコーディネータノード820-3が図9に示されている)とを含んでもよい。各参加ノードは、1つ以上のデータパーティションを有する(データパーティション1及びデータパーティション2を有する参加ノード811と、データパーティション3を有する参加ノード812が図9に示されている)。コーディネータノードは、参加ノードの1つでもよく、或いは、コーディネータノードは、独立したノードでもよい。例えば、各参加ノードは、1つの書き込みトランザクションキュー及び1つの読み取りトランザクションキューに対応する。図9において、3つのコーディネータノード820のそれぞれは、1つの第1の書き込みトランザクションキュー851及び2つの第1の読み取りトランザクションキュー852を管理し(第1の読み取りトランザクションキュー852は第1の読み取りトランザクションキュー852-1及び第1の読み取りトランザクションキュー852-2であり、コーディネータノード820-2は第1の読み取りトランザクションキュー852-1を対応して管理し、コーディネータノード820-3は第1の読み取りトランザクションキュー852-2を対応して管理する)、参加ノード811は、第2の書き込みトランザクションキュー831及び第2の読み取りトランザクションキュー832を管理し、参加ノード812は、第2の書き込みトランザクションキュー841及び第2の読み取りトランザクションキュー842を管理する。
端末デバイスがトランザクション処理要求をトランザクション処理デバイスに送信するとき、単一パーティショントランザクションに対応する要求は、単一パーティショントランザクションに対応する参加ノードに直接送信され、参加ノードは、単一パーティショントランザクションを対応する書き込みトランザクションキュー又は読み取りトランザクションキューに追加する。例えば、図8又は図9において、端末デバイスにより送信されたトランザクション処理要求を受信したとき、参加ノード811は、トランザクション処理要求に対応する単一パーティション書き込みトランザクションを書き込みトランザクションキュー831に追加し、トランザクション処理要求に対応する単一パーティション読み取りトランザクションを読み取りトランザクションキュー832に追加し、端末デバイスにより送信されたトランザクション処理要求を受信したとき、参加ノード812は、トランザクション処理要求に対応する単一パーティション書き込みトランザクションを書き込みトランザクションキュー841に追加し、トランザクション処理要求に対応する単一パーティション読み取りトランザクションを読み取りトランザクションキュー842に追加する。
複数パーティショントランザクションについて、端末デバイスは、対応する要求をコーディネータノード820に送信し、コーディネータノード820は、複数パーティショントランザクションを、コーディネータノード820に対応する書き込みトランザクションキュー又は読み取りトランザクションキューに追加する。具体的には、端末デバイスにより送信されたトランザクション処理要求を受信した後に、コーディネータノード820は、トランザクション処理要求に対応する複数パーティション書き込みトランザクションを書き込みトランザクションキュー851に追加し、トランザクション処理要求に対応する複数パーティション読み取りトランザクションを読み取りトランザクションキュー852に追加する。複数パーティション書き込みトランザクションを書き込みトランザクションキュー851に追加するとき、コーディネータノード820は、トランザクションIDを複数パーティション書き込みトランザクションに割り当ててもよい。
参加ノードによりトランザクションを処理するプロセスは以下の通りでもよい。
1.単一パーティショントランザクションについての処理
単一パーティショントランザクションは、トランザクションに関連するデータパーティションが位置する参加ノードにより処理される。例えば、図8又は図9における参加ノード811を例として使用すると、書き込みトランザクションキュー831を処理するとき、参加ノード811は、1つのスレッドを使用することにより、書き込みトランザクションキュー831内の書き込みトランザクションを直列に処理する。例えば、参加ノード811がキュー順序に基づいて書き込みトランザクションキュー831からデータパーティション1に関連する単一パーティション書き込みトランザクションを抽出した後に、参加ノード811は、データパーティション1のデータスナップショットを取得し、抽出された単一パーティション書き込みトランザクションに対応する書き込みデータを取得されたデータスナップショットに書き込んだ後に、データパーティション1内のデータとして、データが書き込まれた後に取得されたデータスナップショットを記憶する。
読み取りトランザクションキュー832を処理するとき、参加ノード811は、1つのスレッドを使用することにより、読み取りトランザクションキュー832内の単一パーティション読み取りトランザクションを直列に処理する。具体的には、データパーティション1に関連する単一パーティション読み取りトランザクションについて、参加ノード811は、データパーティション1のデータスナップショットを取得し、取得されたデータスナップショットから単一パーティション読み取りトランザクションに対応するデータを読み取り、読み取られたデータを端末デバイスに送信した後に、取得されたデータスナップショットを削除してもよい。
2.複数パーティション書き込みトランザクションについての処理
コーディネータノードは、複数パーティション書き込みトランザクションを処理するために、参加ノードを調整する。例えば、図8又は図9に示すように、コーディネータノード820は、1つのスレッドを使用することにより、書き込みトランザクションキュー851内の複数パーティション書き込みトランザクションを直列に処理する。具体的には、各複数パーティション書き込みトランザクションについて、複数パーティション書き込みトランザクションがデータパーティション1及びデータパーティション3にデータを書き込むためのものであると仮定すると、コーディネータデバイス820は、複数パーティション書き込みトランザクションを参加ノード811及び参加ノード812に別々に送信する。参加ノード811は、複数パーティション書き込みトランザクションを書き込みトランザクションキュー831に追加し、参加ノード812は、複数パーティション書き込みトランザクションを書き込みトランザクションキュー841に追加する。複数パーティション書き込みトランザクションを処理するとき、参加ノード811は、データパーティション1のデータスナップショットを取得し、データスナップショットをうまく取得した後に、取得成功応答をコーディネータノードに返信するか、或いは、データスナップショットを取得するのに失敗した後に、取得失敗応答をコーディネータノードに返信する。同様に、複数パーティション書き込みトランザクションを処理するとき、参加ノード812は、データパーティション3のデータスナップショットを取得し、データスナップショットがうまく取得されたか否かに基づいて、取得成功応答又は取得失敗応答をコーディネータノードに返信する。
コーディネータノード820が、参加ノードの1つにより送信された取得失敗応答を受信した場合、コーディネータノード820は、他の参加ノードに対してうまく取得されたデータスナップショットを削除するように命令するために、スナップショット削除要求を他の参加ノードに送信する。
コーディネータノード820が、参加ノード811及び参加ノード812によりそれぞれ送信された取得成功応答が受信されたと決定した場合、コーディネータノード820は、トランザクション処理指示を参加ノード811及び参加ノード812に別々に送信する。参加ノード811は、データパーティション1に対応するデータスナップショットにデータを書き込み、書き込みが成功したか否かに基づいて、書き込み成功応答又は書き込み失敗応答をコーディネータノード820に返信する。さらに、参加ノード812は、データパーティション3に対応するデータスナップショットにデータを書き込み、書き込みが成功したか否かに基づいて、書き込み成功応答又は書き込み失敗応答をコーディネータノードに返信する。
コーディネータノード820が、参加ノードのうち1つにより送信された書き込み失敗応答を受信した場合、コーディネータノード820は、他の参加ノードに対してうまく書き込まれたデータスナップショットを削除するように命令するために、スナップショット削除要求を他の参加ノードに送信する。
コーディネータノード820が、参加ノード811及び参加ノード812によりそれぞれ送信された書き込み成功応答が受信されたと決定した場合、コーディネータノード820は、コミット指示を参加ノード811及び参加ノード812に別々に送信する。参加ノード811は、データパーティション1内のデータとして、うまく書き込まれたデータスナップショットを記憶し、記憶を完了した後に、データパーティション内1のデータのバージョン番号を複数パーティション書き込みトランザクションのトランザクションIDで更新する。参加ノード812もまた、データパーティション3内のデータとして、うまく書き込まれたデータスナップショットを記憶し、記憶を完了した後に、データパーティション2内のデータのバージョン番号を、複数パーティション書き込みトランザクションのトランザクションIDで更新する。
3.複数パーティション読み取りトランザクションについての処理
コーディネータノードは、複数パーティション読み取りトランザクションを処理するために、参加ノードを調整する。例えば、図8又は図9に示すように、コーディネータノード820は、1つのスレッドを使用することにより、読み取りトランザクションキュー852内の複数パーティション読み取りトランザクションを直列に処理する。具体的には、特定の複数パーティション読み取りトランザクションについて、複数パーティション読み取りトランザクションがデータパーティション1及びデータパーティション3からデータを読み取るためのものであると仮定すると、コーディネータノード820は、スナップショット取得要求を参加ノード811及び参加ノード812に別々に送信する。要求を受信した後に、参加ノード811は、データパーティション1のデータスナップショットを取得し、データスナップショット内のデータのバージョン情報をコーディネータノード820に返信する。データスナップショット内のデータのバージョン情報は、最新のコミットがデータパーティション1において完了した複数パーティション書き込みトランザクションのIDである。対応して、要求を受信した後に、参加ノード812は、データパーティション3のデータスナップショットを取得し、データスナップショット内のデータのバージョン情報をコーディネータノード820に返信する。参加ノード811により送信されたデータパーティション1のデータスナップショット内のデータのバージョン情報と、参加ノード812により送信されたデータパーティション3のデータスナップショット内のデータのバージョン情報とを受信した後に、コーディネータノード820は、バージョン情報に基づいて、データパーティション1のデータスナップショット及びデータパーティション3のデータスナップショットが一貫性を満たすか否かを検出する。
本発明のこの実施形態では、データスナップショットのバージョン情報が、データスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子であるとき、少なくとも2つのデータパーティションにそれぞれ対応するデータスナップショットが一貫性を満たすことは、少なくとも2つのデータパーティションにそれぞれ対応するデータスナップショットのバージョン情報が同じであることを意味してもよい。代替として、少なくとも2つのデータパーティションにそれぞれ対応するデータスナップショットが一貫性を満たすことは、少なくとも2つのデータパーティションのそれぞれについて、データパーティションの取得されたデータスナップショットのバージョン情報がデータパーティションの予め記憶されたバージョン情報と同じであることを意味してもよい。
例えば、コーディネータノード820は、以下の方式で、バージョン情報に基づいて、データパーティション1のデータスナップショット及びデータパーティション3のデータスナップショットが一貫性を満たすか否かを検出してもよい。
(1)データパーティション1及びデータパーティション3が、複数パーティション書き込みが同時に実行される2つのデータパーティションである場合(すなわち、複数パーティション書き込みトランザクションがデータパーティション1に関連するとき、複数パーティション書き込みトランザクションがまた、データパーティション3にも確実に関連する)、コーディネータノード820は、2つのデータパーティションにそれぞれ対応するバージョン情報が同じであるか否かを直接比較してもよい。2つのデータパーティションにそれぞれ対応するバージョン情報が同じである場合、これは、2つのデータパーティションに対応するデータスナップショットが一貫性を満たすことを示す。2つのデータパーティションにそれぞれ対応するバージョン情報が異なる場合、コーディネータノード820は、バージョン情報に基づいて、以前のバージョンを有するデータパーティション(すなわち、最新の完成した複数パーティション書き込みトランザクションのより小さいIDに対応するデータパーティションであり、データパーティションは比較的早いバージョンを有する)を更に決定してもよい。
(2)データパーティション1及びデータパーティション3が、複数パーティション書き込みが同時に実行される2つのデータパーティションでない場合(すなわち、複数パーティション書き込みトランザクションがデータパーティション1に関連するとき、複数パーティション書き込みトランザクションがデータパーティション3に関連しない可能性がある)、この場合、コーディネータノード820は、データパーティションにそれぞれ対応するバージョン情報を維持してもよい。複数パーティション書き込みトランザクションを処理するプロセスにおいて、コミット指示を参加ノードに送信した後に、コーディネータノード820は、コーディネータノード820により維持される、複数パーティション書き込みトランザクションに関連するデータパーティションのバージョン情報を複数パーティション書き込みトランザクションのIDで更新する。対応して、各参加ノードもまた、参加ノードに対応するデータパーティションのバージョン情報を維持する。複数パーティション書き込みトランザクションを処理するプロセスにおいて、参加ノードがコーディネータノード820により送信されたコミット指示を受信し、対応するデータパーティション内のデータとして、書き込みが完了した現在のデータスナップショットをうまく記憶した後に、参加ノードは、参加ノードにより維持される、データパーティションのバージョン情報を複数パーティション書き込みトランザクションのIDに更新する。複数パーティション読み取りトランザクションに対する以降の処理の中で、参加ノードは、複数パーティション読み取りトランザクションに関連するデータパーティションのデータスナップショットを取得し、データスナップショットに対応するバージョン情報をコーディネータノード820に送信する。次いで、コーディネータノード820は、参加ノードにより送信されたバージョン情報を、コーディネータノード820により維持され且つデータパーティションに対応するバージョン情報と比較する。参加ノードにより送信された、複数パーティション読み取りトランザクションに対応するデータスナップショットのバージョン情報が、コーディネータノードにより維持される、対応するデータパーティションのバージョン情報と同じである場合、これは、複数パーティション読み取りトランザクションに対応するデータパーティションの取得されたデータスナップショットが一貫性を満たすことを示す。参加ノードにより送信された、複数パーティション読み取りトランザクションに対応するデータスナップショットのバージョン情報のうち1つ以上のバージョン情報が、コーディネータノードにより維持される、対応するデータパーティションのバージョン情報と異なる場合、1つ以上のバージョン情報に対応するデータスナップショットが以前のバージョンを有すると決定されてもよい。
データパーティション1のデータスナップショット及びデータパーティション3のデータスナップショットが一貫性を満たさないことを検出した場合、コーディネータノード820は、バージョン情報に基づいて、以前のバージョンを有するデータスナップショットに対応する参加ノードを決定し、データスナップショット再取得要求を決定された参加ノードに送信する。データスナップショット再取得要求を受信した後に、参加ノードは、元のデータスナップショットを削除し、データスナップショットを再取得し、再取得されたデータスナップショット内のデータのバージョン情報をコーディネータノード820に返信する。コーディネータノード820は、再取得されたデータスナップショット内のデータのバージョン情報に基づいて、データパーティション1のデータスナップショット及びデータパーティション3のデータスナップショットが一貫性を満たすか否かを更に検出する。
データパーティション1のデータスナップショット及びデータパーティション3のデータスナップショットが一貫性を満たすことを検出した場合、コーディネータノード820は、参加ノード811及び参加ノード812に対して複数パーティション読み取り要求を別々に処理するように命令するために、トランザクション処理指示を参加ノード811及び参加ノード812に別々に送信する。トランザクション処理指示を受信した後に、参加ノード811及び参加ノード812は、取得されたデータスナップショットから複数パーティション読み取り要求に対応するデータを読み取り、読み取りが成功したか否かに基づいて、読み取り成功応答又は読み取り失敗応答をコーディネータノード820に送信する。
参加ノード811及び参加ノード812のいずれかにより送信された読み取り失敗応答を受信した後に、コーディネータノード820は、他の参加ノードに対して取得されたデータスナップショットを削除するように命令するために、スナップショット削除要求を他の参加ノードに送信する。
参加ノード811及び参加ノード812によりそれぞれ送信された読み取り成功応答を受信した後に、コーディネータノード820は、2つの参加ノードに対して取得されたデータスナップショットを削除するように命令するために、スナップショット削除要求を参加ノード811及び参加ノード812に別々に送信する。
図10は、この出願の例示的な実施形態によるトランザクション処理デバイス100の概略構造図である。トランザクション処理デバイス100は、図1に示すネットワーク環境におけるトランザクション処理デバイス210として実現されてもよい。図10に示すように、トランザクション処理デバイス100は、プロセッサ101と、通信インタフェース104とを含んでもよい。
プロセッサ101は、1つ以上の処理ユニットを含んでもよい。処理ユニットは、中央処理装置(central processing unit, CPU)、ネットワークプロセッサ(network processor, NP)等でもよい。
通信インタフェース104は、ネットワークインタフェースを含んでもよい。ネットワークインタフェースは、端末デバイスに接続するように設定される。具体的には、ネットワークインタフェースは、イーサネットインタフェース又はファイバインタフェースのような有線ネットワークインタフェースを含んでもよく、或いは、ネットワークインタフェースは、無線ローカルエリアネットワークインタフェース又はセルラモバイルネットワークインタフェースのような無線ネットワークインタフェースを含んでもよい。トランザクション処理デバイス100は、ネットワークインタフェース104を通じて端末デバイスと通信してもよい。
任意選択で、トランザクション処理デバイス100は、メモリ103を更に含んでもよい。プロセッサ101は、バスを通じてメモリ103及び通信インタフェース104に接続されてもよい。
メモリ103は、ソフトウェアプログラムを記憶するように構成されてもよい。ソフトウェアプログラムは、プロセッサ101により実行されてもよい。さらに、メモリ103は、様々なサービスデータ又はユーザデータを更に記憶してもよい。ソフトウェアプログラムは、トランザクション受信モジュール、スナップショット取得モジュール、実行モジュール、更新モジュール等を含んでもよい。
トランザクション受信モジュールは、図3に示す実施形態において端末デバイスにより送信された複数パーティショントランザクション及び単一パーティショントランザクションを受信する機能を実現するように、プロセッサ101により実行される。
スナップショット取得モジュールは、図3に示す実施形態において一貫性を満たすデータスナップショットを取得する機能を実現するように、プロセッサ101により実行される。
実行モジュールは、図3に示す実施形態において読み取り操作又は書き込み操作を実行する機能を実現するように、プロセッサ101により実行される。
更新モジュールは、図3に示す実施形態においてデータパーティションに対応するデータスナップショット内のデータのバージョン情報を更新する機能を実現するように、プロセッサ101により実行される。
任意選択で、トランザクション処理デバイス100は、出力デバイス105と、入力デバイス107とを更に含んでもよい。出力デバイス105及び入力デバイス107は、プロセッサ101に接続される。出力デバイス105は、情報を表示するように構成されたディスプレイ、音を再生するための電力増幅デバイス、プリンタ等でもよい。出力デバイス105は、表示画面、電力増幅デバイス又はプリンタに出力を提供するための出力コントローラを更に含んでもよい。入力デバイス107は、マウス、キーボード、電子スタイラス又はタッチパネルのような情報を入力するためにユーザにより使用されるデバイスでもよい。入力デバイス107は、マウス、キーボード、電子スタイラス又はタッチパネルのようなデバイスからの入力を受け取って処理するための出力コントローラを更に含んでもよい。
以下は、この出願の装置の実施形態であり、これは、この出願の方法の実施形態を実行するために使用できる。この出願の装置の実施形態に開示されていない詳細については、この出願の方法の実施形態を参照する。
図11は、この出願の例示的な実施形態によるトランザクション処理装置の構造ブロック図である。トランザクション処理装置は、ハードウェア回路又はソフトウェアとハードウェアとの組み合わせを使用することにより、トランザクション処理デバイスの一部又は全部として実現されてもよく、トランザクション処理デバイスは、図2Aに示す実施形態におけるトランザクション処理デバイス210でもよい。トランザクション処理装置は、トランザクション受信ユニット1101と、スナップショット取得ユニット1102と、実行ユニット1103と、更新ユニット1104とを含んでもよい。
トランザクション受信ユニット1101は、図3に示す実施形態において端末デバイスにより送信された複数パーティショントランザクション及び単一パーティショントランザクションを受信する機能を実現するように、プロセッサ81により実行される。
スナップショット取得ユニット1102は、図3に示す実施形態において一貫性を満たすデータスナップショットを取得する機能を実現するように構成される。
実行ユニット1103は、図3に示す実施形態において読み取り操作又は書き込み操作を実行する機能を実現するように構成される。
更新ユニット1104は、図3に示す実施形態においてデータパーティションに対応するデータスナップショット内のデータのバージョン情報を更新する機能を実現するように構成される。
図12は、この出願の例示的な実施形態によるトランザクション処理システムのシステム構成図である。図11に示すように、トランザクション処理システムは、トランザクション処理装置122と、少なくとも2つのデータパーティション124とを含んでもよい。
トランザクション処理装置122は、図11に示すトランザクション処理装置として実現されてもよく、トランザクション処理装置は、図3に示す実施形態におけるトランザクション処理方法を実現するように構成される。
上記の実施形態において提供されるトランザクション処理装置がトランザクション処理を実行するとき、上記の機能ユニットの分割は単なる例である点に留意すべきである。実際の用途では、上記の機能は、必要に応じて実現のために異なる機能ユニットに割り当てられてもよく、すなわち、デバイスの内部構造は、上記の機能の全部又は一部を実現するために、異なる機能ユニットに分割される。さらに、上記の実施形態において提供されるトランザクション処理装置と、トランザクション処理方法の方法の実施形態とは、同じ概念に基づいている。具体的な実現プロセスについては、方法の実施形態を参照し、これは、ここでは再び説明しない。
この出願の上記の実施形態のシーケンス番号は、単に例示の目的のためであり、実施形態の優先度を示すことを意図するものではない。
当業者は、実施形態のステップの全部又は一部がハードウェア又は関連するハードウェアに命令するプログラムにより実現されてもよいことを理解し得る。プログラムは、コンピュータ読み取り可能記憶媒体に記憶されてもよい。記憶媒体は、読み取り専用メモリ、磁気ディスク、光ディスク等を含んでもよい。
上記の説明は、単にこの出願の任意選択の実施形態であり、この出願を限定することを意図するものではない。この出願の真意及び原理から逸脱することなく行われるいずれかの変更、等価置換又は改良は、この出願の保護範囲に含まれるべきである。
図3は、この出願の例示的な実施形態によるトランザクション処理方法の方法フローチャートである。当該方法は、図2Aに示すシステム内のトランザクション処理デバイス210に適用されてもよい。図3に示すように、トランザクション処理方法は以下のステップを含んでもよい。
任意選択で、データパーティションと第1のトランザクションキューとの間に対応関係がないが、第1のトランザクションキューは、特殊フラグを有する特殊パーティションを割り当てられてもよい。特殊パーティションは、データを記憶するために使用されず、特殊パーティションの特殊フラグは、データパーティション又は特殊パーティションと区別するために使用される。
この出願のこの実施形態では、トランザクション処理デバイスは、同じ書き込みトランザクションキュー内の書き込みトランザクションを直列に処理する。具体的には、書き込みトランザクションキュー内の複数の書き込みトランザクションについて、トランザクション処理デバイスは、前の書き込みトランザクションに対する処理を完了した後にのみ、書き込みトランザクションキュー内の次の書き込みトランザクションを処理する。すなわち、トランザクション処理デバイスが複数パーティション書き込みトランザクションを処理するとき、複数パーティション書き込みトランザクションに対応する少なくとも2つのデータパーティションのそれぞれに対応する前の書き込みトランザクションに対する処理が完了している。したがって、この場合、少なくとも2つのデータパーティションにそれぞれ対応する取得されたデータスナップショットは、確実に一貫性を満たす。具体的には、複数パーティション書き込みトランザクションを処理するとき、トランザクション処理デバイスは、データスナップショットに対応するバージョン情報を使用することにより、取得されたデータスナップショットが一貫性を満たすか否かを検出する必要はない。
コーディネータノードは、複数パーティション書き込みトランザクションを処理するために、参加ノードを調整する。例えば、図8又は図9に示すように、コーディネータノード820は、1つのスレッドを使用することにより、書き込みトランザクションキュー851内の複数パーティション書き込みトランザクションを直列に処理する。具体的には、各複数パーティション書き込みトランザクションについて、複数パーティション書き込みトランザクションがデータパーティション1及びデータパーティション3にデータを書き込むためのものであると仮定すると、コーディネータノード820は、複数パーティション書き込みトランザクションを参加ノード811及び参加ノード812に別々に送信する。参加ノード811は、複数パーティション書き込みトランザクションを書き込みトランザクションキュー831に追加し、参加ノード812は、複数パーティション書き込みトランザクションを書き込みトランザクションキュー841に追加する。複数パーティション書き込みトランザクションを処理するとき、参加ノード811は、データパーティション1のデータスナップショットを取得し、データスナップショットをうまく取得した後に、取得成功応答をコーディネータノードに返信するか、或いは、データスナップショットを取得するのに失敗した後に、取得失敗応答をコーディネータノードに返信する。同様に、複数パーティション書き込みトランザクションを処理するとき、参加ノード812は、データパーティション3のデータスナップショットを取得し、データスナップショットがうまく取得されたか否かに基づいて、取得成功応答又は取得失敗応答をコーディネータノードに返信する。
コーディネータノード820が、参加ノード811及び参加ノード812によりそれぞれ送信された書き込み成功応答が受信されたと決定した場合、コーディネータノード820は、コミット指示を参加ノード811及び参加ノード812に別々に送信する。参加ノード811は、データパーティション1内のデータとして、うまく書き込まれたデータスナップショットを記憶し、記憶を完了した後に、データパーティション内1のデータのバージョン番号を複数パーティション書き込みトランザクションのトランザクションIDで更新する。参加ノード812もまた、データパーティション3内のデータとして、うまく書き込まれたデータスナップショットを記憶し、記憶を完了した後に、データパーティション3内のデータのバージョン番号を、複数パーティション書き込みトランザクションのトランザクションIDで更新する。
図10は、この出願の例示的な実施形態によるトランザクション処理デバイス100の概略構造図である。トランザクション処理デバイス100は、図2Aに示すネットワーク環境におけるトランザクション処理デバイス210として実現されてもよい。図10に示すように、トランザクション処理デバイス100は、プロセッサ101と、通信インタフェース104とを含んでもよい。
任意選択で、トランザクション処理デバイス100は、出力デバイス105と、入力デバイス107とを更に含んでもよい。出力デバイス105及び入力デバイス107は、プロセッサ101に接続される。出力デバイス105は、情報を表示するように構成されたディスプレイ、音を再生するための電力増幅デバイス、プリンタ等でもよい。出力デバイス105は、表示画面、電力増幅デバイス又はプリンタに出力を提供するための出力コントローラを更に含んでもよい。入力デバイス107は、マウス、キーボード、電子スタイラス又はタッチパネルのような情報を入力するためにユーザにより使用されるデバイスでもよい。入力デバイス107は、マウス、キーボード、電子スタイラス又はタッチパネルのようなデバイスからの入力を受け取って処理するための入力コントローラを更に含んでもよい。

Claims (26)

  1. トランザクション処理方法であって、
    処理対象トランザクションを受信するステップであり、前記処理対象トランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである、ステップと、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップと、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットに基づいて、前記処理対象トランザクションに対応する前記操作を実行するステップと
    を含む方法。
  2. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて読み取り操作を実行するトランザクションである、請求項1に記載の方法。
  3. 前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップは、
    前記少なくとも2つのデータパーティションのそれぞれのデータスナップショットと、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットのバージョン情報とを取得するステップと、
    前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出するステップと、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすものである場合、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットがうまく取得されると決定するステップと
    を含む、請求項1又は2に記載の方法。
  4. 前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するステップは、
    前記検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たさないものである場合、以前のバージョンを有するデータパーティションのデータスナップショットと、再取得される前記データスナップショットのバージョン情報とを再取得するステップと、
    前記再取得されたデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出するステップと
    を更に含む、請求項3に記載の方法。
  5. 当該方法は、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性のないものである場合、以前のバージョンを有する前記データパーティションの前記取得されたデータスナップショットを削除するステップを更に含む、請求項3又は4に記載の方法。
  6. 前記データスナップショットの前記バージョン情報は、前記データスナップショットが生成されたときに前記データスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子を含み、前記複数パーティション書き込みトランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションである、請求項1乃至5のうちいずれか1項に記載の方法。
  7. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットに基づいて、前記処理対象トランザクションに対応する前記操作を実行するステップは、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショット内の前記処理対象トランザクションに対応する前記書き込み操作を実行するステップと、
    対応するデータパーティションにおけるデータとして、前記処理対象トランザクションに対応する前記書き込み操作が実行された後に取得されたデータスナップショットを記憶するステップと
    を含む、請求項1に記載の方法。
  8. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、当該方法は、
    前記処理対象トランザクションに対応する前記書き込み操作が、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットに基づいてうまく実行された後に、前記少なくとも2つのデータパーティションにそれぞれ対応するバージョン情報を前記処理対象トランザクションの識別子で更新するステップを更に含む、請求項1に記載の方法。
  9. トランザクション処理装置であって、
    処理対象トランザクションを受信するように構成されたトランザクション受信ユニットであり、前記処理対象トランザクションは、少なくとも2つのデータパーティションにおいて操作を実行するトランザクションである、トランザクション受信ユニットと、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得するように構成されたスナップショット取得ユニットと、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットに基づいて、前記処理対象トランザクションに対応する前記操作を実行するように構成された実行ユニットと
    を含む装置。
  10. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて読み取り操作を実行するトランザクションである、請求項9に記載の装置。
  11. 前記スナップショット取得ユニットは、
    前記少なくとも2つのデータパーティションのそれぞれのデータスナップショットと、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットのバージョン情報とを取得し、
    前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出し、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすものである場合、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットがうまく取得されると決定する
    ように構成される、請求項9又は10に記載の装置。
  12. 前記スナップショット取得ユニットは、
    前記検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たさないものである場合、以前のバージョンに対応するデータパーティションのデータスナップショットと、再取得される前記データスナップショットのバージョン情報とを再取得し、
    前記再取得されたデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出する
    ように更に構成される、請求項11に記載の装置。
  13. 前記スナップショット取得ユニットは、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性のないものである場合、以前のバージョンを有する前記データパーティションの前記取得されたデータスナップショットを削除する
    ように更に構成される、請求項11又は12に記載の装置。
  14. 前記データスナップショットの前記バージョン情報は、前記データスナップショットが生成されたときに前記データスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子を含み、前記複数パーティション書き込みトランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションである、請求項9乃至13のうちいずれか1項に記載の装置。
  15. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、前記実行ユニットは、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショット内の前記処理対象トランザクションに対応する前記書き込み操作を実行し、
    対応するデータパーティションにおけるデータとして、前記処理対象トランザクションに対応する前記書き込み操作が実行された後に取得されたデータスナップショットを記憶する
    ように具体的に構成される、請求項9に記載の装置。
  16. 当該装置は、
    前記処理対象トランザクションが前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであるとき、前記処理対象トランザクションに対応する前記書き込み操作が、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットに対してうまく実行された後に、前記少なくとも2つのデータパーティションにそれぞれ対応するバージョン情報を前記処理対象トランザクションの識別子で更新するように構成された更新ユニット
    を更に含む、請求項9に記載の装置。
  17. トランザクション処理デバイスであって、
    当該デバイスは、通信インタフェースと、プロセッサと、メモリとを含み、
    前記メモリは、前記プロセッサにより実行できるプログラム又は命令を記憶し、
    前記プロセッサは、前記プロセッサに記憶された前記プログラム又は前記命令を実行することにより、請求項1乃至8のうちいずれか1項に記載のトランザクション処理方法を実現するように、前記通信インタフェースを制御する、トランザクション処理デバイス。
  18. コンピュータ読み取り可能記憶媒体であって、
    前記コンピュータ読み取り可能記憶媒体は、実行可能プログラムを記憶し、前記実行可能プログラムは、請求項1乃至8のうちいずれか1項に記載のトランザクション処理方法を実現するように、プロセッサにより実行される、コンピュータ読み取り可能記憶媒体。
  19. トランザクション処理システムであって、
    当該システムは、トランザクション処理装置と、少なくとも2つのデータパーティションとを含み、
    前記トランザクション処理装置は、処理対象トランザクションを受信し、前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて操作を実行するトランザクションであり、前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たすデータスナップショットを取得し、前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットに基づいて、前記処理対象トランザクションに対応する前記操作を実行するように構成される、システム。
  20. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて読み取り操作を実行するトランザクションである、請求項19に記載のシステム。
  21. 前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットを取得するとき、前記トランザクション処理装置は、
    前記少なくとも2つのデータパーティションのそれぞれのデータスナップショットと、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットのバージョン情報とを取得し、
    前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出し、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすものである場合、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットがうまく取得されると決定する
    ように具体的に構成される、請求項19又は20に記載のシステム。
  22. 前記トランザクション処理装置は、
    前記検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たさないものである場合、以前のバージョンに対応するデータパーティションのデータスナップショットと、再取得される前記データスナップショットのバージョン情報とを再取得し、
    前記再取得されたデータスナップショットの前記バージョン情報に基づいて、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性を満たすか否かを検出する
    ように更に構成される、請求項21に記載のシステム。
  23. 前記トランザクション処理装置は、
    検出結果が、前記少なくとも2つのデータパーティションの前記それぞれのデータスナップショットが一貫性のないものである場合、以前のバージョンを有する前記データパーティションの前記取得されたデータスナップショットを削除する
    ように更に構成される、請求項21又は22に記載のシステム。
  24. 前記データスナップショットの前記バージョン情報は、前記データスナップショットが生成されたときに前記データスナップショットに対応するデータパーティションへの最新の書き込みを実行する複数パーティション書き込みトランザクションの識別子を含み、前記複数パーティション書き込みトランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションである、請求項19乃至23のうちいずれか1項に記載のシステム。
  25. 前記処理対象トランザクションは、前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであり、前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショットに基づいて、前記処理対象トランザクションに対応する前記操作を実行するとき、前記トランザクション処理装置は、
    前記少なくとも2つのデータパーティションに対応し且つ一貫性を満たす前記データスナップショット内の前記処理対象トランザクションに対応する前記書き込み操作を実行し、対応するデータパーティションにおけるデータとして、前記処理対象トランザクションに対応する前記書き込み操作が実行された後に取得されたデータスナップショットを記憶する
    ように具体的に構成される、請求項19に記載のシステム。
  26. 前記トランザクション処理装置は、
    前記処理対象トランザクションが前記少なくとも2つのデータパーティションにおいて書き込み操作を実行するトランザクションであるとき、前記処理対象トランザクションに対応する前記書き込み操作が、前記少なくとも2つのデータパーティションにそれぞれ対応し且つ一貫性を満たす前記データスナップショットに基づいてうまく実行された後に、前記少なくとも2つのデータパーティションにそれぞれ対応するバージョン情報を前記処理対象トランザクションの識別子で更新する
    ように更に構成される、請求項19に記載のシステム。
JP2020517246A 2017-06-05 2017-06-05 トランザクション処理方法、装置及びデバイス Active JP6924898B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2017/087194 WO2018223262A1 (zh) 2017-06-05 2017-06-05 一种事务处理方法、装置及设备

Publications (2)

Publication Number Publication Date
JP2020522830A true JP2020522830A (ja) 2020-07-30
JP6924898B2 JP6924898B2 (ja) 2021-08-25

Family

ID=64565652

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020517246A Active JP6924898B2 (ja) 2017-06-05 2017-06-05 トランザクション処理方法、装置及びデバイス

Country Status (6)

Country Link
US (1) US20200110739A1 (ja)
EP (1) EP3627359B1 (ja)
JP (1) JP6924898B2 (ja)
KR (1) KR102353141B1 (ja)
CN (1) CN110168514B (ja)
WO (1) WO2018223262A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111475262B (zh) * 2020-04-02 2024-02-06 百度国际科技(深圳)有限公司 区块链中事务请求处理方法、装置、设备和介质

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5287496A (en) * 1991-02-25 1994-02-15 International Business Machines Corporation Dynamic, finite versioning for concurrent transaction and query processing
AU6104800A (en) * 1999-07-16 2001-02-05 Intertrust Technologies Corp. Trusted storage systems and methods
US7334004B2 (en) * 2001-06-01 2008-02-19 Oracle International Corporation Consistent read in a distributed database environment
US8949220B2 (en) * 2003-12-19 2015-02-03 Oracle International Corporation Techniques for managing XML data associated with multiple execution units
US8375290B1 (en) * 2004-02-25 2013-02-12 Avaya Inc. Document version marking and access method and apparatus
US7653665B1 (en) 2004-09-13 2010-01-26 Microsoft Corporation Systems and methods for avoiding database anomalies when maintaining constraints and indexes in presence of snapshot isolation
US8713046B2 (en) 2011-11-08 2014-04-29 Sybase, Inc. Snapshot isolation support for distributed query processing in a shared disk database cluster
US8935205B2 (en) 2011-11-16 2015-01-13 Sap Ag System and method of performing snapshot isolation in distributed databases
CN102819615A (zh) * 2012-08-30 2012-12-12 天津火星科技有限公司 一种基于应用快照的数据库持续数据保护方法
US9098522B2 (en) 2012-11-29 2015-08-04 Sap Se Version garbage collection using snapshot lists
US9411533B2 (en) * 2013-05-23 2016-08-09 Netapp, Inc. Snapshots and versioning of transactional storage class memory
US9632878B1 (en) * 2013-09-20 2017-04-25 Amazon Technologies, Inc. Verification of database table partitions during backup
CN104461768B (zh) * 2013-09-22 2018-08-14 华为技术有限公司 副本存储装置及副本存储方法
US9779128B2 (en) * 2014-04-10 2017-10-03 Futurewei Technologies, Inc. System and method for massively parallel processing database
US9990224B2 (en) * 2015-02-23 2018-06-05 International Business Machines Corporation Relaxing transaction serializability with statement-based data replication
CN106598992B (zh) * 2015-10-15 2020-10-23 南京中兴软件有限责任公司 数据库的操作方法及装置
CN106610876B (zh) * 2015-10-23 2020-11-03 中兴通讯股份有限公司 数据快照的恢复方法及装置
US20170139980A1 (en) * 2015-11-17 2017-05-18 Microsoft Technology Licensing, Llc Multi-version removal manager

Also Published As

Publication number Publication date
CN110168514B (zh) 2022-06-10
EP3627359A1 (en) 2020-03-25
US20200110739A1 (en) 2020-04-09
CN110168514A (zh) 2019-08-23
EP3627359B1 (en) 2023-10-04
KR20200006098A (ko) 2020-01-17
JP6924898B2 (ja) 2021-08-25
EP3627359A4 (en) 2020-04-22
KR102353141B1 (ko) 2022-01-19
WO2018223262A1 (zh) 2018-12-13

Similar Documents

Publication Publication Date Title
JP5191062B2 (ja) ストレージ制御システム、ストレージ制御システムに関する操作方法、データ・キャリア及びコンピュータ・プログラム
WO2018107772A1 (zh) 写入请求处理方法、装置及设备
US10152500B2 (en) Read mostly instances
US9367261B2 (en) Computer system, data management method and data management program
US11544232B2 (en) Efficient transaction log and database processing
US11294934B2 (en) Command processing method and server
US9378078B2 (en) Controlling method, information processing apparatus, storage medium, and method of detecting failure
CN110188114A (zh) 一种数据操作的优化方法、装置、系统、设备和存储介质
EP3722973A1 (en) Data processing method and device for distributed database, storage medium, and electronic device
US10528580B2 (en) Method and mechanism for efficient re-distribution of in-memory columnar units in a clustered RDBMS on topology change
CN110520844A (zh) 云管理平台、虚拟机管理方法及其系统
JP2023541298A (ja) トランザクション処理方法、システム、装置、機器、及びプログラム
CN105373563B (zh) 数据库切换方法及装置
US9607020B1 (en) Data migration system
US8892535B2 (en) Database management method
US10127270B1 (en) Transaction processing using a key-value store
JP6924898B2 (ja) トランザクション処理方法、装置及びデバイス
JP7371087B2 (ja) データ書き込みのための方法及び装置
US10749957B2 (en) Method and apparatus for information management
US9489269B2 (en) Global backup lock manager
CN113505134B (zh) 多线程数据处理方法、多线程底库数据入库方法及装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191218

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210423

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210802

R150 Certificate of patent or registration of utility model

Ref document number: 6924898

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150