(57)【特許請求の範囲】
【請求項１】
ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化する問い合わせ最適化処理装置において、
ユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力手段と、
それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーと、
各データベースサーバーにそれぞれ対応して設けられ、検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュールと、
前記問い合わせ要求入力手段からの問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュールから得られる見積もりに応じてアクセスプランを生成するアクセスプラン生成手段と、
前記アクセスプラン生成手段が生成したアクセスプランに応じて各データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行手段と、
前記問い合わせ要求入力手段で与えられた問い合わせと、アクセスプラン生成手段で生成されたアクセスプランの履歴を保持し、新たに与えられた問い合わせと意味的に等価な問い合わせが該履歴にあれば対応するアクセスプランを前記アクセスプラン生成手段に渡すアクセスプラン保持手段と、
各データベースサーバーにそれぞれ対応して設けられ、データベースサーバーが管理する表データの内容が変化する操作が行われた時に、前記アクセスプラン保持手段に対し、該当するアクセスプランを破棄するように指示するアクセスプラン破棄手段と、
を備え、
前記各アクセスプラン破棄手段は、
表データの内容が変化する回数の閾値が設定保持され、該表データの内容が変化する回数を検出し、該回数を前記閾値と比較して閾値を超えた場合、前記アクセスプラン保持手段に対し、該閾値を超えたアクセスプランを破棄するように指示することを特徴とする問い合わせ最適化処理装置。
【請求項２】
ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化する問い合わせ最適化処理装置において、
ユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力手段と、
それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーと、
各データベースサーバーにそれぞれ対応して設けられ、検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュールと、
前記問い合わせ要求入力手段からの問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュールから得られる見積もりに応じてアクセスプランを生成するアクセスプラン生成手段と、
前記アクセスプラン生成手段が生成したアクセスプランに応じて各データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行手段と、
前記問い合わせ要求入力手段で与えられた問い合わせと、アクセスプラン生成手段で生成されたアクセスプランの履歴を保持し、新たに与えられた問い合わせと意味的に等価な問い合わせが該履歴にあれば対応するアクセスプランを前記アクセスプラン生成手段に渡すアクセスプラン保持手段と、
各データベースサーバーにそれぞれ対応して設けられ、データベースサーバーが管理する表データの内容が変化する操作が行われた時に、前記アクセスプラン保持手段に対し、該当するアクセスプランを破棄するように指示するアクセスプラン破棄手段と、
を備え、
前記アクセスプラン実行手段は、問い合わせ要求を実行するごとにその実行にかかった時間を計測し、
前記アクセスプラン保持手段は、問い合わせの履歴とともに各アクセスプランの実行にかかった時間の最小値を保持し、
前記アクセスプラン破棄手段は、実行時間の最小値に対する割合の閾値が設定され、前記アクセスプランの実行時間と最小値との比が前記閾値を超えた時に、該アクセスプラン、及び同じデータベースサーバーのデータを用いるアクセスプランに対する破棄を指示することを特徴とする問い合わせ最適化処理装置。
【請求項３】
ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化してデータベースサーバーに対する問い合わせを最適化する問い合わせ最適化処理方法において、
問い合わせ要求入力手段がユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力工程と、
ラッパーモジュールが前記問い合わせ要求により、それぞれが１つ以上の表データを管理する１つ以上複数設けられる前記データベースサーバーのそれぞれに対する検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュール処理工程と、
アクセスプラン生成手段が前記問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュール処理工程により得られた見積もりに応じてアクセスプランを生成するアクセスプラン生成工程と、
アクセスプラン実行手段が前記アクセスプラン生成工程で生成されたアクセスプランに応じて前記データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行工程と、
アクセスプラン保持手段が前記問い合わせ要求入力工程により入力された問い合わせ要求と、前記アクセスプラン生成工程で生成されたアクセスプランを履歴として保持し、新たに入力された問い合わせ要求と意味的に等価な問い合わせが該履歴にある場合には対応するアクセスプランを前記アクセスプラン生成工程に渡すアクセスプラン保持工程と、
アクセスプラン破棄手段が前記データベースサーバーが管理する表データの内容の変化を監視し、変化があった時には、前記アクセスプラン保持工程で該当するアクセスプランを破棄するように指示するアクセスプラン破棄工程とを含み、
前記アクセスプラン破棄工程は、
表データの内容が変化する回数の閾値が設定保持され、該表データの内容が変化する回数を検出し、該回数を前記閾値と比較して閾値を超えた場合、前記アクセスプラン保持工程により保持されている該閾値を超えたアクセスプランを破棄するように指示することを特徴とする問い合わせ最適化処理方法。
【請求項４】
ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化してデータベースサーバーに対する問い合わせを最適化する問い合わせ最適化処理方法において、
問い合わせ要求入力手段がユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力工程と、
ラッパーモジュールが前記問い合わせ要求入力工程により入力された問い合わせ要求により、それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーのそれぞれに対する検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュール処理工程と、
アクセスプラン生成手段が前記問い合わせ要求入力工程により入力された問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュール処理工程により得られた見積もりに応じてアクセスプランを生成するアクセスプラン生成工程と、
アクセスプラン実行手段が前記アクセスプラン生成工程で生成されたアクセスプランに応じて前記データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行工程と、
アクセスプラン保持手段が前記問い合わせ要求入力工程により入力された問い合わせ要求と、アクセスプラン生成工程で生成されたアクセスプランを履歴として保持し、新たに入力された問い合わせ要求と意味的に等価な問い合わせが該履歴にある場合には対応するアクセスプランを前記アクセスプラン生成工程に渡すアクセスプラン保持工程と、
アクセスプラン破棄手段が前記データベースサーバーが管理する表データの内容の変化を監視し、変化があった時には、前記アクセスプラン保持工程で該当するアクセスプランを破棄するように指示するアクセスプラン破棄工程とを含み、
前記アクセスプラン実行工程は、問い合わせ要求を実行するごとにその実行にかかった時間を計測し、
前記アクセスプラン保持工程は、問い合わせ要求の履歴とともに保持されている各アクセスプランの実行にかかった時間の最小値を保持し、
前記アクセスプラン破棄工程は、実行時間の最小値に対する割合の閾値が設定され、前記アクセスプランの実行時間と最小値との比が前記閾値を超えた時に、該アクセスプラン、及び同じデータベースサーバーのデータを用いるアクセスプランに対する破棄を指示することを特徴とする問い合わせ最適化処理方法。
【請求項５】
請求項３または４に記載の方法をコンピュータに実行させることを特徴とするプログラム。
【請求項６】
請求項５に記載のプログラムを格納したことを特徴とする記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、ラッパーアーキテクチャを用いた異種データベース統合システムにおける問い合わせ最適化処理を行う問い合わせ最適化処理装置、問い合わせ最適化処理方法、その方法をコンピュータに実行させるプログラムおよびプログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
問い合わせ最適化処理は、リレーショナルデータベースにおいてＳＱＬなどの問い合わせ言語で表現されたデータ操作要求に対して、なるべく少ない時間で回答を行うための処理である。これまでに多数の最適化処理の方法が知られている。その多くはデータ操作要求を実行するためのアクセスプランの候補を複数列挙し、コスト（回答時間）の見積もりが最小になるものを選択するという方法をとっている。このコストの見積もりにはデータ数や値の選択率のような統計情報が用いられる。
【０００３】
最適化処理についての参考文献としては、［１］”Ａｎ  Ｏｖｅｒｖｉｅｗ  ｏｆ  Ｑｕｅｒｙ  Ｏｐｔｉｍｉｚａｔｉｏｎ  ｉｎ  Ｒｅｌａｔｉｏｎａｌ  Ｓｙｓｔｅｍｓ”（Ｓｕｒａｊｉｔ  Ｃｈａｕｄｈｕｒｉ，ＰＯＤＳ’９８，ｐ．３４−４３）がある。
【０００４】
ラッパーアーキテクチャを用いて異種データベースを統合する方法については、特開２０００−１１２９８２号公報「異種データベース統合システム」に開示されている。このシステムでは、１つ以上のデータベースサーバーのそれぞれが管理しているデータを１つ以上の表として管理し、統合されたシステムを１つのリレーショナルデータベースとして見立てる。統合システムに与えられる検索の問い合わせ要求は、各データベースサーバーが管理する表ごとに分解され、それぞれのデータベースサーバーに対応するラッパーモジュールから問い合わせを処理するのにかかる時間的コストおよび結果件数の予測の情報を取得し、その結果に応じて最適なアクセスプランを生成する。
【０００５】
【発明が解決しようとする課題】
しかしながら、異種データベース統合システムにおける問い合わせ処理の最適化にはラッパーモジュールを通したやりとりが必要であり、最適化自体に無視できない時間がかかる場合がある。即ち、以前最適化した問い合わせと同じ問い合わせが要求された時には、以前の結果を再利用することで最適化処理にかかる時間を短縮できる。しかしながら、更新操作などにより以前の最適化結果では得られたアクセスプランがすでに最適な状態ではない可能性もあり、その場合、問い合わせに対するデータベースサーバーの応答時間が長くなる。同時に、不適切なアクセスプランを使用していることを知ることができない、という問題を生じる。
【０００６】
この発明は、上述した従来技術による問題点を解消するため、ラッパーモジュールとのやりとりを行う回数を少なくしつつできるだけ最適なアクセスプランを再利用し、既に最適でない状態にあるアクセスプランの再利用を防止した最適化処理を行うことができる問い合わせ最適化処理装置、方法、及びその方法をコンピュータに実行させるプログラムを提供することを目的とする。
【０００７】
【課題を解決するための手段】
上述した課題を解決し、目的を達成するため、この発明に係る問い合わせ最適化処理装置は、ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化する問い合わせ最適化処理装置において、ユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力手段と、それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーと、各データベースサーバーにそれぞれ対応して設けられ、検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュールと、前記問い合わせ要求入力手段からの問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュールから得られる見積もりに応じてアクセスプランを生成するアクセスプラン生成手段と、前記アクセスプラン生成手段が生成したアクセスプランに応じて各データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行手段と、前記問い合わせ要求入力手段で与えられた問い合わせと、アクセスプラン生成手段で生成されたアクセスプランの履歴を保持し、新たに与えられた問い合わせと意味的に等価な問い合わせが該履歴にあれば対応するアクセスプランを前記アクセスプラン生成手段に渡すアクセスプラン保持手段と、各データベースサーバーにそれぞれ対応して設けられ、データベースサーバーが管理する表データの内容が変化する操作が行われた時に、前記アクセスプラン保持手段に対し、該当するアクセスプランを破棄するように指示するアクセスプラン破棄手段と、を備え、前記各アクセスプラン破棄手段は、表データの内容が変化する回数の閾値が設定保持され、該表データの内容が変化する回数を検出し、該回数を前記閾値と比較して閾値を超えた場合、前記アクセスプラン保持手段に対し、該閾値を超えたアクセスプランを破棄するように指示することを特徴とする。
【０００８】
この発明によれば、アクセスプラン破棄手段に閾値を設定することにより、データベースサーバーが管理するデータの内容が変化した場合であっても、直ちに検索の問い合わせ要求に対する応答にアクセスプランの変更が必要になるほどの著しい影響がない時、不必要にアクセスプランが破棄されることを防ぐことができ、最適化の効率を向上できる。
【０００９】
また、この発明の問い合わせ最適化処理装置は、ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化する問い合わせ最適化処理装置において、ユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力手段と、それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーと、各データベースサーバーにそれぞれ対応して設けられ、検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュールと、前記問い合わせ要求入力手段からの問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュールから得られる見積もりに応じてアクセスプランを生成するアクセスプラン生成手段と、前記アクセスプラン生成手段が生成したアクセスプランに応じて各データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行手段と、前記問い合わせ要求入力手段で与えられた問い合わせと、アクセスプラン生成手段で生成されたアクセスプランの履歴を保持し、新たに与えられた問い合わせと意味的に等価な問い合わせが該履歴にあれば対応するアクセスプランを前記アクセスプラン生成手段に渡すアクセスプラン保持手段と、各データベースサーバーにそれぞれ対応して設けられ、データベースサーバーが管理する表データの内容が変化する操作が行われた時に、前記アクセスプラン保持手段に対し、該当するアクセスプランを破棄するように指示するアクセスプラン破棄手段と、を備え、前記アクセスプラン実行手段は、問い合わせ要求を実行するごとにその実行にかかった時間を計測し、前記アクセスプラン保持手段は、問い合わせの履歴とともに各アクセスプランの実行にかかった時間の最小値を保持し、前記アクセスプラン破棄手段は、実行時間の最小値に対する割合の閾値が設定され、前記アクセスプランの実行時間と最小値との比が前記閾値を超えた時に、該アクセスプラン、及び同じデータベースサーバーのデータを用いるアクセスプランに対する破棄を指示することを特徴とする。
【００１０】
この発明によれば、アクセスプラン破棄手段が監視している情報以外の要因でデータベースサーバーの応答時間に著しい変化があった場合、不適切なアクセスプランを使用したことを知ることができ、不適切なアクセスプランを使用する回数を減らすことができ、最適化の効率を向上できる。
【００１１】
また、この発明の問い合わせ最適化処理方法は、ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化してデータベースサーバーに対する問い合わせを最適化する問い合わせ最適化処理方法において、問い合わせ要求入力手段がユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力工程と、ラッパーモジュールが前記問い合わせ要求により、それぞれが１つ以上の表データを管理する１つ以上複数設けられる前記データベースサーバーのそれぞれに対する検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュール処理工程と、アクセスプラン生成手段が前記問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュール処理工程により得られた見積もりに応じてアクセスプランを生成するアクセスプラン生成工程と、アクセスプラン実行手段が前記アクセスプラン生成工程で生成されたアクセスプランに応じて前記データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行工程と、アクセスプラン保持手段が前記問い合わせ要求入力工程により入力された問い合わせ要求と、前記アクセスプラン生成工程で生成されたアクセスプランを履歴として保持し、新たに入力された問い合わせ要求と意味的に等価な問い合わせが該履歴にある場合には対応するアクセスプランを前記アクセスプラン生成工程に渡すアクセスプラン保持工程と、アクセスプラン破棄手段が前記データベースサーバーが管理する表データの内容の変化を監視し、変化があった時には、前記アクセスプラン保持工程で該当するアクセスプランを破棄するように指示するアクセスプラン破棄工程とを含み、前記アクセスプラン破棄工程は、表データの内容が変化する回数の閾値が設定保持され、該表データの内容が変化する回数を検出し、該回数を前記閾値と比較して閾値を超えた場合、前記アクセスプラン保持工程により保持されている該閾値を超えたアクセスプランを破棄するように指示することを特徴とする。
【００１２】
また、この発明の問い合わせ最適化処理方法は、ラッパーアーキテクチャを用いた異種データベース統合システムに入力される問い合わせ要求の検索を最適化してデータベースサーバーに対する問い合わせを最適化する問い合わせ最適化処理方法において、問い合わせ要求入力手段がユーザーからの問い合わせ要求の入力を受ける問い合わせ要求入力工程と、ラッパーモジュールが前記問い合わせ要求入力工程により入力された問い合わせ要求により、それぞれが１つ以上の表データを管理する１つ以上複数設けられるデータベースサーバーのそれぞれに対する検索の問い合わせ要求を実行するときの時間的コストと結果件数の予測を見積もるラッパーモジュール処理工程と、アクセスプラン生成手段が前記問い合わせ要求入力工程により入力された問い合わせ要求をオペレーターの木構造に変換して、ラッパーモジュール処理工程により得られた見積もりに応じてアクセスプランを生成するアクセスプラン生成工程と、アクセスプラン実行手段が前記アクセスプラン生成工程で生成されたアクセスプランに応じて前記データベースサーバーに対して問い合わせ要求を発行する、又は前記データベースサーバーの代わりに検索処理を実行するアクセスプラン実行工程と、アクセスプラン保持手段が前記問い合わせ要求入力工程により入力された問い合わせ要求と、アクセスプラン生成工程で生成されたアクセスプランを履歴として保持し、新たに入力された問い合わせ要求と意味的に等価な問い合わせが該履歴にある場合には対応するアクセスプランを前記アクセスプラン生成工程に渡すアクセスプラン保持工程と、アクセスプラン破棄手段が前記データベースサーバーが管理する表データの内容の変化を監視し、変化があった時には、前記アクセスプラン保持工程で該当するアクセスプランを破棄するように指示するアクセスプラン破棄工程とを含み、前記アクセスプラン実行工程は、問い合わせ要求を実行するごとにその実行にかかった時間を計測し、前記アクセスプラン保持工程は、問い合わせ要求の履歴とともに保持されている各アクセスプランの実行にかかった時間の最小値を保持し、前記アクセスプラン破棄工程は、実行時間の最小値に対する割合の閾値が設定され、前記アクセスプランの実行時間と最小値との比が前記閾値を超えた時に、該アクセスプラン、及び同じデータベースサーバーのデータを用いるアクセスプランに対する破棄を指示することを特徴とする。
【００１３】
また、この発明に係るコンピュータに実行させるプログラムは、上記方法をコンピュータに実行させることを特徴とする。
【００１４】
また、この発明に係る記録媒体は、上記プログラムを記録したことを特徴とする。
【００１９】
【発明の実施の形態】
以下に添付図面を参照して、この発明に係る問い合わせ最適化処理装置、問い合わせ最適化処理方法、その方法をコンピュータに実行させるプログラムおよびプログラムを記録した記録媒体の好適な実施の形態を詳細に説明する。
【００２０】
（実施の形態１）
図１は、本発明の問い合わせ最適化処理装置のシステム構成を示すブロック図である。問い合わせ最適化処理装置１００には、クライアント（端末）１０１及び複数（図示の例では２つ）のデータベースサーバー１０２（１０２ａ，１０２ｂ）が接続されている。
【００２１】
問い合わせ最適化処理装置１００は、問い合わせ要求入力手段１１１，アクセスプラン生成手段１１２，アクセスプラン保持手段１１３，アクセスプラン実行手段１１４からなる。また、データベースサーバー１０２ａにおけるラッパーモジュール１２１ａ，アクセスプラン破棄手段１２２ａと、データベースサーバー１０２ｂにおけるラッパーモジュール１２１ｂ，アクセスプラン破棄手段１２２ｂを備える。図１において、下位装置であるデータベースサーバー１０２ｂ側に設けられるラッパーモジュール１２１ｂ，アクセスプラン破棄手段１２２ｂと、上位装置（問い合わせ最適化処理装置１００の主要な手段）との接続構成は、データベースサーバー１０２ａ側と同一であり、記載を省略している。
【００２２】
図２は、問い合わせ最適化処理装置１００のハードウェア構成の具体例を示すブロック図である。ユーザーは、クライアント１０１から問い合わせ要求を、例えばＳＱＬ文の形式で入力する。入力された問い合わせ要求は、通信回線（ＬＡＮ等）２０１を通じて問い合わせ最適化処理装置１００を構成するアプリケーションサーバー２０２に送られる。アプリケーションサーバー２０２は、ＣＰＵ２０３，プログラム領域及びデータ領域を有するメモリ２０４，記憶装置（ハードディスク等）２０５を有して構成される。
【００２３】
（アクセスプラン生成手段１１２）
アクセスプラン生成手段１１２では、まず問い合わせ要求を処理できるアクセスプランがアクセスプラン保持手段１１３にあるか否かを調べる。アクセスプラン保持手段１１３にない場合は、以下のようにしてアクセスプランを作成する。まず、問い合わせ要求を関係代数の組合せを表現した木構造に変換する。関係代数に対応したオペレーター（処理）は以下のものである。
【００２４】
Ａｃｃｅｓｓ：データベースサーバー１０２の表データを逐次的に取り出す。
Ｓｅｌｅｃｔ：条件にしたがってデータを絞り込む。
Ｐｒｏｊｅｃｔ：表のタプルを構成する属性の一部を取り出す。
Ｊｏｉｎ：  条件にしたがって２つの表を結合する。
Ｕｎｉｏｎ：  ２つの表の和を作成する。
Ｉｎｔｅｒｓｅｃｔ：  ２つの表の積を作成する。
Ｄｉｆｆｅｒｅｎｃｅ：  ２つの表の差を作成する。
【００２５】
上記のうちＡｃｃｅｓｓは、関係代数の演算子ではないが、データベースサーバー１０２が検索機能を備えていない時に最低限必要な機能である。
【００２６】
（アクセスプラン保持手段１１３）
アクセスプラン保持手段１１３は、問い合わせ要求とアクセスプランを、例えば既知のハッシュマップ構造によりメモリ２０４上に保持する。この場合、ハッシュマップのキーには、例えば問い合わせ要求を表すＳＱＬ文の文字列を用いることができる。アクセスプラン保持手段１１３では、さらにデータベースサーバー１０２ａ，１０２ｂと、そのデータを使用しているアクセスプランのリストを関係づけた配列をメモリ２０４上に保持する。データベースサーバー１０２ａ，１０２ｂを一意に特定するために、例えばデータベースサーバー１０２ａ，１０２ｂに一意に割り当てたシーケンス番号を用いることができる。アクセスプランのリストは前記ハッシュマップ上の位置を示すポインターの配列を用いることができる。
【００２７】
（アクセスプラン実行手段１１４）
アクセスプラン実行手段１１４は、アクセスプラン生成手段１１２により得られたアクセスプランにしたがって検索処理を実行する。
【００２８】
（アクセスプラン破棄手段１２２ａ，１２２ｂ）
アクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）は、データベースサーバー１０２ａ，１０２ｂごとに用意される。アクセスプラン破棄手段１２２ａ，１２２ｂは、ラッパーモジュール１２１（１２１ａ，１２１ｂ）を通した操作に限らず、データベースサーバー１０２（１０２ａ，１０２ｂ）に対してその管理する表データの内容が変化するような操作が行われた時に、アクセスプラン保持手段１１３にそのデータベースサーバー１０２（１０２ａ，１０２ｂ）のデータを用いるアクセスプランを破棄するように指示する。
【００２９】
内容の変更があったことを監視する手段は、データベースサーバー１０２ａ，１０２ｂの実現形態により異なる。例えば、データベースサーバー１０２ａ，１０２ｂがＤＢＭＳ（データベース・マネージメント・システム)である場合は、更新操作が行われたことをもって内容の変更があったとすることができる。また、例えばデータベースサーバー１０２ａ，１０２ｂが単純なファイルであった場合は、一定の間隔でファイルのタイムスタンプを監視するというような形態が考えられる。
【００３０】
アクセスプランを破棄する具体的指示としては、データベースサーバー１０２ａ，１０２ｂのシーケンス番号をアクセスプラン保持手段１１３に伝えることで行われる。アクセスプラン保持手段１１３では与えられたデータベースサーバー１０２ａ，１０２ｂのシーケンス番号によってデータベースサーバー１０２ａ，１０２ｂとアクセスプランのリストを関係づける配列から破棄すべきアクセスプランのリストを取得し、これをハッシュマップから削除する。
【００３１】
次に、図３は、ある問い合わせ要求を表すＳＱＬ文をオペレーターの木構造に変換する例を示す図である。アクセスプラン生成手段１１２は、問い合わせを表す木構造を１つ以上作成し、それぞれの木構造について各データベースサーバー１０２（１０２ａ，１０２ｂ）が管理している表データを使用する部分木を抜き出し、各データベースサーバー１０２ａ，１０２ｂに対応するラッパーモジュール１１１ａ，１１１ｂに見積もりを指示する。ラッパーモジュール１１１ａ，１１１ｂからの返答で部分木をデータベースサーバー１０２ａ，１０２ｂに処理させたときのコストが得られるので、それから計算されるコストが最小のものをアクセスプランとして選択する。
【００３２】
ＳｅｌｅｃｔやＪｏｉｎでラッパーモジュール１２１ａ，１２１ｂが返答したコストよりもアクセスプラン実行手段１１４で肩代わりしたほうがコストが低いと判定される場合は、アクセスプラン実行手段１１４で肩代わりした場合のコストが用いられる。
【００３３】
図３に示す問い合わせ要求は、ある企業内社員データベースに対する具体例である。問い合わせ要求３００は、以下の式（ＳＱＬ文）で示される。
ｓｅｌｅｃｔ社員．名前，部署．名称ｆｒｏｍ社員，部署，社員所属
ｗｈｅｒｅ社員．住所ｌｉｋｅ‘％文京区％’
ａｎｄ社員所属．社員住所＝社員．ＩＤ
ａｎｄ社員所属．部署番号＝部署．ＩＤ
【００３４】
この問い合わせ要求は、“住所で文京区に住んでいる人の社員の名前と、部署情報と部署名（名称）を検索する”というものである。図３に示す木構造は３分木の構造である。下位のノードの一つは、社員情報として、社員ＩＤ，名前，住所が対応付けられた表になっている表３０１（“社員ＩＤ＋名前＋住所”）をオペラントとし、この表３０１から住所に文京区を含むデータを絞り込むＳｅｌｅｃｔ（Ｓｅｌｅｃｔ“住所＝文京区”）をオペレーター３１０とするものである。
【００３５】
そして、この下位ノードは、社員ＩＤが同じであるデータについて表３０１と表３０２とを結合するＪｏｉｎ（Ｊｏｉｎ“社員所属．社員番号＝社員．ＩＤ”）であるオペレーター３１１から分岐している。さらに、これらの下位ノードは、社員所属が同じであるデータについて表３０２と表３０３とを結合するＪｏｉｎ（Ｊｏｉｎ“社員所属．部署番号＝部署．ＩＤ”）であるオペレーター３１２から分岐している。
【００３６】
そして、この例では、データベースサーバー１０２ａが社員情報であるＩＤと名前と住所を対応付けた表３０１を管理し、データベースサーバー１０２ｂが社員所属である社員番号と部署番号を対応付けた表３０２を管理し、さらに他のデータベースサーバー（図１には不図示）が表３０３を管理しているものとする。
【００３７】
図４は、アクセスプランの生成過程を示すフローチャートである。以下、図示の処理内容を説明する。まず、問い合わせ要求入力手段１１１は、ユーザーから入力された問い合わせ要求を受け取る（ステップＳ４０１）。次に、アクセスプラン生成手段１１２は、この問い合わせ要求を処理できるアクセスプランがアクセスプラン保持手段１１３にあるか否かを問い合わせる（ステップＳ４０２）。アクセスプラン保持手段１１３に該当するアクセスプランがある場合には（ステップＳ４０３：Ｙｅｓ）、アクセスプランを生成せず処理を終了する。
【００３８】
問い合わせ要求を処理できるアクセスプランがアクセスプラン保持手段１１３にない場合は（ステップＳ４０３：Ｎｏ）、問い合わせ要求を表すオペレーターの関係代数の組合せを表現した木構造を列挙する（ステップＳ４０４）。次に、木構造をひとつ取り出す（ステップＳ４０５）。
【００３９】
そして、単一のデータベースサーバー（例えばデータベースサーバー１０２ａ）からデータを得られる部分木のうち未処理のものを抜き出す（ステップＳ４０６）。次に、このデータベースサーバー（１０２ａ）に対応するラッパーモジュール１２１ａに見積もりを指示し、部分木をデータベースサーバー１０２ａに処理させたときのコストを得る（ステップＳ４０７）。この後、未処理の部分木があれば（ステップＳ４０８：Ｙｅｓ）、ステップＳ４０６に復帰してこの未処理の部分木に対する処理を行う。上記ステップＳ４０６，ステップＳ４０７の処理は、ステップＳ４０５で列挙された全ての部分木に対して行われる。未処理の部分木がなくなれば（ステップＳ４０８：Ｎｏ）、ステップＳ４０９に移行する。
【００４０】
次に、部分木のコストから木構造全体のコストを計算する（ステップＳ４０９）。そして、アクセスプラン生成手段１１２は、この木構造全体が最小コストであるか判断する（ステップＳ４１０）。最小であれば（ステップＳ４１０：Ｙｅｓ）、現在の木構造をアクセスプランの候補にする（ステップＳ４１１）。最小コストでなければ（ステップＳ４１０：Ｎｏ）、ステップＳ４１１をスキップする。
【００４１】
次に、現在の木構造の他に等価な木構造がまだあるか検索する（ステップＳ４１２）。まだある場合には（ステップＳ４１２：Ｙｅｓ）、ステップＳ４０５以降の処理を再度実行する。一方、現在の木構造の他に等価な木構造がない場合には（ステップＳ４１２：Ｎｏ）、ステップＳ４１１で処理された現在のアクセスプランの候補をアクセスプランとして用いるべくアクセスプラン保持手段１１３（メモリ２０４）に記録し（ステップＳ４１３）、処理を終了する。
【００４２】
上記構成によれば、ある問い合わせ要求から生成されたアクセスプランがアクセスプラン保持手段１１３に格納されている状態において、データベースサーバー１０２ａ，１０２ｂが管理するデータの内容が変化しない限り、前記問い合わせ要求と意味的に等価な問い合わせが要求された時には、新たにアクセスプランを生成することがなく問い合わせを実行することができる。したがって、問い合わせ要求の発生時において、ラッパーモジュールとのやりとりを行う回数を少なくしつつできるだけ最適なアクセスプランを再利用してデータベースサーバー１０２ａ，１０２ｂの応答時間を短時間で行えるようになる。
【００４３】
（実施の形態２）
次に、本発明の問い合わせ最適化処理装置の実施の形態２について説明する。実施の形態２では、実施の形態１で説明したアクセスプラン破棄手段１２２の構成が異なる。
【００４４】
この実施の形態２のアクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）は、メモリ２０４の領域として新たに、表データの内容が変化する回数に、及びこの回数として予め設定した閾値を記憶する領域が新たに加えられる。アクセスプラン破棄手段１２２は、内容の変更がある度にメモリ２０４の領域中の回数の数値を１ずつ加えた後に設定されている閾値と比較する。そして、回数の数値が閾値を超えていたらアクセスプラン保持手段１１３にアクセスプランの破棄を指示した上でメモリ２０４の回数を「０」に変更（リセット）する。
【００４５】
上記構成によれば、データベースサーバー１０２（１０２ａ、１０２ｂ）が管理するデータの内容が変化しても、直ちに検索の問い合わせ要求に対する応答にアクセスプランの変更が必要になるほどの著しい影響があるのではない場合、アクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）に閾値を設定することで不必要にアクセスプランを破棄することを防ぐことができる。
【００４６】
（実施の形態３）
次に、本発明の問い合わせ最適化処理装置の実施の形態３について説明する。実施の形態３では、実施の形態１で説明したアクセスプラン保持手段１１３，アクセスプラン実行手段１１４，アクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）の構成が異なる。
【００４７】
実施の形態３のアクセスプラン実行手段１１４は、実行の開始時と終了時に時刻カウンターの値を取得し、その値の差から実行時間を求める。この実行時間をアクセスプラン保持手段１１３に伝える。図２に示す汎用のコンピューターにおいては、タイマ（図示略）を用いて時刻カウンターの値を容易に得ることができる。
【００４８】
アクセスプラン保持手段１１３は、メモリ２０４上のハッシュマップに保持される値に、アクセスプランのほかに最小実行時間を記録する領域が加えられる。アクセスプラン実行手段１１４から実行時間を伝えられたらハッシュマップから最小実行時間を取得し、実行時間と最小実行時間をアクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）に伝える。アクセスプラン破棄手段１２２からアクセスプランを破棄すべきであると返答された場合は、アクセスプラン保持手段１１３のハッシュマップから対象のアクセスプランを削除する。
【００４９】
アクセスプラン破棄手段１２２は、実施の形態１で説明した機能に加えて、メモリ２０４上で閾値を保持するメモリ領域が加えられてなる。アクセスプラン破棄手段１２２は、アクセスプラン保持手段１１３から与えられた実行時間と最小実行時間の値の比を計算し、計算した比が閾値を超えていた場合は、アクセスプラン保持手段１１３にアクセスプランを破棄すべきであることを示す値を返答として渡す。
【００５０】
上記構成によれば、アクセスプラン破棄手段１２２が監視している情報以外の要因でデータベースサーバー１０２（１０２ａ，１０２ｂ）の応答時間に著しい変化があった場合、不適切なアクセスプランを使用したことを知ることができ、不適切なアクセスプランを使用する回数を減らすことができるようになる。
【００５１】
（実施の形態４）
次に、本発明の問い合わせ最適化処理装置の実施の形態４について説明する。実施の形態４では、実施の形態１で説明したアクセスプラン保持手段１１３，アクセスプラン破棄手段１２２（１２２ａ，１２２ｂ）の構成が異なる。
【００５２】
実施の形態４におけるアクセスプラン保持手段１１３は、データベースサーバー１０２（１０２ａ，１０２ｂ）とアクセスプランのリストを関係づける配列の代わりに、表とアクセスプランのリストを関係づける配列を加える。表を一意に特定するためには、例えば表にシーケンス番号を割り当てる構成とする。また、アクセスプラン破棄手段１２２ａ，１２２ｂは、表単位で内容の変化を監視し、内容が変化していたらその表のシーケンス番号をアクセスプラン保持手段１１３に伝える。アクセスプラン保持手段１１３は、表のシーケンス番号から破棄すべきアクセスプランのリストを取得し、これをメモリ２０４上のハッシュマップから削除する。
【００５３】
上記構成によれば、データベースサーバーに対する内容の変化を表単位で観察できるようなデータベースサーバーについては表単位でアクセスプランの破棄を行うことで内容が変化していない表しか使っていないのに同じデータベースサーバーに属する別の表が変更されているために再利用可能なアクセスプランを破棄することを防ぐことができる。
【００５４】
なお、本実施の形態で説明した問い合わせ最適化処理に係る方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フロッピー（Ｒ）ディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布することが可能な伝送媒体であってもよい。
【００５５】
【発明の効果】
以上説明したように、この発明によれば、ある問い合わせ要求から生成されたアクセスプランがアクセスプラン保持手段に格納されているとき、データベースサーバーが管理するデータの内容が変化しない限り、前記問い合わせ要求と意味的に等価な問い合わせが要求された場合には、新たにアクセスプランを生成することなく問い合わせを実行することができるようになる。これにより、ラッパーモジュールとのやりとりを行う回数を少なくしつつできるだけ最適なアクセスプランを再利用でき、処理に係る時間の短縮化を図ることができるという。そして、データベースサーバーが管理するデータの内容が変化した場合であっても、直ちに検索の問い合わせ要求に対する応答にアクセスプランの変更が必要になるほどの著しい影響がない時、不必要にアクセスプランが破棄されることを防ぐことができ、最適化の効率を向上できるという効果を奏する。
【００５６】
また、アクセスプラン破棄手段が監視している情報以外の要因でデータベースサーバーの応答時間に著しい変化があった場合、不適切なアクセスプランを使用したことを知ることができ、不適切なアクセスプランを使用する回数を減らすことができ、最適化の効率を向上できるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の問い合わせ最適化処理装置のシステム構成を示すブロック図である。
【図２】問い合わせ最適化処理装置のハードウェア構成の具体例を示すブロック図である。
【図３】ある問い合わせ要求を表すＳＱＬ文をオペレーターの木構造に変換する例を示す図である。
【図４】アクセスプランの生成過程を示すフローチャートである。
【符号の説明】
１００  問い合わせ最適化処理装置
１０１  クライアント（端末）
１０２（１０２ａ，１０２ｂ）  データベースサーバー
１１１  問い合わせ要求入力手段
１１２  アクセスプラン生成手段
１１３  アクセスプラン保持手段
１１４  アクセスプラン実行手段
１２１（１２１ａ，１２１ｂ）  ラッパーモジュール
１２２（１２２ａ，１２２ｂ）  アクセスプラン破棄手段
２０１  通信回線（ＬＡＮ）
２０２  アプリケーションサーバー
２０３  ＣＰＵ
２０４  メモリ
２０５  記憶装置（ハードディスク）
３００  問い合わせ要求
３０１，３０２，３０３  表
３１０，３１１，３１２  オペレーター
【図１】
0004031947.tif 000002
【図２】
0004031947.tif 000003
【図３】
0004031947.tif 000004
【図４】
0004031947.tif 000005