(57)【特許請求の範囲】
【請求項１】
データベースを記憶する複数の記憶装置を管理する管理システムであって、
データベースをアクセスするアクセス命令の処理によって複数のテーブルがアクセスされた履歴を取得する履歴取得部と、
前記データベースをアクセスするアクセス命令を取得するアクセス命令取得部と、
前記履歴取得部が取得したアクセス履歴に基づいて、前記取得したアクセス命令に応じて複数のテーブルがアクセスされるアクセス順序を予測する予測部と、
前記予測部が予測したアクセス順序に従って前記複数のテーブルを順に、前記複数の記憶装置間でミラーリングさせる配置変更部と、
を備える管理システム。
【請求項２】
前記配置変更部は、前記予測部が予測した前記アクセス順序に従って、前記複数のテーブルのうちアクセスが完了したテーブルのミラーリングを解除して、新たにアクセスが開始する他のテーブルを新たにミラーングさせる
請求項１に記載の管理システム。
【請求項３】
前記予測部は更に、前記取得したアクセス命令に応じてアクセスされる複数のテーブルに対するアクセス量を判断し、
前記配置変更部は、前記アクセス量がより大きいと判断したテーブルを、より優先してミラーリングさせる
請求項１または２に記載の管理システム。
【請求項４】
前記配置変更部は、新たに取得したアクセス命令に応じてアクセスされるテーブルに対するアクセス量が、前記複数の記憶装置間でミラーリングされている他のテーブルに対するアクセス量よりも大きい場合に、前記新たに取得したアクセス命令に応じてアクセスされるテーブルを、前記他のテーブルより優先してミラーリングさせる
請求項３に記載の管理システム。
【請求項５】
前記配置変更部は、前記複数の記憶装置が有する複数のボリュームのうち、前記予測部が予測したテーブルを記憶しているボリュームを特定し、特定したボリュームを、前記複数の記憶装置間でミラーリングさせる
請求項１から４のいずれか一項に記載の管理システム。
【請求項６】
前記配置変更部は、前記予測部が予測したテーブルに割り当てられた複数のボリュームのうち、前記アクセス命令に応じてアクセス対象となるボリュームを特定し、特定したボリュームをミラーリングさせる
請求項５に記載の管理システム。
【請求項７】
前記複数の記憶装置は、ストレージエリアネットワーク（ＳＡＮ）を介して接続される
請求項１から６のいずれか一項に記載の管理システム。
【請求項８】
前記配置変更部は、前記予測部が予測したテーブルを、前記複数の記憶装置のうちの第１の記憶装置と、前記第１の記憶装置よりもアクセス性能が高い第２の記憶装置との間で、ミラーリングさせる
請求項７に記載の管理システム。
【請求項９】
データベースを記憶する複数の記憶装置を管理する管理システム用のプログラムであって、コンピュータを、
請求項１から８のいずれか一項に記載の管理システムとして機能させるプログラム。
【請求項１０】
データベースを記憶する複数の記憶装置を管理する方法であって、
データベースをアクセスするアクセス命令の処理によって複数のテーブルがアクセスされた履歴を取得するステップと、
前記データベースをアクセスするアクセス命令を取得するステップと、
取得したアクセス履歴に基づいて、前記取得したアクセス命令に応じて複数のテーブルがアクセスされるアクセス順序を予測するステップと、
予測されたアクセス順序に従って前記複数のテーブルを順に、前記複数の記憶装置間でミラーリングさせるステップと、
を備える方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス予測に基づいてテーブルのミラーリングを制御する管理システム、プログラムおよび方法に関する。
【背景技術】
【０００２】
リレーショナル・データベースの遠隔ミラーを生成するプロセスを自動化する技術が知られている（たとえば、特許文献１参照。）。また、データベースミラーリング環境においてデータを復元する技術が知られている（たとえば、特許文献２参照。）。
［先行技術文献］
［特許文献］
［特許文献１］特表２００７−５２９０５９号公報
［特許文献２］特表２００８−５２５９１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データベースシステムにおいて、テーブルのデータを格納するストレージ装置の記憶容量を有効利用しつつ、テーブルからの読み出しパフォーマンスを高めることが困難であった。
【課題を解決するための手段】
【０００４】
上記課題を解決するために、本発明の一態様においては、データベースを記憶する複数の記憶装置を管理する管理システムであって、データベースをアクセスするアクセス命令の処理によって複数のテーブルがアクセスされた履歴を取得する履歴取得部と、データベースをアクセスするアクセス命令を取得するアクセス命令取得部と、前記履歴取得部が取得したアクセス履歴に基づいて、前記取得したアクセス命令に応じて複数のテーブルがアクセスされるアクセス順序を予測する予測部と、前記予測部が予測したアクセス順序に従って前記複数のテーブルを順に、前記複数の記憶装置間でミラーリングさせる配置変更部とを備える。
【０００５】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【０００６】
【図１】本実施形態に係るデータベースシステム５０の構成を示す図である。
【図２】データベース管理装置１００のブロック構成を示す図である。
【図３】データベースシステム５０における一連の処理を模式的に示す図である。
【図４】データベース管理装置１００の動作フローを示す図である。
【図５】ステップＳ４１４の処理の詳細を示す図である。
【図６】順次に実行されるアクセス命令の一例を示す図である。
【図７】ミラーリングのスケジュール結果の一例を示す図である。
【図８】アクセス対象テーブルを予測する一連の処理を模式的に示す図である。
【図９】アクセス履歴の一例を模式的に示す図である。
【図１０】ミラーリングするボリューム１５０の選択例を示す図である。
【図１１】コンピュータ１９００のハードウェア構成の一例を示す。
【発明を実施するための形態】
【０００７】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【０００８】
図１は、本実施形態に係るデータベースシステム５０の構成を示す。データベースシステム５０は、例えばＳＡＮ（Ｓｔｏｒａｇｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）を用いて構築した大容量かつ高速なネットワークストレージに、データベースを構築する。
【０００９】
ＳＡＮを導入すると、複数のストレージを一元化でき、既存のストレージの消費状況に合わせて新規のストレージを追加していくことができる。しかし、単にＳＡＮを導入するだけでは、既存のストレージを十分に有効利用できないという課題がある。例えば、新規のストレージの高速性を生かすべく、既存のデータを全て新規のストレージに移行させると、既存のストレージが有効利用されずに無駄となってしまう。既存のストレージに既存のデータを残したまま新規データを新規のストレージに保管するようにしても、既存のデータに対するアクセスパフォーマンスを高めることはできない。情報ライフサイクル管理（ＩＬＭ）を実施して、新規のストレージと既存のストレージとにデータを分散配置した場合でも、利用頻度に応じて適切にＩＬＭ定義をすることは容易ではない。場合によっては、第２層より低いストレージにはほとんどアクセスが無くなってしまう。これでは、既存のストレージを有効に利用するとは言い難く、既存のストレージのランニングコストが無駄となってしまう。
【００１０】
ところで、ＳＡＮで構築されたストレージシステムに対し仮想化技術を用いることで、ＳＡＮで提供されるストレージ空間を一元管理することができる。例えばＳＡＮで構築されたストレージ空間を複数のボリュームとして管理して、ボリュームのミラーリングをすることができる。これにより、ストレージシステムの可用性を高めることができる。また、ボリュームのミラーリングをオンラインで実行したり切断したりすることで、望ましいボリュームをミラーリングすることができる。しかし、ＳＡＮで構築されたストレージ空間に配置されているデータの内容が分からない限り、効率的にミラーリングすることはできない。例えば、ほとんどアクセスされないデータを格納したボリュームをミラーリングしている状態は、効率的にミラーリングされている状態とはいえない。
【００１１】
そこで、本実施形態に係るデータベースシステム５０では、本課題を解決する管理システムを提供することを一つの目的とする。データベースシステム５０は、データベース管理装置１００、スイッチ１２０、ネットワークストレージ１３０、ネットワーク１８０、および、クライアント装置１９０を備える。データベース管理装置１００は、クライアント装置１９０からネットワーク１８０を通じてデータベースリクエストを受け取り、受け取ったデータベースリクエストに応じたデータベース処理を実行する。例えば、クライアント装置１９０は、データベースにアクセスするためのアクセス命令を含むデータベースリクエストをデータベース管理装置１００に送信する。データベース管理装置１００は、アクセス命令に基づいて、ネットワークストレージ１３０が記憶しているデータにアクセスする。
【００１２】
ネットワークストレージ１３０は、データベースを構成する複数のテーブルに属するデータを記憶する。ネットワークストレージ１３０は、ＳＡＮで構築されたネットワークストレージであってよい。例えば、複数の記憶装置１４０ａ〜ｈが、Ｆｉｂｒｅ  Ｃｈａｎｎｅｌ等のリング型ネットワークによってＳＡＮを構成して、ネットワークストレージ１３０として機能する。複数の記憶装置１４０は、スイッチ１２０と、記憶装置１４０を管理するストレージ管理装置１１０とを介して、データベース管理装置１００に接続される。すなわち、複数の記憶装置１４０はＳＡＮを介して接続される。そして、データベース管理装置１００は、ＳＡＮを介して複数の記憶装置１４０と接続される。ストレージ管理装置１１０は、ＳＡＮで構築されたネットワークストレージ１３０に対し仮想化技術を用いて、ストレージ空間を一元管理する。
【００１３】
複数の記憶装置１４０ａ〜ｈは、例えばハードディスクドライブ等の磁気記録装置、ＳＳＤ（Ｆｌａｓｈ  Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の半導体記憶装置であってよい。本実施形態では、複数の記憶装置１４０ａ〜ｈは、ドライブ装置全体のような単一の装置とする。しかし、記憶装置とは、単一の装置ではなく、パーティションまたは物理ボリュームを含む概念であってよい。本実施形態に係るデータベースシステム５０の説明において、複数の記憶装置１４０ａ〜ｈを、複数の記憶装置１４０または単に記憶装置１４０と総称する場合がある。
【００１４】
ストレージ管理装置１１０は、記憶装置１４０によって提供される複数のボリューム１５０ａ〜ｈを制御する。例えば、ストレージ管理装置１１０は、複数のボリューム１５０に対してデータの読み書きをする。また、ストレージ管理装置１１０は、複数のボリューム１５０ａ〜ｈのミラーリングを制御する。ミラーリング制御の具体例については後述する。ストレージ管理装置１１０は、例えば記憶装置１４０に対してコマンド等を発行することにより、記憶装置１４０の各々を制御する。複数のボリューム１５０ａ〜ｈは、物理ボリュームであってよく、論理ボリュームであってもよい。本実施形態に係るデータベースシステム５０の説明において、複数のボリューム１５０ａ〜ｈを、複数のボリューム１５０または単にボリューム１５０と総称する場合がある。
【００１５】
データベースを構成する複数のテーブルはそれぞれ、複数のボリューム１５０にデータが分散されて記憶されてよい。例えば、１つのテーブルが複数のコンテナファイルで構成され、当該複数のコンテナファイルが異なるボリューム１５０に分散して配置されてよい。１つのボリューム１５０は、１以上のテーブルに属するデータを記憶してよい。例えば、１つのボリューム１５０に、異なるテーブルのコンテナファイルが格納されてもよい。
【００１６】
テーブルに格納されるデータがデータ部分毎に異なる記憶装置１４０のボリューム１５０に配置されている場合、同一テーブルのデータに平行して読み書きをすることができる。また、後述するように、異なる記憶装置１４０によって提供される複数のボリューム１５０を用いてテーブルがミラーリングされている場合、ミラーリングに用いられる複数の記憶装置１４０に対して読み出し要求を発行することができる。そしていずれかの記憶装置１４０からデータが返却されると、当該データをテーブルのデータとして採用することができる。このため、１つの記憶装置１４０から返却された時点で読み出しを完了することができるので、読み出しを高速化することができる。このため、ＩＯ速度を高速化することができる。
【００１７】
ここで、データベース管理装置１００は、クライアント装置１９０からのアクセス命令に基づいてアクセス対象となるテーブルを特定して、当該テーブルを優先的にミラーリングさせる。例えば、データベース管理装置１００は、アクセス命令に基づいてアクセス対象となるテーブルを事前に予測して、当該テーブルのデータを格納しているボリューム１５０を事前に選択的にミラーリングさせておく。具体的には、データベース管理装置１００は、選択的にミラーリングさせる命令を、ストレージ管理装置１１０に発行する。これにより、アクセス予定のないボリューム１５０のミラーリングを解除して、アクセス予定のあるボリューム１５０のミラーリングを事前に開始させることができる。したがって、ネットワークストレージ１３０の容量を有効に利用しつつ、読み出し速度を高めることができる。特に、バッチ処理などのように、特定のテーブルに対して大量のアクセスが発生し続ける場合に、読み出し速度を高めることができる。
【００１８】
データベースシステム５０の利用態様の一例として、既存のストレージ１６０ｂで運用されているデータベースシステムに、新規にストレージ１６０ａを追加してデータベースシステム５０として運用するケースを取り上げて説明する。既存のストレージ１６０ｂは、記憶装置１４０ｆ〜ｈを提供する。すなわち、既存のストレージ１６０ｂは、ボリューム１５０ｆ〜ｈを提供する。新規のストレージ１６０ａは、記憶装置１４０ａ〜ｅを提供する。すなわち、新規のストレージ１６０ａは、ボリューム１５０ａ〜ｅを提供する。
【００１９】
データベースシステム５０は、例えばストレージ１６０ｂに格納されていた全てのテーブルデータを、より大容量のストレージ１６０ａに移行して、データベースシステムの運用を開始する。データベースシステムの運用開始時には、ストレージ１６０ｂが提供するボリューム１５０ｆ〜ｈを用いて全てのテーブルをミラーリングすることができる。しかし、データベースの運用を続けていき格納するデータが増大すると、全てのテーブルをミラーリングをすることができなくなる場合がある。
【００２０】
しかし、上述したようにデータベース管理装置１００は、アクセス命令に基づいて、アクセス予定のないボリューム１５０のミラーリングを解除して、アクセス予定のあるボリューム１５０のミラーリングを開始させることができる。したがって、データベースシステム５０によれば、全てのテーブルをミラーリングできないほどデータが増大した場合でも、ミラーリングするテーブルを切り替えることができる。このため、既存のストレージ１６０ｂを有効に活用することができ、読み出しアクセスの速度を維持した状態で運用を続けることができる。
【００２１】
図２は、データベース管理装置１００のブロック構成を示す。データベース管理装置１００は、アクセス命令取得部２００、アクセス命令解析部２１０、予測部２２０、実行部２３０、配置変更部２４０、データ取得部２５０、データ返却部２８０、履歴取得部２６０、および、履歴記録部２７０を有する。
【００２２】
アクセス命令取得部２００は、データベースをアクセスするアクセス命令を取得する。例えば、アクセス命令取得部２００は、クライアント装置１９０が発行したアクセス命令を取得する。アクセス命令としては、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）により記述された参照要求または更新要求の命令であってよい。また、アクセス命令としては、ストアドプロシージャのように、データベースに対する一連の手続をまとめた関数をコールする命令を含んでよい。
【００２３】
アクセス命令解析部２１０は、アクセス命令取得部２００が取得したアクセス命令を解析する。例えば、アクセス命令解析部２１０は、ＳＱＬで記述されたＳＱＬ命令をコンパイルして、テーブルに対するアクセスパスを決定する。アクセス命令が静的ＳＱＬであり既にプリコンパイルされている場合、アクセス命令解析部２１０は、プリコンパイル時に決定されたアクセスパスを読み出す。
【００２４】
予測部２２０は、アクセス命令取得部２００が取得したアクセス命令に応じてアクセスされるテーブルを予測する。例えば、予測部２２０は、アクセス命令解析部２１０が決定したアクセスパスに基づいて、いずれのテーブルがアクセスされるかを予測する。
【００２５】
配置変更部２４０は、予測部２２０が予測したテーブルを、複数の記憶装置１４０間でミラーリングさせる。例えば、配置変更部は１４０は、予測部２２０が予測したテーブルを、複数の記憶装置１４０のうちの記憶装置１４０ｅと、記憶装置１４０ｅよりもアクセス性能が高い記憶装置ａとの間で、ミラーリングさせる。具体的には、配置変更部２４０は、複数の記憶装置１４０が有する複数のボリューム１５０のうち、予測部２２０が予測したテーブルを記憶しているボリューム１５０を特定し、特定したボリューム１５０を、複数の記憶装置１４０間でミラーリングさせる。予測部２２０が予測したテーブルのコンテナファイルが複数のボリューム１５０に分散して格納されている場合、配置変更部２４０は、予測部２２０が予測したテーブルに割り当てられた複数のボリューム１５０の中から、アクセス対象となるテーブルのコンテナファイルを格納するボリューム１５０を特定し、特定したボリューム１５０をミラーリングさせる。このように、配置変更部２４０は、予測部２２０が予測したテーブルに割り当てられた複数のボリューム１５０のうち、アクセス命令に応じてアクセス対象となるボリューム１５０を特定し、特定したボリューム１５０をミラーリングさせる。
【００２６】
実行部２３０は、アクセス命令解析部２１０によって解析されたアクセス命令に基づき、データベース処理を実行する。具体的には、データ取得部２５０が、アクセス対象のコンテナファイルへの読み出しコマンドをストレージ管理装置１１０に対して発行してテーブル・データを取得して実行部２３０に提供する。実行部２３０は、ＳＱＬ命令等に基づいてテーブル・データを加工することにより、クライアント装置１９０に返却する結果データを生成する。データ返却部２８０は、クライアント装置１９０に結果データを返却する。
【００２７】
履歴記録部２７０は、アクセス命令解析部２１０が解析したアクセス命令に基づき、複数のテーブルがアクセスされた履歴を記録する。具体的には、履歴記録部２７０は、ストレージ管理装置１１０にアクセス命令の実行ログを送信して、ネットワークストレージ１３０に記録させる。履歴取得部２６０は、アクセス命令の処理によって複数のテーブルがアクセスされた履歴を取得する。具体的には、履歴取得部２６０は、アクセス命令の実行ログを、ストレージ管理装置１１０を介してネットワークストレージ１３０から読み出す。
【００２８】
予測部２２０は、履歴取得部２６０が取得したアクセス履歴に基づいて、アクセスされるテーブルを予測する。例えば、第１のテーブルのアクセスが開始した後に、第２のテーブルが予め定められた基準値より高い確率でアクセスされることが、アクセス履歴に基づいて判断できる場合がある。このような場合、予測部２２０は、第１のテーブルをアクセスした後に、第２のテーブルがアクセスされることを予測する。すなわち、予測部２２０は、履歴取得部２６０が取得したアクセス履歴に基づいて、アクセス順序を特定する。そして、配置変更部２４０は、予測部２２０が特定したテーブルをミラーングさせる。このように、予測部２２０は、取得したアクセス命令に応じて複数のテーブルがアクセスされるアクセス順序を更に特定する。そして、配置変更部２４０は、予測部２２０が特定したアクセス順序に従って複数のテーブルを順にミラーングさせる。
【００２９】
図３は、データベースシステム５０における一連の処理を模式的に示す。図示されるように、データベース管理装置１００は、複数のテーブルＡ〜Ｆを含むデータベースを管理する。
【００３０】
テーブルＡのコンテナファイルは、ボリューム１５０ａに格納されている。テーブルＢのコンテナファイルは、ボリューム１５０ａおよびボリューム１５０ｂに分散して格納されている。テーブルＥのコンテナファイルは、ボリューム１５０ｂに格納されている。テーブルＣ、テーブルＤおよびテーブルＦのコンテナファイルは、それぞれボリューム１５０ｃ、ボリューム１５０ｄおよびボリューム１５０ｅに格納されている。
【００３１】
ここで、テーブルＦがボリューム１５０ｅとボリューム１５０ｈとの間でミラーリングされている状態で、データベース管理装置１００がアクセス命令３１０をクライアント装置１９０から取得したとする。ここでは、アクセス命令３１０は、テーブルＡ、Ｂ、ＣおよびＥのテーブル名を含むＳＱＬ命令とする。データベース管理装置１００では、アクセス命令解析部２１０がアクセス命令３１０を解析してアクセスパスを決定することによって、テーブルＡ、Ｂ、Ｃ、Ｅがアクセスされる旨を判断する。実行部２３０は、アクセスパスに従って、データ取得部２５０にテーブルＡ、Ｂ、Ｃ、Ｅのコンテナファイルにアクセスさせ、データベース処理を開始する。
【００３２】
実行部２３０によるデータベース処理に並行して、予測部２２０および配置変更部２４０がミラーリング処理を行う。具体的には、予測部２２０は、アクセスパスに基づいて、テーブルＡ、Ｂ、Ｃ、Ｅのアクセス順序等を決定する。配置変更部２４０は、コンテナファイルの所在情報を含むテーブル管理情報に基づいて、テーブルＡ、Ｂ、ＣおよびＥのコンテナファイルがボリューム１５０ａ〜ｃに格納されていることを特定する。例えば、配置変更部２４０は、ファイルシステム上におけるコンテナファイルのパスを記録した管理情報を参照することによって、ボリューム１５０ａ〜ｃを特定することができる。そして、配置変更部２４０は、テーブルのアクセス順序に基づいて、ボリューム１５０ａ〜ｃをミラーリングさせる順序を決定する。
【００３３】
そして、配置変更部２４０は、決定した順序に従って、ボリューム１５０ａ〜ｃをミラーリングするミラーリング指示３２０を、ストレージ管理装置１１０に送信する。ストレージ管理装置１１０は、ミラーリング指示３２０を受信すると、現在ボリューム１５０ｈとの間でミラーリングされているボリューム１５０ｅのミラーリングを解除して、ボリューム１５０ａ〜ｃをミラーリングするミラーリングコマンド３３０を、各ボリュームを提供する記憶装置１４０のコントローラに送信する。
【００３４】
ネットワークストレージ１３０は、データ取得部２５０から発行されたファイルアクセス要求に応じて、テーブルに格納されたデータを含むテーブルデータ３４０を返却する。テーブルデータ３４０は、ストレージ管理装置１１０を介してテーブルデータ３５０としてデータベース管理装置１００に送信される。実行部２３０は、データ取得部２５０が取得したテーブルデータを用いて、ＳＱＬ命令等に従ってデータを加工して、返却用のデータを生成する。返却用のデータは、データ返却部２８０から結果データ３６０としてクライアント装置１９０に返却される。
【００３５】
ネットワークストレージ１３０が、ボリューム１５０ａ〜ｃがまだミラーリングされていない段階でファイルアクセス要求を受信した場合は、ボリューム１５０ａ〜ｃから読み出したテーブルデータが返却される。ボリューム１５０ａ〜ｃがボリューム１５０ｆ〜ｈとの間でミラーリングが完了した後にファイルアクセス要求を受信した場合は、ボリューム１５０ａ〜ｃ、ｆ〜ｈのいずれかのボリュームから読み出されたテーブルデータが返却される。このため、ミラーリングが完了する前と比較して、ミラーリングが完了した後の読み出しアクセスが高速化される。
【００３６】
図４は、データベース管理装置１００の動作フローを示す。本動作フローは、アクセス命令取得部２００がアクセス命令を新たに取得した場合に開始される。アクセス命令解析部２１０がアクセス命令を解析してアクセスパスを決定する（ステップＳ４０２）。実行部２３０は、アクセスパスに従って、アクセス命令に関するデータベース処理を実行する（ステップＳ４０４）。
【００３７】
実行部２３０による処理に並行して、続く処理が実行される。すなわち、予測部２２０が、新たなアクセス命令によってアクセス対象となるテーブルを特定し（ステップＳ４０６）、配置変更部２４０が、新たなアクセス命令によって新たにアクセス対象となるボリューム１５０を特定する（ステップＳ４０８）。配置変更部２４０は、新たにミラーリングする必要があるテーブルを記憶するボリューム１５０のうち、現在ミラーリングされているボリューム１５０以外のボリューム１５０を、新たにアクセス対象となるボリューム１５０として特定する。
【００３８】
配置変更部２４０は、新たにアクセス対象となるボリューム１５０を全てミラーリングできるか否かを判断する（ステップＳ４１０）。例えば、配置変更部２４０は、新たにアクセス対象となるボリューム数が、現在ミラーリングされていないボリューム数以下であるか否かを判断する。
【００３９】
ステップＳ４１０において、新たにアクセス対象となるボリューム１５０を全てミラーリングできる場合（ステップＳ４１０：Ｙ）、新たにアクセス対象となるボリューム１５０を全てミラーリングさせ（ステップＳ４１２）、本動作フローを終了する。ステップＳ４１２において、配置変更部２４０は、新たにミラーリングする必要があるボリューム１５０が存在する場合、当該ボリューム１５０をミラーリングさせるミラーリングコマンドを送信する。新たなアクセス命令に対応してアクセスされるボリューム１５０が既にミラーリングされている場合は、新たにアクセス対象となるボリューム１５０は存在せず、ミラーリングコマンドを送信せずに本動作フローを終了してよい。
【００４０】
一方、ステップＳ４１０において、新たにアクセス対象となるボリューム１５０を全てミラーリングできない場合（ステップＳ４１０：Ｎ）、ミラーリングさせるボリューム１５０を制御する（ステップＳ４１４）。本ステップＳ４１４の処理については、後述する。ステップＳ４１４の処理が完了すると、本動作フローを終了する。
【００４１】
図５は、ステップＳ４１４の処理の詳細を示す。配置変更部２４０は、現在ミラーリングされているボリューム１５０のうち、現時点でアクセス予定のないボリューム１５０が存在するか否かを判断する（ステップＳ５０２）。具体的には、以前に取得しアクセス処理が完了していないアクセス命令と新たなアクセス命令とでアクセス対象となったボリューム１５０以外のボリューム１５０が、現在ミラーリングされているボリューム１５０の中に存在するか否かを判断する。
【００４２】
ステップＳ５０２において、アクセス予定のないボリュームが存在する場合（ステップＳ５０２：Ｙ）、配置変更部２４０は、ミラーリングを解除できるボリューム数が、新たにミラーリング対象となるボリューム数以上であるか否かを判断する（ステップＳ５０４）。ミラーリングを解除できるボリューム１５０の数とは、現在ミラーリングされており、現時点でアクセス予定がないボリューム１５０の数とする。
【００４３】
ステップＳ５０４において、ミラーリングを解除できるボリューム１５０の数が、新たにミラーリング対象となるボリューム数以上である場合（ステップＳ５０４：Ｙ）、ミラーリングを解除できるボリューム１５０のうち、新たにアクセス対象となるボリューム数のボリューム１５０を選択して、ミラーリングを解除する（ステップＳ５０６）。ミラーリングを解除するボリューム数は、新たにアクセス対象となるボリュー数に限られない。ステップＳ５０６では、ミラーリングを解除できるボリューム１５０のうち、新たにアクセス対象となるボリューム数以上の数のボリューム１５０を選択して、ミラーリングを解除してもよい。
【００４４】
そして、配置変更部２４０は、新たにミラーリング対象となる全てのボリューム１５０をミラーリングして（ステップＳ５０８）、本フローを終了する。このように、アクセス予定のないボリューム１５０のミラーリングを解除することで、新たにミラーリング対象となるボリューム１５０をミラーリングさせる。
【００４５】
一方、ステップＳ５０２において、アクセス予定のないボリュームが存在しない場合（ステップＳ５０２：Ｎ）、または、ステップＳ５０４において、ミラーリングを解除できるボリューム１５０の数が、新たにミラーリング対象となるボリューム数未満である場合、アクセス予定のあるボリューム１５０の中から、ミラーリングすべき一部のボリューム１５０を選択する（ステップＳ５１０）。ここでいうアクセス予定のあるボリューム１５０とは、以前に取得しアクセス処理が完了していないアクセス命令と新たなアクセス命令とによってアクセス対象となっているボリューム１５０をいう。ステップＳ５１０において、配置変更部２４０は、アクセス予定のあるボリューム１５０の中から、例えば予想されるアクセス量が大きい順に、ミラーリングすべきボリューム１５０を選択する。
【００４６】
配置変更部２４０は、ステップＳ５１２で選択したボリューム１５０をミラーリングさせる（ステップＳ５１２）。具体的には、配置変更部２４０は、ミラーリングを解除できるボリューム１５０が存在する場合、当該ボリューム１５０を全て解除して、ステップＳ５１０で選択したボリューム１５０がミラーリングされるようミラーリングを制御する。ステップＳ５１２において、配置変更部２４０は、アクセス予定がある場合であっても、既にミラーリングされているボリューム１５０のミラーリングを解除してよい。例えば、配置変更部２４０は、既にミラーリングされているボリューム１５０のアクセス量よりも、新たなアクセス対象となるボリューム１５０のアクセス量が大きいと判断したが場合、当該既にミラーリングされているボリューム１５０のミラーリングを解除してよい。すなわち、配置変更部２４０は、新たに取得したアクセス命令に応じてアクセスされるテーブルに対するアクセス量が、複数の記憶装置１４０間でミラーリングされている他のテーブルに対するアクセス量よりも大きい場合に、新たに取得したアクセス命令に応じてアクセスされるテーブルを、他のテーブルより優先してミラーリングさせてよい。ステップＳ５１２の処理が完了すると、本フローを終了する。
【００４７】
図６は、順次に実行されるアクセス命令の一例を示す。本例では、アクセス命令として、ストアドプロシージャ６００がコールされたとする。本例のストアドプロシージャ６００は、テーブル読み出しを生じるＳＱＬ命令として、ＳＱＬ命令６１０、ＳＱＬ命令６２０、ＳＱＬ命令６３０、および、ＳＱＬ命令６４０を順に含む。
【００４８】
ストアドプロシージャ６００のプリコンパイル結果に基づいて、予測部２２０は、テーブルＡおよびＢに対する読み出しアクセス、テーブルＣに対する読み出しアクセス、テーブルＤに対する読み出しアクセス、テーブルＡおよびＥに対する読み出しアクセスが順に生じることを予測することができる。配置変更部２４０は、予測部２２０が予測した順序に基づいて、ボリューム１５０のミラーリングをスケジュールする。
【００４９】
図７は、ボリューム１５０のミラーリングのスケジュール結果の一例を示す。本図は、図６のストアドプロシージャ６００に基づくスケジューリングの一例とする。ストアドプロシージャ６００をコールすることで、テーブルＡ〜Ｄへの読み出しアクセスが生じる。したがって、４つのボリューム１５０ａ〜ｄへの読み出しアクセスが生じるが、ここでは同時に３つのボリューム１５０しかミラーリングできないとする。また、ストアドプロシージャ６００では、ＳＱＬ命令６２０、ＳＱＬ命令６３０、および、ＳＱＬ命令６４０は、それぞれの以前のＳＱＬ命令の実行が終了してから開始されるとする。
【００５０】
テーブルＡおよびＢのアクセスが終了した後にテーブルＣのアクセスが開始されるので、配置変更部２４０は、テーブルＡおよびＢのミラーリングを、テーブルＣのミラーリングよりも先に開始する。そして、配置変更部２４０は、テーブルＡおよびＢをミラーリングさせた後にテーブルＣをミラーリングさせるよう、ミラーリングをスケジュールする。すなわち、配置変更部２４０は、ボリューム１５０ａおよびボリューム１５０ｂをミラーリングさせるミラーリング指示を、ストレージ管理装置１１０に送信する。そして、配置変更部２４０は、ボリューム１５０ａおよびボリューム１５０ｂのミラーリングが完了すると、ボリューム１５０ｃをミラーリングさせるミラーリング指示をストレージ管理装置１１０に送信する。これにより、時刻ｔ０からミラーリングが開始され、ボリューム１５０ａおよびボリューム１５０ｂのミラーリングが時刻ｔ１で完了すると、時刻ｔ１からボリューム１５０ｃのミラーリングが開始される。
【００５１】
ミラーリングの完了を待っている間もテーブルＡおよびＢへのアクセスが生じているので、ミラーリングが完了するまではボリューム１５０ａおよびボリューム１５０ｂからテーブルデータが読み出される。時刻ｔ１以後は、ミラーリングされた複数のボリューム１５０に対して読み出し可能となるので、上述したように読み出しアクセスが高速化される。テーブルＡ、Ｂに対する読み出しアクセスが時刻ｔ２で完了した後、テーブルＣへの読み出しアクセスが時刻ｔ４から開始される。図示されるように、テーブルＣへの読み出しアクセスが開始されたときには、ボリューム１５０ｃのミラーリング処理は既に完了しているので、テーブルＣへのアクセスは読み出しの初期から高速化される。
【００５２】
テーブルＡ、Ｂに対する読み出しアクセスが完了すると、配置変更部２４０はボリューム１５０ｂのミラーリングを解除させる。ボリューム１５０ｂは後にアクセスされるテーブルＥを格納しているが、テーブルＤがテーブルＥよりも先に読み出しアクセスが開始されるので、配置変更部２４０は、ボリューム１５０ｂのミラーリングを一旦解除して、ボリューム１５０ｄのミラーリングを開始させるよう、ミラーリングをスケジュールする。例えば、データ取得部２５０は、テーブルＡおよびＢへのアクセスが時刻ｔ２で終了した後に、ボリューム１５０ｂのミラーリングを解除するコマンドをストレージ管理装置１１０に送信する。そして、配置変更部２４０は、時刻ｔ３でミラーリングの解除が完了した後に、ボリューム１５０ｄのミラーリングを開始させる。ボリューム１５０ｄのミラーリングは時刻ｔ５で完了する。テーブルＤへの読み出しアクセスが時刻ｔ８で開始されたときには、既にボリューム１５０ｄのミラーリング処理は既に完了しているので、テーブルＤへのアクセスは読み出しの初期から高速化される。
【００５３】
テーブＣに対する読み出しアクセスが時刻ｔ６で完了すると、配置変更部２４０は、アクセス予定が無くなったボリューム１５０ｃのミラーリングを解除させる。例えば、データ取得部２５０は、テーブルＣへのアクセスが時刻ｔ６で終了した後に、ボリューム１５０ｃのミラーリングを解除するコマンドをストレージ管理装置１１０に送信する。そして、配置変更部２４０は、時刻ｔ７でミラーリングの解除が完了した後に、後にアクセスされるテーブルＥを記憶しているボリューム１５０ｂのミラーリングを開始させる。ボリューム１５０ｂのミラーリングは時刻ｔ９で完了する。テーブルＡ、Ｅへの読み出しアクセスが時刻ｔ１１で開始されたときには、既にボリューム１５０ｂのミラーリング処理は既に完了し、ボリューム１５０ａはミラーリングされた状態にあるので、テーブルＡ、Ｅへのアクセスは読み出しの初期から高速化される。
【００５４】
本図の例では、テーブルＤへの読み出しアクセスが時刻ｔ１０で完了した後、ボリューム１５０ｄのミラーリングを解除をしないとしたが、テーブルＤへの読み出しアクセスが完了した後に、ボリューム１５０ｄのミラーリングを解除をしてもよい。また、テーブルＡおよびＢへの読み出しアクセスが完了した後、ボリューム１５０ｂのミラーリングを一旦解除するとしたが、ボリューム１５０ａのミラーリングを一旦解除してもよい。
【００５５】
以上、図６、７に具体的に例示したように、配置変更部２４０は、予測部２２０が特定したアクセス順序に従って、複数のテーブルのうちアクセスが完了したテーブルのミラーリングを解除して、新たにアクセスが開始する他のテーブルを新たにミラーングさせる。例示したように、配置変更部２４０が、アクセスが予測されるボリューム１５０を全て事前にミラーリングしておくことができない場合であっても、ミラーリングの解除を含むミラーリングのスケジューリングをすることで、ストレージ１６０の利用効率を高めつつ、高速な読み出しアクセスを実現することができる。
【００５６】
図８は、将来にアクセスされるテーブルを事前予測する場合の一連の処理を模式的に示す。アクセス命令取得部２００が、テーブルＡおよびＥをアクセスするアクセス命令８１０をクライアント装置１９０から取得したとする。例えば、アクセス命令８１０が、テーブルＡおよびＥのテーブル名を含む動的ＳＱＬであるとする。
【００５７】
上述したように、データベースアクセスの処理ロジックが静的ＳＱＬやストアドプロシージャで組み込まれている場合には、次にアクセスされる一連のテーブルを事前に特定することができる。しかし、処理ロジックが動的ＳＱＬで組み込まれている場合、次にアクセスされるテーブルが動的に変わり得る。そこで、動的ＳＱＬのアクセス命令を取得した場合、予測部２２０は、過去のアクセス履歴に基づいて、将来にアクセスされる可能性があるテーブルを予測する。
【００５８】
具体的には、予測部２２０は、履歴取得部２６０が取得した過去のアクセス履歴に基づいて、一連のアクセス処理としてアクセスされる可能性が高いテーブルをグループ分けしておく。例えば、アクセス履歴から、テーブルＡ、ＤおよびＥが連続してアクセスされる頻度が高いと判断された場合、予測部２２０は、テーブルＡ、ＤおよびＥの識別情報を互いに対応づけて保持しておく。そして、動的ＳＱＬとしてＡおよびＥがアクセスされた場合、予測部２２０は、テーブルＡおよびＥに対応づけて記憶されているテーブルＤが、将来アクセスされると予測する。
【００５９】
アクセス命令取得部２００がアクセス命令８１０を取得した場合の一例の処理を説明すると、アクセス命令解析部２１０がアクセス命令８１０をコンパイルしてテーブルＡおよびＥがアクセスされることが判断される。実行部２３０は、データ取得部２５０にテーブルＡおよびＥのコンテナファイルにアクセスさせ、データベース処理を開始する。
【００６０】
実行部２３０によるデータベース処理に並行して、予測部２２０およびび配置変更部２４０がミラーリング処理を行う。具体的には、上述したように、予測部２２０が、履歴取得部２６０が取得した過去のアクセス履歴、および、アクセス命令８１０によってアクセスされるテーブルに基づいて、テーブルＤが将来にアクセスされると予測する。配置変更部２４０は、テーブルＡ、ＥおよびＤのコンテナファイルが、それぞれボリューム１５０ａ、ｂ、ｄに格納されていることを特定して、ボリューム１５０ａ、ｂ、ｄをミラーリングさせると決定する。また、配置変更部２４０は、ミラーリングさせる順序を決定する。例えば、配置変更部２４０は、アクセス命令８１０に含まれるテーブルＡおよびテーブルＥに対応するボリューム１５０ａおよびボリューム１５０ｂをミラーリングさせた後に、アクセスが予測されるテーブルＤに対応するボリューム１５０ｄのミラーリングを開始することを決定する。
【００６１】
そして、配置変更部２４０は、決定した順序に従って、ボリューム１５０ａ、ｂ、ｄをミラーリングするミラーリング指示８２０を、ストレージ管理装置１１０に送信する。ストレージ管理装置１１０は、図３等に関連して説明した処理と同様に、ミラーリングコマンド８３０を生成してネットワークストレージ１３０に送信する。図３等に関連して説明した処理と同様に、ネットワークストレージ１３０は、データ取得部２５０から発行されたファイルアクセス要求に応じて、テーブルに格納されたデータを含むテーブルデータ８４０を返却する。テーブルデータ８４０は、ストレージ管理装置１１０を介してテーブルデータ８５０としてデータベース管理装置１００に送信される。実行部２３０は、データ取得部２５０が取得したテーブルデータを用いて、ＳＱＬ命令等に従ってデータを加工して、返却用のデータを生成する。返却用のデータは、データ返却部２８０から結果データ８６０としてクライアント装置１９０に返却される。
【００６２】
データベース管理装置１００によれば、アクセス履歴に基づいてアクセスされるテーブルを予測して、事前にミラーリングしておくことができる。このため、動的ＳＱＬのように事前に読み出し対象が確定しないロジックで組み立てられた処理であっても、将来アクセスされる可能性の高いボリューム１５０を適切にミラーリングさせておくことができる。
【００６３】
図９は、アクセス履歴の一例を模式的に示す。アクセス命令取得部２００が取得したアクセス命令が動的ＳＱＬである場合、履歴記録部２７０は、実行したＳＱＬ命令をアクセスログとして記録する。例えば、本例のＳＱＬ命令９０１、ＳＱＬ命令９０４で示されるように、実際に実行したＳＱＬ命令がアクセスログとして記録される。静的ＳＱＬを含む関数をコールするアクセス命令の場合、履歴記録部２７０は、コールされた関数名をアクセスログとして記録する。例えば、コール命令９０２およびコール命令９０３のように、コールされたストアドプロシージャの名前がアクセスログとして記録される。履歴取得部２６０は、アクセスログに定期的にアクセスしてアクセス履歴９００を取得する。
【００６４】
予測部２２０は、アクセス履歴９００に基づいて、一連の処理として頻繁に現れる命令の組み合わせを特定する。例えば、予測部２２０は、本例のログ部分９１０およびログ部分９１１に示されるように、ＳＱＬ命令またはコールされた関数名が一致するログ部分を抽出する。予測部２２０は、抽出したログ部分でアクセスされる複数のテーブルを特定して、特定した複数のテーブルをグルーピングする。例えば、予測部２２０は、ＳＱＬ命令９０１、ＳＱＬ命令９０４に含まれるテーブル名から、アクセス対象となるテーブルを特定する。
【００６５】
コール命令９０２のような静的ＳＱＬのアクセス命令については、データベース管理装置１００は、アクセスされるテーブルをプリコンパイル時に特定して関数名に対応づけて記録しておくことができる。例えば、本図のストアドプロシージャ９２０に示されるように、ＰＲＯＣ１という関数名に対応づけて、内部に含まれるＳＱＬ命令９２１でアクセスされるテーブルＢおよびテーブルＤの識別情報を記録しておく。また、本図のストアドプロシージャ９３０の例では、ＰＲＯＣ２という関数名に対応づけて、ＳＱＬ命令９３１でアクセスされるテーブルＡの識別情報を記憶しておく。
【００６６】
予測部２２０は、関数名と対応づけて記憶された識別情報に基づき、コール命令９０２およびコール命令９０３によってアクセスされるテーブルを特定することができる。本図の例では、予測部２２０は、ログ部分９１０のＳＱＬ命令およびコール命令に基づいて、テーブルＡ〜Ｅの識別情報を対応づけて記憶することで、テーブルＡ〜Ｅをグルーピングしておく。そして、図８に関連して説明したように、テーブルＡおよびＥをアクセスする動的ＳＱＬのアクセス命令を取得した場合、予測部２２０は、テーブルＡおよびテーブルＥの識別情報に対応づけられたテーブルＢ、ＣおよびＤを、アクセスされる可能性があるテーブルとして予測する。
【００６７】
本図のログ部分９１０で示した例では、テーブルのアクセス順序を予測することができる。具体的には、ログ部分９１０から、テーブルＡおよびＥのアクセス、テーブルＢおよびＤのアクセス、テーブルＡのアクセス、テーブルＢ〜Ｄのアクセスが生じることが分かる。したがって、予測部２２０は、アクセス履歴に基づいて、テーブルがアクセスされる順序を予測してもよい。そして、配置変更部２４０は、図７等に関連して説明したように、予測された順序に従ってミラーリングするボリューム１５０を切り替えることができる。
【００６８】
また、本図のログ部分９１０で示した例では、テーブルのアクセス頻度を予測することができる。アクセス頻度を分かり易く説明するために、ＳＱＬ文レベルでテーブルが現れる回数を、テーブルのアクセス頻度の指標として用いるとする。本図のログ部分９１０からは、テーブルＡ、ＢおよびＤのアクセス頻度をそれぞれ２、テーブルＣおよびＥへのアクセス頻度をそれぞれ１と予測することができる。したがって、予測部２２０は、アクセス履歴に基づいて、テーブルのアクセス頻度を予測することができる。そして、配置変更部２４０は、テーブルのアクセス頻度に基づいて、ボリューム１５０のアクセス量を予測する。そして、配置変更部２４０は、図５のステップＳ５１０等に関連して説明したように、予測したアクセス量に基づいて、ミラーリングすべきボリューム１５０を選択する。
【００６９】
図１０は、ミラーリング対象のボリューム１５０の選択する処理を説明する図である。本例では、図９に関連して説明したログ部分９１０を用いて説明する。
【００７０】
配置変更部２４０は、予測部２２０が予測したテーブルＡ〜Ｅの各テーブルへのアクセス頻度から、ボリューム１５０ａ〜ｄの各ボリュームへのアクセス量を予測する。例えば、ボリューム１５０ａは、テーブルＡのコンテナファイルおよびテーブルＢのコンテナファイルを格納しているので、テーブルＡへのアクセス頻度とテーブルＢのアクセス頻度との和を、ボリューム１５０ａへのアクセス量として評価する。また、ボリューム１５０ｂは、テーブルＢのコンテナファイルおよびテーブルＥのコンテナファイルを格納しているので、テーブルＢへのアクセス頻度とテーブルＥのアクセス頻度との和を、ボリューム１５０ｂへのアクセス量として評価する。同様に、テーブルＣへのアクセス頻度を、ボリューム１５０ｃへのアクセス量とし、テーブルＤへのアクセス量を、ボリューム１５０ｄへのアクセス量として評価する。
【００７１】
そして、配置変更部２４０は、アクセス量に基づいて、ミラーリングすべきボリューム１５０を選択する。例えば、配置変更部２４０は、ミラーリングすべきボリューム１５０を、算出されたアクセス量が多い順に選択する。本図の例において、３つのボリューム１５０をミラーリングすることができる場合、ボリューム１５０ａ、ボリューム１５０ｃおよびボリューム１５０ｄを、ミラーリングすべきボリューム１５０として選択する。
【００７２】
本例では、図９のログ部分９１０を取り上げて、ミラーリングするボリューム１５０を選択する処理を説明したが、同様の処理を、図６に例示した静的ＳＱＬにも適用することができる。すなわち、図５のステップＳ５１０における処理にも、本図で説明した処理を適用することができる。このように、予測部２２０は、取得したアクセス命令に応じてアクセスされる複数のテーブルに対するアクセス量を判断する。そして、配置変更部２４０は、アクセス量がより大きいと判断したテーブルを、より優先してミラーリングさせる。
【００７３】
図３から図１０に関連する説明では主として、複数のボリューム１５０に分散して格納されているテーブルがアクセスされた場合には、当該複数のボリューム１５０に対してアクセスする可能性があるとみなした。例えば、図１０の例において、テーブルＢへのアクセス量に基づいて、ボリューム１５０ａおよびボリューム１５０ｂのアクセス量を予測した。しかし、アクセス命令の内容によっては、複数のボリューム１５０のうち一部のボリューム１５０にはアクセスが生じない場合がある。例えば、１個のテーブルを、特定のキー（例えば、列）の値の範囲毎に分割した複数の部分毎に、異なるボリューム１５０に分散して配置する場合がある。この場合、ＳＱＬ命令のＷＨＥＲＥ句等によって、当該キーに対して検索条件が指定されたときは、ボリューム１５０がアクセス対象となるか否かが検索条件に応じて定まる。したがって、配置変更部２４０は、アクセス命令に含まれる検索条件に基づいて、テーブルに割り当てられた複数のボリュームのうち、アクセス命令に応じてアクセス対象となるボリューム１５０を特定することができる。したがって、図５のステップＳ５１０、図１０の例において、配置変更部２４０は、アクセス命令に含まれる検索条件およびテーブルへのアクセス量に基づいて、複数のボリューム１５０のそれぞれへのアクセス量を予測して、予測したアクセス量に基づいて、ミラーリングすべきボリューム１５０を決定することができる。
【００７４】
以上に説明したように、データベースシステム５０では、データベース管理装置１００およびストレージ管理装置１１０が協働することによって、複数のボリューム１５０内に格納されたデータ内容に基づく利用予測に基づいて、ミラーリング対象を動的に制御することができる。複数のストレージ１６０の間で読み出し性能に差がある場合であっても、ミラーリングによる読み出し性能の向上を期待することができる。したがって、データベースシステム５０は、ストレージの有効活用および読み出し速度を高めるという点で極めて有利である。
【００７５】
図１１は、本実施形態に係るコンピュータ１９００のハードウェア構成の一例を示す。本実施形態に係るコンピュータ１９００は、ホスト・コントローラ２０８２により相互に接続されるＣＰＵ２０００、ＲＡＭ２０２０、グラフィック・コントローラ２０７５、及び表示装置２０８０を有するＣＰＵ周辺部と、入出力コントローラ２０８４によりホスト・コントローラ２０８２に接続される通信インターフェイス２０３０、ハードディスクドライブ２０４０、及びＣＤ−ＲＯＭドライブ２０６０を有する入出力部と、入出力コントローラ２０８４に接続されるＲＯＭ２０１０、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０を有するレガシー入出力部とを備える。
【００７６】
ホスト・コントローラ２０８２は、ＲＡＭ２０２０と、高い転送レートでＲＡＭ２０２０をアクセスするＣＰＵ２０００及びグラフィック・コントローラ２０７５とを接続する。ＣＰＵ２０００は、ＲＯＭ２０１０及びＲＡＭ２０２０に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィック・コントローラ２０７５は、ＣＰＵ２０００等がＲＡＭ２０２０内に設けたフレーム・バッファ上に生成する画像データを取得し、表示装置２０８０上に表示させる。これに代えて、グラフィック・コントローラ２０７５は、ＣＰＵ２０００等が生成する画像データを格納するフレーム・バッファを、内部に含んでもよい。
【００７７】
入出力コントローラ２０８４は、ホスト・コントローラ２０８２と、比較的高速な入出力装置である通信インターフェイス２０３０、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０を接続する。通信インターフェイス２０３０は、ネットワークを介して他の装置と通信する。ハードディスクドライブ２０４０は、コンピュータ１９００内のＣＰＵ２０００が使用するプログラム及びデータを格納する。ＣＤ−ＲＯＭドライブ２０６０は、ＣＤ−ＲＯＭ２０９５からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。
【００７８】
また、入出力コントローラ２０８４には、ＲＯＭ２０１０と、フレキシブルディスク・ドライブ２０５０、及び入出力チップ２０７０の比較的低速な入出力装置とが接続される。ＲＯＭ２０１０は、コンピュータ１９００が起動時に実行するブート・プログラム、及び／又は、コンピュータ１９００のハードウェアに依存するプログラム等を格納する。フレキシブルディスク・ドライブ２０５０は、フレキシブルディスク２０９０からプログラム又はデータを読み取り、ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供する。入出力チップ２０７０は、フレキシブルディスク・ドライブ２０５０を入出力コントローラ２０８４へと接続すると共に、例えばパラレル・ポート、シリアル・ポート、キーボード・ポート、マウス・ポート等を介して各種の入出力装置を入出力コントローラ２０８４へと接続する。
【００７９】
ＲＡＭ２０２０を介してハードディスクドライブ２０４０に提供されるプログラムは、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ２０２０を介してコンピュータ１９００内のハードディスクドライブ２０４０にインストールされ、ＣＰＵ２０００において実行される。
【００８０】
コンピュータ１９００にインストールされ、コンピュータ１９００をデータベース管理装置１００として機能させるプログラムは、コンピュータ１９００を、アクセス命令取得部２００、アクセス命令解析部２１０、予測部２２０、実行部２３０、配置変更部２４０、データ取得部２５０、データ返却部２８０、履歴取得部２６０、および、履歴記録部２７０として機能させる。また、当該プログラムは、コンピュータ１９００にインストールされ、コンピュータ１９００をストレージ管理装置１１０として機能させてよい。また、当該プログラムは、コンピュータ１９００にインストールされて、コンピュータ１９００を、データベース管理装置１００およびストレージ管理装置１１０として機能させてよい。
【００８１】
これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるアクセス命令取得部２００、アクセス命令解析部２１０、予測部２２０、実行部２３０、配置変更部２４０、データ取得部２５０、データ返却部２８０、履歴取得部２６０、および、履歴記録部２７０として機能する。また、これらのプログラムに記述された情報処理は、コンピュータ１９００に読込まれることにより、ソフトウェアと上述した各種のハードウェア資源とが協働した具体的手段であるストレージ管理装置１１０として機能する。そして、これらの具体的手段によって、本実施形態におけるコンピュータ１９００の使用目的に応じた情報の演算又は加工を実現することにより、使用目的に応じた特有のデータベース管理装置１００およびストレージ管理装置１１０が構築される。
【００８２】
一例として、コンピュータ１９００と外部の装置等との間で通信を行う場合には、ＣＰＵ２０００は、ＲＡＭ２０２０上にロードされた通信プログラムを実行し、通信プログラムに記述された処理内容に基づいて、通信インターフェイス２０３０に対して通信処理を指示する。通信インターフェイス２０３０は、ＣＰＵ２０００の制御を受けて、ＲＡＭ２０２０、ハードディスクドライブ２０４０、フレキシブルディスク２０９０、又はＣＤ−ＲＯＭ２０９５等の記憶装置上に設けた送信バッファ領域等に記憶された送信データを読み出してネットワークへと送信し、もしくは、ネットワークから受信した受信データを記憶装置上に設けた受信バッファ領域等へと書き込む。このように、通信インターフェイス２０３０は、ＤＭＡ（ダイレクト・メモリ・アクセス）方式により記憶装置との間で送受信データを転送してもよく、これに代えて、ＣＰＵ２０００が転送元の記憶装置又は通信インターフェイス２０３０からデータを読み出し、転送先の通信インターフェイス２０３０又は記憶装置へとデータを書き込むことにより送受信データを転送してもよい。
【００８３】
また、ＣＰＵ２０００は、ハードディスクドライブ２０４０、ＣＤ−ＲＯＭドライブ２０６０（ＣＤ−ＲＯＭ２０９５）、フレキシブルディスク・ドライブ２０５０（フレキシブルディスク２０９０）等の外部記憶装置に格納されたファイルまたはデータベース等の中から、全部または必要な部分をＤＭＡ転送等によりＲＡＭ２０２０へと読み込ませ、ＲＡＭ２０２０上のデータに対して各種の処理を行う。そして、ＣＰＵ２０００は、処理を終えたデータを、ＤＭＡ転送等により外部記憶装置へと書き戻す。このような処理において、ＲＡＭ２０２０は、外部記憶装置の内容を一時的に保持するものとみなせるから、本実施形態においてはＲＡＭ２０２０および外部記憶装置等をメモリ、記憶部、または記憶装置等と総称する。本実施形態における各種のプログラム、データ、テーブル、データベース等の各種の情報は、このような記憶装置上に格納されて、情報処理の対象となる。なお、ＣＰＵ２０００は、ＲＡＭ２０２０の一部をキャッシュメモリに保持し、キャッシュメモリ上で読み書きを行うこともできる。このような形態においても、キャッシュメモリはＲＡＭ２０２０の機能の一部を担うから、本実施形態においては、区別して示す場合を除き、キャッシュメモリもＲＡＭ２０２０、メモリ、及び／又は記憶装置に含まれるものとする。
【００８４】
また、ＣＰＵ２０００は、ＲＡＭ２０２０から読み出したデータに対して、プログラムの命令列により指定された、本実施形態中に記載した各種の演算、情報の加工、条件判断、情報の検索・置換等を含む各種の処理を行い、ＲＡＭ２０２０へと書き戻す。例えば、ＣＰＵ２０００は、条件判断を行う場合においては、本実施形態において示した各種の変数が、他の変数または定数と比較して、大きい、小さい、以上、以下、等しい等の条件を満たすかどうかを判断し、条件が成立した場合（又は不成立であった場合）に、異なる命令列へと分岐し、またはサブルーチンを呼び出す。
【００８５】
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク２０９０、ＣＤ−ＲＯＭ２０９５の他に、ＤＶＤ又はＣＤ等の光学記録媒体、ＭＯ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワーク又はインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ１９００に提供してもよい。
【００８６】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【００８７】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【００８８】
５０  データベースシステム、１００  データベース管理装置、１１０  ストレージ管理装置、１２０  スイッチ、１３０  ネットワークストレージ、１４０  記憶装置、１５０  ボリューム、１６０  ストレージ、１８０  ネットワーク、１９０  クライアント装置、２００  アクセス命令取得部、２１０  アクセス命令解析部、２２０  予測部、２３０  実行部、２４０  配置変更部、２５０  データ取得部、２６０  履歴取得部、２７０  履歴記録部、２８０  データ返却部、３１０、８１０  アクセス命令、３２０、８２０  ミラーリング指示、３３０、８３０  ミラーリングコマンド、３４０、３５０、８４０、８５０  テーブルデータ、３６０、８６０  結果データ、６００  ストアドプロシージャ、６１０、６２０、６３０、６４０  ＳＱＬ命令、９００  アクセス履歴、９１０、９１１  ログ部分  ９０１、９０４  ＳＱＬ命令、９０２、９０３  コール命令、９１０、９１１  ログ部分、９２１  ＳＱＬ命令、９２０、９３０  ストアドプロシージャ、９３１  ＳＱＬ命令、１９００  コンピュータ、２０００  ＣＰＵ、２０１０  ＲＯＭ、２０２０  ＲＡＭ、２０３０  通信インターフェイス、２０４０  ハードディスクドライブ、２０５０  フレキシブルディスク・ドライブ、２０６０  ＣＤ−ＲＯＭドライブ、２０７０  入出力チップ、２０７５  グラフィック・コントローラ、２０８０  表示装置、２０８２  ホスト・コントローラ、２０８４  入出力コントローラ、２０９０  フレキシブルディスク、２０９５  ＣＤ−ＲＯＭ 
【図１】
0005697195.tif 000002
【図２】
0005697195.tif 000003
【図３】
0005697195.tif 000004
【図４】
0005697195.tif 000005
【図５】
0005697195.tif 000006
【図６】
0005697195.tif 000007
【図７】
0005697195.tif 000008
【図８】
0005697195.tif 000009
【図９】
0005697195.tif 000010
【図１０】
0005697195.tif 000011
【図１１】
0005697195.tif 000012