WO2018193638A1 - 計算機及びトランザクション処理方法 - Google Patents

計算機及びトランザクション処理方法 Download PDF

Info

Publication number
WO2018193638A1
WO2018193638A1 PCT/JP2017/020122 JP2017020122W WO2018193638A1 WO 2018193638 A1 WO2018193638 A1 WO 2018193638A1 JP 2017020122 W JP2017020122 W JP 2017020122W WO 2018193638 A1 WO2018193638 A1 WO 2018193638A1
Authority
WO
WIPO (PCT)
Prior art keywords
state
information
write request
read
request
Prior art date
Application number
PCT/JP2017/020122
Other languages
English (en)
French (fr)
Inventor
山田 浩之
Original Assignee
株式会社Orb
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 株式会社Orb filed Critical 株式会社Orb
Publication of WO2018193638A1 publication Critical patent/WO2018193638A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Definitions

  • Such a problem can also occur when the target of Tx is an object other than a record.
  • an “object” is a single logical electronic data block viewed from a program such as an application program.
  • a program such as an application program.
  • any of a record, a file, a key-value pair, and a tuple is used.
  • Good a record is taken as an example of an object, and a table is taken as an example of information having a plurality of objects.
  • the Tx manager 111 When the result of RECOVER (S521) is “Committed” (S522: Committed), the Tx manager 111 issues a write request w / LC for writing the record state 414C “Committed” to the Tx table 311 for the previous Tx.
  • RECORDS (FIG. 9) is executed (S523).
  • the target TxID in this COMMIT TX RECORDS is the TxID of the previous Tx.
  • the Tx manager 111 is the write request w / LC for writing the Tx record information in the storage unit 202 to the Tx record for the Tx record that has not been processed in S701 among the Tx records to be processed.
  • the “latest version” is a version after update (after increment) of the previous version, specifically, a version in Tx record information to be written (for example, Tx record information after being read and updated). .
  • the “immediate previous version” is a version in the read Tx record information.
  • the Tx manager 111 determines whether or not the result of S1001 is “Success” (S1002).
  • the Tx manager 111 determines whether or not the retry end condition is satisfied, for example, a predetermined value. It is determined whether or not the time elapses (S1205).

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

計算機は、リニアライザブルコンセンサスを実現するディセントラライズドストレージシステムに対し、状態情報及びトランザクション(Tx)情報のうちの状態情報が有するオブジェクトに処理対象のTxの状態を書き込む。状態情報は、Tx毎のオブジェクト(状態オブジェクト)で構成される。Tx情報は、それぞれがCRUD要求の対象となり得るオブジェクト(Txオブジェクト)で構成される。計算機は、処理対象のTxの対象のうち、少なくとも、CUDが必要とされる各Txオブジェクトについて、上記の状態に応じたライト要求を送信する。

Description

計算機及びトランザクション処理方法
 本発明は、概して、トランザクションの処理に関する。
 一般に、トランザクション(Tx)とは、1以上のCRUD(Create、Read、Update又はDelete)要求から成り、Tx処理では、1以上のレコード(典型的には2以上のレコード)に対してACID(Atomicity、Consistency、Isolation及びDurability)性を保証しつつCRUD要求を実行する必要がある。
 また、トランザクションシステム(Tx処理を行うシステム)は、1以上のテーブルを格納するストレージシステムと、そのストレージシステムと通信可能な複数のクライアント計算機とを含む。複数のクライアント計算機が、並行して、その1以上のテーブルに対する複数のTx処理を実行することがあり得る。
 一般に、トランザクションシステムのアーキテクチャにおいては、マスターノードと1以上のスレーブノードとを含んだマスター/スレーブ型のアーキテクチャが採用される。マスターノードが全てのTx処理の状態を管理できるので、複数のレコードに対してACID性を保証しつつCRUD要求を実行するトランザクションシステムの実現が容易のためである。マスター/スレーブ型のトランザクションシステムとして、例えば、非特許文献1に開示のシステムがある。
https://static.googleusercontent.com/media/research.google.com/ja//archive/spanner-osdi2012.pdf
 非特許文献1に開示のようなマスター/スレーブ型のトランザクションシステムを実現することは可能である。しかし、実現できるアプリケーションの範囲が必ずしも広くない。例えば、複数の主体が平等に使用、管理及び運用するトランザクションシステムをマスター/スレーブアーキテクチャで実現することは困難である。加えて、マスターノードが常に固定であるため、アベーラビリティ及びスケーラビリティが必ずしも高くない。
 このような課題は、Txの対象がレコード以外のオブジェクトの場合にもあり得る。
 そこで、特定のノードに依らずTx処理を実現するディセントラライズドなトランザクションシステムが考えられる。本発明の一形態では、既存のディセントラライズドストレージシステムと、クライアント計算機において実現される新しいTx管理機構との組合せにより、ディセントラライズドなトランザクションシステムを実現する。
 具体的には、例えば、下記の通りである。
 通常、ディセントラライズドストレージシステムでは、オブジェクトは、複数のストレージノードにレプリカとして分散し、その複数のレプリカが1つの論理的なオブジェクトとして管理される。従って、ディセントラライズドストレージシステムは、1以上の論理的なオブジェクトから成る論理的な情報Xを管理できる。物理的には、論理的なオブジェクト毎に、オブジェクト(レプリカ)は、複数のストレージノードに分散しており、典型的には、ストレージノード間で、存在するオブジェクト(レプリカ)は異なる。なぜなら、通常、論理的なオブジェクト毎に、オブジェクト(レプリカ)の分散先となるストレージノードが異なるからである。例えば、ディセントラライズドストレージシステムがストレージノード1~5から構成されていて、論理的な情報Xが論理的なオブジェクトA~Cから構成されているとする。オブジェクトAが、ストレージノード1~3にのみ分散していて、オブジェクトBが、ストレージ2~4にのみ分散していて、オブジェクトCが、ストレージ3~5にのみ分散していることがあり得る。この場合、ストレージノード3のみが、情報Xを構成する全てのオブジェクト(レプリカ)A~Cを有するが、ストレージノード3以外のストレージノード1、2、4及び5の各々は、オブジェクトA~Cのうちの一部のオブジェクトしか有しない。
 ディセントラライズドストレージシステムは、リニアライザブルコンセンサスを実現する機能を有するものとする。リニアライザブルコンセンサスでは、CRUD(Create、Read、Update又はDelete)のいずれも特定の条件の下でアトミックに実行することが、1つの論理的なオブジェクトについて保証されているものの、2以上の論理的なオブジェクトについて保証されていない。以下の説明では、「オブジェクト」は、特段の記載が無い限り、「論理的なオブジェクト」を意味する。また、以下の説明において、CRUDに関し、「書込み」は、Read以外(Create、Update及びDelete)のうちのいずれかを意味する。
 そこで、クライアント計算機(ディセントラライズドストレージシステムと通信可能に接続されている計算機)で、クライアントによるTx管理のためのコンピュータプログラムであるTxマネージャ(Tx管理機構の一例)が実行される。また、ディセントラライズドストレージシステムに、Txの対象となるTx情報に加えて、Txの状態を管理するための情報である状態情報が、例えばTxマネージャにより格納される。
 Txマネージャは、状態オブジェクトに処理対象のTxであるカレントTxの状態を書き込むためのライト要求をディセントラライズドストレージシステムに対して送信する(状態オブジェクトは、状態情報を構成する1以上のオブジェクトのうちのいずれかである)。Txマネージャは、カレントTxの対象のうち、少なくとも、CUD(Create、Update又はDelete)が必要とされる各Txオブジェクトについて、上記のライト要求に従う状態に応じたライト要求を、ディセントラライズドストレージシステムに対して送信する(Txオブジェクトは、Tx情報を構成する1以上のオブジェクトのうちのいずれかである)。
 以上の結果、ディセントラライズトトランザクションシステム、すなわち、特定のノードによらず(つまり非中央管理型で)Tx処理を行うトランザクションシステムが実現される。なお、ディセントラライズドストレージシステムでは、典型的には、ソフトウェア(プログラム)とハードウェア(例えばCPU及びメモリ)とが協働してリニアライザブルコンセンサスが実現されるが、複数のストレージノードが有する複数の専用ハードウェアによりリニアライザブルコンセンサスが実現されてもよい。
 マスター/スレーブ型のトランザクションシステムに比べて、実現できるアプリケーションの範囲が広く、かつ、アベーラビリティ及びスケーラビリティが高いディセントラライズドなトランザクションシステムを実現することができる。
実施例1に係るトランザクションシステムの構成を示す。 クライアント計算機の構成を示す。 ストレージノードの構成を示す。 Txテーブル及び状態テーブルの各々の構成を示す。 Tx処理の一例の全体の流れを示す。 図5に例示のTx処理に関しクライアント計算機とディセントラライズドストレージシステム間でのやり取りを示す。 PREPAREの流れを示す。 COMMIT STATE RECORDの流れを示す。 COMMIT TX RECORDSの流れを示す。 ABORT STATE RECORDの流れを示す。 ABORT TX RECORDSの流れを示す。 RECOVERの流れを示す。 実施例2に係るTx処理の一例の流れの一部を示す。 実施例2に係るPREPAREの流れの一部を示す。
 以下、本発明の幾つかの実施例を説明する。
 また、以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種の通信インターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
 また、以下の説明では、「記憶部」は、1以上のメモリを含む。記憶部に関して少なくとも1つのメモリは、揮発性メモリでよい。記憶部は、主に、プロセッサ部による処理の際に使用される。記憶部は、メモリの他に、1以上の不揮発性の記憶デバイス(例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive))を含んでもよい。
 また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサである。1以上のプロセッサの各々は、シングルコアでもよいしマルチコアでもよい。プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。
 また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ部によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェース部(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)又はASIC(Application Specific Integrated Circuit))を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
 また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。
 また、以下の説明では、「オブジェクト」とは、アプリケーションプログラムのようなプログラムから見た1つの論理的な電子データの塊であり、例えば、レコード、ファイル、キーバリューペア及びタプルのうちのいずれでもよい。以下、オブジェクトとして、レコードを例に取り、複数のオブジェクトを有する情報として、テーブルを例に取る。
 図1は、実施例1に係るトランザクションシステムの構成を示す。
 トランザクションシステムにおいて、Tx処理におけるCRUD(Create、Read、Update又はDelete)要求の対象となるテーブルを格納するストレージシステムとして、本実施例では、リニアライザブルコンセンサスを実現するディセントラライズドストレージシステム103が採用される。
 ディセントラライズドストレージシステム103は、典型的には、複数のストレージノード105で構成された分散コンセンサスを可能とするシステムである。各ストレージノード105は、例えば、P2P(Pier to Pier)ネットワークに参加したP2Pノード(P2Pネットワークの構成要素)でよい。ディセントラライズドストレージシステム103において、通常、ストレージノード105の数は制限されず、ストレージノード105間は遠距離でも近距離でもよく、且つ、ストレージノード105間でマスター/スレーブの関係は無い(言い換えれば平等である)。
 下記の要素を有する装置であれば、どのような装置も、ストレージノード105となり得る。このため、ストレージノード105は、プロセッサと記憶装置(少なくとも不揮発性の記憶装置)を有する装置、例えば、汎用計算機であってもよいし、複数の不揮発記憶デバイスを有するストレージ装置でもよいし、スマートフォンのような小型の装置でもよい。また、全てのストレージノード105の仕様(例えば、プロセッサ数や記憶容量といったリソース量)が同じである必要もない。
・1以上のレコード(レプリカ)を格納する機能。
・CRUD要求に応答して、リニアライザブルコンセンサスの下でCRUD要求を実行する機能。
 各ストレージノード105は、分散コンセンサスアルゴリズム(プロトコル)(例えば、Paxos、Raft又はその拡張)で、そのストレージノード105以外のストレージノード105と通信する。これにより、CRUDのいずれも特定の条件の下でアトミックに実行することが、1つの論理的なオブジェクトについて保証されているリニアライザブルコンセンサスが実現される。
 このようなディセントラライズドストレージシステム103におけるいずれのストレージノード105にも、各クライアント計算機101はアクセス可能である。クライアント計算機101は、1つのTxの処理のために、ディセントラライズドストレージシステム103に対して複数の要求(例えばリード要求又はライト要求)を発行するが、そのTxについて、複数の要求の発行先は常に同一のストレージノード105であってもよいし、要求によって発行先のストレージノード105は異なってもよい。複数のクライアント計算機101は、複数の物理的な計算機でもよいし、少なくとも1つの物理的な計算機により実行される複数の仮想的な計算機(例えばVM(Virtual Machine))でもよいし、物理的な計算機と仮想的な計算機の混在でもよい。物理的な計算機は、プロセッサと記憶装置(例えばメモリ)を有する装置であり、例えば、汎用計算機でもよいし、アプリケーションサーバ装置のようなサーバ装置でもよいし、スマートフォンのような小型の装置でもよい。本実施例では、各クライアント計算機101は、物理的な計算機であるとする。
 本実施例では、各クライアント計算機105に、Txマネージャ111がインストールされる。Txマネージャ111は、Txの指示元(例えばアプリケーションプログラム)とストレージノード105との間のやり取りを調整するコンピュータプログラムである。ディセントラライズドストレージシステム103をはじめとする分散ストレージシステムにおいては、リニアライザブル(特定の条件の下でアトミック)な書き込みの失敗をリアルタイムに検知すること(別の言い方をすれば、書き込みが失敗なのか遅いのかを区別すること)は困難である。そこで、Txマネージャ111は、レイジーリカバリ処理を実行する。「レイジーリカバリ処理」とは、トランザクション(Tx)が未確定であることが検知された場合のリカバリ処理である。
 各クライアント計算機101は、そのクライアント計算機101が実行するTxに関してそのクライアント計算機101が把握した情報(例えば、Txの状態)を他のクライアント計算機101との間で共有するためのクライアント計算機間通信を実行しない。つまり、クライアント計算機101間の情報共有においては、ディセントラライズドストレージシステム103を利用する。これにより、ディセントラライズドトランザクションシステムを実現するためのTxマネージャ111の構成をシンプルにすることができる。
 図2は、クライアント計算機101の構成を示す。
 クライアント計算機101は、インターフェース部201、記憶部202及びそれらに接続されたプロセッサ部203を有する。クライアント計算機101は、インターフェース部201を通じて、ストレージノード105と通信する。プロセッサ部203は、記憶部202に格納されたコンピュータプログラムを実行したり、記憶部202に格納された情報を参照又は更新したりする。
 記憶部202におけるプログラムとして、例えば、Tx APP204と、Txマネージャ111とがある。Tx APP204は、指示元の一例であり、Txマネージャ111に対して、リード又はライトといった要求を出すアプリケーションプログラムである。Txマネージャ111は、Tx APP204とストレージノード105間のやり取りを調整する。なお、Tx APP204は、クライアント計算機101内に代えて、クライアント計算機101と通信可能な別の計算機で実行されてもよい。この場合、クライアント計算機101は、サーバでよく、別の計算機が、そのサーバに対するクライアントでもよい。
 また、記憶部202には、キャッシュ領域206とワーク領域207が設けられる。
 キャッシュ領域206には、ストレージノード105から読み出された情報が一時的に格納される。読み出された情報は、例えば、後述のTxレコード情報である。
 ワーク領域207には、キャッシュ領域206に読み出された情報に基づく処理の結果等の一時的な情報が格納される。一時的な情報は、例えば、ディセントライズドストレージシステム103に対するライト対象の情報である。ライト対象の情報は、例えば、読み出されたTxレコード情報それ自体、又は、作成後、更新後或いは削除対象のTxレコード情報である。
 図3は、ストレージノード105の構成を示す。
 ストレージノード105は、インターフェース部301、記憶部302及びそれらに接続されたプロセッサ部303を有する。ストレージノード105は、インターフェース部301を通じて、他のストレージノード105と通信したり、クライアント計算機101と通信したりする。プロセッサ部303は、記憶部302に格納されたコンピュータプログラムを実行したり、記憶部302に格納された情報を参照又は更新したりする。
 記憶部302におけるプログラムとして、例えば、リニアライザブルコンセンサスを実現するコンセンサスマネージャ304がある。コンセンサスマネージャ304は、例えば、上述した分散コンセンサスアルゴリズム(プロトコル)に従い、リニアライザブルコンセンサスのために、他のストレージノード105と通信する。また、コンセンサスマネージャ304は、クライアント計算機101からのリード/ライト要求に応答して、リニアライザブルコンセンサスの下でリード/ライト処理を実行する。
 記憶部302に格納される情報として、Txレコード部351及び状態レコード部352がある。
 Txレコード部351は、1以上のTxレコードである。その1以上のTxレコードは、後述のTxテーブルの少なくとも一部のレプリカである。「Txレコード」とは、Txテーブルにおけるレコードである。
 状態レコード部352は、1以上の状態レコードである。その1以上の状態レコードは、後述の状態テーブルの少なくとも一部のレプリカである。「状態レコード」とは、状態テーブルにおけるレコードである。
 各ストレージノード105が、Txレコード部351及び状態レコード部352を有している。ストレージノード105間で、Txレコード部351、及び、状態レコード部352は異なり得る。なぜなら、通常、論理的なレコード毎に、当該レコード(レプリカ)の分散先となるストレージノード105が異なるからである。
 複数のストレージノード105が有する複数のTxレコード部351に基づいて、1つの論理的なTxテーブルが構成される。同様に、複数のストレージ105が有する複数の状態レコード部352に基づいて、1つの論理的な状態テーブルが構成される。なお、レコード部351及び352のうちの少なくとも1つのレコードが、ストレージノード105の外部の記憶デバイスに格納されてもよい。
 図4は、Txテーブル及び状態テーブルの各々の構成を示す。
 ディセントラライズドストレージシステム103が、Txテーブル311及び状態テーブル312を管理する。なお、これらのテーブル311及び312は、論理的に分かれているが、物理的には同一でもよい。すなわち、テーブル311及び312の各々の構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部または一部が1つのテーブルであってもよい。
 Txテーブル311は、Tx情報の一例である。Txテーブル311は、1以上(典型的には複数)のTxレコードで構成される。Txテーブル311は、Tx APP204に認識されるテーブルである。各Txレコードは、プライマリキー401が格納されるフィールドと、このTxテーブル311にとって最新の情報であるカレント情報450Cが格納されるフィールド群(複数のフィールド)と、このTxテーブル311にとって1つ古い情報(1つ前のバージョンの情報)であるプレビアス情報450Pが格納されるフィールド群とを有する。
 プライマリキー401は、レコードのIDである。
 情報450は、バリュー411、バージョン412、TxID413及びレコード状態414で構成される。バリュー411は、Tx APP204に使用されるバリューを示す情報要素である。バリュー411は、1つでも複数でもよい。バージョン412は、情報450のバージョンを示す情報要素である。例えば、情報450が新しい程、バージョン412としての数値は大きくなる。このため、バージョン412の大小から、情報450の新旧を判断することができる。TxID413は、バリュー411の格納を含んだ処理に対応したTxのIDを示す情報要素である。レコード状態414は、このレコード状態414を格納したレコードの状態を示す情報要素である。カレント情報450Cにおける各種情報要素の参照符号の末尾は、当該情報の参照符号の末尾と同じアルファベット、すなわち、カレントの頭文字である「C」である。一方、プレビアス情報450Pにおける各種情報要素の参照符号の末尾は、当該情報の参照符号の末尾と同じアルファベット、すなわち、プレビアスの頭文字である「P」である。
 Txテーブル311において、プライマリキー401及びバリュー411は、Tx APP204により定義された情報である。バージョン412、TxID413及び状態414が、Tx管理用のメタデータである。
 状態テーブル312は、状態情報の一例である。状態テーブル312は、Txの状態を管理するテーブルである。状態テーブル312は、1以上(典型的には複数)の論理的な状態レコードで構成される。各状態レコードは、Txレコードと異なり、Tx APP204からのCRUD指示の対象(CRUDオペレーションの対象)とならない。言い換えれば、状態テーブル312は、Txテーブル311と異なり、Tx APP204に認識されない(提供されない)テーブルである。各状態レコードは、TxのIDであるTxID431が格納されるフィールドと、Txの状態を示すTx状態432が格納されるフィールドとを有する。
 図5は、Tx処理の一例の全体の流れを示す。図6は、図5に例示のTx処理に関しクライアント計算機101とディセントラライズトストレージシステム103間でのやり取りを示す模式図である。なお、「コンセンサスマネージャ部354」は、複数ストレージノード105にそれぞれ存在する複数のコンセンサスマネージャ304である。
 図5の例によれば、処理対象のTxは、2以上のTxレコードを読み出しその2以上のTxレコードを更新し更新後の2以上のTxレコードをTxテーブル311に格納するといった典型的なTxである。Tx処理での更新対象Txレコードの数は、2以上に限らず、1でもよい。
 Txマネージャ111がディセントラライズトストレージシステム103に対して送信したCRUD要求は、いずれも、リニアライザブルコンセンサスの下で実行される。例えば、ディセントラライズトストレージシステム103に対して、或るプライマリキーに対応したTxレコードのリード要求が送信された場合、リニアライザブルコンセンサス(CRUDのいずれも特定の条件の下でアトミックに実行することが1つのレコードについて保証された分散コンセンサスプロトコル)に従い、そのプライマリキーに対応した最新のTxレコードが読み出される。また、例えば、ディセントラライズトストレージシステム103に対して、或るプライマリキーに対応したTxレコードのライト(作成、更新又は削除)が要求された場合、リニアライザブルコンセンサスに従い、Txテーブル311にそのTxレコードが書き込まれることになる。図5(及び図7~図12)では、「w/LC」は、リニアライザブルコンセンサスの下での実行を意味する表記であり、with LCの省略形である。以下の説明では、適宜、「w/LC」という表記を採用する。
 以下、図5及び図6を参照して、Tx処理の一例を説明する。なお、Tx処理の開始時点において、Txテーブル311及び状態テーブル312の各々における各フィールド上の数値は、図4に例示の通りであるとする。
 Tx処理は、例えば、Txマネージャ111がTx APP204からTx開始を指示されたときに開始する。
 Txマネージャ111は、プライマリキー(例えば“1”)を指定したリード指示をTx APP204から受ける。Txマネージャ111は、そのリード指示に応答して、そのプライマリキー(例えば“1”)を指定したリード要求w/LCを、ディセントラライズトストレージシステム103に送信する(S501)。コンセンサスマネージャ部354は、そのリード要求w/LCに応答して、指定されたプライマリキー(例えば“1”)に対応した最新のTxレコード(例えば最新のバージョン412Cを含んだカレント情報450Cを有するTxレコード)からTxレコード情報を読み出し、読み出したTxレコード情報を、Txマネージャ111に返す。
 Txマネージャ111は、ディセントラライズトストレージシステム103からのTxレコード情報を、記憶部202(例えばキャッシュ領域206)に格納し、そのTxレコード情報中の状態414Cが“Prepared”(未確定を意味する状態の一例)か否かを判断する(S502)。ここでは、プライマリキー401“1”に対応したTxレコード情報(バリュー411C“5”、バージョン412C“2”、TxID413C“B”及び状態414C“Committed”(確定を意味する状態の一例)を含んだ情報)が読み出されたとする。状態414Cが“Committed”のため、S502の判断結果は偽となる。
 S502の判断結果が偽の場合、Txマネージャ111は、プライマリキー(例えば“1”)及びバリュー(例えば“10”)を指定したライト指示(Tx APP204からのライト指示)に応答して、記憶部202におけるTxレコード情報を更新する(S503)。更新後のTxレコード情報は、例えば上述したようにワーク領域207に格納される。S503では、例えば、プレビアス情報450Pにカレント情報450Cが上書きされる。図4の例で言えば、記憶部202において、バリュー411Pが、“4”から“5”に変わり、バージョン412Pが、“1”から“2”に変わり、TxID413Pが“A”から“B”に変わり、レコード状態414Pが“Committed”から“Committed”に変わる(言い換えれば“Committed”のままである)。また、S503では、カレント情報450Cが更新される。例えば、記憶部202において、バリュー411C“5”が、指定されたバリュー(例えば“10”)に更新され、バージョン412Cが“2”から“3”にインクリメントされ、TxID413CがカレントTxのTxID(例えば“C”)に更新され、レコード状態414Cが“Committed”から“Prepared”に更新される。
 Txマネージャ111は、処理対象のTxレコードに未実施Txレコード(S501が未だ実行されていないTxレコード)が少なくとも1つあるか否かを判断する(S504)。S504の判断結果が真の場合、未実施Txレコードからのカレント情報450Cの読み出しのために処理がS501に戻る。
 S504の判断結果が偽の場合(すなわち、処理対象の全てのTxレコードのTxレコード情報が記憶部202に読み出され且つ更新された場合)、Txマネージャ111は、処理対象のうち全てのTxレコードについて、記憶部202における更新後のTxレコード情報をディセントラライズドストレージシステム103上のTxテーブル311に反映するPREPARE(図7)を実行する(S505)。これにより、PREPAREでは、処理対象のうち全ての各Txレコードが更新され、結果として、レコード状態414Cが“Committed”から“Prepared”に変わる。
 図5~図12の説明において、処理対象のTx(一例として、PREPARE後のTxID413Cに対応したTx)を「カレントTx」と言い、PREPARE前のTxID413Cに対応したTxを「プレビアスTx」と言うことができる。
 PREPARE(S505)の結果が“Success”の場合(S506:Success)、Txマネージャ111は、カレントTxのTxID431とカレントTxに対応したTx状態432“Committed”とを状態テーブル312に書き込むためのライト要求w/LCを発行するCOMMIT STATE RECORD(図8)を実行する(S507)。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、カレントTxのTxID431とそれに対応した状態432“Committed”とを状態レコードに書き込む。
 COMMIT STATE RECORD(S507)の結果が“Success”の場合(S508:Success)、Txマネージャ111は、カレントTxの状態414C“Committed”を書き込むためのライト要求w/LCを処理対象の各Txレコードについて発行するCOMMIT TX RECORDS(図9)を実行する(S513)。このCOMMIT TX RECORDSでの対象となるTxIDは、カレントTxのTxIDである。コンセンサスマネージャ部354は、処理対象の各Txレコードについて、ライト要求w/LCに応答して、レコード状態414C“Committed”を書き込む。
 PREPARE(S505)の結果が“Fail”の場合(S506:Fail)、Txマネージャ111は、カレントTxのTxID431とカレントTxに対応したTx状態432“Aborted”とを状態テーブル312に書き込むためのライト要求w/LCを発行するABORT STATE RECORD(図10)を実行する(S509)。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、カレントTxのTxID431とそれのTx状態432“Aborted”とを状態レコードに書き込む。
 ABORT STATE RECORD(S509)の結果が“Success”の場合(S510:Success)、Txマネージャ111は、カレントTxのレコード状態414C“Aborted”を書き込むためのライト要求w/LCを処理対象の各Txレコードについて発行するABORT TX RECORDS(図11)を実行する(S514)。このABORT TX RECORDSでの対象となるTxIDは、カレントTxのTxIDである。コンセンサスマネージャ部354は、処理対象の各Txレコードについて、ライト要求w/LCに応答して、レコード状態414C“Aborted”を書き込む。
 PREPARE(S505)の結果が“Unknown”の場合(言い換えれば、“Success”及び“Fail”のいずれでもない場合)(S506:Unknown)、或いは、COMMIT STATE RECORD(S507)又はABORT STATE RECORD(S509)の結果が“Fail”の場合(S508:Fail、又は、S510:Fail)、Txマネージャ111は、カレントTxについてRECOVER(図12)を実行する(S511)。
 RECOVER(S511)の結果が“Committed”の場合(S512:Committed)、Txマネージャ111は、カレントTxについて上述のCOMMIT TX RECORDS(図9)を実行する(S513)。RECOVER(S511)の結果が“Aborted”の場合(S512:Aborted)、Txマネージャ111は、カレントTxについて上述のABORT TX RECORDS(図11)を実行する(S514)。RECOVER(S511)の結果が“Unknown”の場合(言い換えれば、“Committed”及び“Aborted”のいずれでもない場合)(S512:Unknown)、Txマネージャ111は、カレントTxのTx処理を終了する。
 さて、上述したように、S502では、Txマネージャ111は、S501で読み出されたカレント情報450C内のレコード状態414C、つまり、プレビアスTxに対応したレコード状態414Cが“Prepared”か否かを判断する。プレビアスTxの処理において、もし、COMMIT TX RECORDS及びABORT TX RECORDSのいずれも実行されていなければ、プレビアスTxに対応したレコード状態414Cは“Prepared”のままになっている。なお、プレビアスTxに対応したCOMMIT TX RECORDS(S513)及びABORT TX RECORDS(S514)のいずれについても、結果の成否は判断されてもされないでもよい(失敗が検知されたとしても直ちにRECOVERが実行されないでよい)。
 そこで、S502の判断結果が真の場合、Txマネージャ111は、プレビアスTxについてRECOVER(図12)を実行する(S521)。
 RECOVER(S521)の結果が“Committed”の場合(S522:Committed)、Txマネージャ111は、プレビアスTxについてレコード状態414C“Committed”をTxテーブル311に書き込むためのライト要求w/LCを発行するCOMMIT TX RECORDS(図9)を実行する(S523)。このCOMMIT TX RECORDSでの対象となるTxIDは、プレビアスTxのTxIDである。
 RECOVER(S521)の結果が“Aborted”の場合(S522:Aborted)、Txマネージャ111は、プレビアスTxについてレコード状態414C“Aborted”をTxテーブル311に書き込むためのライト要求w/LCを発行するABORT TX RECORDS(図11)を実行する(S524)。このABORT TX RECORDSでの対象となるTxIDは、プレビアスTxのTxIDである。
 S523又はS524の後、Txマネージャ111は、カレントTxをアボートする(S525)。
 レイジーリカバリ処理は、プレビアスTxが未確定であることがわかったとき(状態414C“Prepared”が見つかったとき)のプレビアスTxのリカバリ処理に相当し、具体的には、S521、S522及びS523(又はS524)から成る処理に相当する。
 本実施例では、状態414Cについて、Txの確定を意味する状態の一例である“Committed”の他に、Txの未確定を意味する状態の一例である“Prepared”が用意されている。S501で読み出されたカレント情報450C内のレコード状態414Cが“Prepared”であれば、プレビアスTxが未確定であることがわかり、レイジーリカバリ処理が実行される。
 なお、RECOVER(S521)の結果が“Unknown”の場合(S522:Unknown)、Txマネージャ111は、カレントTxをアボートする(S525)。
 以上が、Tx処理の一例の全体の流れである。なお、Tx処理では、少なくとも1つのTxレコードについて、下記のうちの少なくとも1つの変形例もあり得る。
・例えば、削除の場合は、次の通りである。PREPARE(S505)では、削除対象のTxレコードに“Prepared”が書き込まれ、加えて、当該レコードが削除対象であることを示す情報が書き込まれる。具体的には、例えば、各Txレコードに、カレント情報450C及びプレビアス情報450Pの各々について、削除対象であるか否かを示す情報の一例である削除フラグ(図示せず)が関連付けられていて(例えばTxレコード上に設けられていて)、削除対象のTxレコードに関して、削除フラグ“1”(削除対象を意味する値)が書き込まれてよい。これにより、レイジーリカバリ処理において、そのレイジーリカバリ処理の対象のTx(カレントTx又はプレビアスTx)についてのTxレコードに関連付けられている削除フラグの値から、当該Txレコードが削除対象なのか否かを判断することができる。COMMIT STATE RECORD(S507)では、Tx状態“Committed”が書き込まれる。COMMIT TX RECORD(S513)では、削除対象のTxレコード(削除フラグ“1”が関連付けられているTxレコード)が削除される。
・S501の読み出しが実行されず、Txレコードが新規に作成される。この場合、S502がスキップされ、S503の書き込みが実行される。
 図7は、PREPAREの流れを示す。
 Txマネージャ111は、処理対象のTxレコードのうち、S701が未処理のTxレコードについて、記憶部202内のTxレコード情報をそのTxレコードに書き込むためのライト要求w/LCであって、条件「最新バージョン=直前バージョン+1」が関連付けられたライト要求w/LCを、ストレージノード105に送信する(S701)。「最新バージョン」とは、直前バージョンの更新後(インクリメント後)のバージョン、具体的には、書込み対象のTxレコード情報(例えば、読み出されて更新された後のTxレコード情報)におけるバージョンである。「直前バージョン」とは、読み出されたTxレコード情報におけるバージョンである。書込み対象のTxレコード情報が、新規作成されたTxレコード情報の場合、ライト要求w/LCに関連付けられる条件は、「書込み対象のTxレコード情報が新規のTxレコード情報であれば書き込む」となる。ライト要求w/LCでは、該当Txレコードに対応したプライマリキーが指定される。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、そのライト要求w/LCに関連付けられている条件が満たされていれば、該当Txレコードに書込み対象のTxレコード情報を書き込む。結果として、レコード状態414Cが“Committed”から“Prepared”に変わる。ストレージノード105(コンセンサスマネージャ304)は、そのライト要求w/LCの処理の結果を返す。
 Txマネージャ111は、S701の結果が“Success”か否かを判断する(S702)。ライト要求w/LCに関連付けられている条件が満たされていない、又は、書き込みに失敗した場合、S702の判断結果は偽となる。
 S702の判断結果が真の場合、Txマネージャ111は、処理対象のTxレコードにS701が未処理のTxレコードがあるか否かを判断する(S703)。S703の判断結果が真の場合、その未処理のTxレコードのために処理がS701に戻る。S703の判断結果が偽の場合、Txマネージャ111は、結果“Success”を記憶部202(例えばワーク領域207)に設定する(S704)。
 S702の判断結果が偽の場合、Txマネージャ111は、処理対象のTxレコードにS701が未処理のTxレコードがあるか否かに関わらず、結果“Fail”を記憶部202(例えばワーク領域207)に設定する(S705)。本実施形態では、いわゆるFirst Committer Wins Ruleと類似したルールをPREPAREにおいて用いることにより、カレントTxとは別のTxが該当Txレコードを先に書き換えた場合、カレントTxが負けたことになり、結果が“Fail”となる。
 図7のPREPAREの流れによれば、下記の通りである。
 すなわち、本実施例では、S501で読み出されたTxレコード情報の更新の有無に関わらず、当該Txレコード情報について、S503の書き込みが実行される(新規作成のTxレコード情報についても同様)。
 そして、PREPAREでは、上述したように、First Committer Wins Ruleに類似したルールを採用しており、そのルールを「First Preparer Wins Rule」と呼ぶことができる。First Preparer Wins Ruleでは、他のTx処理により先に書き込み先Txレコードにレコード状態414C“Prepared”が書き込まれている場合、書き込みが失敗となる。
 本実施例では、Txレコード情報の更新の有無に関わらずTxレコード情報を書き込むことと、上述のFirst Preparer Wins Ruleにより、アイソレーション(アイソレーションレベル:コンフリクトシリアライザブル(以下、シリアライザブル))が担保される。
 図8は、COMMIT STATE RECORDの流れを示す。
 Txマネージャ111は、カレントTxのTxID431とカレントTxに対応したTx状態432“Committed”とを状態テーブル312に書き込むためのライト要求w/LCをディセントラライズドストレージシステム103に送信する(S801)。そのライト要求w/LCでは、TxID431及びTx状態432“Committed”が指定される。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、カレントTxのTxID431とそれに対応したTx状態432“Committed”とを状態レコードに書き込む。コンセンサスマネージャ部354は、そのライト要求w/LCの処理の結果を返す。
 Txマネージャ111は、S801の結果が“Success”か否かを判断する(S802)。
 S802の判断結果が真の場合、Txマネージャ111は、結果“Success”を記憶部202(例えばワーク領域207)に設定する(S803)。
 S802の判断結果が偽の場合、Txマネージャ111は、結果“Fail”を記憶部202(例えばワーク領域207)に設定する(S804)。
 図9は、COMMIT TX RECORDSの流れを示す。
 Txマネージャ111は、処理対象のTxレコードのうち、S901が未処理のTxレコードについて、カレントTxに対応した状態414C“Committed”を書き込むためのライト要求w/LC(又は、当該Txレコードの削除のためのライト要求(削除要求)w/LC)であって、条件「TxIDの一致」が関連付けられたライト要求w/LCを、ディセントラライズドストレージシステム103に送信する(S901)。「TxIDの一致」とは、処理対象のTxレコードのカレント情報450CにおけるTxID413Cが、このCOMMIT TX RECORDSの対象となっているTxのTxIDと一致することである。ライト要求w/LCでは、該当Txレコードに対応したプライマリキーが指定される。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、そのライト要求w/LCに関連付けられている条件が満たされていれば、該当Txレコードにレコード状態414C“Committed”を書き込む(又は該当Txレコードを削除する)。コンセンサスマネージャ部354は、そのライト要求w/LCの処理の結果を返す。
 Txマネージャ111は、S901の結果が“Success”か否かを判断する(S902)。ライト要求w/LCに関連付けられている条件が満たされていない、又は、書き込みに失敗した場合、S902の判断結果は偽となる。S902の判断結果が偽の場合、COMMIT TX RECORDSが終了する。
 S902の判断結果が真の場合、Txマネージャ111は、処理対象のTxレコードにS901が未処理のTxレコードがあるか否かを判断する(S903)。S903の判断結果が真の場合、その未処理のTxレコードのために処理がS901に戻る。S903の判断結果が偽の場合、COMMIT TX RECORDSが終了する。
 図10は、ABORT STATE RECORDの流れを示す。
 Txマネージャ111は、カレントTxのTxID431とカレントTxに対応したTx状態432“Aborted”とを状態レコードテーブル312に書き込むためのライト要求w/LCをディセントラライズドストレージシステム103に送信する(S1001)。そのライト要求w/LCでは、TxID431及びTx状態432“Aborted”が指定される。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、カレントTxのTxID431とそれに対応したTx状態432“Aborted”とを状態レコードに書き込む。コンセンサスマネージャ部354は、そのライト要求w/LCの処理の結果を返す。
 Txマネージャ111は、S1001の結果が“Success”か否かを判断する(S1002)。
 S1002の判断結果が真の場合、Txマネージャ111は、結果“Success”を記憶部202(例えばワーク領域207)に設定する(S1003)。
 S802の判断結果が偽の場合、Txマネージャ111は、結果“Fail”を記憶部202(例えばワーク領域207)に設定する(S1004)。
 図11は、ABORT TX RECORDSの流れを示す。
 Txマネージャ111は、処理対象のTxレコード(S501でのリード元となったTxレコード)のうち、S1101が未処理のTxレコードについて、そのTxレコードのプライマリキーを指定したリード要求w/LCをディセントラライズドストレージシステム103に送信する(S1101)。コンセンサスマネージャ部354は、そのリード要求w/LCに応答して、最新のTxレコードから読み出されたTxレコード情報を返す。Txマネージャ111は、そのTxレコード情報を記憶部202(例えばキャッシュ領域206)に格納する。
 Txマネージャ111は、その格納されたTxレコード情報中のカレント情報450Cに、そのTxレコード情報中のプレビアス情報450Pを上書きする(S1102)。結果、そのTxレコード情報において、カレント情報450Cもプレビアス情報450Pも同じ内容になる。
 Txマネージャ111は、S1102による更新後のTxレコード情報をTxテーブル311に書き込むためのライト要求w/LCであって、条件「TxIDの一致」が関連付けられたライト要求w/LCを、ディセントラライズドストレージシステム103に送信する(S1103)。「TxIDの一致」とは、処理対象のTxレコードのカレント情報450CにおけるTxID413Cが、このABORT TX RECORDSの対象となっているTxのTxIDと一致することである。ライト要求w/LCでは、該当Txレコードに対応したプライマリキーが指定される。コンセンサスマネージャ部354は、そのライト要求w/LCに応答して、そのライト要求w/LCに関連付けられている条件が満たされていれば、該当Txレコードに、そのライト要求w/LCで指定されたTxレコード情報を書き込む。コンセンサスマネージャ部354は、そのライト要求w/LCの処理の結果を返す。
 Txマネージャ111は、S1103の結果が“Success”か否かを判断する(S1104)。ライト要求w/LCに関連付けられている条件が満たされていない、又は、書き込みに失敗した場合、S1104の判断結果は偽となる。S1104の判断結果が偽の場合、ABORT TX RECORDSが終了する。
 S1104の判断結果が真の場合、Txマネージャ111は、処理対象のTxレコードにS1101が未処理のTxレコードがあるか否かを判断する(S1105)。S1105の判断結果が真の場合、その未処理のTxレコードのために処理がS1101に戻る。S1105の判断結果が偽の場合、ABORT TX RECORDSが終了する。
 図12は、RECOVERの流れを示す。図12の説明において、「対象Tx」は、図5のS511に関しては「カレントTx」であり、図5のS521に関しては「プレビアスTx」である。
 Txマネージャ111は、対象Txに対応した状態432を状態テーブル312から読み出すためのリード要求w/LCをディセントラライズドストレージシステム103に送信する(S1201)。そのリード要求w/LCでは、処理対象のTxのTxID431が指定される。コンセンサスマネージャ部354は、そのリード要求w/LCに応答して、対象TxのTxID431に対応したTx状態432を状態レコードから読み出し、その状態432を返す。
 Tx状態432が“Committed”の場合、Txマネージャ111は、結果“Committed”を、記憶部202(例えばワーク領域207)に設定する(S1203)。
 Tx状態432が“Aborted”の場合、Txマネージャ111は、結果“Aborted”を、記憶部202(例えばワーク領域207)に設定する(S1204)。
 Tx状態432が“Unknown”の場合(典型的には、対象TxのTxIDに一致するTxIDを有する状態レコードが存在しない場合)、Txマネージャ111は、リトライ終了条件が満たされたか否か、例えば所定の時間が経過したか否かを判断する(S1205)。
 S1205の判断結果が真の場合、Txマネージャ111は、対象TxのTxID431と対象Txに対応した状態432“Aborted”とを状態テーブル312に書き込むためのライト要求w/LCを発行するABORT STATE RECORDを実行する(S1206)。
 S1205の判断結果が偽の場合、Txマネージャ111は、S1201のリトライを実行するか否かを判断する(S1207)。S1207の判断結果が真の場合、S1201が再度実行される。S1207の判断結果が偽の場合、Txマネージャ111は、結果“Unknown”を、記憶部202(例えばワーク領域207)に設定する(S1206)。
 以上が、実施例1についての説明である。
 以下、実施例1を総括する。なお、下記の記述は、上述の説明に無い事項を含んでいてもよい。
 Tx処理では、典型的には、2以上のレコードに対してACID性を保証しつつCRUD要求を実行する必要がある。このため、テーブルを格納するストレージシステムとして、マスター/スレーブ型のトランザクションシステムが採用されることが一般的である。リアルタイムに情報共有(同期)が実行され、2以上のレコードに対してACID性を保証しつつCRUD要求を実行することの実現が容易であるためである。
 しかし、マスター/スレーブ型のトランザクションシステムでは、上述したように、実現できるアプリケーションの範囲が必ずしも広くなく、且つ、アベーラビリティ及びスケーラビリティは必ずしも高くない。
 そこで、特定のノードに依らずTx処理を行うディセントラライズドなトランザクションシステムが考えられる。マスターが存在しない(全員がマスターであると考えることもできる)ため、トランザクションシステムを利用するアプリケーションの範囲が広がること、及び、高いアベーラビリティと高いスケーラビリティが期待できるためである。
 このようなトランザクションシステムでは、リニアライザブルコンセンサスを実現する既存のディセントラライズドストレージシステム103を利用することが考えられる。
 しかし、リニアライザブルコンセンサスでは、CRUDのいずれも特定の条件の下でアトミックに実行することが、1つの(論理的な)レコードについて保証されているものの、2以上のレコードについては保証されていない。
 このような理由から、2以上のレコードに対してACID性を保証しつつCRUD要求を実行するディセントラライズドなトランザクションシステムを実現することは困難である。
 そこで、本実施例では、クライアント計算機において実現される新しいTx管理機構(Txマネージャ111)を用いることにより、既存のディセントラライズドストレージシステム103を利用したディセントラライズドトランザクションシステム、すなわち、2以上のレコードに対してACID性を保証しつつCRUD要求を実行するディセントラライズドトランザクションシステムが実現される。
 A(Atomicity)は、Txマネージャ111により担保される。すなわち、ディセントラライズドストレージシステム103に、Txの対象となるTxテーブル311に加えて、Txの状態を管理するためのテーブルである状態テーブル312が格納され、クライアント計算機101で、クライアントコーディネーテッドな処理の実現ためのTxマネージャ111が実行される。コミット処理又はアボート処理が2段階で実行される。具体的には、Txマネージャ111は、カレントTxの対象のうち更新が必要とされる各TxレコードにカレントTxのレコード状態414C“Prepared”を書き込む。その後、Txマネージャ111は、1段階目の更新として、カレントTxそれ自体の結果(Tx状態“Committed”又は“Aborted”)を状態レコードに書き込み(図5のS507又はS509)、その後に、2段階目の更新として、カレントTxの対象のうち更新が必要とされる各Txレコードを更新する。リニアライザブルコンセンサスの下でリニアライザブル(アトミック)に更新されることが保証されるレコード数は1である。このため、本実施例では、1段階目で、Txそれ自体の結果を1つのレコード(状態レコード)に書き込み、2段階目で、そのTxの更新対象のレコード(Txレコード)が1つずつ更新されるようになっている。
 なお、2以上のレコードのうちの一部のレコードしか更新に成功しないことがあり得るが、リニアライザブルな書き込みの失敗をリアルタイムに検知すること(別の言い方をすれば、書き込みが失敗なのか遅いのかを区別すること)は困難である。そこで、本実施例では、2以上のレコードのうちの一部のレコードしか更新に成功しなかったという不整合をTx APP204に見せないために、レイジーリカバリ処理(プレビアスTxが未確定であることが検知された場合に走るS521、S522、S523(又はS524)から成る処理)が実行される。
 I(Isolation)も、Txマネージャ111により担保される。すなわち、First Preparer Wins Ruleにより、アイソレーションが担保される。なお、本実施例では、Txレコード情報の更新の有無に関わらずTxレコード情報が書き込まれるようになっている。これにより、アイソレーションレベルとしてシリアライザブルが担保される。
 C(Consistency)は、Tx APP204により担保される。トランザクションシステム(Txマネージャ111及びディセントラライズドストレージシステム103)により最新の確定的な値が得られることが保証されるので、Tx APP204がC(Consistency)を担保できるようになっている。
 D(Durability)は、ディセントラライズドストレージシステム103により担保される。“Durability”は、書き込まれたレコードは永続化される(消えない)という性質であり、Txマネージャ111は、ストレージシステム103側でそのような性質を有することが前提とされている。
 実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
 実施例1では、Txマネージャ111により実現されるアイソレーションレベルは、シリアライザブルである。すなわち、実施例1では、Txマネージャ111は、読み出されたTxレコード情報の更新の有無に関わらず、Txレコード情報をTxテーブル311に書き込む(新規作成のTxレコード情報についても同様)。
 実施例2では、Txマネージャ111により実現されるアイソレーションレベルは、スナップショットアイソレーションである。すなわち、実施例2では、Txマネージャ111は、読み出されたTxレコード情報が更新された場合には、Txレコード情報をTxテーブル311に書き込むが(新規作成のTxレコード情報についても同様)、読み出されたTxレコード情報が更新されていない場合には、Txレコード情報をTxテーブル311に書き込まない。
 従って、実施例2では、例えば、Tx処理の一部が、実施例1と相違する。すなわち、図13に示すように、Tx処理において、Txマネージャ111は、S502の判断結果が偽の場合、Txレコード情報の書き込みの必要があるか否かを判断する(S1301)。「書き込みの必要がある」とは、読み出されたTxレコード情報が更新(又は削除)された、又は、Txレコード情報が新規作成された、である。S1301の判断結果が真の場合(つまり「書き込みの必要がある」場合)、S503の書き込みが実行される。S1301の判断結果が偽の場合、S503がスキップされる。少なくとも1つのTxレコードについての書き込みが実行された場合(S1302:Yes)、S505(PREPARE)が実行される。いずれのTxレコードについても書き込みが実行されなかった場合(S1302:No)、Tx処理が終了する。
 また、実施例2では、例えば、PREPAREの一部が、実施例1と相違する。すなわち、図14に示すように、PREPAREにおいて、Txマネージャ111は、Txレコードについて、書き込みの必要があるか否かを判断する(S1401)。「書き込みの必要がある」とは、当該Txレコードが、更新後の(又は削除対象の)Txレコード、又は、新規作成されたTxレコードである。S1401の判断結果が真の場合に、S701が実行される。また、S703の判断結果が偽の場合の戻り先が、S701に代えてS1401とされる。
 以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、本発明は、データベースに対するTx以外のTx(例えば、1以上のファイルのような1以上のオブジェクトに対するTx)にも適用することができる。
101…クライアント計算機 103…ディセントラライズドストレージシステム 105…ストレージノード 111…Txマネージャ

Claims (17)

  1.  (A)CRUD(Create、Read、Update又はDelete)のいずれも特定の条件の下でアトミックに実行することが1つのオブジェクトについて保証されるリニアライザブルコンセンサスを実現するディセントラライズドストレージシステムに対し、前記ディセントラライズドストレージシステムが管理している状態情報及びトランザクション(Tx)情報のうちの状態情報が有する状態オブジェクトに処理対象のTxであるカレントTxの状態を書き込むためのライト要求を送信し、
      前記Tx情報は、1以上のTxオブジェクトで構成され、
      各Txオブジェクトは、Tx処理におけるCRUD要求の対象となり得るオブジェクトであり、
      前記状態情報は、1以上の状態オブジェクトで構成され、
      各状態オブジェクトは、Txに対応しており、当該Txの状態を格納したオブジェクトであり、
     (B)前記カレントTxの対象のうち、少なくとも、CUD(Create、Update又はDelete)が必要とされる各Txオブジェクトについて、(A)のライト要求に従う状態に応じたライト要求を、前記ディセントラライズドストレージシステムに対して送信する、
    ことを計算機に実行させるコンピュータプログラム。
  2.  (E)前記カレントTxの対象のうち、少なくとも、CUDが必要とされる各Txオブジェクトについて、そのTxオブジェクトについて未確定を意味する状態であるPreparedを含んだ情報を書き込むためのライト要求を、前記ディセントラライズドストレージシステムに対して送信する、
    ことを更に計算機に実行させ、
     (A)でのライト要求に従い書き込まれる状態は、(E)の結果に応じた状態であり、
     前記カレントTxの対象のうち、少なくとも、CUDが必要とされる各Txオブジェクトについて、(B)でのライト要求は、確定を意味する状態であるCommittedを書き込むためのライト要求である、
    請求項1記載のコンピュータプログラム。
  3.  (F)前記カレントTxの対象のうち、少なくとも、読出しが必要とされるTxオブジェクトについて、そのTxオブジェクトについての最新の状態を含む情報である対象情報を読み出すためのリード要求を、前記ディセントラライズドストレージシステムに対して送信し、
     (G)(F)でのリード要求に従い読み出された対象情報に含まれる状態がPreparedか否かを判断し、
     (G)の判断結果が偽の場合、(E)を実行する、
    ことを計算機に実行させる請求項2記載のコンピュータプログラム。
  4.  (G)の判断結果が真の場合、前記対象情報から特定されたTxであるプレビアスTxについてのリカバリ処理を前記計算機に実行させ、
     (P)前記プレビアスTxについてのリカバリ処理は、
      (p1)前記プレビアスTxに対応した状態オブジェクトについて、その状態オブジェクトに書き込まれている状態を読み出すためのリード要求を、前記ディセントラライズドストレージシステムに対して送信すること、
      (p2)前記プレビアスTxに対応した各Txオブジェクトについて、(p1)のリード要求に従い読み出された状態に応じた更新のためのライト要求を、前記ディセントラライズドストレージシステムに対して送信すること、
    を含む、
    請求項3記載のコンピュータプログラム。
  5.  (p1)のリード要求に従い読み出された状態が、確定を意味する状態であるCommittedの場合、前記プレビアスTxに対応した各Txオブジェクトについて、(p2)でのライト要求は、確定を意味する状態であるCommittedを書き込むためのライト要求である、
    請求項4記載のコンピュータプログラム。
  6.  (p1)のリード要求に従い読み出された状態が、失敗を意味する状態であるAbortedの場合、前記プレビアスTxに対応した各Txオブジェクトについて、(p2)でのライト要求は、そのTxオブジェクトにおける最新の情報を1つ前の情報に戻すためのライト要求である、
    請求項4又は5記載のコンピュータプログラム。
  7.  確定を意味する状態であるCommitted又は失敗を意味する状態であるAbortedを示す状態が読み出されるまで所定時間(p1)が繰り返されても、Committed又はAbortedを示す状態が読み出されない場合、
      前記プレビアスTxに対応した状態オブジェクトについて、失敗を意味する状態であるAbortedを書き込むためのライト要求を、前記ディセントラライズドストレージシステムに対して送信することを、前記計算機に実行させ、
      前記プレビアスTxに対応した各Txオブジェクトについて、(p2)でのライト要求は、そのTxオブジェクトにおける最新の情報を1つ前の情報に戻すためのライト要求である、
    請求項4乃至6のうちのいずれか1項に記載のコンピュータプログラム。
  8.  (E)に関するルールは、先にPreparedを書き込むことができた場合に勝ちとなるルールである、
    請求項2乃至7のうちのいずれか1項に記載のコンピュータプログラム。
  9.  (E)に関するルールが、下記(e1)及び(e2)のいずれかのルールである、
      (e1)リード要求に従うリード元のTxオブジェクトから読み出された情報が更新されたか否かに関わらず、当該Txオブジェクトに対して書込みを行う、
      (e2)リード要求に従うリード元のTxオブジェクトから読み出された情報が更新されていない場合を除き、当該Txオブジェクトに対して書込みを行う、
    請求項2乃至8のうちのいずれか1項に記載のコンピュータプログラム。
  10.  (E)が成功の場合、
      (A)でのライト要求に従い書き込まれる状態が、確定を意味する状態であるCommittedであり、
      前記カレントTxの対象のうち、少なくとも、CUDが必要とされる各Txオブジェクトについて、(B)でのライト要求は、最新の状態として、Preparedを、確定を意味する状態であるCommittedに更新するためのライト要求である、
    請求項2乃至9のうちのいずれか1項に記載のコンピュータプログラム。
  11.  (E)が失敗の場合、
      (A)でのライト要求に従い書き込まれる状態が、失敗を意味する状態であるAbortedであり、
      前記カレントTxの対象のうち、少なくとも、CUDが必要とされる各Txオブジェクトについて、(B)でのライト要求は、そのオブジェクトにおける最新の情報を1つ前の情報に戻すためのライト要求である、
    請求項2乃至10のうちのいずれか1項に記載のコンピュータプログラム。
  12.  (A)が失敗の場合、前記カレントTxについてのリカバリ処理を前記計算機に実行させ、
     (C)前記カレントTxについてのリカバリ処理は、
      (c1)前記カレントTxに対応した状態オブジェクトについて、その状態オブジェクトに書き込まれている状態を読み出すためのリード要求を、前記ディセントラライズドストレージシステムに対して送信すること、
      (c2)前記カレントTxの対象の各Txオブジェクトについて、(c1)のリード要求に従い読み出された状態に応じた更新のためのライト要求を、前記ディセントラライズドストレージシステムに対して送信すること、
    を含む、
    請求項1乃至11のうちのいずれか1項に記載のコンピュータプログラム。
  13.  (c1)のリード要求に従い読み出された状態が、確定を意味する状態であるCommittedの場合、前記カレントTxの対象の各Txオブジェクトについて、(c2)でのライト要求は、確定を意味する状態であるCommittedを書き込むためのライト要求である、
    請求項12記載のコンピュータプログラム。
  14.  (c1)でのリード要求に従い読み出された状態が、失敗を意味する状態であるAbortedの場合、前記カレントTxの対象の各Txオブジェクトについて、(c2)でのライト要求は、そのTxオブジェクトにおける最新の情報を1つ前の情報に戻すためのライト要求である、
    請求項12又は13記載のコンピュータプログラム。
  15.  確定を意味する状態であるCommitted又は失敗を意味する状態であるAbortedを示す状態が読み出されるまで所定時間(c1)が繰り返されても、Committed又はAbortedを示す状態が読み出されない場合、
      前記カレントTxに対応した状態オブジェクトについて、失敗を意味する状態であるAbortedを書き込むためのライト要求を、前記ディセントラライズドストレージシステムに対して送信することを、前記計算機に実行させ、
      前記カレントTxの対象の各Txオブジェクトについて、(c2)でのライト要求は、そのTxオブジェクトにおける最新の情報を1つ前の情報に戻すためのライト要求である、
    請求項12乃至14のうちのいずれか1項に記載のコンピュータプログラム。
  16.  CRUD(Create、Read、Update又はDelete)のいずれも特定の条件の下でアトミックに実行することが1つのオブジェクトについて保証されるリニアライザブルコンセンサスを実現するディセントラライズドストレージシステムに対し、前記ディセントラライズドストレージシステムが管理している状態情報及びTx情報のうちの状態情報が有する状態オブジェクトに処理対象のTxであるカレントTxの状態を書き込むためのライト要求を送信する第1の手段と、
      前記Tx情報は、1以上のTxオブジェクトで構成され、
      各Txオブジェクトは、Tx処理におけるCRUD要求の対象となり得るオブジェクトであり、
      前記状態情報は、1以上の状態オブジェクトで構成され、
      各状態オブジェクトは、Txに対応しており、当該Txの状態を格納したオブジェクトであり、
     前記カレントTxの対象のうち、少なくとも、CUD(Create、Update又はDelete)が必要とされる各Txオブジェクトについて、前記第1の手段によるライト要求に従う状態に応じたライト要求を、前記ディセントラライズドストレージシステムに対して送信する第2の手段と
    を備える計算機。
  17.  (A)CRUD(Create、Read、Update又はDelete)のいずれも特定の条件の下でアトミックに実行することが1つのオブジェクトについて保証されるリニアライザブルコンセンサスを実現するディセントラライズドストレージシステムに対し、前記ディセントラライズドストレージシステムが管理している状態情報及びトランザクション(Tx)情報のうちの状態情報が有する状態オブジェクトに処理対象のTxであるカレントTxの状態を書き込むためのライト要求を送信するステップと、
      前記Tx情報は、1以上のTxオブジェクトで構成され、
      各Txオブジェクトは、Tx処理におけるCRUD要求の対象となり得るオブジェクトであり、
      前記状態情報は、1以上の状態オブジェクトで構成され、
      各状態オブジェクトは、Txに対応しており、当該Txの状態を格納したオブジェクトであり、
     (B)前記カレントTxの対象のうち、少なくとも、CUD(Create、Update又はDelete)が必要とされる各Txオブジェクトについて、(A)のライト要求に従う状態に応じたライト要求を、前記ディセントラライズドストレージシステムに対して送信するステップと
    を有するトランザクション処理方法。
PCT/JP2017/020122 2017-04-21 2017-05-30 計算機及びトランザクション処理方法 WO2018193638A1 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2017-084234 2017-04-21
JP2017084234 2017-04-21

Publications (1)

Publication Number Publication Date
WO2018193638A1 true WO2018193638A1 (ja) 2018-10-25

Family

ID=63856505

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2017/020122 WO2018193638A1 (ja) 2017-04-21 2017-05-30 計算機及びトランザクション処理方法

Country Status (1)

Country Link
WO (1) WO2018193638A1 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013033345A (ja) * 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
WO2013046883A1 (ja) * 2011-09-30 2013-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクション処理システム、方法及びプログラム

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013033345A (ja) * 2011-08-01 2013-02-14 Internatl Business Mach Corp <Ibm> トランザクション処理システム、方法及びプログラム
WO2013046883A1 (ja) * 2011-09-30 2013-04-04 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクション処理システム、方法及びプログラム

Similar Documents

Publication Publication Date Title
US10552372B2 (en) Systems, methods, and computer-readable media for a fast snapshot of application data in storage
US9558205B2 (en) Method for creating clone file, and file system adopting the same
JP5890071B2 (ja) 分散キーバリューストア
WO2018040591A1 (zh) 一种远程数据复制方法及系统
US9116913B2 (en) File storage system and file cloning method
JP5952960B2 (ja) 計算機システム、計算機システム管理方法及びプログラム
US10007548B2 (en) Transaction system
JP6097880B2 (ja) ビザンチン故障耐性データ複製を行う方法およびシステム
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
JP6479186B2 (ja) 計算機システム及びデータベース管理方法
JP5357068B2 (ja) 情報処理装置、情報処理システム、データ・アーカイブ方法およびデータ削除方法
US10394491B2 (en) Efficient asynchronous mirror copy of thin-provisioned volumes
JP6298903B2 (ja) 計算機システム、分散オブジェクト共有方法、エッジノード
US7549029B2 (en) Methods for creating hierarchical copies
JP5721056B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
JP4937863B2 (ja) 計算機システム、管理計算機及びデータ管理方法
US20200073584A1 (en) Storage system and data transfer control method
US20150161009A1 (en) Backup control device, backup control method, disk array apparatus, and storage medium
US9286318B2 (en) Edge server and storage control method
WO2018193638A1 (ja) 計算機及びトランザクション処理方法
US10656867B2 (en) Computer system, data management method, and data management program
US20230273728A1 (en) Storage control apparatus and method
WO2016117322A1 (ja) 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム記録媒体
US20170277723A1 (en) Data management device, data management method, and computer program product
JP6263673B2 (ja) 計算機システム及びデータベース管理方法

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 17906618

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 17906618

Country of ref document: EP

Kind code of ref document: A1