(57)【特許請求の範囲】
【請求項１】
固定長フォーマットおよび可変長フォーマットのいずれかのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得するデータ長取得部と、
（ａ）記憶容量の削減を優先するようユーザから入力部を介して指示されると、前記データ長取得部により取得された複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、（ｂ）アクセス速度の向上を優先するようユーザから前記入力部を介して指示されると、前記複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測データアクセス平均時間を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、または（ｃ）記憶容量の削減とアクセス速度の向上の両者を総合的に勘案するようユーザから前記入力部を介して指示されると、前記予測所要記憶容量および前記予測データアクセス平均時間を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する変更判定部と、
前記変更判定部の判定結果に応じて、前記記憶装置のフォーマットを前記他のフォーマットに変更するフォーマット部と、
を備えたデータベース装置。
【請求項２】
前記変更判定部は、
記憶容量の削減を優先するようユーザから前記入力部を介して指示されるとともに前記記憶装置の現在のフォーマットが固定長フォーマットであると、前記データ長取得部により取得された複数のデータ長の平均値を求め、この平均値にもとづいて前記記憶装置のフォーマットを可変長フォーマットとした場合における予測所要ページ数を求め、この予測所要ページ数と現在のページ数とを比較し、記憶容量が削減されるか否かの観点で前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項１記載のデータベース装置。
【請求項３】
前記変更判定部は、
記憶容量の削減を優先するようユーザから前記入力部を介して指示されるとともに前記記憶装置の現在のフォーマットが可変長フォーマットであると、前記データ長取得部により取得された複数のデータ長の最大値を求め、この最大値にもとづいて前記記憶装置のフォーマットを固定長フォーマットとした場合における予測所要ページ数を求め、この予測所要ページ数と現在のページ数とを比較し、記憶容量が削減されるか否かの観点で前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項１記載のデータベース装置。
【請求項４】
前記変更判定部は、
アクセス速度の向上を優先するよう記憶容量の削減を優先するようユーザから前記入力部を介して指示されると、前記記憶装置のフォーマットを固定長フォーマットとした場合の第１の予測データアクセス平均時間および前記記憶装置のフォーマットを可変長フォーマットとした場合の第２の予測データアクセス平均時間をもとめ、これらの予測データアクセス平均時間を比較し、アクセス速度が向上するか否かの観点で前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項２または３に記載のデータベース装置。
【請求項５】
前記変更判定部は、
記憶容量の削減とアクセス速度の向上の両者を総合的に勘案するようユーザから前記入力部を介して指示されると、前記現在のページ数と前記予測所要ページ数との差および前記第１の予測データアクセス平均時間と前記第２の予測データアクセス平均時間との差を変数とする式を用いて記憶容量の削減とアクセス速度の向上の両者を総合的に勘案した改善度を求め、この改善度に応じて前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項４記載のデータベース装置。
【請求項６】
固定長フォーマットおよび可変長フォーマットのいずれか１つのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得するステップと、
（ａ）記憶容量の削減を優先するようユーザから入力部を介して指示されると、前記取得された複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、（ｂ）アクセス速度の向上を優先するようユーザから前記入力部を介して指示されると、前記複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測データアクセス平均時間を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、または（ｃ）記憶容量の削減とアクセス速度の向上の両者を総合的に勘案するようユーザから前記入力部を介して指示されると、前記予測所要記憶容量および前記予測データアクセス平均時間を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定するステップと、
前記他のフォーマットに変更すると判定されると、前記記憶装置のフォーマットを前記他のフォーマットに変更するステップと、
を有するデータベース装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース装置およびデータベース装置の制御方法に関する。
【背景技術】
【０００２】
最近、記憶装置を有するデータベース装置は、いわゆる組み込み機器に備えられるようになってきている。組み込み機器では、省スペースと高速性能を求められる。このため、記憶装置に記憶されるデータが記憶装置内で占有する容量を節約するための技術やデータへのアクセス速度を向上させるための種々の技術が開発されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特願２００９−４８４９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、従来のこの種の技術は、データを記憶する記憶装置の容量を節約する、あるいはデータへのアクセス速度を向上させるために、記憶装置の内容を別の記憶装置にコピーしておくようになっており、複数のボリュームが必要となってしまう。
【０００５】
また、固定長フォーマットと可変長フォーマットのいずれのフォーマットを採用するかは、記憶装置を使用する前に決定しておかなければならない。しかし、記憶装置が使用されてデータの記録が進むと、データの内容によっては当初決定したフォーマットが必ずしも現状に適したフォーマットであるとはいえなくなる場合がある。
【課題を解決するための手段】
【０００６】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、データ長取得部と、変更判定部と、フォーマット部と、を備える。データ長取得部は、固定長フォーマットおよび可変長フォーマットのいずれかのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得する。変更判定部は、（ａ）記憶容量の削減を優先するようユーザから入力部を介して指示されると、データ長取得部により取得された複数のデータ長の情報にもとづいて記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量を求めることにより記憶装置のフォーマットを他のフォーマットに変更するか否かを判定する、（ｂ）アクセス速度の向上を優先するようユーザから入力部を介して指示されると、複数のデータ長の情報にもとづいて記憶装置のフォーマットを他のフォーマットとした場合における予測データアクセス平均時間を求めることにより記憶装置のフォーマットを他のフォーマットに変更するか否かを判定する、または（ｃ）記憶容量の削減とアクセス速度の向上の両者を総合的に勘案するようユーザから入力部を介して指示されると、予測所要記憶容量および予測データアクセス平均時間を求めることにより記憶装置のフォーマットを他のフォーマットに変更するか否かを判定する。フォーマット部は、変更判定部の判定結果に応じて、記憶装置のフォーマットを他のフォーマットに変更する。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態に係るデータベース装置の一例を示す全体構成図。
【図２】固定長フォーマットおよび可変長フォーマットのデータ長の一例を示す説明図。
【図３】固定長フォーマットおよび可変長フォーマットの１ファイルの論理構造の一例を示す説明図。
【図４】可変長フォーマットのページツリー構造の一例を示す説明図。
【図５】データベースエンジンの詳細な構成の一例を示すブロック図。
【図６】図１に示すデータベース装置のＣＰＵにより、主記憶装置の使用が開始された後に、主記憶装置の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャート。
【図７】図６のステップＳ５で見積もり部により実行される予測所要ページ数の算出処理（サイズ予測処理）の手順の一例を示すサブルーチンフローチャート。
【図８】図６のステップＳ６で見積もり部により実行される予測データアクセス平均時間の算出処理（速度予測処理）の手順の一例を示すサブルーチンフローチャート。
【図９】キャッシュメモリと主記憶装置との関係を示す説明図。
【図１０】可変長フォーマットから固定長フォーマットへ段階的にフォーマット変更を行う場合において、ＩＤ１〜ＩＤ９０のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図。
【図１１】図１０に示す例のあと、さらにＩＤ１２０のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図。
【図１２】（ａ）は、ユーザにより現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出を要求された際の表示画像の一例を示す説明図、（ｂ）は、ユーザによりフォーマットの変更を要求された際の表示画像の一例を示す説明図。
【発明を実施するための形態】
【０００８】
本発明に係るデータベース装置およびデータベース装置の制御方法の実施の形態について、添付図面を参照して説明する。
【０００９】
図１は、本発明の一実施形態に係るデータベース装置１０の一例を示す全体構成図である。
【００１０】
データベース装置１０は、図１に示すように、データベースエンジン１１、表示部１２および入力部１３および主記憶装置１４を有する。
【００１１】
データベースエンジン１１は、主制御部２１と、固定長エンジン２２と、第１可変長エンジン２３と、第２可変長エンジン２４とを有する。
【００１２】
主制御部２１は、ＣＰＵ３１および記憶部３２を有する。記憶部３２は、キャッシュメモリ３３と、不揮発性の記憶媒体により構成された不揮発性記憶部３４を有する。
【００１３】
固定長エンジン２２、第１可変長エンジン２３および第２可変長エンジン２４は、いわゆるストレージエンジンである。固定長エンジン２２、第１可変長エンジン２３および第２可変長エンジン２４は、たとえば、それぞれ主制御部２１のＣＰＵ３１が不揮発性記憶部３４に記憶されたプログラムを実行することにより実現される機能実現部として構成されてもよいし、それぞれＣＰＵ、ＲＡＭ、ＲＯＭなどを有するいわゆるワンチップマイクロコントローラにより構成されてもよい。なお、ＣＰＵ３１の機能実現部として構成される場合、見積もり式５１、６１および７１は、たとえば記憶部３２に記憶されていればよい。
【００１４】
表示部１２は、たとえば液晶ディスプレイやＯＬＥＤ（Organic Light Emitting Diode）ディスプレイなどの一般的な表示出力装置により構成され、主制御部２１の制御に従って各種情報を表示する。
【００１５】
入力部１３は、たとえばキーボード、タッチパネル、テンキーなどの一般的な入力装置により構成され、ユーザの操作に対応した操作入力信号を主制御部２１に出力する。
【００１６】
主記憶装置１４は、磁気的もしくは光学的記録媒体または半導体メモリなどのＣＰＵ３１により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【００１７】
主記憶装置１４は、データベースエンジン１１により固定長フォーマットおよび可変長フォーマットのいずれか１つのフォーマットでデータを記録される。
【００１８】
図２は、固定長フォーマットおよび可変長フォーマットのデータ長の一例を示す説明図である。
【００１９】
図２に示すように、固定長フォーマットでは、各データが格納されるレコードの長さ（レコード長）が、各データの長さ（データ長）によらず同一とされる。このため、各データのアドレスを容易に検索することが可能であるという利点がある一方、レコード長をデータ長の最大値よりも大きくする必要があるため、データ長のばらつきが大きくなるほど無駄な容量を必要とするという欠点がある。
【００２０】
他方、可変長フォーマットでは、各データのデータ長にあわせてレコード長を変更する。このため、データ長のばらつきによらず記憶容量を無駄なく利用できるという利点がある一方、各データのアドレスを検索するためにポインタを参照する必要があるという欠点がある。
【００２１】
図３は、固定長フォーマットおよび可変長フォーマットの１ファイルの論理構造の一例を示す説明図である。
【００２２】
固定長フォーマットおよび可変長フォーマットとも、１ファイルは、複数のページによって構成されるとともに、各ページは一定のサイズを有する。換言すれば、この一定のページサイズとページ数を乗じることでそのファイルのサイズを得ることができる。
【００２３】
データベースエンジン１１は、ページ単位でフォーマットを管理する。このページ単位のフォーマットの情報は、テーブルヘッダに記録されている。データベースエンジン１１は、ページにアクセスする際に、まずテーブルヘッダから各ページのフォーマットの情報を取得する。
【００２４】
可変長フォーマットの各ページのポインタは、自身のページ内のレコードを指すポインタのほか、図３に示すように、他のページを指すポインタを有する場合がある。
【００２５】
図４は、可変長フォーマットのページツリー構造の一例を示す説明図である。
【００２６】
可変長フォーマットでは、他のページを指すポインタを有するページ（以下、枝ページという）のポインタをたどることで、他のページを指すポインタを有さないページ（以下、葉ページという）にたどり着けるようになっている。枝ページは、図４に示すように階層構造を有してもよい。
【００２７】
このため、可変長フォーマットでは、読出し速度の速いキャッシュメモリ３３に枝ページのデータを持っておくことで所望のデータへのアクセス時間を短縮することができる。
【００２８】
固定長フォーマットおよび可変長フォーマットは、それぞれ利点と欠点がある。このため、初期設定としていずれか一方のフォーマットを採用した場合、主記憶装置１４へのデータの蓄積やデータの更新が進むと、当初採用したフォーマットではなく他方のフォーマットのほうが、利便性が高くなる場合がある。
【００２９】
そこで、本実施形態に係るデータベース装置１０は、記憶容量（ページ数）およびデータアクセス平均時間のそれぞれについて指標化することで各フォーマットの利便性を評価し、主記憶装置１４へのデータの蓄積やデータの更新が進んだ後でも、記憶装置の容量を節約するあるいはデータへのアクセス速度を向上させるために最も適したフォーマットに主記憶装置１４の各ページのフォーマットを変更する。
【００３０】
図５は、データベースエンジン１１の詳細な構成の一例を示すブロック図である。
【００３１】
主制御部２１のＣＰＵ３１は、不揮発性記憶部３４に記憶されたプログラムおよびこのプログラムの実行のために必要なデータをキャッシュメモリ３３へロードし、このプログラムに従って、主記憶装置１４の使用が開始された後に、主記憶装置１４の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する処理を実行する。
【００３２】
キャッシュメモリ３３は、ＣＰＵ３１が実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。また、キャッシュメモリ３３は、主記憶装置１４に記憶されたデータの一部を一時的に記憶する。
【００３３】
不揮発性記憶部３４は、データベース装置１０の起動プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【００３４】
なお、不揮発性記憶部３４は、磁気的もしくは光学的記録媒体または半導体メモリなどの、ＣＰＵ３１により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【００３５】
ＣＰＵ３１は、プログラムによって、少なくともアクセス内容解析部４１、読み書き部４２、データ長取得部４３、最大・平均算出部４４、見積もり部４５および変更判定部４６として機能する。この各部４１〜４６は、キャッシュメモリ３３の所要のワークエリアをデータの一時的な格納場所として利用する。
【００３６】
固定長エンジン２２は、見積もり式５１を記憶しているとともに、フォーマット部５２を有する。
【００３７】
見積もり式５１は、主記憶装置１４が固定長フォーマット以外のフォーマットである場合に、主記憶装置１４のフォーマットを固定長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。
【００３８】
フォーマット部５２は、変更判定部４６により制御されて、主記憶装置１４のフォーマットをページごとに固定長フォーマットに変更する機能を有する。
【００３９】
第１可変長エンジン２３は、見積もり式６１を記憶しているとともに、フォーマット部６２を有する。見積もり式６１は、主記憶装置１４が第１可変長フォーマット以外のフォーマットである場合に、主記憶装置１４のフォーマットを第１可変長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。フォーマット部６２は、変更判定部４６により制御されて、主記憶装置１４のフォーマットをページごとに第１可変長フォーマットに変更する機能を有する。
【００４０】
第２可変長エンジン２４は、見積もり式７１を記憶しているとともに、フォーマット部７２を有する。見積もり式７１は、主記憶装置１４が第１可変長フォーマットとは異なる第２可変長フォーマット以外のフォーマットである場合に、主記憶装置１４のフォーマットを第２可変長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。フォーマット部７２は、変更判定部４６により制御されて、主記憶装置１４のフォーマットをページごとに第２可変長フォーマットに変更する機能を有する。
【００４１】
なお、第１可変長フォーマットおよび第２可変長フォーマットは、ともに可変長フォーマットでありレコード長をデータ長にあわせて変更する点で共通するが、ポインタの仕様など互いに相違する点があるものとする。また、本実施形態では第１可変長フォーマットおよび第２可変長フォーマットの２種の可変長フォーマットをあつかう場合の例について示すが、１種であっても、また３種以上であっても、いずれの場合でも、データベースエンジン１１は、各フォーマットに対応した見積もり式およびフォーマット部を有するエンジンを備えていればよい。
【００４２】
アクセス内容解析部４１は、各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受けるごとに（アクセスがあるごとに）、アクセス内容を解析する。たとえばアクセスがＳＱＬ文を用いて行われる場合、アクセス内容解析部４１は、ＳＱＬ文からアクセス内容を解析する。
各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部１００は、データベース装置１０に対し、主記憶装置１４に記憶されたデータに対するアクセス要求を行う。アクセス部１００は、たとえばデータベース装置１０を内包するパーソナルコンピュータなどの情報処理装置のＣＰＵが各種アプリケーションプログラムを実行することにより実現されてもよいし、データベース装置１０にネットワークを介して接続された外部のパーソナルコンピュータなどの情報処理装置のＣＰＵが各種アプリケーションプログラムを実行することにより実現されてもよい。
【００４３】
読み書き部４２は、アクセス内容に応じて主記憶装置１４に対してデータの読み書きを行うとともに、必要に応じてデータをキャッシュメモリ３３に格納する。
【００４４】
データ長取得部４３は、アクセスがあるごとに、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるデータのデータ長の情報を取得して最大・平均算出部４４に与える。たとえば、アクセスがＳＱＬ文を用いて行われる場合、アクセス内容解析部４１は、ＳＱＬ文からデータ長の情報を抽出する。このとき、ＳＱＬ文そのものを最大・平均算出部４４に与える必要はない。
【００４５】
最大・平均算出部４４は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４に記憶されたこれまでのアクセスにおけるデータ長の平均値および最大値の情報を読みだす。そして、データ長取得部４３から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新するとともに、データ長取得部４３から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の最大値とを比較していずれか大きいほうを現在の最大値として記憶部３２の最大値を更新する。
【００４６】
見積もり部４５は、記憶部３２からデータ長の現在の平均値および現在の最大値の情報を取得する。そして、現在のフォーマット（たとえば固定長フォーマット）とは異なる他のフォーマット（たとえば第１可変長フォーマットおよび第２可変長フォーマット）の見積もり式（たとえば見積もり式６１および７１）を用いて、データ長の現在の平均値および現在の最大値にもとづいて主記憶装置１４のフォーマットを現在のフォーマットとは異なる他のフォーマットとした場合における予測所要ページ数を求める。また、見積もり部４５は、データ長の現在の平均値および現在の最大値にもとづいて見積もり式５１、６１および７１を用いて各フォーマットにおける予測データアクセス平均時間を算出する。
【００４７】
変更判定部４６は、現在のページ数と、見積もり部４５により求められた予測所要ページ数と予測データアクセス平均時間とにもとづいて、主記憶装置１４のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する。判定結果のフォーマットが現在のフォーマットと異なる場合は、変更判定部４６は、主記憶装置１４のフォーマットを判定結果のフォーマットに変更するようフォーマット部５２、６２および７２のいずれかに指示する。
【００４８】
なお、主記憶装置１４に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合には、変更判定部４６は、主記憶装置１４のフォーマットを変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を一旦記憶部３２に格納しておくとよい。この場合、変更判定部４６は、たとえばあらかじめ定めた所定のタイミング（たとえば主記憶装置１４の断片化を解消するための再編成を実行するタイミングなど）やユーザによる入力部１３を介したフォーマット変更指示をうけたタイミングで、記憶部３２にフォーマットを変更すべき旨の情報が格納されているか否かを確認し、格納されていれば、どのフォーマットに変更するかを示す情報に応じてフォーマット部５２、６２および７２のいずれかに主記憶装置１４のフォーマットを変更するよう指示するとよい。
【００４９】
次に、本実施形態に係るデータベース装置およびデータベース装置の制御方法の動作の一例について説明する。
【００５０】
図６は、図１に示すデータベース装置１０のＣＰＵ３１により、主記憶装置１４の使用が開始された後に、主記憶装置１４の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャートである。図６において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００５１】
この手順は、アクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受けた時点でスタートとなる。
【００５２】
まず、ステップＳ１において、アクセス内容解析部４１は、アクセス部１００から主記憶装置１４に記憶されたデータに対するアクセス要求を受け、アクセス内容を解析する。
【００５３】
次に、ステップＳ２において、データ長取得部４３は、アクセス内容解析部４１により解析されたアクセス内容から今回アクセスされるデータのデータ長の情報を取得して最大・平均算出部４４に与える。
【００５４】
次に、ステップＳ３において、最大・平均算出部４４は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４に記憶されたこれまでのアクセスにおけるデータ長の平均値を読みだす。そして、データ長取得部４３から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の平均値とを平均して新たに現在の平均値を算出して記憶部３２の平均値を更新する。
【００５５】
次に、ステップＳ４において、最大・平均算出部４４は、記憶部３２のキャッシュメモリ３３または不揮発性記憶部３４に記憶されたこれまでのアクセスにおけるデータ長の最大値の情報を読みだす。そして、データ長取得部４３から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の最大値とを比較していずれか大きいほうを現在の最大値として記憶部３２の最大値を更新する。
【００５６】
次に、ステップＳ５において、見積もり部４５は、記憶部３２からデータ長の現在の平均値または現在の最大値の情報を取得し、現在のフォーマットとは異なる他のフォーマットの見積もり式を用いて、主記憶装置１４のフォーマットを現在のフォーマットとは異なる他のフォーマットとした場合における予測所要ページ数を求める。
【００５７】
次に、ステップＳ６において、見積もり部４５は、記憶部３２からデータ長の現在の平均値および現在の最大値の情報を取得し、見積もり式５１、６１および７１を用いて各フォーマットにおける予測データアクセス平均時間を算出する。
【００５８】
次に、ステップＳ７において、変更判定部４６は、現在のページ数と、見積もり部４５により求められた予測所要ページ数と予測データアクセス平均時間とにもとづいて、主記憶装置１４のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する。そして、判定結果のフォーマットが現在のフォーマットと異なるか否かをもって、主記憶装置１４のフォーマットを判定結果のフォーマットに変更すべきか否かを判定する。
【００５９】
フォーマットを変更すべき場合は、変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を記憶部３２に格納する（ステップＳ８）。その後、所定のタイミングで記憶部３２にフォーマットを変更すべき旨の情報が格納されていることを確認し、どのフォーマットに変更するかを示す情報に応じてフォーマット部５２、６２および７２のいずれかに主記憶装置１４のフォーマットを変更するよう指示し、フォーマット部５２、６２および７２のいずれかによって主記憶装置１４のフォーマットが変更される（ステップＳ９）。一方、フォーマットを変更すべきでない場合（ステップＳ７のＮＯ）、すなわち現在のフォーマットが最も利便性が高い場合は、一連の手順は終了となる。
【００６０】
なお、ステップＳ８は、主記憶装置１４に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合に実行されるとよいが、実行されずともよい。ステップＳ８を実行しない場合は、変更判定部４６は、主記憶装置１４のフォーマットを変更すべきと判定すると、速やかにフォーマット部５２、６２および７２のいずれかにフォーマットを変更するよう指示し、ステップＳ９に移行する。
【００６１】
以上の手順により、主記憶装置１４の使用が開始された後に、主記憶装置１４の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【００６２】
図７は、図６のステップＳ５で見積もり部４５により実行される予測所要ページ数の算出処理（サイズ予測処理）の手順の一例を示すサブルーチンフローチャートである。
【００６３】
なお、図７に示す手順において、第２可変長フォーマットに係る説明は第１可変長フォーマットに係る説明と重複するため、説明を省略する。
【００６４】
ステップＳ５１において、見積もり部４５は、現在のフォーマットが固定長フォーマットであるか否かを判定する。
【００６５】
固定長フォーマットである場合は（ステップＳ５１のＹＥＳ）、ステップＳ５２において、見積もり部４５は、記憶部３２からデータ長の現在の平均値の情報を取得し、見積もり式６１を用いて第１可変長フォーマットでの予測所要ページ数Ｐ２を求める。
【００６６】
予測所要ページ数Ｐ２に係る見積もり式６１は、たとえば次のように書ける。
Ｐ２＝Ｒｏｗ数／（ページサイズ／（Ｘ＋ｂ））                      （１）
ただし、Ｘはデータ長の現在の平均値を、ｂはポインタなどの
オーバーヘッドを、それぞれ表す。
【００６７】
一方、第１可変長フォーマットおよび第２可変長フォーマットのいずれかである場合は（ステップＳ５１のＮＯ）、ステップＳ５３において、見積もり部４５は、記憶部３２からデータ長の現在の最大値の情報を取得し、見積もり式５１を用いて固定長フォーマットでの予測所要ページ数Ｐ１を求める。
【００６８】
予測所要ページ数Ｐ１に係る見積もり式５１は、たとえば次のように書ける。
Ｐ１＝Ｒｏｗ数／（ページサイズ／Ｚ）                            （２）
ただし、Ｚはデータ長の現在の最大値を表す。
【００６９】
以上の手順により、現在のフォーマットと異なる他のフォーマットとした場合の予測所要ページ数Ｐ１またはＰ２を求めることができる。
【００７０】
図８は、図６のステップＳ６で見積もり部４５により実行される予測データアクセス平均時間の算出処理（速度予測処理）の手順の一例を示すサブルーチンフローチャートである。なお、図８に示す手順において、第２可変長フォーマットに係る説明は第１可変長フォーマットに係る説明と重複するため、説明を省略する。
【００７１】
ステップＳ６１において、見積もり部４５は、たとえばテーブルヘッダなどから現在のページ数の情報を取得するとともに、図７のステップＳ５３またはＳ５２で求めた予測所要ページ数Ｐ１またはＰ２を取得する。
【００７２】
なお、現在のフォーマットが固定長フォーマットである場合には、図７のステップＳ５２で求めた予測所要ページ数Ｐ２をそのままＰ２としてあつかうとともに現在のページ数をＰ１としてあつかい、現在のフォーマットが第1の可変長フォーマットである場合には、図７のステップＳ５３で求めた所要ページ数Ｐ１をそのままＰ１としてあつかうとともに現在のページ数をＰ２としてあつかう。
【００７３】
次に、ステップＳ６２において、見積もり部４５は、主記憶装置１４のフォーマットが固定長フォーマットである場合における予測データアクセス平均時間Ｓ１を求める。
【００７４】
図９は、キャッシュメモリ３３と主記憶装置１４との関係を示す説明図である。
【００７５】
主記憶装置１４に記憶されたデータのうち、一部のデータはキャッシュメモリ３３に保持される。キャッシュメモリ３３のアクセス時間Ｍは、一般に、主記憶装置１４のアクセス時間Ｄよりも非常に短くてすむ。
【００７６】
ページ数Ｐ１のうちのキャッシュメモリ３３にキャッシュされるデータ量Ｃの割合としてのキャッシュヒット率ｈ１は、ｈ１＝Ｃ／Ｐ１と書ける。このとき、予測データアクセス平均時間Ｓ１に係る見積もり式５１は、たとえば次のように書ける。
Ｓ１＝ｈ１＊Ｍ＋（１−ｈ１）＊Ｄ                                （３）
【００７７】
次に、ステップＳ６３において、見積もり部４５は、主記憶装置１４のフォーマットが第１可変長フォーマットである場合における予測データアクセス平均時間Ｓ１を求める。
【００７８】
ページ数Ｐ２のうちのキャッシュメモリ３３にキャッシュされるデータ量Ｃの割合としてのキャッシュヒット率ｈ２は、たとえばｈ２＝Ｃ／Ｐ２と書ける。可変長フォーマットにおける枝の深さ（図４参照）をＥとし、ページ内の探索時間をＡとすると、予測データアクセス平均時間Ｓ２に係る見積もり式６１は、たとえば次のように書ける。
Ｓ２＝Ｅ＊（ｈ２＊Ｍ＋（１−ｈ２）＊Ｄ）＋Ａ                （４）
【００７９】
なお、α＝Ｐ１／Ｐ２とすれば、ｈ２＝Ｃ／Ｐ２＝α＊ｈ１より、式（４）は次のように変形できる。
Ｓ２＝Ｅ＊（α＊ｈ１＊Ｍ＋（１−α＊ｈ１）＊Ｄ）＋Ａ        （５）
【００８０】
可変長フォーマットでは、葉ページよりも枝ページのほうが参照される頻度が高くなる。そこで、枝ページを優先的にキャッシュメモリ３３に割り当てるようにすることで、データアクセス時間を短縮することができると期待される。枝ページのページ数をＰ２Ｅとし、ページ数Ｐ２をＰ２＋Ｐ２Ｅで置き換える（Ｐ２→Ｐ２＋Ｐ２Ｅ）と、枝ページ数Ｐ２Ｅがキャッシュ量Ｃより小さければ、キャッシュヒット率ｈ２はｈ２＝（Ｃ−Ｐ２Ｅ）／Ｐ２となる。このとき、予測データアクセス平均時間Ｓ２に係る見積もり式６１は、たとえば次のように書ける。
Ｓ２＝（Ｅ−１）＊Ｍ＋（ｈ２＊Ｍ＋（１−ｈ２）＊Ｄ）＋Ａ        （６）
【００８１】
式（４）と式（６）を比較して明らかなように、枝ページを優先的にキャッシュメモリ３３に割り当てる場合、枝の深さＥはキャッシュヒット率ｈ２に乗じられないため、よりデータアクセス平均時間を速めることができる。
【００８２】
以上の手順により、予測所要データアクセス平均時間Ｓ１およびＳ２を求めることができる。
【００８３】
ここで、図６のステップＳ７で変更判定部４６により実行される、主記憶装置１４のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する処理の具体例について説明する。
【００８４】
ユーザは、主記憶装置１４内のデータの記憶容量を削減することを優先したいと所望する場合もあれば、データへのアクセス速度を優先したいと所望する場合もある。また、記憶容量の削減とアクセス速度の向上の両者を総合的に勘案したいと所望する場合もある。この種のユーザの所望は、ユーザにより入力部１３を介してデータベースエンジン１１に与えられてもよい。
【００８５】
たとえば、記憶容量の削減を優先する場合は、変更判定部４６は、現在のページ数と、式（１）または式（２）により算出された予測所要ページ数とを比較し、現在のページ数のほうが予測所要ページ数よりも大きいと、主記憶装置１４のフォーマットを変更すべきと判定する。
【００８６】
なお、この場合、変更判定部４６は、現在のページ数と、式（１）または式（２）により算出された予測所要ページ数とを比較し、現在のページ数のほうが予測所要ページ数よりも大きく、かつ互いのページ数の差が所定の閾値よりも大きい場合に、主記憶装置１４のフォーマットを変更すべきと判定してもよい。所定の閾値を用いる場合、互いのページ数の差が小さい場合に頻繁に大小が入れ替わることによりフォーマット変更が繰り返されてしまう弊害を未然に防ぐことができる。また、互いのページ数の差に代えて、たとえば現在のページ数に所定の数値（たとえば０．６など）を乗じた数が予測所要ページ数よりも大きい場合に、主記憶装置１４のフォーマットを変更すべきと判定してもよい。
【００８７】
また、たとえばデータアクセス速度を優先する場合は、変更判定部４６は、式（４）と式（６）（または式（７））で算出された予測データアクセス平均時間Ｓ１とＳ２とを比較し、現在のフォーマットより他のフォーマットの予測データアクセス平均時間のほうが短いとき、主記憶装置１４のフォーマットを変更すべきと判定する。
【００８８】
現在のフォーマットが固定長データベースである場合の例を用いてより具体的に説明する。この場合、Ｓ１＞Ｓ２の場合、すなわち可変長データベースにおける予測データアクセス平均時間Ｓ２のほうが固定長データベースにおける予測データアクセス平均時間Ｓ１より短い場合、フォーマットを変更すべきと判定するとよいが、より好ましくは、変更判定部４６は、ｈ１とｈ２の関係によってさらに次の３つの場合に分けて動作するとよい。
【００８９】
第１の場合は、キャッシュヒット率ｈ１！＝１かつｈ２！＝１の場合である。この場合、次の式（７）が満たされると、変更判定部４６は、主記憶装置１４のフォーマットを変更すべきと判定する。
ｈ1＊Ｍ＋（1−ｈ1）＊Ｄ＞Ｅ＊（α＊ｈ1＊Ｍ＋（1−α＊ｈ1）＊Ｄ）＋Ａ  （７）
この式（７）は、式（３）と式（５）を比較した式である。
【００９０】
第２の場合は、ｈ１！＝１かつｈ２＝１の場合である。この場合、次の式（８）が満たされると、変更判定部４６は、主記憶装置１４のフォーマットを変更すべきと判定する。
ｈ1＊Ｍ＋（1−ｈ1）＊Ｄ＞Ｅ＊Ｍ＋Ａ                                  （８）
【００９１】
この式（８）は、式（７）にα＊ｈ１＝ｈ２＝１を代入した式である。
【００９２】
第３の場合は、ｈ１＝１の場合である。この場合、ｈ２＝１であってもｈ２！＝１であっても常にＳ１＜Ｓ２となるため、変更判定部４６は、主記憶装置１４のフォーマットを変更すべきではないと判定する（ステップＳ７のＮＯ）。
【００９３】
また、たとえば記憶容量の削減とアクセス速度の向上の両者を総合的に勘案する場合は、変更判定部４６は、次の改善度の指標を示す式（９）を用いてフォーマット変更判定を行う。なお、式（９）には現在のフォーマットが固定長フォーマットである場合の改善度の指標を示す式の例である。
【００９４】
改善度＝β（現在のページ数Ｐ１−予測ページ数Ｐ２）＋γ＊（Ｓ１−Ｓ２） （９）
【００９５】
式（９）において、βおよびγの値は、頻繁なフォーマット変更が生じないように設定されるとよい。また、βおよびγはユーザによって入力部１３を介して指定されてもよい。たとえば、変更判定部４６は、式（９）で表される改善度が正であると、主記憶装置１４のフォーマットを変更すべきと判定する。
【００９６】
次に、図６のステップＳ９でフォーマット部５２、６２および７２のいずれかにより実行される、主記憶装置１４のフォーマット変更方法の一例について説明する。
【００９７】
図１０は、可変長フォーマットから固定長フォーマットへ段階的にフォーマット変更を行う場合において、ＩＤ１〜ＩＤ９０のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図である。また、図１１は、図１０に示す例のあと、さらにＩＤ１２０のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図である。
【００９８】
フォーマット部５２、６２および７２のいずれかは、変更判定部４６に制御されて主記憶装置１４のフォーマットを変更する。このとき、フォーマットの変更は、段階的に実行されてもよい。
【００９９】
たとえば、現在のフォーマットが可変長フォーマット（たとえば第１の可変長フォーマット）であり、変更判定部４６からフォーマット部５２に対して固定長フォーマットに変更するよう指示された場合を考える。この場合、フォーマット部５２は、たとえば固定長フォーマットに変更した際のページ単位で段階的にフォーマットの変更を行う。
【０１００】
たとえば、図１０に示すように、固定長フォーマットに変更した際の１ページあたりのデータ数が３０であり、ＩＤ１〜９０のデータまで固定長フォーマットへの変更が終了した場合、フォーマット部５２は、テーブルヘッダにその旨の情報を格納する。このため、たとえばアクセス部１００からＩＤ８０のデータに対するアクセス要求があると、読み書き部４２はテーブルヘッダを確認し、固定長フォーマットで主記憶装置１４に記憶されたＩＤ８０のデータへアクセスする。一方、アクセス部１００からＩＤ１２０のデータに対するアクセス要求があると、読み書き部４２はテーブルヘッダを確認し、可変長フォーマットで主記憶装置１４に記憶されたＩＤ１２０のデータへアクセスする。
【０１０１】
次に、ＩＤ９１〜１２０のデータで構成されるページの固定長フォーマットへの変更が終了すると、図１１に示すように、フォーマット部５２は、テーブルヘッダにその旨の情報を格納する。このとき、可変長フォーマット側のページのうち、ページを構成する全てのデータが固定長フォーマットに変更されたページについては、削除してかまわない。
【０１０２】
このように、フォーマット部５２、６２および７２は、現在のフォーマットとは異なる他のフォーマットに変更した際のページ単位で段階的にフォーマットの変更を行ってもよい。
【０１０３】
図１２（ａ）は、ユーザにより現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出を要求された際の表示画像の一例を示す説明図であり、（ｂ）は、ユーザによりフォーマットの変更を要求された際の表示画像の一例を示す説明図である。
【０１０４】
データベースエンジン１１は、入力部１３を介してユーザから、現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出要求を受け付けてもよい。この場合、見積もり部４５は、表示部１２に対して見積もり結果を示す画像を表示させる（図１２（ａ）参照）。ユーザは、この見積もり結果を確認し、現在のフォーマットが適切なフォーマットであるか否か、およびどのフォーマットが最も利便性の高いフォーマットであるかを容易に判断することができる。
【０１０５】
また、データベースエンジン１１は、入力部１３を介してユーザから、フォーマットの変更要求を受け付けてもよい。この場合、フォーマット部５２、６２および７２のいずれかは、表示部１２に対してフォーマット変更の進捗状況を示す画像を表示させる（図１２（ｂ）参照）。
【０１０６】
なお、固定長エンジン２２などのフォーマットエンジン（ストレージエンジン）は、主記憶装置１４のフォーマットを自身のフォーマットとした場合の予測ページ数および予測データアクセス平均時間を算出するための見積もり式と、フォーマットを行うためのフォーマット部を備えたものであればよく、データベースエンジン１１は、必要に応じてフォーマットエンジン（ストレージエンジン）を増減することができる。
【０１０７】
本実施形態に係るデータベース装置１０によれば、主記憶装置１４の使用が開始された後であっても、データの使用履歴からデータの平均長や最大長を算出し、主記憶装置１４の容量を節約するあるいはデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【０１０８】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１０９】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【０１１０】
１０  データベース装置
１１  データベースエンジン
１４  主記憶装置
２２  固定長エンジン
２３  第１可変長エンジン
２４  第２可変長エンジン
３２  記憶部
３３  キャッシュメモリ
４１  アクセス内容解析部
４２  読み書き部
４３  データ長取得部
４４  最大・平均算出部
４５  見積もり部
４６  変更判定部
５１、６１、７１  見積もり式
５２、６２、７２  フォーマット部
【図１】
0005813457.tif 000002
【図２】
0005813457.tif 000003
【図３】
0005813457.tif 000004
【図４】
0005813457.tif 000005
【図５】
0005813457.tif 000006
【図６】
0005813457.tif 000007
【図７】
0005813457.tif 000008
【図８】
0005813457.tif 000009
【図９】
0005813457.tif 000010
【図１０】
0005813457.tif 000011
【図１１】
0005813457.tif 000012
【図１２】
0005813457.tif 000013