(57)【要約】【課題】ストレージ装置の性能限界を超えない範囲で効率よい検索処理を実現する。【解決手段】受信した問い合わせ要求に対する問い合わせ結果を出力する計算機と、問い合わせ要求に基づいて出力されるデータを格納するストレージシステムとを備える計算機システムであって、計算機は、問い合わせ要求を受信する要求受付部と、問い合わせ要求に基づいて、各記憶装置に格納されるデータにアクセスする順序を含む複数の処理手順を生成する処理手順生成部と、各記憶装置に格納されるデータを分割するデータ分割部と、ストレージシステムの負荷状態を表す負荷情報を取得する情報取得部と、取得された負荷情報に基づいて、生成された各処理手順によって処理される分割されたデータを割り当てるための配分を決定する配分決定部と、決定された配分に基づいて、生成された各処理手順を並列実行する処理実行部と、を備えることを特徴とする。【選択図】図２
2012059130.tif 000002
【特許請求の範囲】
【請求項１】
受信した問い合わせ要求に対する問い合わせ結果を出力する計算機と、前記問い合わせ要求に基づいて出力されるデータを格納するストレージシステムとを備える計算機システムであって、
前記計算機は、第１のプロセッサと、前記第１のプロセッサと接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースとを備え、
前記ストレージシステムは、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続され、複数の前記データが格納される複数の記憶装置と、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、
前記計算機は、
前記問い合わせ要求を受信する要求受付部と、
前記問い合わせ要求に基づいて、前記各記憶装置に格納される前記データにアクセスする順序を含む複数の処理手順を生成する処理手順生成部と、
前記各記憶装置に格納される前記データを分割するデータ分割部と、
前記ストレージシステムの負荷状態を表す負荷情報を取得する情報取得部と、
前記取得された負荷情報に基づいて、前記生成された各処理手順によって処理される前記分割されたデータを割り当てるための配分を決定する配分決定部と、
前記決定された配分に基づいて、前記生成された各処理手順を並列実行する処理実行部と、を備えることを特徴とする計算機システム。
【請求項２】
前記取得された負荷情報には、前記ストレージシステムが備える前記各記憶装置の負荷の上限を表す負荷上限値が含まれ、
前記配分決定部は、前記生成された複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記生成された複数の処理手順によって処理されるデータ量の合計値が最大となる配分を算出することを特徴とする請求項１に記載の計算機システム。
【請求項３】
前記配分決定部は、
前記生成された複数の処理手順を、前記処理手順における最初にアクセスされるデータを格納する前記記憶装置が共通する前記処理手順を一つの集合とする部分集合を生成し、
前記部分集合に含まれる複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記部分集合に含まれる複数の処理手順によって処理されるデータ量の合計値が最大となる配分を前記部分集合毎に算出し、
前記算出された合計値が最大となる部分集合を選択し、
前記処理実行部は、前記選択された部分集合における配分に基づいて、前記選択された部分集合に含まれる複数の処理手順を並列実行することを特徴とする請求項２に記載の計算機システム。
【請求項４】
前記情報取得部は、前記処理実行部が前記生成された複数の処理手順を並列実行中の前記各記憶装置の負荷情報を取得し、
前記配分決定部は、
前記負荷情報を参照して、いずれかの前記記憶装置において所定値以上の負荷変動があるか否かを判定し、
前記いずれかの記憶装置において所定値以上の負荷変動があると判定された場合に、前記生成された処理手順に割り当てる前記分割されたデータの配分を再度算出し、
前記処理実行部は、新たに算出された前記配分に基づいて、前記生成された複数の処理手順を並列実行することを特徴とする請求項１に記載の計算機システム。
【請求項５】
受信した問い合わせ要求に対する問い合わせ結果を出力する計算機と、前記問い合わせ要求に基づいて出力されるデータを格納するストレージシステムとを備える計算機システムにおけるデータ検索方法であって、
前記計算機は、第１のプロセッサと、前記第１のプロセッサと接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースとを備え、
前記ストレージシステムは、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続され、複数の前記データが格納される複数の記憶装置と、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、
前記方法は、
前記計算機が、前記問い合わせ要求を受信する第１のステップと、
前記計算機が、前記各記憶装置に格納される前記データを分割する第２のステップと、
前記計算機が、前記問い合わせ要求に基づいて、前記各記憶装置に格納される前記データにアクセスする順序を含む複数の処理手順を生成する第３のステップと、
前記計算機が、前記ストレージシステムの負荷状態を表す負荷情報を取得する第４のステップと、
前記計算機が、前記取得された負荷情報に基づいて、前記生成された各処理手順によって処理される前記分割されたデータを割り当てるための配分を決定する第５のステップと、
前記計算機が、前記決定された配分に基づいて、前記生成された各処理手順を並列実行する第６のステップと、を含むことを特徴とするデータ検索方法。
【請求項６】
前記取得された負荷情報には、前記ストレージシステムが備える前記各記憶装置の負荷の上限を表す負荷上限値が含まれ、
前記第５のステップでは、前記計算機が、前記生成された複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記生成された複数の処理手順によって処理されるデータ量の合計値が最大となる配分を算出することを特徴とする請求項５に記載のデータ検索方法。
【請求項７】
前記第５のステップは、
前記計算機が、前記生成された複数の処理手順を、前記処理手順における最初にアクセスされるデータを格納する前記記憶装置が共通する前記処理手順を一つの集合とする部分集合を生成する第７のステップと、
前記計算機が、前記部分集合に含まれる複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記部分集合に含まれる複数の処理手順によって処理されるデータ量の合計値が最大となる配分を前記部分集合毎に算出する第８のステップと、
前記計算機が、前記算出された合計値が最大となる部分集合を選択する第９のステップとを含み、
前記第６のステップは、前記選択された部分集合における配分に基づいて、前記選択された部分集合に含まれる複数の処理手順を並列実行する第１０のステップを含むことを特徴とする請求項６に記載のデータ検索方法。
【請求項８】
前記方法は、
さらに、前記計算機が、前記処理実行部が前記生成された複数の処理手順を並列実行中の前記各記憶装置の負荷情報を取得するステップと、
前記計算機が、前記取得された負荷情報を参照して、いずれかの前記記憶装置において所定値以上の負荷変動があるか否かを判定するステップと、
前記計算機が、前記いずれかの記憶装置において所定値以上の負荷変動があると判定された場合に、前記生成された処理手順に割り当てる前記分割されたデータの配分を再度算出するステップと、
前記計算機が、新たに算出された前記配分に基づいて、前記生成された複数の処理手順を並列実行するステップと、を含むことを特徴とする請求項５に記載のデータ検索方法。
【請求項９】
受信した問い合わせ要求に対して、前記問い合わせ要求の処理対象であるデータを格納するストレージシステムからデータを読み出し、前記読み出されたデータに対する処理を実行することによって問い合わせ結果を出力するデータベース管理計算機であって、
前記データベース管理計算機計算機は、プロセッサと、前記プロセッサと接続されるメモリと、前記プロセッサに接続されるネットワークインタフェースとを備え、
前記データベース管理計算機は、
前記問い合わせ要求を受信する要求受付部と、
前記問い合わせ要求に基づいて、前記ストレージシステムが備える複数の記憶装置のそれぞれに格納される前記データにアクセスする順序を含む複数の処理手順を生成する処理手順生成部と、
前記各記憶装置に格納される前記データを分割するデータ分割部と、
前記ストレージシステムの負荷状態を表す負荷情報を取得する情報取得部と、
前記取得された負荷情報に基づいて、前記生成された各処理手順によって処理される前記分割されたデータを割り当てるための配分を決定する配分決定部と、
前記決定された配分に基づいて、前記生成された各処理手順を並列実行する処理実行部と、を備えることを特徴とするデータベース管理計算機。
【請求項１０】
前記取得された負荷情報には、前記ストレージシステムが備える前記各記憶装置の負荷の上限を表す負荷上限値が含まれ、
前記配分決定部は、前記生成された複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記生成された複数の処理手順によって処理されるデータ量の合計値が最大となる配分を算出することを特徴とする請求項９に記載のデータベース管理計算機。
【請求項１１】
前記配分決定部は、
前記生成された複数の処理手順を、前記処理手順における最初にアクセスされるデータを格納する前記記憶装置が共通する前記処理手順を一つの集合とする部分集合を生成し、
前記部分集合に含まれる複数の処理手順が実行された場合における前記各記憶装置の負荷が前記負荷上限値以下となり、かつ、前記部分集合に含まれる複数の処理手順によって処理されるデータ量の合計値が最大となる配分を前記部分集合毎に算出し、
前記算出された合計値が最大となる部分集合を選択し、
前記処理実行部は、前記選択された部分集合における配分に基づいて、前記選択された部分集合に含まれる複数の処理手順を並列実行することを特徴とする請求項１０に記載のデータベース管理計算機。
【請求項１２】
前記情報取得部は、前記処理実行部が前記生成された複数の処理手順を並列実行中の前記各記憶装置の負荷情報を取得し、
前記配分決定部は、
前記負荷情報を参照して、いずれかの前記記憶装置において所定値以上の負荷変動があるか否かを判定し、
前記いずれかの記憶装置において所定値以上の負荷変動があると判定された場合に、前記生成された処理手順に割り当てる前記分割されたデータの配分を再度算出し、
前記処理実行部は、新たに算出された前記配分に基づいて、前記生成された複数の処理手順を並列実行することを特徴とする請求項９に記載のデータベース管理計算機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のストレージ装置を組合せてデータベース検索処理を行うデータベース検索処理システムに関し、特に、データベース検索処理における検索処理性能の向上を図る技術に関する。
【背景技術】
【０００２】
近年、企業内情報システムの構築において、計算機資源の共用化による機器コスト削減、及び運用容易化による運用管理コスト削減を目的として、様々な業務データを格納する複数のストレージ装置を論理に一元化してアクセス可能とする業務システムの構築を行い、それら業務データを組み合わせた業務解析処理を行えるようにすることが一般化しつつある。
【０００３】
業務データを組合せた解析処理を行う場合、組合せられた複数のストレージ装置の性能差を考慮して、最も処理性能の高い処理手順に従って解析処理が実行される。しかし、ストレージ装置側で事前の予測とは異なる大きな負荷変動・障害スローダウン、又は、大幅な構成若しくは性能特性の変更が発生した場合に、他のストレージ装置の性能を最大限活用して、高い処理性能を維持できるようにすることが重要である。
【０００４】
大きな性能特性の変動が予測される企業内情報システムにおいても、常に処理性能の最大化を図ることができるデータベース管理システムを実現したい。
【０００５】
ストレージ装置の性能に大きな特性変動が予測されるデータベースにおいて処理性能の最大化を図る第一の従来技術としては、事前に予測された処理内容に基づいて、最も処理性能が大きくなる処理手順を一つ選択する方法が知られている（例えば、特許文献１参照）。また、実行時の処理特性に基づいてスループットが最大となるように、処理途中において処理手順を動的に切り替える方法が知られている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３０１３５３号公報
【特許文献２】特開平９−２８２２８７号公報
【非特許文献】
【０００７】
【非特許文献１】Hector Garcia-Molina著 ，Jeffrey D. Ullman著 ，Jennifer D. Widom著 ，「Database System Implementation」，Prentice Hall社 ，p.388-389
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１には、事前の予測に基づいて最も処理性能が大きくなる処理手順を選択して、処理が実行される。しかし、処理実行中に大きな負荷変動、又はスローダウンが発生した場合に、必ずしも最適な処理手順を選択することができず、計算機システムの性能を十分に活用することができない。
【０００９】
また、特許文献２には、処理実行中に最も処理性能が大きくなる処理手順が選択されることによって、処理実行時の負荷変動及びスローダウンに対処することができる。しかし、選択された一つの処理手順のみを実行するため、最も性能限界に近い計算機資源部分がボトルネックとなり、他の計算機資源に対して、処理性能の空きが発生してしまう。
【００１０】
複数ストレージ装置に分散格納された業務データを用いて検索解析処理を行う場合に、最も処理性能が大きくなる処理手順を一つだけ選択して処理を行う方法では、最も性能限界に近いストレージ装置がボトルネックとなり、他のストレージ装置に対して処理性能の空きが発生する。
【課題を解決するための手段】
【００１１】
本発明の代表的な一例を示せば以下の通りである。すなわち、受信した問い合わせ要求に対する問い合わせ結果を出力する計算機と、前記問い合わせ要求に基づいて出力されるデータを格納するストレージシステムとを備える計算機システムであって、前記計算機は、第１のプロセッサと、前記第１のプロセッサと接続される第１のメモリと、前記第１のプロセッサに接続される第１のネットワークインタフェースとを備え、前記ストレージシステムは、第２のプロセッサと、前記第２のプロセッサに接続される第２のメモリと、前記第２のプロセッサに接続され、複数の前記データが格納される複数の記憶装置と、前記第２のプロセッサに接続される第２のネットワークインタフェースとを備え、前記計算機は、前記問い合わせ要求を受信する要求受付部と、前記問い合わせ要求に基づいて、前記各記憶装置に格納される前記データにアクセスする順序を含む複数の処理手順を生成する処理手順生成部と、前記各記憶装置に格納される前記データを分割するデータ分割部と、前記ストレージシステムの負荷状態を表す負荷情報を取得する情報取得部と、前記取得された負荷情報に基づいて、前記生成された各処理手順によって処理される前記分割されたデータを割り当てるための配分を決定する配分決定部と、前記決定された配分に基づいて、前記生成された各処理手順を並列実行する処理実行部と、を備えることを特徴とする。
【発明の効果】
【００１２】
本発明によれば、ストレージシステムに含まれる記憶装置の負荷状況に基づいて複数の処理手順に割り当てるデータ量の配分が決定され、また、決定された配分に従って複数の処理手順が同時に実行される。これによって、性能特性の異なる記憶装置が混在する環境においてもストレージシステムの性能を最大限利用する検索処理が可能となる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施形態の計算機システムの構成を示す説明図である。
【図２】本発明の実施形態のソフトウェア構成を示す説明図である。
【図３Ａ】本発明の実施形態のストレージ装置情報に含まれる構成情報の一例を示す説明図である。
【図３Ｂ】本発明の実施形態のストレージ装置情報に含まれる負荷情報の一例を示す説明図である。
【図４Ａ】本発明の実施形態における検索対象データの一例を示す説明図である。
【図４Ｂ】本発明の実施形態における検索対象データの一例を示す説明図である。
【図４Ｃ】本発明の実施形態における検索対象データの一例を示す説明図である。
【図５】本発明の実施形態のデータベース管理システムによって実行される検索処理を説明するフローチャートである。
【図６】本発明の実施形態におけるシステム設定要求に含まれる分割指定の一例を示す説明図である。
【図７】本発明の実施形態で用いられる検索要求の一例を示す説明図である。
【図８】本発明の実施形態の処理手順生成部によって生成される処理手順候補の一例を示す図である。
【図９】本発明の実施形態のＣＰＵによって実行される配分決定部が実行する処理を説明するフローチャートである。
【発明を実施するための形態】
【００１４】
以下に図面を参照しながら本発明の実施の形態を説明する。
【００１５】
図１は、本発明の実施形態の計算機システムの構成を示す説明図である。
【００１６】
本発明の実施形態の計算機システムは、入出力装置１０、サーバ装置１１及びストレージ装置１２から構成される。
【００１７】
入出力装置１０及びサーバ装置１１は、通信用ネットワーク１３を介して接続される。また、サーバ装置１１及びストレージ装置１２は、ストレージ用ネットワーク１４を介して接続される。
【００１８】
入出力装置１０は、利用者から入力されたシステム設定要求及び検索要求をサーバ装置１１に送信し、サーバ装置から送信される検索結果を表示する。入出力装置１０は、例えば、ＣＰＵ（図示省略）、メモリ（図示省略）を備える計算機によって実現される。
【００１９】
サーバ装置１１は、入出力装置１０から入力された検索要求に基づいて、ストレージ装置１２にデータ読み出し要求を送信し、検索要求に対する検索結果を入出力装置１０に返信する。
【００２０】
サーバ装置１１は、ＣＰＵ１０１、メモリ１０２、ネットワークインタフェース１０３、及びネットワークインタフェース１０４を備える。
【００２１】
ＣＰＵ１０１は、メモリ１０２に格納されたプログラムを実行することによって各種処理を実行する。また、サーバ装置１１は、ＣＰＵ１０１を複数備えることによって複数の処理を並列して実行できるように構成してもよい。
【００２２】
メモリ１０２は、ＣＰＵ１０１によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。
【００２３】
メモリ１０２は、ＣＰＵ１０１に実行されるプログラムとして、データベース管理システム１１１を格納する。データベース管理システム１１１は、検索要求に基づいて、ストレージ装置１２からデータを読み出し、読み出されたデータに対して所定の処理を実行し、当該処理結果を入出力装置１０に返信する。データベース管理システム１１１の詳細については、図２を用いて後述する。
【００２４】
なお、メモリ１０２は、アプリケーションプログラム等の他のプログラムを格納してもよい。
【００２５】
ネットワークインタフェース１０３は、通信用ネットワーク１３を介して入出力装置１０と接続するためのインタフェースである。ネットワークインタフェース１０４は、ストレージ用ネットワーク１４を介してストレージ装置１２と接続するためのインタフェースである。
【００２６】
ストレージ装置１２は、各種処理対象データを格納する。ストレージ装置１２は、サーバ装置１１から送信されたデータ読み出し要求に従って、指定されたデータを読み出し、サーバ装置１１に読み出されたデータを送信する。
【００２７】
ストレージ装置１２は、ＣＰＵ１０５、メモリ１０６、ディスクインタフェース１０７、記憶装置１０８及びネットワークインタフェース１０９を備える。
【００２８】
ＣＰＵ１０５は、メモリ１０６に格納されたプログラムを実行することによって各種処理を実行する。
【００２９】
メモリ１０６は、ＣＰＵ１０５によって実行されるプログラム及び当該プログラムを実行するために必要な情報を格納する。
【００３０】
ディスクインタフェース１０７は、記憶装置１０８にアクセスするためのインタフェースである。
【００３１】
記憶装置１０８は、各種処理対象データを格納する。記憶装置１０８は、ハードディスクドライブ（ＨＤＤ）、光ディスクドライブ、半導体記憶装置等の記憶装置が考えられる。なお、複数の記憶装置１０８からディスクアレイを構成するようにしてもよい。
【００３２】
本実施形態では、記憶装置１０８の記憶領域から一以上のデータ格納部１２３（図２参照）が生成される。
【００３３】
なお、データ格納部１２３（図２参照）は、それぞれ、異なる記憶装置１０８の記憶領域上に作成される。すなわち、一つの記憶装置１０８の記憶領域が複数のデータ格納部１２３によって使用されないように構成される。これによって、複数のデータ格納部１２３（図２参照）がアクセスされる場合には、それぞれ、異なる記憶装置１０８にアクセスされることになる。したがって、一つの記憶装置１０８に負荷が集中しない。
【００３４】
なお、計算機システムは、複数のストレージ装置１２から構成されるストレージシステムを備える構成であってもよい。
【００３５】
図２は、本発明の実施形態のソフトウェア構成を示す説明図である。
【００３６】
本発明の実施形態のデータベース管理システム１１１は、要求受付部（検索要求受付部）１１２、処理手順生成部（処理手順候補集合生成部）１１３、データ分割部（処理対象データ分割部）１１４、配分決定部（分割データ配分決定部）１１５、割当部（処理手順−分割データ割当部）１１６、処理手順実行部（処理手順多重実行部）１１７、及び情報収集部（ストレージ装置情報収集部）１１８を含む。
【００３７】
なお、太線で囲われた部分は、本発明の特徴的な処理を実行する部分を示す。
【００３８】
要求受付部１１２は、入出力装置１０から検索要求を受け付け、処理手順生成部１１３に受け付けた検索要求を出力する。また、要求受付部１１２は、入出力装置１０からシステム設定要求を受け付け、データベース管理システム１１１に含まれる各構成の処理タイミングを調整する。
【００３９】
処理手順生成部１１３は、要求受付部１１２から入力された検索要求に基づいて、複数の処理手順を生成する。以下、生成された処理手順を処理手順候補とも記載する。処理手順生成部１１３は、複数の処理手順候補の集合である候補集合１３１を生成する。処理手順生成部１１３は、さらに、配分決定部１１５に生成された候補集合１３１を出力する。
【００４０】
なお、候補集合１３１の詳細については、図７を用いて後述する。
【００４１】
データ分割部１１４は、ストレージ装置１２に格納された処理対象データの一部又は全部を複数個に分割することによって、複数個の分割データを生成する。さらに、データ分割部１１４は、分割データの集合である分割データ集合１３２を生成する。データ分割部１１４は、割当部１１６に生成された分割データ集合１３２を出力する。
【００４２】
本発明の実施形態では、予め設定された分割方法に基づいて、処理対象データが分割される。なお、分割方法は、システム設定要求に含まれる分割指定によって設定される。分割指定については、図５に用いて後述する。
【００４３】
情報収集部１１８は、ストレージ装置１２と通信することによって、ストレージ装置１２に関する情報が含まれるストレージ装置情報１３３を収集する。また、情報収集部１１８は、配分決定部１１５に収集されたストレージ装置情報１３３を出力する。
【００４４】
本発明の実施形態におけるストレージ装置情報１３３には、少なくとも、ストレージ装置１２の構成に関する情報である構成情報と、ストレージ装置１２の負荷状態に関する情報である負荷情報とが含まれる。なお、ストレージ装置情報１３３は、他の情報を含んでもよい。
【００４５】
配分決定部１１５は、処理手順生成部１１３から入力された候補集合１３１及び情報収集部１１８から入力されたストレージ装置情報１３３を参照して、候補集合１３１に含まれる複数個の処理手順に割り当てる分割データの配分を決定する。配分決定部１１５は、割当部１１６に決定された配分を含む配分情報１３４を出力する。
【００４６】
割当部１１６は、配分決定部１５から入力された配分情報１３４に基づいて、候補集合１３１に含まれる各処理手順に、分割データ集合１３２に含まれる分割データを割り当てる。さらに、割当部１１６は、分割データが割り当てられた複数の処理手順を処理手順実行部１１７に出力する。
【００４７】
処理手順実行部１１７は、割当部１１６から入力され、分割データが割り当てられた複数の処理手順に従って、ストレージ装置１２に対して複数のデータ読み出し要求を発行する。
【００４８】
本実施形態のストレージ装置１２は、データ読出部１２２、及びデータ格納部１２３を含む。
【００４９】
データ読出部１２２は、メモリ１０６に格納されるプログラムであり、処理手順実行部１１７が発行したデータ読み出し要求に従って、データ格納部１２３からデータを読み出し、読み出された処理対象データをサーバ装置１１に返信する。
【００５０】
データ格納部１２３は、処理対象データを格納する記憶領域であり、各種処理対象データを格納する。図２に示す例では、顧客情報、購入履歴及び利用履歴がそれぞれのデータ格納部１２３に格納される。
【００５１】
本発明の実施形態のデータベース管理システム１１１は、ストレージ装置情報１３３に基づいて、複数の処理手順に割り当てる分割データの配分を決定する。これによって、分割データの配分に従って、複数の処理手順が並列で実行される。また、分割データの配分は、データ格納部１２３に設定された負荷の上限値を超えないように決定される。
【００５２】
図３Ａは、本発明の実施形態のストレージ装置情報１３３に含まれる構成情報の一例を示す説明図である。図３Ｂは、本発明の実施形態のストレージ装置情報１３３に含まれる負荷情報の一例を示す説明図である。
【００５３】
構成情報４０１は、ストレージ装置１２が備えるデータ格納部１２３の構成に関する情報を格納する。具体的には、構成情報４０１は、格納部識別子４０１１、スループット上限値４０１２及び格納データ４０１３を含む。
【００５４】
格納部識別子４０１１は、データ格納部１２３を識別するための識別子である。スループット上限値４０１２は、格納部識別子４０１１に対応するデータ格納部１２３が単位時間当たりに処理することができるデータ読み出し要求の最大個数、すなわち、スループットの上限値を表す。格納データ４０１３は、格納部識別子４０１１に対応するデータ格納部１２３に格納される処理対象データの情報である。
【００５５】
図３Ａに示す構成情報４０１では、スループット上限値４０１２が「６０レコード/秒」であるデータ格納部１２３に顧客情報が格納され、スループット上限値４０１２が「１０レコード/秒」であるデータ格納部１２３に購買履歴が格納され、スループット上限値４０１２が「５０レコード/秒」であるデータ格納部１２３に利用履歴が格納されることが分かる。
【００５６】
負荷情報４０２は、ストレージ装置１２が備えるデータ格納部１２３における負荷情報を格納する。具体的には、負荷情報４０２は、格納部識別子４０２１、スループット値４０２２及び収集時刻４０２３を含む。
【００５７】
格納部識別子４０２１は、データ格納部１２３を識別するための識別子である。スループット値４０２２は、格納部識別子４０２１に対応するデータ格納部１２３における単位時間あたりに処理されるデータ読み出し要求の個数（スループット）である。収集時刻４０２３は、スループット値４０２２に対応する値が収集された時刻である。
【００５８】
図３Ｂに示す負荷情報４０２では、格納部識別子４０２１が「Ｓ１」のデータ格納部１２３のスループットが「５３レコード/秒」であり、格納部識別子４０２１が「Ｓ２」のデータ格納部１２３のスループットが「１０レコード/秒」であり、格納部識別子４０２１が「Ｓ３」のデータ格納部１２３のスループットが「５０レコード/秒」であることが分かる。
【００５９】
図４Ａ〜図４Ｃは、本発明の実施形態における検索対象データの一例を示す説明図である。
【００６０】
本発明の実施形態では、検索対象データとして顧客情報６０１、購買履歴６０２、及び利用履歴６０３を含む表データを想定する。
【００６１】
顧客情報６０１は、顧客の各種情報を格納する。例えば、顧客情報６０１には「顧客ＩＤ６０１１，性別６０１２，年代６０１３，趣味６０１４」に関する情報を含むレコードが格納される。以下、顧客情報を表すテーブルを顧客情報Ｔ１（６０１）とも記載する。
【００６２】
購買履歴６０２は、各顧客の購入履歴を格納する。例えば、購買履歴６０２には「顧客ＩＤ６０２１，購買カテゴリ６０２２，購買額６０２３」に関する情報を含むレコードが格納される。以下、購買履歴を表すテーブルを購買履歴Ｔ２（６０２）とも記載する。
【００６３】
利用履歴６０３は、各顧客が利用した店舗等の利用履歴を格納する。例えば、利用履歴６０３には「顧客ＩＤ６０３１，利用店舗６０３２，利用時間６０３３」に関する情報を含むレコードが格納される。以下、利用履歴を表すテーブルを利用履歴Ｔ３（６０３）とも記載する。
【００６４】
なお、顧客情報６０１、購買履歴６０２、及び利用履歴６０３には他の情報が含まれてもよい。
【００６５】
図５は、本発明の実施形態のデータベース管理システム１１１によって実行される検索処理を説明するフローチャートである。
【００６６】
本発明の実施形態のデータベース管理システム１１１が処理を開始すると（ステップ３００）、入出力装置１０から検索要求を受け付ける前に、予め、ＣＰＵ１０１によって実行される情報収集部１１８が、構成情報４０１及び負荷情報４０２等が含まれるストレージ装置情報１３３を収集する（ステップ３０１）。なお、ＣＰＵ１０１は、周期的に情報収集部１１８を実行してもよいし、ストレージ装置１２の構成が変更された等所定のタイミングで情報収集部１１８を実行してもよい。
【００６７】
ＣＰＵ１０１によって実行されるデータ分割部１１４は、予め設定された分割指定に基づいて、データ格納部１２３に格納される処理対象データの一部又は全部を分割し、分割データ集合｛Ｔ｝１３２を生成する（ステップ３０２）。その後、データベース管理システム１１１は、検索要求を受け付けるまで待ち状態となる。
【００６８】
分割データ集合｛Ｔ｝１３２の生成方法としては、レコード単位に処理対象データを分割する方法だけでなく、ブロック（複数個のレコード）単位に処理対象データを分割する方法が考えられる。このとき、ブロック単位に処理対象データを分割する方法においても、ブロックを構成するレコード数均等にしてもよいし、不均等にしてもよい。さらに、処理対象データを処理開始時に全て分割するか、検索処理中に動的にブロックを構成するレコード数を変化させながら分割するかなど、様々な実施形態が考えられる。
【００６９】
ここで、分割指定は、分割データ集合｛Ｔ｝１３２を生成するための情報であり、システム設定要求に含まれる情報である。
【００７０】
図６は、本発明の実施形態におけるシステム設定要求に含まれる分割指定の一例を示す説明図である。
【００７１】
図６に示す分割指定７０１は、分割データ集合｛Ｔ｝１３２の生成方法を指定する分割指定を格納する。
【００７２】
具体的には、分割指定７０１は、分割単位７０１１、均等性７０１２、分割範囲７０１３、及び分割サイズ７０１４を含む。
【００７３】
分割単位７０１１は、処理対象データを分割する単位を表す。均等性７０１２は、処理対象データを分割する場合に、均等に分割するか又は不均等に分割するかを表す。分割範囲７０１３は、分割するデータの範囲を表す。分割サイズ７０１４は、処理対象データの分割単位を処理中に変更するか否かを表す。
【００７４】
図６に示す例では、分割の単位をレコード単位、データは均等に分割し、全ての処理対象データが分割対象、さらに、分割単位は処理中に変更しないことが指定される。
【００７５】
ここで、図５のフローチャートの説明に戻る。
【００７６】
次に、ＣＰＵ１０１によって実行される要求受付部１１２は、入出力装置１０から検索要求を受け付ける（ステップ３０３）。受け付けられた検索要求は、処理手順生成部１１３に出力される。
【００７７】
本発明の実施形態では、検索要求は一般的なデータベース管理システムで利用されるＳＱＬ文で記述される。なお、ＳＱＬ文の記述構文については、１９９９年にＩＳＯ（国際標準化機構）/ＩＥＣ（国際電気標準会議）によって制定されたＳＱＬ９９などにおいて開示されている。
【００７８】
図７は、本発明の実施形態で用いられる検索要求の一例を示す説明図である。
【００７９】
図７に示す検索要求は、図４Ａ〜図４Ｃに示す三種類の業処理対象データを検索対象とする。
【００８０】
具体的には、検索要求は「特定の条件を満たす顧客情報のうち、同一の顧客ＩＤを有する利用履歴及び購買履歴について、それぞれ指定した条件を満たすような顧客情報を抽出すること」を目的とする。より具体的には、「３０代女性であり、かつ新宿店への来店利用履歴があり、かつ、リビングカテゴリでの購買履歴がある顧客情報を抽出する」ことを指定している。
【００８１】
さらに、本発明の実施形態では、性別及び年代（顧客情報）、購買カテゴリ（購買履歴）、並びに利用店舗（利用履歴）に関する条件に基づいて、情報が１／４、１／８、１／５に絞り込まれることを想定している。すなわち、顧客情報に含まれる全顧客のうち３０代女性が１／４となっており、購買履歴のうち、購買カテゴリが「リビング」であるレコードが全体の１／８となっている。さらに、利用履歴のうち、利用店舗が「新宿店」であるレコードが全体の１／５となっている。
【００８２】
ここで、図５のフローチャートの説明に戻る。
【００８３】
次に、ＣＰＵ１０１によって実行される処理手順生成部１１３は、要求受付部１１２から入力された検索要求に基づいて、複数個の処理手順候補を生成し、生成された複数個の処理手順候補から構成される候補集合｛Ｓ｝１３１を生成する（ステップ３０４）。
【００８４】
なお、非特許文献１には、ＳＱＬ文から処理手順候補を数え上げる手法が開示されており、具体的には、Ｂｏｔｔｏｍ−ｕｐ法を利用することによって、指定されたＳＱＬ文を処理する全ての処理手順候補を数え上げることが記載されている。
【００８５】
図８は、本発明の実施形態の処理手順生成部１１３によって生成される処理手順候補の一例を示す図である。
【００８６】
図８に示す処理手順候補は、処理手順が木構造で表現される。
【００８７】
処理手順候補（ａ）は、「まず顧客情報から性別が女性、年代が３０代であるレコードの顧客ＩＤを抽出し、抽出された顧客ＩＤに対応する顧客のうち、購買履歴から購買カテゴリがリビングであるレコードを抽出し、さらに、抽出された顧客ＩＤに対応する顧客のうち、利用履歴から利用店舗が新宿であるレコードを抽出する」という処理手順である。
【００８８】
処理手順候補（ｂ）は、「まず顧客情報から性別が女性、年代が３０代であるレコードの顧客ＩＤを抽出し、抽出された顧客ＩＤに対応する顧客のうち、利用履歴から利用店舗が新宿であるレコードを抽出し、さらに、抽出された顧客ＩＤに対応する顧客のうち、購買履歴から購買カテゴリがリビングであるレコードを抽出する」という処理手順である。
【００８９】
ここで、図５のフローチャートの説明に戻る。
【００９０】
次に、ＣＰＵ１０１によって実行される配分決定部１１５は、候補集合｛Ｓ｝１３１に含まれる各処理手順候補に対して割り当てる分割データの配分を決定する（ステップ３０５）。
【００９１】
配分の決定処理については、図９を用いて後述する。
【００９２】
ＣＰＵ１０１によって実行される配分決定部１１５は、分割データ集合｛Ｔ｝１３２に割り当てられていない分割データが存在するか否かを判定する（ステップ３０６）。具体的には、分割データ集合｛Ｔ｝１３２が空であるか否かが判定される。
【００９３】
割り当てる分割データが存在すると判定された場合、ＣＰＵ１０１によって実行される割当部１１６は、決定された配分に従って、分割データを各処理手候補に割り当てる（ステップ３０７）。
【００９４】
ＣＰＵ１０１によって実行される処理手順実行部１１７は、分割データが割り当てられた複数の処理手順候補を実行する（ステップ３０８）。これによって、複数の処理手順候補に従った処理が、並列、かつ、多重に実行される。
【００９５】
ＣＰＵ１０１によって実行される情報収集部１１８は、処理手順の実行開始後に負荷情報４０２を収集する（ステップ３０９）。取得された負荷情報４０２は、配分決定部１１５に出力される。収集された負荷情報４０２は、配分決定部１１５に出力される。
【００９６】
なお、負荷情報４０２は、処理開始後に収集されてもよいし、処理開始後周期的に収集されてもよいし、その他のタイミングで収集されてもよい。
【００９７】
配分決定部１１５は、新たに入力された負荷情報４０２を参照し、前回配分を決定したとき（ステップ３０５）に用いた負荷情報４０２と比較し、データ格納部１２３に大きな負荷変動があるか否かを判定する（ステップ３１０）。
【００９８】
例えば、収集時間の差が閾値以下、又は、負荷の変動幅が閾値以下の少なくともいずれか一方に該当するか否かが判定される。いずれかの条件に該当する場合には、データ格納部１２３に大きな負荷変動はないと判定される。一方、収集時間の差が閾値以上であり、かつ、負荷変動幅が閾値以上である場合には、データ格納部１２３に大きな負荷変動があると判定される。
【００９９】
なお、収集時間の差の閾値及び負荷の変動幅の閾値は、システム設定要求に含めてもよいし、データベース管理システム１１１が当初より保持してもよい。
【０１００】
本発明の実施形態のデータベース管理システム１１１は、処理実行中に、ストレージ装置１２の負荷状態を監視する。これによって、データベース管理システム１１１は、ストレージ装置１２の負荷が増大した場合に、ストレージ装置１２の負荷状態に対応した処理手順候補を選択し、分割データの配分を動的に変更することができる。
【０１０１】
データ格納部１２３に大きな負荷変動がないと判定された場合、ＣＰＵ１０１はステップ３０６に戻り、同様の処理を実行する（ステップ３０６〜ステップ３１０）。
【０１０２】
データ格納部１２３に大きな負荷変動があると判定された場合、ＣＰＵ１０１は、ステップ３０５に戻り、改めて配分を決定する（ステップ３０５）。すなわち、各処理手順候補に割り当てる分割データの配分が見直される。
【０１０３】
ステップ３０６において、割り当てる分割データが存在しないと判定された場合、ＣＰＵ１０１は検索処理を終了し、システムを終了させるか否かを判定する（ステップ３１１）。例えば、入出力装置１０からシステム終了を指示する命令が入力された場合に、システムを終了すると判定される。
【０１０４】
システムを終了しないと判定された場合、ＣＰＵ１０１は、ステップ３０５に戻り、新たな検索要求の受付を待つこととなる。ＣＰＵ１０１は、新たな検索要求を受け付けた場合に、同様の処理（ステップ３０３〜ステップ３１１）を繰り返し実行する。
【０１０５】
システムを終了すると判定された場合、ＣＰＵ１０１は、システムを終了させる（ステップ３１２）。
【０１０６】
本発明の実施形態では、ストレージ装置１２の性能を最大限利用するために複数の処理手順で検索処理が実行される。このとき、複数の処理手順に分配するデータは、ストレージ装置１２の負荷状態を考慮し、さらに、ストレージ装置１２のスループットが最大になるように配分される。これによって、ストレージ装置１２の性能を最大限に利用することが可能となる。
【０１０７】
従来は、一つの処理手順しか選択していないため、データ格納部１２３にアクセスする順序が常に同じになってしまっていた。そのため、特定のデータ格納部１２３の負荷が高くなり、他のデータ格納部１２３の負荷が少なくなってしまう場合があった。このとき、負荷の高いデータ格納部１２３に対するデータ入出力がボトルネックとなって性能が悪化してしまうことがあった。本発明の実施形態では、データ格納部１２３に対するアクセス順序が異なる複数の処理手順が同時に実行されるため、データ格納部１２３の負荷が分散し、特定のデータ格納部１２３の性能に空きが発生することを防ぐことができる。また、同時に実行される複数の処理手順に対する分割データの配分を後述する方法を用いて決定することによって、各データ格納部１２３の性能を最大限に利用できる。
【０１０８】
次に、ステップ３０５において実行される処理手順候補に割り当てる分割データの配分の決定処理について説明する。
【０１０９】
本発明の実施形態におけるステップ３０５の処理では、線形計画法が用いられる。線形計画法とは、制約条件の下、目的関数を最大（又は最小）にする値を求めるための方法である。
【０１１０】
本発明の実施形態では、ストレージ装置１２の負荷が上限値を超えないという制約条件の下、複数の処理手順によって検索を実行することによって処理される総データを表す目的関数が最大となる分割データの配分が算出される。
【０１１１】
図９は、本発明の実施形態のＣＰＵ１０１によって実行される配分決定部１１５が実行する処理を説明するフローチャートである。本処理は、図５のステップ３０５の処理に対応する。なお、図９の処理は、ＣＰＵ１０１によって実行される配分決定部１１５によって実行される。
【０１１２】
ステップ８０１〜ステップ８０６までは、目的関数及び制約条件を決定するための処理である。
【０１１３】
まず、配分決定部１１５は、ｎ番目のデータ格納部１２３に設定されたスループットの上限値ｍａｘ＿Ｘｎを設定する（ステップ８０１）。
【０１１４】
具体的には、配分決定部１１５は、入力されたストレージ装置情報１３３に含まれる構成情報４０１のスループット上限値４０１２を参照し、当該スループット上限値４０１２に格納される値をスループット上限値ｍａｘ＿Ｘｎに設定する。なお、ｎは、データ格納部１２３を識別するための文字を表す。
【０１１５】
配分決定部１１５は、候補集合｛Ｓ｝から部分集合｛Ｓ［Ｔｊ］｝を生成する（ステップ８０２）。
【０１１６】
具体的には、配分決定部１１５は、各処理手順候補ｓｉ∈｛Ｓ｝のうち、最初にアクセスされる処理対象データ（処理開始表Ｔｊ）が共通である処理手順候補を一つにまとめて部分集合｛Ｓ［Ｔｊ］｝を生成する。すなわち、本発明の実施形態では、最初に処理される処理対象データが共通の処理手順候補を要素とする部分集合｛Ｓ［Ｔｊ］｝が生成される。ここで、ｊは部分集合を識別する文字であり、表（処理対象データ）の数だけ部分集合が存在することとなる。
【０１１７】
なお、処理開始表Ｔｊが異なる処理手順が並列で実行された場合、処理結果に重複が出る可能性があるため、本発明の実施の形態では、処理開始表Ｔｊが同一の処理手順候補を一つにまとめことによって、処理の整合性が確保される。
【０１１８】
以下、各部分集合｛Ｓ［Ｔｊ］｝について、ステップ８０４からステップ８０７まで処理が繰り返し実行される（ステップ８０３）。
【０１１９】
配分決定部１１５は、部分集合Ｓ［Ｔｊ］に含まれる要素（処理手順候補）毎の予測Ｉ／Ｏ数Ｃｊｋを定義する（ステップ８０４）。
【０１２０】
具体的には、配分決定部１１５は、部分集合Ｓ［Ｔｊ］の要素である処理手順候補Ｓｊｋ∈Ｓ［Ｔｊ］について、当該処理手順候補Ｓｊｋにおいて発生する予測総Ｉ／Ｏ数をＣｊｋとする。ここで、文字ｋは、１〜ｎｊまでの自然数であり、部分集合に含まれる要素の数を表す。また、ｎｊは、部分集合Ｓ［Ｔｊ］の要素数である。
【０１２１】
配分決定部１１５は、部分集合Ｓ［Ｔｊ］に含まれる処理手順候補Ｓｊｋ毎に、各表（処理対象データ）に対する処理のスループットＸｊｋｍを定義する（ステップ８０５）。
【０１２２】
具体的には、配分決定部１１５は、処理開始表ＴｊからスループットＸｊｋの負荷で処理を開始した場合に、ｍ番目の表に対する処理のスループットをＸｊｋｍとする。すなわち、処理手順候補Ｓｊｋにおいて、ｍ番目の処理対象データを処理する場合の負荷が定義される。ここで、ｍは、処理手順候補Ｓｊｋにおける処理順番を表す文字である。
【０１２３】
なお、スループットＸｊｋは、任意の変数である。
【０１２４】
例えば、処理開始表Ｔｊに付加されたスループットＸｊｋに、処理途中で適用される問合せ処理の条件絞込み率を乗算することによって、ｍ番目の表（処理対象データ）に対する処理のスループットを算出できる。
【０１２５】
配分決定部１１５は、部分集合Ｓ［Ｔｊ］に含まれる全ての処理手順候補が並列に実行された場合における各データ格納部１２３のスループットの総和ｓｕｍ＿Ｘｊｋを定義する（ステップ８０６）。
【０１２６】
具体的には、以下のような処理が実行される。
【０１２７】
まず、配分決定部１１５は、入力されたストレージ装置情報１３３に含まれる構成情報４０１を参照し、ｎ番目のデータ格納部１２３に格納される表（処理対象データ）Ｔｊｋｍを確認する。
【０１２８】
次に、配分決定部１１５は、データ格納部１２３に格納される表のスループットＸｊｋｍを足し合わせたものをｓｕｍ＿Ｘｊｋｍとする。すなわち、データ格納部１２３に格納される全ての表（処理対象データ）についてのスループットの総和がｓｕｍ＿Ｘｊｋｍとなる。
【０１２９】
配分決定部１１５は、制約条件の下、目的関数ＴｏｔａｌＸｊの値が最大となる変数Ｘｊｋを求める（ステップ８０７）。すなわち、線形計画法を用いて、変数Ｘｊｋが算出される。
【０１３０】
ここで、制約条件は式（１）に示すようになり、目的関数ＴｏｔａｌＸｊは式（２）に示すようになる。
【０１３１】
【数１】
2012059130.tif 000003
【０１３２】
【数２】
2012059130.tif 000004
【０１３３】
すなわち、式（１）及び式（２）は、各データ格納部１２３に設定されたスループットの上限値を超えない範囲で、候補集合に含まれる処理手順候補を並列で実行した場合のスループットの合計が最大となる配分を決定するための式である。
【０１３４】
ここで、目的関数ＴｏｔａｌＸｊが最大となるスループットをＸｊｋ＿ｍａｘと定義する。
【０１３５】
配分決定部１１５は、ステップ８０４からステップ８０７までの処理を各部分集合Ｓ［Ｔｊ］について繰り返し実行する（ステップ８０８）。
【０１３６】
全ての部分集合Ｓ［Ｔｊ］について処理が実行された後、配分決定部１１５は、各部分集合におけるスループットの総和ＴｏｔａｌＸｊに基づいて配分を決定し（ステップ８０９）、処理を終了する（ステップ８１０）。
【０１３７】
具体的には、以下のようの処理が実行される。
【０１３８】
まず、配分決定部１１５は、スループットの総和ＴｏｔａｌＸｊの値が最大である部分集合Ｓ［Ｔｊ］を選択する。
【０１３９】
次に、配分決定部１１５は、選択された部分集合Ｓ［Ｔｊ］におけるスループットＸｊｋ＿ｍａｘの比率を、選択された部分集合Ｓ［Ｔｊ］に含まれる各処理手順候補Ｓｊｋに対する分割データの配分比率に決定する。
【０１４０】
以上のように、本発明の実施形態では、配分決定部１１５が、各データ格納部１２３の性能限界を超えない範囲で、かつ、各データ格納部１２３のスループットの合計値が最大となるような複数の処理手順を選択する。また、複数の処理手順に割り当てる分割データの配分は、各データ格納部１２３の性能限界を超えない範囲で、かつ、各データ格納部１２３のスループットの合計値が最大となるように決定される。したがって、決定された配分に基づいて複数の処理手順が実行されることによって、ストレージ装置１２の性能を最大限利用する検索処理が可能となる。
【０１４１】
次に、具体的な例を示して図９の処理を説明する。なお、説明を簡単にするため、以下のような前提とする。
【０１４２】
処理対象データは、顧客情報Ｔ１（６０１）、購買履歴Ｔ２（６０２）及び利用履歴Ｔ３（６０３）とする。また、顧客情報Ｔ１（６０１）、購買履歴Ｔ２（６０２）及び利用履歴Ｔ３（６０３）は、図２に示すように、それぞれ、異なるデータ格納部１２３に格納される。すなわち、図３Ａに示すように、顧客情報Ｔ１（６０１）は格納部識別子４０１１が「Ｓ１」であるデータ格納部１２３に格納され、購買履歴Ｔ２（６０２）は格納部識別子４０１１が「Ｓ２」であるデータ格納部１２３に格納され、利用履歴Ｔ３（６０３）は格納部識別子４０１１が「Ｓ３」であるデータ格納部１２３に格納される。
【０１４３】
このとき、ステップ３０４において、３つの処理対象データの参照順番の組み合わせから考えられる６つの処理手順候補が生成される。
【０１４４】
以下、前述した前提の下、配分決定部１１５によって実行される処理について説明する。
【０１４５】
ステップ８０１において、配分決定部１１５は、構成情報４０１を参照して、顧客情報Ｔ１（６０１）が格納されるデータ格納部１２３のスループット上限値ｍａｘ＿Ｘ１を「１５０」、購買履歴Ｔ２（６０２）が格納されるデータ格納部１２３のスループット上限値ｍａｘ＿Ｘ２を「１００」、利用履歴Ｔ３（６０３）が格納されるデータ格納部１２３のスループット上限値ｍａｘ＿Ｘ３を「５０」とする。
【０１４６】
ステップ８０２において、配分決定部１１５は、顧客情報Ｔ１（６０１）を処理開始表とする部分集合Ｓ［Ｔ１］、購買履歴Ｔ２（６０２）を処理開始表とする部分集合Ｓ［Ｔ２］、及び、利用履歴Ｔ３（６０３）を処理開始表とする部分集合Ｓ［Ｔ３］を生成する。
【０１４７】
部分集合Ｓ［Ｔ１］、Ｓ［Ｔ２］及びＳ［Ｔ３］は以下に示す要素（処理手順候補）を含む。
Ｓ［Ｔ１］＝｛ｓ１１，ｓ１２｝
Ｓ［Ｔ２］＝｛ｓ１２，ｓ２２｝
Ｓ［Ｔ３］＝｛ｓ３１，ｓ３２｝
ここで、各部分集合Ｓ［Ｔ１］、Ｓ［Ｔ２］、Ｓ［Ｔ３］に含まれる要素（処理手順候補）は以下のようになる。
［処理開始表が顧客情報Ｔ１の場合］
処理手順候補ｓ１１：顧客情報→購買履歴→利用履歴:  割当てスループット：Ｘ１１
処理手順候補ｓ１２：顧客情報→利用履歴→購買履歴:  割当てスループット：Ｘ１２
［処理開始表が購買履歴Ｔ２の場合］
処理手順候補ｓ２１：購買履歴→顧客情報→利用履歴:  割当てスループット：Ｘ２１
処理手順候補ｓ２２：購買履歴→利用履歴→顧客情報:  割当てスループット：Ｘ２２
［処理開始表が利用履歴Ｔ３の場合］
処理手順候補ｓ３１：利用履歴→購買履歴→顧客情報:  割当てスループット：Ｘ３１
処理手順候補ｓ３２：利用履歴→顧客情報→購買履歴:  割当てスループット：Ｘ３２
なお、割当てスループットは、各処理手順に配分するデータ量に関連する変数である。
【０１４８】
以下、部分集合毎にステップ８０４からステップ８０７までの処理が繰り返し実行されるが、説明の簡単のために処理開始表が顧客情報Ｔ１（６０１）である部分集合Ｓ［Ｔ１］について説明する。
【０１４９】
ステップ８０４において、配分決定部１１５は、部分集合Ｓ［Ｔ１］に含まれる各処理手順候補ｓ１１、ｓ１２における予測総Ｉ／Ｏ数をｃ１１、ｃ１２と定義する。なお、予測総Ｉ／Ｏ数は、処理手順候補ｓ１１、ｓ１２に基づいて算出することができる。配分決定部１１５は、算出された予測総Ｉ／Ｏ数をｃ１１、ｃ１２とする。
【０１５０】
ステップ８０５において、配分決定部１１５は、各処理手順候補ｓ１１、ｓ１２に割り当てる処理スループットをＸ１１、Ｘ１２とする。さらに、配分決定部１１５は、処理手順候補ｓ１１において順番に処理される表における負荷スループットをＸ１１１、Ｘ１１２、Ｘ１１３と定義し、また、処理手順候補ｓ１２において、順番に処理される表における負荷スループットをＸ１２１、Ｘ１２２、Ｘ１２３と定義する。
【０１５１】
本発明の実施形態の場合、顧客情報Ｔ１（６０１）、購買履歴Ｔ２（６０２）及び利用履歴Ｔ３（６０３）は、それぞれ異なるデータ格納部１２３に格納される。すなわち、顧客情報Ｔ１（６０１）、購買履歴Ｔ２（６０２）及び利用履歴Ｔ３（６０３）とデータ格納部１２３とが一対一に対応する。したがって、データ格納部１２３毎のスループットと表（処理対象データ）毎のスループットとは等しいものとして扱える。すなわち、データ格納部１２３のスループットは、処理手順候補に割り当てられた処理スループットＸ１１、Ｘ１２で表される。
【０１５２】
したがって、ステップ８０６において、配分決定部１１５は、ｓｕｍ＿Ｘ１１１、ｓｕｍ＿Ｘ１１２、ｓｕｍ＿Ｘ１１３を式（３）〜（５）のように定義できる。
【０１５３】
【数３】
2012059130.tif 000005
【０１５４】
【数４】
2012059130.tif 000006
【０１５５】
【数５】
2012059130.tif 000007
【０１５６】
ここで、負荷スループットＸｊｋｍを処理スループットＸ１１、Ｘ１２を用いて表すと以下の式（６）〜（８）に示すようになるものとする。
【０１５７】
【数６】
2012059130.tif 000008
【０１５８】
【数７】
2012059130.tif 000009
【０１５９】
【数８】
2012059130.tif 000010
【０１６０】
ステップ８０７において、配分決定部１１５は、式（９）〜（１１）に示す制約条件を満たし（すなわち、負荷スループットの総和がスループット上限値を超えない範囲で）、かつ、式（１２）に示すＴｏｔａｌＸｊを最大とするＸ１１及びＸ１２を算出する。
【０１６１】
【数９】
2012059130.tif 000011
【０１６２】
【数１０】
2012059130.tif 000012
【０１６３】
【数１１】
2012059130.tif 000013
【０１６４】
【数１２】
2012059130.tif 000014
【０１６５】
この場合、目的関数が最大となる解は、Ｘ１１＿ｍａｘ＝３．８４６、Ｘ１２＿ｍａｘ＝４９．２３と算出される。このとき、目的関数ＴｏｔａｌＸ１の値は、９．９９０となる。
【０１６６】
以上が、部分集合Ｓ［Ｔ１］についてステップ８０４〜ステップ８０７の処理が実行された場合の説明である。
【０１６７】
部分集合Ｓ［Ｔ２］についても同様の処理が実行されることによって、以下のような制約条件及び目的関数となる。
［処理開始表：購買履歴Ｔ２の場合］
【０１６８】
【数１３】
2012059130.tif 000015
【０１６９】
【数１４】
2012059130.tif 000016
【０１７０】
【数１５】
2012059130.tif 000017
【０１７１】
【数１６】
2012059130.tif 000018
【０１７２】
この場合、目的関数が最大となる解は、Ｘ２１＿ｍａｘ＝１０．０、Ｘ２２＿ｍａｘ＝０．０となる。このとき、目的関数ＴｏｔａｌＸ２の値は、５．０と算出される。
【０１７３】
部分集合Ｓ［Ｔ３］についても同様の処理が実行されることによって、以下のような制約条件及び目的関数となる。
［処理開始表：利用履歴Ｔ３の場合］
【０１７４】
【数１７】
2012059130.tif 000019
【０１７５】
【数１８】
2012059130.tif 000020
【０１７６】
【数１９】
2012059130.tif 000021
【０１７７】
【数２０】
2012059130.tif 000022
【０１７８】
この場合、目的関数が最大となる解は、Ｘ３１＿ｍａｘ＝０．０、Ｘ３２＿ｍａｘ＝４０．０と算出される。このとき、目的関数ＴｏｔａｌＸ２の値は、８．９８８となる。
【０１７９】
ステップ８０９において、配分決定部１１５は、各部分集合における目的関数の値を参照し、目的関数の値が最大となる部分集合を選択する。この場合、部分集合Ｓ［Ｔ１］が選択される。
【０１８０】
また、配分決定部１１５は、部分集合Ｓ［Ｔ１］における目的関数の解、すなわち、処理手順候補ｓ１１、ｓ１２のそれぞれのスループットＸ１１＿ｍａｘ＝３．８４６、Ｘ１２＿ｍａｘ＝４９．２３を、分割データ｛Ｔ｝の配分比率として決定する。
【０１８１】
以上の処理によって、ステップ３０６において、決定された配分比率に基づいて処理手順候補ｓ１１、ｓ１２が実行される。
【０１８２】
なお、本発明の実施形態では、データ格納部１２３を例に説明したが、ストレージシステムを備える計算機システムにも適用することができる。この場合、ストレージ装置１２単位のスループットを考慮すればよい。
【０１８３】
本発明の実施形態によれば、複数の処理手順をストレージ装置１２の使用率が最大になるように実行することによって、ストレージ装置の性能を最大限利用し、かつ、高速に検索処理が可能となる。また、本発明の実施形態によれば、並列に複数の処理手順が実行されている場合に、ストレージ装置１２の負荷状況に応じて、実行する処理手順及び各処理手順に割り当てるデータの配分を動的に変更できる。これによって、特定の記憶装置に負荷が集中した場合等性能の低下に柔軟に対応した検索処理が可能となる。
【符号の説明】
【０１８４】
１０  入出力装置
１１  サーバ装置
１２  ストレージ装置
１３  通信用ネットワーク
１４  ストレージ用ネットワーク
１０１、１０５  ＣＰＵ
１０２、１０６  メモリ
１０３、１０４、１０９  ネットワークインタフェース
１０７  ディスクインタフェース
１０８  記憶装置
１１１  データベース管理システム
１１２  要求受付部
１１３  処理手順生成部
１１４  データ分割部
１１５  配分決定部
１１６  割当部
１１７  処理手順実行部
１１８  情報収集部
１２２  データ読出部
１２３  データ格納部
１３１  候補集合
１３２  分割データ集合
１３３  ストレージ装置情報
１３４  配分情報
４０１  構成情報
４０２  負荷情報
６０１  顧客情報
６０２  購買履歴
６０３  利用履歴
７０１  分割指定
【図１】
2012059130.tif 000023
【図２】
2012059130.tif 000024
【図３Ａ】
2012059130.tif 000025
【図３Ｂ】
2012059130.tif 000026
【図４Ａ】
2012059130.tif 000027
【図４Ｂ】
2012059130.tif 000028
【図４Ｃ】
2012059130.tif 000029
【図５】
2012059130.tif 000030
【図６】
2012059130.tif 000031
【図７】
2012059130.tif 000032
【図８】
2012059130.tif 000033
【図９】
2012059130.tif 000034