JP6361223B2 - トランザクションシステム - Google Patents

トランザクションシステム Download PDF

Info

Publication number
JP6361223B2
JP6361223B2 JP2014066514A JP2014066514A JP6361223B2 JP 6361223 B2 JP6361223 B2 JP 6361223B2 JP 2014066514 A JP2014066514 A JP 2014066514A JP 2014066514 A JP2014066514 A JP 2014066514A JP 6361223 B2 JP6361223 B2 JP 6361223B2
Authority
JP
Japan
Prior art keywords
data
transaction
wal
record
storage unit
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
JP2014066514A
Other languages
English (en)
Other versions
JP2015191307A (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 JP2014066514A priority Critical patent/JP6361223B2/ja
Priority to US14/670,451 priority patent/US10007548B2/en
Publication of JP2015191307A publication Critical patent/JP2015191307A/ja
Application granted granted Critical
Publication of JP6361223B2 publication Critical patent/JP6361223B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

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

Description

本発明は、トランザクションシステム、トランザクションシステム制御方法、およびプログラムに関する。
近年、スケーラブルなアプリケーションの実行基盤として、多数のコンピュータを用いるいわゆるクラウドが注目されている。クラウドのインフラストラクチャにおいて、スケーラブルなデータ永続化手段として、キー(Key)とバリュー(Value)の組で表現されるキーバリューデータ(KVデータ)を記憶するキーバリューストア(Key Value Store(KVS))というものが広く知られている。しかしながら、通常のKVSでは1つのKVデータに対するトランザクションしか提供できない。
そこで、複数のKVデータに対してトランザクションをサポートするシステムが本発明に関連する第1の関連技術として提案されている(例えば特許文献1、非特許文献1参照)。この第1の関連技術では、複数のKVデータに対するトランザクションを実現するために、トランザクションで扱われる複数のKVデータをグルーピングし、1つのKVデータとしてKVSに書き込むことで、複数のKVデータに対するトランザクションを実現している。複数のKVデータを1つのKVデータに集約したデータを、本明細書では、データグループと呼ぶ。
また上記第1の関連技術では、KVSに対する排他制御の仕組みとして、楽観的排他を使用している。具体的には、KVデータごとにタイムスタンプが採番されており、あるトランザクションがスタートしたときに当該タイムスタンプを取得し、KVデータを更新してコミットする際にタイムスタンプがトランザクションのスタート時から変化していなければ、タイムスタンプを1つインクリメントしてKVSに書き込む。コミット時にタイムスタンプが変化していれば、当該トランザクションがスタートしてからコミットするまでの間に他のトランザクションによって先にKVデータが更新されていることになるので、当該トランザクションを失敗させる。楽観的排他では、排他制御情報などの共有資源を使用しないため、スケールアウトが容易になる。
他方、悲観的排他と呼ばれる排他制御の仕組みを採用したトランザクションシステムが本発明に関連する第2の関連技術として提案されている(例えば特許文献2参照)。この第2の関連技術では、トランザクションからのレコード更新要求に従うデータファイルの更新処理に際しては、更新するレコードへの同時アクセスを排他制御機構にて排他制御する。また、そのレコードの更新をバッファ上で行わせると共に、バッファ上でのレコード更新の履歴を生成する。トランザクションの確定時には、生成しておいたトランザクションに対応するレコード単位の更新履歴をジャーナルファイルに記録する。そして、当該ジャーナルファイルに記録した更新履歴に基づき書き込みバッファを通してブロック単位でデータファイルを更新する。
特開2012−234509号公報 特開平9−62550号公報
"ビッグデータの活用に最適なスケールアウト型 新データベース「InfoFrame Relational Store」、祐成光樹、田村稔、NEC技報、Vol.65 No.2/2012.
上述したようにスケーラブルなデータ永続化手段としてKVSが注目されており、またKVSで複数のKVデータに対してトランザクションをサポートするシステムが提案されている。しかしながら、上述したKVSに対する楽観的な排他制御の仕組みでは、1つのKVデータ単位の排他しか実現できない。複数のKVデータを1つのKVデータにまとめてトランザクションを実行するシステムにおいては、まとめられた大きな1つのKVデータが排他の単位となるため、本来は排他違反にならないようなトランザクション同士も排他違反になってしまう可能性があり、トラザクションの同時実行性が下がり、スループットが下がってしまう問題がある。本発明に関連する第2の関連技術に示される悲観的排他を適用し、大きな1つのKVデータにまとめられる前のKVデータ単位で排他することが考えられるが、悲観的排他ではスケールアウトが困難になり、KVデータを使用する意味がなくなる。
本発明の目的は、上述した課題、すなわち、複数のKVデータに対してトランザクションを実行するシステムではトランザクションの同時実行性が低下する、という課題を解決するトランザクションシステムを提供することにある。
本発明の第1の観点に係るトランザクションシステムは、
キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける上記レコードを上記バリューに格納し、上記バリューに格納した上記レコードの一部の列の値を上記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
複数の上記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、上記データグループに属する上記キーバリューデータの上記バリューに格納された上記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された上記レコードとを有する更新履歴を記憶するWAL記憶部と、
上記トランザクションのコミット時、上記WAL記憶部に記憶された上記更新履歴に基づいて上記レコード単位で排他違反の有無を判定し、排他違反がなければ上記トランザクションを成功させ、その更新履歴を上記WAL記憶部に記録するトランザクション処理部と、
上記WAL記憶部に記憶されている上記更新履歴に基づいて上記キーバリューデータ記憶部を更新するWAL反映処理部と
を有する。
本発明の第2の観点に係るトランザクションシステム制御方法は、
キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける上記レコードを上記バリューに格納し、上記バリューに格納した上記レコードの一部の列の値を上記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
複数の上記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、上記データグループに属する上記キーバリューデータの上記バリューに格納された上記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された上記レコードとを有する更新履歴を記憶するWAL記憶部と、
トランザクション処理部と、
WAL反映処理部と
を有するトランザクションシステムの制御方法であって、
上記トランザクション処理部が、上記トランザクションのコミット時、上記WAL記憶部に記憶された上記更新履歴に基づいて上記レコード単位で排他違反の有無を判定し、排他違反がなければ上記トランザクションを成功させ、その更新履歴を上記WAL記憶部に記録し、
上記WAL反映処理部が、上記WAL記憶部に記憶されている上記更新履歴に基づいて上記キーバリューデータ記憶部を更新する。
本発明の第3の観点に係るプログラムは、
キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける上記レコードを上記バリューに格納し、上記バリューに格納した上記レコードの一部の列の値を上記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
複数の上記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、上記データグループに属する上記キーバリューデータの上記バリューに格納された上記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された上記レコードとを有する更新履歴を記憶するWAL記憶部と
を有するコンピュータを、
上記トランザクションのコミット時、上記WAL記憶部に記憶された上記更新履歴に基づいて上記レコード単位で排他違反の有無を判定し、排他違反がなければ上記トランザクションを成功させ、その更新履歴を上記WAL記憶部に記録するトランザクション処理部と、
上記WAL記憶部に記憶されている上記更新履歴に基づいて上記キーバリューデータ記憶部を更新するWAL反映処理部と
して機能させる。
本発明は上述した構成を有するため、複数のKVデータを1つのKVデータにまとめてトランザクションを実行するシステムにおけるトランザクションの同時実行性を高めることが可能である。
本発明の第1の実施形態のブロック図である。 表形式データの構成例を示す図である。 表形式データから生成したKVデータの構成例を示す図である。 本発明の第1の実施形態におけるトランザクション処理部の動作の一例を示すフローチャートである。 本発明の第1の実施形態におけるKVデータおよびデータグループの説明に使用する表形式データの例を示す図である。 本発明の第1の実施形態におけるデータグループの例を示す図である。 本発明の第1の実施形態におけるWAL記憶手段に記憶されるWALの説明図である。 本発明の第1の実施形態における排他チェック処理部で排他違反無しと判断される一例を示す図である。 本発明の第1の実施形態における排他チェック処理部で排他違反有りと判断される一例を示す図である。 本発明の第1の実施形態における排他チェック処理部で排他違反無しと判断される他の例を示す図である。 本発明の第1の実施形態におけるWAL反映手段の動作の一例を示すフローチャートである。 本発明の第2の実施形態のブロック図である。
次に本発明の実施の形態について図面を参照して詳細に説明する。
[第1の実施形態]
図1を参照すると、本発明の第1の実施形態にかかるトランザクションシステム100は、トランザクション処理部110、WAL記憶部120、WAL反映処理部130、KVS140、システムカタログ150、およびアプリケーション(アプリケーションプログラム)160を備えている。
KVS140は、KVデータを記憶する機能を有する。KVS140に記憶されるKVデータは、複数のレコードから構成される表形式データから所定の変換規則に従って生成したKVデータである。。
図2は表形式データの構成例を示す。この例の表形式データは、各々の行が4つの列を有し、列1と列2と列3とが主キーになっている。本明細書では、レコードとは、表形式データの1行のデータのことを指す。
図3(a)〜(c)は、図2の表形式データから生成したKVデータの構成例を示す。KVデータでは、キーの値が一意である必要があり、レコードの格納形式によって、キーの定義方法が変わる。図3(a)のKVデータでは、図2の表の全ての主キーの組み合わせをキーとしている。このため図3(a)のKVデータは、1つのKVデータが1つのレコードに対応している。すなわち、KVデータのバリューに1つのレコードが格納されている。図3(b)のKVデータでは、列1と列2の組み合わせをキーとしている。そのため図3(b)のKVデータでは、列1と列2の値が同じ複数のレコードが1つのKVデータのバリューに格納されている。図3(c)のKVデータでは、列1をキーとしている。そのため図3(c)のKVデータでは、列1の値が同じ複数のレコードが1つのKVデータのバリューに格納されている。このように表形式データを表現するKVデータを生成する変換規則は様々なパターンが考えられ、図3に示すパターン以外の変換規則も存在する。KVS140に記憶するKVデータは、任意の変換規則に従って表形式データから生成されたKVデータであってよい。但し、以下では、説明の便宜上、1つのKVデータが1つのレコードに対応する図3(a)の変換規則を使用して、表形式データから生成されたKVデータがKVS140に記憶されているものとする。
トランザクション処理部110は、1以上備えられている。各々のトランザクション処理部110は、アプリケーション160から入力されたトランザクションを受け付け、当該トランザクションを処理する手段である。各々のトランザクション処理部110は、他のトランザクション処理部110と並行して動作する。トランザクション処理部110は、WAL管理手段111と排他チェック処理手段112とを備えている。
WAL管理手段111は、アプリケーション160から入力されたトランザクションに対して、当該トランザクションが使用するKVデータを論理的にまとめたデータグループを作成し、その更新内容をCAS(Compare And Swap)コマンド等を使用して、WALとしてWAL記憶部120に対して書き込んだり、読み出したりする手段である。
ここで、WAL(Write Ahead Log)について説明する。一般にWrite Ahead Loggingとは、データベースに対する操作前の変更内容をログに書き出すことを指し、WALとはログそのものを指す。このように、データベースへの変更は、先ずログに記録され、次いで、ログからデータベースへ反映される。但し、本発明では、ログは物理ログではなく、論理ログである。ここで、物理ログとは、更新後のKVデータのイメージから構成される。これに対して論理ログは、トランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードから構成される。データ操作命令の情報は、例えばSQLで言えば、INSERT、DELETE、UPDATEといった命令の情報のことである。
WAL記憶部120は、WAL管理手段111によって生成、または更新されたWALを保存する手段である。WAL記憶部120は、複数のトランザクション処理部110に共通に備えられる。本実施形態において、WAL記憶部120はKVSによって構成されており、WAL自体もキーとバリューとからなるKVデータとして保存される。KVSは、例えばCASコマンドを使用することにより、1つのKVデータに対するアトミック性は保証することができるが、複数のKVデータを一度のトランザクションでアトミックに処理することはできない。このため、複数のKVデータを論理的にまとめたデータグループを作成し、このデータグループに対する更新内容をWALとしてKVSに書き込むことで複数のKVデータをトランザクショナルに処理することを可能としている。なお、WAL管理手段111は、トランザクションが成功した場合に限り、当該トランザクションによる更新内容をWALとしてWAL記憶部120に書き込む。なお、図1ではWAL記憶部120とKVS140とは別々のKVSとして表現されているが、1つのKVSにまとめても良い。
排他チェック処理手段112は、トランザクションをコミットする際に、当該トランザクションがスタートしてからコミットするまでにWAL記憶部120に記憶されたWALのデータと当該トランザクションで参照や更新したレコードとに基づいて、レコード単位で排他違反の有無を判定する機能を有する。具体的には、まず排他チェック処理手段112は、当該トランザクションがスタートしてからコミットするまでにWAL記憶部120に記憶されたWALに記録されているトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードとに基づいて、挿入、削除あるいは更新されたレコードを特定する。次に排他チェック処理手段112は、上記特定したレコードと当該トランザクションで参照や更新したレコードとを比較して、同じレコードが存在する場合は排他違反があるとしてトランザクションを失敗させ、同じレコードが存在しない場合は排他違反がないとしてトランザクションを成功させる。上述したようにトランザクションが成功した場合は、WAL管理手段111が、当該トランザクションによる更新内容をWALとしてWAL記憶部120に書き込むことになる。
WAL反映処理部130は、WAL記憶部120に記憶されているWALに基づいてKVS140を更新する機能を有する。WAL反映処理手段130が動作するタイミングはタイマーで指定してもよいし、システム管理者等が任意のタイミングで行ってもよい。WAL反映処理部130は、更新前KVデータ取得手段131、および更新後KVデータ作成登録手段132を備えている。
更新前KVデータ取得手段131は、WAL記憶部120から古い順にWALを読み出し、読み出したWALに記録されているトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードに基づいて、挿入、削除あるいは更新されたレコードを含む更新前のKVデータをKVS140から取得し、上記読み出したWALと一緒に更新後KVデータ作成登録手段132へ提供する。
更新後KVデータ作成登録手段132は、更新前KVデータ取得手段131から受け取った更新前のKVデータに対して上記WALに記録されているトランザクションにおけるデータ操作命令を適用して更新後KVデータを作成し、この更新後KVデータをKVS140へ登録する。すなわち、KVS140上の更新前KVデータを更新後KVデータに置き換える。また更新後KVデータ作成登録手段132は、KVS140に反映し終えたWALをWAL記憶部120から削除する。
システムカタログ150は、KVS140に保存されているKVデータやその変換前の表形式データのメタ情報、トランザクションを実行する際に作成するデータグループの情報などのデータを保存する手段である。アプリケーション160からトランザクションが入力された時、WAL管理手段111はシステムカタログ150からデータグループに関連する情報を抽出し、抽出された情報を元に当該トランザクションで使用するデータグループを特定する。
次に、本実施形態の動作について説明する。本実施形態は図4に示すフローチャートに従って動作を行う。
まず、トランザクション入力のステップS001で、アプリケーション160が本システムに対してトランザクションを入力する。
次に、WAL特定のステップS002で、WAL管理手段111が、入力されたトランザクションを解析し、システムカタログ150の情報を用いて当該トランザクションで処理するKVデータが所属するデータグループを特定し、当該データグループのこれまでの更新ログが保存されているWALを特定する。本システムにおいて、WALとはトランザクションで扱われる複数のKVデータを論理的にまとめたデータグループの更新内容の履歴を1つのKVデータにまとめたものである。
ここで、本システムにおけるデータグループの概念を説明する。図5に示すような二種類の表形式データ、すなわち、商品テーブルT001と入札テーブルT002とがあるとする。このような表形式データに対して、以下のようなトランザクションを実行するとする。
「ユーザーが新たに入札を行った際に、商品テーブルと入札テーブルのレコードを更新する」
このようなトランザクションを処理する場合、商品テーブルのレコードと入札テーブルのレコードとをアトミックに更新しなければならない。しかし、KVSは1つのKVデータに対するアトミック性しか保証していないため、例えば、商品テーブルのレコードをバリューに有するKVデータを更新したあと、入札テーブルのレコードをバリューに有するKVデータの更新に失敗した場合、商品テーブルのレコードだけが更新された状態になってしまい、アトミック性が保証されないという問題がある。
そこで、トラザクションに関連する複数のKVデータを論理的にまとめて1つのKVデータとし、複数のKVデータの更新を1つのKVデータに対する書き込みで実現することでトラザクションのアトミック性を保証する。
データグループを作成するには、まず各レコードで共通するKey(図5の例では商品ID)を抽出する。図5に示す表形式データからは、図6に示すような3つのグループ(G001、G002、G003)が論理的にまとめられる。
次に、本システムにおけるWALの概念を説明する。図5に示す表形式データに対して以下のような2つのトランザクションが順番に実行されたとする。
最初のトランザクション:「入札テーブルT002のIDがb1のレコードの入札額を12000に更新し、商品テーブルT001の商品IDがi1の最高金額を12000に更新する」
二番目のトランザクション:「入札テーブルT002のIDがb2のレコードの入札額を13000に更新し、商品テーブルT001の商品IDがi1の最高金額を13000に更新する。」
まず、最初のトランザクション1によって商品テーブルT001の1行目のレコードと入札テーブルT002の1行目のレコードが更新され、二番目のトランザクション2によって商品テーブルT001の1行目のレコードと入札テーブルT002の2行目のレコードが更新される。これらの2つのトランザクションで更新されるデータは全て同じデータグループに所属しているため、これらのトランザクションによる更新結果は1つのWALに記録される。WALは以下のような情報で構成される。
・当該WALを識別するためのキー値
・トランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコード
WALはKVデータであるため、(キー,バリュー)の組で表される。キー値として、データグループで共通のキー値にWALであることを示す接頭辞を付加したものを用いる。上記の例では、WAL_i1が当該WALのキー値となる。バリュー値にはトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードが含まれる。具体的には、以下のようにWALが構成される。
WAL=(Key,Value)=(WAL_i1,<[update,(i1,AAA,10,5,12000),(b1,i1,u3,12000),タイムスタンプ1],[update,(i1,AAA,10,5,13000),(b2,i1,u1,13000),タイムスタンプ2]>)
タイムスタンプは、当該WALに対するトランザクションが実行された順番を表している。タイムスタンプは単純な数値で表されていればよい。このように、WALはあるデータグループに対する論理的な更新履歴を表している。
WAL特定のステップS002でWAL管理手段111は、具体的には以下のようにWALを特定する。
まず、WAL管理手段111は、入力されたトランザクションから、当該トランザクションで利用されるテーブルを抽出し、システムカタログ150から当該トランザクションで利用されるテーブル間のデータグループに関係する情報を抽出する。
システムカタログ150には、テーブルのスキーマ情報のほかに、どのテーブルがどの列でデータグループを構成するのかという情報が格納されている。例えば、図5に示すようなテーブルの場合には、「商品テーブルT001と入札テーブルT002でデータグループを構成し、データグループを構成する際のキーは商品IDである。」という情報が格納されている。
WAL管理手段111は、入力されたトランザクションとシステムカタログ150の情報とから、当該トランザクションが利用するデータグループを特定する。例えば、「入札テーブルT002のIDがb1のレコードの入札額を12000に更新し、商品テーブルT001の商品IDがi1の最高金額を12000に更新する」というトランザクションが入力された場合は、当該トランザクションが利用するテーブルが商品テーブルT001と入札テーブルT002であることが分かり、システムカタログ150から商品テーブルT001と入札テーブルT002が商品IDでグループ化されていることが分かる。これにより、取得すべきWALがWAL_i1であることが分かり、当該トランザクションが利用するWALが特定できる。
次に、WAL特定のステップS002で特定されたWALの情報を用いて、WAL管理手段111がWAL記憶部120からWALを取得する(ステップS003)。ここで、WAL記憶部120にWALが存在する場合は、WAL取得のステップS004でWAL管理手段111がWAL記憶部120からWALを取得する。このとき、後の排他チェックで使用するために、当該WALの最新のタイムスタンプをWAL記憶部120から取得しておく。
ここで、図7を用いてWAL記憶部120にWALがどのように保存されているのかを説明する。
WALは、WAL記憶部120の中でそれぞれのWALごとに履歴を持って保存されている。例えば、あるトランザクションがWAL_i1を用いてトランザクションを実行すると、WAL_i1のタイムスタンプ1としてWALが蓄積され、次のトランザクションでWAL_i1を用いてトランザクションを実行すると、WAL_i1のタイムスタンプ2としてWALが蓄積される。次のトランザクションでWAL_i2を用いてトランザクションを実行すると、WAL_i2のタイムスタンプ1としてWALが蓄積される。
WAL管理手段111は、それぞれのWALに含まれるトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードについて、タイムスタンプの値が古いものから順番に確認すれば、各レコードの更新履歴や最新のレコード値を知ることができる。
WAL記憶部120に該当するWALが存在しない場合は、レコード取得のステップS006で、WAL管理手段111がKVS140から当該トランザクションで利用するレコードをバリューに含むKVデータを取得する。
WAL記憶部120に該当するWALが存在する場合でも、WAL記憶部120に保存されているWALの中に必要なレコードデータが全て含まれていない場合がある。そのため、WAL管理手段111は、WAL記憶部120からWALを取得した後に、当該トランザクションの処理に必要なレコードが当該WALの中に全て含まれているかをチェックする(ステップS005)。もし、必要なレコードがWALの中に含まれていない場合は、KVS140から必要レコードをバリューに格納したKVデータを取得する(ステップS006)。
WAL管理手段111は、WAL記憶部120やKVS140からトランザクションに必要なレコードを全て取得したら、それらのレコードを使用してトランザクションの処理を進める。そして、トランザクション実行のステップS007で、WAL管理手段111は、当該トランザクションによるデータグループの更新ログを新たにWALとして作成する。この時点ではまだWAL管理手段111は、WAL記憶部120に新たに作成したWALを書き込まない。
次に、参照・更新レコード抽出のステップS008で、WAL管理手段111は、当該トランザクションで参照や更新したレコード情報を抽出する。具体的には、当該トランザクションで更新や参照したレコードの情報と、当該トランザクションのスタート時点のタイムスタンプ情報とを取得する。なお、取得するレコード情報はレコードデータ全体である必要はなく、各レコードのKey値だけで十分である。
WAL管理手段111は、排他チェック処理手段112に対して、上記レコード情報を出力する。このとき、WAL管理手段111は、参照したレコード情報と更新したレコード情報とを含む全てのレコード情報を出力してもよいし、更新したレコードの情報だけを出力してもよい。参照と更新のすべてのレコード情報を出力するか、更新したレコード情報だけを出力するかで、トランザクション間のイソレーション(Isolation)レベルを調整することができる。どの種別のレコード情報を出力するかは、システムが起動する前にシステム管理者などが予め設定しておけばよい。
次に、排他チェックのステップS009で、排他チェック処理手段112は、当該トランザクションがスタートしてから現時点までにWAL記憶部120に追加されたWALと、WAL管理手段111から渡される当該トランザクションで参照や更新したレコードとに基づいて排他違反の有無を検出する(ステップS010)。そして排他チェック処理手段112は、排他違反があることを検出すると、当該トランザクションを失敗させ(ステップS012)、排他違反がないことを検出すると、当該トランザクションを成功させる(ステップS011)。
具体的には、排他チェック処理手段112は、まずWAL管理手段111から当該トランザクションで参照や更新されたレコードデータとスタート時点のタイムスタンプの値を受け取る。次に、排他チェック処理手段112は、WAL記憶部120から当該トランザクションで使用されたWALを取得する。
排他チェック処理手段112は、WAL記憶部120から取得したWALの最新のタイムスタンプがWAL管理手段111から受け取ったスタート時点のタイムスタンプと同じ値の場合は、当該トランザクションがスタートしてから現時点までの間に当該WALに関連する他のトランザクションが実行されていないことになるため、トランザクションを成功させる。
他方、排他チェック処理手段112は、WAL記憶部120から取得したWALの最新のタイムスタンプが、WAL管理手段111から受け取ったスタート時点のタイムスタンプの値より大きな値の場合は、当該トランザクションがスタートしてから現時点までの間に当該WALに関連する他のトランザクションが実行されていることを意味するため、排他違反がないかどうかをチェックする。
排他違反チェックは、以下のようにして実行される。まず、排他チェック処理手段112は、WAL記憶部120から取得したWALのうち、WAL管理手段111から受け取ったタイムスタンプの値より大きなタイムスタンプの値を持つWALを全て抽出する。そして、抽出したWALに記述されているトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードに基づいて、挿入、削除あるいは更新されたレコードを特定する。次に排他チェック処理手段112は、上記特定したレコードと当該トランザクションで参照や更新したレコードとを比較して、同じレコードが存在する場合は排他違反があると判断し、同じレコードが存在しない場合は排他違反がないと判断する。
排他チェック処理手段112がトランザクションを成功させる場合、失敗させる場合を説明する概念図を図8、図9、図10に示す。図8乃至図10において、左側には、トランザクションのスタート時点のタイムスタンプと当該トランザクションで参照または更新されたレコードとが描かれており、右側には、WAL記憶部120に記憶されているWALのタイムスタンプとデータ操作されたレコードとが描かれている。
図8は、トランザクションがスタートしてから排他チェック処理手段112が排他チェックを実行するまでの間に当該WALに更新が無かった場合の例である。この場合、当該トランザクションが実行されている間に当該WALに関連する他のトランザクションが実行されていないため、当該トランザクションは成功する。
図9は、トランザクションがスタートしてから排他チェック処理手段112が排他チェックを実行するまでの間に当該WALに更新があった場合の例である。この場合、排他チェック処理手段112で持っているスタート時点のタイムスタンプ値より大きなタイムスタンプ値を持つWALを抽出する。図9の例では、タイムスタンプが3のWALを取得する。図9の例では、タイムスタンプが3のWALにはレコードAとレコードDとに対するデータ操作の情報が含まれている。つまり、当該トランザクションがスタートしてから排他チェック処理部112が排他チェックを実行するまでの間に、他のトランザクションがレコードAとレコードDを更新するトランザクションを実行したことを意味している。ここで、当該トランザクションを実行するとレコードAに関して排他違反が発生するため、当該トランザクションを失敗させる。
図10は、トランザクションがスタートしてから排他チェック処理手段112が排他チェックを実行するまでの間に当該WALに更新があった場合の例である。この場合、排他チェック処理手段112で持っているスタート時点のタイムスタンプ値以上のタイムスタンプ値を持つWALを抽出する。図10の例ではタイムスタンプが3のWALを取得する。図10の例では、タイムスタンプが3のWALには、レコードCとレコードDとに対するデータ操作の情報が含まれている。つまり、当該トランザクションがスタートしてから排他チェック処理手段112が排他チェックを実行するまでの間に、他のトランザクションがレコードCとレコードDを更新するトランザクションを実行したことを意味している。ここで、当該トランザクションを実行してもレコードレベルでは排他違反は発生していないため、当該トランザクションを成功させる。
排他チェック処理手段112は、排他違反を検出しなかった場合は、WAL管理手段111にトランザクションのコミットを要求する。WAL管理手段111は、トランザクションのコミットが要求されると、当該トランザクションのWALをWAL記憶部120に書き込む(ステップS011)。このとき、書き込むWALのタイムスタンプの値は、WAL記憶部120に記憶されている最新のタイムスタンプの次の値とする。例えば図8の場合、WAL管理手段111は、レコードAに係るデータ操作の情報(トランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコード。以下同様)と、レコードBに係るデータ操作の情報と、値3のタイムスタンプとを有するWALを書き込む。また例えば図10の場合、WAL管理手段111は、レコードAに係るデータ操作の情報と、レコードBに係るデータ操作の情報と、値4のタイムスタンプとを有するWALを書き込む。
他方、排他チェック処理手段112は、排他違反を検出した場合は、WAL管理手段111にトランザクションのアボートを要求する。WAL管理手段111はトランザクションのアボートが要求されると、当該トランザクションのWALを破棄する(ステップS012)。
次に、本実施形態において、WAL記憶部120に記憶されたWALをKVS140に反映する動作について説明する。WALのKVSへの反映は、図11に示すフローチャートに従って動作を行う。
まず、WAL反映処理部130の更新前KVデータ取得手段131は、WAL取得のステップS101で、WAL記憶部120から、記憶されている古い順にWALを1つ取得する。更新前KVデータ取得手段131は、WAL記憶部120にWALが存在しない場合は図11の処理を終了する(ステップS102のno)。
WAL記憶部120にWALが存在する場合(ステップS102のyes)、更新前KVデータ取得手段131は、更新前KVデータ取得のステップS103で、上記取得したWALに含まれるトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードに基づいて、更新の対象となったレコードをバリューに格納する更新前のKVデータをKVS140から取得する。
次に更新後KVデータ作成登録部132は、更新後KVデータ作成のステップS104で、上記取得された更新前のKVデータに対して、上記取得されたWALに含まれるトランザクションにおけるデータ操作命令の処理を実行して、更新後のKVデータを作成する。次に更新後KVデータ作成登録部132は、作成した更新後のKVデータをKVS140に登録する。次に更新後KVデータ作成登録部132は、WAL削除のステップで、上記取得されたWALをWAL記憶部120から削除する。
その後、WAL反映処理部130は、WAL取得のステップS101の処理へ戻り、上述した動作と同様の動作を繰り返す。
あるKVデータについて、WALにトランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により更新されたレコードが存在する場合は、当該データ操作命令による処理を行ったKVデータが当該KVデータについて最新の情報である。このため、WAL反映処理部130がKVS140の更新前KVデータにWALのデータ操作を行った時点で最新のKVデータがKVS140に保存される。あるKVデータについてWALが存在しない場合は、KVS140に保存されているKVデータが最新の情報となる。
なお、アプリケーション160から入力されたトランザクションを処理するプロセス(トランザクション処理部)と、WALを反映するプロセス(WAL反映処理部)はそれぞれ並列に動作している。WALを反映するプロセスはタイマーによって一定時間ごとに行われてもよいし、システム管理者等が任意のタイミングで行っても良い。
このように本実施形態によれば、KVSに対して複数のKVデータのトランザクションをサポートするシステムに対して、トランザクションの排他制御を行う際に、トランザクションを実行するデータグループ単位で排他制御を行うのではなく、当該トランザクションで参照や更新したレコード単位で排他制御を行うことで、トランザクションの排他単位を小さくすることができ、トランザクションの同時実効性を高めスループットを上げることができる。
また本実施形態によれば、WAL記憶部120に記憶するWALを論理ログ、すなわちデータ操作命令の情報と当該データ操作命令による処理により変更されたレコードとを有するWALとしているため、KVS140に記憶するKVデータが任意の変換規則に従って表形式データから生成されたKVデータであっても、表形式データにおけるレコード単位で排他制御を行うことができる。
[第2の実施形態]
図12は、本発明の第2の実施形態のブロック図である。図12に示すように、本実施形態は、1以上のトランザクション処理部1と、KVS2と、WAL記憶部3と、WAL反映処理部4とを有する。
KVS2は、半導体メモリや磁気ディスク等で構成され、キーとバリューの組で表現されるレコードを記憶する。具体的には、KVS2は、キーとバリューの組で表現され、複数のレコードから構成される表形式データにおけるレコードをバリューに格納し、バリューに格納したレコードの一部の列の値をキーに格納したKVデータを記憶する。
WAL記憶部3は、半導体メモリや磁気ディスク等で構成され、複数の上記KVデータを1つのKVデータに集約したデータグループ単位で、その論理ログを記憶する。好ましくは、WAL記憶部3は、キーとバリューの組で表現される更新ログを記憶する。上記キーは、複数の上記KVデータを集約したデータであるデータグループを一意に識別する値である。また上記バリューは、上記データグループの更新履歴を表す。さらに上記更新履歴は、1以上の部分更新履歴を有する。そして、1つの上記部分更新履歴は、上記データグループを構成する上記KVデータのバリューに格納されるレコードに対するデータ操作命令の情報と当該データ操作命令による処理により変更された上記レコードと更新の順番を表すタイムスタンプとを有する。
トランザクション処理部1は、図示しないアプリケーションプログラム等から入力されたトランザクションを実行する機能を有する。トランザクション処理部1は、上記データグループを参照および更新するトランザクションのコミット時、WAL記憶部3に記憶された更新履歴に基づいて、レコード単位で排他違反の有無を判定し、排他違反がなければ当該トランザクションを成功させ、その更新履歴をWAL記憶部3に記録する。好ましくは、トランザクション処理部1は、主な機能部として、WAL管理部5と排他チェック処理部6とを有する。
WAL管理部5は、入力されたトランザクションで使用する上記データグループを構成する上記レコードの最新の値をWAL記憶部3およびKVS2から取得する機能を有する。またWAL管理部5は、当該データグループに対応する上記更新ログ中の最新の上記タイムスタンプをスタート時タイムスタンプとしてWAL記憶部3から取得する機能を有する。
排他チェック処理部6は、トランザクション処理部1で実行しているトランザクションのコミット時、当該トランザクションのスタート時に取得しておいた上記スタート時タイムスタンプと、WAL記憶部3に現に記憶されている上記データグループの最新のタイムスタンプであるコミット時タイムスタンプとを比較する機能を有する。また排他チェック処理部6は、上記の比較の結果、スタート時タイムスタンプとコミット時タイムスタンプとが相違するときは、スタート時タイムスタンプより後のタイムスタンプを有する部分更新履歴中に、当該トランザクションが使用したレコードと同じレコードに対するデータ操作命令の情報が存在するか否かを判定する機能を有する。さらに排他チェック処理部6は、上記判定の結果に基づいて、上記トランザクションを成功させるか、失敗させるかを決定し、成功させると決定した場合、上記レコードを参照および更新した上記トランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理により変更された上記レコードとコミット時タイムスタンプより後のタイムスタンプとを有する新たな部分更新履歴を、上記データグループに対応してWAL記憶部3に現に記憶されている更新ログに追加する機能を有する。
WAL反映部4は、WAL記憶部3に記憶されている更新履歴中のデータ操作命令の情報と当該データ操作命令による処理により変更されたレコードとに基づいて、KVS2のKVデータを更新する機能を有する。
本実施形態のトランザクションシステムは、例えば、MPU等のプロセッサとそれに接続されたメモリ、入出力装置、通信インターフェイス等を有するコンピュータと、当該コンピュータで実行されるプログラムとで実現することができる。プログラムは、磁気ディスク装置等のコンピュータ可読記録媒体に記録されており、コンピュータの立ち上げ時にMPU等のプロセッサに読み取られ、そのプロセッサの動作を制御することにより、そのプロセッサ上にWAL管理部5、排他チェック処理部6、WAL反映部4を実現する。
次に本実施形態の動作を説明する。
トランザクション処理部1は、入力されたトランザクションを実行する。そして、トランザクション処理部1は、データグループを参照および更新するトランザクションのコミット時、WAL記憶部3に記憶された更新履歴に基づいて、レコード単位で排他違反の有無を判定し、排他違反がなければ当該トランザクションを成功させ、その更新履歴をWAL記憶部3に記録する。その後、WAL反映部4は、WAL記憶部3に記憶されている更新履歴に基づいてKVS2を更新する。
より好ましくは、本実施形態は以下のように動作する。
トランザクション処理部1は、トランザクションが入力されると、そのトランザクションで使用するデータグループを構成するKVデータの最新の値をWAL記憶部3およびKVS2から取得し、また、当該データグループに対応する更新ログ中の最新のタイムスタンプをスタート時タイムスタンプとしてWAL記憶部3から取得し、トランザクションの実行を開始する。
トランザクション処理部1は、実行しているトランザクションのコミット時、そのトランザクションのスタート時に取得しておいた上記スタート時タイムスタンプと、WAL記憶部3に現に記憶されているデータグループの最新のタイムスタンプであるコミット時タイムスタンプとを比較する。次にトランザクション処理部1は、スタート時タイムスタンプとコミット時タイムスタンプとが相違するときは、スタート時タイムスタンプより後のタイムスタンプを有する全ての部分更新履歴をWAL記憶部3から読み出し、それらの部分更新履歴中に、当該トランザクションが使用したレコード(参照または更新したレコード、或いは更新したレコード)に対するデータ操作命令の情報が存在するか否かを判定する。
トランザクション処理部1は、上記比較と判定の結果とに基づいて、上記トランザクションを成功させるか、失敗させるかを決定する。具体的には、スタート時タイムスタンプとコミット時タイムスタンプとが同じであるか、同じでなくても、スタート時タイムスタンプより後のタイムスタンプを有する全ての部分更新履歴中に、当該トランザクションが使用したレコード(参照または更新したレコード、或いは更新したレコード)に対するデータ操作命令の情報が存在しなければ、トランザクションを成功させる。しかし、スタート時タイムスタンプとコミット時タイムスタンプとが異なっており、しかも、スタート時タイムスタンプより後のタイムスタンプを有する部分更新履歴中に、当該トランザクションが使用したレコード(参照または更新したレコード、或いは更新したレコード)に対するデータ操作命令の情報が存在していれば、トランザクションを失敗させる。
トランザクション処理部1は、トランザクションを成功させると決定した場合、当該トランザクションにおけるデータ操作命令の情報と当該データ操作命令による処理で更新したレコードとコミット時タイムスタンプより後のタイムスタンプとを有する新たな部分更新履歴を作成して、当該トランザクションが使用したデータグループに対応してWAL記憶部3に現に記憶されている更新ログに追加する。更新ログは、キーとバリューの組で表現される1つのキーバリューデータであるため、CASコマンド等を使用することで、データ操作のアトミック性を保証することができる。
他方、WAL反映部4は、例えば定期的に、WAL記憶部3に記憶されている更新ログ中のデータ操作命令の情報と当該データ操作命令による処理により変更されるレコードとに基づいて、KVS2のKVデータを更新する。この更新をCASコマンド等を使用して行うことで、データ操作のアトミック性を保証することができる。
こうして本実施形態によれば、複数のKVデータを1つのKVデータにまとめてトランザクションを実行するシステムにおけるトランザクションの同時実行性を高めることが可能である。その理由は、レコード単位で楽観的な排他を行うためである。
以上、上記各実施形態を参照して本発明を説明したが、本発明は、上述した実施形態に限定されるものではない。本発明の構成や詳細には、本発明の範囲内で当業者が理解しうる様々な変更をすることができる。例えば、以下のような構成も本発明に含まれる。
WAL記憶部に記憶するWALに記録するデータ操作命令の情報として、INSERT、DELETE、UPDATE等の命令の情報と当該データ操作命令による処理により更新したレコードとに加えて、操作を行った列の情報を付加しておくことにより、レコード中の列単位で排他違反の有無を検出するようにしてもよい。
WAL反映処理部は、KVSに反映した更新ログの複数の部分更新履歴のうち、タイムスタンプの新しい上位所定個数の部分更新履歴は削除せずに残しておき、削除せずに残しておいた反映済の部分更新領域を識別する情報を更新履歴に記録するようにしてもよい。
またWAL反映処理部は、トランザクションシステムを構成するCPUのアイドル状態とWAL記憶手段を構成する記憶装置の使用量とに基づいて、更新ログのKVSへの反映のタイミングを決定してよい。
本発明は、データ永続化手段としてKVSを用いてトランザクションを実行するシステムにおいて利用可能である。
1…トランザクション処理部
2…KVS
3…WAL記憶部
4…WAL反映処理部
5…WAL管理部
6…排他チェック処理部

Claims (7)

  1. キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける前記レコードを前記バリューに格納し、前記バリューに格納した前記レコードの一部の列の値を前記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
    複数の前記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、前記データグループに属する前記キーバリューデータの前記バリューに格納された前記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された前記レコードとを有する更新履歴を記憶するWAL記憶部と、
    前記トランザクションのコミット時、前記WAL記憶部に記憶された前記更新履歴に基づいて前記レコード単位で排他違反の有無を判定し、排他違反がなければ前記トランザクションを成功させ、その更新履歴を前記WAL記憶部に記録するトランザクション処理部と、
    前記WAL記憶部に記憶されている前記更新履歴に基づいて前記キーバリューデータ記憶部を更新するWAL反映処理部と
    を有するトランザクションシステム。
  2. 前記WAL反映処理部は、
    前記WAL記憶部に記憶されている前記更新履歴に含まれるデータ操作命令の情報に基づいて、更新の対象となった前記レコードをバリューに格納する更新前のキーバリューデータを前記キーバリューデータ記憶部から取得する更新前KVデータ取得手段と、
    前記更新前のキーバリューデータに対して前記データ操作命令による処理を行って更新後のキーバリューデータを作成し、前記キーバリューデータ記憶部に記憶する更新後KVデータ作成登録手段と
    を有する
    請求項1に記載のトランザクションシステム。
  3. 前記WAL記憶部は、キーとバリューの組で表現される更新ログを記憶し、前記キーは複数の前記キーバリューデータを集約したデータであるデータグループを一意に識別する値であり、前記バリューは前記データグループの更新履歴を表し、また、前記更新履歴は、1以上の部分更新履歴を有し、1つの前記部分更新履歴は、前記データグループを構成する前記キーバリューデータのバリューに格納されたレコードに対するデータ操作命令の情報と当該データ操作命令による処理により変更された前記レコードと更新の順番を表すタイムスタンプとを有し、
    前記トランザクション処理部は、
    アプリケーションプログラムから入力されたトランザクションで使用する前記データグループを構成する前記キーバリューデータの最新の値を前記WAL記憶部および前記キーバリューデータ記憶部から取得し、また、当該データグループに対応する前記更新ログ中の最新の前記タイムスタンプをスタート時タイムスタンプとして前記WAL記憶部から取得し、前記トランザクションを実行するWAL管理部と、
    前記トランザクションのコミット時、前記トランザクションのスタート時に取得された前記スタート時タイムスタンプと、前記WAL記憶部に現に記憶されている前記データグループの最新の前記タイムスタンプであるコミット時タイムスタンプとを比較し、前記スタート時タイムスタンプと前記コミット時タイムスタンプとが相違するときは、前記スタート時タイムスタンプより後のタイムスタンプを有する前記部分更新履歴中に、前記トランザクションが使用した前記レコードと一致するレコードに対するデータ操作命令の情報が存在するか否かを判定し、前記比較と前記判定の結果とに基づいて、前記トランザクションを成功させるか、失敗させるかを決定し、成功させると決定した場合、前記トランザクションで更新した前記レコードに対するデータ操作命令の情報と当該データ操作命令による処理により更新した前記レコードと前記コミット時タイムスタンプより後のタイムスタンプとを有する新たな部分更新履歴を、前記データグループに対応して前記WAL記憶部に現に記憶されている前記更新ログに追加する排他チェック処理部と
    を有する請求項1または2に記載のトランザクションシステム。
  4. 前記排他チェック処理部は、前記判定では、前記スタート時タイムスタンプより後のタイムスタンプを有する前記部分更新履歴中に、前記トランザクションが参照または更新した前記レコードと一致するレコードに対するデータ操作命令の情報が存在するか否かを判定する
    請求項3に記載のトランザクションシステム。
  5. 前記排他チェック処理部は、前記判定では、前記スタート時タイムスタンプより後のタイムスタンプを有する前記部分更新履歴中に、前記トランザクションが更新した前記レコードと一致するレコードに対するデータ操作命令の情報が存在するか否かを判定する
    請求項3に記載のトランザクションシステム。
  6. キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける前記レコードを前記バリューに格納し、前記バリューに格納した前記レコードの一部の列の値を前記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
    複数の前記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、前記データグループに属する前記キーバリューデータの前記バリューに格納された前記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された前記レコードとを有する更新履歴を記憶するWAL記憶部と、
    トランザクション処理部と、
    WAL反映処理部と
    を有するトランザクションシステムの制御方法であって、
    前記トランザクション処理部が、前記トランザクションのコミット時、前記WAL記憶部に記憶された前記更新履歴に基づいて前記レコード単位で排他違反の有無を判定し、排他違反がなければ前記トランザクションを成功させ、その更新履歴を前記WAL記憶部に記録し、
    前記WAL反映処理部が、前記WAL記憶部に記憶されている前記更新履歴に基づいて前記キーバリューデータ記憶部を更新する
    トランザクションシステム制御方法。
  7. キーとバリューの組で表現され、複数のレコードから構成される表形式データにおける前記レコードを前記バリューに格納し、前記バリューに格納した前記レコードの一部の列の値を前記キーに格納したキーバリューデータを記憶するキーバリューデータ記憶部と、
    複数の前記キーバリューデータを1つのキーバリューデータに集約したデータグループ単位で、前記データグループに属する前記キーバリューデータの前記バリューに格納された前記レコードを参照および更新するトランザクションにおけるデータ操作命令の情報と該データ操作命令による処理により変更された前記レコードとを有する更新履歴を記憶するWAL記憶部と
    を有するコンピュータを、
    前記トランザクションのコミット時、前記WAL記憶部に記憶された前記更新履歴に基づいて前記レコード単位で排他違反の有無を判定し、排他違反がなければ前記トランザクションを成功させ、その更新履歴を前記WAL記憶部に記録するトランザクション処理部と、
    前記WAL記憶部に記憶されている前記更新履歴に基づいて前記キーバリューデータ記憶部を更新するWAL反映処理部と
    して機能させるためのプログラム。
JP2014066514A 2014-03-27 2014-03-27 トランザクションシステム Active JP6361223B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2014066514A JP6361223B2 (ja) 2014-03-27 2014-03-27 トランザクションシステム
US14/670,451 US10007548B2 (en) 2014-03-27 2015-03-27 Transaction system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014066514A JP6361223B2 (ja) 2014-03-27 2014-03-27 トランザクションシステム

Publications (2)

Publication Number Publication Date
JP2015191307A JP2015191307A (ja) 2015-11-02
JP6361223B2 true JP6361223B2 (ja) 2018-07-25

Family

ID=54190494

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014066514A Active JP6361223B2 (ja) 2014-03-27 2014-03-27 トランザクションシステム

Country Status (2)

Country Link
US (1) US10007548B2 (ja)
JP (1) JP6361223B2 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10176209B2 (en) * 2015-06-26 2019-01-08 Vmware, Inc. Abortable transactions using versioned tuple cache
US9893947B2 (en) * 2015-06-26 2018-02-13 International Business Machines Corporation Transactional orchestration of resource management and system topology in a cloud environment
JP6189488B1 (ja) * 2016-06-27 2017-08-30 株式会社東芝 データベース管理装置、データベース管理方法、およびデータベース管理プログラム
US10585696B2 (en) * 2016-11-08 2020-03-10 International Business Machines Corporation Predicting transaction outcome based on artifacts in a transaction processing environment
CN110209642A (zh) * 2018-02-05 2019-09-06 北京智明星通科技股份有限公司 信息处理的方法、装置、服务器及计算机可读介质
CN110765143B (zh) 2019-10-10 2022-08-02 腾讯科技(深圳)有限公司 数据处理方法、装置、服务器和存储介质
KR20210092361A (ko) 2020-01-15 2021-07-26 삼성전자주식회사 스토리지 장치 및 그것의 동작 방법
EP3851950B1 (en) 2020-01-15 2024-09-04 Samsung Electronics Co., Ltd. Storage device and operation method thereof
CN113837881B (zh) * 2021-09-28 2023-02-28 中电金信软件有限公司 更新交易数据方法、装置、电子设备及存储介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962550A (ja) 1995-08-21 1997-03-07 Toshiba Corp オンライントランザクションシステム及び同システムに適用されるファイル更新制御方法
JP2001344138A (ja) * 2000-05-30 2001-12-14 Ricoh Co Ltd データベースロギング方法及びデータベース回復方法
US6751750B1 (en) * 2001-06-01 2004-06-15 Lsi Logic Corporation Method to protect and recover a write ahead log from interruptions
US20070220059A1 (en) * 2006-03-20 2007-09-20 Manyi Lu Data processing node
JP2011076487A (ja) * 2009-09-30 2011-04-14 Oki Networks Co Ltd 計算機、及びデータベース管理プログラム
US10430298B2 (en) * 2010-10-28 2019-10-01 Microsoft Technology Licensing, Llc Versatile in-memory database recovery using logical log records
US8832022B2 (en) * 2011-05-06 2014-09-09 Nec Corporation Transaction processing device, transaction processing method and transaction processing program
WO2014068820A1 (ja) * 2012-10-29 2014-05-08 日本電気株式会社 トランザクションシステム

Also Published As

Publication number Publication date
US10007548B2 (en) 2018-06-26
US20150277966A1 (en) 2015-10-01
JP2015191307A (ja) 2015-11-02

Similar Documents

Publication Publication Date Title
JP6361223B2 (ja) トランザクションシステム
US11003689B2 (en) Distributed database transaction protocol
JP5949937B2 (ja) トランザクションシステム
KR102579190B1 (ko) 일관된 데이터베이스 스냅샷들을 이용한 분산 데이터베이스에서의 백업 및 복원
US9367346B2 (en) Accelerating distributed transactions on key-value stores through dynamic lock localization
JP5890071B2 (ja) 分散キーバリューストア
US8909610B2 (en) Shared log-structured multi-version transactional datastore with metadata to enable melding trees
JP5387757B2 (ja) 並列データ処理システム、並列データ処理方法及びプログラム
US11132350B2 (en) Replicable differential store data structure
US8832022B2 (en) Transaction processing device, transaction processing method and transaction processing program
US10191936B2 (en) Two-tier storage protocol for committing changes in a storage system
US11321302B2 (en) Computer system and database management method
US8595190B2 (en) Methods and apparatus related to completion of large objects within a DB2 database environment
WO2016143095A1 (ja) 計算機システム及びトランザクション処理の管理方法
US8600962B2 (en) Transaction processing device, transaction processing method, and transaction processing program
US11221777B2 (en) Storage system indexed using persistent metadata structures
US10235407B1 (en) Distributed storage system journal forking
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
JP6442996B2 (ja) トランザクション処理装置、トラザクション処理方法、及びプログラム
JP5715074B2 (ja) データベースシステム、データベース管理方法、およびデータベース管理プログラム
Haroon Challenges of concurrency control in object oriented distributed database systems
JP5832592B1 (ja) データ管理装置
JP2023132379A (ja) データベースシステム及びデータ管理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171114

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180123

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180611

R150 Certificate of patent or registration of utility model

Ref document number: 6361223

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150