(57)【要約】  データ処理システム（１）は、データを永続的に記憶する不揮発性記録媒体（２００）に書き込まれる周期的なデータの書き込み周期およびデータの有効期間別に、割り当てる不揮発性記録媒体（２００）の領域（２０２）を決定する領域割当部（１０２）と、不揮発性記録媒体（２００）に書き込まれるデータを受け付けて一時的に揮発性記録媒体（３００）に記憶する追記部（１０４）と、揮発性記録媒体（３００）に一時的に記憶されたデータを、領域割当部（１０２）により決定された不揮発性記録媒体（２００）の領域（２０２）に書き込む永続化部（１０６）と、を備える。
2012020544.tif 000002
【特許請求の範囲】
【請求項１】
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定する領域割当手段と、
前記記憶装置に書き込まれる前記データを受け付けて一時的に一時記憶装置に記憶する追記手段と、
前記一時記憶装置に一時的に記憶された前記データを、前記領域割当手段により決定された前記記憶装置の前記領域に書き込む永続化手段と、
を備えるデータ処理システム。
【請求項２】
請求項１に記載のデータ処理システムにおいて、
前記領域割当手段は、さらに、前記データのデータサイズを考慮して、前記割り当てる前記記憶装置の前記領域のサイズを決定するデータ処理システム。
【請求項３】
請求項２に記載のデータ処理システムにおいて、
前記領域割当手段が、前記有効期間または前記データサイズに比例するように、あるいは、前記書き込み周期または前記記憶装置の前記領域のブロックサイズに反比例するように、前記領域を割り当てるデータ処理システム。
【請求項４】
請求項１乃至３いずれかに記載のデータ処理システムにおいて、
前記追記手段が前記領域毎に書き込む前記データを受け付けた時刻を記録する記録手段と、
記録された前記時刻に基づいて、前記領域毎に前記データの書き込み周期を推定する推定手段と、をさらに備え、
前記領域割当手段は、推定した前記書き込み周期を用いて新たな領域を割り当てるデータ処理システム。
【請求項５】
請求項４に記載のデータ処理システムにおいて、
前記記録手段は、さらに、前記追記手段が前記領域毎に受け付けた書き込む前記データの書き込み量を記録し、
前記推定手段は、記録された前記書き込み量に基づいて、前記領域毎に前記データのデータサイズを推定し、
前記領域割当手段は、推定した前記データサイズを用いて新たな領域を割り当てるデータ処理システム。
【請求項６】
請求項５に記載のデータ処理システムにおいて、
前記推定された前記データの前記書き込み周期、前記データサイズ、および前記有効期間に基づいて、前記記憶装置に書き込まれる前記データの容量を推定し、前記記憶装置の記憶容量と比較する比較手段をさらに備えるデータ処理システム。
【請求項７】
請求項１乃至６いずれかに記載のデータ処理システムにおいて、
前記永続化手段が、前記記憶装置の前記領域の古いブロックから消去し、新たな書き込みを記録するためのブロックとして再利用するデータ処理システム。
【請求項８】
請求項１乃至７いずれかに記載のデータ処理システムにおいて、
利用者指定の演算を、前記記憶装置に書き込まれた前記データに施す分析手段をさらに備えるデータ処理システム。
【請求項９】
データ処理装置が、
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定し、
前記記憶装置に書き込まれるデータを受け付けて一時的に一時記憶装置に記憶し、
前記一時記憶装置に一時的に記憶された前記データを、決定された前記記憶装置の前記領域に書き込むデータ処理装置のデータ処理方法。
【請求項１０】
データ処理装置を実現するためのコンピュータが実行するプログラムであって、
前記コンピュータに、
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定する手順、
前記記憶装置に書き込まれるデータを受け付けて一時的に一時記憶装置に記憶する手順、
前記一時記憶装置に一時的に記憶された前記データを、前記領域を割り当てる手順により決定された前記記憶装置の前記領域に書き込む手順を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理システム、データ処理方法、およびプログラムに関し、特に、周期的なデータを処理するデータ処理システム、データ処理方法およびプログラムに関する。
【背景技術】
【０００２】
フラッシュメモリは不揮発性の記憶媒体であり、ＮＡＮＤ型（Not AND-type）とＮＯＲ型（Not OR-type）の２種類がある。ＮＡＮＤ型フラッシュメモリには、ページとブロックという記憶単位がある。ページは読み出しと書き込みの単位であり、近年は２ＫＢ程度のデータであることが多い。ブロックは消去の単位であり、近年は１２８ＫＢ（６４ページ）程度であることが多い。また、ブロックをまとめたプレーンという単位もあり、異なるプレーンに属するページは、並行して読み書きできる。【０００３】
ＮＡＮＤ型フラッシュメモリには、ＳＬＣ（Single-Level Cell）とＭＬＣ（Multi-Level Cell）の二種類がある。ＳＬＣ  ＮＡＮＤフラッシュの長所は高速な書き込みと高い信頼性であり、ＭＬＣ  ＮＡＮＤフラッシュの長所は安価に大きな記憶容量を実現できることである。【０００４】
記憶装置として広く用いられているハードディスクと、フラッシュメモリは異なる特性を持つ。非特許文献１によれば、ハードディスクはビット単価が低い。ＳＡＴＡ（Serial Advanced Technology Attachment）のディスクは１ＧＢ当たり単価が０．３０から０．５０ドルであるのに対し、ＭＬＣ  ＮＡＮＤフラッシュの単価は１ＧＢ当たり８から１２ドルである。
フラッシュメモリは消費電力とランダム読み出しのレイテンシが低い。ＭＬＣ  ＮＡＮＤフラッシュのアイドル時のＧＢ当たりの消費電力は０．００３Ｗ、レイテンシは２５マイクロ秒である。一方、ＳＡＴＡディスクのアイドル時のＧＢ当たりの消費電力は０．０７Ｗ、ランダム読み出しのレイテンシは５，０００マイクロ秒である。【０００５】
低い消費電力と高いランダムアクセス性能を達成するために、フラッシュメモリを使用することができるが、フラッシュメモリへの書き込みは必ずしも高速ではない。フラッシュメモリへの書き込みでは、ビットを１から０に変更できるが、０から１へは変更できない。そのため、ページを上書きする際には、消去してから、つまり全てのビットを１にしてから、書き込む必要がある。よって、１ページへの書き込みであっても、１ブロック（たとえば、６４ページ）分のデータを退避し、ブロックのデータを消去し、１ページへの書き込みを反映し、１ブロック分のデータを書き込む処理が必要となる。非特許文献２によれば、ＭＬＣ  ＮＡＮＤフラッシュへの書き込みと消去のレイテンシは、それぞれ８００マイクロ秒と２，０００マイクロ秒である。そして、ページを書き換える場合には、ブロック単位の消去が事前に必要となる。【０００６】
さらに、フラッシュメモリのブロックの消去の回数には制限がある。ＭＬＣ  ＮＡＮＤフラッシュでは一万回程度、ＳＬＣ  ＮＡＮＤフラッシュでは十万回程度の消去で、ブロックが正しい値を保持できなくなる。そのため、同一ブロックに消去が集中しないように、ウェアレベリングを行う。ウェアレベリングは、たとえば、Flash Translation Layer（ＦＴＬ）で行われる。【０００７】
非特許文献２で指摘されている通り、ＦＴＬでは、ブロックの論理アドレスを物理アドレスに変換する機能を提供することで、要求されたデータを都合のよいブロックに書き込むことができる。これによって、たとえば、消去回数が小さいブロックへ優先的に書き込むことなどによって、ウェアレベリングが実現できる。【０００８】
非特許文献３は、フラッシュメモリ関連のアルゴリズムとデータ構造のサーベイ論文である。ここで取り上げられた特許文献１（米国特許第６，５３５，９４９号明細書）では、循環ログにデータを追記する。つまり、ページは書き換えず、古いデータはそのままにして、新たなデータを空いているページに書き込むのである。最新ページの物理アドレスは変化するが、論理アドレスを一定に保つことで、書き込みが読み出しに与える影響を隠すことができる。ここで問題となるのが、同一ブロック中に有効な（最新のデータを持つ）ページと無効な（参照されない古いデータを持つ）ページが混在することである。記憶領域を有効に活用するには、無効なページを削除し、有効なページを同一ブロックにまとめる必要がある。これはガーベッジコレクション（Garbage Collection：ＧＣ）と呼ばれる。特許文献１では、ＧＣが効率的にできるように、書き換えが多いホットデータと少ないコールドデータに対して、それぞれ循環ログを用意する。ただし、この文献ではホット／コールドの判別方法についての言及はない。【０００９】
非特許文献４では、Journaling Flash Filing System 2（ＪＦＦＳ２）が示されている。ＪＦＦＳ２では、有効な、または空いているページのみを含むブロックをクリーンリストに、無効なページを含むブロックをダーティリストにつなぐ。そして、ＧＣの対象となる（消去される）ブロックを、１００回のうち９９回はダーティリストから選び、１回はクリーンリストから選ぶ。【００１０】
非特許文献２では、ＦＴＬでは並列に書き込みを処理できないことを問題としている。その解決策として、複数の（フラッシュメモリの）チップに、それぞれ順序番号を持たせる。書き込みは、最も小さい番号を持つチップに発行される。これによって、書き込み処理を並列に、つまり高速に、処理することができる。【００１１】
非特許文献５では、キーから値を求める機能を提供するKey-Value StoreであるＦＡＷＮ（Fast Array of Wimpy Nodes）−ＤＳが示されている。ＦＡＷＮ−ＤＳでは、キーから１６０ビットのハッシュインデックス用のデータを生成する。このデータからキーと値が記録されている場所へのポインタを得ることができる。また、ハッシュインデックスはメモリ上に配置し、実際のペアへの書き込みはフラッシュメモリに追記される。そして、書き込み、読み出し、削除の基本機能を持つだけでなく、ＧＣと、（複数台での分散処理において）処理を受け持つデータの範囲の分割と結合のメンテナンス機能を持つ。【００１２】
非特許文献６では、複数のフラッシュメモリへの書き込みは、従来はラウンドロビン形式で分散されていたことを問題にしている。このラウンドロビン形式ではランダムアクセスは高速化できる。しかし、ログの場合、通常時には小さなデータの順次書き込みが発生し、エラーからの復旧時には順次読み出しが発生するため問題となる。そして、ラウンドロビン形式では、書き込むデータが分散の単位よりも大きいときに、このデータが異なるデバイスに分散するリクエストスプリッティングが起きる。逆に、データが分散の単位に比べて非常に小さければ、多くの書き込みが一つのデバイスに連続して行われるリクエストスキッピングが起きる。これらは、順次アクセスの効率を下げる。そこで、分散の単位を超える量のデータを単一のデバイスにフラッシュすることを許すとともに、単位に満たないデータを異なるデバイスに分散させることも許す。【００１３】
データ記憶容量の解放方法の一例が特許文献２（特表２００９−５０３７３５号公報）に記載されている。特許文献２に記載のデータ記憶容量の解放方法では、有効なデータの量が少ないブロックから再利用する。ブロックのデータを消去する前に、有効なデータを他のブロックにコピーする必要があるが、これにはオーバーヘッドが伴う。データの量が少なければ、このオーバーヘッドは小さくなる。【００１４】
記憶媒体の二重ジャーナリングの一例が特許文献３（特表２００６−５１２６４３号公報）に記載されている。特許文献３に記載の二重ジャーナリングでは、保存媒体としてフラッシュメモリ等を利用する時、アドレス空間の最初と最後の二箇所からデータの記録を開始する。つまり、二種類のうちの一種類のデータは、アドレス空間の始めから終わりに向けてジャーナリング方式で記録される。もう一種類のデータは、アドレス空間の終わりから始めに向けて記録される。【００１５】
ファイル管理方法の一例が特許文献４（特開２００７−１３３４８７号公報）に記載されている。特許文献４に記載のファイル管理方法の目的は、ブロックの使用可能期間を長くすることと、ファイルシステムの使用開始にかかる時間を短縮することである。そのため、シーケンス番号記憶領域と複数のログ領域に記憶領域を分割する。ログ領域にログが書き込まれた順序を示すシーケンス番号は、シーケンス番号記憶領域に書き込まれる。そして、シーケンス番号記憶領域からファイルシステムを構築できるため、使用開始にかかる時間を短縮することができる。また、シーケンス番号記憶領域にはログの状態も記録するため、効率的にデータを消去できるので、使用可能期間も延びる。【００１６】
不揮発性メモリのアドレス管理方法の一例が特許文献５（国際公開第２００７／０１３３７２号）に記載されている。特許文献５に記載の不揮発性メモリのアドレス管理方法は、ウェアレベリングを目的としている。この方法では、物理アドレス空間を大きさの異なる複数の物理領域に分割する。そして、書き換え頻度が高いと予想されるデータ、具体例としてはファイルアロケーションテーブルのデータ、を大きな領域に記録する。これによって、ブロックの書き換え頻度が均一化される効果がある。
【先行技術文献】
【特許文献】
【００１７】
【特許文献１】米国特許第６，５３５，９４９号明細書
【特許文献２】特表２００９−５０３７３５号公報
【特許文献３】特表２００６−５１２６４３号公報
【特許文献４】特開２００７−１３３４８７号公報
【特許文献５】国際公開第２００７／０１３３７２号
【非特許文献】
【００１８】
【非特許文献１】Mohan, C. (IBM Almaden),“Implications of Storage Class Memories (SCM) on Software Architectures”, [online], The 13th International Workshop on High Performance Transaction Systems (HPTS), 2009, インターネット〈http://www.hpts.ws/session2/mohan.pdf〉
【非特許文献２】Caulfield, A.M., Grupp, L.M., and Swanson, S. “Gordon: Using Flash Memory to Build Fast, Power-efficient Clusters for Data-intensive Applications”, in Proceeding of the 14th international conference on Architectural support for programming languages and operating systems, 2009, pp. 217-228.
【非特許文献３】Gal, E. and Toledo, S. “Algorithms and Data Structures for Flash Memories”，ACM Computing Surveys, Vol. 37, No. 2, June 2005, pp. 138-163.
【非特許文献４】Woodhouse, D. “JFFS: The journaling flash file system”, [online], Ottawa Linux Symposium (July), 2001, インターネット〈http://sources.redhat.com/jffs2/jffs2.pdf〉
【非特許文献５】Andersen, D.G., Franklin, J., Kaminsky, M., Phanishayee, A., Tan, L., and Vasudevan, V. “FAWN: A Fast Array of Wimpy Nodes”, in Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles (SOSP), 2009, pp. 1-14.
【非特許文献６】Chen, S. “FlashLogging: Exploiting Flash Devices for Synchronous Logging Performance”, in Proceedings of the 35th SIGMOD international conference on Management of data, 2009, pp. 73-86.
【発明の概要】
【発明が解決しようとする課題】
【００１９】
上述した各文献に記載されたメモリの管理方法においては、ガーベッジコレクションのオーバーヘッドが発生するという問題点があった。その理由は、フラッシュメモリなどのデバイスのデータの書き込み処理において、データの上書きが非効率になりやすいため、多くの場合、効率を挙げるためにデータを追記していくためである。このように、データを追記する場合、一般には古いデータと最新のデータが記録単位中に混在する状況が発生する。このとき、古いデータは無駄に記憶領域を占めてしまう。そこで、最新データのみを含む記録単位と、古いデータのみを含む記録単位になるようにデータを再配置し、後者に新たに書き込まれたデータを記録する。このガーベッジコレクション（再配置）は、オーバーヘッドを発生させるのである。【００２０】
本発明の目的は、ガーベッジコレクションのオーバーヘッドの発生を抑制するデータ処理システム、データ処理方法、およびプログラムを提供することにある。
【課題を解決するための手段】
【００２１】
本発明のデータ処理システムは、
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定する領域割当手段と、
前記記憶装置に書き込まれる前記データを受け付けて一時的に一時記憶装置に記憶する追記手段と、
前記一時記憶装置に一時的に記憶された前記データを、前記領域割当手段により決定された前記記憶装置の前記領域に書き込む永続化手段と、
を備える。【００２２】
本発明のデータ処理装置のデータ処理方法は、
データ処理装置が、
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定し、
前記記憶装置に書き込まれるデータを受け付けて一時的に一時記憶装置に記憶し、
前記一時記憶装置に一時的に記憶された前記データを、決定された前記記憶装置の前記領域に書き込むデータ処理方法である。【００２３】
本発明のプログラムは、
データ処理装置を実現するためのコンピュータが実行するプログラムであって、
前記コンピュータに、
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定する手順、
前記記憶装置に書き込まれるデータを受け付けて一時的に一時記憶装置に記憶する手順、
前記一時記憶装置に一時的に記憶された前記データを、前記領域を割り当てる手順により決定された前記記憶装置の前記領域に書き込む手順を実行させるためのコンピュータプログラムである。【００２４】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。【００２５】
また、本発明の各種の構成要素は、必ずしも個々に独立した存在である必要はなく、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部とが重複していること、等でもよい。【００２６】
また、本発明のデータ処理方法およびコンピュータプログラムには複数の手順を順番に記載してあるが、その記載の順番は複数の手順を実行する順番を限定するものではない。このため、本発明のデータ処理方法およびコンピュータプログラムを実施するときには、その複数の手順の順番は内容的に支障しない範囲で変更することができる。【００２７】
さらに、本発明のデータ処理方法およびコンピュータプログラムの複数の手順は個々に相違するタイミングで実行されることに限定されない。このため、ある手順の実行中に他の手順が発生すること、ある手順の実行タイミングと他の手順の実行タイミングとの一部ないし全部が重複していること、等でもよい。
【発明の効果】
【００２８】
本発明によれば、ガーベッジコレクションのオーバーヘッドの発生を抑制するデータ処理システム、データ処理方法、およびプログラムが提供される。
【図面の簡単な説明】
【００２９】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００３０】
【図１】本発明の実施の形態に係るデータ処理システムの構成を示す機能ブロック図である。
【図２】本発明の実施の形態に係るデータ処理システムの動作を示すフローチャートである。
【図３】図２のデータ処理システムの永続化処理の動作の一例を示すフローチャートである。
【図４】本実施形態のデータ処理システムにおける揮発性記録媒体のバッファの使用例を説明するための図である。
【図５】本実施形態のデータ処理システムにおける不揮発性記録媒体の領域の使用例を説明するための図である。
【図６】本発明の実施の形態に係るデータ処理システムの構成を示す機能ブロック図である。
【図７】本発明の実施の形態に係るデータ処理システムの動作を示すフローチャートである。
【図８】本発明の実施の形態に係るデータ処理システムの構成を示す機能ブロック図である。
【図９】本発明の実施の形態に係るデータ処理システムの動作を示すフローチャートである。
【図１０】本発明の実施の形態に係るデータ処理システムの構成を示す機能ブロック図である。
【図１１】本発明の実施の形態に係るデータ処理システムの構成を示す機能ブロック図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００３２】
（第１の実施の形態）
図１は、本発明の実施の形態に係るデータ処理システム１の構成を示す機能ブロック図である。
本実施形態のデータ処理システムは、データを永続的に記憶する記憶装置（不揮発性記録媒体２００）に書き込まれる周期的なデータの書き込み周期およびデータの有効期間別に、割り当てる記憶装置（不揮発性記録媒体２００）の領域２０２を決定する領域割当部１０２と、記憶装置（不揮発性記録媒体２００）に書き込まれるデータを受け付けて一時的に一時記憶装置（揮発性記録媒体３００）に記憶する追記部１０４と、一時記憶装置（揮発性記録媒体３００）に一時的に記憶されたデータを、領域割当部１０２により決定された記憶装置（不揮発性記録媒体２００）の領域２０２に書き込む永続化部１０６と、を備える。
【００３３】
詳細には、データ処理システム１は、データ処理装置１００と、不揮発性記録媒体２００と、揮発性記録媒体３００と、を備える。
データ処理装置１００は、領域割当部１０２と、追記部１０４と、永続化部１０６と、制御部１１０と、を備える。
【００３４】
データ処理装置１００は、たとえば、図示しないＣＰＵ（Central Processing Unit）やメモリ、ハードディスク、および通信装置を備え、キーボードやマウス等の入力装置やディスプレイやプリンタ等の出力装置と接続されるサーバコンピュータやパーソナルコンピュータ、またはそれらに相当する装置を用いて実現することができる。そして、ＣＰＵが、ハードディスクに記憶されるプログラムをメモリに読み出して実行することにより、上記各ユニットの各機能を実現することができる。
【００３５】
なお、データ処理装置１００の各構成要素は、上述したように、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされた本図の構成要素を実現するプログラム、そのプログラムを格納するハードディスクなどの記憶ユニット、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置にはいろいろな変形例があることは、当業者には理解されるところである。以下説明する各図は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。
また、以下の各図において、本発明の本質に関わらない部分の構成については省略してあり、図示されていない。
【００３６】
具体的には、データ処理装置１００において、領域割当部１０２は、特定の種類の書き込みデータを記録するために不揮発性記録媒体２００の一部の領域２０２を割り当てる。本実施形態において、領域割当部１０２は、書き込むデータの書き込み周期および有効期間に基づいて、領域２０２を決定する。
【００３７】
本発明の書き込みデータは、周期的なデータであり、たとえば、位置情報や、センサーデータ、ログデータなどの、周期的に追加されていくデータである。あるいは、ある時間スケールでは周期的に書き込まれるとみなせるような、頻繁に追加されるデータ、たとえば、課金や、通話、メールなどに関するデータであってもよい。
【００３８】
追記部１０４は、データの書き込みを受け付け、揮発性記録媒体３００のバッファ３０２に一時的に記憶する。
永続化部１０６は、揮発性記録媒体３００に一時的に記憶されたデータを、領域割当部１０２が決定した不揮発性記録媒体２００の領域２０２に書き込み、永続化する。ここで、永続化とは、不揮発性記録媒体２００に書き込まれたデータを、一定量または一定期間、消去されるまで継続して保持することを言う。
制御部１１０は、データ処理装置１００の各要素とともに装置全体を制御する。
【００３９】
不揮発性記録媒体２００は、電源を切ってもデータが保持され、たとえば、ＮＡＮＤ型のフラッシュメモリである。上述したように、本実施形態では、不揮発性記録媒体２００は、領域割当部１０２が割り当てた複数の領域２０２（Ｒ１、Ｒ２、・・・、Ｒｎ、ここで、ｎは自然数）を有する。
揮発性記録媒体３００は、電源を切るとデータが消去され、たとえば、ＤＲＡＭ（Dynamic Random Access Memory）である。
【００４０】
本実施形態のコンピュータプログラムは、データ処理装置１００を実現させるためのコンピュータに、データを永続的に記憶する記憶装置（不揮発性記録媒体２００）に書き込まれる周期的なデータの書き込み周期およびデータの有効期間別に、割り当てる記憶装置（不揮発性記録媒体２００）の領域２０２を決定する手順、記憶装置（不揮発性記録媒体２００）に書き込まれるデータを受け付けて一時的に一時記憶装置（揮発性記録媒体３００のバッファ３０２）に記憶する手順、一時記憶装置（揮発性記録媒体３００のバッファ３０２）に一時的に記憶されたデータを、領域を割り当てる手順により決定された記憶装置（不揮発性記録媒体２００）の領域２０２に書き込む手順、を実行させるように記述されている。
【００４１】
本実施形態のコンピュータプログラムは、コンピュータで読み取り可能な記録媒体に記録されてもよい。記録媒体は特に限定されず、様々な形態のものが考えられる。また、プログラムは、記録媒体からコンピュータのメモリにロードされてもよいし、ネットワークを通じてコンピュータにダウンロードされ、メモリにロードされてもよい。
【００４２】
より詳細には、領域割当部１０２は、領域２０２を割り当てる要求を受けると、ｋ個のブロックを割り当てる。要求には、データの書き込み周期およびデータの有効期間の情報が含まれる。これらの情報は直接与えられなくても、これらを算出できる情報が間接的に与えられればよい。この要求は、たとえば、データ処理装置１００の利用者から、データ処理装置１００を構成するコンピュータのユーザインターフェイス（操作部および表示部など）を用いた操作指示として受け付けることができる。あるいは、予め利用者により指定された値をメモリに記憶しておき、読み出してもよい。そして、この要求は、たとえば、データ処理装置１００のＣＰＵが実行するデータ処理を行うプログラムなどにより、利用者の指示を割り当てリクエストとして受け付け、領域割当部１０２に通知することができる。
【００４３】
ブロック数ｋの値は、有効期間および周期に基づき決定される。たとえば、領域割当部１０２は、以下の式（１）に基づきブロック数ｋを決定する。ただし、ａはある正の整数である。典型的なａの値は、同時に不揮発性記録媒体２００に書き込むブロックの数である。不揮発性記録媒体２００がフラッシュメモリの場合、異なるプレーンへの書き込み要求は、並列に処理できる。たとえば、２つのプレーンがある場合、それぞれのプレーンから１つずつ選んだブロックに書き込むと効率的であるが、最も古いデータが２つのブロックにまたがって記録されることとなる。したがって、２つのプレーンがある場合は、ａの値を２以上とするのが適切である。また、ｅは、比例定数である。
【数１】
2012020544.tif 000003
【００４４】
追記部１０４は、領域割当部１０２により指定された領域２０２へのデータの書き込み要求を受け付ける。書き込み要求には、領域２０２とデータが指定されている。要求を受け付けた追記部１０４は、データを揮発性記録媒体３００のバッファ３０２に書き込む。また、データをどの領域２０２に書き込むべきものなのかも、あわせて揮発性記録媒体３００に書き込む。
【００４５】
永続化部１０６は、追記部１０４が揮発性記録媒体３００に書き込んだデータを、不揮発性記録媒体２００に書き込む。たとえば、ある領域２０２に書き込むことが指定されたデータが定められた量以上に揮発性記録媒体３００にたまったときに、永続化部１０６は定められた量のデータを不揮発性記録媒体２００に書き込むことができる。定められた量は、たとえば、不揮発性記録媒体２００のページサイズである。永続化部１０６は、空いているページまたはブロックがないときに、新たな空きページまたはブロックを作成する機能も有する。
【００４６】
永続化部１０６は、不揮発性記録媒体２００の領域２０２の古いブロックからデータを消去し、空になったブロックを新たな書き込みを記録するためのブロックとして再利用する。
【００４７】
上述のような構成において、本実施の形態のデータ処理システム１において、データ処理装置１００によるデータ処理方法を以下に説明する。図２および図３は、データ処理システム１の動作の一例を示すフローチャートである。以下、図１も用いて説明する。
【００４８】
本実施形態のデータ処理方法は、図２に示すように、データ処理装置１００が、データを永続的に記憶する記憶装置（不揮発性記録媒体２００）に書き込まれる周期的なデータの書き込み周期およびデータの有効期間別に、割り当てる記憶装置（不揮発性記録媒体２００）の領域２０２を決定し（ステップＳ１１１）、記憶装置（不揮発性記録媒体２００）に書き込まれるデータを受け付けて一時的に一時記憶装置（揮発性記録媒体３００のバッファ３０２）に記憶し（ステップＳ１１５）、一時記憶装置（揮発性記録媒体３００のバッファ３０２）に一時的に記憶されたデータを、領域割当部１０２により決定された記憶装置（不揮発性記録媒体２００）の領域２０２に書き込む（ステップＳ１０５）。
【００４９】
具体的には、まず、データ処理システム１において、イベントが発生すると（ステップＳ１０１のＹＥＳ）、本処理が開始する。イベントは、上述したデータ処理を行うプログラムなどにより不揮発性記録媒体２００または揮発性記録媒体３００に対するデータ処理、たとえば、データ書き込み、読み込み、消去などの処理が発生したときに発生する。本実施形態では、イベントは、リクエスト受付と永続化トリガを含む。リクエストは、割当リクエストおよび書込リクエストを含む。永続化トリガは、永続化処理を開始するトリガであり、揮発性記録媒体３００への一定量の書き込みの通知や、時間の経過の通知などを含む。
【００５０】
次に、制御部１１０が、イベントが永続化トリガか否かを判定する（ステップＳ１０３）。イベントが永続化トリガの場合（ステップＳ１０３のＹＥＳ）、永続化部１０６が後述する永続化処理を実行する（ステップＳ１０５）。一方、イベントが永続化トリガでない場合（ステップＳ１０３のＮＯ）、制御部１１０は、イベントはリクエスト受付であると判定し、リクエストを受け付ける（ステップＳ１０７）。
【００５１】
そして、制御部１１０が、受け付けたリクエストが、割当リクエストおよび書込リクエストのいずれなのかを判定する（ステップＳ１０９およびステップＳ１１３）。割当リクエストの場合（ステップＳ１０９のＹＥＳ）、領域割当部１０２が、データの書き込み周期と有効期間に基づき、領域２０２を割り当てる（ステップＳ１１１）。一方、書込リクエストの場合（ステップＳ１０９のＮＯかつステップＳ１１３のＹＥＳ）、追記部１０４が、データを一時的に揮発性記録媒体３００に記憶する（ステップＳ１１５）。さらに、割当リクエストおよび書込リクエストのいずれでもない場合（ステップＳ１０９のＮＯかつステップＳ１１３のＮＯ）、制御部１１０は、本処理を終了し、次のイベント待ち状態となる。また、上述したステップＳ１０５、ステップＳ１１１、ステップＳ１１５の後も、制御部１１０は、本処理を終了し、次のイベント待ち状態となる。
【００５２】
たとえば、次の周期的なデータの書き込みリクエストを受け付ければ、ステップＳ１０１のＹＥＳ、ステップＳ１０３のＮＯ、ステップＳ１０７を介して、ステップＳ１０９のＮＯ、そして、ステップＳ１１３のＹＥＳとなり、ステップＳ１１５に進む。そして、ステップＳ１１５で、追記部１０４がデータを揮発性記録媒体３００に一時的に記憶することとなる。
【００５３】
次に、図３を参照して、上述した図２のステップＳ１０５における永続化部１０６による永続化処理について、さらに詳細に説明する。
まず、ステップＳ２０１において、永続化部１０６が、対象とする領域２０２に対して書き込むべき、一定量のデータが揮発性記録媒体３００にあるかどうかを判定する。一定量のデータがなければ（ステップＳ２０１のＮＯ）、図２に戻り、制御部１１０が、次のイベント待ちとなる。一定量のデータがあれば（ステップＳ２０１のＹＥＳ）、ステップＳ２０３に進む。
【００５４】
ステップＳ２０３では、永続化部１０６が、不揮発性記録媒体２００の領域２０２の先頭ブロックに空きページがあるかどうかを判定する。領域２０２の先頭ブロックとは、現在書き込みの対象となっているブロックである。したがって、先頭ブロックは一つである必要はない。たとえば、異なる周期的なデータを同時に書き込む場合は、それぞれの領域２０２が書き込み対象となるためである。あるいは、異なるプレーンを書き込み対象とした場合、並行してデータを書き込むことができるためである。
【００５５】
図５に示すように、たとえば、領域２０２は、複数のブロック２１０、２１２、２１４、．．．を有する。ここでは、ブロック２１０は、既に全てのページにデータが書き込まれている。そして、ブロック２１２が先頭ブロックであり、先頭ブロック２１２は、複数のページ２２０、２２２、２２４、．．．を含む。ここでは、ページ２２０、２２２には既にデータが永続化されて書き込まれている。そして、ページ２２４以降が空きページとなっているものとする。
【００５６】
図３に戻り、永続化部１０６は、空きページがあれば（ステップＳ２０３のＹＥＳ）、ステップＳ２１１に進み、そのページにデータを書き込む。空きページがなければ（ステップＳ２０３のＮＯ）、ステップＳ２０５に進む。
【００５７】
ステップＳ２０５では、永続化部１０６が、不揮発性記録媒体２００の領域２０２に空きブロックがあるかどうかを判定する。空きブロックがあれば（ステップＳ２０５のＹＥＳ）、ステップＳ２０９に進む。一方、空きブロックがなければ（ステップＳ２０５のＮＯ）、永続化部１０６が、単に最も古いｑ個のブロックのデータを消去し、新たな空きブロックとする（ステップＳ２０７）。ここで、消去するブロックの個数ｑは、領域にある先頭ブロックの数に比例する数であるのが好ましい。
そして、ステップＳ２０９において、永続化部１０６が、空きブロックの中からｑ個を先頭ブロックとして選択する。そして、ステップＳ２１１において、永続化部１０６が、ステップＳ２０９で選択された先頭ブロックの空きページ、またはステップＳ２０３の該当領域２０２の先頭ブロックの空きページに、データを書き込む。
【００５８】
次に、図２のステップＳ１１５における追記部１０４の処理の詳細について、図４を用いて説明する。
追記部１０４は、領域２０２ごとに、揮発性記録媒体３００の一部をバッファ３０２として確保し、そこにデータを書き込む。図４（ａ）では、バッファ３０２の中で既にデータが書き込まれた部分を領域３１０で示してある。
【００５９】
このバッファ３０２は、循環ログのように上書きされていくことになる。追記部１０４は、バッファ３０２の先頭ＴＡ（次にデータを書き込むアドレス、図４では、ＴＡ１等）と末尾ＬＡ（まだ永続化されていない最も古いデータのアドレス、図４では、ＬＡ１）も管理する。図４（ａ）に示すように、データがバッファ３０２に周期的に書き込まれると、１番目のデータが書き込まれた領域３１２分だけ、バッファ３０２の先頭がＴＡ１からＴＡ２に移動する。そして、さらに、２番目のデータが書き込まれた領域３１４分だけ、バッファ３０２の先頭がＴＡ２からＴＡ３へと移動する。
【００６０】
そして、揮発性記録媒体３００に、領域２０２に対する書き込みデータが一定量溜まったとき、追記部１０４が永続化部１０６に通知する。通知を受け付けた永続化部１０６は、まだ永続化されていない最も古いデータから一定量のデータを不揮発性記録媒体２００にコピーする。本実施形態では、フラッシュメモリのページサイズずつコピーする。
【００６１】
図４（ｂ）に示すように、永続化部１０６は、バッファ３０２の末尾ＬＡ１から、すなわち、領域３２０で示される永続化されていない最も古いデータから一定量のデータを不揮発性記録媒体２００にコピーする。これにより、図４（ｂ）の領域３２０に一時的に記憶されていたデータは、永続化されたこととなる。そして、永続化部１０６は、コピーの終了を追記部１０４に通知する。
通知を受けた追記部１０４は、図４（ｃ）に示すように、バッファ３０２の末尾がＬＡ１からＬＡ２に移動する。
このように、バッファ３０２の先頭ＴＡおよび末尾ＬＡは、データの書き込みおよび永続化によりそれぞれ変化することとなる。
【００６２】
以上、説明したように、本実施の形態のデータ処理システム１によれば、単に最も古いブロックから消去するだけで不要なデータのみを消去できる。その理由は、データ書き込みの周期および有効期間別に設けた不揮発性記録媒体２００の領域２０２に対してデータを追記するように構成されているためである。このように、書き込み周期と有効期間が異なるデータを異なる領域に保持するため、最新のデータと古いデータが同じ記録単位上に混在するのを防ぐことができる。これにより、ガーベッジコレクションに伴う最新データの再配置のオーバーヘッドがなくなる。したがって、ハードディスクのような不揮発性記録媒体を前提とした記録方式よりも、効率よくフラッシュメモリのような低消費電力の不揮発性記録媒体を利用できる。すなわち、フラッシュメモリのような低消費電力の不揮発性記録媒体を効率的に用いることにより、周期的なデータを低い消費電力で記録できるという効果を奏する。
【００６３】
また、本実施形態のデータ処理システム１において、図６に示すように、データ処理装置１００は、さらに、分析部１０８を備えてもよい。
【００６４】
分析部１０８は、利用者指定の演算を、不揮発性記録媒体２００に書き込まれたデータに施すものである。本実施形態では、分析部１０８は、一つ以上の領域に記録されたデータに対して、指定された演算を実行する。簡単な演算の一例として、「領域Ｄに記録された２次元のデータ（ｘ，ｙ）に関して、（ｘ０，ｙ０）からの距離がｄ以下のデータの数」、を挙げておく。
【００６５】
このように構成された本実施形態のデータ処理装置１００の動作について、図７を用いて以下に説明する。図７は、本実施形態のデータ処理装置１００の動作の一例を示すフローチャートである。以下、図６も用いて説明する。
なお、本実施形態では、リクエストは、割当リクエストと書込リクエストに加え、さらに、分析リクエストを含むものとする。
【００６６】
本実施形態のデータ処理システム１において、データ処理装置１００のデータ処理方法は、図２のフローチャートと同様なステップを有するとともに、さらに、ステップＳ１２１を有する点で相違する。
【００６７】
すなわち、図７に示すように、ステップＳ１１３で、制御部１１０が、受け付けたリクエストが書き込みリクエストでないと判定した場合（ステップＳ１１３のＮＯ）、ステップＳ１２１に進み、分析部１０８が指定された演算処理を行う。分析部１０８における処理が終了すると、本処理を処理し、制御部１１０は、次のイベント待ち状態となる。
【００６８】
この構成によれば、上述したように、ガーベッジコレクションに伴う最新データの再配置のオーバーヘッドがなくなるとともに、さらに、ハードディスクのような不揮発性記録媒体を前提とした記録や分析方式よりも、効率よくフラッシュメモリのような低消費電力の不揮発性記録媒体を利用できる。すなわち、フラッシュメモリのような低消費電力の不揮発性記録媒体を効率的に用いることにより、周期的なデータを低い消費電力で記録できるという効果を奏する。
【００６９】
（第２の実施の形態）
図８を用いて、本発明の実施の形態に係るデータ処理システム２について、以下に説明する。
本実施形態のデータ処理システム２のデータ処理装置１２０は、上記実施形態とは、データの書き込み周期およびデータの有効期間に加え、さらに、データのデータサイズを考慮して、割り当てる不揮発性記録媒体２００の領域２０２のサイズを決定する点で相違する。
本実施形態のデータ処理システム２のデータ処理装置１２０は、図６の上記実施形態のデータ処理システム１のデータ処理装置１００の分析部１０８も含むことができる。
【００７０】
具体的には、本実施形態のデータ処理システム２は、図１のデータ処理装置１００に替えて、データ処理装置１２０を備え、さらに、図１と同様な不揮発性記録媒体２００と、揮発性記録媒体３００と、を備える。データ処理装置１２０は、図１の領域割当部１０２に替えて、領域割当部１２２を備え、さらに、図１と同様な追記部１０４と、永続化部１０６と、制御部１１０と、を備える。
【００７１】
領域割当部１２２は、領域２０２を割り当てる要求を受けると、ｋ個のブロックを割り当てる。要求には、データサイズ、（データの）有効期間、（書き込みの）周期の三つの情報が含まれる。たとえば、データサイズはデータ量のことを意味し、その単位はバイトである。一方、サイズ、有効期間、周期が直接与えられなくても、これらを算出できる情報が間接的に与えられればよい。
また、ブロックサイズは予め与えられている値とし、変更することもできるし、領域毎に違う値を用いてもよい。
ｋの値は、サイズ、有効期間、周期から決定する。たとえば、以下の式（２）のように決定する。ただしaはある正の整数である。
【数２】
2012020544.tif 000004
【００７２】
上記式（２）に示すように、領域割当部１２２は、有効期間またはデータサイズに比例するように、あるいは、書き込み周期または不揮発性記録媒体２００の領域２０２のブロックサイズに反比例するように、領域２０２を割り当てることができる。
【００７３】
このように構成された本実施形態のデータ処理システム２のデータ処理装置１２０の動作について、図９を用いて以下に説明する。図９は、本実施形態のデータ処理装置１２０の動作の一例を示すフローチャートである。以下、図８も用いて説明する。
【００７４】
本実施形態のデータ処理装置１２０において、データ処理装置１２０のデータ処理方法は、図２のフローチャートと同様なステップを有するとともに、図２のステップＳ１１１に替えて、ステップＳ２１１を有する点で相違する。
【００７５】
すなわち、図２のステップＳ１１１の領域割当部１０２の動作が、領域割当部１２２による動作に変更される。ステップＳ１０９でリクエストが割当リクエストと判定された場合（ステップＳ１０９のＹＥＳ）、ステップＳ２１１に進む。そして、ステップＳ２１１で、領域割当部１２２が、データの書き込み周期と有効期間に加え、さらに、書き込むデータのサイズに基づき、領域２０２を割り当てる。
その他の動作は上記実施形態と同様であるので、詳細な説明は省略する。
【００７６】
この構成によれば、上記実施形態と同様な効果を奏するとともに、さらに、書き込まれるデータサイズにあった領域２０２を効率よく割り当てることができ、不揮発性記録媒体２００に効率よくデータを記録でき、また、分析することができる。その理由は、データ書き込みの周期と有効期間に加えてデータサイズも考慮して領域の大きさを決定するように構成されているためである。
【００７７】
（第３の実施の形態）
図１０を用いて、本発明の実施の形態に係るデータ処理システム３について、以下に説明する。
本実施形態のデータ処理システム３は、上記実施形態とは、データ処理装置１３０が、領域２０２ごとに書き込むデータを受け付けた時刻、たとえば、データの書き込み要求が発生した時刻、または書き込むデータの書き込み量を記録し、これらの時刻と書き込み量から、領域２０２毎に領域２０２への書き込みの周期または周期的なデータのサイズを推定できる点で相違する。
【００７８】
たとえば、上記各文献記載のシステムでは、どのデータをどれくらいの期間保持するかを事前に知ることができないため、必要な記憶容量を事前に見積もるのが困難であるといった問題点があった。そして、十分な記憶容量がある限りにおいて、データを消去することは一般的ではなかった。
そこで、本発明では、不揮発性記録媒体２００に要求される記憶容量を事前に知ることができるデータ処理システム３を提供する。
【００７９】
具体的には、本実施形態のデータ処理システム３は、図８の上記実施形態のデータ処理装置１２０に替えて、データ処理装置１３０を備え、さらに、図８と同様な不揮発性記録媒体２００と、揮発性記録媒体３００と、を備える。データ処理装置１３０は、図８の領域割当部１２２、追記部１０４、永続化部１０６、および制御部１１０に加え、さらに、記録部１３２と、推定部１３４と、を備える。
【００８０】
記録部１３２は、領域２０２ごとに書き込み要求が発生した時刻、または書き込むデータのサイズを記録する。本実施形態では、追記部１０４が、データの書き込み要求を受け付けたとき、記録部１３２にこれらの情報を記録する。時刻は、データ処理装置１３０の図示されない時計から取得することができる。記録する期間は任意でよいが、有効期間が過ぎた場合、または、一時領域を満たすだけの量のデータが書き込まれた場合などをトリガとして記録を終了するのが好適である。
【００８１】
推定部１３４は、記録部１３２に記録された時刻から、領域への書き込みの周期と平均データサイズを推定する。また、推定部１３４は、記録部１３２に記録された時刻とサイズから、領域への書き込みの周期を推定することができる。
【００８２】
なお、本実施形態のデータ処理システム３の記録部１３２および推定部１３４は、上記実施形態の図１または図６のデータ処理装置１００、または図８のデータ処理装置１２０、および、これらの組合せのデータ処理装置においても同様に備えることができる。
【００８３】
このように構成された本実施形態のデータ処理システム３においても、上記実施形態の図２のフローチャートを用いて説明した同様な動作を行うことができる。本実施形態では、たとえば、利用者は、以下の式（３）ように、領域２０２を割り当てることを指示する。ただし、ｉは自然数であり、書き込みが発生する周期的なデータの数である。
ｏｕｔｉ  ＝  ａｌｌｏｃ（ｖｉ）          ・・・式（３）
式（３）で示される割り当てリクエストには、有効期間ｖのみが含まれるものとする。
【００８４】
利用者からこの割り当てリクエストは、たとえば、データ処理装置１３０を構成するコンピュータのユーザインターフェイス（操作部および表示部など）を用いた操作指示として受け付けることができる。あるいは、予め利用者により指定された値をメモリに記憶しておき、読み出してもよい。
【００８５】
そして、領域割当部１２２は、ある数のブロックからなる一時領域を割り当てる。そして、追記部１０４が、有効期間のみから割り当てられた一時領域（バッファ３０２）に書き込むとき、記録部１３２に書き込んだ時刻と、書き込んだデータのサイズを記録する。
【００８６】
さらに、本実施形態において、追記部１０４は、推定部１３４における推定が終了したとき、推定された書き込み周期とデータサイズを領域割当部１２２に通知する。そして、データの書き込み周期、データサイズ、与えられた有効期間に基づいて、領域割当部１２２は、新たな領域２０２を割り当てる。元の領域２０２を構成するブロックは、順次消去する。与えられた有効期間と推定した書き込み周期とデータサイズに基づいて領域２０２を割り当てた後の動作は、前述の実施形態で述べたとおりである。
【００８７】
以上、説明したように、本実施形態のデータ処理システム３によれば、上記実施形態と同様な効果を奏するとともに、不揮発性記録媒体２００に要求される記憶容量を事前に予測することができる。その理由は、データ書き込みの周期と有効期間に加えてデータサイズも考慮して領域の大きさを決定するとともに、領域２０２への書き込みの周期または周期的なデータのサイズを推定するように構成されているためである。これによって、想定する不揮発性記録媒体２００が十分な記憶容量を持つかどうかを判断できる。記憶容量が不足する場合には、より大容量で高価な、過剰である場合にはより小容量で安価な、不揮発性記録媒体２００を用いることができる。
また、フラッシュメモリのような低消費電力の不揮発性記録媒体を効率的に用いることにより、周期的なデータを低い消費電力で記録または分析できる。
【００８８】
（第４の実施の形態）
図１１を用いて、本発明の実施の形態に係るデータ処理システム４について、以下に説明する。
本実施形態のデータ処理システム４は、図１０の上記実施形態とは、データ処理装置１４０が、推定された書き込みデータの容量と、不揮発性記録媒体２００の記憶容量を比較し、その結果を通知する点で相違する。
【００８９】
すなわち、本実施形態のデータ処理システム４において、データ処理装置１４０は、上記実施形態のデータ処理装置１３０の構成に加え、推定されたデータの書き込み周期、データサイズ、および有効期間に基づいて、記憶装置（不揮発性記録媒体２００）に書き込まれるデータの容量を推定し、記憶装置（不揮発性記録媒体２００）の記憶容量と比較する比較部１４６をさらに備える。
【００９０】
さらに、本実施形態のデータ処理装置１４０は、比較部１４６による比較結果を通知する通知部１４８をさらに備える。
【００９１】
具体的には、本実施形態のデータ処理システム４は、図１０の上記実施形態のデータ処理装置１３０に替えて、データ処理装置１４０を備え、さらに、図１０と同様な不揮発性記録媒体２００と、揮発性記録媒体３００と、を備える。データ処理装置１４０は、図１０の領域割当部１２２、追記部１０４、永続化部１０６、記録部１３２、推定部１３４、および制御部１１０に加え、さらに、比較部１４６と、通知部１４８と、を備える。
なお、本実施形態の領域割当部１２２は、図１または図６の領域割当部１０２であってもよい。
【００９２】
比較部１４６は、推定部１３４で推定されたデータの書き込み周期、データサイズ、および有効期間に基づいて、不揮発性記録媒体２００に書き込まれるデータの容量を推定し、不揮発性記録媒体２００の記憶容量と比較し、比較結果を通知部１４８に受け渡す。
【００９３】
通知部１４８は、比較部１４６による比較結果を利用者に通知する。通知部１４８は、たとえば、データ処理装置１４０を構成するコンピュータの表示部に記憶容量が足りること、または足りないことを示す情報、あるいは、具体的な容量を数値でそれぞれ比較できるような情報を表示させることで、利用者に通知することができる。あるいは、通知部１４８は、予め指定されている利用者のメールアドレスやＩＰ（Internet Protocol）アドレス宛に、前記情報を含むメールまたはメッセージを、ネットワークを介して送信することで通知することもできる。または、通知部１４８は、データ処理装置１４０の記憶装置に前記情報を記録し、後から利用者が参照できるようにすることで、通知することもできる。
【００９４】
以上、説明したように本実施形態のデータ処理システム４によれば、上記実施形態と同様な効果を奏するとともに、さらに、予測した不揮発性記録媒体２００に要求される記憶容量に基づいて、想定する不揮発性記録媒体２００が十分な記憶容量を持つかどうかを判断し、その結果を利用者に通知することができる。利用者は、通知を受けて、記憶容量が不足する場合には、より大容量で高価な、過剰である場合には、より小容量で安価な、不揮発性記憶媒体を選択して用いることができることとなる。
【００９５】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【実施例】
【００９６】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
周期的に書き込みが発生するデータ（以下、「周期的データ」と呼ぶ。）を、周期ｐ、有効期間ｖ、データサイズｓの三つで、以下のように表す。本実施例では、図１１の上記実施形態のデータ処理システム４を用いるものとし、データ処理装置１４０は、さらに、図６の分析部１０８（図１１には不図示）を有するものとする。【００９７】
今、三つの周期的データ、（ｐ１，ｖ１，ｓ１）、（ｐ２，ｖ２，ｓ２）、（ｐ３，ｖ３，ｓ３）、を記録し、分析するとする。本発明のデータ処理システム４の利用者は、たとえば、以下の式（４）ように、領域２０２を割り当てることを指示する。ただし、ｉ＝１，２，３であり、ｏｕｔｉが割り当てられる複数の領域２０２を表している。
ｏｕｔｉ＝ａｌｌｏｃ（ｐｉ，ｖｉ，ｓｉ）        ・・・式（４）【００９８】
上記の指示は、直接的には領域割当部１２２が処理する。領域割当部１２２には、ブロックサイズｂが、予め与えられているものとする。そして、領域割当部１２２は、上記実施形態の上記式（４）を用いて、（ｐｉ，ｖｉ，ｓｉ）に対して（ｓｉ／ｂ＊ｖｉ／ｐｉ＋ａｉ）個のブロックを割り当てる。【００９９】
ここで、連続したブロックを割り当てることで、領域２０２は循環ログのように使用することができる。すなわち、永続化部１０６は、不揮発性記録媒体２００の領域２０２において、循環ログを構成するブロックの末尾から再利用する。ａｉは正の整数であり、典型的なａｉの値は、同時に書き込むブロックの数である。不揮発性記録媒体２００がフラッシュメモリの場合、異なるプレーンへの書き込み要求は並列に処理できる。
たとえば、２つのプレーンがある場合、それぞれのプレーンから１つずつ選んだブロックに書き込むと効率的であるが、最も古いデータが２つのブロックにまたがって記録されることとなる。したがって、２つのプレーンがある場合は、ａｉの値を２以上とするのが適切である。【０１００】
各周期的データへの書き込みは、たとえば、以下の式（５）ように指示する。ただし、ｄａｔａは書き込むデータそのもの、またはデータがあるアドレスへのポインタである。
ｏｕｔｉ＝ｐｕｔ（ｄａｔａ）                ・・・式（５）【０１０１】
上記の指示は、直接的には追記部１０４が処理する。追記部１０４は、領域ごとに揮発性記録媒体３００の一部をバッファとして確保し、そこにｄａｔａを書き込む。また、バッファは循環ログのように上書きされていく。バッファの先頭ＴＡ（次に書き込むアドレス）と末尾ＬＡ（まだ永続化されていない最も古いデータのアドレス）も追記部１０４は管理する。【０１０２】
本実施例では、永続化部１０６は、ある領域に対する書き込みが一定量に達したことを、追記部１０４から通知される。通知を受けた永続化部１０６は、一定量ずつ、ここではフラッシュメモリのページサイズずつ、不揮発性記録媒体２００にコピーする。そして、コピーの終了を追記部１０４に通知する。通知を受けた追記部１０４は、バッファの末尾ＴＡをページサイズ分進める（ＴＡ２）。【０１０３】
永続化部１０６は、領域の先頭（書き込み中の）ブロックを管理する。揮発性記録媒体３００に一時的に記録されたデータの、不揮発性記録媒体２００上に割り当てた領域２０２へのコピーは、領域の先頭ブロックに対して行われる。先頭ブロックに空いているページがなくなれば、最も古いデータを保持するブロック（先頭ブロックの一つ先のブロック）が、次の先頭ブロックになる。このブロックが空いていなければ、消去の操作を施して、空きブロックにしてからデータを書き込む。【０１０４】
本実施例では、三つの周期的データを記録しており、これらを記録するのに必要な記憶容量は、以下の式（６）で示されることが事前にわかる。これによって、適切な容量を持つ不揮発性記憶媒体を選択できる。
【数３】
2012020544.tif 000005
【０１０５】
分析部１０８は、一つ以上の領域に記録されたデータに対して、利用者が指定した演算を実行する。ここで、周期的データ（ｐ１，ｖ１，ｓ１）の実体は、顧客ＩＤ、時刻、緯度、経度の四つを含む位置情報であるとする。有効期間ｖ１において、地点（ｘ０，ｙ０）から距離ｒ以内に居たことがある人の数を求める場合、以下の式（７）のような指示を分析部１０８は受ける。
ｏｕｔｉ．ａｎａｌｙｚｅ（ｆｕｎｃ，ｘ０，ｙ０，ｒ）  ・・・式（７）
ここで、ｆｕｎｃは利用者定義の関数であるが、本発明の本質には関わらないので、詳細については省略する。【０１０６】
このように、本実施例のデータ処理システムでは、周期的データを効率良く不揮発性記録媒体２００に記録するとともに、利用者が指定した分析を行うことができる。【０１０７】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。【０１０８】
なお、本発明は、以下の態様も含むことができる。
（付記１）
データを永続的に記憶する記憶装置に書き込まれる周期的なデータの書き込み周期および前記データの有効期間別に、割り当てる前記記憶装置の領域を決定する領域割当手段と、
前記記憶装置に書き込まれる前記データを受け付けて一時的に一時記憶装置に記憶する追記手段と、
前記一時記憶装置に一時的に記憶された前記データを、前記領域割当手段により決定された前記記憶装置の前記領域に書き込む永続化手段と、
前記追記手段が前記領域毎に書き込む前記データを受け付けた時刻、および前記追記手段が前記領域毎に受け付けた書き込む前記データの書き込み量を記録する記録手段と、
記録された前記時刻に基づいて、前記領域毎に前記データの書き込み周期を推定するとともに、記録された前記書き込み量に基づいて、前記領域毎に前記データのデータサイズを推定する推定手段と、
前記推定された前記データの前記書き込み周期、前記データサイズ、および前記有効期間に基づいて、前記記憶装置に書き込まれる前記データの容量を推定し、前記記憶装置の記憶容量と比較する比較手段と、
前記比較手段による比較結果を通知する通知手段と、
を備え、
前記領域割当手段は、推定した前記書き込み周期、およびを前記データサイズ用いて新たな領域を割り当てるデータ処理システム。【０１０９】
（付記２）
付記１に記載のデータ処理システムにおいて、
前記永続化手段は、前記記憶装置の前記領域において、循環ログを構成するブロックの末尾から再利用するデータ処理システム。【０１１０】
（付記３）
付記１または２に記載のデータ処理システムにおいて、
前記記憶装置は、不揮発性記録媒体であるデータ処理システム。【０１１１】
この出願は、２０１０年８月１１日に出願された日本出願特願２０１０−１８０３１１号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2012020544.tif 000006
【図２】
2012020544.tif 000007
【図３】
2012020544.tif 000008
【図４】
2012020544.tif 000009
【図５】
2012020544.tif 000010
【図６】
2012020544.tif 000011
【図７】
2012020544.tif 000012
【図８】
2012020544.tif 000013
【図９】
2012020544.tif 000014
【図１０】
2012020544.tif 000015
【図１１】
2012020544.tif 000016
【国際調査報告】
2012020544.tif 000017
2012020544.tif 000018
2012020544.tif 000019