(57)【特許請求の範囲】
【請求項１】
複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理装置において、
前記各データベースシステムのデータに関連付けたエントリ番号を管理する物理テーブル情報と、前記ユーザシステムからのアクセス対象となる論理テーブル情報とから、前記物理テーブル情報と前記論理テーブル情報に対して各エントリ番号を紐付けて管理するとともに、前記データベースシステムで管理される各テーブルに対する定義情報を保有する一方、
エントリ番号とデータベースの種別とデータベースにおけるテーブル種別を対応付けて管理する物理テーブル情報、前記エントリ番号に紐づけたリンク項目とテーブル種別を対応付けて管理する論理テーブル情報、各テーブルが他のテーブルに対する一意性制約の有無が定義されるテーブル定義情報を参照して、前記ユーザシステムから入力される問合せ文からクエリグラフを生成し、前記クエリグラフは、問合せ文のテーブルをグラフノードとし、問合せ文のテーブル同士を紐づけるリレーションをグラフノード間のエッジとし、グラフノード間の関係について物理データベースが異なるエッジを削除し、テーブルを紐づけるためのリレーションがどちらも一意性制約のない項目の場合に多対多の関係と判断して多対多となるエッジを削除することで前記クエリグラフに対して分解処理を行って対応する副問合せ文を決める問合せ文解析部と、
前記問合せ文解析部から呼び出され、前記副問合せ文の結果サイズを推定する結果サイズ推定部と、
前記問合せ文解析部から呼び出され、前記副問合せ文を生成する問合せ文生成部と、
前記問合せ文解析部の出力結果を基に実行計画を生成する実行計画生成部と、
前記実行計画生成部が出力する実行計画を基に前記データベースシステムへの問い合わせを実行する実行制御部と、
を備えたことを特徴とする仮想データベースシステム管理装置。
【請求項２】
前記問合せ文解析部は、
前記ユーザシステムからの問合せ文に対して、前記クエリグラフの分解処理を行って各グラフに対応する副問合せ文を作成し、前記各副問合せ文から推定される結果サイズについて、予め決められた基準により「十分大きい」及び「ほぼ等しい」で区別される順序で整列させる機能を備え、前記結果サイズの整列結果に「十分大きい」が１つ以上存在する場合に、もっとも大きい副問合せ文に対し、他の副問合せ文の結果との結合により、結果サイズを小さくできると推定された副問合せ文を１つ選択し、選択された分解グラフの副問合せ文の実行結果にリンクするテーブルを前記論理テーブル情報に追加する機能を備え、
前記実行制御部は、
前記問合せ文解析部が決定した実行順序に基づいて前記副問合せ文の実行結果となるテーブルを前記物理テーブル情報に追加するデータ再配置を行う機能を備えた
請求項１に記載の仮想データベースシステム管理装置。
【請求項３】
前記「十分大きい」は、前記結果サイズの相違が二桁以上である場合であり、
前記「ほぼ等しい」は、前記結果サイズの相違が一桁以下である場合である
請求項２に記載の仮想データベースシステム管理装置。
【請求項４】
複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理方法において、
前記各データベースシステムのデータに関連付けたエントリ番号を管理する物理テーブル情報と、前記ユーザシステムからのアクセス対象となる論理テーブル情報とから、前記物理テーブル情報と前記論理テーブル情報に対して各エントリ番号を紐付けて管理するとともに、前記データベースシステムで管理される各テーブルに対する定義情報を保有する一方、
エントリ番号とデータベースの種別とデータベースにおけるテーブル種別を対応付けて管理する物理テーブル情報、前記エントリ番号に紐づけたリンク項目とテーブル種別を対応付けて管理する論理テーブル情報、各テーブルが他のテーブルに対する一意性制約の有無が定義されるテーブル定義情報を参照して、前記ユーザシステムから入力される問合せ文からクエリグラフを生成し、前記クエリグラフは、問合せ文のテーブルをグラフノードとし、問合せ文のテーブル同士を紐づけるリレーションをグラフノード間のエッジとし、グラフノード間の関係について物理データベースが異なるエッジを削除し、テーブルを紐づけるためのリレーションがどちらも一意性制約のない項目の場合に多対多の関係と判断して多対多となるエッジを削除することで前記クエリグラフに対して分解処理を行って対応する副問合せ文を生成する手順と、
前記副問合せ文の結果サイズを推定する手順と、
前記副問合せ文に対して、前記推定された結果サイズに基づいて副問合せ文の実行順序及び実行結果のデータ配置を決定する手順と、
前記決定した実行順序に基づいて副問合せ文を実行する手順と
を含むことを特徴とする仮想データベースシステム管理方法。
【請求項５】
請求項４に記載の各手順は、前記クエリグラフに対して分解処理を行ったグラフ（要素）が一つになるまで繰り返して行う仮想データベースシステム管理方法。
【請求項６】
請求項１に記載の各部をコンピュータ上に構築し、
グラフノード間の関係について、物理データベースが異なるエッジの削除、及び、前記テーブル定義情報を参照して多対多となるエッジの削除により前記クエリグラフが分解され、分解されたクエリグラフに対応する副問合せ文を生成する機能が行われることで前記クエリグラフに対する分解処理を行わせる
仮想データベースシステム管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のデータベースシステムが存在する環境において、ユーザからの問合せ文に対して、各データベースシステムで実行される副問合せ文が生成され、各副問合せ文の結果を踏まえて問合せ文の残りの処理を実行する場合に、処理の効率化を図る仮想データベースシステム管理装置、管理方法及び管理プログラムに関する。
【背景技術】
【０００２】
データ仮想化システム（又はマルチデータベースシステム）は、例えば特許文献１〜４に示されるように、インタフェースやデータ管理方式が異なる複数のデータベースシステムを仮想的に一つのデータベースシステムに見せるために、各データベースシステムが持つデータを論理的に統合して管理し、与えられた問合せ文に対応するデータベースシステムに副問合せ文を出力し、各データベースシステムで実行された副問合せ文の処理結果を中央に収集し、仮想スキーマ（実際の物理テーブルをユーザに提供する論理テーブルに変換する処理を定義したもの）に従って一つに統合して結果を出力するシステムとなっている。
【０００３】
これらのデータ仮想化システムにおいては、基本的に複数のデータベースシステムと接続し、複数のデータベースを物理データベースモデルとして管理し、一方、論理データベースモデルを作成して物理データベースモデルと紐付けることによって、複数の物理データベースモデルを１つの論理データベースモデルとして扱い、論理データベースモデルに対する問合せ文の実行を可能としている。
【０００４】
上述した仮想データベースシステムにおいては、ユーザから与えられた問合せ文に対して、仮想データベースシステムに接続された各データベースシステムにおいて実行可能な副問合せ文が生成・発行され、副問合せ文の処理結果を仮想データベースシステムが受け取り、さらに問合せ文の残りの処理を実行してユーザへ結果を返す。
しかしながら、問合せ文の残りの処理を実行するに際し、各データベースシステムにて実行する副問合せ文の結果によっては、仮想データベースシステムで処理すべきデータ量が膨大となり処理時間が長くなる、又は、リソース不足により処理を完了できずに異常終了することが起こり得るという問題があった。
【０００５】
そこで本発明者らは、特許文献５に示すように、複数のデータベースシステムが存在する仮想データベースシステム管理装置の環境下において、問合せ文から各データベースシステムに対する副問合せ文を生成する場合に、データ再配置とそれに伴う問合せ文変換により処理の効率化を実現する仮想データベースシステム管理装置を提案するに至った。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平０９−０９１３０９号公報
【特許文献２】特開平１０−３０７７４３号公報
【特許文献３】特表２０１３−５０８８５７号公報
【特許文献４】特願２０１４−０５７０８０
【特許文献５】特願２０１４−２２６０５０
【発明の概要】
【発明が解決しようとする課題】
【０００７】
この仮想データベースシステム管理装置による場合、ユーザシステムが仮想データベースシステムに問合せ文を入力すると、仮想データベースシステムは、各データベースシステムに対応する副問合せ文を生成する。
そのため、仮想データベースシステムで生成される副問合せ文は、各データベースシステムと１対１に対応するため、直積を含む副問合せ文となる可能性があった。もし、直積を含む副問合せ文となった場合には、処理結果が膨大となり、処理時間が長くなることで、システムがリソース不足を引き起こし、異常終了を引き起こすという問題があった。
【０００８】
本発明は上記実情に鑑みて提案されたものであり、仮想データベースシステムにおいて副問合せ文を生成する場合に、分解処理を施したクエリグラフを用いることで、副問合せ文の生成単位を細分化し、直積の発生を防ぐことで処理の効率化を実現する仮想データベースシステム管理装置、仮想データベースシステム管理方法及び仮想データベースシステム管理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記目的を達成するため本発明は、仮想データベースシステムにおいて、ユーザから入力された問合せ文からクエリグラフを生成し、非効率となる関係（複数存在する各データベースシステム間を跨ぐ関係や、多対多の関係）を基準にクエリグラフを分解し、分解されたクエリグラフに対応する副問合せ文を生成するように処理することにより、仮想データベースシステム管理装置の問合せ処理を効率化する。
【００１０】
すなわち、請求項１は、複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理装置において、前記各データベースシステムのデータに関連付けたエントリ番号を管理する物理テーブル情報と、前記ユーザシステムからのアクセス対象となる論理テーブル情報とから、前記物理テーブル情報と前記論理テーブル情報に対して各エントリ番号を紐付けて管理するとともに、前記データベースシステムで管理される各テーブルに対する定義情報を保有する一方、次の構成を備えたことを特徴としている。
問合せ文解析部。この問合せ文解析部は、エントリ番号とデータベースの種別とデータベースにおけるテーブル種別を対応付けて管理する物理テーブル情報、前記エントリ番号に紐づけたリンク項目とテーブル種別を対応付けて管理する論理テーブル情報、各テーブルが他のテーブルに対する一意性制約の有無が定義されるテーブル定義情報を参照して、前記ユーザシステムから入力される問合せ文からクエリグラフを生成し、前記クエリグラフは、問合せ文のテーブルをグラフノードとし、問合せ文のテーブル同士を紐づけるリレーションをグラフノード間のエッジとし、グラフノード間の関係について物理データベースが異なるエッジを削除し、テーブルを紐づけるためのリレーションがどちらも一意性制約のない項目の場合に多対多の関係と判断して多対多となるエッジを削除することで前記クエリグラフに対して分解処理を行って対応する副問合せ文を決める。
結果サイズ推定部。この結果サイズ推定部は、前記問合せ文解析部から呼び出され、前記副問合せ文の結果サイズを推定する。
問合せ文生成部。この実行計画生成部は、前記問合せ文解析部から呼び出され、前記副問合せ文を生成する。
実行計画生成部。この実行計画生成部は、前記問合せ文解析部の出力結果を基に実行計画を生成する。
実行制御部。実行計画生成部は、前記実行計画生成部が出力する実行計画を基に前記データベースシステムへの問い合わせを実行する。
【００１３】
請求項２は、請求項１の仮想データベースシステム管理装置において、
前記問合せ文解析部は、
前記ユーザシステムからの問合せ文に対して、前記クエリグラフの分解処理を行って各グラフに対応する副問合せ文を作成し、前記各副問合せ文から推定される結果サイズについて、予め決められた基準により「十分大きい」及び「ほぼ等しい」で区別される順序で整列させる機能を備え、
前記結果サイズの整列結果に「十分大きい」が１つ以上存在する場合に、もっとも大きい副問合せ文に対し、他の副問合せ文の結果との結合により、結果サイズを小さくできると推定された副問合せ文を１つ選択し、選択された分解グラフの副問合せ文の実行結果にリンクするテーブルを前記論理テーブル情報に追加する機能を備え、
前記実行制御部は、
前記問合せ文解析部が決定した実行順序に基づいて前記副問合せ文の実行結果となるテーブルを前記物理テーブル情報に追加するデータ再配置を行う機能を備えることを特徴としている。
【００１４】
請求項３は、請求項２の仮想データベースシステム管理装置において、
前記「十分大きい」は、前記結果サイズの相違が二桁以上である場合であり、
前記「ほぼ等しい」は、前記結果サイズの相違が一桁以下である場合である
ことを特徴としている。
【００１５】
請求項４は、複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理方法において、
前記各データベースシステムのデータに関連付けたエントリ番号を管理する物理テーブル情報と、前記ユーザシステムからのアクセス対象となる論理テーブル情報とから、前記物理テーブル情報と前記論理テーブル情報に対して各エントリ番号を紐付けて管理するとともに、前記データベースシステムで管理される各テーブルに対する定義情報を保有する一方、
エントリ番号とデータベースの種別とデータベースにおけるテーブル種別を対応付けて管理する物理テーブル情報、前記エントリ番号に紐づけたリンク項目とテーブル種別を対応付けて管理する論理テーブル情報、各テーブルが他のテーブルに対する一意性制約の有無が定義されるテーブル定義情報を参照して、前記ユーザシステムから入力される問合せ文からクエリグラフを生成し、前記クエリグラフは、問合せ文のテーブルをグラフノードとし、問合せ文のテーブル同士を紐づけるリレーションをグラフノード間のエッジとし、グラフノード間の関係について物理データベースが異なるエッジを削除し、テーブルを紐づけるためのリレーションがどちらも一意性制約のない項目の場合に多対多の関係と判断して多対多となるエッジを削除することで前記クエリグラフに対して分解処理を行って対応する副問合せ文を生成する手順と、
前記副問合せ文の結果サイズを推定する手順と、
前記副問合せ文に対して、前記推定された結果サイズに基づいて副問合せ文の実行順序及び実行結果のデータ配置を決定する手順と、
前記決定した実行順序に基づいて副問合せ文を実行する手順と
を含むことを特徴としている。
【００１６】
請求項５は、仮想データベースシステム管理方法において、
請求項４に記載の各手順は、前記クエリグラフに対して分解処理を行ったグラフ（要素）が一つになるまで繰り返して行うことを特徴としている。
【００１７】
請求項６は、請求項１に記載の各部をコンピュータ上に構築する仮想データベースシステム管理プログラムであり、
グラフノード間の関係について、物理データベースが異なるエッジの削除、及び、前記テーブル定義情報を参照して多対多となるエッジの削除により前記クエリグラフが分解され、分解されたクエリグラフに対応する副問合せ文を生成する機能が行われることで前記クエリグラフに対する分解処理を行わせることを特徴としている。
【発明の効果】
【００１８】
本発明によれば、複数のデータベースシステムが存在する環境下の仮想データベースシステム管理装置において、問合せ文から各データベースシステムに対する副問合せ文を生成するに際し、問合せ文からから生成されるクエリグラフに対して、グラフノード間の関係について、物理データベースが異なるエッジや、多対多となるエッジを削除して分解処理を行って各副問合せ文を作成して実行計画を生成する。
そのため、問合せ文から副問合せ文を生成するに際し、直積による中間結果の肥大化を避けた副問合せ文を生成するため、仮想データベースシステムにおける問合せ文の処理効率を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の仮想データベースシステム管理装置の構成を示すブロック図である。
【図２】問合せ文解析部における処理手順を示すフローチャート図である。
【図３】問合せ文Ｑの例である。
【図４】論理テーブル情報、物理テーブル情報、テーブル定義情報が表示された仮想データベースシステム構成図である。
【図５】問合せ文から生成したクエリグラフの例である。
【図６】分解後のクエリグラフの例である。
【図７】副問合せ文の例である。
【図８】接続後のクエリグラフの例である。
【図９】データ保持状況（ＴＢＬ＿Ｑ３追加時）が表示された仮想データベースシステム構成図である。
【図１０】副問合せ文（ループ２回目）の例である。
【図１１】接続後（ループ２回目）のクエリグラフの例である。
【図１２】データ保持状況（ＴＢＬ＿Ｑ２追加時）が表示された仮想データベースシステム構成図である。
【図１３】最後に得られる副問合せ文の例である。
【図１４】書き換え後の副問合せ文の例である。
【図１５】データ保持状況（ＴＢＬ＿Ｑ１追加時）が表示された仮想データベースシステム構成図である。
【発明を実施するための形態】
【００２０】
本発明の仮想データベースシステム管理装置の実施形態の一例について、図面を参照して説明する。
仮想データベースシステムは、同一データを保有する複数のデータベースシステムが存在する環境において、ユーザの問合せ内容に応じてデータベースシステムを選択して問合せ内容を実行可能とするシステムであり、図１に示すように、ユーザが問合せ文の投稿を行うユーザシステム１と、仮想データシステム管理装置２と、仮想データシステム管理装置２が利用する１つ以上のデータベースシステム３から構成されている。ユーザシステム１、仮想データシステム管理装置２及びデータベースシステム３は、ネットワークを介して接続されている。仮想データシステム管理装置２は、仮想データベースシステム管理プログラムが格納された記録媒体やインターネットを介してソフトウエアのダウンロードによりインストールすることで、コンピュータ上に構築されている。
【００２１】
仮想データベースシステム管理装置が構築されるコンピュータは、オペレーティングシステム（ＯＳ）を含む基本プログラムや各種の基本デバイスが記憶されたＲＯＭと、各種のプログラムやデータが記憶されるハードディスクドライブ装置（ＨＤＤ）と、ＣＤ−ＲＯＭやＤＶＤ等の記憶媒体からプログラムやデータを読み出すメディアドライブ装置と、プログラムを実行するＣＰＵと、このＣＰＵにワークエリアを提供するＲＡＭと、入出力インターフェース（Ｉ／Ｆ）を介して接続されたディスプレイ、キーボードおよびマウス等のポインティングデバイスと、外部装置と通信するパラレル／シリアルＩ／Ｆとを主要部分とする一般的な構成を備えている。
本実施形態の仮想データベースシステム管理装置２では、仮想データベースシステム管理プログラムがシリアル／パラレルＩ／Ｆから入力、またはメディアドライブ装置で読み取られてＨＤＤに予め記憶される。仮想データベースシステム管理プログラムは記憶媒体に記憶され、メディアドライブ装置で読み取られてＨＤＤにインストールされる。
【００２２】
コンピュータ上に構築された仮想データベースシステム管理装置２は、複数のデータベースシステム３が存在する環境において、ユーザからのアクセス対象となる論理データベース情報（データベース、テーブル）を定義し、それらに対し、各データベースシステムにおける１つあるいは複数のデータベースマネジメントシステム、データベース、テーブルの組を割り当てる。
【００２３】
ユーザシステム１は、仮想データベースシステム管理装置２が提供する統合データモデルを利用した問合せ文を投稿することで、透過的に複数のデータベースシステム３に対する問合せ文の処理結果を取得する。
【００２４】
データベースシステム３は、実際にデータを保管するデータベース３１と、データに対する処理を提供するデータベースマネジメントシステム３２からなり、データベースマネジメントシステム３２が持つインタフェース経由でデータベース３１上のデータに対する処理を提供する。
【００２５】
仮想データベースシステム管理装置２は、複数のデータベースシステム３と接続されるデータベースインタフェース部２１と、データベースインタフェース部２１を介して各データベースシステム３の情報を取得し管理するデータベース管理部２２と、ユーザシステム１との入出力を行うユーザインタフェース部２３と、ユーザシステム１からの問合せ文の解析を行う問合せ入力解析部２４と、問合せ文から各データベースシステム３への副問合せ文の生成を行う問合せ文生成部２５と、副問合せ文の結果サイズを推定する結果サイズ推定部２６と、一連の副問合せ文の実行計画を生成する実行計画生成部２７と、副問合せ文を実行する実行制御部２８と、を備えて構成されている。
【００２６】
ユーザインタフェース部２３は、ユーザシステム１からの問合せ文を受け付け、問合せ文解析部２４へ出力する。
【００２７】
データベース管理部２２は、データベース３１に関連付けたエントリ番号を管理する物理テーブル情報と、ユーザシステム１からのアクセス対象となる論理データベースを定義し、物理テーブルのデータに対して、対応する各エントリ番号を紐付けて管理する論理テーブル情報とを格納するテーブル情報データベース２２１と、データベース３１で管理されるテーブルに対する定義情報を格納するテーブル定義情報データベース２２２とを備えることで、各データベースシステム３の情報を管理している。
【００２８】
問合せ文解析部２４は、ユーザインタフェース部２３を経由して入力される問合せ文の構文を解析し、解析結果を実行計画生成部２７へ出力する。また、問合せ文分解析部２４は、問合せ文の構文解析に際して、データベース管理部２２に格納されたデータベースシステム３の論理テーブル情報、物理テーブル情報、テーブル定義情報を参照し、適切な副問合せ文とデータ再配置を決定する。適切な副問合せ文とは、問合せ文に対して分解処理を施したクエリグラフの要素（グラフ）単位の副問合せ文を意味する。クエリグラフの要素（グラフ）単位の副問合せ文とすることで、直積を含む副問合せ文となることを防止できる。
適切な副問合せ文の算出及びデータ再配置の決定に関する問合せ文解析部２４における処理については後述する。
【００２９】
問合せ文生成部２５は、問合せ文解析部２４から呼び出され、問合せ文に対して分解処理を施したクエリグラフの要素（グラフ）単位の副問合せ文の生成、及び、副問合せ文によるデータ再配置に伴う問合せ文の変換を行う。
結果サイズ推定部２６は、問合せ文解析部２４から呼び出され、与えられた副問合せ文を実行する場合の結果サイズを推定する。
実行計画生成部２７は、問合せ文解析部２４の出力結果を基に、決定された一連の問合せ文（副問合せ文と変換した問合せ文）の実行計画を生成する。
【００３０】
実行制御部２８は、実行計画生成部２７にて生成された実行計画を実行し、データベースインタフェース部２１を介して副問合せ文を実行し、実行結果についてユーザインタフェース部２３を介してユーザシステム１へ出力する。
【００３１】
次に、仮想データベースシステム管理装置２において、ユーザインタフェース部２３を介してユーザシステム１から入力された問合せ文に対する問合せ文解析部２４での詳細処理（仮想データベースシステム管理方法）について、図２のフローチャートを参照して説明する。
ユーザシステム１は、仮想データベースシステム管理装置２のユーザインタフェース部２３へ問合せ文Ｑを入力する。仮想データベースシステム管理装置２の問合せ文解析部２４は、ユーザインタフェース部２１から問合せ文が入力されると、図２に示す処理フローを実行する。
以下、図３に示したＴＰＣ−Ｈベンチマークの問合せ文Ｑ５（ＴＰＣ−Ｈベンチマーク２２種のうちの一つ）を例として、問合せ文解析部２４における処理手順について説明する。
【００３２】
図１に対して、論理テーブル情報と物理テーブル情報とを紐づける対応関係、及び、テーブル定義情報が明示された仮想データベースシステムの構成図を図４に示す。
仮想データベースシステム管理装置２に対して２つのデータベース３１（ＤＢ１及びＤＢ２）が接続され、データベースＤＢ１にはテーブルlineitemが配置され、データベースＤＢ２にはテーブルcustomer，orders，supplier，nation，regionが配置されているものとする。
そして、テーブル情報データベース２２１には、紐付けを行うためのエントリ番号（Ｐ１〜Ｐ６）、データベース３１の種別（ＤＢ１又はＤＢ２）、データベース３１におけるテーブルの種別（lineitem、customer，orders，supplier，nation，region）を対応づけた物理テーブル情報と、ユーザシステム１からアクセス対象となる論理テーブル情報とが管理されている。論理テーブル情報では、テーブル種別（lineitem、customer，orders，supplier，nation，region）に対して、対応する各エントリ番号を紐付けたリンク項目（Ｐ１〜Ｐ６）が設定されることで、保存先のデータベース３１（データベースＤＢ１又はデータベースＤＢ２）を対応づけている。
【００３３】
テーブル定義情報データベース２２２としては、各テーブル種別（lineitem、customer，orders，supplier，nation，region）に対する定義情報が保存されている。例えば、テーブルcustomerに対して、「C_CUSTKEY INTEGER NOT NULL unique」、「C_NATIONKEY INTEGER NOT NULL」等の複数個の定義情報が保存されている。ここで、定義情報に「unique」又は「primary key」等が存在する場合、他のテーブルに対して一意性制約があることを意味し、「unique」及び「primary key」等のない場合は、一意性制約がなく複数のテーブルと接続可能なテーブルであることを意味している。
【００３４】
先ず、問合せ文解析部２４へ問合せ文が入力されると、問合わせ文のデータ入手元となるcustomer, orders, lineitem, supplier, nation, regionに対して、図５のようなクエリグラフが生成される（ステップ１０１）。グラフノードは、問合せ文のテーブルに対応し、グラフノード間のエッジは、問合せ文のテーブル同士を紐づけるリレーションで構成される。
すなわち、図３のfrom以下のデータ列から、customer, orders, lineitem, supplier, nation, regionがグラフノード（問合せ文のテーブルに対応）となり、where以下のデータから、customerとorders、lineitemとorders、、lineitemと supplier、customerとsupplier、supplierと nation、nationとregionが紐づけられる。また、図３のwhere以下のデータ列から、regionとordersのテーブルにおいては、データの範囲が指定される。
【００３５】
次に、生成したクエリグラフ（図５）に対して、分解処理をする（ステップ１０２）。分解処理に際しては、先ず、テーブル情報データベース２２１の論理テーブル情報及び物理テーブル情報を参照し、物理的なテーブル配置先を確認する。グラフノード間の関係について、物理データベースが異なるエッジを削除し、クエリグラフを分解する。図５のクエリグラフでは、lineitem がデータベースＤＢ１に格納され、他のグラフノード（テーブル）がデータベースＤＢ２に格納されているので、lineitemとorders間、lineitemとsupplier間が分解点となる。すなわち、lineitemとorders、lineitemとsupplierでは、物理データベースが異なるので、エッジを削除してエリグラフを分解する。
【００３６】
また、テーブル定義情報データベース２２２のテーブル定義情報を参照し、多対多となるエッジを削除し、同様にクエリグラフを分解する。多対多の関係とは、テーブルを紐づけるためのリレーションが、どちらも一意性制約のない項目の場合を指す。
例えば、customer−orders のリレーションである c_custkey = o_custkey は、テーブル定義情報（図４）によると、c_custkey に unique が含まれいるので、一意性制約があるのでcustomer−orders間では分解しない。
一方、customer−supplier のリレーションである c_nationkey = s_nationkey は、どちらの項目も、unique などの一意性制約を確認できないため、多対多と判断する。この操作により、customerとsupplier 間を分解点としてエッジを削除してクエリグラフを分解する。
【００３７】
上記処理による分解後のクエリグラフＧ１〜Ｇ３を、図６に示す。この分解されたクエリグラフに対応する副問合せ文は、直積などの中間結果サイズが膨大になる副問合せ文が排除されるので、仮想データベースシステム管理装置において効率的な問合せ処理が可能となる。
【００３８】
続いて、分解されたクエリグラフを用いて、問合せ文Ｑに対する副問合せ文の結果再配置を考慮した実行順序が組み立てられる。
問合せ文Ｑに対して分解されたクエリグラフの分解グラフリストを｛Ｇｉ｝とし、問合せ文リストを｛φ｝とする（ステップ１０３）。分解グラフリスト｛Ｇｉ｝は、前処理のステップ１０２で得られた｛Ｇ１、Ｇ２、Ｇ３｝である。問合せ文リスト｛φ｝は、当初、空集合となっている。問合せ文Ｑは、ユーザシステム１から入力された問合せ文である。
【００３９】
先ず、分解グラフリスト｛Ｇｉ｝の要素数ｉが１より大きいか否かを判断する（ステップ１０４）。
図３の問合せ文（ＴＰＣＨ−Ｑ５）の場合、対応する分解グラフリスト｛Ｇｉ｝の要素数は「３」であり「２」つ以上となる（要素数ｉが１より大きい）ので、分解グラフリスト｛Ｇｉ｝の各要素Ｇｉに対応する副問合せ文Ｑｉを生成する（ステップ１０５）。
要素（グラフ）に対応する副問合せ文とは、問合せ文Ｑを各グラフのノードに含まれるテーブルのみで問合せ文を書き表すことである。各要素Ｇｉに対応して生成される副問合せ文Ｑは、図７のようになる。図６における分解グラフリストＧ１、Ｇ２、Ｇ３は、それぞれ副問合せ文Ｑ１、Ｑ２、Ｑ３に対応している。
【００４０】
次に、生成された各副問合せ文｛Ｑｉ｝について、結果サイズ推定部２６より出力結果サイズ｛Ｓｉｚｅ（Ｑｉ）｝を推定し、順序整列する（ステップ１０６）。出力結果サイズはオーダーが分かればよく、厳密である必要はない。サイズによる順序整列は、出力結果サイズ｛Ｑｉ｝の要素について、「≫（十分大きい）」、「≒（ほぼ等しい）」により行われる。したがって、Ａ≫Ｂは、「ＡはＢより十分大きい」を意味し、Ａ≒Ｂは、「ＡはＢとほぼ等しい（Ａ≫ＢでもＢ≫Ａでもない）」を意味する。
なお、「≫（十分大きい）」及び「≒（ほぼ等しい）」は、予め決められた基準により分類される。例えば、「≫（十分大きい）」は、結果サイズがいずれかが１ＭＢ以上で、２桁程度以上の違いを意味する。例えば、一方の結果サイズが１ＭＢの時、他方の結果サイズが１００ＭＢである場合は、「十分大きい」と判断する。また、結果サイズがそれぞれ１ＭＢより小さい、あるいは結果サイズの相違が１桁以下である場合は、「ほぼ等しい」に分類する。
また、結果サイズによっては、「≫（十分大きい）」が３桁程度の違いを意味し、「ほぼ等しい」が２桁以下の違いを意味する場合もある。
【００４１】
生成された各副問合せ文｛Ｑｉ｝のサイズに関して、≫が１つ以上存在しているかを判断し（ステップ１０７）、１つ以上存在している場合は、もっとも大きい副問合せ文に対し、他の副問合せ文の結果との結合により、結果サイズを小さくできると推定された副問合せ文を一つ選択、選択された副問合せ文に対応するグラフを結合、分解グラフリストＧｉから対象グラフを削除、問合せ文リストに選択した副問合せ文を追加、論理テーブル情報／物理テーブル情報の更新、の各処理が順次行われる（ステップ１０８）。
【００４２】
すなわち、この例では、生成された各副問合せ文｛Ｑｉ｝について、Ｓｉｚｅ（Ｑ１）≫Ｓｉｚｅ（Ｑ２）≫Ｓｉｚｅ（Ｑ３）であったと仮定すると、順序整列の結果、≫が１つ以上存在しており、Ｑ１の結果サイズがもっとも大きいことが分かる。これは、Ｑ１の実行結果が膨大であり、問合せ処理をする上で、Ｑ１の処理や中間結果転送がボトルネックになり得ることを示している。
【００４３】
そして、同じく順序整列結果より、Ｓｉｚｅ（Ｑ１）より結果サイズが小さいと推定される副問合せ文を｛Ｑｊ｝として、Ｓｉｚｅ（Ｊｏｉｎ（Ｑ１、｛Ｑｊ｝）の結果サイズを推定し、もっとも小さくなるＱｊを選択する。この例では、Ｓｉｚｅ（Ｑ１) ≫ Ｓｉｚｅ(Ｊｏｉｎ(Ｑ１，Ｑ２)) ≫ Ｓｉｚｅ(Ｊｏｉｎ（Ｑ１，Ｑ３））の順序整列であるので、Ｑ３が選択されることになる。これは、データベースＤＢ２で実行されたＱ３結果を、Ｑ１が実行されるデータベースＤＢ１へ配置し、Ｊｏｉｎ操作をすることで、処理ボトルネックであったＱ１の結果サイズを小さくし、処理効率の改善が期待できることを意味する。
【００４４】
分解グラフリストＧｉに対して、「ＴＢＬ Ｑ３」を接続し、Ｇ３を除外処理する。「ＴＢＬ Ｑ３」は、Ｑ３の結果を一時的に格納するテーブルである。その結果、処理後のグラフは、図８に示すようになる。
【００４５】
続いて、問合せ文リストへ｛Ｑ３→１｝を追加する。これは、Ｑ３結果をデータベースＤＢ１に再配置することを意味する。
【００４６】
データベースＤＢ１に対して、Ｑ３結果を一時的に再配置するため、データベース管理部２２における論理テーブル情報及び物理テーブル情報を更新し、図９に示すように、論理テ−ブル情報に「ＴＢＬ Ｑ３」をＰ７に紐づけ、物理テーブル情報にＰ７とデータベースＤＢ１を関連づけし、「ＴＢＬ Ｑ３」がデータベースＤＢ１に再配置された状態になる。
【００４７】
続いて、処理フローのループ開始（ステップ１０４）へ戻り、分解グラフリストＧｉ要素数が２つ以上であるかを判断する。
分解グラフリストＧｉ要素数は２つであるので、各グラフに対応する副問合せ文を生成する。生成された副問合せ文を、図１０に示す。副問合せ文のサイズ推定と順序整列により、Ｓｉｚｅ（Ｑ１）≫ Ｓｉｚｅ（Ｑ２）であったと仮定する。順序整列の結果、≫が１つ以上存在する。結果サイズを小さくできる組み合わせを探し、結果がＳｉｚｅ（Ｊｏｉｎ（Ｑ１、Ｑ２））であり、Ｑ２を選択する。分解グラフリストＧ１に対して、「ＴＢＬ Ｑ２」を接続し、Ｇ２を除外する。
処理後のグラフを図１１に示す。問合せ文リストに｛Ｑ２→１｝を追加する。データベースＤＢ１に対して、Ｑ２結果を一時的に再配置するため、論理テーブル情報および物理テーブル情報を更新し、論理テーブル情報、物理テーブル情報、テーブル定義情報が明示された仮想データベースシステムの構成図は、図１２のような状態になる。
【００４８】
再び、処理フローのループ開始（ステップ１０４）へ戻り、分解グラフリストＧｉ要素数が２つ以上であるかを判断する。
分解グラフリストが｛Ｇ１｝の１つのみとなるため、ループを終了する。残ったグラフから、対応する副問合せ文を生成して、問合せ文リストに、Ｑ１→ＤＶＳを追加する（ステップ１０９）。これは、Ｑ１の結果を、仮想データベースシステム上に取得することを意味する。生成される副問合せ文を図１３に示す。
【００４９】
問合せ文を、仮想データベースシステムに配置する「ＴＢＬ Ｑ１」に対応して書き換える（ステップ１０９）。書き換え後の問合せ文を図１４に示す。論理テーブル情報、物理テーブル情報を更新し（ステップ１０９）、最終的な状態として、Ｑ１の情報がテーブル定義情報に反映された仮想データベースシステムの構成図は、図１５のようになる。
【００５０】
図２に示す一連の処理フローを実行することにより、副問合せ文および、副問合せ文の結果再配置と順序、書き換えられた問合せ文が得られる。
【００５１】
上述した仮想データベースシステム管理装置、管理方法及び管理プログラムによれば、複数のデータベースシステム３が存在しそれらを統合的に扱う場合に、従来の仮想データベースシステムではボトルネックとなっていた、仮想データベースシステム管理装置２及び各データベースシステム３間での大量データのやり取りを一部解消することが可能となる。
そして、仮想データベースシステムにおいて、問合せ文から副問合せ文を生成するに際し、物理データベースが異なるエッジの削除、及び、前記テーブル定義情報を参照して多対多となるエッジの削除によりクエリグラフを分解するので、直積による中間結果の肥大化を避けた副問合せ文が生成でき、仮想データベースシステムにおける問合せ処理効率を向上することができる。
その結果、仮想データベースシステム管理装置２における問合せ処理が効率化され、処理に長時間を要していた事態、又は、リソース不足により異常終了するような事態を回避して問合せ結果を取得することが可能となる。
【符号の説明】
【００５２】
１…ユーザシステム、  ２…仮想データベースシステム管理装置、  ３…データベースシステム、  ２１…データベースインタフェース部、  ２２…データベース管理部、  ２３…ユーザインタフェース部、  ２４…問合せ文解析部、  ２５…問合せ文生成部、  ２６…結果サイズ推定部、  ２７…実行計画生成部、  ２８…実行制御部、  ３１…データベースマネジメントシステム、  ３２…データベース、  ２２１…テーブル情報データベース、  ２２２…テーブル定義情報データベース。
【図１】
0006523823.tif 000002
【図２】
0006523823.tif 000003
【図３】
0006523823.tif 000004
【図４】
0006523823.tif 000005
【図５】
0006523823.tif 000006
【図６】
0006523823.tif 000007
【図７】
0006523823.tif 000008
【図８】
0006523823.tif 000009
【図９】
0006523823.tif 000010
【図１０】
0006523823.tif 000011
【図１１】
0006523823.tif 000012
【図１２】
0006523823.tif 000013
【図１３】
0006523823.tif 000014
【図１４】
0006523823.tif 000015
【図１５】
0006523823.tif 000016