JP5721056B2 - トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム - Google Patents

トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム Download PDF

Info

Publication number
JP5721056B2
JP5721056B2 JP2011105031A JP2011105031A JP5721056B2 JP 5721056 B2 JP5721056 B2 JP 5721056B2 JP 2011105031 A JP2011105031 A JP 2011105031A JP 2011105031 A JP2011105031 A JP 2011105031A JP 5721056 B2 JP5721056 B2 JP 5721056B2
Authority
JP
Japan
Prior art keywords
log
representative
transaction processing
record
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011105031A
Other languages
English (en)
Other versions
JP2012238061A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2011105031A priority Critical patent/JP5721056B2/ja
Priority to US13/461,622 priority patent/US8600962B2/en
Priority to CN201210140525.6A priority patent/CN102779088B/zh
Publication of JP2012238061A publication Critical patent/JP2012238061A/ja
Application granted granted Critical
Publication of JP5721056B2 publication Critical patent/JP5721056B2/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/2358Change logging, detection, and notification

Description

本発明は、トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラムに関する。
近年、スケーラブルなWebアプリケーションの実行基盤として、データセンター内の多数のコンピュータを用いる、いわゆるクラウドが注目されている。このクラウドのインフラストラクチャの一つとして、Key−Value Store(以下、「KVS」と記載する)が知られている。KVSは、キーと値とのペアで構成されるレコードを管理するデータベースである。下記特許文献1には、KVSを有するコンピュータシステムが開示されている。このコンピュータシステムでは、KVSを、サーバにあるデータベースのデータをキャッシュするためのキャッシュ装置として用いている。下記特許文献2には、KVSを有するデータベースシステムが開示されている。このデータベースシステムでは、KVSのデータ間に属性関係を持たせてデータを結合する仕組みが開示されている。下記非特許文献1には、KVSへのアクセス権を管理する管理ノードを設けるトランザクション処理システムが開示されている。
特開2011−8451号公報 特開2011−13923号公報
Sudipto Das,Divyakant Agrawal and Amr El Abbadi. G-Store A Scalable Data Store for Transactional Multi Key Access in the Cloud. In Socc'10, 2010
ところで、KVSでは、単一のレコードに対するデータ操作についてはアトミック性がサポートされている。したがって、KVSを用いてトランザクション処理を実行する場合に、アトミック性を担保しようとすると、単一のレコードごとにトランザクション処理を実行することになるため、処理効率が低下してしまう。また、上記非特許文献1には、複数のレコード群に対するアクセス権を管理する方法が開示されているが、この方法では、管理ノードをさらに設けなければならない上、トランザクション処理を行う前段階の処理として、アクセス権を管理ノードに集約するための処理を管理ノードと他のノードとの間で行う必要があり、構成が複雑になる。
本発明は、上述した課題を解決するためになされたものであり、キーと値とのペアで構成されるレコードを管理する環境下でトランザクション処理を実行する場合であっても、簡易な構成で、複数のレコードに対するトランザクション処理を行うことができるトランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラムを提供することを目的の一例とする。
本発明の一側面であるトランザクション処理装置は、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定部と、前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集部と、前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新部と、前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新部と、を備える。
本発明の一側面であるトランザクション処理方法は、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定ステップと、前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集ステップと、前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新ステップと、前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新ステップと、を含む。
本発明の一側面であるトランザクション処理プログラムは、上記トランザクション処理方法に含まれる各ステップをコンピュータに実行させる。
本発明によれば、キーと値とのペアで構成されるレコードを管理する環境下でトランザクション処理を実行する場合であっても、簡易な構成で、複数のレコードに対するトランザクション処理を行うことができる。
第1実施形態におけるトランザクション処理装置の構成を例示する図である。 第1実施形態におけるトランザクション処理装置の動作を説明するためのフローチャートである。 第1実施形態におけるトランザクション処理装置の動作を説明するためのシーケンスチャートである。 第1実施形態におけるトランザクション開始処理の手順を説明するためのフローチャートである。 変形例におけるトランザクション処理装置の動作を説明するためのシーケンスチャートである。 変形例におけるトランザクション開始処理の手順を説明するためのフローチャートである。 第2実施形態におけるトランザクション処理装置の動作を説明するためのシーケンスチャートである。 第2実施形態におけるトランザクション開始処理の手順を説明するためのフローチャートである。 第2実施形態におけるトランザクション開始処理の手順を説明するためのフローチャートである。
以下、添付図面を参照して、本発明に係るトランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラムの好適な実施形態について説明する。
実施形態を説明する前に、WAL(Write Ahead Logging)について説明する。WALは、一般的なリレーショナルデータベースシステムにおけるトランザクション処理手法の一つであり、データベースに対してデータを変更する前に、変更内容をログ(トランザクションログ)に書き出す手法である。WALは、アトミック性を確保して実行され、ログを永続的な記憶装置に書き込むという特徴を有する。このようなWALをトランザクション処理に採用することで、トランザクションのACID(Atomicity Consistency Isolation Durability)特性のうち、“A(Atomicity)”と“D(Durability)”とを実現できる。
WALを採用するトランザクション処理では、2種類のデータを更新することになる。一つはログの更新であり、もう一つは実データの更新である。これら2種類のデータは、永続的な記憶装置に書き込まれるタイミングが異なる。ログは、トランザクションのコミット時に書き込まれ、実データは、チェックポイント時に書き込まれる。実データをチェックポイント時に書き込むことで、永続的な記憶装置として一般的に用いられる低速なハードディスクへのアクセス回数を減らすことができる。
本願発明は、このようなWALを、KVSを用いてトランザクション処理を行う環境に採用し、以下に記載する各種の仕組みを加えることで、複数のレコードに対するトランザクション処理を可能とした。以下に、このような特徴を有する本願発明の実施形態について説明する。
[第1実施形態]
まず、図1を参照して、第1実施形態におけるトランザクション処理装置の機能構成について説明する。トランザクション処理装置10は、機能的には、例えば、トランザクション処理部11と、レコード更新部12とを有する。KVS20は、単一レコードに対する操作のアトミック性と、単一レコードに対するCAS(Compare and Swap)命令とを備えるデータベースである。KVS20は、キーと値とのペアで構成されるレコードを管理し、複数のサーバ装置に分散して構築される。
本実施形態におけるログは、実際のレコードと同様に、キーと値とのペアで構成される。ログは、各レコードの最新の内容を保持し、実際のレコードとは別にKVS20に格納される。例えば、KVS20に、レコードとして、(key, value) = (key1, 10)が格納されており、このレコードに対応するログとして、(key, value) = (WAL#key1, 20)が格納されている場合には、“key1”の最新の内容は、“20”となる。
ログのキー(key)には、例えば、WALのログであることを示す識別子“WAL#”に、そのログに対応するレコードのキー“key1”の属性値を付加したデータが格納される。ログの値(value)には、例えば、そのログに対応するレコードの値と、“version”とが格納される。“version”には、現在のログのバージョンを示す値が格納される。ログを新たに生成したときには、“version”に“1”が格納され、ログを更新したときには、“version”に格納されている値がインクリメントされる。
また、ログが後述する従属ログである場合には、ログの値(value)に、後述する処理中識別情報がさらに格納される。
KVS20は、複数のサーバ装置に分散して構築されるが、一つのログは、その内容が複数のサーバ装置に分散して格納されるのではなく、いずれか一つのサーバ装置にまとめて格納される。つまり、一つのログは、その内容の全てが物理的に同一の記憶領域内にまとめて格納される。
ここで、トランザクション処理装置10は、物理的には、例えば、CPU(Central Processing Unit)と、記憶装置と、入出力インターフェースとを含んで構成される。記憶装置には、例えば、CPUで処理されるプログラムおよびデータを記憶するROM(Read Only Memory)やHDD(Hard Disk Drive)、主として制御処理のための各種作業領域として使用されるRAM(Random Access Memory)等が含まれる。これらの要素は、互いにバスを介して接続されている。CPUが、ROMに記憶されたプログラムを実行し、入出力インターフェースを介して受信される命令や、RAMに展開されるデータを処理することで、トランザクション処理装置10における各部の機能を実現することができる。
図1に示すトランザクション処理部11は、アプリケーションから受信する処理要求にしたがって処理を実行する。処理要求には、例えば、クエリが含まれる。トランザクション処理部11は、代表キー決定部111と、ログ編集部112と、ログ更新部113とを含む。
代表キー決定部111は、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する。代表キーを決定する方法として、例えば、最初に指定したキーを代表キーに決定する方法や、辞書的に最も若いキーを代表キーに決定する方法、ランダムに選択したキーを代表キーに決定する方法等を採用することができる。
代表キー決定部111は、代表キーのレコードに対応するログを代表ログとする。代表キー決定部111は、上記レコード群の各レコードに対応するログのうち、代表ログ以外のログを従属ログとする。
ログ編集部112は、代表ログおよび従属ログをKVS20から取得する。ログ編集部112は、トランザクション処理中であることを識別するための処理中識別情報を、KVS20から取得した従属ログに付加し、CAS命令を用いてKVS20の従属ログを更新する。なお、従属ログに付加する情報は、処理中識別情報には限定されず、整合性を保持する対象であることを識別するための情報(整合対象情報)であればよい。
ここで、CAS命令によるログの更新は、例えば以下の手順で実行することができる。
最初に、KVS20からログを取得した時に、ログの“version”の値を一時的に記憶する。続いて、KVS20のログを更新する時に、KVS20に記憶されているログの“version”の値と、上記一時的に記憶した“version”の値とを比較する。続いて、比較した“version”の値が同じである場合に、KVS20のログを更新し、ログの更新を成功とする。一方、比較した“version”の値が異なる場合には、KVS20のログを更新せずに、ログの更新を失敗とする。
ログを更新する際にCAS命令を用いることで、以下の理由により、ログデータの一貫性を保持することができる。まず、比較した“version”の値が同じである場合には、他のトランザクションがKVS20のログを更新していないことを意味する。したがって、この場合には、KVS20のログを更新してもデータの一貫性が保持されることになる。一方、比較した“version”の値が異なる場合には、そのトランザクションが処理をしている間に他のトランザクションがKVS20のログを更新したことを意味する。したがって、この場合には、KVS20のログの更新を中止することでデータの一貫性が保持されることになる。
ログ編集部112は、KVS20からログを取得する際に、ログが存在しない場合には、以下のように処理する。
最初に、トランザクションの対象となるレコードを、get命令を用いてKVS20から取得する。続いて、create命令を用いてKVS20にログを生成する。続いて、上記取得したレコードの複製を、上記生成したログに、set命令またはCAS命令を用いて格納する。なお、ログをKVS20に生成するタイミングは、任意に設定することができる。例えば、KVS20にレコードを生成する際に、そのレコードのログをKVS20に生成することとしてもよい。ログをKVS20に生成する際には、set命令またはCAS命令を用いることができる。
ログ更新部113は、KVS20から取得した代表ログおよび従属ログに含まれるデータ(各レコードの値)をクエリに応じて更新(update)し、その更新後の内容を代表ログに書き込む。ログ更新部113は、代表ログに書き込んだ更新後の内容で、KVS20の代表ログを更新する。KVS20の代表ログを更新する際には、CAS命令を用いる。
レコード更新部12は、トランザクション処理が終了した後に、KVS20から代表ログを取得し、代表ログに書き込まれた更新情報に基づいて、レコード群に含まれるKVS20の各レコードを更新する。レコード更新部12は、KVS20の各ログの内容を、更新後の最新の各レコードの内容で書き換え更新する。KVS20の各ログを書き換え更新する際には、CAS命令を用いる。各ログを書き換え更新することで、各ログから処理中識別情報を削除することができる。
なお、各ログから処理中識別情報を削除する方法は、CAS命令を用いてKVS20のログを更新することには限定されず、例えば、delete命令を用いてログをKVS20から削除することとしてもよい。また、レコード更新部12による更新処理は、トランザクションが終了した後の任意のタイミングで実行することができる。
次に、図2および図3を参照して、第1実施形態におけるトランザクション処理装置10の動作について説明する。本動作例では、アプリケーションがRecord1およびRecord2に整合性を要求する場合について説明する。また、Record1およびRecord2に対応するログを、それぞれログ1およびログ2とする。また、Record1およびRecord2のキーをそれぞれ、key1およびkey2とする。
最初に、アプリケーションが、トランザクション処理部11に、begin命令を送信する(図3ステップS201)と、トランザクション処理部11は、トランザクション開始処理を実行する(図2ステップS101)。
ここで、図4(図3も適宜参照)を参照して、上記ステップS101で実行されるトランザクション開始処理の内容を詳細に説明する。
最初に、トランザクション処理部11の代表キー決定部111は、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーの中から、代表キーを決定する(図4ステップS301)。ここでは、key1が代表キーに決定されたこととする。
続いて、トランザクション処理部11のログ編集部112は、代表ログを取得するためのget命令をKVS20に送信し(図3ステップS202)、代表ログであるログ1をKVS20から取得する(図4ステップS302)。
続いて、トランザクション処理部11のログ編集部112は、取得した代表ログがロック中であるか否かを判定する(図4ステップS303)。ログがロック中であるか否かは、ログに処理中識別情報が書き込まれているか否かで判定する。つまり、ログに処理中識別情報が書き込まれている場合には、ロック中であり、ログに処理中識別情報が書き込まれていない場合には、ロック中ではないと判定する。代表ログに処理中識別情報が書き込まれている場合としては、その代表ログが既に他のレコード群の従属ログになっている場合等が該当する。
上記ステップS303の判定で代表ログがロック中であると判定された場合(ステップS303;YES)に、トランザクション処理部11は、トランザクション開始処理の失敗を通知し(図4ステップS310)、トランザクション開始処理を終了する。なお、この場合、トランザクション開始処理を終了させずに、所定時間待機した後に、上記ステップS302に処理を移行し、KVS20から代表ログを取得するステップから再開してもよい。
一方、上記ステップS303の判定で代表ログがロック中ではないと判定された場合(ステップS303;NO)に、トランザクション処理部11のログ編集部112は、未取得の従属ログが存在するか否かを判定する(図4ステップS304)。この判定がNOである場合(ステップS304;NO)に、トランザクション処理部11は、トランザクション開始処理の成功を通知し(図4ステップS311)、トランザクション開始処理を終了する。
一方、上記ステップS304の判定で未取得の従属ログが存在すると判定された場合(ステップS304;YES)に、トランザクション処理部11のログ編集部112は、従属ログを取得するためのget命令をKVS20に送信し(図3ステップS203)、従属ログであるログ2をKVS20から取得する(図4ステップS305)。
続いて、トランザクション処理部11のログ編集部112は、取得した従属ログがロック中であるか否かを判定する(図4ステップS306)。この判定がYESである場合(ステップS306;YES)には、処理を後述するステップS309に移行する。
一方、上記ステップS306の判定で従属ログがロック中ではないと判定された場合(ステップS306;NO)に、トランザクション処理部11のログ編集部112は、取得した従属ログに処理中識別情報を付加し、CAS命令を用いてKVS20の従属ログを更新する(図4ステップS307、図3ステップS204)。
続いて、トランザクション処理部11のログ編集部112は、上記ステップS307の更新が成功したか否かを判定する(図4ステップS308)。この判定がYESである場合(ステップS308;YES)には、処理を上述したステップS304に移行する。
一方、上記ステップS308の判定で更新が失敗したと判定された場合(ステップS308;NO)に、トランザクション処理部11のログ編集部112は、上記ステップS307で既に更新した従属ログがあれば、その従属ログを元の状態に戻し(図4ステップS309)、トランザクション開始処理の失敗を通知する(図4ステップS310)。そして、トランザクション開始処理を終了する。
図4の説明から図2および図3の説明に戻る。図2のステップS101でのトランザクション開始処理が終了すると、アプリケーションは、トランザクション開始処理が成功したか否かを判定する(図2ステップS102)。この判定がNOである場合(ステップS102;NO)には、本動作を終了する。
一方、上記ステップS102の判定でトランザクション開始処理が成功したと判定された場合(ステップS102;YES)に、トランザクション処理部11のログ更新部113は、KVS20から取得した各ログに含まれるデータをクエリに応じて更新し、その更新後の内容を代表ログに書き込む(図2ステップS103)。
続いて、アプリケーションおよびトランザクション処理部11は、コミット処理を実行する(図2ステップS104)。コミット処理は、例えば以下の手順で行う(図3参照)。
最初に、アプリケーションは、更新を確定するために、commit命令をトランザクション処理部11に送信する(図3ステップS206)。続いて、トランザクション処理部11のログ更新部113は、CAS命令を用いて代表ログであるKVS20のログ1を更新する(図3ステップS207)。CAS命令が成功すると、トランザクション処理部11のログ更新部113は、更新が成功したことを示す応答をアプリケーションに送信する(図3ステップS208)。
なお、CAS命令が失敗した場合には、ログ1が他のトランザクションによって書き換えられていたことを意味するため、トランザクション処理部11のログ更新部113は、更新が失敗したことを示す応答をアプリケーションに送信する。
図2の説明に戻る。上記ステップS104のコミット処理に続いて、アプリケーションおよびトランザクション処理部11は、トランザクション終了処理を実行し(図2ステップS105)、本動作を終了する。トランザクション終了処理は、例えば以下の手順で行う(図3参照)。
最初に、アプリケーションは、トランザクション処理を終了するために、end命令をトランザクション処理部11に送信する(図3ステップS209)。続いて、トランザクション処理部11は、代表ログの内容を各レコードに反映させるために、reflect命令をレコード更新部12に送信する(図3ステップS210)。続いて、レコード更新部12は、get命令をKVS20に送信し(図3ステップS211)、KVS20からログ1を取得する。
続いて、レコード更新部12は、Record1を更新するために、set命令をKVS20に送信し(図3ステップS212)、Record2を更新するために、set命令をKVS20に送信する(図3ステップS213)。続いて、レコード更新部12は、更新後のRecord1の内容でログ1を書き換えるために、CAS命令を用いてKVS20のログ1を更新する(図3ステップS214)。続いて、レコード更新部12は、更新後のRecord2の内容でログ2を書き換えるために、CAS命令を用いてKVS20のログ2を更新する(図3ステップS215)。
上述したように、第1実施形態におけるトランザクション処理装置10によれば、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーから代表キーを決定することができ、代表キーに対応する代表ログ以外の従属ログに対して、CAS命令を用いて処理中識別情報を付加することができる。これにより、他のトランザクションによる従属ログへのアクセスを制限することが可能となる。
また、第1実施形態におけるトランザクション処理装置10によれば、レコード群の各レコードに対する更新情報を、KVS20の代表ログにCAS命令を用いて書き込むことができ、代表ログに書き込んだ更新情報を、KVS20にあるレコード群の各レコードにCAS命令を用いて書き込むことができる。これにより、レコード群の各レコードに対する更新情報を、単一の代表ログで管理して各レコードに反映することができるため、複数のレコードに対して整合性を保持したままデータ更新することが可能となる。
それゆえに、第1実施形態におけるトランザクション処理装置10によれば、KVSを用いてトランザクション処理を実行する場合であっても、簡易な構成で、複数のレコードに対するトランザクション処理を行うことができる。
[第1実施形態の変形例]
なお、上述した第1実施形態におけるトランザクション処理装置10では、従属ログに処理中識別情報を付加して他のトランザクション処理を排他している(悲観的並行性制御)が、代表ログには処理中識別情報を付加せず、他のトランザクション処理を排他していない(楽観的並行性制御)。したがって、例えば、図3のステップS207のCAS命令が失敗する可能性がある。そこで、代表ログにも処理中識別情報を付加して他のトランザクション処理を排他することとしてもよい。
この変形例におけるトランザクション処理装置10の動作について、図5および図6を参照して説明する。図5は、上述した図3に対応するシーケンスチャートである。図5が図3と異なるのは、図3のステップS202とステップS203との間に、ステップS401が追加されている点である。図6は、上述した図4に対応するフローチャートである。図6が図4と異なるのは、図4のステップS303とステップS304との間に、ステップS501およびステップS502が追加されている点である。以下においては、上述した第1実施形態と相違する点について説明する。
図6に示すトランザクション開始処理におけるステップS303の判定で代表ログがロック中ではないと判定された場合(ステップS303;NO)に、トランザクション処理部11のログ編集部112は、取得した代表ログに処理中識別情報を付加し、CAS命令を用いてKVS20の代表ログを更新する(図6ステップS501、図5ステップS401)。
続いて、トランザクション処理部11のログ編集部112は、上記ステップS501の更新が成功したか否かを判定する(図6ステップS502)。この判定がYESである場合(ステップS502;YES)には、処理を上述したステップS304に移行する。
一方、上記ステップS502の判定で更新が失敗したと判定された場合(ステップS502;NO)に、トランザクション処理部11のログ編集部112は、トランザクション開始処理の失敗を通知する(図6ステップS310)。そして、トランザクション開始処理を終了する。
この変形例によれば、代表ログに対してもトランザクション処理中であることを識別するための処理中識別情報を、CAS命令を用いて付加することができる。これにより、他のトランザクションによる代表ログおよび従属ログへのアクセスを制限することが可能となる。
[第2実施形態]
本発明の第2実施形態について説明する。第2実施形態におけるトランザクション処理装置10の構成は、図1に示す第1実施形態におけるトランザクション処理装置10の構成と同様である。上述した第1実施形態におけるトランザクション処理装置10は、トランザクション処理中の従属ログに処理中識別情報を付加して、他のトランザクション処理を排他する悲観的並行性制御を採用している。これに対して、第2実施形態におけるトランザクション処理装置10は、楽観的並行性制御を採用する点で、第1実施形態におけるトランザクション処理装置10と相違する。
具体的に、第2実施形態では、トランザクション処理中の従属ログに代表キーを特定するための代表キー識別情報を付加して、他のトランザクションがログをたどって処理を継続できるようにし、先にコミット処理を完了させたトランザクションの結果がKVS20に反映され、後からコミット処理を行ったトランザクションが失敗するという楽観的並行性制御を採用している。これに伴い、トランザクション処理部11に含まれる代表キー決定部111、ログ編集部112、およびログ更新部113の機能の一部が相違する。以下においては、第1実施形態との相違点に主眼を置いて説明する。
図2および図7を参照して、第2実施形態におけるトランザクション処理装置10の動作について説明する。本動作例では、上述した第1実施形態の動作例と同様に、アプリケーションがRecord1およびRecord2に整合性を要求する場合について説明する。また、Record1およびRecord2に対応するログを、それぞれログ1およびログ2とする。また、Record1およびRecord2のキーをそれぞれ、key1およびkey2とする。
図7は、上述した第1実施形態における図3に対応するシーケンスチャートである。図7が図3と異なるのは、図3のステップS204に替えて、ステップS601およびステップS602が追加されている点である。第2実施形態のトランザクション処理装置10では、図2に示す各処理のうち、ステップS101におけるトランザクション開始処理の内容が、上述した第1実施形態のトランザクション処理装置10と相違する。したがって、以下においては、第2実施形態のトランザクション開始処理について、図8および図9を参照して説明する。
最初に、トランザクション処理部11の代表キー決定部111は、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーの中から、代表キーを決定する(図8ステップS701)。ここでは、key1が代表キーに決定されたこととする。
続いて、トランザクション処理部11のログ編集部112は、代表ログを取得するためのget命令をKVS20に送信し(図7ステップS202)、代表ログであるログ1をKVS20から取得する(図8テップS702)。
続いて、トランザクション処理部11のログ編集部112は、取得した代表ログに、既に代表キー識別情報が書き込まれているか否かを判定する(図8ステップS703)。代表ログに代表キー識別情報が書き込まれている場合としては、その代表ログが既に他のレコード群の従属ログになっている場合等が該当する。
上記ステップS703の判定で代表ログに代表キー識別情報が書き込まれていると判定された場合(ステップS703;YES)には、処理を上記ステップS701に移行する。そして、トランザクション処理部11の代表キー決定部111は、書き込まれている代表キー識別情報に対応する代表キーを、新たな代表キーとして決定し直す。この代表キーをたどる処理は、取得した代表ログに代表キー識別情報が書き込まれている間、繰り返される。これにより、最上位の代表キーを代表キーとして選定することができる。
一方、上記ステップS703の判定で代表ログに代表キー識別情報が書き込まれていないと判定された場合(ステップS703;NO)に、トランザクション処理部11のログ編集部112は、未取得の従属ログが存在するか否かを判定する(図8ステップS704)。この判定がYESである場合(ステップS704;YES)に、トランザクション処理部11のログ編集部112は、従属ログを取得するためのget命令をKVS20に送信し(図7ステップS203)、従属ログであるログ2をKVS20から取得する(図8ステップS705)。
続いて、トランザクション処理部11のログ編集部112は、取得した従属ログに、既に代表キー識別情報が書き込まれているか否かを判定する(図8ステップS706)。従属ログに代表キー識別情報が書き込まれている場合としては、その従属ログが既に他のレコード群の従属ログになっている場合等が該当する。
上記ステップS706の判定で従属ログに代表キー識別情報が書き込まれていると判定された場合(ステップS706;YES)に、トランザクション処理部11のログ編集部112は、書き込まれている代表キー識別情報に対応する代表ログを、上記ステップS705(または前回のステップS708)で取得した従属ログに代替させる従属ログとしてKVS20から取得する(図8ステップS708)。そして、処理を上述したステップS706に移行する。
一方、上記ステップS706の判定で従属ログに代表キー識別情報が書き込まれていないと判定された場合(ステップS706;NO)に、トランザクション処理部11のログ編集部112は、上記ステップS705またはステップS708で取得した従属ログの内容を、上記ステップS702で取得した代表ログに付加して書き込む(ステップS707)。そして、処理を上述したステップS704に移行する。
一方、上記ステップS704の判定で未取得の従属ログが存在しないと判定された場合(ステップS704;YES)に、トランザクション処理部11のログ編集部112は、CAS命令を用いてKVS20の代表ログを更新する(図9ステップS709、図7ステップS601)。
続いて、トランザクション処理部11のログ編集部112は、上記ステップS709の更新が成功したか否かを判定する(図9ステップS710)。この判定がNOである場合(ステップS710;NO)に、トランザクション処理部11は、トランザクション開始処理の失敗を通知し(図9ステップS715)、トランザクション開始処理を終了する。
一方、上記ステップS710の判定で更新が成功したと判定された場合(ステップS710;YES)に、トランザクション処理部11のログ編集部112は、未更新の従属ログが存在するか否かを判定する(図9ステップS711)。この判定がNOである場合(ステップS711;NO)に、トランザクション処理部11は、トランザクション開始処理の成功を通知し(図9ステップS716)、トランザクション開始処理を終了する。
一方、上記ステップS711の判定で未更新の従属ログが存在すると判定された場合(ステップS711;YES)に、トランザクション処理部11のログ編集部112は、上記ステップS705またはステップS708で取得した従属ログに、上記ステップS701で決定した代表キーの代表キー識別情報を付加し、CAS命令を用いてKVS20の従属ログを更新する(図9ステップS712、図7ステップS602)。
続いて、トランザクション処理部11のログ編集部112は、上記ステップS712の更新が成功したか否かを判定する(図9ステップS713)。この判定がYESである場合(ステップS713;YES)には、処理を上述したステップS711に移行する。
一方、上記ステップS713の判定で更新が失敗したと判定された場合(ステップS713;NO)に、トランザクション処理部11のログ編集部112は、既に更新したログがあれば、その更新したログを元の状態に戻し(図9ステップS714)、トランザクション開始処理の失敗を通知する(図9ステップS715)。そして、トランザクション開始処理を終了する。
上述したように、第2実施形態におけるトランザクション処理装置10によれば、トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーから代表キーを決定することができ、代表キーに対応する代表ログ以外の従属ログに対して、CAS命令を用いて代表キー識別情報を付加することができる。これにより、他のトランザクションによる従属ログへのアクセスを制限することが可能となる。
また、第2実施形態におけるトランザクション処理装置10によれば、従属ログの内容をKVS20の代表ログにCAS命令を用いて書き加えることができ、レコード群の各レコードに対する更新情報を、KVS20の代表ログにCAS命令を用いて書き込むことができ、さらに、代表ログに書き込んだ更新情報を、KVS20にあるレコード群の各レコードにCAS命令を用いて書き込むことができる。これにより、レコード群の各レコードに対する更新情報を、単一の代表ログで管理して各レコードに反映することができるため、複数のレコードに対して整合性を保持したままデータ更新することが可能となる。
また、第2実施形態におけるトランザクション処理装置10によれば、代表キーに決定された代表ログが既に他のレコード群の従属ログとして設定されている場合には、既にログに書き込まれている代表キー識別情報をたどっていくことで、最上位のログを探索し、そのログに対応するキーを代表キーとして決定することが可能となる。
また、第2実施形態におけるトランザクション処理装置10によれば、従属ログが既に他のレコード群の従属ログとして設定されている場合には、既にログに書き込まれている代表キー識別情報をたどっていくことで、従属ログの最上位にあたるログを探索し、そのログの内容を代表ログに書き加えることが可能となる。
それゆえに、第2実施形態におけるトランザクション処理装置10によれば、KVSを用いてトランザクション処理を実行する場合であっても、簡易な構成で、複数のレコードに対するトランザクション処理を行うことができる。
なお、上述した各実施形態は、単なる例示に過ぎず、各実施形態に明示していない種々の変形や技術の適用を排除するものではない。すなわち、本発明は、その趣旨を逸脱しない範囲で様々な形態に変形して実施することができる。
例えば、上述した各実施形態の一部または全部は、以下の付記のようにも記載され得るが、本発明は以下に限定されない。
(付記1) トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定部と、前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集部と、前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新部と、前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新部と、を備えることを特徴とするトランザクション処理装置。
(付記2) 前記整合対象情報は、トランザクション処理中であることを識別するための処理中識別情報であり、前記ログ編集部は、前記処理中識別情報を前記代表ログに付加して更新する、ことを特徴とする付記1記載のトランザクション処理装置。
(付記3) 前記整合対象情報は、前記代表キーを特定するための代表キー識別情報であり、前記ログ更新部は、前記代表キー決定部により前記代表キーが決定された場合に、前記代表ログに前記従属ログの内容を書き加えて更新する、ことを特徴とする付記1記載のトランザクション処理装置。
(付記4) 前記代表キー決定部は、決定した前記代表ログに対して既に前記代表キー識別情報が付加されている場合には、既に付加されている前記代表キー識別情報で特定されるキーを、前記代表キーに決定し直す、ことを特徴とする付記3記載のトランザクション処理装置。
(付記5) 前記ログ更新部は、前記従属ログに対して既に前記代表キー識別情報が付加されている場合には、既に付加されている前記代表キー識別情報に対応するログの内容を前記従属ログの内容として、前記代表ログに書き加えて更新する、ことを特徴とする付記3または4記載のトランザクション処理装置。
(付記6) 前記ログおよび前記レコードは、物理的に複数の記憶領域から構成されるKVS(Key-Value Store)に格納される、ことを特徴とする付記1〜5のいずれか1に記載のトランザクション処理装置。
(付記7) 前記ログ編集部、前記ログ更新部および前記レコード更新部は、CAS(Compare and Swap)命令を用いて前記KVSの前記ログを更新する、ことを特徴とする付記6記載のトランザクション処理装置。
(付記8) トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定ステップと、前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集ステップと、前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新ステップと、前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新ステップと、を含むことを特徴とするトランザクション処理方法。
(付記9) 付記8に記載の各ステップをコンピュータに実行させるためのトランザクション処理プログラム。
10…トランザクション処理装置、11…トランザクション処理部、12…レコード更新部、111…代表キー決定部、112…ログ編集部、113…ログ更新部。

Claims (9)

  1. トランザクション処理の開始が要求されるたびに、前記トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定部と、
    前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集部と、
    前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新部と、
    前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新部と、
    を備えることを特徴とするトランザクション処理装置。
  2. 前記整合対象情報は、トランザクション処理中であることを識別するための処理中識別情報であり、
    前記ログ編集部は、前記処理中識別情報を前記代表ログに付加して更新する、
    ことを特徴とする請求項1記載のトランザクション処理装置。
  3. 前記整合対象情報は、前記代表キーを特定するための代表キー識別情報であり、
    前記ログ更新部は、前記代表キー決定部により前記代表キーが決定された場合に、前記代表ログに前記従属ログの内容を書き加えて更新する、
    ことを特徴とする請求項1記載のトランザクション処理装置。
  4. 前記代表キー決定部は、決定した前記代表ログに対して既に前記代表キー識別情報が付加されている場合には、既に付加されている前記代表キー識別情報で特定されるキーを、前記代表キーに決定し直す、
    ことを特徴とする請求項3記載のトランザクション処理装置。
  5. 前記ログ更新部は、前記従属ログに対して既に前記代表キー識別情報が付加されている場合には、既に付加されている前記代表キー識別情報に対応するログの内容を前記従属ログの内容として、前記代表ログに書き加えて更新する、
    ことを特徴とする請求項3または4記載のトランザクション処理装置。
  6. 前記ログおよび前記レコードは、物理的に複数の記憶領域から構成されるKVS(Key-Value Store)に格納される、ことを特徴とする請求項1〜5のいずれか1項に記載のトランザクション処理装置。
  7. 前記ログ編集部、前記ログ更新部および前記レコード更新部は、CAS(Compare and Swap)命令を用いて前記KVSの前記ログを更新する、ことを特徴とする請求項6記載のトランザクション処理装置。
  8. トランザクション処理の開始が要求されるたびに、前記トランザクション処理で整合性を保持する対象となるレコード群の各レコードのキーのうち、いずれか一つを代表キーに決定する代表キー決定ステップと、
    前記整合性を保持する対象であることを識別するための整合対象情報を、前記レコード群の各レコードに対応するログのうち、前記代表キーに対応する代表ログ以外のログである従属ログに付加して更新するログ編集ステップと、
    前記レコード群の各レコードに対する更新情報を、前記代表ログに書き込んで更新するログ更新ステップと、
    前記代表ログに書き込まれた前記更新情報を、前記レコード群の各レコードに反映させて更新するレコード更新ステップと、
    を含むことを特徴とするトランザクション処理方法。
  9. 請求項8に記載の各ステップをコンピュータに実行させるためのトランザクション処理プログラム。

JP2011105031A 2011-05-10 2011-05-10 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム Active JP5721056B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2011105031A JP5721056B2 (ja) 2011-05-10 2011-05-10 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
US13/461,622 US8600962B2 (en) 2011-05-10 2012-05-01 Transaction processing device, transaction processing method, and transaction processing program
CN201210140525.6A CN102779088B (zh) 2011-05-10 2012-05-08 事务处理设备、事务处理方法及事务处理程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011105031A JP5721056B2 (ja) 2011-05-10 2011-05-10 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム

Publications (2)

Publication Number Publication Date
JP2012238061A JP2012238061A (ja) 2012-12-06
JP5721056B2 true JP5721056B2 (ja) 2015-05-20

Family

ID=47124006

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011105031A Active JP5721056B2 (ja) 2011-05-10 2011-05-10 トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム

Country Status (3)

Country Link
US (1) US8600962B2 (ja)
JP (1) JP5721056B2 (ja)
CN (1) CN102779088B (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9037556B2 (en) * 2012-12-03 2015-05-19 Vmware, Inc. Distributed, transactional key-value store
JP6281225B2 (ja) * 2013-09-30 2018-02-21 日本電気株式会社 情報処理装置
US10332129B2 (en) * 2013-11-01 2019-06-25 Salesforce.Com, Inc. Methods and systems for processing a log file
US9858305B2 (en) 2014-03-06 2018-01-02 International Business Machines Corporation Restoring database consistency integrity
US10191690B2 (en) 2014-03-20 2019-01-29 Nec Corporation Storage system, control device, memory device, data access method, and program recording medium
US10339126B2 (en) 2014-08-11 2019-07-02 Salesforce.Com, Inc. Processing log files using a database system
US9893947B2 (en) * 2015-06-26 2018-02-13 International Business Machines Corporation Transactional orchestration of resource management and system topology in a cloud environment

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5701480A (en) * 1991-10-17 1997-12-23 Digital Equipment Corporation Distributed multi-version commitment ordering protocols for guaranteeing serializability during transaction processing
US6374264B1 (en) * 1998-09-04 2002-04-16 Lucent Technologies Inc. Method and apparatus for detecting and recovering from data corruption of a database via read prechecking and deferred maintenance of codewords
JP4306023B2 (ja) * 1999-06-07 2009-07-29 株式会社日立製作所 トランザクション処理向けストレージ方法および装置、トランザクショナルストレージ
JP2001013923A (ja) 1999-06-28 2001-01-19 Toppan Printing Co Ltd 有機エレクトロルミネッセンス表示素子およびその駆動方法
JP2001344138A (ja) * 2000-05-30 2001-12-14 Ricoh Co Ltd データベースロギング方法及びデータベース回復方法
JP2004062759A (ja) * 2002-07-31 2004-02-26 Hitachi Ltd データベースログの管理方法、その装置およびそのプログラム
EP1851662A2 (en) * 2005-02-24 2007-11-07 Xeround Systems Ltd. Method and apparatus for distributed data management in a switching network
US20060195460A1 (en) * 2005-02-28 2006-08-31 Microsoft Corporation Data model for object-relational data
JP4794571B2 (ja) * 2005-12-02 2011-10-19 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースに対するアクセスを効率化するシステム、および、その方法
JP5139028B2 (ja) * 2007-10-24 2013-02-06 エイチジーエスティーネザーランドビーブイ コンテンツデータ管理システム及び方法
JP5109676B2 (ja) * 2008-01-22 2012-12-26 富士通株式会社 データ整合性を確保するためのプログラム、方法及びコンピュータ・システム
JP5385545B2 (ja) * 2008-04-17 2014-01-08 インターナショナル・ビジネス・マシーンズ・コーポレーション トランザクションの実行を制御する装置及び方法
JP4392676B1 (ja) 2009-06-25 2010-01-06 修平 西山 キー・バリュー・ストアによるデータベース・キャッシュ装置
JP4385387B1 (ja) 2009-07-02 2009-12-16 修平 西山 属性付きキー・バリュー・ストアによるデータベース・システム
JP4917138B2 (ja) * 2009-10-07 2012-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション オブジェクト最適配置装置、オブジェクト最適配置方法、及びオブジェクト最適配置プログラム
US8315977B2 (en) * 2010-02-22 2012-11-20 Netflix, Inc. Data synchronization between a data center environment and a cloud computing environment
US8412689B2 (en) * 2010-07-07 2013-04-02 Microsoft Corporation Shared log-structured multi-version transactional datastore with metadata to enable melding trees
US8332433B2 (en) * 2010-10-18 2012-12-11 Verisign, Inc. Database synchronization and validation

Also Published As

Publication number Publication date
JP2012238061A (ja) 2012-12-06
CN102779088B (zh) 2016-12-14
US20120290547A1 (en) 2012-11-15
US8600962B2 (en) 2013-12-03
CN102779088A (zh) 2012-11-14

Similar Documents

Publication Publication Date Title
JP6553822B2 (ja) 分散システムにおける範囲の分割および移動
JP5721056B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
JP5807777B2 (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
US11132350B2 (en) Replicable differential store data structure
US10216588B2 (en) Database system recovery using preliminary and final slave node replay positions
US8103621B2 (en) HSM two-way orphan reconciliation for extremely large file systems
JP5387757B2 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US9892183B2 (en) Computer system, computer system management method, and program
US7433902B2 (en) Non-disruptive backup copy in a database online reorganization environment
US11074224B2 (en) Partitioned data replication
WO2016192496A1 (zh) 数据迁移处理方法及装置
WO2016143095A1 (ja) 計算機システム及びトランザクション処理の管理方法
US7549029B2 (en) Methods for creating hierarchical copies
JP2013222373A (ja) ストレージシステム、キャッシュ制御プログラムおよびキャッシュ制御方法
JP2009064159A (ja) 計算機システム、管理計算機及びデータ管理方法
US10162841B1 (en) Data management platform
US8825603B2 (en) Ordering volumes and tracks for data transfer based on usage characteristics
US20170177615A1 (en) TRANSACTION MANAGEMENT METHOD FOR ENHANCING DATA STABILITY OF NoSQL DATABASE BASED ON DISTRIBUTED FILE SYSTEM
CN108256019A (zh) 数据库主键生成方法、装置、设备及其存储介质
JP2016149049A (ja) 情報処理装置、情報処理システム、ペアデータ更新方法及びプログラム
JP2006040065A (ja) データ記憶装置およびデータ記憶方法
WO2016117322A1 (ja) 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム記録媒体
US11531644B2 (en) Fractional consistent global snapshots of a distributed namespace
KR101375794B1 (ko) 데이터베이스의 성능을 향상하기 위한 방법 및 장치
KR20130022009A (ko) 메타데이터 연산 충돌 회피 방법 및 이를 수행하는 메타 데이터 관리 시스템

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140409

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141202

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150130

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

R150 Certificate of patent or registration of utility model

Ref document number: 5721056

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150315