(57)【要約】      （修正有）【課題】データ処理を行う分散システムにおける、目的に応じた分散スケジューリングを実現するデータ分散処理システム、方法及びプログラムを提供する。【解決手段】複数のデータ処理プロセスを複数のプロセッサで分散処理させるためのデータ分散処理システムであって、前記データ処理プロセスによって処理されるデータを記憶するデータ記憶部と、前記データ処理プロセスを実行するためのデータ処理部と、前記データ処理部による前記複数のデータ処理プロセスによるデータ処理手順をモデル化して構成されているデータ処理モデルに基づいて、前記複数のデータ処理プロセスによるデータ処理手順であるデータ処理スケジュールを作成するスケジュール作成部とを備える。データ処理部は、複数のデータ処理プロセスを、複数のプロセッサに、データ処理スケジュールによって設定されているデータ処理手順に従って実行させる。【選択図】図１９
2018136614.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ処理プロセスを複数のプロセッサで分散処理させるためのデータ分散処理システムであって、
前記データ処理プロセスによって処理されるデータを記憶するデータ記憶部と、
前記データ処理プロセスを実行するためのデータ処理部と、
前記データ処理部による前記複数のデータ処理プロセスによるデータ処理手順をモデル化して構成されているデータ処理モデルに基づいて、前記複数のデータ処理プロセスによるデータ処理手順であるデータ処理スケジュールを作成するスケジュール作成部とを備え、
前記データ処理部は前記複数のデータ処理プロセスを、前記複数のプロセッサに、前記データ処理スケジュールによって設定されているデータ処理手順に従って実行させる、データ分散処理システム。
【請求項２】
請求項１に記載のデータ分散処理システムであって、
前記データ処理モデルは、前記各データ処理プロセスについて、
当該データ処理プロセスが必要とする入力データ、当該入力データを処理する際の単位データ量を示す指標であるデータ処理単位、当該データ処理プロセスからの出力データ、前記入力データに対する前記出力データのデータ量の倍率を表す指標である出力データ倍率、及び各前記データ処理プロセスを前記プロセッサが処理する際の負荷を表す指標であるプロセス処理負荷を規定している、
データ分散処理システム。
【請求項３】
請求項１に記載のデータ分散処理システムであって、
前記データ処理モデルに規定される前記入力データ、前記データ処理単位、前記出力データ、前記出力データ倍率、及び前記プロセス処理負荷は、実際に前記データ処理プロセスによって処理される処理対象データに基づいて設定される、データ分散処理システム。
【請求項４】
請求項１に記載のデータ分散処理システムであって、
前記スケジュール作成部は、前記データ処理モデルに規定されている各データ処理プロセスについて、複数のシステム要件に関する指標であるシステム要件指標を算出し、各前記複数のプロセッサに含まれる演算実行単位によって前記データ処理モデルに従って前記データ処理プロセスを実行するすべての組み合わせについて算出した前記システム要件指標に基づいて前記データ処理スケジュールを算出する、データ分散処理システム。
【請求項５】
請求項１に記載のデータ分散処理システムであって、
前記スケジュール作成部は、前記データ処理モデルに基づいて、特定のデータを使用する回数と、当該特定データを使用完了後削除するか否かを示す削除フラグとを保持しており、前記データ処理部は、前記特定データの使用を完了し、当該特定データについて削除フラグが設定されていると判定した場合、当該特定データを当該特定データの格納場所から削除する、データ分散処理システム。
【請求項６】
請求項４に記載のデータ分散処理システムであって、
前記システム要件評価指標は、各前記プロセッサの計算処理に要する負荷を表す指標である計算コスト、又はメモリにデータを格納する処理に要する負荷を表す指標であるメモリコストを含む、データ分散処理システム。
【請求項７】
請求項６に記載のデータ分散処理システムであって、
前記スケジュール作成部は、前記計算コストを算出する際に、各前記プロセッサの演算性能に基づいて当該計算コストを補正する、データ分散処理システム。
【請求項８】
請求項４に記載のデータ分散処理システムであって、
前記スケジュール作成部は、複数の前記システム評価指標を備え、当該複数のシステム要件指標に対して重み付けがされており、前記スケジュール作成部は、当該重み付けがなされた前記システム要件指標に基づいて算出した評価値によって前記データ処理スケジュールを決定する、データ分散処理システム。
【請求項９】
請求項１に記載のデータ分散処理システムであって、
前記スケジュール作成部は、作成した前記データ処理スケジュールを図式化したダイアグラムを表示する出力画面を備えている、データ分散処理システム。
【請求項１０】
請求項１に記載のデータ分散処理システムであって、
前記データ処理モデルは、前記各データ処理プロセスについて、
当該データ処理プロセスが必要とする入力データ、当該入力データを処理する際の単位データ量を示す指標であるデータ処理単位、当該データ処理プロセスからの出力データ、前記入力データに対する前記出力データのデータ量の倍率を表す指標である出力データ倍率、及び各前記データ処理プロセスを前記プロセッサが処理する際の負荷を表す指標であるプロセス処理負荷を規定しており、
前記データ処理モデルに規定される前記入力データ、前記データ処理単位、前記出力データ、前記出力データ倍率、及び前記プロセス処理負荷は、実際に前記データ処理プロセスによって処理される処理対象データに基づいて設定され、
前記スケジュール作成部は、前記データ処理モデルに規定されている各データ処理プロセスについて、複数のシステム要件に関する指標であるシステム要件指標を算出し、各前記複数のプロセッサに含まれる演算実行単位によって前記データ処理モデルに従って前記データ処理プロセスを実行するすべての組み合わせについて算出した前記システム要件指標に基づいて前記データ処理スケジュールを算出し、
前記データ処理モデルに基づいて、特定のデータを使用する回数と、当該特定データを使用完了後削除するか否かを示す削除フラグとを保持しており、前記データ処理部は、前記特定データの使用を完了し、当該特定データについて削除フラグが設定されていると判定した場合、当該特定データを当該特定データの格納場所から削除し、
前記システム要件評価指標は、各前記プロセッサの計算処理に要する負荷を表す指標である計算コスト、又はメモリにデータを格納する処理に要する負荷を表す指標であるメモリコストを含み、
前記スケジュール作成部は、前記計算コストを算出する際に、各前記プロセッサの演算性能に基づいて当該計算コストを補正し、
前記スケジュール作成部は、複数の前記システム評価指標を備え、当該複数のシステム要件指標に対して重み付けがされており、前記スケジュール作成部は、当該重み付けがなされた前記システム要件指標に基づいて算出した評価値によって前記データ処理スケジュールを決定し、
前記スケジュール作成部は、作成した前記データ処理スケジュールを図式化したダイアグラムを表示する出力画面を備えている、データ分散処理システム。
【請求項１１】
複数のデータ処理プロセスを複数のプロセッサで分散処理させるためのデータ分散処理方法であって、
前記データ処理プロセスによって処理されるデータを記憶し、
前記複数のデータ処理プロセスによるデータ処理手順をモデル化して構成されているデータ処理モデルに基づいて、前記複数のデータ処理プロセスによるデータ処理手順であるデータ処理スケジュールを作成し、
前記複数のデータ処理プロセスを、前記複数のプロセッサにより、前記データ処理スケジュールによって設定されているデータ処理手順に従って実行する、データ分散処理方法
。
【請求項１２】
複数のデータ処理プロセスを複数のプロセッサで分散処理させるためのデータ分散処理プログラムであって、コンピュータに、
前記データ処理プロセスによって処理されるデータを記憶するステップと、
前記複数のデータ処理プロセスによるデータ処理手順をモデル化して構成されているデータ処理モデルに基づいて、前記複数のデータ処理プロセスによるデータ処理手順であるデータ処理スケジュールを作成するステップと、
前記複数のデータ処理プロセスを、前記複数のプロセッサにより、前記データ処理スケジュールによって設定されているデータ処理手順に従って実行するステップとを実行させる、データ分散処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分散処理システム、データ分散処理方法、及びデータ分散処理プログラムに関する。
【背景技術】
【０００２】
スマートフォン普及によるモバイルネットワークの伸長に続き、様々なセンサデバイスがインターネットに接続するＩｏＴ（Internet of Things）時代の到来により、これまでセンサデバイスが設置されていなかった場所でのセンシングと，それに伴うセンシング情報種別の多様化が進んでいる。その結果、分析に利用可能なデータが増加し、人工知能や機械学習に代表されるような、大規模データ分析へのニーズが高まっている。ここで、大規模データ分析は、結果を導き出すまでに長時間要することから、分散データ処理を実行できるシステムを構築し、データ分析アプリケーションを並列に分散して動作させることで、実行時間を短縮することが望まれている。
【０００３】
しかしながら、分析アプリケーションの開発者が、分析処理のアルゴリズムだけでなく、分析処理の並列化まで考慮して開発を行うことは困難である。なぜなら、適切な並列化処理を計画するためには、アプリケーション単体の開発とは又別異の専門知識が必要とされるためである。そのため、分析アプリケーションの開発者は分析処理アルゴリズムの開発に注力し、並列化処理は別途計画、実行するという形になりがちである。
【０００４】
分析アプリケーションの並列化処理に関して、例えば特許文献１では、実行するアプリケーションのデータフローを元に、実行スケジュールを作成し、作成したスケジュールを元にアプリケーションを動作させるスケジューリング装置を提供している。これにより、分析アプリケーションの開発者が独自に並列化を行わなくても、分析アプリケーションの効率的な並列分散実行が可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第１１／０７８１６２号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１の方法では、アプリケーションが各処理で参照するデータを、サーバ内メモリもしくはＤＢに移すタイミングに着目したスケジューリングを行っているため、システム全体としてアプリケーションを効率的に実行させることに着目したスケジューリングを行うことはできない。
【０００７】
また、特許文献１は分析処理を行う際に入力として与えられるデータの特性や、分析処理を実行するコンピュータの特性を考慮していないほか、参照の終了したデータの扱いについても考慮していないため、特許文献１の提案方法を用いて、最適なスケジューリングを行うことは難しいと考えられる。
【０００８】
本発明は上記の、及び他の課題を解決するためになされたもので、その一つの目的は、分析アプリケーション実行時のニーズに応じた適切な分散スケジューリングを行うことができるデータ分散処理システム、データ分散処理方法、及びデータ分散処理プログラムを提供することである。
【課題を解決するための手段】
【０００９】
上記の及び他の目的を達成するための本発明の一態様は、複数のデータ処理プロセスを複数のプロセッサで分散処理させるためのデータ分散処理システムであって、前記データ処理プロセスによって処理されるデータを記憶するデータ記憶部と、前記データ処理プロセスを実行するためのデータ処理部と、前記データ処理部による前記複数のデータ処理プロセスによるデータ処理手順をモデル化して構成されているデータ処理モデルに基づいて、前記複数のデータ処理プロセスによるデータ処理手順であるデータ処理スケジュールを作成するスケジュール作成部とを備え、前記データ処理部は前記複数のデータ処理プロセスを、前記複数のプロセッサに、前記データ処理スケジュールによって設定されているデータ処理手順に従って実行させる。
【発明の効果】
【００１０】
本発明の一態様に係るデータ分散処理システム、データ分散処理方法、及びデータ分散処理プログラムによれば、分析アプリケーション実行時のニーズに応じた適切な分散スケジューリングを行うことができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の第一の実施形態によるデータ分散処理システムのシステム構成を例示する図である。
【図２】図２は、本実施形態のスケジューリングサーバ１０１の構成を例示する図である。
【図３】図３は、スケジューリングサーバ１０１にあるスケジュール計算プログラム２０６の構成を例示する図である。
【図４】図４は、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納されているデータの構成を例示する図である。
【図５】図５は、本実施形態の分析処理サーバ１０２の構成を例示する図である。
【図６】図６は、分析処理サーバ１０２にある分析プログラム３０６の構成を例示する図である。
【図７】図７は、分析処理サーバ１０２にあるスケジューリングプログラム３０７の構成を例示する図である。
【図８】図８は、分析処理サーバ１０２の不揮発性記憶部３０９に格納されているデータの構成を例示する図である。
【図９】図９は、本実施形態のインメモリデータストアサーバ１０３の構成を例示する図である。
【図１０】図１０は、インメモリデータストアサーバ１０３の揮発性記憶部４０６に格納されているデータの構成を例示する図である。
【図１１】図１１は、本実施形態のデータベースサーバ１０４の構成を例示する図である。
【図１２】図１２は、データベースサーバ１０４の不揮発性記憶部５０７に格納されているデータの構成を例示する図である。
【図１３】図１３は、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納される処理モデル２２１の内容を例示する図である。
【図１４】図１４は、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納される演算性能定義２２２の内容を例示する図である。
【図１５】図１５は、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納される削除定義テーブル２２３の内容を例示する図である。
【図１６】図１６は、分析処理の対象である処理対象データ５１１の内容を例示する図である。
【図１７】図１７は、スケジューリングサーバ１０１によるスケジュール計算プログラム２０６実行時のＧＵＩ画面を例示する図である。
【図１８】図１８は、スケジュール計算プログラム２０６によるスケジューリング実行処理フローを例示する図である。
【図１９】図１９は、スケジュール計算部２１１によるデータ処理フローを例示する図である。
【図２０】図２０は、スケジュール計算部２１１によるデータ処理フローを模式的に例示する図である。
【図２１】図２１は、スケジュール定義算出処理フローを例示する図である。
【図２２】図２２は、スケジュール計算時に利用する評価関数を例示する図である。
【図２３】図２３は、スケジュール定義３３１の内容を例示する図である。
【図２４】図２４は、スケジュール定義３３１によるデータ処理フローを模式的に示す図である。
【図２５】図２５は、分析処理サーバ１０２にある共有データ情報テーブル３３２の構成例を示す図である。
【図２６】図２６は、分析処理サーバ１０２のスケジューリングプログラム３０７によるデータ処理フローを例示する図である。
【図２７】図２７は、分析処理サーバ１０２のスケジューリングプログラム３０７実行時のＧＵＩ画面を例示する図である。
【発明を実施するための形態】
【００１２】
以下、本発明について、その一実施形態に即して添付図面を参照しつつ説明する。以下の実施形態では、データ処理を行う分散システムの一例として、分散分析システムを想定している。
【００１３】
データ分散処理システムの構成
図１は、本実施形態のデータ分散処理システム１のシステム構成の一例を示す図である。分散分析システム１は、スケジューリングサーバ１０１、分析処理サーバ１０２（データ処理部）、インメモリデータストアサーバ１０３、及びデータベースサーバ１０４（データ記憶部）を備え、それらの間は通信ネットワーク１０５によって通信可能に接続されている。通信ネットワーク１０５は、例えばイントラネットとして構成することができるが、ローカルエリアネットワーク（ＬＡＮ）、インターネット、移動体通信網、専用線等で構成することもできる。
【００１４】
データ分散処理システム１は、分析対象である大規模データを複数の分析処理サーバ１０２で分散処理する機能を有する。スケジューリングサーバ１０１は、後述する分析処理サーバ１０２にて実行される分析処理を分散実行する際のスケジュールを計算するサーバコンピュータである。分析処理サーバ１０２は、スケジューリングサーバ１０１にて算出されたスケジュールを元に、データ分析処理を分散実行するサーバコンピュータである。前記のように、本実施形態では、分析処理を分散して行うことを想定しているため、分析処理サーバ１０２は複数設けることを想定しているが、例えば１台の分析処理サーバ１０２において複数のプロセッサが分散処理を実行するように構成してもよい。インメモリデータストアサーバ１０３は、分析処理サーバ１０２にて実施される分析処理が、スケジューリングサーバ１０１によって算出されたスケジュールに従い実施される際に、参照元データもしくは出力データの揮発性メモリ上の格納場所として利用される。データベースサーバ１０４は、分析処理サーバ１０２にて実施される分析処理が、スケジューリングサーバ１０１によって算出されたスケジュールに従い実施される際に、参照元データもしくは出力データの不揮発性メモリ上の格納場所として利用される。
【００１５】
スケジューリングサーバ１０１の構成例
図２は、スケジューリングサーバ１０１のハードウェア構成例を示す図である。スケジ
ューリングサーバ１０１（スケジュール作成部）は、ネットワークインタフェースカード（ＮＩＣ）等を含むネットワークインタフェース（ネットワークＩ／Ｆ）部２０１と、キーボード、モニタディスプレイ等の入出力デバイスを含む入出力インタフェース（入出力Ｉ／Ｆ）部２０２と、ＣＰＵ、ＭＰＵ等のプロセッサ２０３と、データの一時記憶領域を提供するＲＡＭ等の揮発性メモリ２０４及びＮＶＲＡＭ、ＲＯＭ等の不揮発性メモリ２０５と、これらを接続するバスなどの内部通信線と、を含んで構成される。スケジューリングサーバ１０１はネットワークＩ／Ｆ部２０１を介して通信ネットワーク１０５に接続している。
【００１６】
揮発性メモリ２０４は、スケジュール計算プログラム２０６を格納しており、また、データを格納する揮発性記憶部２０７を備えている。図３にスケジュール計算プログラム２０６の構成例を示している。スケジュール計算プログラム２０６は、スケジュール計算部２１１と、出力インタフェース（出力Ｉ／Ｆ）部２１２と、データベースインタフェース（データベースＩ／Ｆ）部２１３とを含んで構成される。
【００１７】
スケジュール計算部２１１には、スケジュール計算プログラム２０６が分析処理サーバ１０２によって分散して分析処理を実施する際のスケジュールを算出する処理を実現する各種制御プログラムが記録され、プロセッサ２０３により実行される。出力Ｉ／Ｆ部２１２には、スケジュール計算部２１１を実施する際に、必要となる入力ファイルを読み込み、算出したスケジュールデータを出力する処理を実現する各種制御プログラムが記録され、プロセッサ２０３により実行される。データベースＩ／Ｆ部２１３には、スケジュール計算部２１１を実行する際に、必要となる入力データを読み込む処理を実現する各種制御プログラムが記録され、プロセッサ２０３により実行される。
【００１８】
不揮発性メモリ２０５は、不揮発性記憶部２０８を備えている。図４に不揮発性記憶部２０８の構成例を示している。不揮発性記憶部２０８は、スケジュール計算プログラム２０６が管理するデータを格納するほか、処理モデル２２１、演算性能定義２２２、及び削除定義テーブル２２３を備えている。処理モデル２２１は、分析処理サーバ１０２の分析プログラム３０６が実行する処理内容を定義したファイルである。演算性能定義２２２は、分析プログラム３０６を実行する分析処理サーバ１０２の演算性能を定義したファイルである。削除定義テーブル２２３は、分析処理サーバ１０２にて分析処理を実施する際に、インメモリデータストアサーバ１０３、データベースサーバ１０４、及びプロセッサ３０３がデータ一時記憶領域として使用するオンメモリに保持されるデータを適宜削除して使用データ容量を節約するか否かを分析処理開始前にあらかじめ定義するファイルである。後出の図１３に処理モデル２２１の構成例を、図１４に演算性能定義２２２の構成例を、図１５に削除定義テーブル２２３の構成例をそれぞれ示している。これら３つのファイルに関しては、図１３〜図１５を参照して別途説明する。
【００１９】
分析処理サーバ１０２の構成例
図５は、分析処理サーバ１０２のハードウェア構成例を示す図である。分析処理サーバ１０２は、ネットワークＩ／Ｆ部３０１と、入出力Ｉ／Ｆ部３０２と、プロセッサ３０３と、揮発性メモリ３０４と、不揮発性メモリ３０５と、これらを接続するバスなどの内部通信線とを含んで構成される。分析処理サーバ１０２はネットワークＩ／Ｆ部３０１を介して通信ネットワーク１０５に接続している。スケジューリングサーバ１０１と同様の構成要素については説明を省略している。
【００２０】
揮発性メモリ３０４は、分析プログラム３０６と、スケジューリングプログラム３０７と、データを格納する揮発性記憶部３０８とを備えている。図６に分析プログラム３０６の構成例を示している。分析プログラム３０６には、分析プログラム３０６を構成する複数の分析プロセス３１１と、インメモリデータストアサーバ１０３とデータをやり取りす
るデータストアサーバインタフェース（データストアサーバＩ／Ｆ）部３１２と、データベースサーバ１０４とデータをやり取りするデータベースＩ／Ｆ部３１３が含まれており、プロセッサ３０３により実行される。
【００２１】
図７にスケジューリングプログラム３０７の構成例を示している。スケジューリングプログラム３０７は、分析プログラム３０６を、スケジューリングサーバ１０１が算出したスケジュール通りに動作させる補助プログラムである。スケジューリングプログラム３０７には、分析プログラム３０６の分析プロセス３１１を呼び出す分析プロセス呼出部３２１と、スケジュールを読み込むための入出力部３２２が含まれており、プロセッサ３０３により実行される。揮発性記憶部３０８には、分析プログラム３０６が管理するデータ、スケジューリングプログラム３０７が管理するデータが格納される。
【００２２】
不揮発性メモリ３０５は、不揮発性記憶部３０９を備えている。図８に不揮発性記憶部３０９の構成例を示している。不揮発性記憶部３０９は、分析プログラム３０６が管理するデータ、スケジューリングプログラム３０７が管理するデータを格納するほか、スケジュール定義３３１、及び共有データ情報テーブル３３２を記憶している。
【００２３】
スケジュール定義３３１（データ処理スケジュール）には、分析プログラム３０６を分散実行する際に参照される、分析プログラム３０６の実行手順が記載されており、スケジューリングサーバ１０１のスケジュール計算プログラム２０６によって生成される。後出の図２３に、スケジュール定義３３１の構成例を示している。
【００２４】
共有データ情報テーブル３３２は、分析プログラム３０６を分散実行する際に参照及び更新される、分析プログラム３０６の参照元データ及び出力データの格納場所をまとめて格納しているテーブルである。共有情報データテーブル３３２は、スケジューリングサーバ１０１のスケジュール計算プログラム２０６によって生成される。後出の図２５に、共有データ情報テーブル３３２の構成例を示している。スケジュール定義３３１、共有データ情報テーブル３３２に関しては、図２３、図２５を参照して後述する。
【００２５】
インメモリデータストアサーバ１０３の構成例
図９に、インメモリデータストアサーバ１０３のハードウェア構成例を示している。インメモリデータストアサーバ１０３は、ネットワークＩ／Ｆ部４０１と、プロセッサ４０２と、揮発性メモリ４０３と、不揮発性メモリ４０４と、これらを接続するバスなどの内部通信線とを含んで構成される。インメモリデータストアサーバ１０３はネットワークＩ／Ｆ部４０１を介して通信ネットワーク１０５に接続している。既出の構成要素と同様の構成要素については説明を省略している。
【００２６】
揮発性メモリ４０３は、データストアプログラム４０５と、データを格納する揮発性記憶部４０６とを備えている。データストアプログラム４０５には、データを揮発性メモリ４０３上の揮発性記憶部４０６に格納し、また読み出すためのプログラムが記録されており、プロセッサ４０２により実行される。図１０に揮発性記憶部４０６の構成例を示している。揮発性記憶部４０６は、複数のテンポラリデータ４１１のほか、データストアプログラム４０５が管理するデータを格納する。テンポラリデータ４１１は、データストアプログラム４０５がその実行中に書き出し、また読み出す参照元データである。テンポラリデータ４１１は、揮発性の記憶領域に保存されているため、永続性のないデータである。
不揮発性メモリ４０４は、不揮発性記憶部４０７を備えている。不揮発性記憶部４０７は、データストアプログラム４０５が管理するデータを格納する。
【００２７】
データベースサーバ１０４の構成例
図１１に、データベースサーバ１０４のハードウェア構成例を示している。データベー
スサーバ１０４は、ネットワークＩ／Ｆ部５０１と、プロセッサ５０２と、揮発性メモリ５０３と、不揮発性メモリ５０４と、これらを接続するバスなどの内部通信線とを含んで構成される。データベースサーバ１０４はネットワークＩ／Ｆ部５０１を介して通信ネットワーク１０５に接続している。既出の構成要素と同様の構成要素については説明を省略している。
【００２８】
揮発性メモリ５０３は、データベースプログラム５０５と、データを格納する揮発性記憶部５０６を備えている。データベースプログラム５０５は、データを不揮発性メモリ５０４上の不揮発性記憶部５０７に格納し、また読み出すためのプログラムであり、プロセッサ５０２により実行される。揮発性記憶部５０６には、データベースプログラム５０５が管理するデータを格納する。
【００２９】
不揮発性メモリ５０４は、不揮発性記憶部５０７を備えている。図１２に不揮発性記憶部５０７の構成例を示している。不揮発性記憶部５０７は、複数の処理対象データ５１１と、データベースプログラム５０５が管理するデータとを格納する。処理対象データ５１１は、データベースプログラム５０５がその実行中に書き出し、また読み出す参照元データである。
【００３０】
処理モデル２２１の構成例
図１３に、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納されている処理モデル２２１（データ処理モデル）の構成例を示している。処理モデル２２１は、実際に分析処理サーバ１０２の分析プログラム３０６によって処理されるデータに関する仕様を定義したファイルである。図１３の例では、処理モデル２２１はデータ記述言語の一種であるJavaScript Object Notation（ＪＳＯＮ）形式（JavaScriptは登録商標）で記述されているが、データ記述形式はこれに制約されるものではない。
【００３１】
本実施形態における処理モデル２２１は、分析プログラム３０６を構成する複数の分析プロセス３１１を実行する際に必須となる入力データである必須入力データ（essential data）、前記分析プロセス３１１を実行する際に必要となる入力データである所要入力データ（demand data）、入力データの処理単位（processing data unit）（データ処理単
位）、実行された分析プロセスから出力される出力データ（output data）、出力データ
倍率（output data ratio）、及びプロセス処理の重み（cal. weight）（プロセス処理負荷）の各項目を備えている。必須入力データは、対象のプロセスを実行する際に、記載されたデータがなければ当該プロセスを実行できないものを示しており、図１３の例では、コンマ（，）区切りで複数指定可能としている。所要入力データは、対象のプロセスを実行する際に、記載されたデータが必要であるが、提供されない場合には再計算するなどして当該プロセスを実行可能であるものを示しており、必須入力データと同様にコンマ（，）区切りで複数指定可能としている。入力データの処理単位は、対象のプロセスが入力データをどのような単位で処理するかを示している。例えば、入力データ処理単位が“ｃｅｌｌ”であれば１セル毎に、“ｃｏｌｕｍｎ”であれば１カラム毎に、“ｒｅｃｏｒｄ”であれば、１レコード毎に、該当プロセスが入力データの処理を行う。入力データ処理単位は、必須入力データ及び所要入力データにそれぞれ対応する。例えば、必須入力データに１件、所要入力データに２件記載されていた場合は、入力データ処理単位には３件分記載し、そのうち１件目は必須入力データに対応し、後の２件は所要入力データに対応する。出力データは、対象プロセスの実行が完了した後出力されるデータを識別するための識別子であり、コンマ（，）区切りで複数指定可能としている。出力データ倍率は、対象プロセスの出力データの、入力データに対する倍率であり、入力データのデータサイズに対して、出力データがどの程度増大、あるいは縮小されるかを示す。例えば、対象プロセスが大文字データから小文字データへ変換する処理である場合、入力データサイズと出力データサイズとは同等であるため、出力データ倍率は１．０となり、入力データに対して出
力データの文字数が５０％増加する場合、出力データ倍率は１．５となる。プロセス処理重みは、対象プロセスを実行する際に必要となる処理の重みであり、例えばＣＰＵの実行時間を基準とした重み付け数値を記載する。
【００３２】
このように、実際に分析プロセス３１１で実行される処理内容に即したモデルによって分散処理の計画を行うので、個々の分析プログラム３０６について適切な分散処理計画を実現することができる。
【００３３】
演算性能定義２２２の構成例
図１４に、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納されている演算性能定義２２２の構成例を示している。演算性能定義２２２は、分析プログラム３０６が動作する分析処理サーバ１０２を構成するコンピュータの性能を定義したファイルである。図１４に例示する演算性能定義２２２は、処理モデル２２１と同様にＪＳＯＮ形式で記述されているが、データ記述形式はこれに制約されるものではない。本実施形態における演算性能定義２２２には、各分析処理サーバ１０２のＣＰＵ性能（cpu spec）、ＣＰＵコア数（cpu core）、メモリ容量（memory）、及びネットワーク帯域（network）の各項
目が含まれている。ＣＰＵ性能は、各分析処理サーバ１０２が備えているＣＰＵのクロック数を記載している。ＣＰＵコア数は、分析処理サーバ１０２のＣＰＵが備えているコア数を記載している。なお、ここで、ＣＰＵの用語は、図５におけるプロセッサ３０３を表す。また各プロセッサ３０３が備えているコアを「演算実行単位」とも呼ぶものとする。メモリ容量は、分析処理サーバ１０２に搭載されているメモリの記憶容量を記載している。ネットワーク帯域は、分析処理サーバ１０２が備えているネットワークＩ／Ｆ部３０１が対応しているネットワーク帯域の上限を記載している。この演算性能定義２２２によって、スケジューリングサーバ１０１は、分析処理サーバ１０２のコンピュータとしての性能を考慮したスケジュール作成を実現することができる。
【００３４】
削除定義テーブル２２３の構成例
図１５に、スケジューリングサーバ１０１の不揮発性記憶部２０８に格納されている削除定義テーブル２２３の構成例を示している。削除定義テーブル２２３は、分析処理サーバ１０２の分析プログラム３０６が分析処理を行う際に、参照元のデータが不必要になったタイミングで当該データを削除するか否かを定義するテーブルである。図１５に例示する削除定義テーブル２２３は、参照元のデータがデータベースサーバ１０４上にある場合（ＤＢ）、分析処理サーバ１０２のメモリ上にある場合（ｏｎ−ｍｅｍｏｒｙ）、インメモリデータストアサーバ１０３上にある場合（ＫＶＳ）の３パターンについての削除定義が記載されている。図１５の例では、インメモリデータストアサーバ１０３の揮発性記憶部４０６にはKey Value Store（ＫＶＳ）形式でデータを格納しているので、削除定義テ
ーブル２２３では”ＫＶＳ”の符号で表している。図１５の例では、データの格納場所がＤＢ及びｏｎ−ｍｅｍｏｒｙであれば削除フラグがＯＦＦで、格納場所がＫＶＳであれば削除フラグがＯＮと設定されている。したがって、分析プログラム３０６実行時、参照元データがＤＢもしくは分析処理サーバ１０２のメモリ上にある場合は、データを参照した分析プロセス実行後にデータの削除は行われず、格納場所がＫＶＳにある場合は、データを参照した分析プロセス実行後にデータの削除が行われる。削除定義テーブル２２３によって、システム全体のデータ格納容量の効率化を実現することができる。
【００３５】
データベースサーバ１０４の処理対象データ５１１
図１６は、データベースサーバ１０４の不揮発性記憶部５０７に格納される処理対象データ５１１の構成例を示す図である。処理対象データ５１１は、分析処理サーバ１０２の分析プログラム３０６が分析処理を行う際に、参照元のデータとして利用するデータである。本実施形態では、参照元として２つの処理対象データ５１１ａ，５１１ｂが処理される場合を想定する。処理対象データ５１１ａ，５１１ｂはカラム（縦方向）とレコード（
横方向）とから構成され、各レコードにおいて、各カラムにデータが格納される。各レコード内では、データの区切りが分かるよう、コンマ（，）で各データを区分している。この形式は一般的にｃｓｖファイル形式と呼ばれるが、分析プログラム３０６が分析処理を行う際に参照することができるのであれば、どんな形式でも構わない。また、処理対象データ５１１は、データベースサーバ１０４において、不揮発性記憶部５０７に格納することなく、データベースプログラム５０５上で管理するようにしてもよい。
【００３６】
スケジュール計算プログラム２０６のＧＵＩ画面構成例
図１７は、スケジュール計算プログラム２０６の動作時のＧＵＩ画面を例示する図である。ＧＵＩ画面１００１は、スケジュール計算プログラム２０６を実行する際に必要となる情報が入力できる入力インタフェース１００２と、スケジュール計算プログラム２０６の実行を指示するための実行ボタン１００３とを備える。
【００３７】
入力インタフェース１００２には、処理モデル、分析プログラム３０６が分析処理を行う際に参照するデータ、演算性能定義、データ削除ルールをそれぞれ入力できるようになっている。処理モデルの項目では、まず図１３で説明した処理モデル２２１を、ファイルとして参照ボタンから選択することで入力することができる。分析プログラム３０６が分析処理を行う際に参照するデータは、図１６で説明した処理対象データ５１１を、ファイルとして参照ボタンから選択することで入力することができる。分析プログラム３０６が分析処理を行う際に参照するデータについて、前述の手順で入力した処理モデルから、入力に必要なデータの個数を解析することができる。例えば、図１３で説明した処理モデル２２１では、必須入力データ及び所要入力データに記載されている参照元データはｄａｔａＡ，ｄａｔａＢだけであるから、入力インタフェース１００２にて分析プログラム３０６が分析処理を行う際に参照するデータの欄に入力する必要のあるデータはｄａｔａＡとｄａｔａＢとなる。処理モデル２２１内で”ｐｒｏｃｅｓｓｅｄ”が付されたデータは、各プロセスにより中途出力されるデータであるため、処理モデルの項目で指定するデータからは除外することができる。実際に分析プログラム３０６が処理するデータを入力とすることで、入力するデータの特性（例えば、カラム数が極端に多い、１セル内のバイト数が大きいなど）に適したスケジュール作成が可能となる。演算性能定義の項目は、図１４で説明した演算性能定義２２２を、ファイルとして参照ボタンから選択することで入力することができる。データ削除ルールの項目は、図１５で説明した削除定義テーブル２２３において、参照元のデータがＤＢ上にある場合、分析処理サーバ１０２のメモリ上（ｏｎ−ｍｅｍｏｒｙ）にある場合、ＫＶＳ上にある場合の３パターンに関する削除定義を、それぞれＯＮかＯＦＦかを選択することで入力することができる。
【００３８】
入力インタフェース１００２の、処理モデル、分析プログラム３０６が分析処理を行う際に参照するデータ、演算性能定義、及びデータ削除ルールをすべて入力し、実行ボタン１００３を操作することで、スケジュール計算プログラム２０６を動作させることができる。
【００３９】
データ処理フロー例の説明
次に、以上の構成を有する分散分析システム１で実行されるデータ処理について説明する。図１８は、スケジューリングサーバ１０１のスケジュール計算プログラム２０６によるデータ処理例をフローチャートで示したものである。
【００４０】
スケジュール計算プログラム２０６は、まずＧＵＩ画面の１００１の入力インタフェース１００２から、作成した処理モデル２２１のファイルを参照ボタンの入力に応じて取得する（Ｓ１１０１）。ユーザが入力した処理モデル２２１が正常に読み込まれると、スケジュール計算プログラム２０６は、必要となる参照元データの名称と個数を計算し、ＧＵＩ画面１００１の入力インタフェース１００２上に入力項目として再表示する。
【００４１】
次に、スケジュール計算プログラム２０６は、ＧＵＩ画面１００１の入力インタフェース１００２において参照ボタンにより入力された、実行する分析処理の参照元データを取得する（Ｓ１１０２）。
【００４２】
次に、スケジュール計算プログラム２０６は、ＧＵＩ画面１００１の入力インタフェース１００２において参照ボタンにより入力された、分析処理を実行する分析処理サーバ１０２のコンピュータとしての性能を記載した演算性能定義２２２のファイルを取得する（Ｓ１１０３）。
【００４３】
次に、スケジュール計算プログラム２０６は、ＧＵＩ画面１００１の入力インタフェース１００２において、ＤＢ、ｏｎ−ｍｅｍｏｒｙ、ＫＶＳそれぞれに対して、プルダウンリストから選択したＯＮ又はＯＦＦのデータ削除ルールを削除定義テーブル２２３から取得する。（Ｓ１１０４）。
【００４４】
最後に、スケジュール計算プログラム２０６は、ＧＵＩ画面１００１の実行ボタン１００３の操作に応じてスケジューリングのためのデータ処理を実行する（Ｓ１１０５）。
【００４５】
次に、スケジューリングサーバ１０１のスケジュール計算部２１１によるスケジュール計算処理について説明する。図１９は、スケジューリングサーバ１０１のスケジュール計算部２１１がスケジュールを算出するためのフローチャートを示している。また図２０は、図１９のフローチャートのＳ１２０１からＳ１２０４までの処理ステップを補足説明するためのものである。以降、図１９及び図２０を用いて、スケジュール計算処理の説明を行う。
【００４６】
まず、スケジュール計算部２１１は図１９の処理を開始すると、プログラム実行時に指定された入力ファイルのカラム数、レコード数、セル数と、それぞれの平均バイト数を算出する（Ｓ１２０１）。ここでの入力ファイルとは、図１７の入力インタフェース１００２にて入力した、分析プログラム３０６が分析処理を行う際に参照するデータのことを指し、図１６に例示した処理対象データ５１１に対応する。例として、ｄａｔａＡ，ｄａｔａＢが入力ファイルとして与えられた場合、ｄａｔａＡ，ｄａｔａＢの両ファイルに対して、ファイル内の行方向（レコード）と列方向（カラム）のデータ個数を求め、それぞれレコード数、及びカラム数とする。また、レコード数とカラム数との積として、セル数を算出する。さらに、各ファイルの総バイト数を、レコード数、カラム数、セル数で除して、それぞれの平均バイト数を求める。
【００４７】
次に、スケジュール計算部２１１は、プログラム実行時に指定された処理モデルの各処理に要する計算コストを算出する（Ｓ１２０２）。具体的には、図１７の入力インタフェース１００２にて入力した処理モデルを参照し、参照元データの参照数と処理モデルのプロセス処理の重みとの積として計算コストを算出する。例えば、図１３の処理モデル２２１を参照すると、処理モデル２２１のｐｒｏｃｅｓｓｉｎｇＡがｄａｔａＡをセル単位（processing data unit=cell）で入力とし、プロセス処理の重み（cal. weight）が２００だとした場合、ｄａｔａＡのセル数が１００Ｋだとすると、１００Ｋ×２００＝２０Ｍの計算コストと算出することができる。なお、Ｋは１，０００、Ｍは１，０００，０００の単位を表している。
【００４８】
次に、スケジュール計算部２１１は、Ｓ１２０２で算出した計算コストと、プログラム実行時に指定された演算性能から、プロセッサ毎に計算コストの補正を行う（Ｓ１２０３）。具体的には、図１７の入力インタフェース１００２にて入力した演算性能定義を参照し、Ｓ１２０２で算出した計算コストを、演算性能定義中のＣＰＵ性能の値で正規化する
。例えば、Ｓ１２０２で、処理モデル２２１におけるｐｒｏｃｅｓｓｉｎｇＡの計算コストが２０Ｍと算出されたとする。演算性能定義２２２のＣＰＵ性能が、ｍａｃｈｉｎｅＡでは２ＧＨｚ、ｍａｃｈｉｎｅＢでは１ＧＨｚであった場合、ｍａｃｈｉｎｅＡとｍａｃｈｉｎｅＢを比べると、ｍａｃｈｉｎｅＡはｍａｃｈｉｎｅＢの２倍の性能となるため、Ｓ１２０２で算出された計算コスト２０Ｍを実行するのに、ｍａｃｈｉｎｅＢはｍａｃｈｉｎｅＡの２倍のコスト、言い換えれば２倍の演算時間が必要となる。そのため、ｍａｃｈｉｎｅＡでｐｒｏｃｅｓｓｉｎｇＡを実行した場合の計算コストは２０Ｍ、ｍａｃｈｉｎｅＢでｐｒｏｃｅｓｓｉｎｇＡを実行した場合の計算コストは４０Ｍと算出することができる。
【００４９】
次に、スケジュール計算部２１１は、プログラム実行時に指定された処理モデルの各出力データに対するメモリコストを算出する（Ｓ１２０４）。具体的には、図１７の入力インタフェース１００２にて入力した処理モデル２２１を参照し、参照元データの参照数と、参照元データの参照データバイト数と、出力データ倍率とを乗じてメモリコストを算出する。例えば、処理モデル２２１のｐｒｏｃｅｓｓｉｎｇＡがｄａｔａＡをセル単位で入力とし、ｄａｔａＡの出力データ倍率が１．２だとした場合、ｄａｔａＡのセル数を１００Ｋ、ｄａｔａＡの平均セルバイト数を１とすると、１００Ｋ×１×１．２＝１２０ＫがｐｒｏｃｅｓｓｅｄＡのメモリコストと算出することができる。メモリコストは、分析プロセス３１１の出力データによって占有される記憶領域のサイズとして把握することができる。なお、計算コスト、メモリコストを、「システム要件指標」とも呼ぶこととする。このシステム要件指標としては、上記のプロセッサ演算性能に関わる計算コスト、メモリの使用量に関わるメモリコストに限定されることなく、通信ネットワーク１０５に対するネットワーク負荷等の他の指標を採用するようにしてもよい。
【００５０】
次に、スケジュール計算部２１１は、Ｓ１２０３、Ｓ１２０４で算出した計算コスト及びメモリコストから、プロセッサ毎の最適なスケジュール定義を算出する（Ｓ１２０５）。このＳ１２０５におけるデータ処理は、図２１のフローチャートを参照して詳しく説明する。
【００５１】
最後に、スケジュール計算部２１１は、Ｓ１２０５で算出したスケジュールを満足するような共有データ情報テーブル３３２を作成する（Ｓ１２０６）。具体的には、スケジュール計算部２１１は、処理モデル２２１とスケジュール定義３３１とを対照することによって共有データ情報テーブル３３２を作成する。例えば、図１３の処理モデル２２１を参照すると、ｐｒｏｃｅｓｓｉｎｇＡはｄａｔａＡを入力としてデータ処理を実行し、ｐｒｏｃｅｓｓｅｄＡを出力することが理解される。一方、後出の図２３に例示されるスケジュール定義３３１を参照すると、ｐｒｏｃｅｓｓｉｎｇＡは入力をＤＢから取得し、出力はｏｎ−ｍｅｍｏｒｙに格納することが理解される。したがって、スケジュール計算部２１１は、共有データ情報テーブル３３２のｄａｔａＡの格納場所はＤＢ、必要数は１と算出することができる。共有データ情報テーブル３３２の詳細は、図２５に関して説明する。
【００５２】
次に、スケジュール計算部２１１による図１９のＳ１２０５でのデータ処理について説明する。図２１は、図１９のＳ１２０５でのデータ処理を実現するフローチャートを示したものである。
【００５３】
まず、スケジュール計算部２１１は、分析処理サーバ１０２のプロセッサ３０３が備えているすべてのコアの数を求める（Ｓ１４０１）。具体的には、スケジュール計算部２１１は、図１７の入力インタフェース１００２にて入力した演算性能定義２２２を参照し、当該演算性能定義中のＣＰＵコア数をすべて合算する。
【００５４】
次に、スケジュール計算プログラム２０６は、分析プログラム３０６の全プロセスに対して１〜コア数の番号と、コア毎のプロセス実行順の割り当てを全パターン分算出する（Ｓ１４０２）。具体的には、スケジュール計算部２１１は、処理モデル２２１に記載されている全プロセスに対して、Ｓ１４０１にて算出したコア数を上限とした番号を割り当てる。例えば、本実施形態では、処理モデル２２１にｐｒｏｃｅｓｓｉｎｇＡ、ｐｒｏｃｅｓｓｉｎｇＢ、ｐｒｏｃｅｓｓｉｎｇＣ、ｐｒｏｃｅｓｓｉｎｇＤ、及びｐｒｏｃｅｓｓｉｎｇＥの５つのプロセスが記載されており、演算性能定義２２２中のＣＰＵコア数の合算値が２で処理対象データ５１１あるから、上記の各プロセスに対して、それぞれ１又は２の番号を割り当てたパターンを作成する。この結果、例えば、ｐｒｏｃｅｓｓｉｎｇＡにコア１を、ｐｒｏｃｅｓｓｉｎｇＢにコア２を、ｐｒｏｃｅｓｓｉｎｇＣにコア２を、ｐｒｏｃｅｓｓｉｎｇＤにコア１を、そしてｐｒｏｃｅｓｓｉｎｇＥにコア１を割り当てたとすると、ｐｒｏｃｅｓｓｉｎｇＡ、ｐｒｏｃｅｓｓｉｎｇＤ、及びｐｒｏｃｅｓｓｉｎｇＥを１番目のコア（図１４の演算性能定義２２２の例ではｍａｃｈｉｎｅＡ）が実行し、ｐｒｏｃｅｓｓｉｎｇＢとｐｒｏｃｅｓｓｉｎｇＣとを２番目のコア（図１４の演算性能定義２２２の例ではｍａｃｈｉｎｅＢ）が実行するスケジュールとなる。前記のように、Ｓ１４０２ではこのスケジュールをプロセスとＣＰＵコアの全組合せ分作成する。組み合わせの作成方法は、幅優先探索、深さ優先探索等、どのような手法によって実現してもよい。
後続のＳ１４０３〜Ｓ１４０５の処理ステップは、スケジュール計算部２１１がＳ１４０２で算出したスケジュールパターンの数だけ反復して実行される。
【００５５】
次に、スケジュール計算部２１１は、ＣＰＵコア毎に計算される全プロセスの総計算コストのうち、最大のものを算出する（Ｓ１４０３）。例えば、ｐｒｏｃｅｓｓｉｎｇＡにコア１を、ｐｒｏｃｅｓｓｉｎｇＢにコア２を、ｐｒｏｃｅｓｓｉｎｇＣにコア２を、ｐｒｏｃｅｓｓｉｎｇＤにコア１を、そしてｐｒｏｃｅｓｓｉｎｇＥにコア１を割り当てた場合で説明すると、スケジュール計算部２１１は、ｐｒｏｃｅｓｓｉｎｇＡ、ｐｒｏｃｅｓｓｉｎｇＤ、及びｐｒｏｃｅｓｓｉｎｇＥをｍａｃｈｉｎｅＡで実行する際の計算コストを合算した値（ｍａｃｈｉｎｅＡ計算コストとする）を算出し、ｐｒｏｃｅｓｓｉｎｇＢ、ｐｒｏｃｅｓｓｉｎｇＣをｍａｃｈｉｎｅＢで実行する際の計算コストを合算した値（ｍａｃｈｉｎｅＢ計算コストとする）を算出し、ｍａｃｈｉｎｅＡ計算コストとｍａｃｈｉｎｅＢ計算コストのうち、数値が大きい方を求める。
【００５６】
次に、スケジュール計算部２１１は、必要となるメモリコストの総計を算出する（Ｓ１４０４）。ここで、メモリコストとは、インメモリデータストアサーバ１０３に格納が必要になるデータに要するコストとしているが、分散分析システム１に対する要求仕様によっては、ｏｎ−ｍｅｍｏｒｙに格納するデータに要するコスト、ＤＢに格納するデータに要するコストを指標として採用してもよいし、上記のメモリコストを併用してもよい。ｐｒｏｃｅｓｓｉｎｇＡにコア１を、ｐｒｏｃｅｓｓｉｎｇＢにコア２を、ｐｒｏｃｅｓｓｉｎｇＣにコア２を、ｐｒｏｃｅｓｓｉｎｇＤにコア１を、そしてｐｒｏｃｅｓｓｉｎｇＥにコア１を割り当てた場合で説明すると、インメモリデータストアサーバ１０３に格納する必要がある出力データは、ｐｒｏｃｅｓｓｅｄＢ及びｐｒｏｃｅｓｓｅｄＣの２つである。そのため、スケジュール計算部２１１は、図１３の処理モデル２２１を参照して、ｐｒｏｃｅｓｓｅｄＢのメモリコスト（１．５Ｍ）及びｐｒｏｃｅｓｓｅｄＣのメモリコスト（２Ｍ）を取得し、両者を合算した値を算出する。
【００５７】
次に、スケジュール計算部２１１は、Ｓ１４０３とＳ１４０４で算出した各コストを元に、評価関数を適用して本パターンの評価値を算出する（Ｓ１４０５）。この評価値の算出手順に関しては、図２２を参照して後述する。
【００５８】
最後に、スケジュール計算部２１１は、全パターンの中で、Ｓ１４０５にて算出した評
価値が最も高いパターンをスケジュール定義として出力する（Ｓ１４０６）。スケジュール定義は、分析プロセスを実行するプロセッサ３０３のコアの総数（本例では２）だけ出力する。出力されたスケジュール定義は、分析処理サーバ１０２のスケジューリングプログラム３０７の入力として読み込まれるため、分析処理サーバ１０２の不揮発性記憶部３０９に転送される。
【００５９】
図２２は、図２１に示すスケジュール定義算出処理フロー例のＳ１４０６にてスケジュールの評価を行う際に利用する評価関数の例である。評価関数は、コスト×該当コストに対する重み係数の総和として求められる。ここで、該当コストに対する重み係数は、合計すると１になるように設定する。評価関数に利用する評価指標は、任意に決定することができる。例えば、評価指標としてメモリの記憶容量と計算時間とを採用するとして、メモリコストが１２０Ｋ、メモリコスト係数が０．８で、計算時間が２０Ｍ、計算時間コスト係数が０．２であるとする。このとき、各コストの正規化処理として、メモリコストは１０Ｋで正規化し、計算コストは１０Ｍで正規化する場合、評価値は、（１２０Ｋ／１０Ｋ）×０．８＋（２０Ｍ／１０Ｍ）×０．２＝１０となる。この例ではメモリコスト係数を０．８、計算時間コスト係数を０．２としているため、メモリの効率化の観点で最適なスケジュールが算出されるようになる。これに対し、例えばメモリコスト係数を０．２、計算時間コスト係数を０．８とすれば、計算時間の効率化の観点でより好適なスケジュールが算出されるようになる。このように、重み係数をシステム要件に応じて変更することで、実行される分析プログラム３０６，分析処理サーバ１０２に適したスケジュールを作成することが可能となる。
スケジュール定義３３１の構成例
【００６０】
図２３は、分析処理サーバ１０２の不揮発性記憶部３０９に格納される、スケジュール定義３３１の構成例を示す図である。スケジュール定義３３１は、分析処理サーバ１０２の分析プログラム３０６を分散実行する際の処理順序を定義したファイルであり、スケジューリングサーバ１０１のスケジュール計算プログラム２０６によって算出されたものである。分析プログラム３０６を実行する際、スケジュール定義３３１は分析プログラム３０６を実行する分析処理サーバ１０２の台数分だけ必要となる。本実施例では、分散分析システム１において２台の分析処理サーバ１０２が動作することを想定しているため、スケジュール定義３３１も分析処理サーバ１０２毎に２セット必要となる。
【００６１】
スケジュール定義３３１は、実行する分析プロセス名（process）、分析プロセスを実
行する際に必要となる参照元データが格納されている場所（data from）、分析プロセス
を実行した後に出力されるデータが格納される場所（data to）の３つの項目を、対応す
る分析処理サーバ１０２が実行する順に記載している。分析プロセス名（process）は、
分析処理サーバ１０２が実行する分析プロセス名を処理モデル２２１に定義された名称で記載する。参照元データの格納場所（data from）、及び出力データの格納場所（data to）は、ＤＢ、ｏｎ−ｍｅｍｏｒｙ、及びＫＶＳの中から該当するものを記載する。
【００６２】
図２４は、図２３に例示するスケジュール定義３３１に従って実行される処理内容を模式的に示す図である。図２３のスケジュール定義３３１には分析処理サーバ１０２の２台分のスケジュールが記載されているため、図２４の図示内容も２台分となっている。
【００６３】
図２３の一方のスケジュール定義３３１ａについて説明すると、第１の手順では、ＤＢからデータを取得し、ｐｒｏｃｅｓｓｉｎｇＡを実施して、出力データをｏｎ−ｍｅｍｏｒｙ上に出力することから、ＤＢからのデータ読込（DB load）、ｐｒｏｃｅｓｓｉｎｇ
Ａという手順になる。なお、出力データをｏｎ−ｍｅｍｏｒｙに出力することは、通常の処理（ここではprocessing A）が行われた時点で完了しているため、手順としては記述していない。次に第２の手順では、ｏｎ−ｍｅｍｏｒｙ及びＫＶＳからデータを取得し、ｐ
ｒｏｃｅｓｓｉｎｇＤを実行して、出力データをｏｎ−ｍｅｍｏｒｙ上に出力することから、ＫＶＳからのデータ読込（KVS load）、ｐｒｏｃｅｓｓｉｎｇＤという手順になる。ここで、入力データをｏｎ−ｍｅｍｏｒｙから読み込むことは、前述のｏｎ−ｍｅｍｏｒｙへのデータ出力と同様、手順としては記述していない。第３の手順では、ｏｎ−ｍｅｍｏｒｙ及びＫＶＳからデータを取得し、ｐｒｏｃｅｓｓｉｎｇＥを実行して、出力データをＤＢ上に出力することから、ＫＶＳからのデータ読込（KVS load）、ｐｒｏｃｅｓｓｉｎｇＥの実行、そしてＤＢへのデータ出力（DB store）という手順になる。図２４のスケジュール定義３３１ｂに関しては、スケジュール定義３３１ａと同様の形態で図示されており、所定のデータを読み込んでｐｒｏｃｅｓｓｉｎｇＢ及びｐｒｏｃｅｓｓｉｎｇＣが実行されることが示されている。
【００６４】
なお、上記のスケジュール定義３３１においては、スケジュール定義３３１ａの第２の手順と第３の手順については、ｐｒｏｃｅｓｓｉｎｇＤとｐｒｏｃｅｓｓｉｎｇＥを実行する際に必要となるデータは、スケジュール定義３３１ｂの手順に含まれているｐｒｏｃｅｓｓｉｎｇＢとｐｒｏｃｅｓｓｉｎｇＣが終わってからでないと作成されないため、これらの処理が終わるまでは、スケジュール定義３３１ｂでは処理待ちが発生することとなる。
共有データ情報テーブル３３２の構成例
【００６５】
図２５は、分析処理サーバ１０２の不揮発性記憶部３０９に格納されている、共有データ情報テーブル３３２の構成例を示す図である。共有データ情報テーブル３３２は、分析処理サーバ１０２の分析プログラム３０６を分散実行する際の参照元データ、出力データの管理を行うためのテーブルである。
【００６６】
共有データ情報テーブル３３２は、データ名称、格納場所、必要数、及び使用数の項目を、分析プログラム３０６を分散実行する際の参照元データ、出力データ毎に管理している。データ名称は、図１３に記載の処理モデル２２１で表される分析プログラム３０６を構成する複数の分析プロセス３２１を実行する際に必須となる入力データ(essential data)、所要の入力データ(demand data)、及び出力データ(output data)に記載されているデータ、言い換えれば分析プログラム３０６が実行されるときに扱うデータの名称を記載する。格納場所は、スケジュール定義３３１の記載内容から、それぞれのデータが、どの場所に格納されているか、あるいはどの場所に格納するかを記載する。必要数は、スケジュール定義３３１に記載の各手順から、それぞれのデータが参照される回数を示したものである。使用数は、スケジュール定義３３１に記載されたスケジュールに従って分析プログラム３０６を分散実行する際に、各手順が参照し終わったデータの個数を示したものである。これらの項目に関しては、図２６の処理シーケンスにて詳しく説明する。
【００６７】
スケジュール定義実行処理
図２６は、分析処理サーバ１０２のスケジューリングプログラム３０７がスケジュール定義３３１に規定されている手順に従って分析プロセスを実行する際のフローチャートを例示したものである。この処理フローは、分析処理サーバ１０２毎に実施される。
【００６８】
まず、スケジューリングプログラム３０７は、スケジューリングプログラム３０７を実行した際に指定されたスケジュール定義を読み出す（Ｓ１９０１）。このとき読み出すスケジュール定義が、例えば図２３に示したものだった場合、１台目の分析処理サーバ１０２にて図２３の符号３３１ａで特定されるスケジュールが実行され、２台目の分析処理サーバ１０２にて図２３の符号３３１ｂで特定されるスケジュールが実行される。
Ｓ１９０２からＳ１９０７までの処理ステップは、Ｓ１９０１で読み出したスケジュール定義３３１内での手順の数だけ反復して実行される。
【００６９】
次に、スケジューリングプログラム３０７は、スケジュール定義３３１に記載の場所（data from）から入力データを取得する（Ｓ１９０２）。例えば定義記載の場所が“ＤＢ
”であった場合は、スケジューリングプログラム３０７は分析プログラム３０６のデータベースＩ／Ｆ部３１３に含まれているＤＢ用のＡＰＩを実行するように命令する。定義記載の場所が“ＫＶＳ”であった場合には、スケジューリングプログラム３０７は分析プログラム３０６のデータストアサーバＩ／Ｆ部３１２に含まれているＫＶＳ用のＡＰＩを実行するように命令する。
【００７０】
次に、スケジューリングプログラム３０７は、入力データに対し、定義記載のプロセスを実行し、定義記載の場所（data to）に実行結果を出力データとして出力する（Ｓ１９
０３）。具体的には、スケジューリングプログラム３０７は分析プログラム３０６の該当する分析プロセス３１１を実行し、その後Ｓ１９０２の手順と同様に、データストアサーバＩ／Ｆ部３１２又はデータベースＩ／Ｆ部３１３に含まれているＡＰＩを実行してデータを出力する。
【００７１】
次に、スケジューリングプログラム３０７は、共有データ情報テーブル３３２を参照し、入力として使用したデータの使用数をインクリメントする（Ｓ１９０４）。例えば、ｄａｔａＡを入力とし、ｐｒｏｃｅｓｓｉｎｇＡを実行し、データｐｒｏｃｅｓｓｅｄＡを出力した場合には、共有データ情報テーブル３３２のｄａｔａＡのレコードの使用数を０から１に変更する。
【００７２】
次に、スケジューリングプログラム３０７は、Ｓ１９０４にてインクリメントした使用数の数値が必要数で規定されている数値と一致しているか判定し、一致していないと判定した場合（Ｓ１９０５，Ｎｏ）、Ｓ１９０２に処理を戻し、一致していると判定した場合（Ｓ１９０５，Ｙｅｓ）、Ｓ１９０６の処理に進む。前述の例では、ｄａｔａＡの使用数を０から１にインクリメントした結果、必要数に記録されている数値である１と一致していることから、処理はＳ１９０６に進む。
【００７３】
Ｓ１９０６では、スケジューリングプログラム３０７は、Ｓ１９０４にて参照した共有データ情報テーブル３３２に規定されている格納場所について、削除定義テーブル２２３にて削除フラグがＯＮになっているか判定し、ＯＮではなくＯＦＦになっていると判定した場合（Ｓ１９０６，Ｎｏ）、処理をＳ１９０２に戻し、ＯＮになっていると判定した場合（Ｓ１９０６，Ｙｅｓ）、処理をＳ１９０７に進める。前述の例では、ｄａｔａＡは格納場所が“ＤＢ”のため、削除定義テーブル２２３のＤＢのレコードを参照する。ＤＢに設定されている削除フラグがＯＦＦに設定されている場合、Ｓ１９０２に処理を進める。一方、ＤＢの削除フラグがＯＮに設定されている場合、処理はＳ１９０７に進む。
【００７４】
削除フラグがＯＮに設定されていると判定した場合（Ｓ１９０６，Ｙｅｓ）、スケジューリングプログラム３０７は、Ｓ１９０５、Ｓ１９０６に該当した入力データを消去する（Ｓ１９０７）。前述の例では、ＤＢに格納されているｄａｔａＡを削除する。
【００７５】
以上の手順によって、すべての分析処理サーバ１０２のスケジュール定義３３１に記載されている内容がすべて終了した場合、分析プログラム３０６は終了したと判定される。このようにスケジューリングプログラム３０７を介して分析プログラム３０６を実行することによって、スケジュール計算プログラム２０６が算出したスケジュール定義３３１を実行する専用のプログラムを作成する必要がなく、分析プログラム３０６を分散実行することが可能となる。
【００７６】
スケジューリングプログラム３０７のＧＵＩ画面例
図２７は、スケジューリングプログラム３０７の動作時のＧＵＩ画面を例示する図であ
る。ＧＵＩ画面２００１は、分散分析処理を実行する際に適用するスケジュールを模式的に示すスケジュール図２００２と、スケジューリングプログラム３０７を実行する際に必要となる情報を入力可能とする入力インタフェース２００３と、スケジューリングプログラム３０７を実行させるための実行ボタン２００４とから構成される。
【００７７】
分散分析処理を実行する際に適用するスケジュール図２００２は、スケジュール計算プログラム２０６が算出した複数のスケジュール定義３３１を図２４に例示した形式で図示したものである。
【００７８】
入力インタフェース２００３には、分析プログラム３０６を実行するコンピュータのＩＰアドレス、分析プログラム３０６が分析処理を行う際に参照するＤＢの種別とＩＰアドレス、及び分析プログラム３０６が分析処理を行う際に参照するＫＶＳの種別とＩＰアドレスをそれぞれ入力できるようになっている。分析プログラム３０６を実行するコンピュータのＩＰアドレスは、分散分析処理を実行する際に適用するスケジュール図２００２に記載のスケジュールの数だけ設定する必要がある。この数は、分散実行を必要とするほど分析プロセスが多くない、換言すれば、処理モデル２２１に記載がほとんどないといった例外を除いて、スケジュール計算プログラム２０６がスケジュールを算出する際に参照する演算性能定義２２２の数と等しくなる。分析プログラム３０６が分析処理を行う際に参照するＤＢの種別とＩＰアドレス及び分析プログラム３０６が分析処理を行う際に参照するＫＶＳの種別とＩＰアドレスは、スケジュール定義３３１に記載されているＤＢやＫＶＳへアクセスする箇所で、具体的にどのＤＢ／ＫＶＳプログラムにアクセスすればよいかを記載する項目である。図２７の例では、ＤＢ及びＫＶＳには様々な種類の製品が存在するため、プルダウン形式で製品を選択できるようにしている。ここで、選択できる製品については、分析処理サーバ１０２の分析プログラム３０６のデータストアサーバＩ／Ｆ部３１２及びデータベースＩ／Ｆ部３１３に対応するＡＰＩを含めておくようにする。
【００７９】
入力インタフェース２００３の、分析プログラム３０６を実行するコンピュータのＩＰアドレス、分析プログラム３０６が分析処理を行う際に参照するＤＢの種別とＩＰアドレス、分析プログラム３０６が分析処理を行う際に参照するＫＶＳの種別とＩＰアドレスをすべて入力し、実行ボタン２００４を押下することで、スケジューリングプログラム３０７を動作することができる。
【００８０】
以上説明した本実施形態のデータ分散処理システム１によれば、複数のデータ処理プロセスを含むプログラムについて、複数のプロセッサによって効率的に分散処理することが可能となる。
【００８１】
また、データ処理モデルは、前記各データ処理プロセスによって実際に処理されるデータの有する属性に基づいて作成されるので、当該データ処理プロセスを効率的に分散処理するのに公的なデータ処理手順が生成される。
【００８２】
さらに、前記データ処理プロセスの実行に際して要求されるシステム要件、例えばプロセッサでの演算処理の効率化、メモリの効率的な利用といった指標に基づいてデータ処理モデルが作成され、またシステム要件指標間の重み付けを代えることもできるので、所望のシステム要件に沿ったデータ分散処理を実現することができる。
【００８３】
また、データ処理プロセスで使用し終わったデータは格納場所から削除されるように設定することができるので、メモリを効率的に利用することができる。さらに、データ処理モデルは各プロセッサの演算性能を勘案して作成されるので、各プロセッサをより効率的に稼働させることが可能である。また、作成されたデータ処理スケジュールを出力表示させた場合には、各データ処理プロセスによるデータ処理手順を視覚的に把握することが可
能となる。
【００８４】
なお、本発明の技術的範囲は上記の実施形態に限定されることはなく、他の変形例、応用例等も、特許請求の範囲に記載した事項の範囲内に含まれるものである。
【符号の説明】
【００８５】
１０１  スケジューリングサーバ
１０２  分析処理サーバ
１０３  インメモリデータストアサーバ
１０４  データベースサーバ
２０３，３０３，４０２，５０２  プロセッサ
２０６：スケジュール計算プログラム
２０７，３０８，４０６，５０６  揮発性記憶部
２０８３０９，４０７，５０７  不揮発性記憶部
２１１  スケジュール計算部
２２１  処理モデル
２２２  演算性能定義
２２３  削除定義テーブル
３０６  分析プログラム
３０７  スケジューリングプログラム
３１１  分析プロセス
３２１  分析プロセス呼出部
３３１  スケジュール定義
４０５  データストアプログラム
５０５  データベースプログラム
５１１  処理対象データ
【図１】
2018136614.tif 000003
【図２】
2018136614.tif 000004
【図３】
2018136614.tif 000005
【図４】
2018136614.tif 000006
【図５】
2018136614.tif 000007
【図６】
2018136614.tif 000008
【図７】
2018136614.tif 000009
【図８】
2018136614.tif 000010
【図９】
2018136614.tif 000011
【図１０】
2018136614.tif 000012
【図１１】
2018136614.tif 000013
【図１２】
2018136614.tif 000014
【図１３】
2018136614.tif 000015
【図１４】
2018136614.tif 000016
【図１５】
2018136614.tif 000017
【図１６】
2018136614.tif 000018
【図１７】
2018136614.tif 000019
【図１８】
2018136614.tif 000020
【図１９】
2018136614.tif 000021
【図２０】
2018136614.tif 000022
【図２１】
2018136614.tif 000023
【図２２】
2018136614.tif 000024
【図２３】
2018136614.tif 000025
【図２４】
2018136614.tif 000026
【図２５】
2018136614.tif 000027
【図２６】
2018136614.tif 000028
【図２７】
2018136614.tif 000029