説明

データベース装置およびデータベース装置の制御方法

【課題】記憶装置の使用が開始された後に、記憶装置の容量を節約する、あるいはデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定する。
【解決手段】データベース装置10は、固定長フォーマットおよび可変長フォーマットのいずれかのフォーマットでデータを記録される主記憶装置14に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得する。取得された複数のデータ長の情報にもとづいて主記憶装置14のフォーマットを他のフォーマットとした場合における予測所要記憶容量および予測データアクセス平均時間の少なくとも一方を求めることにより主記憶装置14のフォーマットを他のフォーマットに変更するか否かを判定する。判定結果に応じて、主記憶装置14のフォーマットを他のフォーマットに変更する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、データベース装置およびデータベース装置の制御方法に関する。
【背景技術】
【0002】
最近、記憶装置を有するデータベース装置は、いわゆる組み込み機器に備えられるようになってきている。組み込み機器では、省スペースと高速性能を求められる。このため、記憶装置に記憶されるデータが記憶装置内で占有する容量を節約するための技術やデータへのアクセス速度を向上させるための種々の技術が開発されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特願2009−48497号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかし、従来のこの種の技術は、データを記憶する記憶装置の容量を節約する、あるいはデータへのアクセス速度を向上させるために、記憶装置の内容を別の記憶装置にコピーしておくようになっており、複数のボリュームが必要となってしまう。
【0005】
また、固定長フォーマットと可変長フォーマットのいずれのフォーマットを採用するかは、記憶装置を使用する前に決定しておかなければならない。しかし、記憶装置が使用されてデータの記録が進むと、データの内容によっては当初決定したフォーマットが必ずしも現状に適したフォーマットであるとはいえなくなる場合がある。
【課題を解決するための手段】
【0006】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、データ長取得部と、変更判定部と、フォーマット部と、を備える。データ長取得部は、固定長フォーマットおよび可変長フォーマットのいずれかのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得する。変更判定部は、データ長取得部により取得された複数のデータ長の情報にもとづいて記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量および予測データアクセス平均時間の少なくとも一方を求めることにより記憶装置のフォーマットを他のフォーマットに変更するか否かを判定する。フォーマット部は、変更判定部の判定結果に応じて、記憶装置のフォーマットを他のフォーマットに変更する。
【図面の簡単な説明】
【0007】
【図1】本発明の一実施形態に係るデータベース装置の一例を示す全体構成図。
【図2】固定長フォーマットおよび可変長フォーマットのデータ長の一例を示す説明図。
【図3】固定長フォーマットおよび可変長フォーマットの1ファイルの論理構造の一例を示す説明図。
【図4】可変長フォーマットのページツリー構造の一例を示す説明図。
【図5】データベースエンジンの詳細な構成の一例を示すブロック図。
【図6】図1に示すデータベース装置のCPUにより、主記憶装置の使用が開始された後に、主記憶装置の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャート。
【図7】図6のステップS5で見積もり部により実行される予測所要ページ数の算出処理(サイズ予測処理)の手順の一例を示すサブルーチンフローチャート。
【図8】図6のステップS6で見積もり部により実行される予測データアクセス平均時間の算出処理(速度予測処理)の手順の一例を示すサブルーチンフローチャート。
【図9】キャッシュメモリと主記憶装置との関係を示す説明図。
【図10】可変長フォーマットから固定長フォーマットへ段階的にフォーマット変更を行う場合において、ID1〜ID90のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図。
【図11】図10に示す例のあと、さらにID120のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図。
【図12】(a)は、ユーザにより現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出を要求された際の表示画像の一例を示す説明図、(b)は、ユーザによりフォーマットの変更を要求された際の表示画像の一例を示す説明図。
【発明を実施するための形態】
【0008】
本発明に係るデータベース装置およびデータベース装置の制御方法の実施の形態について、添付図面を参照して説明する。
【0009】
図1は、本発明の一実施形態に係るデータベース装置10の一例を示す全体構成図である。
【0010】
データベース装置10は、図1に示すように、データベースエンジン11、表示部12および入力部13および主記憶装置14を有する。
【0011】
データベースエンジン11は、主制御部21と、固定長エンジン22と、第1可変長エンジン23と、第2可変長エンジン24とを有する。
【0012】
主制御部21は、CPU31および記憶部32を有する。記憶部32は、キャッシュメモリ33と、不揮発性の記憶媒体により構成された不揮発性記憶部34を有する。
【0013】
固定長エンジン22、第1可変長エンジン23および第2可変長エンジン24は、いわゆるストレージエンジンである。固定長エンジン22、第1可変長エンジン23および第2可変長エンジン24は、たとえば、それぞれ主制御部21のCPU31が不揮発性記憶部34に記憶されたプログラムを実行することにより実現される機能実現部として構成されてもよいし、それぞれCPU、RAM、ROMなどを有するいわゆるワンチップマイクロコントローラにより構成されてもよい。なお、CPU31の機能実現部として構成される場合、見積もり式51、61および71は、たとえば記憶部32に記憶されていればよい。
【0014】
表示部12は、たとえば液晶ディスプレイやOLED(Organic Light Emitting Diode)ディスプレイなどの一般的な表示出力装置により構成され、主制御部21の制御に従って各種情報を表示する。
【0015】
入力部13は、たとえばキーボード、タッチパネル、テンキーなどの一般的な入力装置により構成され、ユーザの操作に対応した操作入力信号を主制御部21に出力する。
【0016】
主記憶装置14は、磁気的もしくは光学的記録媒体または半導体メモリなどのCPU31により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【0017】
主記憶装置14は、データベースエンジン11により固定長フォーマットおよび可変長フォーマットのいずれか1つのフォーマットでデータを記録される。
【0018】
図2は、固定長フォーマットおよび可変長フォーマットのデータ長の一例を示す説明図である。
【0019】
図2に示すように、固定長フォーマットでは、各データが格納されるレコードの長さ(レコード長)が、各データの長さ(データ長)によらず同一とされる。このため、各データのアドレスを容易に検索することが可能であるという利点がある一方、レコード長をデータ長の最大値よりも大きくする必要があるため、データ長のばらつきが大きくなるほど無駄な容量を必要とするという欠点がある。
【0020】
他方、可変長フォーマットでは、各データのデータ長にあわせてレコード長を変更する。このため、データ長のばらつきによらず記憶容量を無駄なく利用できるという利点がある一方、各データのアドレスを検索するためにポインタを参照する必要があるという欠点がある。
【0021】
図3は、固定長フォーマットおよび可変長フォーマットの1ファイルの論理構造の一例を示す説明図である。
【0022】
固定長フォーマットおよび可変長フォーマットとも、1ファイルは、複数のページによって構成されるとともに、各ページは一定のサイズを有する。換言すれば、この一定のページサイズとページ数を乗じることでそのファイルのサイズを得ることができる。
【0023】
データベースエンジン11は、ページ単位でフォーマットを管理する。このページ単位のフォーマットの情報は、テーブルヘッダに記録されている。データベースエンジン11は、ページにアクセスする際に、まずテーブルヘッダから各ページのフォーマットの情報を取得する。
【0024】
可変長フォーマットの各ページのポインタは、自身のページ内のレコードを指すポインタのほか、図3に示すように、他のページを指すポインタを有する場合がある。
【0025】
図4は、可変長フォーマットのページツリー構造の一例を示す説明図である。
【0026】
可変長フォーマットでは、他のページを指すポインタを有するページ(以下、枝ページという)のポインタをたどることで、他のページを指すポインタを有さないページ(以下、葉ページという)にたどり着けるようになっている。枝ページは、図4に示すように階層構造を有してもよい。
【0027】
このため、可変長フォーマットでは、読出し速度の速いキャッシュメモリ33に枝ページのデータを持っておくことで所望のデータへのアクセス時間を短縮することができる。
【0028】
固定長フォーマットおよび可変長フォーマットは、それぞれ利点と欠点がある。このため、初期設定としていずれか一方のフォーマットを採用した場合、主記憶装置14へのデータの蓄積やデータの更新が進むと、当初採用したフォーマットではなく他方のフォーマットのほうが、利便性が高くなる場合がある。
【0029】
そこで、本実施形態に係るデータベース装置10は、記憶容量(ページ数)およびデータアクセス平均時間のそれぞれについて指標化することで各フォーマットの利便性を評価し、主記憶装置14へのデータの蓄積やデータの更新が進んだ後でも、記憶装置の容量を節約するあるいはデータへのアクセス速度を向上させるために最も適したフォーマットに主記憶装置14の各ページのフォーマットを変更する。
【0030】
図5は、データベースエンジン11の詳細な構成の一例を示すブロック図である。
【0031】
主制御部21のCPU31は、不揮発性記憶部34に記憶されたプログラムおよびこのプログラムの実行のために必要なデータをキャッシュメモリ33へロードし、このプログラムに従って、主記憶装置14の使用が開始された後に、主記憶装置14の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する処理を実行する。
【0032】
キャッシュメモリ33は、CPU31が実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。また、キャッシュメモリ33は、主記憶装置14に記憶されたデータの一部を一時的に記憶する。
【0033】
不揮発性記憶部34は、データベース装置10の起動プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【0034】
なお、不揮発性記憶部34は、磁気的もしくは光学的記録媒体または半導体メモリなどの、CPU31により読み書き可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。
【0035】
CPU31は、プログラムによって、少なくともアクセス内容解析部41、読み書き部42、データ長取得部43、最大・平均算出部44、見積もり部45および変更判定部46として機能する。この各部41〜46は、キャッシュメモリ33の所要のワークエリアをデータの一時的な格納場所として利用する。
【0036】
固定長エンジン22は、見積もり式51を記憶しているとともに、フォーマット部52を有する。
【0037】
見積もり式51は、主記憶装置14が固定長フォーマット以外のフォーマットである場合に、主記憶装置14のフォーマットを固定長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。
【0038】
フォーマット部52は、変更判定部46により制御されて、主記憶装置14のフォーマットをページごとに固定長フォーマットに変更する機能を有する。
【0039】
第1可変長エンジン23は、見積もり式61を記憶しているとともに、フォーマット部62を有する。見積もり式61は、主記憶装置14が第1可変長フォーマット以外のフォーマットである場合に、主記憶装置14のフォーマットを第1可変長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。フォーマット部62は、変更判定部46により制御されて、主記憶装置14のフォーマットをページごとに第1可変長フォーマットに変更する機能を有する。
【0040】
第2可変長エンジン24は、見積もり式71を記憶しているとともに、フォーマット部72を有する。見積もり式71は、主記憶装置14が第1可変長フォーマットとは異なる第2可変長フォーマット以外のフォーマットである場合に、主記憶装置14のフォーマットを第2可変長フォーマットとした場合における予測所要ページ数および予測データアクセス平均時間を算出するための式である。フォーマット部72は、変更判定部46により制御されて、主記憶装置14のフォーマットをページごとに第2可変長フォーマットに変更する機能を有する。
【0041】
なお、第1可変長フォーマットおよび第2可変長フォーマットは、ともに可変長フォーマットでありレコード長をデータ長にあわせて変更する点で共通するが、ポインタの仕様など互いに相違する点があるものとする。また、本実施形態では第1可変長フォーマットおよび第2可変長フォーマットの2種の可変長フォーマットをあつかう場合の例について示すが、1種であっても、また3種以上であっても、いずれの場合でも、データベースエンジン11は、各フォーマットに対応した見積もり式およびフォーマット部を有するエンジンを備えていればよい。
【0042】
アクセス内容解析部41は、各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受けるごとに(アクセスがあるごとに)、アクセス内容を解析する。たとえばアクセスがSQL文を用いて行われる場合、アクセス内容解析部41は、SQL文からアクセス内容を解析する。
各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部100は、データベース装置10に対し、主記憶装置14に記憶されたデータに対するアクセス要求を行う。アクセス部100は、たとえばデータベース装置10を内包するパーソナルコンピュータなどの情報処理装置のCPUが各種アプリケーションプログラムを実行することにより実現されてもよいし、データベース装置10にネットワークを介して接続された外部のパーソナルコンピュータなどの情報処理装置のCPUが各種アプリケーションプログラムを実行することにより実現されてもよい。
【0043】
読み書き部42は、アクセス内容に応じて主記憶装置14に対してデータの読み書きを行うとともに、必要に応じてデータをキャッシュメモリ33に格納する。
【0044】
データ長取得部43は、アクセスがあるごとに、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるデータのデータ長の情報を取得して最大・平均算出部44に与える。たとえば、アクセスがSQL文を用いて行われる場合、アクセス内容解析部41は、SQL文からデータ長の情報を抽出する。このとき、SQL文そのものを最大・平均算出部44に与える必要はない。
【0045】
最大・平均算出部44は、記憶部32のキャッシュメモリ33または不揮発性記憶部34に記憶されたこれまでのアクセスにおけるデータ長の平均値および最大値の情報を読みだす。そして、データ長取得部43から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新するとともに、データ長取得部43から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の最大値とを比較していずれか大きいほうを現在の最大値として記憶部32の最大値を更新する。
【0046】
見積もり部45は、記憶部32からデータ長の現在の平均値および現在の最大値の情報を取得する。そして、現在のフォーマット(たとえば固定長フォーマット)とは異なる他のフォーマット(たとえば第1可変長フォーマットおよび第2可変長フォーマット)の見積もり式(たとえば見積もり式61および71)を用いて、データ長の現在の平均値および現在の最大値にもとづいて主記憶装置14のフォーマットを現在のフォーマットとは異なる他のフォーマットとした場合における予測所要ページ数を求める。また、見積もり部45は、データ長の現在の平均値および現在の最大値にもとづいて見積もり式51、61および71を用いて各フォーマットにおける予測データアクセス平均時間を算出する。
【0047】
変更判定部46は、現在のページ数と、見積もり部45により求められた予測所要ページ数と予測データアクセス平均時間とにもとづいて、主記憶装置14のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する。判定結果のフォーマットが現在のフォーマットと異なる場合は、変更判定部46は、主記憶装置14のフォーマットを判定結果のフォーマットに変更するようフォーマット部52、62および72のいずれかに指示する。
【0048】
なお、主記憶装置14に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合には、変更判定部46は、主記憶装置14のフォーマットを変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を一旦記憶部32に格納しておくとよい。この場合、変更判定部46は、たとえばあらかじめ定めた所定のタイミング(たとえば主記憶装置14の断片化を解消するための再編成を実行するタイミングなど)やユーザによる入力部13を介したフォーマット変更指示をうけたタイミングで、記憶部32にフォーマットを変更すべき旨の情報が格納されているか否かを確認し、格納されていれば、およびどのフォーマットに変更するかを示す情報に応じてフォーマット部52、62および72のいずれかに主記憶装置14のフォーマットを変更するよう指示するとよい。
【0049】
次に、本実施形態に係るデータベース装置およびデータベース装置の制御方法の動作の一例について説明する。
【0050】
図6は、図1に示すデータベース装置10のCPU31により、主記憶装置14の使用が開始された後に、主記憶装置14の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定する際の手順を示すフローチャートである。図6において、Sに数字を付した符号は、フローチャートの各ステップを示す。
【0051】
この手順は、アクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受けた時点でスタートとなる。
【0052】
まず、ステップS1において、アクセス内容解析部41は、アクセス部100から主記憶装置14に記憶されたデータに対するアクセス要求を受け、アクセス内容を解析する。
【0053】
次に、ステップS2において、データ長取得部43は、アクセス内容解析部41により解析されたアクセス内容から今回アクセスされるデータのデータ長の情報を取得して最大・平均算出部44に与える。
【0054】
次に、ステップS3において、最大・平均算出部44は、記憶部32のキャッシュメモリ33または不揮発性記憶部34に記憶されたこれまでのアクセスにおけるデータ長の平均値を読みだす。そして、データ長取得部43から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の平均値とを平均して新たに現在の平均値を算出して記憶部32の平均値を更新する。
【0055】
次に、ステップS4において、最大・平均算出部44は、記憶部32のキャッシュメモリ33または不揮発性記憶部34に記憶されたこれまでのアクセスにおけるデータ長の最大値の情報を読みだす。そして、データ長取得部43から受けた今回アクセスされるデータのデータ長とこれまでのアクセスにおけるデータ長の最大値とを比較していずれか大きいほうを現在の最大値として記憶部32の最大値を更新する。
【0056】
次に、ステップS5において、見積もり部45は、記憶部32からデータ長の現在の平均値または現在の最大値の情報を取得し、現在のフォーマットとは異なる他のフォーマットの見積もり式を用いて、主記憶装置14のフォーマットを現在のフォーマットとは異なる他のフォーマットとした場合における予測所要ページ数を求める。
【0057】
次に、ステップS6において、見積もり部45は、記憶部32からデータ長の現在の平均値および現在の最大値の情報を取得し、見積もり式51、61および71を用いて各フォーマットにおける予測データアクセス平均時間を算出する。
【0058】
次に、ステップS7において、変更判定部46は、現在のページ数と、見積もり部45により求められた予測所要ページ数と予測データアクセス平均時間とにもとづいて、主記憶装置14のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する。そして、判定結果のフォーマットが現在のフォーマットと異なるか否かをもって、主記憶装置14のフォーマットを判定結果のフォーマットに変更すべきか否かを判定する。
【0059】
フォーマットを変更すべき場合は、変更すべき旨の情報およびどのフォーマットに変更するかを示す情報を記憶部32に格納する(ステップS8)。その後、所定のタイミングで記憶部32にフォーマットを変更すべき旨の情報が格納されていることを確認し、どのフォーマットに変更するかを示す情報に応じてフォーマット部52、62および72のいずれかに主記憶装置14のフォーマットを変更するよう指示し、フォーマット部52、62および72のいずれかによって主記憶装置14のフォーマットが変更される(ステップS9)。一方、フォーマットを変更すべきでない場合(ステップS7のNO)、すなわち現在のフォーマットが最も利便性が高い場合は、一連の手順は終了となる。
【0060】
なお、ステップS8は、主記憶装置14に対するアクセスが集中している場合などフォーマット変更にふさわしくない場合に実行されるとよいが、実行されずともよい。ステップS8を実行しない場合は、変更判定部46は、主記憶装置14のフォーマットを変更すべきと判定すると、速やかにフォーマット部52、62および72のいずれかにフォーマットを変更するよう指示し、ステップS9に移行する。
【0061】
以上の手順により、主記憶装置14の使用が開始された後に、主記憶装置14の容量を節約するあるいはデータアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【0062】
図7は、図6のステップS5で見積もり部45により実行される予測所要ページ数の算出処理(サイズ予測処理)の手順の一例を示すサブルーチンフローチャートである。
【0063】
なお、図7に示す手順において、第2可変長フォーマットに係る説明は第1可変長フォーマットに係る説明と重複するため、説明を省略する。
【0064】
ステップS51において、見積もり部45は、現在のフォーマットが固定長フォーマットであるか否かを判定する。
【0065】
固定長フォーマットである場合は(ステップS51のYES)、ステップS52において、見積もり部45は、記憶部32からデータ長の現在の平均値の情報を取得し、見積もり式61を用いて第1可変長フォーマットでの予測所要ページ数P2を求める。
【0066】
予測所要ページ数P2に係る見積もり式61は、たとえば次のように書ける。
P2=Row数/(ページサイズ/(X+b)) (1)
ただし、Xはデータ長の現在の平均値を、bはポインタなどの
オーバーヘッドを、それぞれ表す。
【0067】
一方、第1可変長フォーマットおよび第2可変長フォーマットのいずれかである場合は(ステップS51のNO)、ステップS53において、見積もり部45は、記憶部32からデータ長の現在の最大値の情報を取得し、見積もり式51を用いて固定長フォーマットでの予測所要ページ数P1を求める。
【0068】
予測所要ページ数P1に係る見積もり式51は、たとえば次のように書ける。
P1=Row数/(ページサイズ/Z) (2)
ただし、Zはデータ長の現在の最大値を表す。
【0069】
以上の手順により、現在のフォーマットと異なる他のフォーマットとした場合の予測所要ページ数P1またはP2を求めることができる。
【0070】
図8は、図6のステップS6で見積もり部45により実行される予測データアクセス平均時間の算出処理(速度予測処理)の手順の一例を示すサブルーチンフローチャートである。なお、図8に示す手順において、第2可変長フォーマットに係る説明は第1可変長フォーマットに係る説明と重複するため、説明を省略する。
【0071】
ステップS61において、見積もり部45は、たとえばテーブルヘッダなどから現在のページ数の情報を取得するとともに、図7のステップS53またはS52で求めた予測所要ページ数P1またはP2を取得する。
【0072】
なお、現在のフォーマットが固定長フォーマットである場合には、図7のステップS52で求めた予測所要ページ数P2をそのままP2としてあつかうとともに現在のページ数をP1としてあつかい、現在のフォーマットが第1の可変長フォーマットである場合には、図7のステップS53で求めた所要ページ数P1をそのままP1としてあつかうとともに現在のページ数をP2としてあつかう。
【0073】
次に、ステップS62において、見積もり部45は、主記憶装置14のフォーマットが固定長フォーマットである場合における予測データアクセス平均時間S1を求める。
【0074】
図9は、キャッシュメモリ33と主記憶装置14との関係を示す説明図である。
【0075】
主記憶装置14に記憶されたデータのうち、一部のデータはキャッシュメモリ33に保持される。キャッシュメモリ33のアクセス時間Mは、一般に、主記憶装置14のアクセス時間Dよりも非常に短くてすむ。
【0076】
ページ数P1のうちのキャッシュメモリ33にキャッシュされるデータ量Cの割合としてのキャッシュヒット率h1は、h1=C/P1と書ける。このとき、予測データアクセス平均時間S1に係る見積もり式51は、たとえば次のように書ける。
S1=h1*M+(1−h1)*D (3)
【0077】
次に、ステップS63において、見積もり部45は、主記憶装置14のフォーマットが第1可変長フォーマットである場合における予測データアクセス平均時間S1を求める。
【0078】
ページ数P2のうちのキャッシュメモリ33にキャッシュされるデータ量Cの割合としてのキャッシュヒット率h2は、たとえばh2=C/P2と書ける。可変長フォーマットにおける枝の深さ(図4参照)をEとし、ページ内の探索時間をAとすると、予測データアクセス平均時間S2に係る見積もり式61は、たとえば次のように書ける。
S2=E*(h2*M+(1−h2)*D)+A (4)
【0079】
なお、α=P1/P2とすれば、h2=C/P2=α*h1より、式(4)は次のように変形できる。
S2=E*(α*h1*M+(1−α*h1)*D)+A (5)
【0080】
可変長フォーマットでは、葉ページよりも枝ページのほうが参照される頻度が高くなる。そこで、枝ページを優先的にキャッシュメモリ33に割り当てるようにすることで、データアクセス時間を短縮することができると期待される。枝ページのページ数をP2Eとし、ページ数P2をP2+P2Eで置き換える(P2→P2+P2E)と、枝ページ数P2Eがキャッシュ量Cより小さければ、キャッシュヒット率h2はh2=(C−P2E)/P2となる。このとき、予測データアクセス平均時間S2に係る見積もり式61は、たとえば次のように書ける。
S2=(E−1)*M+(h2*M+(1−h2)*D)+A (6)
【0081】
式(4)と式(6)を比較して明らかなように、枝ページを優先的にキャッシュメモリ33に割り当てる場合、枝の深さEはキャッシュヒット率h2に乗じられないため、よりデータアクセス平均時間を速めることができる。
【0082】
以上の手順により、予測所要データアクセス平均時間S1およびS2を求めることができる。
【0083】
ここで、図6のステップS7で変更判定部46により実行される、主記憶装置14のフォーマットをどのフォーマットにすると最も利便性が高いかを判定する処理の具体例について説明する。
【0084】
ユーザは、主記憶装置14内のデータの記憶容量を削減することを優先したいと所望する場合もあれば、データへのアクセス速度を優先したいと所望する場合もある。また、記憶容量の削減とアクセス速度の向上の両者を総合的に勘案したいと所望する場合もある。この種のユーザの所望は、ユーザにより入力部13を介してデータベースエンジン11に与えられてもよい。
【0085】
たとえば、記憶容量の削減を優先する場合は、変更判定部46は、現在のページ数と、式(1)または式(2)により算出された予測所要ページ数とを比較し、現在のページ数のほうが予測所要ページ数よりも大きいと、主記憶装置14のフォーマットを変更すべきと判定する。
【0086】
なお、この場合、変更判定部46は、現在のページ数と、式(1)または式(2)により算出された予測所要ページ数とを比較し、現在のページ数のほうが予測所要ページ数よりも大きく、かつ互いのページ数の差が所定の閾値よりも大きい場合に、主記憶装置14のフォーマットを変更すべきと判定してもよい。所定の閾値を用いる場合、互いのページ数の差が小さい場合に頻繁に大小が入れ替わることによりフォーマット変更が繰り返されてしまう弊害を未然に防ぐことができる。また、互いのページ数の差に代えて、たとえば現在のページ数に所定の数値(たとえば0.6など)を乗じた数が予測所要ページ数よりも大きい場合に、主記憶装置14のフォーマットを変更すべきと判定してもよい。
【0087】
また、たとえばデータアクセス速度を優先する場合は、変更判定部46は、式(4)と式(6)(または式(7))で算出された予測データアクセス平均時間S1とS2とを比較し、現在のフォーマットより他のフォーマットの予測データアクセス平均時間のほうが短いとき、主記憶装置14のフォーマットを変更すべきと判定する。
【0088】
現在のフォーマットが固定長データベースである場合の例を用いてより具体的に説明する。この場合、S1>S2の場合、すなわち可変長データベースにおける予測データアクセス平均時間S2のほうが固定長データベースにおける予測データアクセス平均時間S1より短い場合、フォーマットを変更すべきと判定するとよいが、より好ましくは、変更判定部46は、h1とh2の関係によってさらに次の3つの場合に分けて動作するとよい。
【0089】
第1の場合は、キャッシュヒット率h1!=1かつh2!=1の場合である。この場合、次の式(7)が満たされると、変更判定部46は、主記憶装置14のフォーマットを変更すべきと判定する。
h1*M+(1−h1)*D>E*(α*h1*M+(1−α*h1)*D)+A (7)
この式(7)は、式(3)と式(5)を比較した式である。
【0090】
第2の場合は、h1!=1かつh2=1の場合である。この場合、次の式(8)が満たされると、変更判定部46は、主記憶装置14のフォーマットを変更すべきと判定する。
h1*M+(1−h1)*D>E*M+A (8)
【0091】
この式(8)は、式(7)にα*h1=h2=1を代入した式である。
【0092】
第3の場合は、h1=1の場合である。この場合、h2=1であってもh2!=1であっても常にS1<S2となるため、変更判定部46は、主記憶装置14のフォーマットを変更すべきではないと判定する(ステップS7のNO)。
【0093】
また、たとえば記憶容量の削減とアクセス速度の向上の両者を総合的に勘案する場合は、変更判定部46は、次の改善度の指標を示す式(9)を用いてフォーマット変更判定を行う。なお、式(9)には現在のフォーマットが固定長フォーマットである場合の改善殿指標を示す式の例である。
【0094】
改善度=β(現在のページ数P1−予測ページ数P2)+γ*(S1−S2) (9)
【0095】
式(9)において、βおよびγの値は、頻繁なフォーマット変更が生じないように設定されるとよい。また、βおよびγはユーザによって入力部13を介して指定されてもよい。たとえば、変更判定部46は、式(9)で表される改善度が正であると、主記憶装置14のフォーマットを変更すべきと判定する。
【0096】
次に、図6のステップS9でフォーマット部52、62および72のいずれかにより実行される、主記憶装置14のフォーマット変更方法の一例について説明する。
【0097】
図10は、可変長フォーマットから固定長フォーマットへ段階的にフォーマット変更を行う場合において、ID1〜ID90のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図である。また、図11は、図10に示す例のあと、さらにID120のデータまで固定長フォーマットへの変更が終了した様子の一例を示す説明図である。
【0098】
フォーマット部52、62および72のいずれかは、変更判定部46に制御されて主記憶装置14のフォーマットを変更する。このとき、フォーマットの変更は、段階的に実行されてもよい。
【0099】
たとえば、現在のフォーマットが可変長フォーマット(たとえば第1の可変長フォーマット)であり、変更判定部46からフォーマット部52に対して固定長フォーマットに変更するよう指示された場合を考える。この場合、フォーマット部52は、たとえば固定長フォーマットに変更した際のページ単位で段階的にフォーマットの変更を行う。
【0100】
たとえば、図10に示すように、固定長フォーマットに変更した際の1ページあたりのデータ数が30であり、ID1〜90のデータまで固定長フォーマットへの変更が終了した場合、フォーマット部52は、テーブルヘッダにその旨の情報を格納する。このため、たとえばアクセス部100からID80のデータに対するアクセス要求があると、読み書き部42はテーブルヘッダを確認し、固定長フォーマットで主記憶装置14に記憶されたID80のデータへアクセスする。一方、アクセス部100からID120のデータに対するアクセス要求があると、読み書き部42はテーブルヘッダを確認し、可変長フォーマットで主記憶装置14に記憶されたID120のデータへアクセスする。
【0101】
次に、ID91〜120のデータで構成されるページの固定長フォーマットへの変更が終了すると、図11に示すように、フォーマット部52は、テーブルヘッダにその旨の情報を格納する。このとき、可変長フォーマット側のページのうち、ページを構成する全てのデータが固定長フォーマットに変更されたページについては、削除してかまわない。
【0102】
このように、フォーマット部52、62および72は、現在のフォーマットとは異なる他のフォーマットに変更した際のページ単位で段階的にフォーマットの変更を行ってもよい。
【0103】
図12(a)は、ユーザにより現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出を要求された際の表示画像の一例を示す説明図であり、(b)は、ユーザによりフォーマットの変更を要求された際の表示画像の一例を示す説明図である。
【0104】
データベースエンジン11は、入力部13を介してユーザから、現在のページ数、予測所要ページ数および各フォーマットの予測データアクセス平均時間の算出要求を受け付けてもよい。この場合、見積もり部45は、表示部12に対して見積もり結果を示す画像を表示させる(図12(a)参照)。ユーザは、この見積もり結果を確認し、現在のフォーマットが適切なフォーマットであるか否か、およびどのフォーマットが最も利便性の高いフォーマットであるかを容易に判断することができる。
【0105】
また、データベースエンジン11は、入力部13を介してユーザから、フォーマットの変更要求を受け付けてもよい。この場合、フォーマット部52、62および72のいずれかは、表示部12に対してフォーマット変更の進捗状況を示す画像を表示させる(図12(b)参照)。
【0106】
なお、固定長エンジン22などのフォーマットエンジン(ストレージエンジン)は、主記憶装置14のフォーマットを自身のフォーマットとした場合の予測ページ数および予測データアクセス平均時間を算出するための見積もり式と、フォーマットを行うためのフォーマット部を備えたものであればよく、データベースエンジン11は、必要に応じてフォーマットエンジン(ストレージエンジン)を増減することができる。
【0107】
本実施形態に係るデータベース装置10によれば、主記憶装置14の使用が開始された後であっても、データの使用履歴からデータの平均長や最大長を算出し、主記憶装置14の容量を節約するあるいはデータへのアクセス速度を向上させるために最も適したフォーマットを的確に判定することができる。
【0108】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【0109】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【0110】
10 データベース装置
11 データベースエンジン
14 主記憶装置
22 固定長エンジン
23 第1可変長エンジン
24 第2可変長エンジン
32 記憶部
33 キャッシュメモリ
41 アクセス内容解析部
42 読み書き部
43 データ長取得部
44 最大・平均算出部
45 見積もり部
46 変更判定部
51、61、71 見積もり式
52、62、72 フォーマット部

【特許請求の範囲】
【請求項1】
固定長フォーマットおよび可変長フォーマットのいずれかのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得するデータ長取得部と、
前記データ長取得部により取得された複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量および予測データアクセス平均時間の少なくとも一方を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する変更判定部と、
前記変更判定部の判定結果に応じて、前記記憶装置のフォーマットを前記他のフォーマットに変更するフォーマット部と、
を備えたデータベース装置。
【請求項2】
前記変更判定部は、
前記記憶装置の現在のフォーマットが固定長フォーマットであると、前記データ長取得部により取得された複数のデータ長の平均値を求め、この平均値にもとづいて前記記憶装置のフォーマットを可変長フォーマットとした場合における予測所要ページ数を求め、この予測所要ページ数と現在のページ数とを比較することで前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項1記載のデータベース装置。
【請求項3】
前記変更判定部は、
前記記憶装置の現在のフォーマットが可変長フォーマットであると、前記データ長取得部により取得された複数のデータ長の平均値を求め、この平均値にもとづいて前記記憶装置のフォーマットを固定長フォーマットとした場合における予測所要ページ数を求め、この予測所要ページ数と現在のページ数とを比較することで前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項1記載のデータベース装置。
【請求項4】
前記変更判定部は、
前記記憶装置のフォーマットを固定長フォーマットとした場合の第1の予測データアクセス平均時間および前記記憶装置のフォーマットを可変長フォーマットとした場合の第2の予測データアクセス平均時間をもとめ、これらの予測データアクセス平均時間を比較することにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項1ないし3のいずれか1項に記載のデータベース装置。
【請求項5】
前記変更判定部は、前記現在のページ数と前記予測所要ページ数との比較結果および前記第1の予測データアクセス平均時間と前記第2の予測データアクセス平均時間との比較結果にもとづいて前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定する、
請求項4記載のデータベース装置。
【請求項6】
固定長フォーマットおよび可変長フォーマットのいずれか1つのフォーマットでデータを記録される記憶装置に対してアプリケーションプログラムによるアクセスがあるごとに、アクセスされたデータのデータ長を取得するステップと、
前記取得された複数のデータ長の情報にもとづいて前記記憶装置のフォーマットを他のフォーマットとした場合における予測所要記憶容量および予測データアクセス平均時間の少なくとも一方を求めることにより前記記憶装置のフォーマットを前記他のフォーマットに変更するか否かを判定するステップと、
前記他のフォーマットに変更すると判定されると、前記記憶装置のフォーマットを前記他のフォーマットに変更するステップと、
を有するデータベース装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate