"トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備えた、トランザクション同時実行制御システム。前記バックオフ時間決定部は、所定の上限値および下限値の間に含まれる乱数値を用いて、前記トランザクションの再実行までの待ち時間を計算する、請求項1に記載のトランザクション同時実行制御システム。前記トランザクション実行部がトランザクション実行を開始してから完了するまでの実行時間を測定するトランザクション実行時間測定部を備え、前記バックオフ時間決定部は、前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、請求項1または2に記載のトランザクション同時実行制御システム。前記トランザクションの実行優先度を決定するトランザクション優先度決定部と、前記実行優先度に基づいて、前記トランザクションを再実行するまでのインターバル時間を決定するインターバル時間決定部と、を備え、前記バックオフ時間決定部は、前記インターバル時間を用いて前記トランザクションの再実行までの待ち時間を調整する、請求項1から3のいずれかに記載のトランザクション同時実行制御システム。前記バックオフ時間決定部は、前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間に前記インターバル時間を加算した値を、次回の再実行までの待ち時間とする、請求項4に記載のトランザクション同時実行制御システム。前記トランザクションの同時実行制御は、楽観的ロックに基づくトランザクション同時実行制御である、請求項1から5のいずれかに記載のトランザクション同時実行制御システム。トランザクションの同時実行制御を行うトランザクション同時実行制御方法であって、前記トランザクションを実行する工程と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算する工程と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させる工程と、を備えた、トランザクション同時実行制御方法。コンピュータを、トランザクションの同時実行制御を行うトランザクション同時実行制御装置として機能させるプログラムであって、前記コンピュータを、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部、として機能させるプログラム。しかしながら、非特許文献1の同時実行制御システムでは、同時に実行されるトランザクション数が増えると、マシンリソースを無駄に消費してしまうという問題がある。その理由は、同時実行されているあるトランザクションがコミット成功することを把握していない他のトランザクションが、自身がコミット失敗するまでマシンリソースを消費するからである。そこで、本発明は、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することが可能なトランザクション同時実行制御システムを提供することを一つの目的とする。本発明に係るトランザクション同時実行制御システムは、トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備えたものである。本発明によれば、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することができる。実施の形態1.次に、本発明を実施するための形態について、図面を参照して詳細に説明する。図1は、本発明の実施の形態1によるトランザクション同時実行制御システム100の構成を示すブロック図である。図に示すように、トランザクション同時実行制御システム100は、トランザクション発行装置1、トランザクション同時実行制御装置2、およびストレージ永続化装置3を備えている。トランザクション発行装置1は、トランザクションをトランザクション同時実行制御装置2に送信する装置であり、CPU、ROMやRAM等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。トランザクション発行装置1は複数存在していてもよい。トランザクション同時実行制御装置2は、トランザクション発行装置1から受信したトランザクションの同時実行制御を行う装置であり、CPU、ROMやRAM等のメモリ、各種の情報を格納する外部記憶装置、入力インタフェース、出力インタフェース、通信インタフェース及びこれらを結ぶバスを備える専用又は汎用のコンピュータを適用することができる。トランザクション同時実行制御装置2は複数存在していてもよい。また、トランザクション同時実行制御装置2は、単一のコンピュータにより構成されるものであっても、通信回線を介して互いに接続された複数のコンピュータにより構成されるものであってもよい。トランザクション同時実行制御装置2は、トランザクション実行手段21、トランザクション実行時間測定手段22、CAS操作手段23、バックオフ時間決定手段24、およびトランザクションプール手段25を備えている。トランザクション実行手段21、トランザクション実行時間測定手段22、CAS操作手段23、バックオフ時間決定手段24、およびトランザクションプール手段25は、CPUがROM等に格納された所定のプログラムを実行することにより実現される機能のモジュールに相当する。トランザクション実行手段21は、トランザクション発行装置1から受信したトランザクションを解析し、トランザクションの実行プランを決定する。トランザクション実行時間測定手段22は、トランザクション実行手段21がトランザクション実行を開始してから完了コミット成功または失敗するまでの時間を測定する。CAS操作手段23は、トランザクション実行手段21が実行プランを実行して最終的にストレージ3にデータを反映する際にCAS操作を実行する。バックオフ時間決定手段24は、CAS操作手段23によって当該トランザクションがコミット失敗と判断された場合、トランザクション実行時間測定手段22で測定したトランザクション実行時間に基づき、トランザクション再実行までの待ち時間バックオフ時間を計算する。トランザクションプール手段25は、バックオフ時間決定手段24で計算したバックオフ時間が経過するまで、トランザクション再実行を待機するよう制御する。ストレージ3は、記憶装置により実装される。次に、トランザクション同時実行制御システム100の動作について説明する。図2は、トランザクション同時実行制御システム100の動作のフローチャートである。トランザクション同時実行制御装置2は、トランザクション発行装置1からトランザクションを受信すると、トランザクション実行手段21において生成したプランにしたがってトランザクションを実行するステップA1。トランザクション実行時間測定手段22において、ステップA1で実行されるトランザクション毎に実行時間を測定し、メモリ等に記憶するステップA2。CAS操作手段23において、トランザクション実行結果データをストレージ3に反映する際にCAS操作を実行するステップA3。CAS操作が成功した場合はステップA3;YESコミット成功となり処理を終了する。一方、CAS操作が失敗した場合はステップA3;NO、コミット失敗と判断し、バックオフ時間決定手段24においてバックオフ時間を計算するステップA4。初回のコミット失敗の場合は、乱数値から決定するウィンドウサイズと、予め設定されたスロットタイムに基づいてバックオフ時間を決定する。一方、2回目以降のコミット失敗の場合は、初回のコミット失敗時に決定したバックオフタイムからステップA2で測定したトランザクション実行時間を減算した値をバックオフ時間とする。トランザクションプール手段25において、ステップA4で決定したバックオフ時間が経過するまでトランザクション再実行を待機させるステップA5。その後、ステップA1に戻りトランザクションを再実行する。次に、本実施形態によるトランザクション同時実行制御システム100の動作について具体例を用いて説明する。トランザクション発行装置1は、WEBサーバ、アプリケーションサーバ等で実現される。トランザクション同時実行制御装置2は、データベースマネージメントシステム、Key-Value-StoreVoldemort,HBase,kumofs等で実現される。ストレージ3は、DBMSMySQLの場合はInnoDB等、KVSVoldemortの場合はBerkleyDB等で実現される。ストレージ3には、図3に示すデータスキーマに従ったテーブルXが格納されていると想定する。テーブルXはプライマリキーPKおよびカラム3件COL1,COL2,COL3で構成され、2件のレコードPK=1,2が存在する。トランザクション発行装置1は、図4に示すトランザクションTX1をトランザクション同時実行制御装置2に送信する。トランザクションTX1は、テーブルXのPK=1,2のレコードそれぞれのCOL1の値をアトミックに変更するためのトランザクションである。ここでは、トランザクション同時実行制御装置2は、トランザクション内部の一連のデータ更新処理を楽観的ロックによるCAS操作を用いてアトミックに実行できると仮定する。このような仮定が成立するトランザクション同時実行制御装置2としては、Voldemort、HBase、Kumofs等のKVSが存在する。KVSでは、トランザクション内部で更新する全データ図4に示すトランザクションTX1ではPK=1,2の両レコードに、単一のバージョン番号V1とする。を付与してストレージ3に保存する。そして、トランザクションTX1のコミット時に再び両レコードのバージョン番号をストレージ3から取得V2とするして、V1とV2が一致するか否かを判定するCAS操作のCompare処理。一致する場合はコミット成功として、更新データおよびバージョン番号V1PK=1,2をインクリメントした値V3をストレージ3に書き込むCAS操作のSwap処置。一方、一致しなかった場合はコミット失敗とする。トランザクション発行装置1は、トランザクションTX1と並行して図5に示すトランザクションTX2をトランザクション同時実行制御装置2に送信する。トランザクションTX2は、テーブルXのPK=1のレコードのCOL1の値をアトミックに変更するためのトランザクションである。TX1およびTX2では同一レコードPK=1をトランザクション内で更新するため、同一のバージョン番号VPK=1,2を使用してCAS操作を行う。例えば、トランザクションTX1およびトランザクションTX2が図6に示すようなトランザクション開始完了順序で実行された場合、トランザクションTX1はCAS操作で失敗してコミット失敗となる。このため、トランザクション実行時間測定手段22は、トランザクションTX1およびTX2のトランザクション実行時間を測定する。CAS操作手段23において、トランザクションTX2がCAS操作で失敗したためコミット失敗と判断された場合、バックオフ時間決定手段24はバックオフ時間の計算を開始する。バックオフ時間決定手段24は、予め設定する下限値rand_minおよび上限値rand_maxの間に存在する乱数値rand,ウィンドウサイズと呼ぶを生成する式1。rand_min<rand<rand_max...1次に、バックオフ時間決定手段24は、予め設定するスロットタイムslotにウィンドウサイズrandを乗算した値をバックオフ時間T_boとする式2。T_bo=rand×slot...2トランザクションプール手段25は、コミット失敗1回目したトランザクションTX2の再実行をトランザクションTX2のバックオフ時間T_boTX2が経過するまで待機プーリングさせる。さらに、バックオフ時間T_boTX2が経過した後、トランザクションTX2をトランザクション実行手段21に入力してトランザクションを再実行する。次に、再実行されたトランザクションTX2が再びコミット失敗2回目以降した場合のバックオフ時間の決定方法について説明する。バックオフ時間決定手段24は、トランザクションTX2のコミット失敗回数に応じてバックオフ時間を調整する。具体的には。コミット失敗1回目の時に決定したバックオフ時間T_boTX2から、コミット失敗2回目時のトランザクションTX2の実行時間を減算した値を新たなバックオフ時間とする。すなわち、コミット失敗を繰り返す度にバックオフ時間はトランザクション実行時間分減算され、最終的には待ち時間無しでトランザクションが再実行されることになる。以上のように、本実施形態によれば、楽観的ロックCAS失敗時に、乱数に基づいて計算するバックオフ時間が経過するまでトランザクション再実行を待機するようにしたので、同時実行される複数トランザクションの実行タイミングが確率的に分散でき、トランザクション同士の再衝突を回避することができる。したがって、同時実行されるトランザクションの数が増えても、マシンリソース消費量の増加を抑制することができる。また、2回目以降のCAS失敗時には、前回のCAS失敗時に決定したバックオフ時間からトランザクション実行時間を減算した値をバックオフ時間とするようにしたので、CAS失敗の回数が増えるに従ってバックオフ時間が短くなり、永遠にコミット成功できないトランザクションが発生するのを防止することができる。特に、同時実行される他のトランザクションの実行時間が自身と比べて短い場合、独占的に実行できる区間が無く、長期間に渡ってコミット成功できないという事象が発生しやすいため、本実施形態のように再実行の度にバックオフ時間を短縮することが望ましい。実施の形態2.図7は、本発明の実施の形態2によるトランザクション同時実行制御システム200の構成を示すブロック図である。図1と同一の符号は、同様の構成要素を表している。図7に示すように、実施の形態2によるトランザクション同時実行制御システム200は、実施の形態1の構成に加え、トランザクション優先度決定手段31と、インターバル時間決定手段32を備えている。実施の形態1では、バックオフ時間決定手段24はバックオフ時間を乱数ウィンドウサイズを用いてランダムに決定していた。本実施形態では、トランザクション発行装置1またはトランザクション同時実行制御装置2が設定するトランザクション実行優先度に基づいてバックオフ時間を決定する。トランザクション優先度決定手段31は、トランザクション毎の実行優先度を決定する。インターバル時間決定手段32は、トランザクション優先度決定手段31で決定した実行優先度に基づいて、固定長のインターバル時間を決定する。バックオフ時間決定手段24は、インターバル時間決定手段32が決定したインターバル時間を用いてバックオフ時間を決定する。次に、トランザクション同時実行制御システム200の動作について説明する。図8は、トランザクション同時実行制御システム200の動作のフローチャートである。ステップA1~A3の動作は実施の形態1と同様である。トランザクション優先度決定手段31は、トランザクション発行装置1がトランザクション同時実行制御装置2に対してトランザクション毎に送信する優先度に基づいて、各トランザクションの優先度を決定する。または、予め設定された優先度決定ルールに従って、トランザクション優先度決定手段31がトランザクション毎の優先度を決定するようにしてもよいステップB1。インターバル時間決定手段32は、トランザクション優先度決定手段31が決定した優先度と、予め設定されているインターバル時間マップを照合して、当該トランザクションに適用するインターバル時間を決定するステップB2。バックオフ時間決定手段24は、インターバル時間決定手段32が決定したインターバル時間と、コンテンションウィンドウおよびスロットタイムを用いてバックオフ時間を決定するステップA4。トランザクションプール手段25は、ステップA4で決定したバックオフ時間が経過するまでトランザクション再実行を待機させるステップA5。その後、ステップA1に戻りトランザクションを再実行する。次に、本実施形態によるトランザクション同時実行制御システム200の動作について具体例を用いて説明する。トランザクション同時実行制御装置2のトランザクション優先度決定手段31は、トランザクション発行装置1がトランザクション毎に指定する優先度例えば、HIGH,MIDDLE,LOWを取得する。また、予め設定された優先度決定ルールに従って、トランザクション優先度決定手段31がトランザクション毎の優先度を自身で決定してもよい。優先度決定ルールは、例えばトランザクション内部で更新するデータの規模テーブルレコード数等に従って優先度HIGH,MIDDLE,LOWを決定するなどの方法が考えられる。トランザクション内部で多くのレコードを更新する大規模トランザクションは、他の小規模トランザクションと更新対象となるレコードの多くが重複するため、自身や他トランザクションのコミット失敗を誘発する可能性が高い。このため、大規模トランザクションの優先度をHIGHに決定し、直ちにトランザクションを実行することで、自身および他トランザクションのコミット失敗を防止することができる。インターバル時間決定手段32は、例えば図9に示すトランザクション実行優先度pおよびインターバル時間intpの対応関係を示すインターバル時間マップを用いて、トランザクション毎のインターバル時間を決定する。バックオフ時間決定手段24は、実施の形態1で用いたバックオフ時間にインターバル時間を加算した値をバックオフ時間として算出する式3。T_bo=intprand×slot...3以上のように、本実施形態によれば、CAS失敗時におけるトランザクション再実行までのバックオフ時間を、トランザクション実行優先度に応じて調整するようにしたので、トランザクション毎に優先度を設定したサービス品質保証ができる。上記の実施の形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。付記1トランザクションの同時実行制御を行うトランザクション同時実行制御システムであって、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部を備えた、トランザクション同時実行制御システム。付記2前記バックオフ時間決定部は、所定の上限値および下限値の間に含まれる乱数値を用いて、前記トランザクションの再実行までの待ち時間を計算する、付記1に記載のトランザクション同時実行制御システム。付記3前記トランザクション実行部がトランザクション実行を開始してから完了するまでの実行時間を測定するトランザクション実行時間測定部を備え、前記バックオフ時間決定部は、前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間から前記実行時間を減算した値を、次回の再実行までの待ち時間とする、付記1または2に記載のトランザクション同時実行制御システム。付記4前記トランザクションの実行優先度を決定するトランザクション優先度決定部と、前記実行優先度に基づいて、前記トランザクションを再実行するまでのインターバル時間を決定するインターバル時間決定部と、を備え、前記バックオフ時間決定部は、前記インターバル時間を用いて前記トランザクションの再実行までの待ち時間を調整する、付記1から3のいずれかに記載のトランザクション同時実行制御システム。付記5前記バックオフ時間決定部は、前記トランザクションの再実行のコミットが失敗であった場合に、前回計算した待ち時間に前記インターバル時間を加算した値を、次回の再実行までの待ち時間とする、付記4に記載のトランザクション同時実行制御システム。付記6前記トランザクションの同時実行制御は、楽観的ロックに基づくトランザクション同時実行制御である、付記1から5のいずれかに記載のトランザクション同時実行制御システム。付記7トランザクションの同時実行制御を行うトランザクション同時実行制御方法であって、前記トランザクションを実行する工程と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算する工程と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させる工程と、を備えた、トランザクション同時実行制御方法。付記8コンピュータを、トランザクションの同時実行制御を行うトランザクション同時実行制御装置として機能させるプログラムであって、前記コンピュータを、前記トランザクションを実行するトランザクション実行部と、前記トランザクションのコミットが失敗であった場合に、前記トランザクションの再実行までの待ち時間を計算するバックオフ時間決定部と、前記トランザクションのコミットが失敗であった場合に、前記待ち時間が経過するまで前記トランザクションの再実行を待機させるトランザクションプール部、として機能させるプログラム。"