(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の各部をコンピュータ上に構築し、問合せ文実行時に中間データサイズを推定してデータベースシステム間での適切なデータ配置を決定し、前記データ配置に合わせて問合せ文を変更して実行計画を生成する処理を行う仮想データベースシステム管理プログラム。
【発明の概要】
【発明が解決しようとする課題】
【0005】
上述した仮想データベースシステムにおいては、ユーザから与えられた問合せ文に対して、仮想データベースシステムに接続された各データベースシステムにおいて実行可能な副問合せ文が生成・発行され、副問合せ文の処理結果を仮想データベースシステムが受け取り、さらに問合せ文の残りの処理を実行してユーザへ結果を返す。
しかしながら、問合せ文の残りの処理を実行するに際し、各データベースシステムにて実行する副問合せ文の結果によっては、仮想データベースシステムで処理すべきデータ量が膨大となり処理時間が長くなる、又は、リソース不足により処理を完了できずに異常終了することが起こり得るという問題があった。
【0006】
本発明は上記実情に鑑みて提案されたものであり、複数のデータベースシステムが存在する仮想データベースシステム管理装置の環境下において、問合せ文から各データベースシステムに対する副問合せ文を生成する場合に、データ再配置とそれに伴う問合せ文変換により処理の効率化を実現する仮想データベースシステム管理装置、仮想データベースシステム管理方法及び仮想データベースシステム管理プログラムを提供することを目的としている。
【課題を解決するための手段】
【0007】
上記目的を達成するため本発明は、複数のデータベースシステムを扱う環境下の仮想データベースシステム管理装置において、副問合せ文の実行結果サイズを考慮した実行計画を生成することにより、仮想データベースシステム管理装置の問合せ処理を効率化する。
【0008】
すなわち、請求項1は、複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理装置において、次の構成を備えたことを特徴としている。
前記データベースシステム単位に副問合せ文の生成及び副問合せ文によるデータ再配置に伴う前記問合せ文の変換を行う問合せ文生成部。
前記問合せ文生成部が生成した副問合せ文の実行結果サイズを推定する実行結果推定部。
前記問合せ文生成部が生成した副問合せ文及び変換した問合せ文に対して、前記実行結果推定部が推定した実行結果サイズに基づいて副問合せ文及び変換した問合せ文の実行順序並びに副問合せ文の実行結果のデータ配置を決定する問合せ入力解析部。
前記問合せ入力解析部が決定した実行順序に基づいて副問合せ文及び変換した問合せ文を実行する問合せ実行部。
更に、前記データベースシステムに関連付けたエントリ番号を管理する物理データベース管理情報と、前記ユーザシステムからの問合せ対象となる論理データベース情報を定義し、前記物理データベース管理情報に対して、対応する前記各エントリ番号を紐付けて管理する論理データベース管理情報とが記憶されたデータベース管理部とを備え、
前記問合せ入力解析部は、前記副問合せ文の実行順序及び実行結果のデータ配置を決定して前記論理データベース管理情報を更新するとともに、
前記問合せ入力解析部は、
前記ユーザシステムからの問合せ文に対して、前記各データベースシステムの各データベースで閉じられる複数の単独データベース副問合せ文を生成し、前記各単独データベース副問合せ文から推定される実行結果サイズについて、予め決められた基準により「十分大きい」及び「ほぼ等しい」で区別される順序で整列させる機能を備え、
前記実行結果サイズの整列結果に「十分大きい」が1つ以上存在する場合で前記問合せ文において前記各データベースシステムの複数のデータベースで閉じられる複数データベース副問合せ文を生成し、
前記単独データベース副問合せ文から推定される実行結果サイズが前記複数データベース副問合せ文から推定される実行結果サイズに対して「十分大きい」場合に、
実行結果サイズが十分大きい方でない単独データベース副問合せ文に対する単独データベース副問合せ文の実行結果にリンクするテーブルを、前記論理データベース管理情報の実行結果サイズが十分大きい方に対応するデータベースに追加する機能を備え、
前記問合せ実行部は、
前記問合せ入力解析部が決定した実行順序に基づいて前記単独データベース副問合せ文の実行結果となるテーブルを前記物理データベース管理情報に追加するデータ再配置を行う機能を備えたことを特徴としている。
【0011】
請求項2は、請求項1の仮想データベースシステム管理装置において、
前記「十分大きい」は、前記実行結果サイズの相違が二桁以上である場合であり、
前記「ほぼ等しい」は、前記実行結果サイズの相違が一桁以下である場合である
ことを特徴としている。
【0012】
請求項3は、複数のデータベースシステムが接続され、ユーザシステムからの問合せ文に応じてデータが出力される仮想データベースシステム管理方法において、
前記データベースシステムに関連付けたエントリ番号を管理する物理データベース管理情報と、前記ユーザシステムからの問合せ対象となる論理データベース情報を定義し、前記物理データベース管理情報に対して、対応する前記各エントリ番号を紐付けて管理する論理データベース管理情報とを記憶する手順と、
前記ユーザシステムからの問合せ文に対して、前記各データベースシステムの各データベースで閉じられる複数の単独データベース副問合せ文を生成し、前記各単独データベース副問合せ文から推定される実行結果サイズについて、予め決められた基準により「十分大きい」及び「ほぼ等しい」で区別される順序で整列させる機能を備えて、前記実行結果サイズの整列結果に「十分大きい」が1つ以上存在する場合で前記問合せ文において前記各データベースシステムの複数のデータベースで閉じられる複数データベース副問合せ文を生成し、前記単独データベース副問合せ文から推定される実行結果サイズが前記複数データベース副問合せ文から推定される実行結果サイズに対して「十分大きい」場合に、実行結果サイズが十分大きい方でない単独データベース副問合せ文に対する単独データベース副問合せ文の実行結果にリンクするテーブルを、前記論理データベース管理情報の実行結果サイズが十分大きい方に対応するデータベースに追加する一方、前記副問合せ文の実行順序及び実行結果のデータ配置を決定して前記論理データベース管理情報を更新する手順と、
前記問合せ入力解析部が決定した実行順序に基づいて前記単独データベース副問合せ文の実行結果となるテーブルを前記物理データベース管理情報に追加するデータ再配置を行う手順と、
を含むことを特徴としている。
【0013】
請求項4の仮想データベースシステム管理方法は、
請求項3に記載の各手順について、前記データベースシステム単位が一つになるまで繰り返して行うことを特徴としている。
【0014】
請求項5は、請求項1に記載の各部をコンピュータ上に構築し、問合せ文実行時に中間データサイズを推定してデータベースシステム間での適切なデータ配置を決定し、前記データ配置に合わせて問合せ文を変更して実行計画を生成する処理を行う仮想データベースシステム管理プログラムであることを特徴としている。
【発明の効果】
【0015】
本発明によれば、複数のデータベースシステムが存在する環境下の仮想データベースシステム管理装置において、問合せ文から各データベースシステムに対する副問合せ文を生成するに際し、各副問合せ文の実行結果サイズ(中間データサイズ)を推定してデータベースシステム間での適切なデータ配置を決定し、そのデータ配置に応じて問合せ文を変更して実行計画を生成するので、仮想データベースシステム管理装置における問合せ文の処理効率を向上させることができる。
【発明を実施するための形態】
【0017】
本発明の仮想データベースシステム管理装置の実施形態の一例について、図面を参照して説明する。
仮想データベースシステムは、同一データを保有する複数のデータベースシステムが存在する環境において、ユーザの問合せ内容に応じてデータベースシステムを選択して問合せ内容を実行可能とするシステムであり、
図1に示すように、ユーザが問合せ文の投稿を行うユーザシステム1と、仮想データシステム管理装置2と、仮想データシステム管理装置2が利用する1つ以上のデータベースシステム3から構成されている。ユーザシステム1、仮想データシステム管理装置2及びデータベースシステム3は、ネットワークを介して接続されている。仮想データシステム管理装置2は、仮想データベースシステム管理プログラムが格納された記録媒体やインターネットを介してソフトウエアのダウンロードによりインストールすることで、コンピュータ上に構築されている。
【0018】
仮想データベースシステム管理装置が構築されるコンピュータは、オペレーティングシステム(OS)を含む基本プログラムや各種の基本デバイスが記憶されたROMと、各種のプログラムやデータが記憶されるハードディスクドライブ装置(HDD)と、CD−ROMやDVD等の記憶媒体からプログラムやデータを読み出すメディアドライブ装置と、プログラムを実行するCPUと、このCPUにワークエリアを提供するRAMと、入出力インターフェース(I/F)を介して接続されたディスプレイ、キーボードおよびマウス等のポインティングデバイスと、外部装置と通信するパラレル/シリアルI/Fとを主要部分とする一般的な構成を備えている。
本実施形態の仮想データベースシステム管理装置2では、仮想データベースシステム管理プログラムがシリアル/パラレルI/Fから入力、またはメディアドライブ装置で読み取られてHDDに予め記憶される。仮想データベースシステム管理プログラムは記憶媒体に記憶され、メディアドライブ装置で読み取られてHDDにインストールされる。
【0019】
コンピュータ上に構築された仮想データベースシステム管理装置2は、複数のデータベースシステム3が存在する環境において、ユーザからのアクセス対象となる論理データベース情報(データベース、テーブル)を定義し、それらに対し、各データベースシステムにおける1つあるいは複数のデータベースマネジメントシステム、データベース、テーブルの組を割り当てる。
【0020】
ユーザシステム1は、仮想データベースシステム管理装置2が提供する統合データモデルを利用した問合せ文を投稿することで、透過的に複数のデータベースシステム3に対する問合せ文の処理結果を取得する。
【0021】
データベースシステム3は、実際にデータを保管するデータベース31と、データに対する処理を提供するデータベースマネジメントシステム32からなり、データベースマネジメントシステム32が持つインタフェース経由でデータベース31上のデータに対する処理を提供する。
【0022】
仮想データベースシステム管理装置2は、複数のデータベースシステム3と接続されるデータベースインタフェース部21と、データベースインタフェース部21を介して各データベースシステム3の情報を取得し管理するデータベース管理部22と、問合せ文生成部25と、ユーザシステム1との入出力を行うユーザインタフェース部23と、ユーザシステム1からの問合せ文の解析を行う問合せ入力解析部24と、問合せ文から各データベースシステム3への副問合せ文の生成を行う問合せ文生成部25と、副問合せ文の実行結果サイズを推定する実行結果推定部26と、一連の副問合せ文の実行計画を生成する実行計画生成部27と、副問合せ文を実行する問合せ実行部28と、を備えて構成されている。
【0023】
データベース管理部22は、データベース31に関連付けたエントリ番号を管理する物理データベース管理テーブル221と、ユーザシステム1からのアクセス対象となる論理データベース情報を定義し、物理データベース管理テーブル221のデータに対して、対応する各エントリ番号を紐付けて管理する論理データベース管理テーブル222を備えることで、各データベースシステム3の情報を管理している。
【0024】
物理データベース管理テーブル221及び論理データベース管理テーブル222におけるデータ間の紐付け例を
図3に示す。
仮想データベースシステム管理装置2に対して2つのデータベース31(Da及びDb)が接続され、データベースDaはテーブルlineitemを、データベースDbはテーブルcustomer及びordersを有している。
物理データベース管理テーブル221では、紐付けを行うためのエントリ番号(P1〜P3)、データベースの種別(Da又はDb)、データベースにおけるテーブルの種別(lineitem、customer、orders)がデータベース情報として管理されている。論理データベース管理テーブル222では、ユーザシステム1からアクセス対象となる論理データベース情報(データベース、テーブル)が管理され、物理データベース管理テーブル221のデータに対して、対応する各エントリ番号を紐付けて管理する情報としてリンク項目(P1〜P3)が設定されている。
【0025】
問合せ入力解析部24は、ユーザインタフェース部23を介して入力された問合せ文の構文を解析し、解析結果を実行計画生成部27へ出力する。また、問合せ入力解析部24は、問合せ文の構文解析に際して、ユーザシステム1から入力された問合せ文に対して、副問合せ文の実行順序及び副問合せ文の実行結果のデータ配置を決定する。実行順序の決定及びデータ配置の決定に関する問合せ入力解析部24における処理については後述する。
【0026】
問合せ文生成部25は、問合せ入力解析部24から呼び出され、データベース単位の副問合せ文(単独データベース副問合せ文)の生成、及び、副問合せ文によるデータ再配置に伴う問合せ文の変換を行う。
実行結果推定部26は、問合せ入力解析部24から呼び出され、与えられた副問合せ文の実行結果サイズを推定する。
実行計画生成部27は、問合せ入力解析部24により決定された一連の問合せ文(副問合せ文と変換した問合せ文)の実行計画を生成する。
【0027】
問合せ実行部28は、実行計画生成部27にて生成された実行計画を実行し、データベースインタフェース部21を介して副問合せ文を実行し、実行結果についてユーザインタフェース部23を介してユーザシステム1へ出力する。
【0028】
次に、仮想データベースシステム管理装置2において、ユーザインタフェース部23を介してユーザシステム1から入力された問合せ文に対する問合せ入力解析部24での詳細処理(仮想データベースシステム管理方法)について、
図2のフローチャートを参照して説明する。
【0029】
先ず、ユーザシステム1から入力された問合せ文をQとし、問合せ文Qを構成するデータベースシステムリストを{Di}とし、問合せ文リストを{ }とする(ステップ101)。データベースシステムリストは、仮想データベースシステム管理装置2に接続されるデータベース31の要素で構成される。問合せ文リストは、当初、空集合となっている。
データベースシステムリスト{Di}の要素数iが1より大きいか否かを判断する(ステップ102)。
要素数iが1より大きい場合、データベースシステムリスト{Di}の各要素Diについて、問合せ文生成部25により問合せ文QにおいてDiに対応する単独データベース副問合せ文Qiを生成する(ステップ103)。「QにおいてDiに対応する」とは、問合せ文QにおいてDiに閉じた選択/射影/結合の演算を意味する。
【0030】
次に、{Qi}の各要素Qiについて、実行結果推定部26よりQiの実行結果サイズSiを推定する(ステップ104)。実行結果サイズはオーダーが分かればよく、厳密である必要はない。
実行結果サイズ{Si}の要素について、「≫(十分大きい)」、「≒(ほぼ等しい)」による順序を付けて整列する(ステップ105)。したがって、A≫Bは、「AはBより十分大きい」を意味し、A≒Bは、「AはBとほぼ等しい(A≫BでもB≫Aでもない)」を意味する。
なお、「≫(十分大きい)」及び「≒(ほぼ等しい)」は、予め決められた基準により分類される。例えば、「≫(十分大きい)」は、実行結果サイズがそれぞれ1MB以上で、2桁程度の違いを意味する。例えば、一方の実行結果サイズが1MBの時、他方の実行結果サイズが100MBである場合は、「十分大きい」と判断する。また、実行結果サイズがそれぞれ1MBより小さい、あるいは実行結果サイズの相違が1桁以下である場合は、「ほぼ等しい」に分類する。
また、実行結果サイズによっては、「≫(十分大きい)」が3桁程度の違いを意味し、「ほぼ等しい」が2桁以下の違いを意味する場合もある。
【0031】
各要素Qiの実行結果サイズSiを整列した結果、Si間に1つ以上「≫」が存在するか否かを判断する(ステップ106)
【0032】
Siの整列結果に「≫」が1つ以上存在する場合、最上位の要素を1つ選択しSaとする。Sa≫Sbとなる全てのSbについて、以下(1)〜(3)の処理を実行する(ステップ107)。
(1)問合せ文生成部25により、問合せ文QにおいてデータベースDa及びデータベースDbに対応(問合せ文QにおいてDa及びDbに閉じた選択/射影/結合の演算のみを対象とする)する複数データベース副問合せ文Qabを生成する。
(2)実行結果推定部26により、複数データベース副問合せ文Qabの実行結果サイズSabを推定する。
(3)Sa≫Sabであれば、「Qb→a」を問合せ文リスト{ }に追加する。「Qb→a」は、データベースDbにおける単独データベース副問合せ文Qbの実行結果をデータベースDaに追加することを意味し、データベース管理部22の論理データベース管理テーブル222に項目を追加する。
【0033】
データベースシステムリスト{Di}より問合せ文リストの全ての要素に対するデータベースDbを削除し、問合せ文生成部25により問合せ文Qにおいて{Di}に対応する問合せ文を生成し(副問合せ文によるデータ再配置に伴う問い合わせ文の変換)、新たな問合せ文Qとする(ステップ108)。「問合せ文Qにおいて{Di}に対応する」とは、問合せ文Qを{Di}の要素のみで書き換えることを意味する。
【0034】
ステップ106においてSiの整列結果に「≫」が1つも存在しない場合、又は、ステップ102において{Di}の要素数iが1である場合、データベースシステムリスト{Di}の各要素Diについて、問合せ文生成部25により問合せ文QにおいてDiに対応する副問合せ文Qiと、全ての副問合せ文Qiを実行後に仮想データベースシステム上で実行する問合せ文Qvを生成し、問合せ文リストに追加する(ステップ109)。ただし{Di}の要素数が1の場合は、Qi=QとなりQのみを問合せ文リストに追加する。
【0035】
以下、TPC−HベンチマークのQ3(TPC−Hベンチマーク22種のうちの一つ)を例として、
図1の問合せ入力解析部24における具体的な処理について、データベースシステム3が2個の場合の実施例(実施例1)、及び、データベースシステム3が3個の場合の実施例(実施例2)を説明する。
【0036】
(実施例1)
図3に、仮想データベースシステム管理装置2におけるデータベース管理部22の物理データベース管理テーブル221及び論理データベース管理テーブル222の構成を示す。
図4に、ユーザシステム1から入力される問合せ文Qを示す。データベースシステムリストは、仮想データベースシステム管理装置2に接続されたデータベースの種類となる{Da、Db}とする。
【0037】
ステップ102におけるデータベースDa又はデータベースDbに対する単独データベース副問合せ文Qa、Qbは、
図4の問合せ文Qに対して各データベース単独で実行できるように分解することで、それぞれ
図5、
図6となる。
ステップ103において、単独データベース副問合せ文Qa、Qbの実行結果サイズを推定してSa、Sbとした時に、Sa≫Sbの関係が成り立つとする。Sa≫Sbの関係が成り立つ場合、副問合せ文Qaの実行結果が副問合せ文Qbに比べて十分大きく、仮想データベースシステム管理装置2の処理におけるボトルネックになり得ることを示している。
【0038】
ステップ107で生成されたデータベースDa及びDbに対応する複数データベース副問合せ文Qabは、
図7のようになる。副問合せ文Qabの実行結果サイズを推定してSabとした時に、Sa≫Sabの関係が成り立つとする。
Sa≫Sabの関係が成り立つ場合、データベースDa及びDbを対象とする複数データベース問合せ文の実行結果サイズが、データベースDaのみを対象とする単独データベース問合せ文の結果よりも十分小さいことを示しているので、単独データベース副問合せ文Qbの結果をデータベースDaに移して複数データベース副問合せ文Qabを実行することにより、仮想データベースシステム管理装置2への負担を大幅に削減できる。
【0039】
また、Sa≫Sabの関係が成り立つ場合、問合せ文リストは{Qb→a}となり、単独データベース副問合せ文Qbの実行結果「TBL_Qb」をデータベースDaに追加するため、論理データベース管理テーブル222のデータベースDaに「TBL_Qb」を追加すると
図8のようになる。
問合せ文リストよりデータベースシステムリストを更新して{Da}となり、新たな問合せ文Q(Q1)は、
図9のようになり、データベースDaからのみデータを取得する。
【0040】
図2の処理フローの最初(ステップ102)に戻り、データベースシステムリストの要素が1より大きくないため、最終的に問合せ文リストはQ1を追加して{Qb→a、Q1}となり(ステップ109)、問合せ入力解析部24の処理を終了する。問合せ文リスト{Qb→a、Q1}は、Qbの実行、この実行結果をDaに追加、Q1を実行、という実行計画による実行順序で行われる。
【0041】
生成された問合せ文リストに基づき、実行計画生成部27にて実行計画を策定し、問合せ実行部28にて実行される。問合せ実行部28では、「Qb→a」のようにテーブル追加が必要な場合に、
図10に示すように、該当するデータベースシステムDaにテーブルを追加するとともに、データベース管理部22の物理データベース管理テーブル221及び対応する論理データベース管理テーブル222の情報を更新する。追加したテーブルは、問合せ処理実行完了時に削除することができる。
【0042】
(実施例2)
次に、
図1の問合せ入力解析部24における処理概要について、データベースシステム3が3個の場合について説明する。ユーザシステム1から入力される問合せ文Qについては、実施例1の場合と同じ
図4に示されたものが使用される。
【0043】
図11に、仮想データベースシステム管理装置2におけるデータベース管理部22の物理データベース管理テーブル221及び論理データベース管理テーブル222の構成を示す。データベースシステムリストを{Da、Db、Dc}とする。
ステップ102におけるデータベースDa、Db又はDcに対する単独データベース副問合せ文Qa、Qb、Qcは、
図4の問合せ文Qに対してデータベース毎に分解することで、それぞれ
図12、
図13、
図14となる。
【0044】
ステップ103において単独データベース副問合せ文Qa、Qb又はQcの実行結果サイズを推定してSa、Sb、Scとした時に、Sa≒Sc≫Sbの関係が成り立つとする。
ステップ107における複数データベース副問合せ文Qabは、
図15のようになり、複数データベース副問合せ文Qabの実行結果サイズをSabとした時に、Sa≫Sabの関係が成り立つとする。
【0045】
問合せ文リストは{Qb→a}となり、単独データベース副問合せ文Qbの実行結果をデータベースDaに追加するため、論理データベース管理テーブル222のデータベースDaに「TBL_Qb」を追加し、
図16のようになる。
問合せ文リストよりデータベースシステムリストを更新し、Dbが削除された{Da、Dc}となり、新たな問合せ文Q(Q1)は
図17となる。
【0046】
図2の処理フローの最初(ステップ102)に戻り、以下同様に、データベースDa、Dcに対する単独データベース副問合せ文Qa、Qcはそれぞれ
図18、
図19となり、単独データベース副問合せ文Qa、Qcの実行結果サイズをSa、Scとした時にSc≫Saの関係が成り立つとする。
問合せ文リストは{Qb→a、Qa→c}となり、単独データベース副問合せ文Qaの実行結果をデータベースDcに追加するため、論理データベース管理テーブルのデータベースDcに「TBL_Qa」を追加し、
図20のようになる。
問合せ文リストよりデータベースシステムリストを更新し、Daが削除された{Dc}となり、新たな問合せ文Q(Q2)は
図21となる。
【0047】
再び
図2の処理フローの最初(ステップ102)に戻り、データベースシステムリストの要素が1より大きくないため、最終的に問合せ文リストは、問合せ文Q2を追加して{Qb→a、Qa→c、Q2}となり、問合せ入力解析部24の処理を終了する。
【0048】
上述したように、問合せ文Qに対して、データベースDbでの問合せ結果をデータベースDaに移し、次にデータベースDaでの問合せ結果をデータベースDcに移し、最後にデータベースDcで残りの問合せ処理を実行することにより、仮想データベースシステム管理装置2と各データベースシステム3間のデータ転送量を大幅に減らすことができ、その結果処理時間の大幅な短縮を見込むことができる。
【0049】
上述した仮想データベースシステム管理装置、管理方法及び管理プログラムによれば、複数のデータベースシステム3が存在しそれらを統合的に扱う場合に、従来の仮想データベースシステムではボトルネックとなっていた、仮想データベースシステム管理装置2及び各データベースシステム3間での大量データのやり取りを一部解消することが可能となる。
その結果、仮想データベースシステム管理装置2における問合せ処理が効率化され、処理に長時間を要していた事態、又は、リソース不足により異常終了するような事態を回避して問合せ結果を取得することが可能となる。