(57)【要約】【課題】トランザクション処理を、コミット（COMMIT）およびロールバック（ROLLBACK）共、高速に実行する技術を提供する。【解決手段】データベース処理部は、データベースを操作する命令であるコマンド文を受け取り、このコマンド文を解釈してデータベースの変更内容を決定し、このデータベースの変更内容に基づいて、キャッシュメモリ上のデータベースの内容を変更し、キャッシュメモリ上のデータベースの変更された内容に対応する論理アドレスと、この変更された内容のデータを記憶させることが可能な不揮発性メモリ上の物理アドレスとを対応付けて、トランザクション用論物テーブルに書き込み、トランザクション処理の結果をデータベースに反映させること意味する命令を受け取ると、トランザクション用論物テーブルの内容を論物変換テーブルに反映させる。データ管理部は、キャッシュメモリ上のデータベースの変更された内容を、不揮発性メモリへバックグラウンドで書き込む。【選択図】図１
2015103147.tif 000002
【特許請求の範囲】
【請求項１】
データベースを記憶する不揮発性メモリと、
前記データベースを一時的に記憶するキャッシュメモリと、
データの論理アドレスと、これに対応する前記不揮発性メモリの物理アドレスを対応付けて記憶する第１の変換テーブルと、
データの論理アドレスと、これに対応する前記不揮発性メモリの物理アドレスを対応付けて記憶する第２の変換テーブルと、
データベースを操作する命令であるコマンド文を受け取り、このコマンド文を解釈してデータベースの変更内容を決定し、このデータベースの変更内容に基づいて、前記キャッシュメモリ上のデータベースの内容を変更し、前記キャッシュメモリ上のデータベースの変更された内容に対応する論理アドレスと、この変更された内容のデータを記憶させることが可能な前記不揮発性メモリ上の物理アドレスとを対応付けて、前記第２の変換テーブルに書き込み、トランザクション処理の結果をデータベースに反映させること意味する命令を受け取ると、前記第２の変換テーブルの内容を前記第１の変換テーブルに反映させる第１の処理手段と、
前記キャッシュメモリ上のデータベースの変更された内容を、前記不揮発性メモリへバックグラウンドで書き込む第２の処理手段と
を有するストレージ装置。
【請求項２】
前記第１の処理手段は、トランザクション処理の結果を取り消すことを意味する命令を受け取ると、前記第２の変換テーブル内容を前記第１の変換テーブルに反映させずに、前記第２の変換テーブル内容を取り消す、
請求項１に記載のストレージ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の実施の形態は、ストレージ装置に関する。
【背景技術】
【０００２】
近年、SSD（Solid State Drive）と呼ばれるフラッシュメモリ、特にNAND型フラッシュメモリを用いた記憶媒体を、データベースのストレージとして使う製品が増えている。従来はファイルシステム上にデータベースを保存していたが、今後は、ファイルシステムなしのデータベースが増加すると思われる。このようなファイルシステムなしのデータベースにおいては、トランザクション処理速度がデータベースの性能を左右する。そのため、コミット(反映)とロールバック(キャンセル)を速やかに実行する技術が求められている。
NAND型フラッシュメモリを用いた記憶媒体をデータベースのストレージとして使う従来のストレージ装置について説明する。
【０００３】
図１５は、NAND型フラッシュメモリを用いた記憶媒体をデータベースのストレージとして使う、従来のストレージ装置の構成例を示す機能ブロック図である。
【０００４】
従来のストレージ装置１Ａは、入出力装置１０と、入出力装置１０に接続されたデータ管理部６０と、データ管理部６０に接続された演算装置５０と、データ管理部６０に接続された不揮発性メモリ４０と、データ管理部６０に接続された揮発性メモリ３０Ａとを有している。
揮発性メモリ３０Ａは、キャッシュメモリ３１と、消去済ページリスト３２と、ブロック状態テーブル３３と、論物変換テーブル３４とを有している。
【０００５】
入出力装置１０は、ストレージ装置１Ａと、ストレージ装置１Ａと接続されたコンピュータなどの装置とのインターフェイスであって、例えばシリアルATA（SATA）などである。
【０００６】
データ管理部６０は、不揮発性メモリ４０のブロックやページ状態を管理し、読み書きを制御する機能を有する。データ管理部６０は、例えばNANDメモリコントローラチップを用いて実現される。データ管理部６０は、全ページが無効のブロックを選択・消去し、消去済ページリスト３２に追加し、データを書きこむ際は、消去済ページリスト３２からページを取得する。
【０００７】
演算装置５０は 、データ管理部６０からの要求に従って演算を行い、演算結果を出力する機能を有する 。演算装置５０では、データの格納先を取得したり、データの有効・無効などの状態を判断する処理を行う。
不揮発性メモリ４０は、電源を供給しなくても記憶を保持するメモリであって、例えばNANDメモリチップである。
【０００８】
揮発性メモリ３０Ａは、電源を供給しないと記憶している情報を保持できないメモリであって、例えばDRAMなどである。揮発性メモリ３０Ａは、キャッシュメモリ３１と、消去済ページリスト３２と、ブロック状態テーブル３３と、論物変換テーブル３４とを有している。
キャッシュメモリ３１は、データを一時的に保存するための記憶領域である。
【０００９】
消去済ページリスト３２は、不揮発性メモリ４０における書き込み可能なページのリスト（データ）を保存するための記憶領域である。データ管理部６０は、不揮発性メモリ４０にデータを書きこむ際は、この消去済ページリスト３２から書き込み先ページを取得する。
【００１０】
ブロック状態テーブル３３は、不揮発性メモリ４０における各ブロックのページの状態を管理するデータを保存するための記憶領域である。ブロック状態テーブル３３は、各ブロックについて「有効」「無効」「消去済」などの状態を持つ。
【００１１】
論物変換テーブル３４は、不揮発性メモリ４０における各ページの論理アドレスと物理アドレスの対応関係を保持するデータを保存するための記憶領域である。図１６は、論物変換テーブル３４の例を示す図である。図１６に示す論物変換テーブル３４は、論理アドレス「０」、論理アドレス「１」、論理アドレス「２」、論理アドレス「３」に対応するレコードを有している。論理アドレス「０」に対応するレコードは、対応する物理アドレスとしてブロック「１」のページ「３」を記憶している。論理アドレス「１」に対応するレコードは、対応する物理アドレスとしてブロック「４」のページ「０」を記憶している。論理アドレス「２」に対応するレコードは、対応する物理アドレスとしてブロック「１」のページ「２」を記憶している。論理アドレス「３」に対応するレコードは、対応する物理アドレスとしてブロック「２」のページ「１」を記憶している。
【００１２】
論物変換テーブル３４の内容の通り、論理アドレス「０」に対応するデータは、不揮発性メモリ４０のブロック「１」のページ「３」に書き込まれている。論理アドレス「１」に対応するデータは、不揮発性メモリ４０のブロック「４」のページ「０」に書き込まれている。論理アドレス「２」に対応するデータは、不揮発性メモリ４０のブロック「１」のページ「２」に書き込まれている。論理アドレス「４」に対応するデータは、不揮発性メモリ４０のブロック「２」のページ「１」に書き込まれている。
なお、データが更新される時は、データ管理部６０は、常に別の物理アドレスに更新データを書き込む。
【００１３】
［従来のストレージ装置の書込み処理（書込み動作）］
次に、従来のストレージ装置１Ａの書込み処理（書込み動作）を説明する。図１７は、従来のストレージ装置１Ａの書込み処理の例を示すフローチャートである。
【００１４】
従来のストレージ装置１Ａ、より詳しくはデータ管理部６０は、コンピュータなどの装置から入出力装置１０を介して、ある論理アドレスへの書き込み要求を取得する（S1710 ）。
データ管理部６０は、この書き込み要求に対応するデータ（更新データなど）を、揮発性メモリ３０Ａのキャッシュメモリ３１上に書き込む（S1720）。
次に、データ管理部６０は、揮発性メモリ３０Ａの消去済ページリスト３２の先頭から書き込み先物理ページを取得する（S1730）。
【００１５】
次に、データ管理部６０は、不揮発性メモリ４０における、上記ステップS1730で取得した物理ページに、ステップS1720でキャッシュメモリ３１に書き込んだデータを書き込む（S1740）。
【００１６】
次に、データ管理部６０は、論物変換テーブル３４の上記論理アドレスに対応するレコードの内容を、ステップS1740においてデータを書き込んだ物理ページに対応するブロック番号及びページ番号に書き換える（S1750）。
【００１７】
次に、データ管理部６０は、論物変換テーブル３４の、以前登録されていた物理アドレスに対応する、ブロック状態テーブル３３の当該ページの状態を「有効」から「無効」に変更する（以前登録されていた物理アドレスが有効な値の場合）（S1760）。
【００１８】
次に、データ管理部６０は、ブロック状態テーブル３３の、ステップS1740において書き込んだ該当ページの状態を「消去済」から「有効」に変更する（S1770）。
以上で、従来のストレージ装置１Ａは、書込み処理を終了する。
【００１９】
［従来のストレージ装置の消去処理（消去動作 ）］
次に、従来のストレージ装置１Ａの消去処理（消去動作）を説明する。図18は、従来のストレージ装置１Ａの消去処理の例を示すフローチャートである。
【００２０】
従来のストレージ装置１Ａ、より詳しくはデータ管理部６０は、揮発性メモリ３０Ａの消去済ページリスト３２に書き込まれている登録済ページの数が一定以下か否かを判定する（Ｓ1810）。消去済ページリスト３２に書き込まれている登録済ページの数が一定以下ではないと判定した場合（Ｓ1810, No）、ストレージ装置１、より詳しくはデータ管理部６０は消去処理を終了する。
【００２１】
一方、ステップＳ1810において、登録済ページの数が一定以下であると判定した場合（Ｓ1810, Ｙｅｓ）、従来のストレージ装置１Ａ、より詳しくはデータ管理部６０は、揮発性メモリ３０のブロック状態テーブル３３から、全ページが「無効」となっているブロックを選択する（Ｓ1820）。
【００２２】
次に、従来のストレージ装置１Ａ、より詳しくはデータ管理部６０は、ステップＳ1820で選択した、不揮発性メモリ４０のブロックに書き込まれているデータを消去する（Ｓ1830）。
【００２３】
次に、従来のストレージ装置１Ａ、より詳しくはデータ管理部６０は、ステップＳ1820で選択したブロックの全ページについて、揮発性メモリ３０のブロック状態テーブル３３に記録されている状態を「消去済」に変更する（Ｓ1840）。
【００２４】
次に、ストレージ装置１、より詳しくはデータ管理部６０は、揮発性メモリ３０Ａの消去済ページリスト３２に、ステップＳ1830で消去したページを追加する（Ｓ1850）。
以上で従来のストレージ装置１Ａは消去処理（消去動作）を終了する。
［従来のストレージ装置のトランザクション・コミット処理］
【００２５】
従来のストレージ装置１Ａのトランザクション・コミット処理を説明する。図19は、従来のストレージ装置１Ａのトランザクション・コミット処理の例を示すフロー図である。
【００２６】
まず、従来のストレージ装置１Ａに接続されたコンピュータ（図略）にＢＥＧＩＮ文が入力される（Ｓ3010）。これによりトランザクションが開始する。ＢＥＧＩＮ文の入力に対して、データベース内部の動作は特に行われない（S3110）。
【００２７】
次に、ステップS3010に続いて、データベースへの処理命令文（INSERT,  UPDATEなど）がストレージ装置１Ａに接続されたコンピュータ（図略）に入力される（S3020）。これらの処理命令文に応じて、データベース内部の動作として、データ管理部６０は、キャッシュメモリ３１上で、上記処理命令文に応じてデータベースを更新する（S3120）。
【００２８】
次にストレージ装置１Ａに接続されたコンピュータ（図略）にCOMMIT文が入力される（S3030）。COMMIT文の入力に応じて、データベース内部の動作として、データ管理部６０は、キャッシュメモリ３１上のデータベースを不揮発性メモリ４０に書き込む（S3130）。
以上で、従来のストレージ装置１Ａのトランザクション・コミット処理は終了する。
【００２９】
［従来のストレージ装置のトランザクション・ロールバック処理］
従来のストレージ装置１Ａのトランザクション・ロールバック処理を説明する。図20は、従来のストレージ装置１Ａのトランザクション・ロールバック処理の例を示すフロー図である。
【００３０】
まず、従来のストレージ装置１Ａに接続されたコンピュータ（図略）にＢＥＧＩＮ文が入力される（S4010）。これによりトランザクションが開始する。ＢＥＧＩＮ文の入力に対して、データベース内部の動作は特に行われない（S4110）。
【００３１】
次に、ステップS4010に続いて、データベースへの処理命令文（INSERT,  UPDATEなど）が従来のストレージ装置１Ａに接続されたコンピュータ（図略）に入力される（S4020）。これらの処理命令文に応じて、データベース内部の動作として、データ管理部６０は、キャッシュメモリ３１上で、上記処理命令文に応じてデータベースを更新する（S4120）。
【００３２】
次に従来のストレージ装置１Ａに接続されたコンピュータ（図略）に、ROLLBACK文が入力される（S4030）。ROLLBACK文に応じて、データベース内部の動作として、データ管理部６０は、キャッシュメモリ３１上のデータベースを破棄する（S4130）。
以上で、従来のストレージ装置１Ａのトランザクション・ロールバック処理は終了する。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特開２００６−２０９３１６号公報
【発明の概要】
【発明が解決しようとする課題】
【００３４】
NAND型フラッシュメモリを用いた記憶媒体をデータベースのストレージとして使う場合、トランザクション時にコミット操作をしてからデータをNAND型フラッシュメモリに書き込むと時間がかかるという問題がある。
本発明の目的は、トランザクション処理を、コミット（COMMIT）およびロールバック（ROLLBACK）共、高速に実行する技術を提供することにある。
【課題を解決するための手段】
【００３５】
本発明の実施の形態はストレージ装置として提案される。ストレージ装置は、不揮発性メモリと、キャッシュメモリと、第１の変換テーブルと、第２の変換テーブルと、第１の処理手段と、第２の処理手段とを有する。
【００３６】
不揮発性メモリは、データベースを記憶する。キャッシュメモリは、データベースを一時的に記憶する。第１の変換テーブル は、データの論理アドレスと、これに対応する不揮発性メモリの物理アドレスを対応付けて記憶する。第２の変換テーブルは、データの論理アドレスと、これに対応する不揮発性メモリの物理アドレスを対応付けて記憶する。第１の処理手段は、データベースを操作する命令であるコマンド文を受け取り、このコマンド文を解釈してデータベースの変更内容を決定し、このデータベースの変更内容に基づいて、キャッシュメモリ上のデータベースの内容を変更し、キャッシュメモリ上のデータベースの変更された内容に対応する論理アドレスと、この変更された内容のデータを記憶させることが可能な不揮発性メモリ上の物理アドレスとを対応付けて、第２の変換テーブルに書き込み、トランザクション処理の結果をデータベースに反映させること意味する命令を受け取ると、第２の変換テーブル内容を第１の変換テーブルに反映させる。第２の処理手段は、キャッシュメモリ上のデータベースの変更された内容を、不揮発性メモリへバックグラウンドで書き込む。
【図面の簡単な説明】
【００３７】
【図１】本実施の形態に係るストレージ装置の構成例を示す機能ブロック図
【図２】ストレージ装置のトランザクション・コミット処理の例を示すフロー図
【図３】ストレージ装置のトランザクション・ロールバック処理の例を示すフロー図
【図４】ストレージ装置のトランザクション処理の例を示すフローチャート
【図５】BEGIN文処理の例を示すフローチャート
【図６】コマンド文処理の例を示したフローチャート
【図７】COMMIT処理の一例を示すフローチャート
【図８】ROLLBACK処理の一例を示すフローチャート
【図９】トランザクション処理前のトランザクション用論物変換テーブル、論物変換テーブル、不揮発性メモリの記憶内容例を示す
【図１０】図９に続く時点の状態のトランザクション用論物変換テーブル、論物変換テーブル、不揮発性メモリの記憶内容例を示す図
【図１１】図１０に続く時点の状態のトランザクション用論物変換テーブル、論物変換テーブル、不揮発性メモリの記憶内容例を示す図
【図１２】図１１に続く時点の状態のトランザクション用論物変換テーブル、論物変換テーブル、不揮発性メモリの記憶内容例を示す図
【図１３】図１１に続く時点の状態のトランザクション用論物変換テーブル、論物変換テーブル、不揮発性メモリの記憶内容例を示す別の図
【図１４】（Ａ）は従来手法によるトランザクション処理のシーケンス図、（Ｂ）は本実施の形態にかかるストレージ装置によるトランザクション処理のシーケンス図
【図１５】従来のストレージ装置の構成例を示す機能ブロック図
【図１６】論物変換テーブルの例を示す図
【図１７】従来のストレージ装置の書込み処理の例を示すフローチャート
【図１８】従来のストレージ装置の消去処理の例を示すフローチャート
【図１９】従来のストレージ装置のトランザクション・コミット処理の例を示すフロー図
【図２０】従来のストレージ装置のトランザクション・ロールバック処理の例を示すフロー図
【発明を実施するための形態】
【００３８】
以下、図面を参照して本発明の実施の形態に係るストレージ装置を説明する。
[０．用語の定義]
本明細書中で使用する用語の定義を述べる。
【００３９】
[０．１．論物変換テーブル]    
「論物変換テーブル」とは、論理アドレスをNAND型フラッシュメモリの物理アドレスに変換するためのテーブルをいう。
【００４０】
[０．２．トランザクション]    
「トランザクション」とは、データベースにおいて、一連の処理を一つの作業としてまとめて行う処理をいう。
【００４１】
[０．３．コミット]    
「コミット」とは、トランザクション処理の結果をデータベースに反映する処理をいう。
【００４２】
[０．４．ロールバック]    
「ロールバック」とは、トランザクション処理の結果を取り消す処理をいう。
【００４３】
[１．本発明の実施の形態]
本発明の実施の形態は、ストレージ装置として提案される。このストレージ装置は、論物変換テーブルを利用してトランザクション処理のコミットやロールバックを実現することで、処理時間を短縮する装置である。
【００４４】
ストレージ装置は、情報処理装置であって、この情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読み出し専用メモリ（ROM）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。
【００４５】
[１．１．構成例]
本発明の実施の形態にかかるストレージ装置の構成について説明する。図１は、本実施の形態に係るストレージ装置の構成例を示す機能ブロック図である。なお、機能ブロック図中に示す構成要素は、ストレージ装置の機能を機能ごとにまとめてブロックとして捉えたものであり、ストレージ装置が各構成要素に対応する基板、装置、回路、部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続されている」とは、データ、情報、命令などの送受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の構成要素の機能ブロック図の説明についても同様である。
【００４６】
ストレージ装置１は、入出力装置１０と、入出力装置１０に接続されたデータベース処理部２０と、データベース処理部２０に接続された演算装置５０と、演算装置５０に接続されたデータ管理部６０と、データベース処理部２０及びデータ管理部６０に接続された揮発性メモリ３０と、データベース処理部２０及びデータ管理部６０に接続された不揮発性メモリ４０とを有している。
【００４７】
データベース処理部２０は、入出力装置１０に接続された入出力部２１と、入出力部２１に接続されたコマンド解釈・処理部２２と、コマンド解釈・処理部２２に接続された保存・読み出し処理２３とを有している。保存・読み出し処理２３は不揮発性メモリ４０に接続されており、不揮発性メモリ４０へのデータ書き込み、不揮発性メモリ４０からのデータ読み出しが可能である。
【００４８】
揮発性メモリ３０は、キャッシュメモリ３１と、消去済ページリスト３２と、ブロック状態テーブル３３と、論物変換テーブル３４と、トランザクション用論物変換テーブル３５とを有している。
【００４９】
データベース処理部２０は 、外部からの命令に応じて、データベースの読出し、追加、変更を行う機能を有する。なお、不揮発性メモリ４０へのデータの書き込みは、データ管理部６０が行い、データベース処理部２０は揮発性メモリ３０上のキャッシュデータ等の書き換えを行う。
【００５０】
入出力部２１は、入出力装置１０からデータベース操作に関する命令文を受け取り、当該命令文の処理結果を入出力装置１０へ出力する機能を有する。
【００５１】
コマンド解釈・処理部２２は入出力部２１からデータベース操作に関する命令文を受け取り、この命令文を解釈して、データベースの変更内容を出力する機能を有する。
【００５２】
保存・読み出し処理２３は、データベースの変更内容を、揮発性メモリ３０上のキャッシュメモリ３１と、消去済ページリスト３２と、ブロック状態テーブル３３と、論物変換テーブル３４と、トランザクション用論物変換テーブル３５とに反映させる機能を有する。
【００５３】
トランザクション用論物変換テーブル３５は、一つのトランザクションの開始から終了までの間に生じた論理アドレスと物理アドレスの対応関係を記述したデータを保存する記憶領域である。
【００５４】
ストレージ装置１のその他の構成要素は、図１５に示した従来のストレージ装置１Ａの構成要素と同様の機能を有する。同様の機能を有する構成要素には、同一の参照符号を付し、これらの機能の詳細な説明は省略する。なお、論物変換テーブル３４は本実施の形態の第１の変換テーブルに相当し、トランザクション用論物変換テーブル３５は本実施の形態の第２の変換テーブルに相当し、データベース処理部２０は本実施の形態の第１の処理手段に相当し、データ管理部６０は本実施の形態の第２の処理手段に相当する。
【００５５】
［２．動作例］
次に、ストレージ装置１の動作を説明する。
［２．１．ストレージ装置のトランザクション・コミット処理］
ストレージ装置１のトランザクション・コミット処理を説明する。図２は、ストレージ装置１のトランザクション・コミット処理の例を示すフロー図である。
【００５６】
まず、ストレージ装置１に接続されたコンピュータ（図略）にＢＥＧＩＮ文が入力される（Ｓ1010）。これによりトランザクションが開始する。ＢＥＧＩＮ文の入力に対して、データベース内部の動作は特に行われない（S1110）。
【００５７】
次に、ステップS1010に続いて、データベースへのコマンド文（処理命令文；INSERT,  UPDATEなど）がストレージ装置１に接続されたコンピュータ（図略）に入力される（S1020）。これらの処理命令文に応じて、データベース処理部２０、より詳しくは入出力部２１が入出力装置１０を介してコンピュータ（図略）から処理命令文を受信する。コマンド解釈・処理部２２は、入出力部２１から処理命令文を受け取り、この処理命令文を解釈してデータベースの変更内容を決定する。保存・読み出し処理２３は、データベースの変更内容に基づいて、キャッシュメモリ３１上のデータベースを更新する（S1120）。なお、データ管理部６０は、その後、バックグラウンドで、キャッシュメモリ３１上のデータベースに基づいて、不揮発性メモリ４０へデータベースの内容を書き込む。なお、不揮発性メモリ４０へデータベースの内容を書き込む場合の物理アドレスは、消去済ページリスト３２の先頭から書込み先物理アドレス（物理ページ）を取得する  。
【００５８】
また、データベース処理部２０、より詳しくは保存・読み出し処理２３は、キャッシュメモリ３１、消去済ページリスト３２、論物変換テーブル３４を参照して、データベースの更新データに対応する論物変換情報をトランザクション用論物変換テーブル３５に書き込む（S1120）。
【００５９】
次にストレージ装置１に接続されたコンピュータ（図略）にCOMMIT文が入力される（S1030）。入力されたCOMMIT文は入出力装置１０を介してデータベース処理部２０、より詳しくは入出力部２１に渡される。コマンド解釈・処理部２２は、入出力部２１からCOMMIT文を受け取り、このCOMMIT文に応じて保存・読み出し処理２３にトランザクション用論物変換テーブル３５の内容を論物変換テーブル３４に反映させるよう命令を送る。この命令を受け取った保存・読み出し処理２３はトランザクション用論物変換テーブル３５の内容を論物変換テーブル３４に反映させる（S1130）。
以上で、ストレージ装置１のトランザクション・コミット処理は終了する。
【００６０】
［２．２．ストレージ装置のトランザクション・ロールバック処理］
ストレージ装置１のトランザクション・ロールバック処理を説明する。図３は、ストレージ装置１のトランザクション・ロールバック処理の例を示すフロー図である。
【００６１】
まず、ストレージ装置１に接続されたコンピュータ（図略）にＢＥＧＩＮ文が入力される（Ｓ2010）。これによりトランザクションが開始する。ＢＥＧＩＮ文の入力に対して、データベース内部の動作は特に行われない（S2110）。
【００６２】
次に、ステップS2010に続いて、データベースへの処理命令文（INSERT,  UPDATEなど）がストレージ装置１に接続されたコンピュータ（図略）に入力される（S2020）。これらの処理命令文に応じて、データベース処理部２０、より詳しくは入出力部２１が入出力装置１０を介してコンピュータ（図略）から処理命令文を受信する。コマンド解釈・処理部２２は、入出力部２１から処理命令文を受け取り、この処理命令文を解釈してデータベースの変更内容を決定する。保存・読み出し処理２３は、データベースの変更内容に基づいて、キャッシュメモリ３１上のデータベースを更新する（S2120）。なお、データ管理部６０は、その後、バックグラウンドで、キャッシュメモリ３１上のデータベースに基づいて、不揮発性メモリ４０へデータベースの内容を書き込む。
【００６３】
また、データベース処理部２０、より詳しくは保存・読み出し処理２３は、キャッシュメモリ３１、消去済ページリスト３２、論物変換テーブル３４を参照して、データベースの更新データに対応する論物変換情報をトランザクション用論物変換テーブル３５に書き込む（S2120）。
【００６４】
次にストレージ装置１に接続されたコンピュータ（図略）にROLLBACK文が入力される（S2030）。入力されたROLLBACK文は入出力装置１０を介してデータベース処理部２０、より詳しくは入出力部２１に渡される。コマンド解釈・処理部２２は、入出力部２１からROLLBACK文を受け取り、このROLLBACK文に応じて保存・読み出し処理２３にトランザクション用論物変換テーブル３５の内容を削除するよう命令を送る。の命令を受け取った保存・読み出し処理２３はトランザクション用論物変換テーブル３５の内容を削除する（S2130）。
以上で、ストレージ装置１のトランザクション・ロールバック処理は終了する。
【００６５】
［２．３．トランザクション処理］
次に、ストレージ装置１のトランザクション処理について説明する。図４は、ストレージ装置１のトランザクション処理の例を示すフローチャートである。
【００６６】
トランザクション処理において、まずストレージ装置１はBEGIN文処理を実行する（S10）。図５に、BEGIN文処理の例を示すフローチャートを掲げる。BEGIN文処理では、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、BEGIN文の受け取りをトリガとして、トランザクション状態を「開始」にする（S1１0）。以上でBEGIN文処理は終了する。
【００６７】
図４に戻り、トランザクション処理の説明を続る。ステップS10に続いて、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、コマンド（命令文）入力を待ち受け、コマンド文入力を受信した場合には、当該コマンド文に応じた内容の処理（以下、「コマンド文処理」という）を実行する（S20）。図６に、コマンド文処理の例を示したフローチャートを掲げ、このフローチャートを参照しながらコマンド文処理を説明する。
【００６８】
コマンド文処理において、ストレージ装置１、より詳しくはデータベース処理部２０は、データ登録の要求であるINSERT文、或いはデータベース更新の要求であるUPDATE文を、入出力装置１０及び入出力部２１を介して受信する（S210）。
【００６９】
ステップS210に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、受信した要求（INSERT文、或いはUPDATE文）を解釈し、書き込み先論理アドレスを決定する（S220）。
【００７０】
ステップS220に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、キャッシュメモリ３１上に展開されたデータベースに、ステップS210で受信した要求に対応する登録データ、若しくは更新データを書き込む（S230）。なお、後に、不揮発性メモリ４０の物理ページにキャッシュメモリ３１上のデータがデータ管理部６０によって書き込まれる。
【００７１】
ステップS230に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、消去済ページリスト３２の先頭から書き込み先物理ページを取得する（S240）。
ステップS2４0に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション状態であるか否かを判定する（S250）。
【００７２】
トランザクション状態であると判定した場合（S250, Yes）、ストレージ装置１、より詳しくはデータベース処理部２０は、ステップS220で決定した当該論理アドレスと、この論理アドレスに対応する物理アドレスを対応付けて、トランザクション用論物変換テーブル３５に登録する（S260）。ステップS260に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、ブロック状態テーブル３３において、ステップS240で取得した物理ページの状態を「消去済」から「有効」に変更する（S270）。ステップS270の後、ストレージ装置１、より詳しくはデータベース処理部２０はコマンド文処理を終了する。
【００７３】
一方、ステップS250においてトランザクション状態ではないと判定した場合（S250, No）、ストレージ装置１、より詳しくはデータベース処理部２０は、論物変換テーブル３４にステップS220で決定した当該論理アドレスに対応する物理アドレスを登録する（S280）。
【００７４】
ステップS280に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、論物変換テーブル３４に、以前登録されていた物理アドレスに対応するブロック状態テーブル３３のページの状態情報を「有効」から「無効」に変更する（S290）。なお、ページの状態情報を「有効」から「無効」に変更するのは、以前登録されていた物理アドレスが有効値の場合のみである。
【００７５】
ステップS290に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は前述のステップS270に進みコマンド文処理を続行する。
以上でコマンド文処理の説明を終了する。
【００７６】
図４に戻りトランザクション処理の説明を続る。ステップS20に続いて、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、コマンド入力が完了したか否かを判定する（S30）。具体的には、直近に受信したコマンド文がCOMMIT文若しくはROLLBACK文であるか否かを判定する。
【００７７】
ステップS30において、コマンド入力が完了していないと判定した場合（S30, No）、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、ステップS20に戻り、次のコマンド文入力を待ち受ける。
【００７８】
一方、ステップS30において、コマンド入力は完了したと判定した場合（S30, Yes）、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、トランザクション開始後の一連のコマンド文入力の内容に応じて、データベースに反映させるか否かを判定する（S40）。具体的には、直近に入力されたコマンド文がCOMMIT文である場合、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、データベースに反映させると判定する。一方、直近に入力されたコマンド文がROLLBACK文である場合、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、データベースに反映させないと判定する。
【００７９】
ステップS40においてデータベースに反映させると判定した場合（S40, Yes）、ストレージ装置１、より詳しくはデータベース処理部２０は、COMMIT処理を実行する。図７に、COMMIT処理の一例を示すフローチャートを掲げる。COMMIT処理において、ストレージ装置１、より詳しくはデータベース処理部２０は、論物変換テーブル３４に、トランザクション用論物変換テーブル３５の内容を反映（転記）し、その後トランザクション用論物変換テーブル３５の内容を空 （削除）にする（S310）。
【００８０】
ステップS310に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、論物変換テーブル３４に以前登録されていた物理アドレスに対応する、ブロック状態テーブル３３のページの状態を、「有効」から「無効」に変更する（S320；以前登録されていた物理アドレスが有効な値の場合）。
ステップS320に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション状態を終了する（S330）。
以上で、COMMIT処理は終了する。
【００８１】
図４に戻り、トランザクション処理の説明を続る。ステップS40においてデータベースに反映させないと判定した場合（S40, No）、ストレージ装置１、より詳しくはデータベース処理部２０及びデータ管理部６０は、ROLLBACK処理を実行する（S50）。図8に、ROLLBACK処理の一例を示すフローチャートを掲げる。ROLLBACK処理において、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５を空にする（S410）。
【００８２】
ステップS410に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に登録されていた物理アドレスに対応する、ブロック状態テーブル３３のページの状態を、「有効」から「無効」に変更する（S420）。
ステップS420に続いて、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション状態を終了する（S430）。
以上で、ROLLBACK処理は終了する。
【００８３】
図４に戻り、トランザクション処理の説明を続る。ステップS５０のCOMMIT処理、又はステップS60のROLLBACK処理を実行した後、ストレージ装置１、より詳しくはデータベース処理部２０はトランザクション処理を終了する。
以上でトランザクション処理の説明を終了する。
【００８４】
［２．４．トランザクション処理におけるトランザクション用論物変換テーブル等の書き換え］
上述したトランザクション処理（S10〜S60）におけるトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリの記憶内容の書き換えの例を述べる。
【００８５】
［２．４．１．トランザクション処理前］
図９に、トランザクション処理前のトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリ４０の記憶内容例を示す。トランザクション処理前において、図９に示す論物変換テーブル３４は、論理アドレス「０」、論理アドレス「１」、論理アドレス「２」、論理アドレス「３」のそれぞれに対応するレコードを有している。論理アドレス「０」に対応するレコードは、対応する物理アドレスとして、不揮発性メモリ４０のブロック「１」のページ「０」を記憶している。また、論理アドレス「１」に対応するレコードは、対応する物理アドレスとして、不揮発性メモリ４０のブロック「２」のページ「１」を記憶している。論理アドレス「２」に対応するレコードは、対応する物理アドレスとして、不揮発性メモリ４０のブロック「１」のページ「２」を記憶している。論理アドレス「３」に対応するレコードは、対応する物理アドレスとしてブロック「４」のページ「０」を記憶している。論物変換テーブル３４の各レコードと、不揮発性メモリ４０のブロック及びページとの対応関係を図中の矢印線で示す。
【００８６】
トランザクション処理前の時点では、トランザクション用論物変換テーブル３５は、論理アドレスと物理アドレスとの対応関係はまだ記憶されていない。
【００８７】
［２．４．２．トランザクション処理開始後（１）］
図９に示した状態の後、ストレージ装置１が以下のコマンド文（SQL文）を受け取ったものとする。
BEGIN;
UPDATE table1 SET x1=n WHERE id=m;
【００８８】
上記BEGIN文を受け取ったストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション状態を開始するとともに、これに続くUPDATE文の内容を解釈して、書込み先論理アドレスを決定し、キャッシュメモリ３１に更新データを書き込む。この例では、書込み先論理アドレスは「１」であるものとする。
【００８９】
次にストレージ装置１、より詳しくはデータベース処理部２０は、消去済ページリスト３２の先頭から書き込み先物理ページを取得する。この例では、消去済ページリスト３２の先頭には、ブロック「３」のページ「０」が記述されているものとする。
【００９０】
上記に続いてストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に前記書込み先論理アドレス「１」と、これに対応する物理アドレスである不揮発性メモリ４０のブロック「３」のページ「０」を登録する。図１０にこの時点の状態のトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリの記憶内容例を示す。
【００９１】
ストレージ装置１、より詳しくはデータ管理部６０は、上記処理のバックグラウンドで不揮発性メモリ４０のブロック「３」のページ「０」に、論理アドレス「１」に対応するキャッシュメモリ３１の更新データを書き込む処理を行う。
【００９２】
［２．４．３．トランザクション処理開始後（２）］
図１０に示した状態の後、ストレージ装置１がさらに以下のコマンド文（SQL文）を受け取ったものとする。
UPDATE table1 SET x2=n WHERE id=b;
【００９３】
上記UPDATE文を受け取ったストレージ装置１、より詳しくはデータベース処理部２０は、このUPDATE文の内容を解釈して、書込み先論理アドレスを決定し、キャッシュメモリ３１に更新データを書き込む。この例では、書込み先論理アドレスは「２」であるものとする。
【００９４】
次にストレージ装置１、より詳しくはデータベース処理部２０は、消去済ページリスト３２の先頭から書き込み先物理ページを取得する。この例では、消去済ページリスト３２の先頭には、ブロック「４」のページ「２」が記述されているものとする。
【００９５】
上記に続いてストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に前記書込み先論理アドレス「２」と、これに対応する物理アドレスである不揮発性メモリ４０のブロック「４」のページ「２」を新たに登録する。図１１にこの時点の状態のトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリの記憶内容例を示す。
【００９６】
ストレージ装置１、より詳しくはデータ管理部６０は、上記処理のバックグラウンドで不揮発性メモリ４０のブロック「４」のページ「２」に、論理アドレス「２」に対応するキャッシュメモリ３１の更新データを書き込む処理を行う。
【００９７】
［２．４．４．トランザクション処理開始後（３）］
図１１に示した状態の後、ストレージ装置１がさらにコマンド文（SQL文）であるCOMMIT文を受け取ったものとする。
【００９８】
上記COMMIT文を受け取ったストレージ装置１、より詳しくはデータベース処理部２０は、論物変換テーブル３４へトランザクション用論物変換テーブル３５の内容を書き込む。この例では、ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に書き込まれている論理アドレス「１」に対応するブロック「３」、ページ番号「０」を、論物変換テーブル３４の論理アドレス「１」に対応するブロック番号及びページ番号として書込み、トランザクション用論物変換テーブル３５に書き込まれている論理アドレス「２」に対応するブロック「４」、ページ番号「２」を論物変換テーブル３４の論理アドレス「１」に対応するブロック番号及びページ番号として書込む。
【００９９】
なお、不揮発性メモリ４０へのデータの書き込みは、バックグラウンドでデータ管理部６０が各コマンド文受領ごとに事前に実行しているため、COMMIT文を受け取った時点で新たに開始する不揮発性メモリ４０への書込みは発生しない。
ストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に書き込まれているデータをすべて削除する。
図１２にこの時点の状態のトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリの記憶内容例を示す。
【０１００】
［２．４．５．トランザクション処理開始後（４）］
図１１に示した状態の後、ストレージ装置１がさらにコマンド文（SQL文）であるROLLBACK文を受け取った場合の動作を説明する。
【０１０１】
ROLLBACK文を受け取ったストレージ装置１、より詳しくはデータベース処理部２０は、トランザクション用論物変換テーブル３５に書き込まれているデータをすべて削除する。なお、不揮発性メモリ４０への更新データ、追加データの書き込みは、バックグラウンドでデータ管理部６０が各コマンド文受領ごとに事前に実行しているが、論物変換テーブル３４が指示しているブロック番号及びページ番号は、更新データ、追加データの書き込みが行われる前の内容のブロック番号及びページ番号であるため、不揮発性メモリ４０への削除・書き換えを行う必要はない。
図１３にこの時点の状態のトランザクション用論物変換テーブル３５、論物変換テーブル３４、不揮発性メモリの記憶内容例を示す。
【０１０２】
［３．利点］
（１）  本実施の形態にかかるストレージ装置１によれば、トランザクション処理を、コミットおよびロールバック共、高速に実行することができる。
【０１０３】
コミットおよびロールバック時点で、揮発性メモリの変更のみの場合、従来手法では、数百μs以上(NANDに保存する場合)が必要であるのに対して、本実施の形態にかかるストレージ装置１では、数μs以下(DRAMの場合)で完了する。
【０１０４】
図１４（A)に従来手法によるトランザクション処理のシーケンス図を示し、図１４（B)に本実施の形態にかかるストレージ装置１によるトランザクション処理のシーケンス図を示して比較する。
【０１０５】
図１４（A)に示すように、従来手法によるトランザクション処理では、UPDATE文、INSERT文に応じてキャッシュメモリ３１を更新し、その後COMMIT文の処理開始から、不揮発性メモリ４０への更新データ、追加データ等の書き込みが行われる。
【０１０６】
一方、図１４（B)に示すように、本実施の形態にかかるストレージ装置１によるトランザクション処理では、UPDATE文、INSERT文に応じてキャッシュメモリ３１を更新するとともに、不揮発性メモリ４０への書き込みをバックグラウンドで実行する。また、COMMIT文の処理時ではキャッシュメモリ３１上の論物変換テーブル３４の書き換えのみで処理を終えることができる。すなわち、従来手法ではCOMMITまで不揮発性メモリ４０への書き込みが行えなかったが、本実施の形態にかかるストレージ装置１は 裏（バックグラウンド）で不揮発性メモリ４０の更新を行うため、トランザクション処理時間短縮が可能となる。
【０１０７】
（２）  本実施の形態にかかるストレージ装置１によれば、揮発性メモリの使用量を少なく抑えることができるため、揮発性メモリ量に制約がある場合に有効である。
【０１０８】
従来手法においては、レコードサイズ×件数分のメモリ使用量が必要であるのに対して、本実施の形態にかかるストレージ装置１では、論物変換テーブルの１エントリサイズ×件数分のメモリ使用量で足りる。
【０１０９】
例をあげると、100バイト×10,000件、論物変換テーブル３４の1エントリサイズ=4バイトとすると、必要な揮発性メモリ量は、従来手法では100×10,000 = 1,000Kバイトとなるのに対して、本実施の形態にかかるストレージ装置１では、4×10,000 = 40Kバイトとなり、大幅にメモリ使用量を低減させることが可能である。
【０１１０】
[４．まとめ、その他]
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
【符号の説明】
【０１１１】
１，１Ａ・・・ストレージ装置；  １０・・・入出力装置；  ２０・・・データベース処理部；  ３０、３０Ａ・・・揮発性メモリ；  ４０・・・不揮発性メモリ；  ５０・・・演算装置；  ６０・・・データ管理部； 
【図１】
2015103147.tif 000003
【図２】
2015103147.tif 000004
【図３】
2015103147.tif 000005
【図４】
2015103147.tif 000006
【図５】
2015103147.tif 000007
【図６】
2015103147.tif 000008
【図７】
2015103147.tif 000009
【図８】
2015103147.tif 000010
【図９】
2015103147.tif 000011
【図１０】
2015103147.tif 000012
【図１１】
2015103147.tif 000013
【図１２】
2015103147.tif 000014
【図１３】
2015103147.tif 000015
【図１４】
2015103147.tif 000016
【図１５】
2015103147.tif 000017
【図１６】
2015103147.tif 000018
【図１７】
2015103147.tif 000019
【図１８】
2015103147.tif 000020
【図１９】
2015103147.tif 000021
【図２０】
2015103147.tif 000022