IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電信電話株式会社の特許一覧 ▶ 国立大学法人大阪大学の特許一覧

特開2022-29863最適化装置、最適化方法及び最適化プログラム
<>
  • 特開-最適化装置、最適化方法及び最適化プログラム 図1
  • 特開-最適化装置、最適化方法及び最適化プログラム 図2
  • 特開-最適化装置、最適化方法及び最適化プログラム 図3
  • 特開-最適化装置、最適化方法及び最適化プログラム 図4
  • 特開-最適化装置、最適化方法及び最適化プログラム 図5
  • 特開-最適化装置、最適化方法及び最適化プログラム 図6
  • 特開-最適化装置、最適化方法及び最適化プログラム 図7
  • 特開-最適化装置、最適化方法及び最適化プログラム 図8
  • 特開-最適化装置、最適化方法及び最適化プログラム 図9
  • 特開-最適化装置、最適化方法及び最適化プログラム 図10
  • 特開-最適化装置、最適化方法及び最適化プログラム 図11
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2022029863
(43)【公開日】2022-02-18
(54)【発明の名称】最適化装置、最適化方法及び最適化プログラム
(51)【国際特許分類】
   G06F 16/26 20190101AFI20220210BHJP
【FI】
G06F16/26
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2020133415
(22)【出願日】2020-08-05
(71)【出願人】
【識別番号】000004226
【氏名又は名称】日本電信電話株式会社
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】110002147
【氏名又は名称】特許業務法人酒井国際特許事務所
(72)【発明者】
【氏名】内山 寛之
(72)【発明者】
【氏名】中園 翔
(72)【発明者】
【氏名】鬼塚 真
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175FB04
(57)【要約】
【課題】最適な実体化ビューを導出する際に要する処理コストを従来と比して削減する。
【解決手段】データベーススキーマ最適化装置10は、データベース装置110に入力される命令群を抽出し、各命令を実行計画に変換し、該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する実体化ビュー候補抽出部12と、各部分実行計画を実体化ビューとして利用することで得られる利得を計算する利得計算部13と、利得が付与された実体化ビュー候補群と、命令群とを入力とし、命令群の実行コストを最小化する実体化ビューを決定するスキーマ最適化部14と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
データベース装置に入力される命令群を抽出し、各命令を実行計画に変換し、該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する抽出部と、
各部分実行計画を実体化ビューとして利用することで得られる利得を計算する利得計算部と、
前記利得が付与された前記実体化ビュー候補群と、前記命令群とを入力とし、前記命令群の実行コストを最小化する実体化ビューを決定する最適化部と、
を有することを特徴とする最適化装置。
【請求項2】
前記抽出部は、各命令の実行計画を木構造で表現し、木構造の全ての部分木構造を前記実体化ビュー候補群として抽出することを特徴とする請求項1に記載の最適化装置。
【請求項3】
前記利得計算部は、前記命令群において前記実体化ビューが利用される回数と、前記実体化ビューを用いる場合と前記実体化ビューを用いない場合との間における前記命令の実行コストの差分と、を用いて、各部分実行計画を実体化ビューとして利用することで得られる利得を計算するとともに、頻出パターンマイニングを用いて所定値よりも利得の高い実体化ビューを探索することを特徴とする請求項1または2に記載の最適化装置。
【請求項4】
前記最適化部は、入力される前記実体化ビュー候補群が包含関係を有する場合に、最上位の実体化ビュー候補群を選別して初期解とし、前記利得計算部において計算された利得を最大に得ることができる実体化ビューを探索し、探索した実体化ビューを利用するように初期解に含まれる実体化ビュー候補を分解して、改善された前記実体化ビューを取得することを特徴とする請求項1~3のいずれか一つに記載の最適化装置。
【請求項5】
前記最適化部は、入力される前記実体化ビュー候補群が包含関係を有する場合に、最下位の実体化ビュー候補群を選別して初期解とし、前記利得計算部において計算された利得を最大に得ることができる実体化ビューを探索し、探索した実体化ビューを利用するように初期解に含まれる実体化ビュー候補を合成して、改善された前記実体化ビューを得ることを特徴とする請求項1~3のいずれか一つに記載の最適化装置。
【請求項6】
前記最適化部は、前記改善された実体化ビューを初期解とし、解の近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加し、整数計画問題を用いて前記命令群の実行コストが最小化される解となる実体化ビュー群を導出することを特徴とする請求項4または5に記載の最適化装置。
【請求項7】
前記最適化部は、前記抽出部によって抽出された前記実体化ビュー候補群から所定の方法によって絞り込まれた実体化ビュー群を初期解とし、解の近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加し、整数計画問題を用いて前記命令群の実行コストが最小化される解となる実体化ビュー群を導出することを特徴とする請求項1~3のいずれか一つに記載の最適化装置。
【請求項8】
最適化装置が実行する最適化方法であって、
データベース装置に入力される命令群を抽出し、各命令を実行計画に変換し、該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する工程と、
各部分実行計画を実体化ビューとして利用することで得られる利得を計算する工程と、
前記利得が付与された前記実体化ビュー候補群と、前記命令群とを入力とし、前記命令群の実行コストを最小化する実体化ビューを決定する工程と、
を含んだことを特徴とする最適化方法。
【請求項9】
コンピュータを、請求項1~7のいずれか一つに記載の最適化装置として機能させるための最適化プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、最適化装置、最適化方法及び最適化プログラムに関する。
【背景技術】
【0002】
検索命令群及び更新命令群からなるワークロードを実行するデータベース管理システム(DataBase Management System)において、ワークロードの実行性能の高速化が求められている。ここで、入力されるワークロードに従って最適な実体化ビュー群を導出し、利用することで、ワークロードの実行性能を高速化する技術がある。この実体化ビューは、アクセスされるたびにクエリを実行するビューと異なり、保持しているクエリの結果を返却するため、ビューよりも処理速度が速い。
【0003】
そして、従来、入力となるワークロードを用いて、整数計画問題を用いて、最適な実体化ビュー定義を導出しデータベース上で利用することによって、ワークロードの実行性能を高速化する技術が提案されている(例えば、非特許文献1,2参照)。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】Alekh Jindal, Konstantinos Karanasos, Sriram Rao, Hiren Patel, “Selecting Subexpressions to Materialize at Datacenter Scale”, PVLDB 11(7): 800-812 (2018). [online],[令和2年7月3日検索]、インターネット<URL:http://www.vldb.org/pvldb/vol11/p800-jindal.pdf>
【非特許文献2】Michael J. Mior, Kenneth Salem, Ashraf Aboulnaga, Rui Liu, “NoSE: Schema Design for NoSQL Applications”, IEEE Trans. Knowl. Data Eng. 29(10): 2275-2289 (2017). [online],[令和2年7月3日検索]、インターネット<URL:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7967690>
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、非特許文献1,2記載の技術では、ワークロードに含まれる各検索命令・更新命令の全ての部分実行を実体化ビュー候補として列挙するため、整数計画問題における変数が膨大になり、整数計画問題を実行するために巨大な計算機リソースが必要であるという問題があった。
【0006】
本発明は、上記に鑑みてなされたものであって、最適な実体化ビューを導出する際に要する処理コストを従来と比して削減することができる最適化装置、最適化方法及び最適化プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
上述した課題を解決し、目的を達成するために、本発明に係る最適化装置は、データベース装置に入力される命令群を抽出し、各命令を実行計画に変換し、当該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する抽出部と、各部分実行計画を実体化ビューとして利用することで得られる利得を計算する利得計算部と、利得が付与された実体化ビュー候補群と、命令群とを入力とし、命令群の実行コストを最小化する実体化ビューを決定する最適化部と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、最適な実体化ビューを導出する際に要する処理コストを従来と比して削減することができる。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態におけるデータベース管理システムの機能構成の一例を示す図である。
図2図2は、実施の形態に係るデータベーススキーマ最適化処理の処理手順を示すフローチャートである。
図3図3は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。
図4図4は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。
図5図5は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。
図6図6は、実体化ビュー候補抽出部が抽出する実体化ビュー候補を説明する図である。
図7図7は、利得計算処理を説明する図である。
図8図8は、方法1を用いたスキーマ最適化処理を説明する図である。
図9図9は、方法2を用いたスキーマ最適化処理を説明する図である。
図10図10は、方法3を用いたスキーマ最適化処理を説明する図である。
図11図11は、プログラムが実行されることにより、データベーススキーマ最適化装置が実現されるコンピュータの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、本発明の一実施形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0011】
[実施の形態]
本実施の形態では、実体化ビューの利得が高いものを優先的利用するように解(実体化ビュー群)を繰り返し更新し、または、削減された(絞り込まれた)実体化ビュー候補群から最適な解を探索する処理を繰り返すことによって、最適な実体化ビューを導出する際に要する処理コストを従来と比して大幅に削減する。
【0012】
[データベーススキーマ管理システム]
次に、実施の形態におけるデータベース管理システムについて説明する。図1は、実施の形態におけるデータベース管理システムの機能構成の一例を示す図である。
【0013】
実施の形態におけるデータベース管理システムでは、ユーザが使用する端末装置等で動作する応用プログラム100が、データベース装置110に対して、命令群(検索命令群及び更新命令群)からなるワークロードを実行する。データベース管理システムは、応用プログラム100及びデータベース装置110との間に設けられたデータベーススキーマ最適化装置10(最適化装置)を有する。データベーススキーマ最適化装置10は、最適な実体化ビューを導出する処理を行う。
【0014】
[データベーススキーマ最適化装置]
次に、データベーススキーマ最適化装置10について説明する。データベーススキーマ最適化装置10は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、CPU(Central Processing Unit)等を含むコンピュータ等に所定のプログラムが読み込まれて、CPUが所定のプログラムを実行することで実現される。また、データベーススキーマ最適化装置10は、ネットワーク等を介して接続された他の装置との間で、各種情報を送受信する通信インタフェースを有する。例えば、データベーススキーマ最適化装置10は、NIC(Network Interface Card)等を有し、LAN(Local Area Network)やインターネットなどの電気通信回線を介した他の装置との間の通信を行う。
【0015】
データベーススキーマ最適化装置10は、実体化ビュー候補抽出部12(抽出部)、利得計算部13及びスキーマ最適化部14(最適化部)を有する。データベーススキーマ最適化装置10は、なお、これらの各部は、複数の装置が分散して保持してもよい。
【0016】
実体化ビュー候補抽出部12は、データベーススキーマ最適化装置10に入力されるワークロードを抽出し、ワークロードに含まれる各検索命令及び各更新命令(各命令)を実行計画に変換し、該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する。実体化ビュー候補抽出部12は、各検索命令及び各更新命令の実行計画を木構造で表現し、木構造の全ての部分木構造を実体化ビュー候補群として抽出する。
【0017】
利得計算部13は、各部分実行計画を実体化ビューとして利用することで得られる利得を計算する。利得計算部13は、ワークロードにおいて実体化ビューが利用される回数と、実体化ビューを用いる場合と実体化ビューを用いない場合との間における検索命令及び更新命令の実行コストの差分と、を用いて、各部分計画を実体化ビューとして利用することで得られる利得を計算する。検索命令及び更新命令の実行コストについては、例えば、PostgreSQLなどでは、explainコマンドを用いてコスト計算が可能である(参考文献1参照)。そして、ワークロードにおいて実体化ビューが利用される回数が重要であるため、利得計算部13は、Aprioriに代表される頻出パターンマイニングの技術を用いて、所定値よりも利得の高い実体化ビューを高速に探索する。特に実行計画は木構造であるため、利得計算に対し、頻出部分木マイニングの技術(参考文献2参照)が適用可能である。
[参考文献1]EXPLAIN, [online],[令和2年7月3日検索]、インターネット<URL:https://www.postgresql.jp/document/8.3/html/sql-explain.html>
[参考文献2]Frequent subtree mining, [online],[令和2年7月3日検索]、インターネット<URL:https://en.wikipedia.org/wiki/Frequent_subtree_mining>
【0018】
スキーマ最適化部14は、利得が付与された実体化ビュー候補群と、ワークロードとを入力とし、ワークロードの実行コストを最小化する実体化ビューを決定する。スキーマ最適化部14は、最上位の実体化ビューから解の探索を行うトップダウン型のスキーマ最適化方法(方法1)、最下位の実体化ビューから解の探索を行うボトムアップ型のスキーマ最適化方法(方法2)を用いて、実体化ビューの利得が高いものを優先利用するように解を繰り返し更新する。また、スキーマ最適化部14は、解の近傍を繰り返し探索する方法3を用いて、方法1または方法2において得られた実体化ビュー、或いは、実体化ビュー候補抽出部12によって抽出された実体化ビュー候補群から所定の方法によって削減された(絞り込まれた)実体化ビュー候補群から、最適な解を探索する処理を繰り返す(方法3)。
【0019】
[データスキーマ最適化装置の処理]
次に、データベーススキーマ最適化装置10が実行する処理について説明する。図2は、実施の形態に係るデータベーススキーマ最適化処理の処理手順を示すフローチャートである。
【0020】
図2に示すように、実体化ビュー候補抽出部12は、ワークロードを入力とし、ワークロードに含まれる各検索命令及び各更新命令を実行計画に変換した後、実行計画の全ての部分実行計画群を実体化ビュー候補群として抽出する実体化ビュー候補抽出処理を行う(ステップS1)。
【0021】
利得計算部13は、各部分実行計画を実体化ビューとして利用することで得られる利得を計算する利得計算処理を行う(ステップS2)。ステップS2において、利得計算部13は、頻出パターンマイニングの技術を用いて、所定値よりも利得の高い実体化ビューを高速に探索する。
【0022】
そして、スキーマ最適化部14は、利得が付与された実体化ビュー候補群と、ワークロードとを入力とし、方法1,2,3のいずれか用いることで、ワークロードの実行コストを最小化する実体化ビューを決定するスキーマ最適化処理を行い(ステップS3)、ワークロードの実行コストを最小化する実体化ビューの定義をデータベース装置110に出力する。
【0023】
[スキーマ最適化処理]
[方法1]
次に、スキーマ最適化処理(ステップS3)の処理手順について説明する。図3は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。図3では、スキーマ最適化処理として、方法1を適用した例を説明する。
【0024】
方法1は、最上位の実体化ビューから解の探索を行う方法である。図3に示すように、入力される実体化ビュー候補群が包含関係を有する場合に、スキーマ最適化部14は、最上位の実体化ビュー候補群のみを選別して初期解に設定する(ステップS11)。スキーマ最適化部14は、利得計算部13で計算した利得を最大に得ることができる未使用の実体化ビューをトップダウンに探索する(ステップS12)。
【0025】
そして、スキーマ最適化部14は、探索した実体化ビューを利用する場合と実体化ビューを利用しない場合とを比較し、コストが改善できるか、言い換えると、解が最小解であるか否かを判定する(ステップS13)。
【0026】
コストが改善できない場合(解が極小解である場合(ステップS13:Yes))、スキーマ最適化部14は、スキーマ最適化処理を終了する。これに対し、コストが改善できる場合(解が極小解でない場合(ステップS13:No))、スキーマ最適化部14は、探索した実体化ビューを利用するように解に含まれる実体化ビュー候補を分解することで改善された解を更新し(ステップS14)、ステップS12に進み、再度利得を最大に得ることができる実体化ビューを探索して処理を繰り返す。
【0027】
この方法1により、利得を最大に得ることができる実体化ビューの探索と実体化ビュー候補の分解とを、ワークロードコストが極小化されるまで繰り返し実行することで、スキーマ最適化部14は、ワークロードコストを極小化する実体化ビュー群を導出する。したがって、方法1を用いることによって、スキーマ最適化部14は、整数計画問題を利用することなく、高速に利得の高い実体化ビューを含む解を導出することが可能となり、最適な実体化ビュー群を利用することでワークロードの実行性能の高速化を実現できる。
【0028】
[方法2]
次に、スキーマ最適化処理として、方法2を適用した例を説明する。図4は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。
【0029】
方法2は、最下位の実体化ビューから解の探索を行う方法である。図4に示すように、入力される実体化ビュー候補群が包含関係を有する場合に、スキーマ最適化部14は、最下位の実体化ビュー候補群のみを選別して初期解に設定する(ステップS21)。スキーマ最適化部14は、利得計算部13で計算した利得を最大に得ることができる未使用の実体化ビューをボトムアップに探索する(ステップS22)。
【0030】
スキーマ最適化部14は、探索した実体化ビューを利用するケースと実体化ビューを利用しないケースとを比較し、コストが改善できるか、言い換えると、解が最小解であるか否かを判定する(ステップS23)。
【0031】
コストが改善できない場合(解が極小解である場合(ステップS23:Yes))、スキーマ最適化部14は、スキーマ最適化処理を終了する。これに対し、コストが改善できる場合(解が極小解でない場合(ステップS23:No))、スキーマ最適化部14は、探索した実体化ビューを利用するように解に含まれる実体化ビュー候補を合成することで改善された解を更新し(ステップS24)、ステップS22に進み、再度利得を最大に得ることができる実体化ビューを探索して処理を繰り返す。
【0032】
この方法2により、利得を最大に得ることができる実体化ビューの探索と実体化ビューの合成とを、ワークロードコストが極小化されるまで繰り返し実行することで、スキーマ最適化部14は、ワークロードコストを極小化する実体化ビュー群を導出する。そして、方法2を用いることによって、スキーマ最適化部14は、整数計画問題を利用することなく、高速に利得の高い実体化ビューを含む解を導出することが可能となり、最適な実体化ビュー群を利用することでワークロードの実行性能の高速化を実現できる。
【0033】
[方法3]
次に、スキーマ最適化処理として、方法3を適用した例を説明する。図5は、図2に示すスキーマ最適化処理の処理手順の一例を示すフローチャートである。
【0034】
方法3は、解の近傍を繰り返し探索する方法である。図5に示すように、スキーマ最適化部14は、方法1または方法2において得られた、改善された実体化ビューを初期解として設定する(ステップS31)。或いは、スキーマ最適化部14は、実体化ビュー候補抽出部12により得られた実体化ビュー候補群からランダムに選択するなどの所定の方法を用いて、実体化ビュー候補抽出部12によって抽出された実体化ビュー候補群からさらに絞り込まれた実体化ビュー群を初期解として設定する(ステップS31)。
【0035】
そして、スキーマ最適化部14は、解の近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加する(ステップS32)。スキーマ最適化部14は、整数計画問題を用いてワークロードコストが最小化される解となる実体化ビュー群を導出する(ステップS33)。スキーマ最適化部14は、解が収束したか否かを判定する(ステップS34)。スキーマ最適化部14は、解が収束していない場合(ステップS34:No)、解が収束する(ステップS34:Yes)までステップS32,S33の処理を繰り返すことによって、最適な実体化ビュー群を導出する。なお、解が収束しない場合は、ユーザが指定した繰り返し回数を実行して処理を終了してもよい。
【0036】
この方法3に示すように、スキーマ最適化部14は、数が絞り込まれた実体化ビュー候補群を初期解とし、解に含まれる近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加し、ワークロードコストが最小化される解となる実体化ビュー群を導出する処理を繰り返す。
【0037】
したがって、方法3を用いることによって、スキーマ最適化部14は、探索の各時点において実体化ビュー候補を各時点の解の近傍に限定することによって、実体化ビュー候補数を大幅に削減している。そして、スキーマ最適化部14は、整数計画問題を繰り返し実行することによってワークロードコストを最小化する実体化ビュー群(解)を改善するとともに、計算途中の解に含まれる実体化ビューの近隣の実体化ビューを解候補に加えることで、整数計画問題を用いて解近傍を探索する。スキーマ最適化部14は、この探索を繰り返すことで最適解を得ることが可能となり、最適な実体化ビュー群を利用することでワークロードの実行性能の高速化を実現できる。
【0038】
[実体化ビュー候補]
次に、実体化ビュー候補抽出部12が抽出する実体化ビュー候補について具体的に説明する。図6は、実体化ビュー候補抽出部12が抽出する実体化ビュー候補を説明する図である。
【0039】
図6では、入力されるワークロードの一例として、ワークロード200を示す。このワークロード200は、例えば、以下の検索命令を含む。
SELECT EMP.name
FROM EMP, DEPT
WHERE EMP.deptID = DEPT.ID
AND EMP.age = 25
AND DEPT.name = '販売';
以降、この検索命令を用いて実行計画及び部分実行計画を説明する。
【0040】
図6では、実体化ビュー候補抽出部12が変換した実行計画の一例として、上記の検索命令から変換された実行計画210を示す。具体的には、上記の検索命令は、リレーショナル代数の演算子(選択σ, 射影π, 自然結合\bowtie)を節点とする木構造として表現される。
【0041】
図6では、実体化ビュー候補抽出部12が実行計画210から抽出した部分実行計画220を示す。具体的には、実体化ビュー候補抽出部12によって、上記の木構造の実行計画の全ての部分木st1,st2,st3,st4,st5,st6が部分実行計画として抽出される。部分実行計画st1,st2,st3,st4,st5,st6は、実体化ビュー候補群とされる。また、部分木st1を含む部分木は存在しないため、部分木st1を最上位の実体化ビュー候補と呼ぶ。そして、部分木st5,st6は包含する木が存在しないため、部分木st5,st6を最下位の実体化ビュー候補と呼ぶ。
【0042】
[利得計算処理]
次に、利得計算部13による利得計算処理について説明する。図7は、利得計算処理を説明する図である。図7では、図6で示した実体化ビュー候補であるst1,st2,st3,st4,st5,st6の頻度、すなわち、ワークロードにおいて実体化ビューが利用される回数を計算した例を示している。
【0043】
図7では、利得計算部13が、部分実行計画220に対し、実体化ビューst1が出現する件数を計算した結果が5回であることを示している。利得計算部13は、実体化ビューst2以降も同様に計算する。
【0044】
また、利得計算部13では、実体化ビューを用いる場合と実体化ビューを用いない場合との間における検索命令及び更新命令の実行コストの差分を計算する。実体化ビューを使う場合の実行コストと、実体化ビューを使わない場合の実行コストとは、データベースのコスト計算の技術を適用可能である。
【0045】
具体的に、実体化ビューst1の実行計画を考える場合について説明する。実体化ビューを用いない場合、EMPテーブルとDEPTテーブルとに対して実行計画のst1を実行するコストを計算する。また、実体化ビューを用いる場合、例えば、st2を実体化ビューとする場合、st2の実行結果サイズを計算したときに、これをテーブルと考えて、st1を実行するコストを計算する。
【0046】
利得計算部13は、上記のように計算した、実体化ビューを用いる場合と実体化ビューを用いない場合との間における検索命令及び更新命令の実行コストから、これらの実行コストの差分を計算できる。
【0047】
さらに、後段のスキーマ最適化部14では利得の高い実体化ビューのみを利用するため、利得計算部13は、出現頻度の高く上位の実体化ビューのみを探索すればよい。頻出部分木マイニングの技術(参考文献1参照)を適用することで、利得計算部13は、利得の高い実体化ビューのみを効率的に探索することが可能である。
【0048】
[スキーマ最適化処理(方法1)]
次に、方法1を用いたスキーマ最適化処理について説明する。図8は、方法1を用いたスキーマ最適化処理を説明する図である。
【0049】
方法1は、最上位の実体化ビューから解の探索を行う方法である。図8には、方法1による初期解500として、最上位の実体化ビューが列挙されている。次に、スキーマ最適化部14が、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューをトップダウンに探索する。図8では、例えば、実体化ビューst2を探索した場合を例に説明する。
【0050】
この際、スキーマ最適化部14は、実体化ビューst2を利用する場合と、実体化ビューst2を利用しない場合とを比較して、コストが改善できるか判断する。具体的には、スキーマ最適化部14は、実体化ビューst2のワークロード内での出現頻度50回(図7参照)と、自然結合演算を実体化して改善できるメリットとを勘案する。スキーマ最適化部14は、もしコストが改善できるならば、実体化ビューst2を利用するように解を更新し、次の解510を得る。
【0051】
同様に、スキーマ最適化部14は、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューを探索する。この結果、スキーマ最適化部14は、実体化ビューst4を選択し、実体化ビューst4を利用するように解を更新し、次の解520を得る。
【0052】
そして、スキーマ最適化部14は、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューを探索する。この結果、スキーマ最適化部14は、実体化ビューst3を選択する。ここで、実体化ビューst3は、実体化ビューst4と同じ選択演算だが、出現頻度が100回(図7参照)と実体化ビューst4よりもの出現頻度が低いため、コストを改善できないことが判断され、処理を終了する。図8の例では、解520が最終解として出力される。
【0053】
[スキーマ最適化処理(方法2)]
次に、方法2を用いたスキーマ最適化処理について説明する。図9は、方法2を用いたスキーマ最適化処理を説明する図である。
【0054】
方法2は、最下位の実体化ビューから解の探索を行う方法である。図9には、方法2による初期解700として、最下位の実体化ビュー(EMP, DEPTのベーステーブル)が列挙されている。次に、スキーマ最適化部14が、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューをボトムアップに探索する。図9では、例えば、実体化ビューst4を探索した場合を例に説明する。
【0055】
この際に、スキーマ最適化部14は、実体化ビューst4を利用する場合と実体化ビューst4を利用しない場合とを比較して、コストが改善できるか判断する。具体的には、スキーマ最適化部14は、実体化ビューst4のワークロード内での出現頻度600回(図7参照)と、選択演算を実体化して改善できるメリットとを勘案する。スキーマ最適化部14は、もしコストが改善できるならば、実体化ビューst4を利用するように解を更新し、次の解710を得る。
【0056】
同様に、スキーマ最適化部14は、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューを探索する。この結果、スキーマ最適化部14は、実体化ビューst2を選択し、次の解を更新し、次の解720を得る。
【0057】
そして、スキーマ最適化部14は、利得計算部13が計算した利得を最大に得ることができる未使用の実体化ビューを探索する。この結果、スキーマ最適化部14は、実体化ビューst1を選択する。ここで、実体化ビューst1は出現頻度が5回(図7参照)と、実体化ビューst2の出現頻度よりも低いため、コストを改善できないことが判断され、処理を終了する。したがって、図9の例では、解720が最終解として出力される。
【0058】
[スキーマ最適化処理(方法3)]
次に、方法3を用いたスキーマ最適化処理について説明する。図10は、方法3を用いたスキーマ最適化処理を説明する図である。図10には、方法3による初期解として、初期解900を示す。この初期解900は、前述の方法1、方法2、或いは、実体化ビュー候補抽出部12により得られた実体化ビュー候補群からランダムに選択するなどの方法によって数が絞り込まれたものである。
【0059】
そして、スキーマ最適化部14は、現在の解に含まれる各実体化ビューの解の近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加する(図10の(1)参照)。例えば、初期解900には、実体化ビューst4が初期解に含まれているため、スキーマ最適化部14は、実体化ビューst4と合わせて、実体化ビューst4の上位の実体化ビューである実体化ビューst2と、下位である実体化ビューst6とを、実体化ビュー候補群910に追加する。図10では、実体化ビューst4のみを図示しているが、スキーマ最適化部14は、現在の解に含まれる全ての実体化ビューに対して上位と下位の実体化ビューを探索して実体化ビュー候補に追加する。
【0060】
そして、スキーマ最適化部14は、整数計画問題を用いてワークロードコストが最小化される解となる実体化ビュー候補群を導出する(図10の(2)参照)。ここでは、スキーマ最適化部14によって、実体化ビューst2が選択されたことを表している。スキーマ最適化部14は、これらの処理を収束するまで繰り返すことによって、最適な実体化ビュー群(例えば、改善解920)を導出する。図10の例では、改善解920が最終解として出力される。
【0061】
[実施の形態の効果]
このように、本実施の形態に係るデータベーススキーマ最適化装置10は、データベース装置110に入力されるワークロードを抽出し、各検索命令及び各更新命令を実行計画に変換し、該実行計画に含まれる部分実行計画群を実体化ビュー候補群として抽出する。そして、データベーススキーマ最適化装置10は、部分実行計画を実体化ビューとして利用することで得られる利得を計算し、利得が付与された実体化ビュー候補群とワークロードとを入力とし、ワークロードの実行コストを最小化する実体化ビューを決定する。
【0062】
このため、データベーススキーマ最適化装置10は、各検索命令及び各更新命令を実行計画に変換した後に部分実行計画群の全てを実体化ビュー群として列挙するのではなく、各実体化ビューの利得を基に、実行コストを最小化する実体化ビューを効率的に探索する。したがって、データベーススキーマ最適化装置10によれば、従来よりも、最適な実体化ビューを導出する際に要する処理コストを削減することができる。
【0063】
また、データベーススキーマ最適化装置10は、最上位の実体化ビューから解の探索を行うトップダウン型のスキーマ最適化方法(方法1)、最下位の実体化ビューから解の探索を行うボトムアップ型のスキーマ最適化方法(方法2)を用いて、実体化ビューの利得が高いものを優先利用するように解を繰り返し更新することで、高速に利得の高い実体化ビューを含む解を導出することが可能となり、ワークロードの実行性能を高速化することができる。
【0064】
さらに、データベーススキーマ最適化装置10は、初期解から開始し、解に含まれる近傍の実体化ビュー群を新たな候補として実体化ビュー候補に追加し、ワークロードコストが最小化される解となる実体化ビュー群を導出する処理を繰り返す方法(方法3)によって最適な実体化ビュー群を導出している。したがって、データベーススキーマ最適化装置10によれば、探索の各時点において実体化ビュー候補を各時点の解の近傍に限定することによって、実体化ビュー候補数を大幅に削減するとともに、この探索を繰り返すことで最適解を得ることが可能となり、ワークロードの実行性能を高速化することができる。
【0065】
また、データベーススキーマ最適化装置10は、利得計算の処理において、ワークロードにおいて実体化ビューが利用される回数が実体化ビューの利得に影響する性質を利用して、Aprioriに代表される頻出パターンマイニングの技術適用することで、利得の高い実体化ビューを高速に探索することができる。
【0066】
上記のように、本実施の形態に係るデータベーススキーマ最適化装置10によれば、最適な実体化ビューを導出する際に要する処理コストを従来と比して削減することができる。
【0067】
[実施の形態のシステム構成について]
データベーススキーマ最適化装置10の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、データベーススキーマ最適化装置10の機能の分散及び統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【0068】
また、データベーススキーマ最適化装置10においておこなわれる各処理は、全部または任意の一部が、CPU、GPU(Graphics Processing Unit)、及び、CPU、GPUにより解析実行されるプログラムにて実現されてもよい。また、データベーススキーマ最適化装置10においておこなわれる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【0069】
また、実施の形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述及び図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【0070】
[プログラム]
図11は、プログラムが実行されることにより、データベーススキーマ最適化装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0071】
メモリ1010は、ROM1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0072】
ハードディスクドライブ1090は、例えば、OS(Operating System)1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、データベーススキーマ最適化装置10の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、データベーススキーマ最適化装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0073】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0074】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0075】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。
【符号の説明】
【0076】
10 データベーススキーマ最適化装置
12 実体化ビュー候補抽出部
13 利得計算部
14 スキーマ最適化部
100 応用プログラム
110 データベース装置
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11