(57)【要約】【課題】データストアのＩ／Ｏ単位に依存しない静的制御処理と、アクセス頻度に応じた動的制御処理とを組み合わせて、アクセス頻度の変化への柔軟性を持った階層的な記憶領域の制御を実現する。【解決手段】計算機によって提供される複数の記憶領域を用いて構成されたデータストアを用いてサービスを提供する計算機システムであって、データストアには、サービスに用いられる業務データが格納され、計算機システムは、業務データの配置を管理する制御部を備え、制御部は、サービスの提供中に、業務データを構成する要素データごとのアクセス頻度の変化からパラメータを算出し、各要素データのアクセス頻度の予測を示すポテンシャル値を算出し、ポテンシャル値に基づいて、移動させる第１の要素データを選択し、格納する記憶領域を決定する。【選択図】図１
2013246773.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも一つ以上の計算機を含み、前記計算機によって提供される複数の記憶領域から構成されたデータストアを用いてサービスを提供する計算機システムであって、
前記計算機は、プロセッサ、及び前記プロセッサに接続される複数の記憶媒体を有し、
前記データストアには、サービスに用いられる業務データが格納され、
前記計算機システムは、
前記業務データごとのアクセス特性に基づいて決定され、前記データストアを構成する記憶領域の中から、初期の前記業務データの配置先を決定するための第１のポテンシャルを格納する静的制御情報と、
前記業務データを構成する要素データごとに、前記要素データへのアクセス頻度に対応して変化するパラメータを格納する動的制御情報と、
前記業務データを格納する前記記憶領域を決定するための階層設定情報と、
を保持し、
前記データストアを構成する前記記憶領域に格納された、前記業務データを管理するデータストア管理部と、
前記静的制御情報及び前記動的制御情報を用いて、前記データストアを構成する記憶領域に格納される前記業務データの配置を管理する制御部と、
を備え、
前記制御部は、
前記サービスの提供中に、前記データストア管理部から前記業務データへのアクセスを検知した場合、当該業務データを構成する前記要素データごとのアクセス頻度の変化から前記パラメータを算出し、
前記各要素データの第１のポテンシャル値及び前記算出されたパラメータを用いて、前記各要素データのアクセス頻度の予測を示す第２のポテンシャル値を算出し、
前記第２のポテンシャル値に基づいて、移動させる第１の要素データを選択し、
前記階層設定情報、及び、前記第１の要素データの前記第２のポテンシャル値に基づいて、前記第１の要素データを格納する前記記憶領域を決定することを特徴とする計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記計算機システムは、前記データストアを構成する記憶領域から、前記要素データ単位のデータを取得する取得部を備え、
前記制御部は、前記静的制御情報の中から、一つの前記業務データを選択し、
前記取得部は、前記選択された業務データを構成する前記要素データを検索し、
前記制御部は、
前記検索された要素データに対して、前記選択された業務データに対応する前記第１のポテンシャル値を設定し、
前記階層設定情報、及び、前記設定された第１のポテンシャル値に基づいて、前記選択された業務データを構成する要素データを配置する前記記憶領域を特定し、
前記特定された記憶領域に、前記選択された業務データを構成する要素データを配置することを特徴とする計算機システム。
【請求項３】
請求項２に記載の計算機システムであって、
前記計算機システムは、前記業務データを構成する要素データの取得方法を格納する定義情報を保持し、
前記取得部は、前記定義情報に基づいて、前記選択された業務データを構成する要素データを検索することを特徴とする計算機システム。
【請求項４】
請求項１又は請求項２に記載の計算機システムであって、
前記データストアを構成する記憶領域は、第１の記憶領域、第２の記憶領域、及び第３の記憶領域を含み、
前記制御部は、
前記階層設定情報、及び、前記設定された第１のポテンシャル値に基づいて、前記第２の記憶領域又は前記第３の記憶領域のいずれかに、前記業務データを構成する要素データを配置し、
前記データストア管理部が、前記第２の記憶領域又は前記第３の記憶領域のいずれかに格納される業務データのアクセスを検知した場合、前記第１の記憶領域に前記業務データを構成する要素データを読み出し、
前記第１の記憶領域の使用容量が所定の閾値以上である場合、前記第１の記憶領域に読み出された業務データを構成する要素データのうち、前記第２のポテンシャル値が最も小さく、かつ、アクセス時間が最も古い前記要素データを、前記第１の要素データとして選択し、
前記階層設定情報、及び、前記第１の要素データの第２のポテンシャル値に基づいて、前記第１の要素データを格納する前記記憶領域として、前記第２の記憶領域又は前記第３の記憶領域のいずれかを決定し、
前記第２の記憶領域又は前記第３の記憶領域のいずれかに、前記第１の要素データを格納することを特徴とする計算機システム。
【請求項５】
請求項４に記載の計算機システムであって、
前記第２の記憶領域は、前記第１のポテンシャル値に基づいて前記第２の記憶領域に配置された前記業務データを構成する要素データを格納する通常領域と、前記第１のポテンシャル値に基づいて前記第３の記憶領域に配置された前記要素データを構成する要素データを格納する一時領域と、を含み
前記制御部は、
前記第２の記憶領域に前記第１の要素データを格納する場合に、前記静的制御情報及び前記階層設定情報を参照して、前記第１の記憶領域に読み出される前に、前記第１の要素データが格納された前記記憶領域を特定し、
前記第１の要素データが、前記第２の記憶領域から読み出された要素データである場合、前記第１の要素データを前記通常領域に格納し、
前記第１の要素データが、前記第３の記憶領域から読み出された要素データである場合、前記第１の要素データを前記一時領域に格納し、
前記一時領域の空き容量が所定の閾値以上である場合に、アクセス時間に基づいて、前記一時領域に格納される前記要素データの中から、移動させる第２の要素データを選択し、
前記選択された第２の要素データを前記第３の記憶領域に格納することを特徴とする計算機システム。
【請求項６】
少なくとも一つ以上の計算機を含み、前記計算機によって提供される複数の記憶領域から構成されたデータストアを用いてサービスを提供する計算機システムにおけるデータ管理方法であって、
前記計算機は、プロセッサ、及び前記プロセッサに接続される複数の記憶媒体を有し、
前記データストアには、サービスに用いられる業務データが格納され、
前記計算機システムは、
前記業務データごとのアクセス特性に基づいて決定され、前記データストアを構成する記憶領域の中から、初期の前記業務データの配置先を決定するための第１のポテンシャルを格納する静的制御情報と、
前記業務データを構成する要素データごとに、前記要素データへのアクセス頻度に対応して変化するパラメータを格納する動的制御情報と、
前記業務データを格納する前記記憶領域を決定するための階層設定情報と、
を保持し、
前記データストアを構成する前記記憶領域に格納された、前記業務データを管理するデータストア管理部と、
前記静的制御情報及び前記動的制御情報を用いて、前記データストアを構成する記憶領域に格納される前記業務データの配置を管理する制御部と、を有し、
前記方法は、
前記制御部が、前記サービスの提供中に、前記データストア管理部から前記業務データへのアクセスを検知した場合、当該業務データを構成する前記要素データごとのアクセス頻度の変化から前記パラメータを算出する第１のステップと、
前記制御部が、前記各要素データの第１のポテンシャル値及び前記算出されたパラメータを用いて、前記各要素データのアクセス頻度の予測を示す第２のポテンシャル値を算出する第２のステップと、
前記制御部が、前記第２のポテンシャル値に基づいて、移動させる第１の要素データを選択する第３のステップと、
前記制御部が、前記階層設定情報、及び、前記第１の要素データの前記第２のポテンシャル値に基づいて、前記第１の要素データを格納する前記記憶領域を決定する第４のステップと、を含むことを特徴とするデータ管理方法。
【請求項７】
請求項６に記載のデータ管理方法であって、
前記計算機システムは、前記データストアを構成する記憶領域から、前記要素データ単位のデータを取得する取得部を有し、
前記方法は、さらに、
前記制御部が、前記静的制御情報の中から、一つの前記業務データを選択する第５のステップと、
前記取得部が、前記選択された業務データを構成する前記要素データを検索する第６のステップと、
前記制御部が、前記検索された要素データに対して、前記選択された業務データに対応する前記第１のポテンシャル値を設定する第７のステップと、
前記制御部が、前記階層設定情報、及び、前記設定された第１のポテンシャル値に基づいて、前記選択された業務データを構成する要素データを配置する前記記憶領域を特定し、前記特定された記憶領域に前記選択された業務データを構成する要素データを配置する第８のステップと、を含むことを特徴とするデータ管理方法。
【請求項８】
請求項６に記載のデータ管理方法であって、
前記計算機システムは、前記要素データの取得方法を格納する定義情報を保持し、
前記第６のステップでは、前記定義情報に基づいて、前記選択された業務データを構成する要素データが検索されることを特徴とするデータ管理方法。
【請求項９】
請求項６又は請求項７に記載のデータ管理方法であって、
前記データストアを構成する記憶領域は、第１の記憶領域、第２の記憶領域、及び第３の記憶領域を含み、
前記第８のステップでは、前記階層設定情報、及び、前記設定された第１のポテンシャル値に基づいて、前記第２の記憶領域又は前記第３の記憶領域のいずれかに前記業務データを構成する要素データが配置され、
前記方法は、前記データストア管理部が、前記第２の記憶領域又は前記第３の記憶領域のいずれかに格納される業務データのアクセスを検知した場合、前記第１の記憶領域に前記業務データを構成する要素データを読み出すステップを含み、
前記第３のステップでは、前記第１の記憶領域の使用容量が所定の閾値以上である場合に、前記第１の記憶領域に読み出された業務データを構成する要素データのうち、前記第２のポテンシャル値が最も小さく、かつ、アクセス時間が最も古い前記要素データが、前記第１の要素データとして選択され、
前記第４のステップは、
前記階層設定情報、及び、前記第１の要素データの第２のポテンシャル値に基づいて、前記第１の要素データを格納する前記記憶領域として、前記第２の記憶領域又は前記第３の記憶領域のいずれかを選択する第９のステップと、
前記第２の記憶領域又は前記第３の記憶領域のいずれかに、前記第１の要素データを格納する第１０のステップと、を含むことを特徴とするデータ管理方法。
【請求項１０】
請求項９に記載のデータ管理方法であって、
前記第２の記憶領域は、前記第１のポテンシャル値に基づいて前記第２の記憶領域に配置された前記業務データを構成する要素データを格納する通常領域と、前記第１のポテンシャル値に基づいて前記第３の記憶領域に配置された前記業務データを構成する要素データを格納する一時領域と、を含み、
前記第９のステップにおいて、前記第２の記憶領域が選択された場合に、前記制御部が、前記静的制御情報及び前記階層設定情報を参照して、前記第１の記憶領域に読み出される前に、前記第１の要素データが格納された前記記憶領域を特定するステップと、
前記制御部が、前記第１の要素データが前記第２の記憶領域から読み出された要素データである場合、前記第１の要素データを前記通常領域に格納するステップと、
前記制御部が、前記第１の要素データが前記第３の記憶領域から読み出された要素データである場合、前記第１の要素データを前記一時領域に格納するステップと、
前記制御部が、前記一時領域の空き容量が所定の閾値以上である場合に、アクセス時間に基づいて、前記一時領域に格納される前記要素データの中から、移動させる第２の要素データを選択するステップと、
前記制御部が、前記選択された第２の要素データを前記第３の記憶領域に格納するステップと、を含むことを特徴とするデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、階層的に記憶領域にデータを格納するデータストアにおけるデータ管理方法に関する。
【背景技術】
【０００２】
従来、ストレージシステム、ファイルシステム及びデータベース等、階層的な記憶領域を制御するデータストアが様々なデータ管理に用いられてきた。
【０００３】
データストアでは、性能を向上させるために、データへのアクセス頻度に応じてデータを適切な階層の記憶領域に格納する必要がある。
【０００４】
データへのアクセス頻度を決定するためには、当該データに対する将来のアクセスを全て把握する必要があり、現実的に不可能である。そのため、従来は、過去のアクセス実績に基づいて、データへのアクセス頻度を予測する方法が採用されている。アクセス頻度の予測には大きく分けて二つの情報が用いられる。
【０００５】
一つ目は、アクセスの有無、及び、アクセスから得られるパラメータ（読み出し及び書き込み、シーケンシャルアクセス及びランダムアクセス、データサイズ、時刻等）が記録されたアクセス情報である。以下の説明では、当該アクセス情報を、動的制御情報と記載する。また、動的制御情報を用いた、記憶領域の制御方法を動的制御処理と記載する。
【０００６】
二つ目は、任意のデータと当該データに関するアクセス情報を事前に解析し、解析の結果から把握されるアクセスの特徴情報である。以下の説明では、任意のデータと当該データに関するアクセス情報を業務情報と記載し、また、解析の結果から把握されるアクセスの特徴情報を静的制御情報と記載する。また、静的制御情報を用いた、記憶領域の制御方法を静的制御処理と記載する。
【０００７】
動的制御処理の一つに、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）を用いた処理がある。ＬＲＵを用いて処理では、アクセス情報そのものを用いて、アクセス頻度を予測する。ＬＲＵをキャッシュの制御にＬＲＵを適用した場合、キャッシュ領域の空き領域が不足すると、アルゴリズムに従って、キャッシュ済みデータを他の記憶領域に格納する。このとき、ＬＲＵでは、データの意味までは考慮されない。
【０００８】
しかし、ＬＲＵを用いた処理では、データに対するアクセスパターンがランダムである場合、キャッシュヒット率が特に低下し、不必要なデータの移動が発生する問題がある。
【０００９】
一方、静的制御処理にはキャッシュテーブルを用いた処理がある。キャッシュテーブルを用いて処理は、予め業務情報を解析し、解析結果から予測される使用頻度が高いテーブルをアクセス性能の高い記憶領域に格納する。
【００１０】
静的制御処理は、動的制御処理に比べ、アクセスパターンによってキャッシュヒット率が左右されにくく、過去のアクセス実績がないデータについても制御することができる。
【００１１】
しかし、静的制御処理が動的制御処理より優れているわけではない。静的制御処理では、予め業務情報を解析する必要があるため、アクセス特性の変化に対応させるためには時間がかかる。一方、動的制御処理は、アクセス情報そのものを用いるため、即座にアクセス特性の変化に対応できる。
【００１２】
また、階層な記憶領域の制御では、データを各記憶領域へ格納するときのＩ／Ｏサイズ（以下、制御Ｉ／Ｏ単位と称する）によって、ヒット率及びスループットが変化し、性能に大きく影響する。
【００１３】
動的制御処理では、データの意味が考慮されないため、制御Ｉ／Ｏ単位の制限がなく、任意のＩ／Ｏサイズで制御処理が可能である。
【００１４】
一方、静的制御処理では、業務情報の解析精度を上げるため、業務に即したデータ単位を用意し、又は、データの意味及びアクセスの特徴が現れるまで、解析する個々のデータサイズを大きくする必要がある。また、解析結果から得られる静的制御情報は、解析時のデータ単位に対して、意味を持つ特徴データであるため、少なくとも、制御Ｉ／Ｏ単位は解析時に用いた解析単位以上の大きさを用いる必要がある。そのため、結果的に静的制御処理における、制御Ｉ／Ｏ単位は、動的制御処理の制御Ｉ／Ｏ単位に比べ大きくなる傾向がある。
【００１５】
したがって、静的制御処理より、動的制御処理の方がキャッシュの空間効率がよいという利点が存在する。
【００１６】
前述のように、いずれの制御方法にも利点及び欠点があるため、データの特性に合わせて二つの制御方法を適宜変更する制御方法が考えられている（例えば、特許文献１参照）。
【００１７】
特許文献１では、「アクセス頻度の低下したボリュームを高速な記憶装置から低速な記憶領域に移動する」等のポリシを持つストレージシステムと、「管理者が定期的にチェックするサーバプログラムのログは、常に高速ディスクに記憶する」等のポリシを持つストレージシステムを使用するホスト装置が記載されている。前者のポリシは、アクセス情報に依存するため、動的制御処理に対応し、後者のポリシは、アクセス情報に依存しないため、静的制御処理に対応する。
【００１８】
各装置が各々のポリシに基づいて、独自に制御処理を実行すると、ポリシが衝突してしまうが、特許文献１では、特ストレージシステムがホスト装置のポリシを理解することによって、前述の問題を解決している。具体的には、ホスト装置が移動を希望しないボリュームに対して、移動禁止を指示するポリシがストレージシステム側に設定される。
【００１９】
特許文献１では、前述したような方法を用いることによって、データの特性に合わせて動的制御処理と静的制御処理とを適宜変更している。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開２００６−２５２２４７号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
特許文献１に記載の技術では、データの特性に合わせて、動的制御処理及び静的制御処理を用いることによって、二つの制御処理の利点を有効に活用し、実効性能を高めている。
【００２２】
しかし、特許文献１に記載の技術では、データの特性が変化した場合に、性能が低下する。
【００２３】
例えば、特許文献１では、静的制御処理において、「管理者が定期的にチェックするサーバプログラムのログは、常に高速ディスクに記憶する」という業務に即したポリシを挙げたが、高速ディスクには、サーバプログラムのログだけでなく、サーバプログラムのログを含むボリューム全てが格納される。これは、対象となるストレージシステムがボリュームを管理するデータストアであるためである。
【００２４】
制御Ｉ／Ｏ単位がデータストアで扱われるデータ単位に限定されている場合、前述したように、上位階層の記憶領域の空間効率、及びヒット率を低下する。さらに、静的制御処理において、サーバプログラムのログを定期的にチェックする必要がなくなった場合、設定されたポリシを変更するまで、データへのアクセス変化に対応できない。動的制御処理ではアクセスの変化に対応できるが、ランダムアクセスに対しては、ヒット率が低下し、不必要なデータ移動が発生する。
【００２５】
本発明は、データストアにおいて扱われるデータの単位に依存しない静的制御情報を付加し、かつ、静的制御処理及び動的制御処理を組み合わせた、階層な記憶領域の制御を実現することを目的とする。
【課題を解決するための手段】
【００２６】
本発明の代表的な一例を示せば以下の通りである。すなわち、少なくとも一つ以上の計算機を含み、前記計算機によって提供される複数の記憶領域から構成されたデータストアを用いてサービスを提供する計算機システムであって、前記計算機は、プロセッサ、及び前記プロセッサに接続される複数の記憶媒体を有し、前記データストアには、サービスに用いられる業務データが格納され、前記計算機システムは、前記業務データごとのアクセス特性に基づいて決定され、前記データストアを構成する記憶領域の中から、初期の前記業務データの配置先を決定するための第１のポテンシャルを格納する静的制御情報と、前記業務データを構成する要素データごとに、前記要素データへのアクセス頻度に対応して変化するパラメータを格納する動的制御情報と、前記業務データを格納する前記記憶領域を決定するための階層設定情報と、を保持し、前記データストアを構成する前記記憶領域に格納された、前記業務データを管理するデータストア管理部と、前記静的制御情報及び前記動的制御情報を用いて、前記データストアを構成する記憶領域に格納される前記業務データの配置を管理する制御部と、を備え、前記制御部は、前記サービスの提供中に、前記データストア管理部から前記業務データへのアクセスを検知した場合、当該業務データを構成する前記要素データごとのアクセス頻度の変化から前記パラメータを算出し、前記各要素データの第１のポテンシャル値及び前記算出されたパラメータを用いて、前記各要素データのアクセス頻度の予測を示す第２のポテンシャル値を算出し、前記第２のポテンシャル値に基づいて、移動させる第１の要素データを選択し、前記階層設定情報、及び、前記第１の要素データの前記第２のポテンシャル値に基づいて、前記第１の要素データを格納する前記記憶領域を決定することを特徴とする。
【発明の効果】
【００２７】
本発明によれば、業務データに対して、業務データの解析結果から決定された第１のポテンシャルを付加することができため、ランダムアクセスに強く、空間効率及びヒット率を上昇させることができる。さらに、アクセス頻度に基づいた第２のポテンシャル値を用いて要素データの格納位置を変更することによって、アクセス変化に対応したデータの管理が可能となる。
【図面の簡単な説明】
【００２８】
【図１】本発明の第１の実施例における計算機システムの構成例を示すブロック図である。
【図２】本発明の第１の実施例におけるユーザアプリケーションデータ、論理データ及びブロックデータの対応関係を示す説明図である。
【図３Ａ】本発明の第１の実施例における帳簿リストテーブルの一例を示す説明図である。
【図３Ｂ】本発明の第１の実施例における口座テーブルの一例を示す説明図である。
【図４】本発明の第１の実施例におけるＬ２記憶装置におけるデータの構成例を示す説明図である。
【図５】本発明の第１の実施例における静的制御情報の一例を示す説明図である。
【図６】本発明の第１の実施例における動的制御情報の一例を示す説明図である。
【図７】本発明の第１の実施例におけるブロックデータ管理情報の一例を示す説明図である。
【図８】本発明の第１の実施例における関数情報に格納される関数の一例を示す説明図である。
【図９】本発明の第１の実施例における階層設定情報の一例を示す説明図である。
【図１０】本発明の第１の実施例における階層記憶領域の制御処理の概要を示す説明図である。
【図１１】本発明の第１の実施例における静的制御処理における構成例を示す説明図である。
【図１２】本発明の第１の実施例における定義情報の構成例を示す説明図である。
【図１３】本発明の第１の実施例における静的制御処理の詳細を説明するフローチャートである。
【図１４】本発明の第１の実施例におけるブロックデータの検索処理の詳細を説明するフローチャートである。
【図１５】本発明の第１の実施例における動的制御処理における構成例を示す説明図である。
【図１６】本発明の第１の実施例における検索リストの一例を示す説明図である。
【図１７】本発明の第１の実施例における格納リストの一例を示す説明図である。
【図１８Ａ】本発明の第１の実施例におけるデータの読出処理の詳細を説明するフローチャートである。
【図１８Ｂ】本発明の第１の実施例におけるデータの読出処理の詳細を説明するフローチャートである。
【図１９Ａ】本発明の第１の実施例におけるデータの書込処理の詳細を説明するフローチャートである。
【図１９Ｂ】本発明の第１の実施例におけるデータの書込処理の詳細を説明するフローチャートである。
【図２０】本発明の第１の実施例における温度及び動的ポテンシャル値の更新処理の詳細を説明するフローチャートである。
【図２１】本発明の第１の実施例における検索リストの更新処理の詳細を説明するフローチャートである。
【図２２】本発明の第１の実施例における書戻処理の詳細を説明するフローチャートである。
【図２３】本発明の第１の実施例における一時領域における書戻処理の詳細を説明するフローチャートである。
【図２４】本発明の第２の実施例における計算機システムの構成例を示すブロック図である。
【発明を実施するための形態】
【００２９】
［第１の実施例］
図１は、本発明の第１の実施例における計算機システムの構成例を示すブロック図である。
【００３０】
第１の実施例の階層記憶管理システムは、計算機１００から構成される。図１では、計算機１００は１台であるが、２台以上あってよい。この場合、各計算機１００は、直接接続してもよいし、また、ＬＡＮ又はＷＡＮ等のネットワークを介して接続してもよい。
【００３１】
計算機１００は、データストアを構成し、また、データストアを管理する。なお、本実施例では、データストアとしてリレーショナルデータベースが用いられる。
【００３２】
計算機１００は、プロセッサ１０１、メモリ１０２、Ｌ１記憶装置１０３及びＬ２記憶装置１０４を備える。
【００３３】
プロセッサ１０１は、メモリ１０２に格納されるプログラムを実行する。プロセッサ１０１がメモリ１０２に格納されるプログラムを実行することによって、後述する計算機１００の機能が実現される。以下の説明では、プログラムを主体に処理を記載する場合には、プロセッサ１０１によってプログラムが実行されていることを示すものとする。
【００３４】
メモリ１０２は、プロセッサ１０１が実行するプログラム及び当該プログラムを実行するために必要なデータを格納する。メモリ１０２は、例えば、ＤＲＡＭのような半導体メモリが考えられる。また、メモリ１０２は、Ｌ１記憶装置１０３及びＬ２記憶装置１０４より高速にアクセスすることができる。
【００３５】
本実施例のメモリ１０２は、ユーザアプリケーションプログラム１１０、ユーザアプリケーションデータ１２０、データベース管理プログラム１３０、データベース管理情報１４０、定義情報１５０、静的制御情報１６０、動的制御情報１７０を格納する。また、メモリ１０２は、データベース（図示省略）を構成する記憶領域であるＬ０記憶領域１８０を含む。
【００３６】
ユーザアプリケーションプログラム１１０は、データベース管理プログラム１３０によって管理されるデータベースを用いて、任意のサービスを提供するプログラムである。
【００３７】
ユーザアプリケーションデータ１２０は、ユーザアプリケーションプログラム１１０が使用するデータであり、ユーザアプリケーションプログラム１１０に依存したデータ構造を持つデータである。
【００３８】
図２において後述するように、ユーザアプリケーションデータ１２０は、データストアに格納される複数の論理データから構成される。ここで、論理データとは、データストアとユーザアプリケーションプログラム１１０との間で入出力されるデータであり、本実施例では、テーブルに対応する。なお、データストアが、ファイルシステムの場合には、ファイルが論理データに対応する。
【００３９】
データベース管理プログラム１３０は、データベース管理情報１４０を用いて、複数の記憶領域を組み合わせた階層的な記憶領域（以下、階層記憶領域と記載する）内に格納されるデータを管理し、ＳＱＬを使用可能なリレーショナルデータベース機能を提供する。
【００４０】
本実施例おいて、階層記憶領域は、Ｌ０記憶領域１８０、Ｌ１記憶領域１８１及びＬ２記憶領域１８２から構成される。なお、Ｌ０記憶領域１８０、Ｌ１記憶領域１８１及びＬ２記憶領域１８２については後述する。
【００４１】
階層記憶領域内に格納される論理データは、所定の固定長のデータから構成される。本実施例では、階層記憶領域内のデータは、ブロック単位のデータから構成されるものとする。このとき、データベース管理プログラム１３０は、階層記憶領域に対して、ブロック単位でＩ／Ｏ制御を行う。一般的なリレーショナルデータベースのブロックサイズは２ＫＢ〜６４ＫＢであるが、本発明はブロックサイズに限定されない。以下の説明では、ブロック単位のデータをブロックデータとも記載する。
【００４２】
前述したように、ユーザアプリケーションデータ１２０は一つ以上の論理データから構成され、また、論理データは一つ以上のブロックデータから構成される。したがって、ユーザアプリケーションデータ１２０は、一つ以上のブロックデータから構成される。
【００４３】
本実施例のデータベース管理プログラム１３０は、データベース管理部１３１、ブロック取得部１３２、静的制御部１３３及び動的制御部１３４を含む。
【００４４】
データベース管理部１３１は、データベースの管理、データベースに対するＳＱＬの処理、及び階層記憶領域へのＩ／Ｏ制御を行う。
【００４５】
ブロック取得部１３２は、指定された条件に一致するブロックデータを階層記憶領域から取得する。ブロック取得部１３２が実行する処理の詳細については後述する。
【００４６】
静的制御部１３３は、静的制御情報１６０を用いて、階層記憶領域に対して、静的制御処理を実行する。静的制御部１３３が実行する処理の詳細については後述する。
【００４７】
動的制御部１３４は、動的制御情報１７０を用いて、階層記憶領域に対して、動的処理を実行する。動的制御部１３４が実行する処理の詳細については後述する。
【００４８】
データベース管理情報１４０は、データベース管理プログラム１３０が実行する処理に必要な情報を格納する。また、データベース管理情報１４０は、データベースの機能を実現するために必要な情報も含む。
【００４９】
テーブルデータ１４１は、リレーショナルデータベースにおけるテーブルに関する情報を格納する。
【００５０】
データベース管理情報１４０、テーブルデータ１４１及びＬ０記憶領域１８０の詳細については、図２を用いて後述する。
【００５１】
定義情報１５０は、階層記憶領域から、任意の論理データに対応するブロックデータを取得する方法に関する情報を格納する。定義情報１５０の詳細については、図１２を用いて後述する。
【００５２】
静的制御情報１６０は、静的制御処理に関する情報を格納する。静的制御情報１６０の詳細については、図５を用いて後述する。
【００５３】
動的制御情報１７０は、動的制御処理に関する情報を格納する。動的制御情報１７０の詳細については、図６を用いて後述する。
【００５４】
Ｌ１記憶装置１０３及びＬ２記憶装置１０４は、データベースを構成する記憶領域を提供する記憶装置である。Ｌ１記憶装置１０３は、データベースを構成する記憶領域であるＬ１記憶領域１８１を含み、Ｌ２記憶装置１０４は、データベースを構成する記憶領域であるＬ２記憶領域１８２を含む。
【００５５】
Ｌ１記憶装置１０３及びＬ２記憶装置１０４は、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）及びＳＤＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）などが考えられる。
【００５６】
本実施例では、前述したように、Ｌ０記憶領域１８０、Ｌ１記憶領域１８１及びＬ２記憶領域１８２から階層記憶領域が構成される。データベース管理プログラム１３０は、階層記憶領域に対してデータを書き出し、また、データを読み出す。
【００５７】
Ｌ０記憶領域１８０は、データベース管理部１３１及びブロック取得部１３２が読み出したブロックデータを一時的にキャッシュする。Ｌ１記憶領域１８１及びＬ２記憶領域１８２は、それぞれ、データベースのデータを格納する。
【００５８】
Ｌ０記憶領域１８０は、階層記憶領域のうち最上層の記憶領域である。Ｌ１記憶領域１８１は、Ｌ０記憶領域１８０の下位、かつ、Ｌ２記憶領域１８２の上位に位置する記憶領域である。また、Ｌ２記憶領域１８２は、階層記憶領域のうち最下層の記憶領域である。
【００５９】
なお、前述した階層記憶領域を構成する記憶領域の組合せを一例であって、本発明は階層記憶領域の構成に限定されない。
【００６０】
本実施例では、Ｌ０記憶領域を提供するメモリ１０２に揮発性のＤＲＡＭ、Ｌ１記憶領域１８１を提供するＬ１記憶装置１０３に不揮発性のＳＳＤ、Ｌ２記憶領域１８２を提供するＬ２記憶装置１０４に不揮発性のＨＤＤを用いるものとする。
【００６１】
なお、前述の各記憶領域の組合せは一例であって、上位の階層の記憶領域が高速かつ小容量、下位の階層の記憶領域が低速かつ大容量となる構成であれば、前述した構成でなくてもよい。例えば、Ｌ２記憶領域１８２を提供するＬ２記憶装置１０４には、ネットワークを介して接続され、ＨＤＤ等の記憶装置を複数備えるストレージシステムを用いてもよい。
【００６２】
さらに、階層記憶領域を構成する各記憶領域は、単一の記憶領域から構成される必要はなく、例えば、複数のＮＡＳ装置を組み合わせた複数の記憶領域を用いてもよい。
【００６３】
また、階層記憶領域の設置場所は、図１に示す例に限定されない。例えば、異なる計算機が備えるＨＤＤを用いてもよい。
【００６４】
なお、メモリ１０２に格納されるプログラム及び情報は、メモリ１０２上に格納される必要はなく、Ｌ１記憶装置１０３、Ｌ２記憶装置１０４、又は図示しない外部記憶装置等に格納されてもよい。この場合、プロセッサ１０１が、必要に応じて、Ｌ１記憶装置１０３、Ｌ２記憶装置１０４、又は図示しない外部記憶装置等からメモリ１０２に、プログラム又はデータを読み出す。なお、プロセッサ１０１は、データを読み出す場合、データの一部又は全部を読み出すことができる。
【００６５】
なお、ユーザアプリケーションプログラム１１０及びデータベース管理プログラム１３０は、プログラムによって実現しているが本発明はこれに限定されない。例えば、専用のハードウェアを用いてユーザアプリケーションプログラム１１０及びデータベース管理プログラム１３０が備える機能を実現してもよい。
【００６６】
また、静的制御部１３３及び動的制御部１３４が有する機能をまとめて、一つの制御部としてもよい。
【００６７】
前述したユーザアプリケーションプログラム１１０及びデータベース管理プログラム１３０は、図示しないオペレーティングシステム（ＯＳ）の一部、又は、図示しないユーザアプリケーションプログラムによって使用される入出力ライブラリとして提供されてもよい。
【００６８】
なお、図１の計算機１００は、物理的な計算機である必要はなく、仮想計算機であってもよい。この場合、プロセッサ１０１、メモリ１０２、Ｌ１記憶装置１０３、及びＬ２記憶装置１０４等の計算機リソースは、仮想化プログラム（図示省略）等によって仮想的な計算機リソースとして仮想計算機に割り当てられる。
【００６９】
なお、計算機１００が、ユーザアプリケーションプログラム１１０及びユーザアプリケーションデータ１２０を備えているが、本発明は前述した構成に限定されない。例えば、ネットワークを介して接続されたクライアント計算機が、ユーザアプリケーションプログラム１１０及びユーザアプリケーションデータ１２０を備えていてもよい。なお、計算機１００とクライアント計算機とを接続するネットワークの種別に限定されない。
【００７０】
なお、階層記憶領域は、Ｌ０記憶領域１８０、Ｌ１記憶領域１８１、Ｌ２記憶領域１８２から構成されているが、本発明は、階層記憶領域を構成する記憶領域の数に限定されない。
【００７１】
図２は、本発明の第１の実施例におけるユーザアプリケーションデータ１２０、論理データ及びブロックデータの対応関係を示す説明図である。
【００７２】
図２では、ユーザアプリケーションプログラム１１０が金融関係のデータを扱う口座管理プログラムである場合について説明する。
【００７３】
ユーザアプリケーションプログラム１１０は、口座を管理するために、口座データをデータベースから読み出し、また口座データをデーベースに書き込む。このとき、データベース管理プログラム１３０は、ユーザアプリケーションプログラム１１０からの読出要求又は書込要求に対する処理を実行する。
【００７４】
図２に示す例では、ユーザアプリケーションプログラム１１０が、口座Ａ及び口座Ｂに関する処理の実行状況を示しており、ユーザアプリケーションデータ１２０は、口座Ａデータ２００−１及び口座Ｂデータ２００−２を含む。
【００７５】
口座Ａデータ２００−１及び口座Ｂデータ２００−２は、複数のテーブル（論理データ）に含まれるデータから構成される。各テーブルは、データベース管理情報１４０のテーブルデータ１４１に格納される。
【００７６】
図２に示す例では、テーブルデータ１４１には、元帳Ａ１テーブル２１１、帳簿リストテーブル２１２、口座テーブル２１３、元帳Ｂ１テーブル２１４及び元帳Ｂ２テーブル２１５が格納される。
【００７７】
元帳Ａ１テーブル２１１は、口座Ａデータ２００−１の仕訳帳情報を格納する。元帳Ｂ１テーブル２１４は、口座Ｂデータ２００−２の仕訳帳情報を格納する。元帳Ｂ２テーブル２１５は、口座Ｂデータ２００−２の普通預金情報を格納する。また、帳簿リストテーブル２１２は、複数の帳簿の管理情報を格納する。口座テーブル２１３は、複数の口座の管理情報を格納する。
【００７８】
ここで、帳簿リストテーブル２１２及び口座テーブル２１３の一例を説明する。
【００７９】
図３Ａは、本発明の第１の実施例における帳簿リストテーブル２１２の一例を示す説明図である。図３Ｂは、本発明の第１の実施例における口座テーブル２１３の一例を示す説明図である。
【００８０】
帳簿リストテーブル２１２は、帳簿リストテーブル２１２は、口座ＩＤ３０１、元帳種類３０２及び元帳番号３０３を含む。口座ＩＤ３０１は、口座を一意に識別するための識別子である。元帳種類３０２は、帳簿の種類を示す情報である。元帳番号３０３は、帳簿の種類ごとに帳簿を一意に識別するための識別子である。
【００８１】
口座テーブル２１３は、口座ＩＤ３１１、顧客番号３１２及び暗証番号３１３を含む。口座ＩＤ３１１は、口座ＩＤ３０１と同一のものである。顧客番号３１２は、口座の所有者である顧客を一意に識別するための識別子である。暗証番号３１３は、口座に対して設定された暗証番号である。
【００８２】
図２の説明に戻る。
【００８３】
図２が示す例では、口座Ａデータ２００−１は、元帳Ａ１テーブル２１１、帳簿リストテーブル２１２及び口座テーブル２１３に含まれるデータから構成され、また、口座Ｂデータ２０−２は、帳簿リストテーブル２１２、口座テーブル２１３、元帳Ｂ１テーブル２１４及び元帳Ｂ２テーブル２１５から構成される。
【００８４】
各テーブルは、ユーザアプリケーションプログラム１１０又はＯＳ等が認識可能な論理的なデータ構造のデータであり、複数のブロックデータから構成される。したがって、Ｌ０記憶領域１８０には、各テーブルを構成するブロックデータが格納される。
【００８５】
図２の示す例では、口座Ａデータ２００−１を構成する、元帳Ａ１テーブル２１１のデータにはブロックデータ１（２５１）が対応し、帳簿リストテーブル２１２のデータにはブロックデータ２−１（２５２−１）及びブロックデータ２−２（２５２−２）が対応し、口座テーブル２１３のデータにはブロックデータ３（２５３）が対応する。また、口座Ｂデータ２００−２を構成する、元帳Ｂ１テーブル２１４のデータにはブロックデータ４（２５４）が対応し、元帳Ｂ２テーブル２１５のデータにはブロックデータ５（２５５）が対応し、帳簿リストテーブル２１２のデータにはブロックデータ２−１（２５２−１）及びブロックデータ２−２（２５２−２）が対応し、口座テーブル２１３のデータにはブロックデータ３（２５３）が対応する。
【００８６】
データベース管理プログラム１３０は、ユーザアプリケーションプログラム１１０から論理データの読出要求を受け付けると、当該論理データ（テーブル）を読み出す。また、データベース管理プログラム１３０は、ユーザアプリケーションプログラム１１０から論理データの書込要求を受け付けると、当該論理データ（テーブル）に更新内容を書き込む。
【００８７】
本実施例では、Ｌ２記憶領域１８２には、サービスの提供に用いられる全てのテーブルを格納されているものとし、また、Ｌ１記憶領域１８１には、アクセス頻度の高いテーブルが格納されているものとする。この場合、データベース管理プログラム１３０が、Ｌ１記憶領域１８１又はＬ２記憶領域１８２から必要なテーブルを読み出し、Ｌ０記憶領域１８０に一時的に格納（キャッシュ）する。
【００８８】
また、データベース管理プログラム１３０は、所定の条件が満たされた場合、Ｌ１記憶領域１８１又はＬ２記憶領域１８２に、Ｌ０記憶領域１８０にキャッシュされたテーブルを格納する。
【００８９】
図４は、本発明の第１の実施例におけるＬ２記憶装置１０４におけるデータの構成例を示す説明図である。
【００９０】
データベース管理プログラム１３０は、論理空間４０１に格納されたテーブルを用いてサービスを提供する。Ｌ２記憶領域１８２には、各テーブルを構成するブロックデータが格納される。
【００９１】
図４の示す例では、論理空間４０１には、元帳Ａ１テーブル２１１、帳簿リストテーブル２１２、口座テーブル２１３、元帳Ｂ１テーブル２１４及び元帳Ｂ２テーブル２１５が格納され、Ｌ２記憶領域１８２には、各テーブルを構成するブロックデータ１（２５１）、ブロックデータ２−１（２５２−１）、ブロックデータ２−２（２５２−２）、ブロックデータ３（２５３）、ブロックデータ４（２５４）及びブロックデータ５（２５５）が格納される。
【００９２】
図５は、本発明の第１の実施例における静的制御情報１６０の一例を示す説明図である。
【００９３】
図５では、静的制御情報１６０がファイル形式の情報である場合について説明する。
【００９４】
静的制御情報１６０は、ユーザアプリケーションデータ１２０に対するアクセスの特徴を示す情報を格納する。本実施例では、アクセスの特徴を示す情報として、アクセス頻度を表すポテンシャル値を用いる。静的制御情報１６０に設定されるポテンシャル値を静的ポテンシャル値とも記載する。
【００９５】
静的制御情報１６０は、複数のフィールドから構成される複数のレコードを含むファイルである。静的制御情報１６０に含まれるレコードは、口座ＩＤ５０１及び静的ポテンシャル値５０２から構成される。
【００９６】
口座ＩＤ５０１は、口座データを一意に識別するための識別子である。
【００９７】
静的ポテンシャル値５０２は、口座ＩＤ５０１に対応する口座データに設定された静的ポテンシャル値である。静的ポテンシャル値５０２は、本実施例における特徴情報であり、当該口座データに対するアクセス頻度が数値化された値である。
【００９８】
本実施例では、静的ポテンシャル値５０２には、最大値「１．０」から最小値「０」までの値が設定される。また、静的ポテンシャル値が高い場合、アクセスの頻度が高いデータであることを表し、また、ポテンシャル値が低い場合、アクセスの頻度が低いデータであることを表す。
【００９９】
静的ポテンシャル値は、予め設定された値である。具体的には、ユーザアプリケーションデータ１２０に関する業務情報が解析され、当該解析の結果に基づいて算出される。例えば、新たにレコードが追加される場合には、「０」が設定される。なお、業務情報には、サービスにおけるユーザアプリケーションデータ１２０の使用方法等が含まれる。
【０１００】
静的制御部１３３は、静的制御情報１６０のレコードを処理単位としてＩ／Ｏ処理を実行し、ファイルに対してレコードを１件ずつ入出力することによって処理を実行する。例えば、サービスの実行中に新しく口座が作られる場合、静的制御部１３３は、静的制御情報１６０に新たなレコードが追加し、当該レコードの静的ポテンシャル値５０２に「０」を設定する。また、口座が解約された場合、静的制御部１３３は、対応するレコードを削除する。
【０１０１】
図５では、口座データと静的ポテンシャル値とが対応づけられたファイルを一例として示したが、本発明はこれに限定されず、静的制御情報１６０には、ユーザアプリケーションデータ１２０と静的ポテンシャル値とが対応づけられた形式の情報が含まれればよい。また、静的制御情報１６０には、ユーザアプリケーションデータ１２０の種別ごとに異なるファイルが含まれてよい。
【０１０２】
なお、静的制御情報１６０の設定方法としては、予め計算機１００に設定する方法、ＧＵＩを用いて入力する方法、データベースに組み込まれたマイニングによって自動敵に設定する方法等が考えられる。
【０１０３】
図６は、本発明の第１の実施例における動的制御情報１７０の一例を示す説明図である。
【０１０４】
動的制御情報１７０は、動的制御部１３４が動的制御処理を実行する場合に用いる各種情報を格納する。具体的には、動的制御情報１７０は、ブロックデータ管理情報６００、関数情報６１０、階層設定情報６２０、検索リスト６３０及び階層制御情報６４０を含む。
【０１０５】
ブロックデータ管理情報６００は、ブロックデータにおける各種情報を格納する。ブロックデータ管理情報６００の詳細については、図７を用いて後述する。
【０１０６】
関数情報６１０は、ブロックデータに対するアクセスに依存したパラメータ（温度）の変化値を算出する関数の情報を格納する。関数情報６１０の詳細については、図８を用いて後述する。
【０１０７】
階層設定情報６２０は、各階層記憶領域に設定される動的ポテンシャル値の範囲を示す情報を格納する。
【０１０８】
検索リスト６３０は、Ｌ０記憶領域１８０から、下位の階層の記憶領域に移動させるブロックデータを検索するための情報を格納する。検索リスト６３０の詳細については、図１６を用いて後述する。
【０１０９】
階層制御情報６４０は、Ｌ０記憶領域１８０以外の階層の記憶領域に対する制御処理の実行に必要な情報を格納する。階層制御情報６４０の詳細については、図６を用いて後述する。
【０１１０】
なお、本発明は、後述する動的制御処理を実現できる情報であれば、動的制御情報１７０に格納される情報及び情報の形式に限定されない。
【０１１１】
図７は、本発明の第１の実施例におけるブロックデータ管理情報６００の一例を示す説明図である。
【０１１２】
図７では、Ｌ０記憶領域１８０に格納されるブロックデータを例に説明する。
【０１１３】
ブロックデータ管理情報６００は、ブロックデータの管理に必要な各種フィールドから構成されるレコードを複数含む。具体的には、ブロックデータ管理情報６００に含まれるレコードは、ブロックデータＩＤ７０１、静的ポテンシャル値７０２、オフセット７０３、温度７０４及びタイムスタンプ７０５から構成される。
【０１１４】
ブロックデータＩＤ７０１は、ブロックデータを一意に識別するための識別子を格納する。
【０１１５】
静的ポテンシャル値７０２は、ブロックデータに設定された静的ポテンシャル値を格納する。静的ポテンシャル値７０２は、静的ポテンシャル値５０２と同一のものである。
【０１１６】
オフセット７０３は、静的ポテンシャル値のオフセットを格納する。ここで、静的ポテンシャル値のオフセットとは、静的ポテンシャル値の変動幅を表す値である。本実施例では、ブロックデータに対するアクセス頻度に応じて、静的ポテンシャル値がオフセット７０３の範囲内で変化する。
【０１１７】
温度７０４は、サービス実行時における、ブロックデータへのアクセス頻度を示すパラメータである温度を格納する。
【０１１８】
タイムスタンプ７０５は、ブロックデータにアクセスされた時刻を示すタイムスタンプを格納する。
【０１１９】
本実施例では、ブロックデータは、実際のデータのほかに、ブロックＩＤ、静的ポテンシャル値、ポテンシャルオフセット、温度及びタイムスタンプを含むものとする。
【０１２０】
動的制御部１３４が、所定の記憶領域からブロックデータを読み出す場合、ブロックデータから各種情報を取得することによってブロックデータ管理情報６００を生成する。また、動的制御部１３４は、所定の記憶領域にブロックデータの書き込む時に、当該ブロックにブロックデータ管理情報６００の各フィールドの値を格納する。
【０１２１】
図８は、本発明の第１の実施例における関数情報６１０に格納される関数の一例を示す説明図である。
【０１２２】
図８に示す例では、任意のブロックデータにおいて、当該ブロックデータの状態が変化した経過時間を変数として温度を算出するための関数Ｔ（ｔ）を表す。ここで、ｔは経過時間を表す。
【０１２３】
本実施例では、関数として、温度上昇関数８１１及び温度下降関数８１２が用いられる。温度上昇関数８１１は温度の上昇時に用いる関数であり、温度下降関数８１２は温度の下降時に用いる関数である。
【０１２４】
なお、領域８１３において、温度上昇関数８１１及び温度下降関数８１２は、点（２５０，０）で点対称な関数である。また、温度下降関数８１２は、経過時間が５００ｍｓ以上の場合には一定値となる。
【０１２５】
図９は、本発明の第１の実施例における階層設定情報６２０の一例を示す説明図である。
【０１２６】
階層設定情報６２０は、階層記憶領域を構成する記憶領域のうち、ブロックデータを格納する記憶領域を決定するため必要な各種フィールドから構成されるレコードを複数含む。具体的には、階層設定情報６２０に含まれるレコードは、階層ＩＤ９０１及び閾値９０２から構成される。
【０１２７】
階層ＩＤ９０１は、階層記憶領域を構成する記憶領域を一意に識別するための識別子を格納する。本実施例では、記憶装置の識別子が格納される。具体的には、Ｌ１記憶領域１８１を提供するＬ１記憶装置１０３の識別子又はＬ２記憶領域１８２を提供するＬ２記憶装置１０４の識別子が格納される。
【０１２８】
閾値９０２は、動的ポテンシャル値の範囲を格納する。図９に示す例では、動的ポテンシャル値の範囲が１．０以下かつ０．４以上の場合にはＬ１記憶領域１８１にブロックデータを格納し、動的ポテンシャル値の範囲が０．４未満かつ０．０以上の場合にはＬ２記憶領域１８２にブロックデータが格納されることを表す。
【０１２９】
（動的静的共通の階層記憶制御について）
次に本実施例における処理の概要を説明する。
【０１３０】
本実施例では、動的ポテンシャル値（Ｐｄｙｎａｍｉｃ）は、下式（１）を用いて算出される。
【０１３１】
【数１】
2013246773.tif 000003
【０１３２】
ここで、ｔ１及びｔ２は、タイムスタンプを表す。ただし、ｔ１はｔ２より大きい値であるものとする。また、Ｔｂｌｏｃｋは、ブロックデータを格納する領域の温度を表し、Ｔｍａｘは温度の最大値を表す。また、Ｐｏｆｆｓｅｔはオフセット定数を表し、Ｐｓｔａｔｉｃは静的ポテンシャル値を表す。
【０１３３】
式（１）に示すように、オフセット定数に温度変化に依存する定数を乗算した値が、オフセット７０３に対応する。また、Ｔｂｌｏｃｋは、温度７０４に対応する。
【０１３４】
なお、動的ポテンシャル値を算出するための式（１）は一例であって、本発明は動的ポテンシャル値を算出する数式に限定されない。
【０１３５】
図１０は、本発明の第１の実施例における階層記憶領域の制御処理の概要を示す説明図である。
【０１３６】
本実施例では、式（１）からわかるように、アクセス頻度が高い場合、ブロックデータの動的ポテンシャル値が高くなり、また、アクセス頻度が低い場合、ブロックデータの動的ポテンシャル値が低くなる。
【０１３７】
したがって、階層記憶領域の制御処理では、動的ポテンシャル値の範囲をそのまま階層記憶領域を構成する各記憶領域にマップする方法を採用する。具体的には、Ｌ１記憶領域１８１及びＬ２記憶領域１８２に対し、図９で示した閾値９０２に示された動的ポテンシャル値の範囲を、図１０に示すようにマップする。
【０１３８】
また、本実施例では、階層記憶領域の制御処理の性能を上げるため、データベースを用いたサービスの開始前に、階層記憶領域内のデータを最適に配置する。
【０１３９】
具体的には、静的制御部１３３が、事前にユーザアプリケーションデータ１２０を解析することによって算出された静的ポテンシャル値を用いて、初期のアプリケーションデータ１２０（ブロックデータ）の配置を行う。したがって、初期状態では、ブロックデータの動的ポテンシャルは、静的ポテンシャル値と同一となる。データベースを用いたサービスの開始後、動的制御部１３４が、アクセス変化に応じてＬ０記憶領域からブロックデータを書き戻す場合、動的ポテンシャル値に基づいて、ブロックデータの配置を変更する。
【０１４０】
図１０に示す例では、静的ポテンシャル値１０３０が設定されたブロックデータ１０００を示す。初期配置では、静的ポテンシャル値１０３０がＬ２記憶領域に設定された閾値の範囲内に含まれるため、ブロックデータ１０００は、Ｌ２記憶領域１８２に配置される。サービスの開始後、ブロックデータ１０００の動的ポテンシャルは、サービスの実行に伴うアクセス頻度の変化に応じて、ポテンシャルオフセット１０２０分だけ変化する。
【０１４１】
データベース管理部１３１は、ユーザアプリケーションプログラム１１０からの処理要求にしたがって、Ｌ１記憶領域１８１又はＬ２記憶領域１８２から所定のブロックデータを読み出して、Ｌ０記憶領域１８０に格納（キャッシュ）する。
【０１４２】
例えば、ブロックデータ１０００へのアクセス頻度が高くなることによって、ブロックデータ１０００の動的ポテンシャル値は、最大動的ポテンシャル値１０３１まで変化する。一方、ブロックデータ１０００へのアクセス頻度が低くなることによって、ブロックデータ１０００の動的ポテンシャル値は、最小動的ポテンシャル値１０３２まで変化する。
【０１４３】
図１０に示すように、Ｌ０記憶領域１８０からＬ１記憶領域１８１又はＬ２記憶領域１８２に格納する場合に、Ｌ１記憶領域１８１に対応する閾値の範囲内に動的ポテンシャル値があるときには、Ｌ０記憶領域１８０からＬ１記憶領域１８１へブロックデータが格納される。また、Ｌ２記憶領域１８２より下位のＬ３記憶領域が存在する場合、ブロックデータ８００の動的ポテンシャルが、Ｌ３記憶領域に設定された閾値の範囲内にあるときには、Ｌ０記憶領域１８０からＬ３記憶領域ブロックデータが格納される。
【０１４４】
（静的制御処理）
図１１は、本発明の第１の実施例における静的制御処理における構成例を示す説明図である。
【０１４５】
静的制御処理では、静的制御部１３３が、任意のユーザアプリケーションデータ１２０を構成する論理データに対応するブロックデータに静的ポテンシャル値を割り当てられる。また、静的制御では、静的ポテンシャル値に基づいて、アクセスパターンに依存しないブロック単位で、データの配置が制御される。
【０１４６】
図１１に示す例では、データベース管理部１３１が、Ｌ１記憶装置１０３又はＬ２記憶装置１０４から、ブロックデータ１（２５１）、ブロックデータ２−１（２５２−１）及びブロックデータ３（２５３）から構成される口座Ａデータ２００−１を取得し、取得された口座Ａデータ２００−１をＬ０記憶領域１８０に格納する。
【０１４７】
静的制御部１３３は、静的制御情報１６０を参照し、ユーザアプリケーションデータ１２０を構成する論理データを特定し、さらに当該論理データを構成するブロックデータに静的ポテンシャル値を設定する。図１１に示す例では、ブロックデータ１（２５１）、ブロックデータ２−１（２５２−１）及びブロックデータ３（２５３）には、静的ポテンシャル値として「１．０」が設定され、また、オフセットが「０」に初期化された状態を表す。
【０１４８】
静的制御部１３３は、ブロックデータに対する初期化処理を実行した後、階層設定情報６２０を参照して、各ブロックデータを適切な記憶領域に格納する。
【０１４９】
図１１に示す例では、予め、静的制御情報１６０及び定義情報１５０が定義されており、データベース管理プログラム１３０が管理する全てのデータがＬ１記憶領域１８１及びＬ２記憶領域１８２に格納されているものとする。
【０１５０】
図１２は、本発明の第１の実施例における定義情報１５０の構成例を示す説明図である。
【０１５１】
定義情報１５０は、任意の論理データを構成するブロックデータを取得する方法及び手順を示す情報を格納する。静的制御部１３３は、格納された情報に基づいて、後述する処理を実行することによって、論理データを構成するブロックデータに静的ポテンシャル値を割り当てることが可能になる。
【０１５２】
なお、定義情報１５０に格納される情報は、予め設定されていてもよいし、ＧＵＩ等を用いてユーザが入力してもよい。
【０１５３】
図１２に示す例では、複数のＳＱＬクエリ１２０１〜１２０６が列挙されたファイルを示す。ＳＱＬクエリ１２０１、１２０２、１２０４〜１２０６は、条件と一致するブロックデータを取得するためのクエリである。ＳＱＬクエリ１２０３は、条件と一致するファイルの情報（論理データ）を取得するためＳＱＬクエリ１２０３である。
【０１５４】
なお、本実施例では、定義情報１５０にＳＱＬを用いているが、本発明はこれに限定されず、シェルスクリプト及びＸＭＬ等で記述されたデータモデル定義ファイル、並びに、モデル変換定義ファイル等が格納されてもよい。
【０１５５】
本実施例では、静的制御部１３３が、図１２に示すＳＱＬクエリを上から順に実行する。なお、イコール記号の後のクエッションマークには、ユーザによって指定された識別番号が代入される。例えば、ＳＱＬクエリ１２０３が実行されると、リスト１２５０が出力され、各リストの値がＳＱＬクエリ１２０４〜１２０６に代入される。
【０１５６】
図１３は、本発明の第１の実施例における静的制御処理の詳細を説明するフローチャートである。
【０１５７】
静的制御処理は、静的制御部１３３によって実行される。静的制御部１３３は、静的制御情報１６０が設定された場合、静的制御情報１６０が更新された場合、又は、システムがリセットされる場合等、ブロックデータに静的ポテンシャル値を割り当てるときに、以下で説明する静的制御処理を開始する。
【０１５８】
なお、静的制御処理の実行時には、Ｌ２記憶領域１８２に、処理対象のブロックデータが格納されており、また、静的制御情報１６０、定義情報１５０及び階層設定情報６２０が予め設定されていることを前提とする。
【０１５９】
静的制御部１３３は、初期化処理の開始時間のタイムスタンプを取得する（ステップＳ１３０１）。静的制御部１３３は、静的制御処理が終了するまで取得された開始時間のタイムスタンプを保持する。取得された開始時間のタイムスタンプは、ブロックデータに対して初期化処理が実行されたか否かを判定するために用いられる。
【０１６０】
次に、静的制御部１３３は、静的制御情報１６０を反映したか否かを判定する（ステップＳ１３０２）。
【０１６１】
具体的には、静的制御情報１６０に含まれる全てのレコードについて処理が完了したか否かが判定される。
【０１６２】
静的制御情報１６０を反映したと判定された場合、静的制御部１３３は、処理を終了する。
【０１６３】
静的制御情報１６０を反映していないと判定された場合、静的制御部１３３は、静的制御情報１６０から一つのレコードを読み出し、読み出されたレコードに対してブロックデータの検索処理を実行する（ステップＳ１３０３）。
【０１６４】
ブロックデータの検索処理では、一つのユーザアプリケーションデータ１２０を構成するブロックデータを検索するための処理である。なお、ブロックデータの検索処理の詳細については、図１４を用いて後述する。
【０１６５】
次に、静的制御部１３３は、ブロックデータの検索処理によって検索された全てのブロックデータの初期化処理が完了したか否かを判定する（ステップＳ１３０４）。
【０１６６】
具体的には、静的制御部１３３は、検索されたブロックデータの数が設定されたカウンタ変数の値が、０であるか否かを判定する。当該カウンタ変数の値が０である場合、検索された全てのブロックデータの初期化処理が完了したと判定される。
【０１６７】
検索された全てのブロックデータの初期化処理が完了したと判定された場合、静的制御部１３３は、ステップＳ１３０２に戻り、同様の処理を実行する。
【０１６８】
検索された全てのブロックデータの初期化が完了していないと判定された場合、静的制御部１３３は、検索されたブロックデータを一つ選択し、選択されたブロックデータのタイムスタンプが、開始時間より古いか否かを判定する（ステップＳ１３０５）。ステップＳ１３０５の処理は、静的ポテンシャル値の更新処理であるか否かを判定するための処理である。具体的には、以下のような処理が実行される。
【０１６９】
静的制御部１３３は、ブロックデータを一つ選択したとき、カウンタ変数の値を「１」デクリメントする。また、静的制御部１３３は、ブロックデータ管理情報６００を参照して、選択されたブロックデータに対応するレコードのタイムスタンプ７０５を取得する。
【０１７０】
静的制御部１３３は、取得されたタイムスタンプ７０５と開始時間とを比較し、取得されたタイムスタンプ７０５より開始時間が大きいか否かを判定する。取得されたタイムスタンプ７０５より開始時間が大きい場合、選択されたブロックデータのタイムスタンプが、開始時間より古いと判定される。
【０１７１】
なお、選択されたブロックデータのタイムスタンプが開始時間より新しい場合、静的ポテンシャル値の更新処理であると判定できる。
【０１７２】
以上が、ステップＳ１３０５の処理である。
【０１７３】
選択されたブロックデータのタイムスタンプが開始時間より古いと判定された場合、静的制御部１３３は、選択されたブロックデータのタイムスタンプを更新する（ステップＳ１３０６）。
【０１７４】
具体的には、静的制御部１３３は、ブロックデータに対応するレコードのタイムスタンプ７０５に開始時間を上書きする。
【０１７５】
次に、静的制御部１３３は、選択されたブロックデータに対して、温度及びオフセットを初期化する（ステップＳ１３０７）。
【０１７６】
具体的には、静的制御部１３３は、ブロックデータ管理情報６００を参照し、選択されたブロックデータの当該ブロックに対応するレコードのオフセット７０３及び温度７０４に「０」を設定する。
【０１７７】
次に、静的制御部１３３は、選択されたブロックデータに対して、静的ポテンシャル値を設定する（ステップＳ１３０８）。
【０１７８】
具体的には、静的制御部１３３は、ブロックデータ管理情報６００を参照し、選択されたブロックデータに対応するレコードの静的ポテンシャル値７０２に、静的制御情報１６０の静的ポテンシャル値５０２を設定する。このとき、選択されたブロックデータによって構成される論理データに対応するレコードの静的ポテンシャル値５０２が設定される。
【０１７９】
次に、静的制御部１３３は、静的ポテンシャル値に基づいて、階層記憶領域のうち対応する記憶領域にブロックデータを配置し（ステップＳ１３０９）、その後ステップＳ１３０４に戻り同様の処理を実行する。
【０１８０】
具体的には、静的制御部１３３は、階層設定情報６２０を参照し、選択されたブロックデータの静的ポテンシャル値が含まれる閾値を特定する。さらに、静的制御部１３３は、特定された閾値に対応する記憶領域に、選択されたブロックデータを格納する。
【０１８１】
ステップＳ１３０５において、選択されたブロックデータのタイムスタンプが開始時間より古くないと判定された場合、すなわち、静的ポテンシャル値の更新処理である場合、静的制御部１３３は、新たに設定される静的ポテンシャル値が、選択されたブロックデータに設定される静的ポテンシャル値以上であるか否かを判定する（ステップＳ１３１０）。
【０１８２】
具体的には、静的制御部１３３は、ブロックデータ管理情報６００を参照し、新たに設定される静的ポテンシャル値と、選択されたブロックデータに対応するレコードの静的ポテンシャル値７０２とを比較する。静的制御部１３３は、当該比較の結果に基づいて、新たに設定される静的ポテンシャル値が、静的ポテンシャル値７０２以上であるか否かを判定する。
【０１８３】
新たに設定される静的ポテンシャル値が、選択されたブロックデータに設定される静的ポテンシャル値以上であると判定された場合、静的制御部１３３は、ステップＳ１３０８へ進む。一方、選択されたブロックデータに設定される静的ポテンシャル値より小さいと判定された場合、静的制御部１３３は、ステップＳ１３０９に進む。
【０１８４】
図１４は、本発明の第１の実施例におけるブロックデータの検索処理の詳細を説明するフローチャートである。
【０１８５】
ブロックデータの検索処理は、静的制御部１３３、データベース管理部１３１及びブロック取得部１３２が連携して処理を実行される。
【０１８６】
なお、ブロック検索処理では、ステップＳ１３０３において選択されたレコードの口座ＩＤ５０１が指定される。
【０１８７】
静的制御部１３３は、定義情報１５０を取得する（ステップＳ１４０１）。
【０１８８】
次に、静的制御部１３３は、指定された口座ＩＤ５０１及び定義情報１５０を用いて、ブロックデータの検索用ＳＱＬクエリを生成する（ステップＳ１４０２）。
【０１８９】
具体的には、静的制御部１３３は、ＳＱＬクエリ１２０１〜１２０３に、指定された口座ＩＤ５０１を設定する。
【０１９０】
次に、静的制御部１３３は、生成された検索用ＳＱＬクエリに基づいて、ブロックデータを検索する（ステップＳ１４０３）。
【０１９１】
具体的には、静的制御部１３３が、データベース管理部１３１又はブロック取得部１３２に対して、生成された検索用ＳＱＬクエリの実行指示を出力する。
【０１９２】
図１２に示す例では、ブロック取得部１３２にはＳＱＬクエリ１２０１、１２０２、１２０４〜１２０６の実行指示が出力され、データベース管理部１３１にはＳＱＬクエリ１２０３の実行指示が出力される。ここで、ブロック取得部１３２及びデータベース管理部１３１によって実行される処理について説明する。
【０１９３】
ブロック取得部１３２は、ＳＱＬクエリ１２０１を実行することによって、口座テーブル２１３から、指定された口座ＩＤに対応するレコードを構成するブロックデータを検索する。
【０１９４】
次に、ブロック取得部１３２は、ＳＱＬクエリ１２０２を実行することによって、帳簿リストテーブル２１２から、指定された口座ＩＤに対応する口座データを構成するブロックデータを検索する。
【０１９５】
次に、データベース管理部１３１は、ＳＱＬクエリ１２０３を実行することによって、帳簿リストテーブル２１２から、指定された口座ＩＤに対応する口座に関連する帳簿の元帳番号３０３を取得する。これによって、リスト１２５０が生成される。
【０１９６】
次に、静的制御部１３３は、ＳＱＬクエリ１２０３の実行結果であるリスト１２５０に基づいて、ＳＱＬクエリ１２０４〜１２０６を生成し、ブロック取得部１３２に、生成されたＳＱＬクエリ１２０４〜１２０６の実行指示を出力する。
【０１９７】
ブロック取得部１３２は、ＳＱＬクエリ１２０４〜１２０６を実行することによって、検索された帳簿テーブルを構成するブロックを全て検索する。
【０１９８】
なお、ＳＱＬクエリ１２０４〜１２０６は、ＳＱＬクエリ１２０３の実行結果であるリスト１２５０の長さＮに応じて、Ｎ回実行される。
【０１９９】
以上がステップＳ１４０３の処理である。
【０２００】
次に、静的制御部１３３は、検索されたブロックデータをＬ０記憶領域１８０に格納し（ステップＳ１４０４）、処理を終了する。
【０２０１】
（動的制御処理）
図１５は、本発明の第１の実施例における動的制御処理における構成例を示す説明図である。
【０２０２】
動的制御処理では、動的制御部１３４が、ユーザアプリケーションデータを構成する論理データに対するアクセス頻度の変化にしたがって、階層記憶領域へのブロックデータの配置場所を制御する。
【０２０３】
データベース管理部１３１は、ユーザアプリケーションプログラム１１０の処理要求に応じて、Ｌ１記憶装置１０３及びＬ２記憶装置１０４からレコード単位で論理データを読み出し、読み出された論理データをＬ０記憶領域１８０へ格納する。
【０２０４】
動的制御部１３４は、Ｌ０記憶領域１８０に格納された論理データに対してアクセスがあった場合、当該論理データを構成するブロックデータの温度を更新し、さらに動的ポテンシャル値を算出する。
【０２０５】
Ｌ０記憶領域１８０は、Ｌ１記憶領域１８１及びＬ２記憶領域１８２より、記憶容量が小さいため、Ｌ１記憶領域１８１及びＬ２記憶領域１８２に格納される全てのデータを格納できない。したがって、Ｌ０記憶領域１８０の使用容量が所定の閾値以上となった場合、記憶容量を確保するために、所定のデータをＬ０記憶領域１８０から他の記憶領域に書き戻す必要がある。
【０２０６】
そこで、動的制御部１３４は、空き領域を確保するために、不要なブロックデータ、すなわち、将来、アクセス頻度が低くなるブロックデータを特定する。本実施例では、前述したブロックデータを特定するために動的ポテンシャル値が用いられる。
【０２０７】
具体的には、動的制御部１３４は、階層設定情報６２０及び検索リスト６３０を参照して、Ｌ０記憶領域１８０から他の記憶領域に、動的ポテンシャル値が最も低いブロックデータを書き戻す。動的ポテンシャル値が低いブロックデータは、サービス提供中においてアクセス頻度が低いことを示す。したがって、サービスの継続中は、当該ブロックデータのアクセス頻度が低いと予測することができる。
【０２０８】
なお、Ｌ０記憶領域１８０の使用容量の閾値の情報は、閾値情報１５０３に格納される。例えば、Ｌ０記憶領域１８０の識別子と、Ｌ０記憶領域１８０に格納可能なブロックデータの数とが対応づけられている。なお、Ｌ０記憶領域１８０の使用容量、使用割合等の情報が対応づけられていてもよい。
【０２０９】
Ｌ０記憶領域１８０から他の記憶領域にブロックデータを書き戻すときに、Ｌ２記憶領域１８２から読み出されたブロックデータが、動的ポテンシャル値が上昇することによって、Ｌ１記憶領域１８１に書き戻される場合がある。しかし、Ｌ１記憶領域１８１は、Ｌ２記憶領域１８２より記憶容量が小さいため、Ｌ２記憶領域１８２の全てのブロックデータを格納できず、また、Ｌ１記憶領域１８１に格納された他のデータに対するアクセス性能も低下する。
【０２１０】
そのため、本実施例では、Ｌ１記憶領域１８１を通常領域１５２１と一時領域１５２２とに分けてブロックデータを管理する。具体的には、通常領域１５２１には、初期の配置時にＬ１記憶領域１８１に格納されたデータが格納され、一時領域１５２２には、初期の配置時にＬ２記憶領域１８２に格納されたデータが格納される。
【０２１１】
動的制御部１３４は、一時領域１５２２の使用容量が所定の閾値以上となった場合、一時領域１５２２に格納されたブロックデータをＬ２記憶領域１８２に書き戻す。
【０２１２】
そのため、本実施形態では、階層制御情報６４０は、一時領域１５２２に格納されるブロックデータを管理するための情報として、格納リスト１５０１及び一時領域割合情報１５０２を含む。
【０２１３】
格納リスト１５０１は、一時領域１５２２に格納されるブロックデータを管理するための情報である。格納リスト１５０１の詳細については、図１７を用いて後述する。一時領域割合情報１５０２は、Ｌ１記憶領域１８１のうち、一時領域１５２２として確保する記憶領域の割合を示す数値を格納する。
【０２１４】
なお、Ｌ１記憶領域１８１の使用容量の閾値は、閾値情報１５０３に格納される。
【０２１５】
図１６は、本発明の第１の実施例における検索リスト６３０の一例を示す説明図である。
【０２１６】
検索リスト６３０は、動的ポテンシャル値ごとに、ブロックデータの識別子のリストを有するデータ構造となっている。なお、ブロックデータのリストは、双方向リンクドリスト、かつ、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）リストとなっている。本実施例では、左から順に、ブロックデータのアクセス時間が最新であることを示す。
【０２１７】
以下の説明では、各動的ポテンシャル値におけるリストをクラスタと記載する。
【０２１８】
また、検索リスト６３０は、動的ポテンシャル値が大きい順に各クラスタがソートされた形式のデータとなっている。
【０２１９】
これによって、動的制御部１３４は、高速に、書き戻すブロックデータを検索することができる。
【０２２０】
図１７は、本発明の第１の実施例における格納リスト１５０１の一例を示す説明図である。
【０２２１】
格納リスト１５０１は、ブロックデータの識別子のリストから構成されるデータ構造となっている。なお、ブロックデータのリストは、双方向リンクドリスト、かつ、ＬＲＵ（Ｌｅａｓｔ  Ｒｅｃｅｎｔｌｙ  Ｕｓｅｄ）リストとなっている。本実施例では、左から順に、最新のブロックデータのアクセス時間が最新であることを示す。
【０２２２】
一時領域１５２２からＬ２記憶領域１８２にブロックデータを書き戻す場合に、動的制御部１３４が、格納リスト１５０１を用いて処理を実行する。そのため、格納リスト１５０１は、アクセス頻度が低いブロックデータを高速に検索できるＬＲＵリストとなっている。
【０２２３】
図１８Ａ及び図１８Ｂは、本発明の第１の実施例におけるデータの読出処理の詳細を説明するフローチャートである。
【０２２４】
データの読出処理は、データベース管理部１３１及び動的制御部１３４によって実行される。データの読出処理は、データベース管理部１３１が階層記憶領域から論理データを読み出す場合に開始される。
【０２２５】
なお、データの読出処理の実行時には、データベース管理部１３１によって、読み出される論理データを構成するブロックデータの識別子が指定される。
【０２２６】
データベース管理部１３１は、Ｌ０記憶領域１８０に、指定されたブロックデータの識別子に対応するブロックデータが格納されているか否かを判定する（ステップＳ１８０１）。以下、指定されたブロックデータの識別子に対応するブロックデータを対象ブロックデータとも記載する。
【０２２７】
具体的には、データベース管理部１３１は、Ｌ０記憶領域１８０から対象ブロックデータの読出処理を実行する。当該読出処理の結果、対象ブロックデータの読み出しに失敗した場合、データベース管理部１３１は、Ｌ０記憶領域１８０に、対象ブロックデータが格納されていないと判定する。
【０２２８】
Ｌ０記憶領域１８０に、対象ブロックデータが格納されていると判定された場合、データベース管理部１３１は、ステップＳ１８０４に進む。
【０２２９】
Ｌ０記憶領域１８０に、対象ブロックデータが格納されいないと判定された場合、データベース管理部１３１は、Ｌ１記憶領域１８１に、対象ブロックデータが格納されているか否かを判定する（ステップＳ１８０２）。ステップＳ１８０２の判定処理は、ステップＳ１８０１の判定処理と同一の処理が実行される。
【０２３０】
Ｌ１記憶領域１８１に、対象ブロックデータが格納されていると判定された場合、データベース管理部１３１は、Ｌ１記憶領域１８１から、対象ブロックデータを読み出し、読み出された対象ブロックデータをＬ０記憶領域１８０に格納し（ステップＳ１８０５）、その後、ステップＳ１８０４に進む。
【０２３１】
Ｌ１記憶領域１８１に、対象ブロックデータが格納されていないと判定された場合、データベース管理部１３１は、Ｌ２記憶領域１８２から、対象ブロックデータを読み出し、読み出された対象ブロックデータをＬ０記憶領域１８０に格納し（ステップＳ１８０３）、その後、ステップＳ１８０４に進む。
【０２３２】
なお、本実施例では、Ｌ２記憶領域に、全てのデータ（ブロックデータ）が格納されているため、必ず、データベースから対象ブロックデータを読み出すことができる。
【０２３３】
データベース管理部１３１は、Ｌ０記憶領域１８０に、対象ブロックデータが格納された後、動的制御部１３４を呼び出し（ステップＳ１８０４）、処理を終了する。
【０２３４】
動的制御部１３４は、データベース管理部１３１から呼び出されると、格納リスト１５０１を参照し、対象ブロックデータに対応する識別子が登録されているか否かを判定する（ステップＳ１８１１）。すなわち、対象ブロックデータが一時領域１５２２に格納されていたブロックデータであるか否かが判定される。
【０２３５】
格納リスト１５０１に、対象ブロックデータの識別子が登録されていないと判定された場合、動的制御部１３４は、ステップＳ１８１３に進む。
【０２３６】
格納リスト１５０１に、対象ブロックデータの識別子が登録されていると判定された場合、動的制御部１３４は、格納リスト１５０１から、対象ブロックデータの識別子を削除する（ステップＳ１８１２）。
【０２３７】
次に、動的制御部１３４は、対象ブロックデータの温度及び動的ポテンシャル値の更新処理を実行する（ステップＳ１８１３）。温度及び動的ポテンシャル値の更新処理の詳細については、図２０を用いて後述する。
【０２３８】
次に、動的制御部１３４は、更新された動的ポテンシャル値に基づいて、検索リスト６３０の更新処理を実行する（ステップＳ１８１４）。検索リスト６３０の更新処理の詳細については、図２１を用いて後述する。
【０２３９】
次に、動的制御部１３４は、閾値情報１５０３を参照し、Ｌ０記憶領域１８０の使用容量が所定の閾値以上であるか否かを判定する（ステップＳ１８１５）。すなわち、Ｌ０記憶領域１８０の空き容量を確保する必要があるか否かが判定される。
【０２４０】
具体的には、動的制御部１３４は、Ｌ０記憶領域１８０に格納されているブロックデータの数が、閾値以上であるか否かを判定する。
【０２４１】
Ｌ０記憶領域１８０の使用容量が所定の閾値より小さいと判定された場合、動的制御部１３４は、処理を終了する。
【０２４２】
Ｌ０記憶領域１８０の使用容量が所定の閾値以上であると判定された場合、動的制御部１３４は、ブロックデータの書戻処理を実行し（ステップＳ１８１６）、処理を終了する。これによって、Ｌ０記憶領域１８０から、Ｌ１記憶領域１８１又はＬ２記憶領域１８２のいずれかに、ブロックデータが書き戻される。なお、ブロックデータの書戻処理の詳細については、図２２を用いて後述する。
【０２４３】
図１９Ａ及び図１９Ｂは、本発明の第１の実施例におけるデータの書込処理の詳細を説明するフローチャートである。
【０２４４】
データの書込処理は、データベース管理部１３１及び動的制御部１３４によって実行される。データの書込処理は、データベース管理部１３１が、ユーザアプリケーションプログラム１１０からデータベースへの書込要求を受けた場合に開始される。
【０２４５】
なお、データの書込処理の実行時には、データベース管理部１３１によって、書き込むデータと、当該データを反映させるブロックデータの識別子とが指定される。
【０２４６】
データベース管理部１３１は、指定されたブロック識別子に対応するブロックデータに対して、書き込むデータを反映させる（ステップＳ１９０１）。
【０２４７】
データベース管理部１３１は、動的制御部１３４を呼び出し（ステップＳ１９０２）、処理を終了する。
【０２４８】
動的制御部１３４は、データベース管理部１３１から呼び出されると、ステップＳ１９１１〜ステップＳ１９１４の処理を実行する。なお、ステップＳ１９１１〜ステップＳ１９１４の処理は、ステップＳ１８１３〜ステップＳ１８１６と同一であるため説明を省略する。
【０２４９】
図２０は、本発明の第１の実施例における温度及び動的ポテンシャル値の更新処理の詳細を説明するフローチャートである。
【０２５０】
温度及び動的ポテンシャル値の更新処理の実行時には、更新対象のブロックデータの識別子が指定される。また、更新対象のブロックデータが、Ｌ０記憶領域１８０から他の記憶領域に書き戻されるブロックデータであることを示す情報が指定されてもよい。
【０２５１】
動的制御部１３４は、現在のタイムスタンプを取得する（ステップＳ２００１）。
【０２５２】
次に、動的制御部１３４は、過去のタイムスタンプを取得する（ステップＳ２００２）。
【０２５３】
具体的には、動的制御部１３４は、ブロックデータ管理情報６００を参照し、更新対象のブロックデータの対応するレコードのタイムスタンプ７０５からタイムスタンプを取得する。
【０２５４】
次に、動的制御部１３４は、現在のタイムスタンプ及び過去のタイムスタンプを用いて、更新対象のブロックデータが更新されるまでの経過時間を算出する（ステップＳ２００３）。
【０２５５】
具体的には、動的制御部１３４は、現在のタイムスタンプから過去のタイムスタンプを減算することによって、経過時間を算出する。なお、動的制御部１３４は、経過時間が算出された後、更新対象のブロックデータに対応するレコードのタイムスタンプ７０５に、現在のタイムスタンプを上書きする。
【０２５６】
次に、動的制御部１３４は、更新対象のブロックデータが、Ｌ０記憶領域１８０から書き戻されるブロックデータであるか否か判定する（ステップＳ２００４）。以下の説明では、現在格納されている記憶領域から他の記憶領域に書き戻されるブロックデータを、書き戻し対象のブロックデータとも記載する。ステップＳ２００４では、具体的には、以下のような判定方法が考えられる。
【０２５７】
読出処理及び書込処理の実行過程において当該更新処理が実行される場合、更新対象のブロックデータは書き戻し対象のブロックデータではないと判定される。また、書戻処理の実行過程において当該更新処理が実行される場合、更新対象のブロックデータは書き戻し対象のブロックデータであると判定される。
【０２５８】
また、動的制御部１３４が、更新処理の実行時に指定された情報を参照することによって、更新対象のブロックデータが書き戻し対象のブロックデータであるか否かを判定してもよい。
【０２５９】
更新対象のブロックデータが書き戻し対象のブロックデータであると判定された場合、動的制御部１３４は、当該ブロックデータの温度を下げて（ステップＳ２００５）、ステップＳ２００６に進む。
【０２６０】
具体的には、動的制御部１３４は、温度下降関数８１２に、算出された経過時間を代入することによって、変化値を算出する。なお、算出された変化値は、式（１）における関数Ｔの値に対応する。
【０２６１】
一方、更新対象のブロックデータが書き戻し対象のブロックデータでないと判定された場合、動的制御部１３４は、当該ブロックデータの温度を上げて（ステップＳ２００９）、ステップＳ２００６に進む。
【０２６２】
具体的には、動的制御部１３４は、温度上昇関数８１１に、算出された経過時間を代入することによって、変化値を算出する。なお、算出された変化値は、式（１）における関数Ｔの値に対応する。
【０２６３】
次に、動的制御部１３４は、算出された変化値を用いて、更新対象のブロックデータの温度を更新する（ステップＳ２００６）。
【０２６４】
具体的には、動的制御部１３４は、ブロックデータ管理情報６００を参照し、更新対象のブロックデータに対応するレコードの温度７０４に、算出された変化値を加算する。
【０２６５】
なお、温度上昇関数８１１を用いて算出された変化値は正の値であるため、温度７０４の値は大きくなる。一方、温度下降関数８１２を用いて算出された変化値は負の値であるため、温度７０４の値は小さくなる。
【０２６６】
次に、動的制御部１３４は、オフセットを算出する（ステップＳ２００７）。すなわち、式（１）の左側の１項目の値が算出される。
【０２６７】
具体的には、動的制御部１３４は、更新された温度７０４をＴｍａｘで除算して第１算出値を算出し、当該第１算出値をＰｏｆｆｓｅｔに乗算することによって、オフセットを算出する。このとき、動的制御部１３４は、算出されたオフセットを、更新対象のブロックデータに対応するレコードのオフセットに格納する。
【０２６８】
次に、動的制御部１３４は、動的ポテンシャル値を算出し（ステップＳ２００８）、処理を終了する。
【０２６９】
具体的には、動的制御部１３４は、更新対象のブロックデータに対応するレコードの静的ポテンシャル値７０２から静的ポテンシャル値を取得し、取得された静的ポテンシャル値にオフセットを加算することによって、動的ポテンシャル値を算出する。算出された動的ポテンシャル値は、メモリ１０２上に一時的に格納される。
【０２７０】
図２１は、本発明の第１の実施例における検索リスト６３０の更新処理の詳細を説明するフローチャートである。
【０２７１】
検索リスト６３０の更新処理の実行時には、更新対象のブロックデータの識別子、及び当該ブロックデータの動的ポテンシャル値が指定される。
【０２７２】
動的制御部１３４は、検索リスト６３０に、指定された動的ポテンシャル値に対応するクラスタが存在するか否かを判定する（ステップＳ２１０１）。以下の説明では、指定された動的ポテンシャル値に対応するクラスタを対象クラスタとも記載する。
【０２７３】
具体的には、動的制御部１３４は、検索リスト６３０のクラスタを上から順に参照して、指定された動的ポテンシャル値と一致するクラスタを検索する。
【０２７４】
対象クラスタが存在すると判定された場合、動的制御部１３４は、ステップＳ２１０３に進む。
【０２７５】
対象クラスタが存在しないと判定された場合、動的制御部１３４は、検索リスト６３０に新たにクラスタを追加する（ステップＳ２１０２）。
【０２７６】
このとき、上から順に、クラスタの動的ポテンシャル値が大きくなるように、クラスタが追加される。なお、動的制御部１３４は、クラスタを追加した後、クラスタの動的ポテンシャル値に基づいて、クラスタをソートしてもよい。
【０２７７】
次に、動的制御部１３４は、更新対象のブロックデータが、新規なブロックデータであるか否かを判定する（ステップＳ２１０３）。
【０２７８】
具体的には、動的制御部１３４は、更新対象のブロックデータがＬ０記憶領域１８０に格納されているか否かを判定する。当該ブロックデータがＬ０記憶領域１８０に格納されていない場合、更新対象のブロックデータは、新規なブロックデータであると判定される。
【０２７９】
更新対象のブロックデータが新規なブロックデータであると判定された場合、動的制御部１３４は、ステップＳ２１０６に進む。これは、新規なブロックデータである場合、対象クラスタには、当該ブロックデータの識別子が登録されていないためである。
【０２８０】
更新対象のブロックデータが新規なブロックデータでないと判定された場合、動的制御部１３４は、対象クラスタから当該ブロックデータを削除する（ステップＳ２１０４）。
【０２８１】
具体的には、動的制御部１３４は、更新対象のブロックデータが所属するクラスタから、当該ブロックデータの識別子を削除する。また、動的制御部１３４は、削除された識別子が他のブロックデータの識別子とリンクされている場合には、当該リンク関係も更新する。
【０２８２】
次に、動的制御部１３４は、対象クラスタの最も右側に、更新対象のブロックデータの識別子を追加する（ステップＳ２１０５）。
【０２８３】
図１６で説明したように、検索リスト６３０に含まれるクラスタは、ＬＲＵリストとなっているため、アクセス時間が最新であることを示す右側に、更新対象のブロックデータに対応する識別子が追加される。
【０２８４】
次に、動的制御部１３４は、空のクラスタが存在するか否かを判定する（ステップＳ２１０６）。
【０２８５】
具体的には、動的制御部１３４は、上から順に検索リスト６３０を参照し、ブロックデータの識別子が含まれないクラスタを検索する。ブロックデータの識別子が存在しないクラスタが、空のクラスタとして検索される。
【０２８６】
空のクラスタが存在しないと判定された場合、動的制御部１３４は、処理を終了する。
【０２８７】
空のクラスタが存在すると判定された場合、動的制御部１３４は、検索リスト６３０から、当該空のクラスタを削除し（ステップＳ２１０７）、処理を終了する。
【０２８８】
図２２は、本発明の第１の実施例における書戻処理の詳細を説明するフローチャートである。
【０２８９】
動的制御部１３４は、検索リスト６３０を参照し、動的ポテンシャル値が最も低いクラスタを選択する（ステップＳ２２０１）。
【０２９０】
次に、動的制御部１３４は、選択されたクラスタの最も左側のブロックデータの識別子を選択する（ステップＳ２２０２）。すなわち、アクセス時間が最も古いブロックデータが、書き戻し対象のブロックデータとして選択される。
【０２９１】
なお、書き出し対象のブロックデータは一つである必要はなく、二つ以上選択してもよい。この場合、アクセス時間が古いブロックデータから順番に選択する方法が考えられる。
【０２９２】
次に、動的制御部１３４は、書き戻し対象のブロックデータの温度及び動的ポテンシャル値の更新処理を実行する（ステップＳ２２０３）。なお、温度及び動的ポテンシャル値の更新処理は、図２０で説明した処理と同一の処理である。
【０２９３】
次に、動的制御部１３４は、選択されたクラスタから、選択されたブロックデータの識別子を削除する（ステップＳ２２０４）。ステップＳ２２０４の処理は、ステップＳ２１０４と同一の処理である。
【０２９４】
次に、動的制御部１３４は、選択されたクラスタが空であるか否かを判定する（ステップＳ２２０５）。
【０２９５】
具体的には、動的制御部１３４は、選択されたクラスタに一つ以上のブロックデータの識別子が含まれるか否かを判定する。選択されたクラスタに一つ以上のブロックデータの識別子が含まれる場合、選択されたクラスタは空でないと判定される。
【０２９６】
選択されたクラスタが空であると判定された場合、動的制御部１３４は、検索リスト６３０から当該クラスタを削除し（ステップＳ２２０８）、ステップＳ２２０６に進む。
【０２９７】
選択されたクラスタが空でないと判定された場合、動的制御部１３４は、選択されたブロックデータが、初期配置時にＬ２記憶領域１８２に格納され、かつ、Ｌ１記憶領域１８１に書き戻されるブロックデータであるか否か判定する（ステップＳ２２０６）。具体的には、以下のような処理が実行される。
【０２９８】
動的制御部１３４は、ブロックデータ管理情報６００を参照し、選択されたブロックデータに対応するレコードの静的ポテンシャル値７０２を取得する。動的制御部１３４は、取得された静的ポテンシャル値７０２と階層設定情報６２０とを比較して、初期配置時に、選択されたブロックデータがＬ２記憶領域１８２に格納されていたか否かを判定する。
【０２９９】
さらに、動的制御部１３４は、算出された動的ポテンシャル値と階層設定情報６２０を比較し、Ｌ１記憶領域１８１に書き戻されるブロックデータであるか否かを判定する。
【０３００】
ステップＳ２２０６の条件を満たさないと判定された場合、動的制御部１３４は、算出された動的ポテンシャル値に基づいて、所定の記憶領域に、選択されたブロックデータを書き戻す（ステップＳ２２０７）。
【０３０１】
具体的には、動的ポテンシャル値がＬ１記憶領域１８１に設定された閾値の範囲内にある場合、選択されたブロックデータは、Ｌ１記憶領域１８１の通常領域１５２１に格納され、動的ポテンシャル値がＬ２記憶領域１８２に設定された閾値の範囲内にある場合、選択されたブロックデータは、Ｌ２記憶領域１８２に格納される。
【０３０２】
ステップＳ２００６の条件を満たさないと判定された場合、動的制御部１３４は、格納リスト１５０１に、選択されたブロックデータの識別子を登録する（ステップＳ２２０９）。その後、動的制御部１３４は、Ｌ１記憶領域１８１の一時領域１５２２に、選択されたブロックデータを書き戻し（ステップＳ２２１０）、処理を終了する。
【０３０３】
具体的には、選択されたブロックデータの識別子が最も右側に追加される。
【０３０４】
図２３は、本発明の第１の実施例における一時領域１５２２における書戻処理の詳細を説明するフローチャートである。
【０３０５】
一時領域１５２２における書戻処理は、タイマに基づいて、周期的に実行される。
【０３０６】
動的制御部１３４は、格納リスト１５０１及び閾値情報１５０３を参照し、一時領域１５２２に格納されるブロックデータのサイズが所定の閾値以上であるか否かを判定する（ステップＳ２２０１）。すなわち、一時領域１５２２からＬ２記憶領域１８２にブロックデータを書き戻す必要があるか否かが判定される。
【０３０７】
一時領域１５２２に格納されるブロックデータのサイズが所定の閾値より小さいと判定された場合、動的制御部１３４は、処理を終了する。
【０３０８】
一時領域１５２２に格納されるブロックデータのサイズが所定の閾値以上であると判定された場合、動的制御部１３４は、書き戻し対象のブロックデータの識別子を格納リスト１５０１から削除する（ステップＳ２３０２）。
【０３０９】
具体的には、動的制御部１３４は、格納リスト１５０１を参照し、アクセス時間が最も古い、すなわち、最も左側のブロックデータの識別子を削除する。
【０３１０】
次に、動的制御部１３４は、書き戻し対象のブロックデータの温度及びオフセットを初期化する（ステップＳ２３０３）。
【０３１１】
具体的には、動的制御部１３４は、一度、Ｌ０記憶領域１８０に、書き戻し対象のブロックデータを読み出し、ブロックデータ管理情報６００を参照して、当該ブロックデータに対応するレコードのオフセット７０３及び温度７０４に「０」を設定する。
【０３１２】
次に、動的制御部１３４は、初期に配置された記憶領域に、書き戻し対象のブロックデータを書き戻す（ステップＳ２３０４）。
【０３１３】
具体的には、動的制御部１３４は、当該ブロックデータの静的ポテンシャル値及び階層設定情報６２０に基づいて、初期に配置された記憶領域を特定し、特定された記憶領域に当該ブロックデータを書き戻す。
【０３１４】
第１の実施例では、計算機１００が、単一のユーザアプリケーションプログラムを備えるものとして説明したが、本発明はこれに限定されない。例えば、種類が異なる複数のユーザアプリケーションプログラムが、同時に、データベースにアクセスしてもよい。
【０３１５】
アクセス対象のデータを共有しない場合、ユーザアプリケーションプログラムごとに静的制御情報を生成し、各ブロック等へ反映すればよい。また、アクセス対象のデータを共有する場合、データを共有する複数のユーザアプリケーションプログラムの業務情報を一つとみなして当該業務情報を解析し、共通の静的制御情報を生成し、共通の静的制御情報をブロックデータに反映すればよい。
【０３１６】
以上のように、第１の実施例によれば、データベース管理プログラム１３０が制御するデータの単位（テーブル単位）に依存することなく、ユーザアプリケーションデータに対して、静的制御情報を付与することができる。また、静的制御情報が付与された論理データを、ブロック単位に管理することによって、動的制御情報をブロック単位に付与することができる。これによって、静的制御処理及び動的制御処理を組み合わせた階層的な記憶領域におけるデータ配置を実現することができる。
【０３１７】
［第２の実施例］
第１の実施例では、データストアとしてデータベースを用いていたが、第２の実施例では、データストアとしてファイルシステムを用いる点が異なる。
【０３１８】
以下、第１の実施例との差異を中心に第２の実施例について説明する。なお、第１の実施例と同一の構成は同一の符号を付与し、同一の構成については説明を省略する。
【０３１９】
図２４は、本発明の第２の実施例における計算機システムの構成例を示すブロック図である。
【０３２０】
第２の実施例では、計算機１００は、データベース管理プログラム１３０の代わりに、ファイルシステム２４１０を備え、データベース管理部１３１の代わりにファイルシステム管理部２４１１を備える。また、計算機１００は、データベース管理情報１４０の代わりにファイルシステム管理情報２４２０を格納する。ファイルシステム管理情報２４２０には、テーブルデータ１４１の代わりにファイルデータ２４２１が含まれる。
【０３２１】
ファイルシステム２４１０は、ファイルシステム管理情報２４２０を用いて、階層記憶領域内のデータを制御し、ファイルシステム機能を提供する。
【０３２２】
ファイルシステム管理部２４１１は、ファイルシステムの管理及び階層記憶領域のＩ／Ｏ制御を行う。
【０３２３】
ファイルシステム管理情報２４２０は、ファイルシステム２４１０が実行する処理に関する情報を格納し、ファイルデータ２４２１のほかに、ファイルシステムの機能を実現するために必要な情報（図示省略）を含む。
【０３２４】
ファイルデータ２４２１は、ファイルシステムにおける個々のファイルに関する情報を格納する。個々のファイルは、第１の実施例と同様にブロックから構成される。
【０３２５】
また、本実施例形態では、データストアとしてファイルシステムを用いているため、定義情報１５０には、ＳＱＬクエリを用いたブロックデータの取得方法とは異なる情報が格納される。例えば、ＯＳが提供するシステムコール等を用いて、ファイル名及びファイルのオフセット等を指定することによって、ブロックを取得する方法が考えられる。
【０３２６】
なお、その他の構成及び実行される処理は、第１の実施例と同一である。
【０３２７】
第２の実施例によれば、ファイルシステム２４１０が制御するデータの単位（ファイル）に依存することなく、論理データに対して、静的制御情報を付与することができる。また、静的制御情報が付与された論理データを、ブロック単位に管理することによって、動的制御情報をブロック単位に付与することができる。これによって、静的制御処理と動的制御処理を組み合わせた、階層的な記憶領域の制御を、通常のファイルにおいても、実現することができる。
【０３２８】
なお、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
【０３２９】
さらに、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
【０３３０】
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
【符号の説明】
【０３３１】
１００  計算機
１０１  プロセッサ
１０２  メモリ
１０３  Ｌ１記憶装置
１０４  Ｌ２記憶装置
１１０  ユーザアプリケーションプログラム
１２０  ユーザアプリケーションデータ
１３０  データベース管理プログラム
１３１  データベース管理部
１３２  ブロック取得部
１３３  静的制御部
１３４  動的制御部
１４０  データベース管理情報
１４１  テーブルデータ
１５０  定義情報
１６０  静的制御情報
１７０  動的制御情報
１８０  Ｌ０記憶領域
１８１  Ｌ１記憶領域
１８２  Ｌ２記憶領域
６００  ブロックデータ管理情報
６１０  関数情報
６２０  階層設定情報
６３０  検索リスト
６４０  階層制御情報
１５０１  格納リスト
１５０２  一時領域割合情報
１５０３  閾値情報
１５２１  通常領域
１５２２  一時領域
２４１０  ファイルシステム
２４１１  ファイルシステム管理部
２４２０  ファイルシステム管理情報
２４２１  ファイルデータ
【図１】
2013246773.tif 000004
【図２】
2013246773.tif 000005
【図３Ａ】
2013246773.tif 000006
【図３Ｂ】
2013246773.tif 000007
【図４】
2013246773.tif 000008
【図５】
2013246773.tif 000009
【図６】
2013246773.tif 000010
【図７】
2013246773.tif 000011
【図８】
2013246773.tif 000012
【図９】
2013246773.tif 000013
【図１０】
2013246773.tif 000014
【図１１】
2013246773.tif 000015
【図１２】
2013246773.tif 000016
【図１３】
2013246773.tif 000017
【図１４】
2013246773.tif 000018
【図１５】
2013246773.tif 000019
【図１６】
2013246773.tif 000020
【図１７】
2013246773.tif 000021
【図１８Ａ】
2013246773.tif 000022
【図１８Ｂ】
2013246773.tif 000023
【図１９Ａ】
2013246773.tif 000024
【図１９Ｂ】
2013246773.tif 000025
【図２０】
2013246773.tif 000026
【図２１】
2013246773.tif 000027
【図２２】
2013246773.tif 000028
【図２３】
2013246773.tif 000029
【図２４】
2013246773.tif 000030