(57)【要約】【課題】  フラッシュメモリに配置したデータベースに対する書き込み処理を、特別なファイルシステムを用いることなく高速に実行する。【解決手段】  データの登録／更新／削除を行うために新たにデータベースページを確保すると、データベースページが既存のフラッシュメモリブロックのサイズに収まらない場合、未使用の第２、第３の空きフラッシュメモリブロックを確保する。当該既存のフラッシュメモリブロック内のデータベースページのうち、他のテーブル・インデックスのデータベースページへの書き込みと共起するデータベースページを第２の空きフラッシュメモリブロックに移動する。一方、当該既存のフラッシュメモリブロック内のデータベースページのうち、他のテーブル・インデックスのデータベースページへの書き込みと共起しないデータベースページを第３の空きフラッシュメモリブロックに移動する。【選択図】  図１
2013037587.tif 000002
【特許請求の範囲】
【請求項１】
テーブルまたはインデックスのデータが格納される複数のデータベースページをそれぞれが有する複数のフラッシュメモリブロックを含むデータベースに対してデータの登録、更新、および削除の少なくとも何れかを行うデータ処理装置であって、
前記登録、更新、および削除の内容に応じて、書き換えの対象となるデータベースページを特定する特定手段と、
前記特定手段により特定されたデータベースページを有する既存のフラッシュメモリブロックに、前記登録、更新、および削除のためのデータの書き込みに必要な空き領域が存在するか否かを判断する判断手段と、
前記判断手段により、既存のフラッシュメモリブロックに空き領域がないと判断されると、２つの未使用のフラッシュメモリブロックを確保する確保手段と、
前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定する判定手段と、
前記判定手段により、データの書き込みが共起すると判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの一方に配置すると共に、前記判定手段により、データの書き込みが共起しないと判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの他方に配置する再配置手段と、を有することを特徴とするデータ処理装置。
【請求項２】
前記既存のフラッシュメモリブロック内のデータベースページ同士でデータの書き込みが共起する関係にあるか否かを示す書き込み共起関係の情報を予め記憶する記憶手段を有し、
前記判定手段は、前記記憶手段により記憶された情報に基づいて、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定することを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
前記記憶手段は、前記データベースを利用するデータ処理装置の機能と、前記テーブルおよび前記インデックスの少なくとも何れか一方とのそれぞれに応じた、データの書き込みが共起するか否かを示す２値のビットの情報を記憶することを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
前記既存のフラッシュメモリブロック内のデータベースページ同士でデータの書き込みが共起するレベルを示す共起度の情報を予め記憶する記憶手段を有し、
前記判定手段は、前記記憶手段により記憶された情報に基づいて、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定することを特徴とする請求項１に記載のデータ処理装置。
【請求項５】
前記判定手段は、前記テーブルの同一のカラムに付与された、異なるインデックスを構成するデータベースページである場合に、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起すると判定することを特徴とする請求項１に記載のデータ処理装置。
【請求項６】
テーブルまたはインデックスのデータが格納される複数のデータベースページをそれぞれが有する複数のフラッシュメモリブロックを含むデータベースに対してデータの登録、更新、および削除の少なくとも何れかを行うデータ処理方法であって、
前記登録、更新、および削除の内容に応じて、書き換えの対象となるデータベースページを特定する特定工程と、
前記特定工程により特定されたデータベースページを有する既存のフラッシュメモリブロックに、前記登録、更新、および削除のためのデータの書き込みに必要な空き領域が存在するか否かを判断する判断工程と、
前記判断工程により、既存のフラッシュメモリブロックに空き領域がないと判断されると、２つの未使用のフラッシュメモリブロックを確保する確保工程と、
前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定する判定工程と、
前記判定工程により、データの書き込みが共起すると判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの一方に配置すると共に、前記判定工程により、データの書き込みが共起しないと判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの他方に配置する再配置工程と、を有することを特徴とするデータ処理方法。
【請求項７】
前記既存のフラッシュメモリブロック内のデータベースページ同士でデータの書き込みが共起する関係にあるか否かを示す書き込み共起関係の情報を予め記憶する記憶工程を有し、
前記判定工程は、前記記憶工程により記憶された情報に基づいて、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定することを特徴とする請求項６に記載のデータ処理方法。
【請求項８】
前記記憶工程は、前記データベースを利用するデータ処理装置の機能と、前記テーブルおよび前記インデックスの少なくとも何れか一方とのそれぞれに応じた、データの書き込みが共起するか否かを示す２値のビットの情報を記憶することを特徴とする請求項７に記載のデータ処理方法。
【請求項９】
前記既存のフラッシュメモリブロック内のデータベースページ同士でデータの書き込みが共起するレベルを示す共起度の情報を予め記憶する記憶工程を有し、
前記判定工程は、前記記憶工程により記憶された情報に基づいて、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定することを特徴とする請求項６に記載のデータ処理方法。
【請求項１０】
前記判定工程は、前記テーブルの同一のカラムに付与された、異なるインデックスを構成するデータベースページである場合に、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起すると判定することを特徴とする請求項６に記載のデータ処理方法。
【請求項１１】
テーブルまたはインデックスのデータが格納される複数のデータベースページをそれぞれが有する複数のフラッシュメモリブロックを含むデータベースに対してデータの登録、更新、および削除の少なくとも何れかを行うことをコンピュータに実行させるためのコンピュータプログラムであって、
前記登録、更新、および削除の内容に応じて、書き換えの対象となるデータベースページを特定する特定工程と、
前記特定工程により特定されたデータベースページを有する既存のフラッシュメモリブロックに、前記登録、更新、および削除のためのデータの書き込みに必要な空き領域が存在するか否かを判断する判断工程と、
前記判断工程により、既存のフラッシュメモリブロックに空き領域がないと判断されると、２つの未使用のフラッシュメモリブロックを確保する確保工程と、
前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定する判定工程と、
前記判定工程により、データの書き込みが共起すると判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの一方に配置すると共に、前記判定工程により、データの書き込みが共起しないと判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの他方に配置する再配置工程と、をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理方法、及びコンピュータプログラムに関し、特に、データベースに対してデータの書き込み処理を行うために用いて好適なものである。
【背景技術】
【０００２】
近年、ストレージや記録メディアの大容量化が進んでいる。これにより、比較的小規模なデータ処理装置においても、大量に蓄積されたデータを扱うことができるようになっている。そこで、データベースを用いたデータの管理機能をデータ処理装置に持たせることが必須となりつつある。
【０００３】
例えば、デジタルカメラで得られた撮影写真等が格納される１つのフラッシュメディアには、既に、数万枚〜数十万枚の画像データを格納することが可能である。また、デジタルカメラの高機能化により、ＧＰＳ情報に代表される「画像データの検索に有効となるメタデータ」を、画像データに自動的に付与する機能を有するデジタルカメラも実現されている。このような状況を受け、フラッシュメモリを搭載するデジタルカメラ等のデバイスに、統一的なデータ管理手段としてデータベースが導入されつつある。このようなデバイスでは、メタデータの検索等にデータベースを使用する構成が取られつつある。
【０００４】
ここで、一般的なデータベースには、「ページ」と呼ばれるデータを格納する単位が存在する。「ページ」とは、データベースファイルにデータを格納する際に割り当てられる「チューニング可能な数ＫＢのデータ格納領域の最小単位」である。データベースファイルに対するデータの読み書きは、この「ページ」単位で行われる。データベースは、多くの件数のデータを、効率的に格納／管理するデータ構造を取る。このため、１つの「ページ」には、複数件のデータが決められた順序に従って格納される。多くのデータベースは、この「ページ」を構成要素とするＢツリー構造を持っている。このため、１件のデータを登録／更新／削除する場合でも、登録／更新／削除する対象となるデータの格納位置によっては、「ページ」の組換えが発生する。そうすると、複数の「ページ」の更新が必要となる場合がある。
【０００５】
一方、一般的なフラッシュメモリにも、「ページ」と「ブロック」と呼ばれるデータの操作単位が存在する。ここで言う「ページ」とは、フラッシュメモリにファイルを記録する際に割り付けられるデータ領域の最小単位である。この「ページ」のサイズは、約８ＫＢ程度の固定のサイズである。この「ページ」は、前述したデータベースの「ページ」とは異なる。そこで、以降の説明では、フラッシュメモリの概念で使用される「ページ」を「フラッシュメモリページ」と称する。一方、データベースの概念で使用されるページを「ページ」または「データベースページ」と称する。
【０００６】
「ブロック」とは、複数の「フラッシュメモリページ」を１つに纏めたものである。この「ブロック」のサイズは、例えば１２８ＫＢ〜５１２ＫＢのサイズである。フラッシュメモリにおけるデータの消去／書き込み処理は、この「ブロック」単位で行われる。フラッシュメモリに記憶されているデータを書き換える場合、フラッシュメモリの構造上、以下の手順が必要となる。
【０００７】
まず、書き換えの対象となる「フラッシュメモリページ」が格納された「ブロック」内の他の「フラッシュメモリページ」を一旦別の場所に退避する。次に、当該「ブロック」を消去する。次に、書き換えるデータと退避しておいた他の「フラッシュメモリページ」を新たに書き込む。このようにして一連のデータの書き込み処理が終了する。このような書き込み処理が行われるフラッシュメモリは、１つのファイルが数ＭＢ〜数百ＭＢとなる「画像データや映像データ」の書き込み処理には適している。一方、このような書き込み処理で、比較的小さいサイズのデータの書き込みを行うと、処理時間のオーバーヘッドが大きくなってしまう。
【０００８】
このような書き込み処理をデータベースの処理にそのまま適用するとする。そして、書き換えの対象となる「データベースページ」が、フラッシュメモリ上に複数のブロックに跨って存在するとする。そうすると、書き換えるデータの差分のサイズが数ＫＢ程度であっても、実際には、数ＭＢの「ブロックの書き込みコスト」が発生する。また、書き込むデータの順序によっては、Ｂツリー構造を構成する「ページ」の組み換えが発生する。このため、書き換えを行うべき「ブロック」の数は更に増える可能性がある。
【０００９】
このような問題を解決するための技術として、非特許文献１に記載の技術がある。非特許文献１では、「Extreme FFS」というＳＳＤ（Solid State Drive）向けの「フラッシュメモリ専用の高機能なファイルシステム」を用いて、データを再配置する方法が提案されている。ここでは、「Usage based content localization」というアルゴリズムが提案されている。これは、ユーザのデータ書き換え履歴を予め収集し、収集した履歴から統計情報を算出し、算出した統計情報に基づき、書き換え頻度の近いデータ同士をなるべく同一の「ブロック」に配置することにより、高速なデータ書き込み処理を実現するというものである。
【先行技術文献】
【非特許文献】
【００１０】
【非特許文献１】「SanDisk Introduces ExtremeFFS -- New Flash Management System for Improving SSD Performance and Reliability」 ,SanDisk Press Release ,Nov 05 2008
【発明の概要】
【発明が解決しようとする課題】
【００１１】
非特許文献１に記載の技術は、フラッシュメモリ専用の高機能なファイルシステムを必要とするものである。非特許文献１に記載の技術では、ユーザのデータ書き換え履歴の情報を蓄積するためのメモリリソースと、蓄積した履歴の情報から統計情報を算出する等の演算処理とを要する。一方、デジタルカメラやデジタルビデオカメラに代表される「フラッシュメモリを搭載するデバイス」は、ＳＳＤ等を搭載することが可能なＰＣに比べて、ＣＰＵの性能と、ＲＡＭのサイズ資源に制限がある。そのため、前述したようなフラッシュメモリ専用の高機能なファイルシステムをデバイスに搭載すると、デバイスの負担が大きくなる。また、フラッシュメモリは、デバイスやＰＣ等の複数の電子機器で、リムーバブルメディアとして使用されることが多い。
【００１２】
デバイスやＰＣ等の電子機器は、データの書き込み特性が互いに異なる。このため、直前に書き込みを行ったデバイスの特性に合わせて再配置されたフラッシュメモリを、データの書き込み特性が異なる他のデバイスで使用した場合、書き込みに与えるオーバーヘッドは大きい。
本発明は、このような問題点に鑑みてなされたものであり、フラッシュメモリに配置したデータベースに対する書き込み処理を、特別なファイルシステムを用いることなく高速に実行できるようにすることを目的とする。
【課題を解決するための手段】
【００１３】
本発明のデータ処理装置は、テーブルまたはインデックスのデータが格納される複数のデータベースページをそれぞれが有する複数のフラッシュメモリブロックを含むデータベースに対してデータの登録、更新、および削除の少なくとも何れかを行うデータ処理装置であって、前記登録、更新、および削除の内容に応じて、書き換えの対象となるデータベースページを特定する特定手段と、前記特定手段により特定されたデータベースページを有する既存のフラッシュメモリブロックに、前記登録、更新、および削除のためのデータの書き込みに必要な空き領域が存在するか否かを判断する判断手段と、前記判断手段により、既存のフラッシュメモリブロックに空き領域がないと判断されると、２つの未使用のフラッシュメモリブロックを確保する確保手段と、前記既存のフラッシュメモリブロックに含まれるデータベースページへのデータの書き込みと、当該既存のフラッシュメモリブロックに含まれる他のデータベースページへの書き込みとが互いに共起するか否かを判定する判定手段と、前記判定手段により、データの書き込みが共起すると判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの一方に配置すると共に、前記判定手段により、データの書き込みが共起しないと判定されたデータベースページを、前記２つの未使用のフラッシュメモリブロックの他方に配置する再配置手段と、を有することを特徴とする。
【発明の効果】
【００１４】
本発明によれば、データの書き込みが共起するページと、データの書き込みが共起しないページとを異なるブロックに再配置する。したがって、その後の書き込み処理において発生する不要なブロックの書き換えを、特別なファイルシステムを用いることなく軽減することができる。よって、フラッシュメモリに配置したデータベースに対する書き込み処理を、特別なファイルシステムを用いることなく高速に実行することができる。
【図面の簡単な説明】
【００１５】
【図１】データ処理装置の全体構成を示すブロック図である。
【図２】コンテンツ情報管理データベースの物理構造を示す図である。
【図３】コンテンツ情報管理データベースの論理構造を示す図である。
【図４】再配置処理が行われる前のデータベースファイルを示す図である。
【図５】再配置処理が行われた後のデータベースファイルを示す図である。
【図６】コンテンツ情報管理データベースのスキーマ構成を示す図である。
【図７】コンテンツ情報管理データベース内に格納されたデータを示す図である。
【図８】画像撮影装置の動作を説明するフローチャートである。
【図９】ステップＳ８０４を詳細に説明するフローチャートである。
【図１０】ステップＳ９０４を詳細に説明するフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を、図面を参照しながら説明する。
図１は、データ処理装置の全体構成の一例を示すブロック図である。図１では、データ処理装置が、画像撮影装置（デジタルカメラ又はデジタルビデオカメラ）である場合を例に挙げて示している。
図１において、ＣＰＵ１０１は、マイクロプロセッサＣＰＵである。ＣＰＵ１０１は、データ登録処理、検索処理、表示処理、画面制御処理等のための演算・論理判断等を行うことによって、後述のバス（ＢＵＳ）１０７に接続された各デバイスの処理を制御する。
バス１０７は、ＣＰＵ１０１の制御対象である各デバイスを指示するアドレス信号と、コントロール信号とを転送する。
ＲＯＭ１０２は、読み出し専用の不揮発メモリである。ＲＯＭ１０２は、ＣＰＵ１０１の処理手順となる制御プログラムや各種データ等を記憶する。
ＲＡＭ１０３は、データの読み書きが可能なランダムアクセスメモリである。ＲＡＭ１０３は、各デバイスから出力された各種データの一次記憶のために用いられる。ＲＡＭ１０３には、ページキャッシュ１１２とブロックキャッシュ１１３とが記憶されている。
【００１７】
ページキャッシュ１１２は、後述のコンテンツ情報管理データベース１１１の構成単位である「ページ」に高速にアクセスする為のキャッシュデータである。
ブロックキャッシュ１１３は、後述のリムーバブル記憶装置１０８の構成単位である「ブロック」に高速にアクセスする為のキャッシュデータである。ブロックキャッシュ１１３は、複数のページキャッシュ１１２によって構成される。
入力部１０４は、ボタン、キーボード、及びタッチパネル等を備えている。オペレータは、入力部１０４を操作して、画像撮影装置に対して各種の指示を行う。
【００１８】
出力部１０５は、液晶ディスプレイ等を備えている。
通信部１０６は、ネットワークコントローラである。通信部１０６は、ＵＳＢ等の外部入出力機器や、モデム等の有線通信機器あるいはＧＰＳ等の無線通信機器を備えている。ＰＣ（コンピュータ）等の外部機器と画像撮影装置とのデータの交換は、通信部１０６を介して行われる。
アダプタ１１４は、画像撮影装置が、後述のリムーバブル記憶装置１０８からデータを読み出したり、後述のリムーバブル記憶装置１０８にデータを書き込んだりするための接続端子である。ＣＰＵ１０１は、このアダプタ１１４を経由してリムーバブル記憶装置１０８に対するデータの読み書きを実行する。
【００１９】
リムーバブル記憶装置１０８は、ＳＤカードやＳＳＤ等のフラッシュメディア（フラッシュメモリ）である。リムーバブル記憶装置１０８は、ブロックの単位で、データを一括して消去することが可能な大容量の不揮発メモリである。リムーバブル記憶装置１０８は、大量のデータを変更可能に記憶する。
【００２０】
リムーバブル記憶装置１０８には、画像データ・映像データ等のコンテンツファイル群１１０と、それらのメタデータが格納されたコンテンツ情報管理データベース１１１とが格納されている。リムーバブル記憶装置１０８を、ハードディスク等で代用することもできる。また、アダプタ１１４を介さずとも、画像撮影装置（デバイス）内に内蔵されたフラッシュメモリにデータを直接格納してもよい。尚、ＣＰＵ１０１により実行される制御プログラムを、ここに格納することも可能である。その場合、ＣＰＵ１０１は、必要に応じて、制御プログラムを、ＲＡＭ１０３（主記憶装置）にロードして、実行する。これによって、制御プログラムを途中で修正することが可能な柔軟なシステムを構成する事ができる。
【００２１】
撮影部１０９は、カメラとしての機能を有する。撮影部１０９は、ユーザによる入力部１０４からの撮影命令を受けて、画像・映像等を撮影する。撮影されたデータは、一旦ＲＡＭ１０３に記憶される。その後、ＲＡＭ１０３に記憶されたデータは、リムーバブル記憶装置１０８のコンテンツファイル群１１０に登録される。また、そのメタデータは、コンテンツ情報管理データベース１１１に登録される。
【００２２】
以上の各デバイスからなる画像撮影装置は、入力部１０４等からの各種イベントに応じて作動する。入力部１０４等から、インタラプトが供給されると、インタラプト信号がＣＰＵ１０１に送られる。それに伴ってイベントが発生する。ＣＰＵ１０１は、発生したイベントに応じて、ＲＯＭ１０２またはＲＡＭ１０３内に記憶されている各種命令を読み出す。ＣＰＵ１０１は、読み出した命令を実行することによって、各種の制御を行う。
本実施形態の画像撮影装置のＣＰＵ１０１は、プログラムを実行する事で各種の手段として機能する。尚、ＣＰＵ１０１と協調して動作するＡＳＩＣ等の制御回路がこれらの手段として機能しても良い。また、ＣＰＵ１０１と制御回路との協調によってこれらの手段が実現されても良い。また、ＣＰＵ１０１は、単一のものである必要はなく、複数であっても良い。この場合、複数のＣＰＵは、分散して処理を実行する。尚、ＣＰＵ１０１がソフトウェアを実行する事で実現される手段が、専用の回路によって実現されても良い。
【００２３】
図２は、フラッシュメモリとして構成されるリムーバブル記憶装置１０８のコンテンツ情報管理データベース１１１の物理構造の一例を示す図である。
フラッシュメモリブロック（Flash Block）２０１は、フラッシュメモリを構成するデータの格納単位である。フラッシュメモリブロック２０１は、後述のフラッシュメモリページ２０２が複数個連結したものである。フラッシュメモリに記憶されるコンテンツ情報管理データベース１１１は、複数のフラッシュメモリブロック２０１が連結したものである。一般的に、フラッシュメモリのデータの書き込み・消去は、このフラッシュメモリブロック単位で行われる。
【００２４】
データの書き込み手順としては、まず、ＣＰＵ１０１は、書き換え対象のデータが格納されているフラッシュメモリページ、もしくは新たにデータの格納先となるフラッシュメモリページを特定する。次に、ＣＰＵ１０１は、特定したフラッシュメモリページと同一のフラッシュメモリブロックに存在する他のフラッシュメモリページを一旦ＲＡＭ１０３等に退避する。
【００２５】
次に、ＣＰＵ１０１は、特定したフラッシュメモリページを含むフラッシュメモリブロックを消去する。最後に、ＣＰＵ１０１は、特定したフラッシュメモリページの書き換えイメージと、退避しておいた他のフラッシュメモリページとを、別のフラッシュメモリブロックに書き込む。ＣＰＵ１０１は、このような手順で、データの書き込みを行う。
フラッシュメモリページ（Flash Page）２０２は、フラッシュメモリを構成するデータの格納単位である。フラッシュメモリ内に格納されるファイルのデータ領域は、このフラッシュメモリページを単位として割り当てられる。尚、１つのファイルを構成する複数のフラッシュメモリページが、同一のフラッシュメモリブロックに格納される保証はない。
【００２６】
データベースページ（DB Page）２０３は、データベースファイルを構成するデータの格納単位である。データベースページ２０３の空き領域のサイズに応じて、後述のレコード２０４、インデックス２０５が、それぞれ異なるデータベースページ２０３に複数個格納される。レコード（DB Record）２０４は、データベースのテーブルに格納されるレコードである。図２では、一つの四角が１件のレコードを意味する。１つのテーブルは、複数個のレコードをまとめたものになる。インデックス（DB Index）２０５は、データベース内に作成されたインデックスデータである。図２では、一つの四角が個々のインデックスエントリを意味する。１つのインデックスは、複数個のインデックスエントリをまとめたものになる。
【００２７】
図３は、コンテンツ情報管理データベース１１１の論理構造の一部の一例を示す図である。データベースを構成する「テーブルとインデックス」は、特定のキーによる順序性によって順序付けされた「後述のデータベースページで構成されるＢツリー構造３０１」を持つ。データベースページ３０２は、データベースのページの論理構造を示したものである。データベースページ３０２は、「一意のページ番号・ページ内の空き領域のサイズ」等の管理情報を格納するページヘッダ情報（Header）を含む。データベースページ３０２は、ページ内に格納されたコンテンツ（複数のレコードおよび複数のインデックスエントリの少なくとも何れか一方）の領域（Contents Area）を含む。データベースページ３０２は、コンテンツにアクセスするためのポインタ情報（Contents List）を含む。この他、データベースページ３０２は、空き領域（Free Area）を含む。
また、ページヘッダ情報３０３は、データベースページ３０２の管理情報である。各ページヘッダ情報３０３には、それが格納される「テーブルまたはインデックス」のオブジェクトＩＤ（Obj ID）とその他の情報（Other）とが含まれる。
【００２８】
図４は、書き込み共起ページ再配置処理が行われる前のデータベースファイルの一例を示す図である。具体的に、図４（Ａ）は、書き込み共起ページ再配置処理が行われる前のデータベースファイルの論理構造の一例を示す図である。図４（Ｂ）は、書き込み共起ページ再配置処理が行われる前のデータベースファイルの物理構造の一例を示す図である。
図４では、データベース内に、３つのテーブル４０１〜４０３が存在する場合を例に挙げて示している。
テーブル４０１〜４０３は、データベースページ「ＤＢ Ｐａｇｅ（Ｎ）」（Ｎ＝１〜１２）によって構成されており、Ｂツリー構造を取る。また、テーブル４０１、４０２については、互いのデータベースページへの書き込みが共起関係にある。一方、テーブル４０３については、他のどのテーブル４０１、４０２ともデータベースページへの書き込みの共起関係はない。ここで、データベースページへの書き込みが共起するとは、あるデータベースページに対するデータの書き込みがあった場合、この書き込みと同時に、当該データベースページとは異なるデータベースページに対するデータの書き込みが行われるということを意味する。本実施形態では、このような事象の場合に、データベースページへの書き込みが互いに共起するものとして表現する。図４（Ｂ）に示すように、１つのフラッシュメモリブロック４０４は、最大で１２個のデータベースページ４０５を格納することが可能であるとする。図４（Ｂ）では、既に最大個数分のデータベースページ群が、フラッシュメモリブロック４０４に格納された状況であることを表している。
【００２９】
図５は、書き込み共起ページ再配置処理が行われた後のデータベースファイルの一例を示す図である。具体的に、図５（Ａ）は、書き込み共起ページ再配置処理が行われた後のデータベースファイルの論理構造の一例を示す図である。図５（Ｂ）は、書き込み共起ページ再配置処理が行われた後のデータベースファイルの物理構造の一例を示す図である。
テーブル５０１〜５０３は、それぞれ前述のテーブル４０１〜４０３に対応する。図５（Ａ）に示すように、ここでは、テーブル５０２に新たにレコードが追加され、このレコードの追加によりＢツリー構造の組み換え処理が発生し、新たにデータベースページ「ＤＢ Ｐａｇｅ（１３）」、「ＤＢ Ｐａｇｅ（１４）」が追加されたとする。
【００３０】
ここで、図５（Ｂ）に示すフラッシュメモリブロック５０４、５０６は新たに確保された空きブロックである。ＣＰＵ１０１は、データベースページ「ＤＢ Ｐａｇｅ（１３）」、「ＤＢ Ｐａｇｅ（１４）」を、既存のフラッシュメモリブロック４０４に追加することを試みる。しかし、ここでは、既存のフラッシュメモリブロック４０４の空き領域の有無の判定によって、空き領域が不足すると判定されたために、新たに２つの空きブロック（フラッシュメモリブロック５０４、５０６）が確保されたとする。また、フラッシュメモリへの書き込み処理では、ＣＰＵ１０１は、まず、前述のフラッシュメモリブロック４０４を消去する。その後、ＣＰＵ１０１は、フラッシュメモリブロック５０４、５０６を書き込む。
【００３１】
書き込み共起ページ再配置処理により、既存のフラッシュメモリブロックに格納されているデータベースページのうち、互いに書き込みが共起するデータベースページと、共起しないデータベースページとが、異なるフラッシュメモリブロックに再配置される。この処理は新たにフラッシュメモリブロックが追加されるタイミングで行われる。図４及び図５に示す例では、既存のフラッシュメモリブロックに格納されているデータベースページは、「ＤＢ Ｐａｇｅ（Ｎ）」（Ｎ＝１〜１２）である。新たに追加されるデータベースページは、「ＤＢ Ｐａｇｅ（１３）」、「ＤＢ Ｐａｇｅ（１４）」である。
【００３２】
具体的に、図５に示す例では、書き込み共起ページ再配置処理により、データベースページの書き込みが共起するデータベースページ群５０５は、フラッシュメモリブロック５０４に再配置される。一方、どのテーブルとも、書き込みが共起しないデータベースページ群５０７は、フラッシュメモリブロック５０６に再配置される。データベースページ群５０５は、テーブル５０１、５０２を構成するデータベースページ群である。データベースページ群５０７は、テーブル５０３を構成するデータベースページ群である。
【００３３】
ここで、再配置される対象のデータベースページは、書き込みが共起関係にあるものと、ないものとが、異なるフラッシュメモリブロックに配置されていればよい。例えば、フラッシュメモリブロック５０４にデータベースページ群５０７を再配置すると共に、フラッシュメモリブロック５０６にデータベースページ群５０５を再配置してもよい。フラッシュメモリブロックのヘッダ領域に、書き込みが共起するデータベースページの数と、書き込みが共起しないデータベースページの数とを保持しておくことができる。このようにすれば、書き込みが共起するデータベースページ群５０５と書き込みが共起しないデータベースページ群５０７とのうち、新規のフラッシュメモリブロックへのデータベースページの移動量の少ない方を、新規のフラッシュメモリブロックに再配置できる。これにより、書き込み共起ページ再配置処理のオーバーヘッドを抑えることができる。
【００３４】
図６は、本実施形態で想定するデータの１つである画像コンテンツのメタデータを格納するコンテンツ情報管理データベース１１１のスキーマ構成の一部の一例を示す図である。図６に示す「テーブル、インデックス」を構成するデータベースページは、１つのデータベースファイルに混在した形で格納される。
【００３５】
画像情報テーブル６０１は、画像撮影装置等のデバイスで撮影された画像コンテンツ毎のメタデータを格納する。同行者情報テーブル６０２は、画像情報テーブル６０１に格納された画像コンテンツを撮影したイベントに同行した人物の情報を格納する。インデックス６０３〜６０５は、画像情報テーブル６０１のカラムに付与されたインデックスである。インデックス６０６は、同行者情報テーブル６０２のカラムに付与されたインデックスである。
画像コンテンツに付与されるメタデータのうち、撮影日時やＧＰＳデータは、撮影時に画像撮影装置で自動的に付与される。一方、撮影場所、イベントＩＤ、イベント名、同行者は、ＰＣ等の外部機器に存在するスケジュール管理アプリケーション等との「通信部１０６を介した連携」によって、撮影とは非同期のタイミングで付与される。もちろんこれらのメタデータを付与するタイミングは、画像撮影装置等のデバイスに搭載された機能によって任意に変更することが可能である。例えば、ＧＰＳ機能を搭載していない画像撮影装置で画像コンテンツが得られる場合、ＧＰＳデータの付与は、外部機器との連携によって実現する。また、例えば、ＧＰＳデータから変換することが可能な「地名・ランドマーク名といった地図情報」を、画像撮影装置が搭載している場合、撮影場所の付与は、外部機器との連携をせずとも、画像撮影装置側で実現することが可能である。
【００３６】
スキーマ管理テーブル６０７は、コンテンツ情報管理データベース１１１内の「テーブル・インデックス等のデータベースオブジェクト」の定義情報（オブジェクトＩＤ及びオブジェクト名）と、書き込み共起情報とを含む情報を格納する。書き込み共起情報とは、テーブル・インデックスを構成するデータベースページへの書き込みが共起するかどうかを定義した情報である。本実施形態では、データベースは、リムーバブルなメディア（リムーバブル記憶装置１０８）に格納され、異なる複数のデバイスから読み書きされることを想定する。そのため、デバイスの機能に応じて、書き込み共起事象には、いくつかのパターンが存在することになる。ここでは、このパターンのことを共起パターンと称する。
【００３７】
この共起パターンを表現するために、本実施形態では、書き込み共起情報を複数のビットの情報とする。各ビットの組み合せが個別の共起パターンを示す。ここで、ビットの値が「１」であることは、書き込みが互いに共起関係にあることを示す。ビットの値が「０」であることは、書き込みが互いに共起関係にないことを示す。スキーマ管理テーブル６０７には、全部で１４個の共起パターンを保持することができるようになっている。
【００３８】
例えば、ＧＰＳ機能を地名に変換する地名変換辞書が、画像撮影装置等のデバイスに搭載されているかどうかによって、共起パターンは２つ存在する。地名変換辞書を搭載したデバイスでは、撮影時に、「撮影場所」を持つレコードが画像情報テーブル６０１に登録される。したがって、これと同時に、撮影場所インデックス６０４も更新される。つまり、画像情報テーブル６０１への書き込みと、撮影場所インデックス６０４への書き込みとが共起する。これに対し、地名変換辞書を搭載していないデバイスでは、撮影時に、「撮影場所」を持つレコードを画像情報テーブル６０１に登録できない。このため、撮影場所インデックス６０４への書き込みは、他のテーブルへの書き込みと共起しない。これらの共起パターンを表現したものが共起パターンテーブル６０８である。
【００３９】
この共起パターンテーブル６０８は、データベース利用環境毎の「共起パターン」（共起パターンは一意の共起パターンＩＤで管理される）と、その「共起定義位置オフセット情報」を持つ。「共起位置オフセット情報」とは、書き込み共起情報から、対応する定義情報を取りだすための「先頭のビットからのオフセット位置」を示す情報である。例えば、前述の地名変換辞書を搭載しないデバイスに付与される共起パターンＩＤは「ＤＳＣ＿００１」であり、その書き込み共起情報における先頭のビットからのオフセット位置は「０」であるとする。また、地名変換辞書を搭載したデバイスに付与される共起パターンＩＤは「ＤＳＣ＿００２」であり、その書き込み共起情報における先頭のビットからのオフセット位置は「１」である。
【００４０】
ここで共起パターンＩＤ「ＰＣ＿０１」は、ＰＣ用の共起パターンを定義したものである。図では「ＰＣ＿０１」を他の画像撮影装置とは異なる設定としている。しかしながら、これ以外にも、例えば、高速で処理可能なＰＣと、処理性能としてはＰＣよりも劣る画像撮影装置との間で、同じリムーバブルメディアに記憶されたデータベースを読み書きする場合を想定して、共起パターンを設定することも考えられる。その場合、両者の共起パターンＩＤを処理性能の低い画像撮影装置の「ＤＳＣ＿００１」に合わせる。こうすることでデータベースページの配置が書き込み処理性能の低いデバイスでの書込み共起パターンに最適な状況となる。これにより、その後の画像撮影装置での書き込みのオーバーヘッドを抑えることが可能となる。このような制御は、データの書き込み履歴に基づき、ページの再配置場所を決定する方式では困難である。
【００４１】
図７は、本実施形態で想定するコンテンツ情報管理データベース１１１内の各テーブルに格納されたデータの一部の一例を示す図である。
図７（Ａ）は、画像情報テーブル６０１の一部を示す図である。画像情報テーブル６０１は、「画像ＩＤ」、「ファイル名」、「撮影日時」、「ＧＰＳデータ」、「撮影場所」、及び「イベントＩＤ」等の情報によって構成される。画像情報テーブル６０１は、画像撮影装置で撮影時にデータを登録する場合や、画像撮影装置／ＰＣで画像を編集する場合等、様々なタイミングで且つ様々なデバイスからアクセスされる。本実施形態で説明するテーブルには、登録済みの全コンテンツのデータが存在するが、図７では、便宜上説明に必要のないデータに関しては「・・・」として表現している。
【００４２】
図７（Ｂ）は、同行者情報テーブル６０２の一部を示す図である。同行者情報テーブル６０２は、「ＩＤ」、「イベントＩＤ」、「イベント名」、及び「同行者」等の情報によって構成される。ここで、「イベントＩＤ」は、画像情報テーブル６０１の「イベントＩＤ」に対応する。同行者情報テーブル６０２への書き込みは、ユーザによる画像撮影装置での撮影時には実施されず、外部機器であるＰＣ等との連携時に、画像撮影装置にデータが取りこまれたタイミングで実施される。イベント情報は、撮影日時、撮影場所等の情報によって、ＰＣ等に搭載されているスケジュール管理アプリケーションによって関連付けられている。そのため、この同行者情報テーブル６０２への書き込みは、撮り貯められた画像データを保持する画像撮影装置本体、又はそのリムーバブルメディアであるリムーバブル記憶装置１０８を、ユーザがＰＣ等に接続することによって行われる。
【００４３】
図７（Ｃ）は、スキーマ管理テーブル６０７の一部を示す図である。スキーマ管理テーブル６０７は、「オブジェクトＩＤ」、「オブジェクト名」、及び「書込み共起情報」等によって構成される。この他に、「ＲＯＯＴページ番号」がスキーマ管理テーブル６０７に含まれていてもよい。
「オブジェクトＩＤ」、「オブジェクト名」は、データベース内に存在する個々の「テーブル、インデックス」に割り当てられた一意に特定可能なＩＤとその名称である。前述したように、「書き込み共起情報」とは、特定のデータベース利用環境において決定される「テーブル・インデックスを構成するデータベースページ同士の書き込み共起関係」の有無をビットで表現した情報である。書き込み共起情報の桁数は、共起パターンの数だけ確保される。「１」は、書き込みが互いに共起関係にあることを示し、「０」は、書き込みが互いに共起関係にないことを示す。本実施形態では、画像撮影装置、ＰＣ等の操作デバイス毎に、テーブル・インデックスの共起パターンが存在することを想定している。書き込み共起情報のビットの上位の桁から順に、図７（Ｄ）に示す共起パターンＩＤが対応する。
【００４４】
図７（Ｄ）は、共起パターンテーブル６０８の一部を示す図である。共起パターンテーブル６０８は、データベース利用環境（状況）に応じてパターン化された書き込み共起情報を特定するための情報として、「共起パターンＩＤ」と「共起定義位置オフセット」等を格納する。「共起パターンＩＤ」とは、データベース利用環境に応じて異なる「テーブル・インデックスへの書き込み共起パターン」のＩＤである。「共起パターンＩＤ」は、データベースを使用するデジタルカメラやＰＣ等のデバイス毎に用意される。「共起定義位置オフセット」とは、共起パターンＩＤに対応する値（書き込みの共起の有無を示す「１」又は「０」）が、１４桁の書き込み共起情報の何桁目であるかを特定するためのオフセット情報である。
【００４５】
図７（Ｃ）、（Ｄ）に示す例では、書き込み共起情報の先頭のビットの値は、データベース利用環境がデジタルスチルカメラ（「共起パターンＩＤ＝ＤＳＣ＿００１」に対応するデジタルスチルカメラ）である場合に、書き込みの共起が発生するかどうかを示す。図７（Ｄ）において、「共起パターンＩＤ＝ＤＳＣ＿００１」の共起定義位置オフセットの値は「０」である。このことは、「共起パターンＩＤ＝ＤＳＣ＿００１」に対応するデジタルスチルカメラにおいて書き込みの共起があるかどうかは、図７（Ｃ）に示す書き込み共起情報の先頭のビットに示されていることを表す。図７（Ｃ）において、「オブジェクトＩＤ＝３」の書き込み共起情報の先頭のビットの値と、「オブジェクトＩＤ＝５」の書き込み共起情報の先頭のビットの値は、共に「１」である。これらのことから、「ＤＳＣ＿００１」に対応するデジタルスチルカメラでは、「オブジェクトＩＤ＝３」の画像情報テーブル６０１と、「オブジェクトＩＤ＝５」の撮影日時インデックス６０３とに対して同時に書き込みが行われることが分かる。すなわち、「ＤＳＣ＿００１」に対応するデジタルスチルカメラでは、画像情報テーブル６０１と、撮影日時インデックス６０３とが、互いにデータベースページへの書き込みが共起する関係となる。
【００４６】
一方、「ＤＳＣ＿００１」に対応するデジタルカメラには、同行者情報テーブル６０２の情報を得るための機能がない。このため、「オブジェクトＩＤ＝４」の書き込み共起情報の先頭のビットの値は「０」となる。すなわち、「ＤＳＣ＿００１」に対応するデジタルカメラでは、「オブジェクトＩＤ＝４」の同行者情報テーブル６０２についての書き込みが行われない。よって、「ＤＳＣ＿００１」に対応するデジタルカメラでは、同行者情報テーブル６０２のデータベースページへの書き込みは、他のテーブルへの書き込みと共起しない。
【００４７】
図７（Ｃ）に示すように、「オブジェクトＩＤ＝４」の書き込み共起情報では、先頭のから４番目の桁の値だけが「１」である。よって、図７（Ｃ）、（Ｄ）に示すように、データベース利用環境が「共起パターンＩＤ＝ＰＣ＿０１」に対応するＰＣである場合にのみ、「オブジェクトＩＤ＝４」の同行者情報テーブル６０２への書き込みが他のテーブルへの書き込みと共起する。
【００４８】
図８は、本実施形態の画像撮影装置の動作の一例を説明するフローチャートである。このフローチャートは、ＣＰＵ１０１が制御プログラムを実行することにより実現される。
ステップＳ８０１において、ＣＰＵ１０１は、システムの初期化処理を行う。この初期化処理では、オペレーティングシステムの起動や、システムメニュー画面の表示等が行われる。
次に、ステップＳ８０２において、ＣＰＵ１０１は、イベント待機処理を行う。このイベント待機処理では、入力部１０４から何らかのイベントが発生するのをＣＰＵ１０１が待機する。イベントが発生すると、ステップＳ８０３において、ＣＰＵ１０１は、発生したイベントの種類を判別する。このイベントの種類に応じて、各種処理に処理が分岐する。ここでは、データベースへの画像メタデータの登録処理についての詳細な説明を行う。そこで、図８では、発生したイベントが、データ登録／更新／削除イベントである場合の処理と、データのコミットイベントである場合の処理とを分離して記載する。
【００４９】
発生したイベントが、データ登録／更新／削除イベントである場合には、ステップＳ８０４に進む。ステップＳ８０４に進むと、ＣＰＵ１０１は、画像メタデータの登録／更新／削除イベントに対応するイベント処理（データ登録／更新／削除処理）を行う。データ登録／更新／削除処理では、コンテンツ情報管理データベース１１１内の各種テーブルへのデータの登録／更新／削除が行われる。
【００５０】
発生したイベントが、データのコミットイベントである場合には、ステップＳ８０５に進む。ステップＳ８０５に進むと、ＣＰＵ１０１は、コミットイベント処理を行う。コミットイベント処理では、ステップＳ８０４で、登録／更新／削除されたデータをコミットするための処理が行われる。ステップＳ８０４での処理（データベースページやフラッシュメモリブロックの書き換えの処理）は、全てメモリ（ＲＡＭ１０３）での処理である。すなわち、ステップＳ８０４では、データベースファイルの書き換えは行わない。データベースファイルの書き換えは、ステップＳ８０５のコミットイベント処理で行われる。
データのコミットイベントについては、入力部１０４から直接発生させる必要はなく、ステップＳ８０４の処理から副次的に発生させてもよい。
【００５１】
発生したイベントが、データ登録／更新／削除イベントでも、データのコミットイベントでもなく、その他のイベントである場合には、ステップＳ８０６に進む。ステップＳ８０６に進むと、ＣＰＵ１０１は、発生したイベントに対応した各種イベント処理を行う。各種イベント処理では、システム及びアプリケーションの停止や、アプリケーションの実行途中状態の表示等、ステップＳ８０４、Ｓ８０５以外の複数の処理が行われる。
【００５２】
図９は、ステップＳ８０４のデータ登録／更新／削除処理の一例を詳細に説明するフローチャートである。
まず、ステップＳ９０１において、ＣＰＵ１０１は、データの登録、更新、及び削除の内容に応じて、データベースページの書き換えを行う。まず、ＣＰＵ１０１は、データベースのＢツリー構造３０１を辿ることによって、更新の対象となるデータベースページを特定する。次に、ＣＰＵ１０１は、特定したデータベースページ内の該当領域にあるデータを書き換える。尚、データベースページの中に、データを格納できる空き領域が存在しない場合、ＣＰＵ１０１は、データベースページを新たに確保し、確保したデータベースページにデータを格納する。
【００５３】
ステップＳ９０２において、ＣＰＵ１０１は、ステップＳ９０１でデータペースページを確保するためにフラッシュメモリブロックを新たに追加し、当該データページを格納するフラッシュメモリブロックを確保する必要があるか否かを判定する。ここでは、ＣＰＵ１０１は、新たにデータベースページを確保することにより、全てのデータベースページの合計のサイズが既存のフラッシュメモリブロックのサイズに収まるかどうかを判定する。全てのデータベースページの合計のサイズが既存のフラッシュメモリブロックのサイズに収まりきらないと判定された場合には、フラッシュメモリブロックを新たに追加する必要がある。この場合には、ステップＳ９０３に進む。
【００５４】
ステップＳ９０３に進むと、ＣＰＵ１０１は、空の（未使用の）フラッシュメモリブロックを２つ確保する。ここで、ステップＳ９０３の処理で確保される２つの空のフラッシュメモリブロックを、第２、第３の空きフラッシュメモリブロックと称する。
次に、ステップＳ９０４において、ＣＰＵ１０１は、書き込み共起ページの再配置処理を実行する。そして、図８のフローチャートに戻る。
ステップＳ９０２において、全てのデータベースページの合計のサイズが既存のフラッシュメモリブロックのサイズに収まると判定された場合には、フラッシュメモリブロックを新たに追加する必要はない。この場合には、ステップＳ９０５に進む。
ステップＳ９０５に進むと、ＣＰＵ１０１は、既存のフラッシュメモリブロックに、新規のデータベースページを格納して、既存のフラッシュメモリブロックを書き換える。そして、図８のフローチャートに戻る。
【００５５】
図１０は、ステップＳ９０４の書き込み共起ページの再配置処理の詳細の一例を説明するフローチャートである。
まず、ステップＳ１００１において、ＣＰＵ１０１は、再配置対象のデータベースページを取得する。具体的に、ＣＰＵ１０１は、前述のステップＳ９０２において、新たにデータベースページを確保するための空き領域がないと判定された既存のフラッシュメモリブロックに格納済みのデータベースページを１つ取得する。
【００５６】
次に、ステップＳ１００２において、ＣＰＵ１０１は、データベースを利用するデバイスの環境に基づいて、共起定義位置オフセットを取得する。具体的に、ＣＰＵ１０１は、共起パターンテーブル６０８より、データベース利用環境に応じて決まる「共起パターンＩＤ」を検索キーとして「共起定義位置オフセット」を取得する。「共起パターンＩＤ」は、データベースを利用する「デジタルカメラ、ＰＣ等のデバイス（データ処理装置）」が保持する情報を元に導出することが可能なパターン情報である。例えば、同じデジタルカメラというデバイスの種類であっても、そのデジタルカメラがＧＰＳ機能を内蔵しているか、していないかによって異なる共起パターンＩＤが指定される。
【００５７】
次に、ステップＳ１００３において、ＣＰＵ１０１は、以下の処理を行う。すなわち、ＣＰＵ１０１は、ステップＳ１００１で取得したデータベースページへの書き込みが、当該データベースページと同一のフラッシュメモリブロック内の「他のテーブル・インデックスのデータベースページ」への書き込みと共起するか否かを判定する。この判定は、ステップＳ１００２で取得した書き込み共起情報に基づいて行われる。
【００５８】
具体的に、ＣＰＵ１０１は、ステップＳ１００１で取得したデータベースページが持つオブジェクトＩＤをキーとして、前述のスキーマ管理テーブル６０７に格納されているレコードから、当該データベースページに対するオブジェクトのレコードを特定する。そして、ＣＰＵ１０１は、特定したレコードの「書き込み共起情報」を取得する。次に、ＣＰＵ１０１は、取得した「書き込み共起情報」から、ステップＳ１００２にて取得した「共起定義位置オフセット」に対応する桁の値を読み出す。前述したように、この値が「１」である場合には、ステップＳ１００１で取得したデータベースページへの書き込みが、当該データベースページと同一のフラッシュメモリブロック内の他のデータベースページへの書き込みと共起する関係となる。一方、この値が「０」である場合には、ステップＳ１００１で取得したデータベースページへの書き込みが、当該データベースページと同一のフラッシュメモリブロック内の他のデータベースページへの書き込みと共起する関係にはならない。
【００５９】
ステップＳ１００３の判定の結果、ステップＳ１００１で取得したデータベースページへの書き込みが、他のテーブル・インデックスのデータベースページへの書き込みと共起する場合には、ステップＳ１００４に進む。ステップＳ１００４に進むと、ＣＰＵ１０１は、ステップＳ９０３にて確保した一方の未使用のフラッシュメモリブロック（第２の空きフラッシュメモリブロック）にステップＳ１００１で取得した再配置対象のデータベースページを移動させる。ここでは、後でなるべく連続した空き領域を確保する為に、ＣＰＵ１０１は、デフラグ処理を行っても良い。そして、ステップＳ１００６に進む。
【００６０】
一方、ステップＳ１００３の判定の結果、ステップＳ１００１で取得したデータベースページへの書き込みが、他のテーブル・インデックスのデータベースページへの書き込みと共起しない場合には、ステップＳ１００５に進む。ステップＳ１００５に進むと、ＣＰＵ１０１は、ステップＳ９０３にて確保した他方の未使用のフラッシュメモリブロック（未使用の第３の空きフラッシュメモリブロック）にステップＳ１００１で取得した再配置対象のデータベースページを移動させる。そして、ステップＳ１００６に進む。
【００６１】
ステップＳ１００６に進むと、ＣＰＵ１０１は、再配置対象のデータベースページを含む既存のフラッシュメモリブロック内に未処理のデータベースページがまだ存在するか否かを判定する。この判定の結果、更新の対象となるデータベースページを含む既存のフラッシュメモリブロック内に未処理のデータベースページが存在する場合には、ステップＳ１００１に進む。そして、未処理のデータベースページについてステップＳ１００１以降の処理を行う。こうして、更新の対象となるデータベースページを含む既存のフラッシュメモリブロック内に未処理のデータベースページが存在しなくなると、図９のフローチャートに戻る。
【００６２】
以上のように本実施形態では、データの登録／更新／削除を行うために新たにデータベースページを確保すると、データベースページが既存のフラッシュメモリブロックのサイズに収まらない場合、未使用の第２、第３の空きフラッシュメモリブロックを確保する。当該既存のフラッシュメモリブロック内のデータベースページのうち、他のテーブル・インデックスのデータベースページへの書き込みと共起するデータベースページを第２の空きフラッシュメモリブロックに移動する。一方、当該既存のフラッシュメモリブロック内のデータベースページのうち、他のテーブル・インデックスのデータベースページへの書き込みと共起しないデータベースページを第３の空きフラッシュメモリブロックに移動する。
したがって、書き換えの対象となるデータが、単一のフラッシュメモリブロックに閉じて存在する可能性を高めることができる。これにより、その後のデータ書き込み処理において、書き換えの対象となるデータが存在する最小限のフラッシュメモリブロックのみに対して、消去・書き込みを行うことが可能になる（フラッシュメモリブロックの不要な書き換えを軽減することができる）。結果的に、データベースへの書き込み処理を高速化することができる。更には書き込み回数に上限のあるフラッシュメモリの長寿命化やデバイスの電力消費量の低減にもつながる。このように、本実施形態では、フラッシュメモリに配置したデータベースに対する書き込み処理を、特別なファイルシステムを用いることなく高速に実行できる
【００６３】
（変形例）
本実施形態では、テーブル・インデックス同士で、データベースページへの書き込みが共起する関係にあるかどうかを、データベースの利用環境（デバイスの機能）に応じて決定するようにした。しかしながら、互いに書き込みが共起する関係性を持つデータベースページを判別することができれば、必ずしもこのようにする必要はない。例えば、図７（Ａ）に示す画像情報テーブル６０１の「撮影日時」に付与されたインデックスと、「撮影日時」及び「撮影場所」を連結した複合インデックスとを作成する。これらは、互いに異なるインデックスとして存在する。しかしながら、これらは、画像情報テーブル６０１の同一の「撮影場所」カラムに付与されたインデックスである。そこで、これらのインデックスへのデータの書き込みは互いに共起する関係にあるとして定義しても良い。このような共起関係の有無は、テーブルのスキーマ情報から機械的に判定することが可能である。このため、アプリケーションの開発者が事前に共起関係を定義しておく作業負荷を軽減することができる。
【００６４】
また、本実施形態では、書き込み共起判定手段を、共起関係の有無により定まる２値のビット（書き込み共起情報及び共起定義位置オフセット）で定義した。しかしながら、必ずしも、このような情報で書き込み共起判定手段を定義する必要はない。例えば、テーブル・インデックスに格納されるデータ間の書き込みが共起するレベルをユーザの利用頻度を分析することで得られる数段階の数値で表現しても良い。こうして得たレベルを共起度とする書き込み共起判定手段を定義しても良い。これにより、例えば、画像のメタデータを書き込む際に、「イベント」情報と「同行者」情報との双方への書き込みが共起するが、「同行者」情報に関する書き込みの方が、「イベント」情報に関する書き込みよりも共起度が高いと推測することができる。これにより、柔軟な共起判定が可能となり、ユーザの用途に対して最適に高速化を行ったデータベースの書き込み処理を実現することができる。例えば、共起度の値が閾値より大きいである場合に、書き込みが共起すると判定し、共起度の値が閾値未満である場合に、書き込みが共起しないと判定することができる。また、共起度の値が大きいものから第２の空きフラッシュメモリブロックに優先的に移動させることもできる。
【００６５】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００６６】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【符号の説明】
【００６７】
１０１  ＣＰＵ、１０３  ＲＡＭ、１０８  リムーバブル記憶装置
【図１】
2013037587.tif 000003
【図２】
2013037587.tif 000004
【図３】
2013037587.tif 000005
【図４】
2013037587.tif 000006
【図５】
2013037587.tif 000007
【図６】
2013037587.tif 000008
【図７】
2013037587.tif 000009
【図８】
2013037587.tif 000010
【図９】
2013037587.tif 000011
【図１０】
2013037587.tif 000012