(57)【特許請求の範囲】
【請求項１】
計算装置であってそれぞれが分散データベースを備えている複数のノードと、
前記ノードで実行されるトランザクションの識別子であるTIDを発行し、トランザクションの開始の情報およびトランザクションの終了の情報を保持するトランザクション管理装置と、
前記ノードからトランザクションの操作要求を受け付け、当該トランザクションを実行後、操作完了を前記ノードに通知する不揮発性メモリ型ストレージと、
を備えるストレージシステム。
【請求項２】
前記不揮発性メモリ型ストレージは、
前記ノードに対して、レコード書き込み操作、トランザクションに係る操作を確定させるレコードコミット操作、レコード読出し操作、レコード削除操作、トランザクションの単位で以前の巻き戻し状態とするロールバック操作、巻き戻しの限界に係るロールバック限界TID登録操作、不要TID削除操作の機能を提供するトランザクションレコードアクセス部と、
トランザクションの巻き戻しの限界となる前記TIDを保持するロールバック限界TID保持部と、
前記不揮発性メモリ型ストレージに対する操作要求元のノードに関し、ノード番号、レコードの識別子であるレコードID、前記TIDを保持するノードアクセス情報保持部と、
前記レコードIDと前記TIDとの関係を論理アドレスを介して保持するTID-論理アドレス変換リストと、
前記レコードを記憶する不揮発性メモリと、
前記不揮発性メモリの記憶領域の物理アドレスと前記論理アドレスの対応関係を格納する論物変換テーブルと、
を備える請求項１に記載のストレージシステム。
【請求項３】
前記トランザクションレコードアクセス部は、前記ノードから操作の要求を受け付けると、前記操作要求元のノードアクセス情報を前記ノードアクセス情報保持部に送り、要求が完了すると、前記ノードアクセス情報保持部に保持した前記操作要求元のノードアクセス情報を用いて完了通知を前記ノードに送信する請求項２に記載のストレージシステム。
【請求項４】
前記不揮発性メモリは、固有の物理アドレスを持つＮＡＮＤ型フラッシュメモリである請求項２または請求項３に記載のストレージシステム。
【請求項５】
前記TID-論理アドレス変換リストは、
リストに要素を追加した前記TIDを表す操作したTIDと、この操作したTIDがレコードを書き込んだ論理アドレスと、コミットが完了したか否かを表すコミットフラグと、レコードを削除したか否かを表す削除フラグの各要素をリスト形式で保持する請求項２乃至請求項４のいずれか１項に記載のストレージシステム。
【請求項６】
前記ロールバック操作は、以前の状態への巻き戻し先TID を引数とし、
前記ロールバック限界TID 登録操作は、巻き戻し限界となるTID を引数とし、
前記不要TID 削除操作は引数を伴わない請求項２乃至請求項５のいずれか１項に記載のストレージシステム。
【請求項７】
計算装置であってそれぞれが分散データベースを備えている複数のノードと不揮発性メモリ型ストレージとを備えるストレージシステムに、
前記ノードで実行されるトランザクションの識別子であるTIDを発行し、トランザクションの開始の情報およびトランザクションの終了の情報を保持する機能と、
前記ノードからトランザクションの操作要求を受け付け、当該トランザクションを実行後、操作完了を前記ノードに通知する機能と、
を実現させるためのストレージシステム用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ストレージシステムおよびストレージシステム用プログラムに関する。
【背景技術】
【０００２】
複数の計算装置およびストレージ装置がネットワークで接続された分散データベースシステムにおいて、複数のユーザからストレージ装置に対して同時に処理要求が行われた場合、単位時間当たりに処理するスループットを向上させる方法として、多版同時実行制御(Multi Version Concurrency Control、以下MVCCと略称)を用いたトランザクション機構が広く利用されている。MVCC は、任意のレコードにおける変更状態(バージョン)を複数保持することで同時並行性を失わずに処理し、かつ情報の一貫性を保証しつつ、データアクセスの依存関係を解決する制御方法である。
【０００３】
従来、MVCC を用いたトランザクション機構では、同一レコードについて複数トランザクションIDによるバージョンを保持するために、同一レコードであっても異なるデータとして扱い、ファイルシステムを用いてブロック単位で複数バージョンを取得して必要なレコードを抽出している。このように、レコード群からなるブロック単位で転送するので、ネットワークへの負荷が大きい、という問題があった。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−２０４１６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、ノード（計算装置）からのデータ転送量を大幅に削減することのできるストレージシステムおよびストレージシステム用プログラムを提供することである。
【課題を解決するための手段】
【０００６】
実施形態のストレージシステムは、計算装置であってそれぞれが分散データベースを備えている複数のノードと、前記ノードで実行されるトランザクションの識別子であるTIDを発行し、トランザクションの開始の情報およびトランザクションの終了の情報を保持するトランザクション管理装置と、前記ノードからトランザクションの操作要求を受け付け、当該トランザクションを実行後、操作完了を前記ノードに通知する不揮発性メモリ型ストレージと、を備える。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係るストレージシステムの概略構成を示すブロック図である。
【図２】TID -論理アドレス変換リストを説明する図である。
【図３】新レコードの書き込み時の動作を説明する図である。
【図４】新レコードの書き込み時の動作の流れを示すフローチャートである。
【図５】レコードコミット時の動作を説明する図である。
【図６】レコードコミット時の動作の流れを示すフローチャートである。
【図７】既存レコードの更新時の動作を説明する図である。
【図８】既存レコードの更新時の動作の流れを示すフローチャートである。
【図９】既存レコードの削除時の動作を説明する図である。
【図１０】既存レコードの読み出し時の動作を説明する図である。
【図１１】既存レコードの読み出し時の動作の流れを示すフローチャートである。
【図１２】ロールバック限界TID 登録時の動作を説明する図である。
【図１３】ロールバック時の動作を説明する図である。
【図１４】不要TID 削除時の動作を説明する図である。
【図１５】既存レコードの更新時の動作の流れを示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の一実施の形態について、図面を参照して説明する。尚、各図において同一箇所については同一の符号を付すとともに、重複した説明は省略する。
【０００９】
まず、本実施形態で用いる主要な用語について説明する。
【００１０】
「データベース」とは、事前に定めた規則に従ってデータを書き込みや管理を行うことにより、容易に検索・抽出などの再利用を可能とするソフトウェアをいう。
【００１１】
「ストレージ」とは、データを格納する記憶装置をいう。
【００１２】
「ファイルシステム」とは、ストレージに格納されているデータを管理するソフトウェアをいう。
【００１３】
「NAND型フラッシュメモリ」とは、不揮発性の半導体記憶装置をいう。本実施形態では、NAND型フラッシュメモリによりストレージを構成するのが好適である。
【００１４】
「ブロック」とは、ファイルシステムのデータの読み出し／書き込みの単位をいう。
【００１５】
「レコード」とは、データベースにおけるデータ登録の単位をいう。
【００１６】
「レコードID」とは、レコード毎にシーケンシャルに付与される識別子をいう。
【００１７】
「トランザクション処理」とは、複数のデータ操作を不可分な一連の操作として扱う処理をいう。トランザクション処理は、トランザクションID(TID)、コミットおよびロールバックの要素を備える。
【００１８】
「トランザクションID(TID)」とは、トランザクション処理毎にシーケンシャルに付与される識別子である。TIDの数値が大きい方が新しいトランザクションであり、小さい方が古いトランザクションであることを示す。
【００１９】
「コミット」とは、トランザクション処理に関する一連の操作を確定することである。
【００２０】
「ロールバック」とは、トランザクション処理の単位で処理を巻き戻して以前の状態にすることである。
【００２１】
「トランザクション管理装置」とは、各ノードで実行されるトランザクションのTIDを発行し、トランザクションの開始と終了の情報を保持する装置をいう。
【００２２】
「スナップショット」とは、あるトランザクション開始時点において既にコミットが完了しているTIDの集合をいう。トランザクション管理装置が管理しており、都度データベースに渡される。
【００２３】
本実施形態においては、MVCCを備える分散データベースにおいて、ファイルシステムを用いることなく、アクセスするトランザクションに相応しいTIDのレコードを不揮発性メモリ型ストレージが判断して転送するものである。
【００２４】
図１は、本発明の実施形態に係るストレージシステムの概略構成を示すブロック図である。この装置は汎用のコンピュータ（例えばパーソナルコンピュータ（ＰＣ）等）と、同コンピュータ上で動作するソフトウェアとを用いて実現される。コンピュータとしては、ＣＡＤ（Computer Aided Design）やＣＡＥ（Computer Aided Engineering）に好適なエンジニアリングワークステーション（ＥＷＳ）等も含む。本実施形態はこのようなコンピュータにおいて、計算装置であってそれぞれが分散データベースを備えている複数のノードと不揮発性メモリ型ストレージとを備えるストレージシステムに、ノードで実行されるトランザクションの識別子であるTIDを発行し、トランザクションの開始の情報およびトランザクションの終了の情報を保持する機能と、ノードからトランザクションの操作要求を受け付け、当該トランザクションを実行後、操作完了をノードに通知する機能と、を実現させるためのストレージシステム用プログラムとして実施することもできる。
【００２５】
図１に示すように、本実施形態に係るストレージシステム１は、主として、不揮発性メモリ型ストレージ１０と、トランザクション管理装置２０と、複数のノード３０から構成されている。
【００２６】
不揮発性メモリ型ストレージ１０は、ノード３０からレコード書き込み等の操作要求を受け付け、当該処理を実行する。不揮発性メモリ型ストレージ１０の構成およびノード３０からの各操作要求に対する処理の詳細は後述する。
【００２７】
トランザクション管理装置２０は、各ノード３０で実行されるトランザクションのTIDを発行し、トランザクションの開始の情報およびトランザクションの終了の情報を保持する。
【００２８】
ノード３０は、計算装置であって分散データベースを備えている。分散データベースは、複数の計算装置（ノード）およびストレージ装置がネットワークで接続されたハードウェア構成であり、すべてのノードがネットワーク経由で共有ストレージ装置内のレコードにアクセスできるシステムである。
【００２９】
不揮発性メモリ型ストレージ１０は、トランザクションレコードアクセス部１１、ロールバック限界TID保持部１２、ノードアクセス情報保持部１３、TID-論理アドレス変換リスト１４、論物変換テーブル１５、不揮発性メモリ１６を備えている。
【００３０】
トランザクションレコードアクセス部１１は、各ノード３０に対して、以下の機能を提供する。（５）〜（７）の機能は、従来のファイルシステムを使用しない本実施形態における特徴的な機能である。
【００３１】
（１）レコード書き込み操作：レコードID、実行中のTIDを引数とする。  
（２）レコードコミット操作：レコードID、実行中のTIDを引数とする。  
（３）レコード読出し操作：レコードID、実行中のTIDを引数とする。  
（４）レコード削除操作：レコードID、実行中のTIDを引数とする。  
（５）ロールバック操作：コミット操作を取り消して、トランザクションの単位で以前の巻き戻し状態とする。以前の状態への巻き戻し先TIDを引数とする。  
（６）ロールバック限界TID登録操作：巻き戻し限界となるTIDを引数とする。  
（７）不要TID削除操作：不要なTIDを削除するもので、引数を伴わない。
【００３２】
これらの操作の要求をノード３０から受けると、トランザクションレコードアクセス部１１は、要求の送り元ノードアクセス情報をノードアクセス情報保持部１３に送る。要求が完了すると、トランザクションレコードアクセス部１１はノードアクセス情報保持部１３に保持した要求の送り元ノードアクセス情報を用いて完了通知を送信する。
【００３３】
ロールバック限界TID保持部１２は、トランザクション処理の巻き戻しの限界となるTIDを保持する。
【００３４】
ノードアクセス情報保持部１３は、不揮発性メモリ型ストレージ１０に対する操作要求元のノードに関し、ノード番号、レコードＩＤ、TIDを保持する。
【００３５】
TID-論理アドレス変換リスト１４は、データ抽出の際に必要となる書き込んだデータとTIDとの関係を保持するために、レコードIDとTIDとの関係を論理アドレスを介して保持するもので、レコードID毎に、“操作したTID”、“論理アドレス”、“コミットフラグ”、“削除フラグ”の各要素をリスト形式で保持する。図２は、TID-論理アドレス変換リスト１４を説明する図である。ここで、操作したTIDは、リストに要素を追加したTIDである。論理アドレスは、操作したTIDがレコードを書き込んだ論理アドレスである。コミットフラグは、コミットが完了したか否かを表す。コミット済みの状態を示す“True”と、コミットが済んでない状態を示す“False”がある。削除フラグは、データを削除したか否かを表す。削除済みの状態を示す“True”と、削除が済んでない状態を示す“False”がある。
【００３６】
論物変換テーブル１５は、データを記憶する不揮発性メモリ１６の記憶領域の物理アドレスと論理アドレスの対応関係を格納するものである。
【００３７】
不揮発性メモリ１６としては、書き込みが高速で大容量化しやすいＮＡＮＤ型フラッシュメモリが好適である。ＮＡＮＤ型フラッシュメモリは、電気的にデータを書き換えることが可能で、電力を供給しなくてもデータを保持することができる不揮発性の半導体メモリである。不揮発性メモリ１６は、固有の物理アドレスを持っている。
【００３８】
次に、以上のように構成されたストレージシステム１における各操作要求に対する処理について詳述する。
【００３９】
＜新レコードの書き込み＞
図３は、新レコードの書き込み時の動作を説明する図である。図３では、ノードＡからレコードID=１、 TID=１００の書き込み要求を受けた場合を例として動作を説明する。新レコードの書き込み要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードA、 レコードID=１、 TID=１００を登録する。
【００４０】
続いて、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４にTID-論理アドレスを登録する。図２に示す例では、操作したTID＝１００、論理アドレス＝１が登録され、この状態ではトランザクションが確定していないのでコミットフラグ＝Ｆが登録され、書き込み要求なので削除フラグ＝Ｆが登録される。
【００４１】
続いて、トランザクションレコードアクセス部１１は、論物変換テーブル１５の論理アドレス＝１に不揮発性メモリ１６の物理アドレスを登録する。
【００４２】
続いて、トランザクションレコードアクセス部１１は、不揮発性メモリ１６の所定物理アドレスにレコードを書き込む。
【００４３】
トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、書き込み完了通知をノードAに送信する。
【００４４】
図４は、新レコードの書き込み時の動作の流れを示すフローチャートである。
【００４５】
まず、不揮発性メモリ型ストレージ１０のトランザクションレコードアクセス部１１は、新レコードの書き込みの要求を受信する（ステップＳ４１）。
【００４６】
次に、ノードアクセス情報保持部１３に書き込みの要求があったノード番号、レコードID、TIDを登録する（ステップＳ４２）。
【００４７】
次に、TID-論理アドレス変換リスト１４に、レコードIDが合致するリストの有無を検索する（ステップＳ４３）。
【００４８】
リストが存在しない場合には、レコードIDについて新規リストを作成（ステップＳ４４）し、ステップＳ４５に移行する。新レコード書き込み時は対象レコードIDのリストが存在していないため、ステップＳ４４のフローを通る。
【００４９】
一方、リストが存在する場合には、TIDが昇順になるようリストに要素を追加し、TIDと論理アドレスを登録し、コミットフラグと削除フラグはFalseとして登録する（ステップＳ４５）。
【００５０】
続いて、論物変換テーブル１５の論理アドレスに物理アドレスを登録する（ステップＳ４６）。
【００５１】
次に、不揮発性メモリ１６の所定物理アドレスにレコードを書き込む（ステップＳ４７）。
【００５２】
続いて、レコードIDとTIDに基づいてノードアクセス情報保持部１３から要求のあったノードを検索する（ステップＳ４８）。
【００５３】
次に、トランザクションレコードアクセス部１１は、書き込み完了通知をノードに送信（ステップＳ４９）し、新レコードの書き込み時の処理を終了する。
【００５４】
＜レコードコミット＞
図５は、レコードコミット時の動作を説明する図である。図５では、ノードＡからレコードID＝１、 TID＝１００のコミット要求を受けた場合を例にして動作を説明する。コミット要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードA、 レコードID=１、 TID＝１００を登録する。
【００５５】
続いて、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４にTID-論理アドレスを登録する。図５に示す例では、コミットフラグ＝Ｔへの変更が登録される。
【００５６】
次に、トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、レコードのコミット完了通知をノードAに送信する。
【００５７】
図６は、レコードコミット時の動作の流れを示すフローチャートである。
【００５８】
まず、不揮発性メモリ型ストレージ１０のトランザクションレコードアクセス部１１は、レコードのコミットの要求を受信する（ステップＳ６１）。
【００５９】
次に、ノードアクセス情報保持部１３にコミットの要求があったノード番号、レコードID、TIDを登録する（ステップＳ６２）。
【００６０】
続いて、TID-論理アドレス変換リスト１４から合致するレコードＩＤとTIDを検索し、コミットフラグをTrueに変更する（ステップＳ６３）。
【００６１】
次に、レコードIDとTIDに基づいてノードアクセス情報保持部１３からコミット要求のあったノードを検索する（ステップＳ６４）。
【００６２】
次に、トランザクションレコードアクセス部１１は、レコードのコミット完了通知をノードに送信（ステップＳ６５）し、レコードのコミット時の処理を終了する。
【００６３】
＜既存レコードの更新＞
図７は、既存レコードの更新時の動作を説明する図である。図７では、ノードＡからレコードID=１、TID=１０３の更新要求を受けた場合の動作を例にして説明する。更新の書き込み要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードA、 レコードID=１、 TID=１０３を登録する。
【００６４】
次に、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４にTID順で昇順にソートしてTID-論理アドレスを登録する。図７に示す例では、操作したTID＝１０３、論理アドレス＝２が登録され、この状態ではトランザクションが確定していないのでコミットフラグ＝Ｆが登録され、更新の書き込み要求なので削除フラグ＝Ｆが登録される。
【００６５】
続いて、トランザクションレコードアクセス部１１は、論物変換テーブル１５の論理アドレス＝２に不揮発性メモリ１６の物理アドレスを登録する。
【００６６】
続いて、トランザクションレコードアクセス部１１は、不揮発性メモリ１６の所定物理アドレスにレコードを書き込む。
【００６７】
次に、トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、更新の書き込み完了通知をノードAに送信する。
【００６８】
図８は、既存レコードの更新時の動作の流れを示すフローチャートである。
【００６９】
まず、不揮発性メモリ型ストレージ１０のトランザクションレコードアクセス部１１は、既存レコードの更新の要求を受信する（ステップＳ８１）。
【００７０】
次に、ノードアクセス情報保持部１３に既存レコードの更新の要求があったノード番号、レコードＩＤ、TIDを登録する（ステップＳ８２）。
【００７１】
次に、TID-論理アドレス変換リスト１４にレコードIDが合致するリストを検索する（ステップＳ８３）。
【００７２】
リストが存在しない場合には、レコードIDについて新規リストを作成（ステップＳ８４）し、ステップＳ８５に移行するが、既存レコードの更新時は対象レコードIDのリストが存在するので、TIDが昇順になるようリストに要素を追加し、TIDと論理アドレスを登録、コミットフラグと削除フラグはFalseとして登録する（ステップＳ８５）。
【００７３】
次に、論物変換テーブル１５の論理アドレスに不揮発性メモリ１６の物理アドレスを登録する（ステップＳ８６）。
【００７４】
次に、不揮発性メモリ１６の所定物理アドレスにレコードを書き込む（ステップＳ８７）。
【００７５】
続いて、レコードIDとTIDに基づいてノードアクセス情報保持部１３から既存レコードの更新要求のあったノードを検索する（ステップＳ８８）。
【００７６】
次に、トランザクションレコードアクセス部１１は、既存レコードの更新完了通知をノードに送信（ステップＳ８９）し、既存レコードの更新時の処理を終了する。
【００７７】
＜既存レコードの削除＞
図９は、既存レコードの削除時の動作を説明する図である。図９では、ノードＡからレコードID=１、TID=１０８の削除要求を受けた場合の動作を例にして説明する。既存レコードの削除要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードA、 レコードID=１、 TID=１０８を登録する。
【００７８】
続いて、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４にTID順で昇順にソートしてTID-論理アドレスを登録する。図９に示す例では、操作したTID＝１０８が登録され、この状態ではトランザクションが確定していないのでコミットフラグ＝Ｆが登録され、削除要求なので削除フラグにTrueが登録される。
【００７９】
トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、既存レコードの削除完了通知をノードAに送信する。
【００８０】
尚、既存レコードの削除操作の完了については、レコードコミット時と同様のコミット操作が適用される。
【００８１】
＜既存レコードの読み出し＞
図１０は、既存レコードの読み出し時の動作を説明する図である。図１０では、ノードＢからレコードID=１、 TID=１０５の読み出し要求を受けた場合の動作を例にして説明する。既存レコードの読み出し要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードＢ、 レコードID=１、 TID=１０５を登録する。
【００８２】
続いて、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４のTID-論理アドレスを検索するが、読み出し要求のTID以下で最新のTIDを検索する。図１０に示す例では、操作したTID＝１０３、論理アドレス＝２、コミットフラグ＝Ｔ、削除フラグ＝Ｆが抽出される。
【００８３】
そこで、トランザクションレコードアクセス部１１は、論物変換テーブル１５の論理アドレス＝２の物理アドレスを取得する。
【００８４】
続いて、トランザクションレコードアクセス部１１は、不揮発性メモリ１６の所定物理アドレスからレコードを読み出す。
【００８５】
トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、既存レコードの読み出し完了通知をノードＢに送信する。
【００８６】
図１１は、既存レコードの読み出し時の動作の流れを示すフローチャートである。
【００８７】
まず、不揮発性メモリ型ストレージ１０のトランザクションレコードアクセス部１１は、既存レコードの読み出しの要求を受信する（ステップＳ１１０１）。
【００８８】
次に、ノードアクセス情報保持部１３に既存レコードの読み出しの要求があったノード番号、レコードID、TIDを登録する（ステップＳ１１０２）。
【００８９】
次に、TID-論理アドレス変換リスト１４にレコードIDが合致するリストの有無を検索する（ステップＳ１１０３）。
【００９０】
リストが存在しない場合（ステップＳ１１０４）には、エラーとなる。
【００９１】
一方、リストが存在する場合、リストから読み出しTID以下の操作TIDであってかつ最大の操作TIDの要素を検索する（ステップＳ１１０５）。
【００９２】
次に、コミットフラグについてTrueかつ削除フラグについてFalseか否かを判定する（ステップＳ１１０６）。
【００９３】
ステップＳ１１０６でＮｏであれば、１つ古いTIDの要素を読み出す（ステップＳ１１０７）。
【００９４】
次に、コミットフラグについてTrueかつ削除フラグについてFalseか否かを判定する（ステップＳ１１０８）。
【００９５】
ステップＳ１１０８でＮｏであれば、ステップＳ１１０７に戻り、ステップＳ１１０８でＹｅｓであれば、ステップＳ１１０９に移行する。
【００９６】
ステップＳ１１０６でＹｅｓであれば、リストから論理アドレスを読み出し、論物変換テーブルの該当論理アドレスから不揮発性メモリ１６の物理アドレスを読み出す（ステップＳ１１０９）。
【００９７】
次に、不揮発性メモリ１６の所定物理アドレスからレコードを読み出す（ステップＳ１１１０）。
【００９８】
続いて、レコードＩＤとTIDに基づいてノードアクセス情報保持部１３から要求のあったノードを検索する（ステップＳ１１１１）。
【００９９】
次に、トランザクションレコードアクセス部１１は、読み出し完了通知と読み出したレコードをノードに送信（ステップＳ１１１２）し、既存レコードの読み出し時の処理を終了する。
【０１００】
＜ロールバック限界TID登録＞
図１２は、ロールバック限界TID登録時の動作を説明する図である。図１２では、ノードＡからロールバック限界TIDの登録要求を受けた場合の動作を例にして説明する。
【０１０１】
ロールバック限界TIDの登録要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードA、 ロールバック限界TIDを登録する。
【０１０２】
続いて、トランザクションレコードアクセス部１１は、ロールバック限界TID保持部１２に、ロールバック限界TIDを登録する。
【０１０３】
＜ロールバック＞
次に、トランザクションの単位で以前の巻き戻し状態とするロールバックについて説明する。図１３は、ロールバック時の動作を説明する図である。図１３では、ノードＢからTID＝１０５のロールバック要求を受けた場合の動作を例にして説明する。
【０１０４】
ロールバックの要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードＢ、TID＝１０５、 ロールバックを登録する。
【０１０５】
続いて、トランザクションレコードアクセス部１１は、ロールバック限界TID保持部１２にアクセスし、ロールバック要求のあったTIDと登録されているロールバック限界TIDを比較する。
【０１０６】
次に、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４にロールバック要求のあったTIDが合致するリストを検索する。
【０１０７】
巻き戻し状態となったので、図１３に示す例では、操作したTID＝１０８ではコミットフラグ＝Ｆに変更となっている。
【０１０８】
＜不要TID削除＞
図１４は、不要TID削除時の動作を説明する図である。図１４では、ノードＡから不要TID削除要求を受けた場合の動作を例にして説明する。不要TID削除要求を受け付けたトランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３にノードアクセス情報として、ノードＡ、 不要TID削除を登録する。
【０１０９】
次に、トランザクションレコードアクセス部１１は、ロールバック限界TID保持部１２から、ロールバック限界TIDを読み出す。
【０１１０】
続いて、トランザクションレコードアクセス部１１は、TID-論理アドレス変換リスト１４の中から不要データを選択する。
【０１１１】
次に、トランザクションレコードアクセス部１１は、論物変換テーブル１５の不要データに該当する不揮発性メモリ１６の物理アドレスを取得する。
【０１１２】
続いて、トランザクションレコードアクセス部１１は、不揮発性メモリ１６の所定物理アドレスからレコードを削除する。
【０１１３】
トランザクションレコードアクセス部１１は、ノードアクセス情報保持部１３に登録されたノードアクセス情報を参照して、不要TID削除完了通知をノードＡに送信する。
【０１１４】
図１５は、既存レコードの更新時の動作の流れを示すフローチャートである。
【０１１５】
まず、不揮発性メモリ型ストレージ１０のトランザクションレコードアクセス部１１は、不要TID削除の要求を受信する（ステップＳ１５０１）。
【０１１６】
次に、ノードアクセス情報保持部１３に不要TID削除の要求があったノード番号と不要TID削除の実施を登録する（ステップＳ１５０２）。
【０１１７】
次に、ロールバック限界TIDを読み出す（ステップＳ１５０３）。
【０１１８】
次に、TID-論理アドレス変換リスト１４から最初に登録されているレコードIDのリストを読み出す（ステップＳ１５０４）。
【０１１９】
続いて、リストから要素を読み出す（ステップＳ１５０５）。
【０１２０】
次に、リストの要素のうちロールバック限界TIDから、ロールバック限界TID以下のTIDのうち１つ古いTIDを残して削除する（ステップＳ１５０６）。
【０１２１】
次に、削除したTIDに含まれている論理アドレスが指す不揮発性メモリ１６の物理アドレスのデータをメモリから削除する（ステップＳ１５０７）。
【０１２２】
続いて、次のレコードIDがリストに存在するか否かを判定する（ステップＳ１５０８）。
【０１２３】
次のレコードIDがリストに存在する場合（ステップＳ１５０８でＹｅｓ）、次のレコードIDのリストを読み出し（ステップＳ１５０９）、ステップＳ１５０５に戻る。
【０１２４】
一方、次のレコードIDがリストに存在しない場合（ステップＳ１５０８でＮｏ）、ノードアクセス情報保持部１３から不要TID削除の要求のあったノードを検索する（ステップＳ１５１０）。
【０１２５】
次に、トランザクションレコードアクセス部１１は、不要TID削除の完了通知をノードに送信（ステップＳ１５１１）し、不要TID削除時の処理を終了する。
【０１２６】
以上説明したように、本実施形態によれば、計算装置からのデータ転送量を大幅に削減し、スループットを向上させ、ネットワークへの負荷を軽減させることができる。例えば、各レコードが平均１０バージョンを持つとすると、各ノードからストレージへのデータ転送量が１／１０に削減できるため、スループットは１０倍に向上する。
【０１２７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２８】
１・・・ストレージシステム
１０・・・不揮発性メモリ型ストレージ
１１・・・トランザクションレコードアクセス部
１２・・・ロールバック限界TID保持部
１３・・・ノードアクセス情報保持部
１４・・・TID-論理アドレス変換リスト
１５・・・論物変換テーブル
１６・・・不揮発性メモリ
２０・・・トランザクション管理装置
３０・・・ノード
【図１】
0006293709.tif 000002
【図２】
0006293709.tif 000003
【図３】
0006293709.tif 000004
【図４】
0006293709.tif 000005
【図５】
0006293709.tif 000006
【図６】
0006293709.tif 000007
【図７】
0006293709.tif 000008
【図８】
0006293709.tif 000009
【図９】
0006293709.tif 000010
【図１０】
0006293709.tif 000011
【図１１】
0006293709.tif 000012
【図１２】
0006293709.tif 000013
【図１３】
0006293709.tif 000014
【図１４】
0006293709.tif 000015
【図１５】
0006293709.tif 000016