(57)【要約】【課題】  複数の問合せによりデータベース処理を行う際にマテリアライズドビュー表を効率的に利用することが可能な技術を提供する。【解決手段】  マテリアライズドビュー表を作成するマテリアライズドビュー表作成方法において、複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納するステップと、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示するステップと、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納するステップとを有するものである。【選択図】図２
2006343798.tif 000002
【特許請求の範囲】
【請求項１】
マテリアライズドビュー表を作成するマテリアライズドビュー表作成方法において、
複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納するステップと、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示するステップと、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納するステップとを有することを特徴とするマテリアライズドビュー表作成方法。
【請求項２】
複数の問合せで同一の問合せを検出してその検出した問合せを前記導出表リストに格納することを特徴とする請求項１に記載されたマテリアライズドビュー表作成方法。
【請求項３】
複数の問合せで共通する記述を検索して共通する導出表を検出し、その検出した導出表の記述を前記導出表リストに格納することを特徴とする請求項１または請求項２のいずれかに記載されたマテリアライズドビュー表作成方法。
【請求項４】
マテリアライズドビュー表を作成するマテリアライズドビュー表作成装置において、
複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納する導出表検出処理部と、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示するＭＶ表作成指示処理部と、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納する問合せ変換処理部とを備えることを特徴とするマテリアライズドビュー表作成装置。
【請求項５】
マテリアライズドビュー表を作成するマテリアライズドビュー表作成方法をコンピュータに実行させる為のプログラムにおいて、
複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納するステップと、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示するステップと、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納するステップとをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータベース管理システム（ＤＢＭＳ）に対する問合せからマテリアライズドビュー表を作成するマテリアライズドビュー表作成技術に関するものである。
【背景技術】
【０００２】
従来の技術として、マテリアライズドビュー表は、ある問合せが、グルーピング、表結合、集合演算、外部サーバの表へのアクセス等を含んでいる場合、その問合せの集計結果を実体ある表へと格納しておき、その表を参照することで、アクセス効率を向上させる、問合せの最適化手法である（例えば特許文献１参照）。 
更に、マテリアライズドビュー表を利用した問合せの効率化を図る従来の手法では、問合せがマテリアライズドビュー表を含んでいない場合にも、適用可能なマテリアライズドビュー表を用いた問合せとして実行を行う（例えば特許文献２参照）。
【０００３】
【特許文献１】米国特許第５８９７６３２号
【特許文献２】米国特許第５９９１７５４号
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記の従来技術から、問合せの一部または全部をマテリアライズドビュー表に置き換えることによる最適化は有効な技術であることが分かる。しかしながら、ユーザ自らが、複雑なシステムからデータアクセスの効率を向上するマテリアライズドビュー表を見出して作成することは容易ではないという問題がある。
【０００５】
本発明の目的は上記問題を解決し、複数の問合せによりデータベース処理を行う際にマテリアライズドビュー表を効率的に利用することが可能な技術を提供することにある。
【課題を解決するための手段】
【０００６】
本発明は、マテリアライズドビュー表を作成するマテリアライズドビュー表作成装置において、複数の問合せで共通して用いられる導出表を検出してマテリアライズドビュー表を作成するものである。
【０００７】
本発明のマテリアライズドビュー表作成装置（計算機や情報処理装置、またはその様な処理を実施するプログラムやオブジェクトでも良い）では、データベース管理システムに対する複数の問合せの内容を比較し、それらの問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納する。
【０００８】
そして、前記導出表リスト中の導出表をマテリアライズドビュー表として作成するcreate文を生成してデータベース管理システムのコンパイラに渡し、その導出表に相当するマテリアライズドビュー表の作成を指示する。
【０００９】
また、問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換した後、その変換した問合せをデータベース管理システムのコンパイラに渡すことにより、マテリアライズドビュー表を用いたデータベース処理を実行させる。
【発明の効果】
【００１０】
本発明によれば、複数の問合せによりデータベース処理を行う際にマテリアライズドビュー表を効率的に利用することが可能である。
【発明を実施するための最良の形態】
【００１１】
以下に複数のＳＱＬ問合せで共通する導出表を検出してマテリアライズドビュー表を作成する一実施形態のマテリアライズドビュー表作成装置について説明する。
【００１２】
図１は本実施形態のマテリアライズドビュー作成処理の概要を示す図である。図１に示す様に本実施形態におけるマテリアライズドビュー表作成処理では、入力された複数の問合せから、アクセス効率を向上させるマテリアライズドビュー表を求める機能を、ＤＢＭＳの一部とし、「ＭＶ自動作成機能」と呼ぶことにする。
【００１３】
本実施形態では、ＭＶ自動作成機能、ＤＢＭＳを通してＭＶ自動作成機能へデータの入力を行うユーザ、ＳＱＬソースをコンパイルして実行オブジェクトを作成する機能を持つＳＱＬコンパイラ、ディクショナリ表として表やアプリケーションの定義情報を格納する定義情報格納エリア、表に入力されたデータを格納するデータ格納エリアにより、マテリアライズドビュー表作成処理を説明する。
【００１４】
まず、ユーザは、入力を決定する。入力は、ユーザが指定した問合せ（営業業務用アプリケーション中に使用される問合せ、経理業務用アプリケーション中に使用される問合せ等）のＳＱＬテキストとする。
【００１５】
１０１は、ユーザからＭＶ自動作成機能を使用するためのＤＢＭＳへの入力を表し、１０２は、ＭＶ自動作成機能を実行した結果のユーザに対する出力を表している。１０５は、定義情報格納エリアからのＭＶ自動作成機能への問合せのＳＱＬテキストの入力を表しており、ユーザが、入力として、既存定義情報から問合せのＳＱＬテキストを入力することもあり得る。
【００１６】
また１０６は、ＭＶ自動作成機能からのＳＱＬコンパイラへの入力を表し、１０７は、ＳＱＬコンパイラからのＭＶ自動作成機能への出力を表している。１０８は、ＳＱＬコンパイラが、マテリアライズドビュー表定義をコンパイルした結果、実行オブジェクトを出力したことを表しており、１０９は、マテリアライズドビュー表定義オブジェクトを実行した結果、定義情報格納エリアへのマテリアライズドビュー表の定義情報出力を表し、１１０は、マテリアライズドビュー表定義オブジェクトを実行した結果、その表としてのデータがデータ格納エリアへ作成されたことを表している。
【００１７】
図７は本実施形態のマテリアライズドビュー表作成装置の概略構成を示す図である。図７に示す様に本実施形態のマテリアライズドビュー表作成装置は、導出表検出処理部２０１と、ＭＶ表作成指示処理部２０２と、問合せ変換処理部２０３とを有している。
【００１８】
導出表検出処理部２０１は、複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納する処理部である。ＭＶ表作成指示処理部２０２は、前記導出表リスト中の導出表をマテリアライズドビュー表として作成する定義情報を作成して記憶装置に格納し、その定義情報によるマテリアライズドビュー表の作成を指示する処理部である。問合せ変換処理部２０３は、前記問合せ中の記述を前記作成されたマテリアライズドビュー表を用いる記述に変換して記憶装置に格納する処理部である。
【００１９】
マテリアライズドビュー表作成装置を導出表検出処理部２０１、ＭＶ表作成指示処理部２０２及び問合せ変換処理部２０３として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納された後、メモリにロードされて実行されるものとする。なお前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。また前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２０】
図２は本実施形態のマテリアライズドビュー表が求まるまでの処理の流れを示す図である。本実施形態でＭＶ自動作成機能は、入力された問合せから、それらのアクセス効率を向上させるマテリアライズドビュー表を求める。以下に、図２に基づいて、具体的な入力の例を用いて、マテリアライズドビュー表が求まるまでの処理の流れを説明する。
【００２１】
まず、問合せ１及び問合せ２のＳＱＬを入力とし、ＭＶ自動作成機能の導出表検出処理部２０１により、問合せ１及び問合せ２の文字列をメモリ上で比較して、問合せ１及び問合せ２で共通の導出表ＤＴ１を求めて磁気ディスク装置の導出表リストに格納した後、問合せ１及び問合せ２中の導出表ＤＴ１に相当する文字列部分を導出表ＤＴ１の記述にメモリ上で変更することにより、問合せ１及び問合せ２を、導出表ＤＴ１を適用した等価なＳＱＬへ変換して磁気ディスク装置等へ格納する。
【００２２】
図３は本実施形態の問合せ１及び問合せ２の導出表ＤＴ１を適用したＳＱＬへの変換例を示す図である。図３では、問合せ１及び問合せ２、導出表ＤＴ１、問合せ１及び問合せ２を導出表ＤＴ１により変換した問合せ１´及び問合せ２´の具体的なＳＱＬの例を表しており、ＭＶ自動作成機能に入力した問合せのＳＱＬテキストから、アクセス効率を向上させるマテリアライズドビュー表とする為の導出表リストを作成する処理の流れについては図５及び図６に示す。
【００２３】
次に、求めた導出表ＤＴ１のＳＱＬを用いてマテリアライズドビュー表ＭＶ１を作成する。ＭＶ自動作成機能のＭＶ表作成指示処理部２０２は、導出表ＤＴ１のＳＱＬテキストデータを基に、create文によりマテリアライズドビュー表ＭＶ１を生成する定義ＳＱＬを作成してＳＱＬコンパイラへ入力する。入力を得たＳＱＬコンパイラは、マテリアライズドビュー表ＭＶ１の作成を実行するオブジェクトを作成して実行する。この時、マテリアライズドビュー表ＭＶ１の定義情報は、定義情報格納エリアへ入力され、表の実体は、データ格納エリアへ格納される。
【００２４】
ここで、マテリアライズドビュー表ＭＶ１と導出表ＤＴ１は等価な問合せであるので、ＭＶ自動作成機能の問合せ変換処理部２０３により、問合せ１´及び問合せ２´中の導出表ＤＴ１を示す文字列をマテリアライズドビュー表ＭＶ１の記述にメモリ上で変更して、問合せ１´及び問合せ２´を、マテリアライズドビュー表ＭＶ１を適用した等価なＳＱＬへ変換する。
【００２５】
図４は本実施形態の問合せ１´及び問合せ２´のマテリアライズドビュー表ＭＶ１を適用したＳＱＬへの変換例を示す図である。図４では、問合せ１´及び問合せ２´をマテリアライズドビュー表ＭＶ１により変換した問合せ１´´及び問合せ２´´の具体的なＳＱＬの例を表している。
【００２６】
導出表ＤＴ１は、マテリアライズドビュー表ＭＶ１と等価な問合せである。しかし、マテリアライズドビュー表ＭＶ１は、導出表ＤＴ１の問合せによって得られた結果と等価な表であるため、導出表ＤＴ１を使用した問合せよりも、マテリアライズドビュー表ＭＶ１を使用した問合せの方がアクセス効率が良い。そこで本実施形態の処理により、問合せ１及び問合せ２を、それぞれ問合せ１´´及び問合せ２´´に自動的に変換することによって、問合せのアクセス効率を自動的に向上させることができる。
【００２７】
図５は本実施形態の導出表検出処理の処理手順を示すフローチャートである。図５に示す様に導出表検出処理部２０１は、複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納する処理を行う。
【００２８】
ステップ５０１で導出表検出処理部２０１は、変数ｉに１を加算した後、変数ｉを変数ｊに代入してステップ５０２へ進み、入力装置により入力され、入力問合せリストとして磁気ディスク装置に格納されている問合せの中からｉ番目の問合せを取り出す。またステップ５０３では、変数ｊに１を加算した後、ステップ５０４へ進み、入力問合せリストからｊ番目の問合せを取り出す。
【００２９】
ステップ５０５では、前記取り出したｉ番目の問合せの文字列とｊ番目の問合せの文字列とをメモリ上で比較してそれらが同一の問合せであるかどうかを調べ、同一の問合せである場合にはステップ５０６へ進み、その問合せの内容を磁気ディスク装置の導出表リストに格納する。
【００３０】
またステップ５０５で調べた結果、前記取り出したｉ番目の問合せの文字列とｊ番目の問合せの文字列とが同一の問合せでない場合にはステップ５０７へ進み、そのｉ番目の問合せとｊ番目の問合せとの間で共通する導出表を求める。その処理の流れについては図６に示す。
【００３１】
ステップ５０８では、ステップ５０７での処理結果を調べ、その処理結果が導出表の存在を示している場合にはステップ５０９へ進み、ステップ５０７で求められた導出表の内容を磁気ディスク装置の導出表リストに格納する。
【００３２】
ステップ５１０では、変数ｊの値と入力問合せリスト中の問合せの総数を示すｋの値とを比較し、変数ｊの値がｋの値よりも小さい場合にはステップ５０３からの処理を再度行い、そうでない場合にはステップ５１１へ進む。
【００３３】
ステップ５１１では、変数ｊの値と入力問合せリスト中の問合せの総数を示すｋから１を引いた値とを比較し、変数ｊの値が（ｋ−１）の値よりも小さい場合にはステップ５０１からの処理を再度行い、そうでない場合には導出表検出処理を終了する。
【００３４】
図６は本実施形態の共通導出表検索処理の処理手順を示すフローチャートである。図６に示す様に導出表検出処理部２０１は、ステップ５０７の共通導出表検索処理で、ｉ番目の問合せの文字列とｊ番目の問合せの文字列について、アクセスする表等に関する情報を検索し、複数の問合せで共通して用いられる導出表を検出して導出表リストとして記憶装置に格納する処理を行う。
【００３５】
ステップ６０２で導出表検出処理部２０１は、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列FROM以降のアクセスする表に関する情報を検索した後、それらの表の情報を比較して共通する表へのアクセスがあるかどうかを調べ、共通する表へのアクセスがある場合には、その表に関する情報を導出表作成用情報６０１に格納する。
【００３６】
ステップ６０３では、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列LEFT OUTER JOIN等の表の結合に関する情報を検索した後、それらの表の結合の情報を比較して共通する表の結合があるかどうかを調べ、共通する表の結合がある場合には、その結合に関する情報を導出表作成用情報６０１に格納する。
【００３７】
ステップ６０４では、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列SELECT以降の列に関する情報を検索した後、それらの列の情報を比較して共通する列があるかどうかを調べ、共通する列がある場合には、その列に関する情報を導出表作成用情報６０１に格納する。
【００３８】
ステップ６０５では、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列GROUP等のグループ化に関する情報を検索した後、それらのグループ化の情報を比較して共通するグループ化があるかどうかを調べ、共通するグループ化がある場合には、そのグループ化に関する情報を導出表作成用情報６０１に格納する。
【００３９】
ステップ６０６では、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列WHERE等の探索条件に関する情報を検索した後、それらの探索条件の情報を比較して共通する探索条件があるかどうかを調べ、共通する探索条件がある場合には、その探索条件に関する情報を導出表作成用情報６０１に格納する。
【００４０】
ステップ６０７では、ｉ番目の問合せの文字列とｊ番目の問合せの文字列を参照して、文字列UNION等の集合演算に関する情報を検索した後、それらの集合演算の情報を比較して共通する集合演算があるかどうかを調べ、共通する集合演算がある場合には、その集合演算に関する情報を導出表作成用情報６０１に格納する。
【００４１】
ステップ６０８では、導出表作成用情報６０１の内容を参照してステップ６０２〜ステップ６０７で何れかの情報が検索されたかどうかを調べることにより、ｉ番目の問合せとｊ番目の問合せとの間に共通する導出表が存在するかを判定し、共通する導出表が存在する場合にはステップ６０９へ進み、その判定結果を示す情報と導出表作成用情報６０１の内容とを呼び出し元へ返して共通導出表検索処理を終了する。また共通する導出表が存在しない場合にはその判定結果を示す情報を呼び出し元へ返して共通導出表検索処理を終了する。
【００４２】
以上説明した様に本実施形態のマテリアライズドビュー表作成装置によれば、複数の問合せで共通して用いられる導出表を検出してマテリアライズドビュー表を作成するので、複数の問合せによりデータベース処理を行う際にマテリアライズドビュー表を効率的に利用することが可能である。
【図面の簡単な説明】
【００４３】
【図１】本実施形態のマテリアライズドビュー作成処理の概要を示す図である。
【図２】本実施形態のマテリアライズドビュー表が求まるまでの処理の流れを示す図である。
【図３】本実施形態の問合せ１及び問合せ２の導出表ＤＴ１を適用したＳＱＬへの変換例を示す図である。
【図４】本実施形態の問合せ１´及び問合せ２´のマテリアライズドビュー表ＭＶ１を適用したＳＱＬへの変換例を示す図である。
【図５】本実施形態の導出表検出処理の処理手順を示すフローチャートである。
【図６】本実施形態の共通導出表検索処理の処理手順を示すフローチャートである。
【図７】本実施形態のマテリアライズドビュー表作成装置の概略構成を示す図である。
【符号の説明】
【００４４】
６０１…導出表作成用情報、２０１…導出表検出処理部、２０２…ＭＶ表作成指示処理部、２０３…問合せ変換処理部。
【図１】
2006343798.tif 000003
【図２】
2006343798.tif 000004
【図３】
2006343798.tif 000005
【図４】
2006343798.tif 000006
【図５】
2006343798.tif 000007
【図６】
2006343798.tif 000008
【図７】
2006343798.tif 000009