(57)【特許請求の範囲】
【請求項１】
データ処理の実行時間を推定するための装置であって、
データ処理の実行計画文から、前記データ処理の特徴量を抽出する、特徴量抽出部と、
抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、モデル学習部と、
を備え、
前記特徴量抽出部が、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報に出現する単語の出現数を計測し、計測した前記出現数を前記特徴量とする、
ことを特徴とする実行時間推定装置。
【請求項２】
実行予定のデータ処理の実行計画文から、前記実行予定のデータ処理の特徴量を抽出し、学習によって得られた前記モデルに、抽出した前記特徴量を代入して実行時間を推定する、実行時間推定部を更に備えている、
請求項１に記載の実行時間推定装置。
【請求項３】
前記特徴量抽出部が、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における行数を計測し、計測した前記行数を前記特徴量とする、
請求項１または２に記載の実行時間推定装置。
【請求項４】
前記特徴量抽出部が、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における実行構文木の深さを計測し、計測した前記実行構文木の深さを前記特徴量とする、
請求項１〜３のいずれかに記載の実行時間推定装置。
【請求項５】
前記特徴量抽出部が、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報に出現する表結合命令の出現数を計測し、計測した前記表結合命令の出現数を前記特徴量とする、
請求項１〜４のいずれかに記載の実行時間推定装置。
【請求項６】
コンピュータがデータ処理の実行時間を推定する方法であって、
（ａ）データ処理の実行計画文から、前記データ処理の特徴量を抽出する、ステップと、
（ｂ）抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、ステップと、
を有し、
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報に出現する単語の出現数を計測し、計測した前記出現数を前記特徴量とする、
ことを特徴とする実行時間推定方法。
【請求項７】
（ｃ）実行予定のデータ処理の実行計画文から、前記実行予定のデータ処理の特徴量を抽出し、学習によって得られた前記モデルに、抽出した前記特徴量を代入して実行時間を推定する、ステップを更に有している、
請求項６に記載の実行時間推定方法。
【請求項８】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における行数を計測し、計測した前記行数を前記特徴量とする、
請求項６または７に記載の実行時間推定方法。
【請求項９】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における実行構文木の深さを計測し、計測した前記実行構文木の深さを前記特徴量とする、
請求項６〜８のいずれかに記載の実行時間推定方法。
【請求項１０】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報に出現する表結合命令の出現数を計測し、計測した前記表結合命令の出現数を前記特徴量とする、
請求項６〜９のいずれかに記載の実行時間推定方法。
【請求項１１】
コンピュータによって、データ処理の実行時間を推定するためのプログラムであって、前記コンピュータに、
（ａ）データ処理の実行計画文から、前記データ処理の特徴量を抽出する、ステップと、（ｂ）抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、ステップと、
を実行させ、
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における行数を計測し、計測した前記行数を前記特徴量とする、
プログラム。
【請求項１２】
前記コンピュータに、
（ｃ）実行予定のデータ処理の実行計画文から、前記実行予定のデータ処理の特徴量を抽出し、学習によって得られた前記モデルに、抽出した前記特徴量を代入して実行時間を推定する、ステップを更に実行させる、
請求項１１に記載のプログラム。
【請求項１３】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における行数を計測し、計測した前記行数を前記特徴量とする、
請求項１１または１２に記載のプログラム。
【請求項１４】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報における実行構文木の深さを計測し、計測した前記実行構文木の深さを前記特徴量とする、
請求項１１〜１３のいずれかに記載のプログラム。
【請求項１５】
前記（ａ）のステップにおいて、前記実行計画文から前記データ処理の構造情報を抽出し、抽出した構造情報に出現する表結合命令の出現数を計測し、計測した前記表結合命令の出現数を前記特徴量とする、
請求項１１〜１４のいずれかに記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ分析においてデータ処理の実行時間を実行前に推定する、実行時間推定装置、及び実行時間推定方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【０００２】
一般に、データ分析は、複数のデータ処理、例えば、ＳＱＬクエリの実行、データ変換、機械学習アルゴリズムの実行等で構成される複雑な処理である。また、近年、分析対象となるデータ量は著しく増加しているため、データ分析は計算機クラスタによって分散して、且つ並列に実行される。また、データ分析の具体的な用途としては、例えば、ビジネス用途においては、一定期間毎の予測モデルの更新、日毎の需要予測等が挙げられる。
【０００３】
また、このようなデータ分析では、特にビジネス用途に適用する場合は、分析結果の提供に期限が設定されるため、データ処理の実行時間を実行前に推定することが求められている。例えば、特許文献１は、データベースシステムの内部に存在するクエリ実行計画からクエリの実行時間を推定する方法を開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１４２８９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、実行時間を正確に推定するためには、機械学習によって推定のためのモデルを構築又は更新し、構築又は更新したモデルを用いて実行時間を推定することが有効である。そして、機械学習によってモデルを構築するためには、データ処理の構造、例えば、ＳＱＬクエリの構造、機械学習アルゴリズムの実行時間の決定要因の構造を示す特徴情報（特徴量）を求める必要がある。
【０００６】
しかしながら、特徴情報を求めるためには、データ処理を実行する処理装置から特徴量が出力されるようにするか、データ処理の詳細を知っている技術者によって特徴情報を取得するようにするしかない。このため、従来からの手法による実行時間の推定にはコストが高いという問題ある。また、推定のためのモデルの構築又は更新は、人手によって行なわれるため、モデルによって推定できる範囲が、作業を行なう人が理解できるデータ処理の範囲に限定されてしまうという問題もある。
【０００７】
また、上記特許文献１では、モデルの構築及び更新については開示されておらず、更に、特徴量の求め方についても開示されていないため、上記特許文献１に開示された技術を用いても、上記問題を解決することは困難である。
【０００８】
本発明の目的の一例は、上記問題を解消し、データ処理の実行時間を推定できる範囲の確保と、データ処理の特徴情報の取得にかかるコストの低減化と、を達成し得る、実行時間推定装置、実行時間推定方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するため、本発明の一側面における実行時間推定装置は、データ処理の実行時間を推定するための装置であって、
データ処理の実行計画文から、前記データ処理の特徴量を抽出する、特徴量抽出部と、
抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、モデル学習部と、
を備えていることを特徴とする。
【００１０】
また、上記目的を達成するため、本発明の一側面における実行時間推定方法は、データ処理の実行時間を推定するための方法であって、
（ａ）データ処理の実行計画文から、前記データ処理の特徴量を抽出する、ステップと、
（ｂ）抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、ステップと、
を有することを特徴とする。
【００１１】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、コンピュータによって、データ処理の実行時間を推定するためのプログラムであって、
前記コンピュータに、
（ａ）データ処理の実行計画文から、前記データ処理の特徴量を抽出する、ステップと、
（ｂ）抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するためのモデルを学習する、ステップと、
を実行させることを特徴とする。
【発明の効果】
【００１２】
以上のように本発明によれば、データ処理の実行時間を推定できる範囲の確保と、データ処理の特徴情報の取得にかかるコストの低減化と、を達成することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、本発明の実施の形態における実行時間推定装置の概略構成を示すブロック図である。
【図２】図２は、本発明の実施の形態における実行時間推定装置の構成を具体的に示すブロック図である。
【図３】図３は、本発明の実施の形態における実行時間推定装置の動作を示すフロー図である。
【図４】図４は、図３に示したステップＡ１における特徴量の抽出処理を詳細に示すフロー図である。
【図５】図５は、データ処理として与えられるＳＱＬ文の一例を示す図である。
【図６】図６は、図５に示すデータ処理の実行計画文を示す図である。
【図７】図７は、図６に示す実行計画文から得られた構造情報を示す図である。
【図８】図８は、図７に示す構造情報から生成された特徴量の一例を示す図である。
【図９】図９は、図８に示された特徴量に別の情報が追加された例を示す図である。
【図１０】図１０は、本発明の実施の形態における実行時間推定装置を実現するコンピュータの一例を示すブロック図である。
【発明を実施するための形態】
【００１４】
（実施の形態）
以下、本発明の実施の形態における、実行時間推定装置、実行時間推定方法、及びプログラムについて、図１〜図１０を参照しながら説明する。
【００１５】
［装置構成］
最初に、図１を用いて、本実施の形態における実行時間推定装置の構成について説明する。図１は、本発明の実施の形態における実行時間推定装置の概略構成を示すブロック図である。
【００１６】
図１に示す本実施の形態における実行時間推定装置１０は、データ処理の実行時間を推定するための装置である。図１に示すように、実行時間推定装置１０は、特徴量抽出部１１と、モデル学習部１２とを備えている。
【００１７】
このうち、特徴量抽出部１１は、データ処理の実行計画文から、データ処理の特徴量を抽出する。モデル学習部１２は、抽出された特徴量と実行時間の実測値とに基づいて、データ処理の実行時間を推定するための推定モデルを学習する。
【００１８】
このように、本実施の形態では、実行計画文からデータ処理の特徴量が自動的に抽出されるので、データ処理の特徴量（特徴情報）の取得にかかるコストが低減されることになる。また、自動的に抽出された特徴量を用いて機械学習が行なわれるので、データ処理の実行時間を推定できる範囲が確保され、当該範囲が限定されることはない。
【００１９】
続いて、図２を用いて、本実施の形態における実行時間推定装置１０の構成をより具体的に説明する。図２は、本発明の実施の形態における実行時間推定装置の構成を具体的に示すブロック図である。
【００２０】
図２に示すように、本実施の形態における実行時間推定装置１０は、特徴量抽出部１１及びモデル学習部１２に加えて、実行時間推定部１３を備えている。また、実行時間推定装置１０は、データ処理を実行するデータ処理システム２０に接続されている。
【００２１】
データ処理システム２０は、実行計画生成部２１と、処理実行部２２とを備えている。実行計画生成部２１は、データ処理の処理命令文が入力されると、入力された処理命令文に基づいてデータ処理の実行計画を生成する。処理実行部２２は、生成された実行計画に沿ってデータ処理を実行する。
【００２２】
特徴量抽出部１１は、本実施の形態では、まず、モデル学習のために、データ処理システム２０から、処理実行部２２によって実行されたデータ処理の情報を取得する。例えば、データ処理がＳＱＬによるデータベースの操作の実行である場合は、データ処理の情報として、ＳＱＬ文を取得する。また、データ処理の情報には、データ量（レコード数）、実行時間の実測値といったデータも含まれている。
【００２３】
また、特徴量抽出部１１は、取得したデータ処理の情報から処理命令文を抽出し、この抽出した処理命令文を、実行計画生成部２１に入力して、実行計画作成部２１に実行計画文を作成させ、作成した実行計画文を取得する。そして、特徴量抽出部１１は、取得した実行計画文を解析してデータ処理の構造情報を抽出し、抽出した構造情報から、データ処理の特徴量を抽出する。
【００２４】
具体的には、特徴量抽出部１１は、例えば、構造情報に出現する単語の出現数を計測し、計測した出現数を特徴量とする。また、特徴量抽出部１１は、構造情報における行数を計測し、計測した行数を特徴量としても良い。更に、特徴量抽出部１１は、構造情報における実行構文木の深さを計測し、計測した実行構文木の深さを特徴量としても良い。加えて、特徴量抽出部１１は、構造情報に出現する表結合命令の出現数を計測し、計測した表結合命令の出現数を特徴量としても良い。
【００２５】
また、モデル学習部１２は、本実施の形態では、特徴量抽出部１１から、それが取得しているデータ処理の実行時間の実測値を取得する。そして、モデル学習部１２は、特徴量抽出部１１が抽出した特徴量と、実行時間の実測値とを用いて機械学習アルゴリズムを実行して、推定モデルとして、データ処理wの実行時間（推定値）を与える推定関数を学習する。なお、推定モデルとしては、線形モデル、アンサンブルモデル、ディープランニングモデル等が挙げられる。また、機械学習アルゴリズムとしては、既存のアルゴリズムを用いることができる。
【００２６】
実行時間推定部１３は、実行予定のデータ処理の実行計画文を取得し、取得した実行文から、実行予定のデータ処理の特徴量を抽出する。そして、実行時間推定部１３は、推定モデルに、抽出した特徴量を代入して実行時間を推定する。また、実行時間推定部１３は、推定した実行時間を、例えば、ユーザの端末装置へと出力する。
【００２７】
［装置動作］
次に、本発明の実施の形態における実行時間推定装置１０の動作について図３〜図９を用いて説明する。また、本実施の形態では、実行時間推定装置１０を動作させることによって、実行時間推定方法が実施される。よって、本実施の形態における実行時間推定方法の説明は、以下の実行時間推定装置１０の動作説明に代える。
【００２８】
まず、図３を用いて、実行時間推定装置１０の全体の動作の概略について説明する。図３は、本発明の実施の形態における実行時間推定装置の動作を示すフロー図である。
【００２９】
図３に示すように、最初に、特徴量抽出部１１は、データ処理の実行計画文から、データ処理の特徴量を抽出する（ステップＡ１）。ステップＡ１の詳細については、図４〜図９を用いて後述する。
【００３０】
次に、モデル学習部１２は、抽出された特徴量と、抽出元の実行計画文によるデータ処理での実行時間の実測値とを取得し、これらに基づいて、データ処理の実行時間を推定するための推定モデルを学習する（ステップＡ２）。
【００３１】
次に、実行時間推定部１３は、実行予定のデータ処理の実行計画文を取得する（ステップＡ３）。
【００３２】
続いて、実行時間推定部１３は、取得した実行文から、実行予定のデータ処理の特徴量を抽出し、ステップＡ２で得られた推定モデルに、抽出した特徴量を代入して実行時間を推定する（ステップＡ４）。また、ステップＡ４の実行後、実行時間推定部１３は、推定した実行時間を、ユーザの端末装置へと出力する。
【００３３】
続いて、図４〜図９を用いて、図３に示した特徴量抽出部１１における処理（ステップＡ１）について詳細に説明する。図４は、図３に示したステップＡ１における特徴量の抽出処理を詳細に示すフロー図である。図５は、データ処理として与えられるＳＱＬ文の一例を示す図である。図６は、図５に示すデータ処理の実行計画文を示す図である。図７は、図６に示す実行計画文から得られた構造情報を示す図である。図８は、図７に示す構造情報から生成された特徴量の一例を示す図である。図９は、図８に示された特徴量に別の情報が追加された例を示す図である。
【００３４】
図４に示すように、最初に、特徴量抽出部１１は、データ処理システム２０から、処理実行部２２によって実行されたデータ処理の情報を取得し、取得したデータ処理の情報から処理命令文を抽出する（ステップＡ１１）
【００３５】
具体的には、データ処理システム２０が、データ処理として、ＳＱＬによるデータベースの操作を実行していたとすると、特徴量抽出部１１は、データ処理の情報として、図５に示すようなＳＱＬ文を取得し、このＳＱＬ文を処理命令文として抽出する。また、データ処理の情報には、データ量（レコード数）、実行時間の実測値といったデータも含まれている。
【００３６】
次に、特徴量抽出部１１は、ステップＡ１１で抽出した処理命令文を、データ処理システム２０の実行計画生成部２１に入力して、実行計画作成部２１に実行計画文を作成させ、作成した実行計画文を取得する（ステップＡ１２）。取得された実行計画文の一例は、図６に示す通りである。
【００３７】
次に、特徴量抽出部１１は、ステップＡ１２で取得された実行計画文を解析して、データ処理の構造情報を抽出する（ステップＡ１３）。抽出された構造情報の一例は、図７に示す通りである。
【００３８】
次に、特徴量抽出部１１は、ステップＡ１３で抽出した構造情報から特徴量を生成し、生成した特徴量を、モデル学習部１２に出力する（ステップＡ１４）。
【００３９】
具体的には、図７に示すように、特徴量抽出部１１は、例えば、実行計画文の解析から得られた構造情報に出現する単語の出現数及び行数を計測する。また、特徴量抽出部１１は、構造情報における行頭の空白数から実行構文木の深さを計測する。更に、特徴量抽出部１１は、構造情報に出現する単語「Join」の数を、表結合命令の出現数として計測する。
【００４０】
そして、図８に示すように、特徴量抽出部１１は、計測結果を、構造情報の特徴量とする。即ち、特徴量抽出部１１は、クエリ毎に計測した、単語の出現数（単語数）、行数、実行構文木の深さ、表結合命令の出現数（表結合回数）を、そのクエリにおける特徴量とする。
【００４１】
また、図９に示すように、特徴量抽出部１１は、各クエリの特徴量をまとめ、更に、まとめられた特徴量に、データ処理の情報に含まれているデータ量及び実行時間といったデータも付加する。そして、特徴量抽出部１１は、最終的に得られたデータを、モデル学習部１２に出力する。
【００４２】
以上のように、本実施の形態では、実行計画文から得られる構造情報から、特徴量が生成されるので、特徴量の取得にかかるコストは抑制される。また、本実施の形態は実行計画文が取得できるデータ処理システム一般に適用可能であるので、技術者の知識に制限されることなく、広範囲のデータ処理について実行時間を推定できる。
【００４３】
［プログラム］
本実施の形態におけるプログラムは、コンピュータに、図３に示すステップＡ１〜Ａ４を実行させるプログラムであれば良い。このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における実行時間推定装置１０と実行時間推定方法とを実現することができる。この場合、コンピュータのＣＰＵ（Central Processing Unit）は、特徴量抽出部１１、モデル学習部１２、及び実行時間推定部１３をとして機能し、処理を行なう。
【００４４】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されても良い。この場合は、例えば、各コンピュータが、それぞれ、特徴量抽出部１１、モデル学習部１２、及び実行時間推定部１３のいずれかとして機能しても良い。
【００４５】
［物理構成］
ここで、本実施の形態におけるプログラムを実行することによって、実行時間推定装置１０を実現するコンピュータについて図１０を用いて説明する。図１０は、本発明の実施の形態における実行時間推定装置を実現するコンピュータの一例を示すブロック図である。
【００４６】
図１０に示すように、コンピュータ１１０は、ＣＰＵ１１１と、メインメモリ１１２と、記憶装置１１３と、入力インターフェイス１１４と、表示コントローラ１１５と、データリーダ／ライタ１１６と、通信インターフェイス１１７とを備える。これらの各部は、バス１２１を介して、互いにデータ通信可能に接続される。
【００４７】
ＣＰＵ１１１は、記憶装置１１３に格納された、本実施の形態におけるプログラム（コード）をメインメモリ１１２に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ１１２は、典型的には、ＤＲＡＭ（Dynamic Random Access Memory）等の揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体１２０に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス１１７を介して接続されたインターネット上で流通するものであっても良い。
【００４８】
また、記憶装置１１３の具体例としては、ハードディスクドライブの他、フラッシュメモリ等の半導体記憶装置が挙げられる。入力インターフェイス１１４は、ＣＰＵ１１１と、キーボード及びマウスといった入力機器１１８との間のデータ伝送を仲介する。表示コントローラ１１５は、ディスプレイ装置１１９と接続され、ディスプレイ装置１１９での表示を制御する。
【００４９】
データリーダ／ライタ１１６は、ＣＰＵ１１１と記録媒体１２０との間のデータ伝送を仲介し、記録媒体１２０からのプログラムの読み出し、及びコンピュータ１１０における処理結果の記録媒体１２０への書き込みを実行する。通信インターフェイス１１７は、ＣＰＵ１１１と、他のコンピュータとの間のデータ伝送を仲介する。
【００５０】
また、記録媒体１２０の具体例としては、ＣＦ（Compact Flash（登録商標））及びＳＤ（Secure Digital）等の汎用的な半導体記憶デバイス、フレキシブルディスク（Flexible Disk）等の磁気記憶媒体、又はＣＤ−ＲＯＭ（Compact Disk Read Only Memory）などの光学記憶媒体が挙げられる。
【００５１】
なお、本実施の形態におけるカ実行時間推定装置１０は、プログラムがインストールされたコンピュータではなく、各部に対応したハードウェアを用いることによっても実現可能である。更に、カ実行時間推定装置１０は、一部がプログラムで実現され、残りの部分がハードウェアで実現されていてもよい。
【産業上の利用可能性】
【００５２】
以上のように本発明によれば、データ処理の実行時間を推定できる範囲の確保と、データ処理の特徴情報の取得にかかるコストの低減化と、を達成することができる。本発明は、データ処理の実行時間の推定が必要な分野において有用である。
【符号の説明】
【００５３】
１０  実行時間推定装置
１１  特徴量抽出部
１２  モデル学習部
１３  実行時間推定部
２０  データ処理システム
２１  実行計画生成部
２２  処理実行部
１１０  コンピュータ
１１１  ＣＰＵ
１１２  メインメモリ
１１３  記憶装置
１１４  入力インターフェイス
１１５  表示コントローラ
１１６  データリーダ／ライタ
１１７  通信インターフェイス
１１８  入力機器
１１９  ディスプレイ装置
１２０  記録媒体
１２１  バス
【図１】
0006677068.tif 000002
【図２】
0006677068.tif 000003
【図３】
0006677068.tif 000004
【図４】
0006677068.tif 000005
【図５】
0006677068.tif 000006
【図６】
0006677068.tif 000007
【図７】
0006677068.tif 000008
【図８】
0006677068.tif 000009
【図９】
0006677068.tif 000010
【図１０】
0006677068.tif 000011