(57)【要約】  ユーザが再構造化後のデータベースの構成を柔軟に設計しやすくすることができるデータベース再構造化支援システムを提供する。  蓄積コスト見積手段１１２は、データベース１２２に含まれるカタログ情報を用いて、再構造化前および後それぞれの蓄積コストを計算する。再構造化の蓄積コストを計算する場合には、新規スキーマのタプルを計算し、そのタプルを用いて蓄積コストを計算する。アクセスコスト見積手段１１３は、データベース１２２に含まれるカタログ情報およびログＤＢ１２１を用いて、再構造化前および後それぞれのアクセスコストを計算する。再構造化後のアクセスコストを計算する場合、新規スキーマにおける属性の値の種類数を計算し、その種類数を用いてアクセスコストを計算する。統合コスト見積手段１１１は、アクセスコストと蓄積コストを統合した統合コストを計算する。
2008139936.tif 000002
【特許請求の範囲】
【請求項１】
データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、
テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、
前記データベースのアクセスログを記憶するログ記憶手段と、
テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、
データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段と、
ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算手段と、
既存スキーマ蓄積コスト計算手段が計算した各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出手段と、
新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算手段と、
新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算手段と、
アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算手段と、
既存スキーマアクセスコスト計算手段がアクセスログ内のＳＱＬ文毎に計算したアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算手段と、
新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算手段と、
仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算手段が仮想アクセスログ内のＳＱＬ文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算手段と、
再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積手段とを備えた
ことを特徴とするデータベース再構造化支援システム。
【請求項２】
入力手段には、蓄積コストに重み付けを行うための第１パラメータとアクセスコストに重み付けを行うための第２パラメータとが入力され、
統合コスト見積手段は、蓄積コストに第１パラメータを乗じた値と、アクセスコストに第２パラメータを乗じた値との和として統合コストを計算する
請求項１に記載のデータベース再構造化支援システム。
【請求項３】
アクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成する可視化手段を備えた請求項１または請求項２に記載のデータベース再構造化支援システム。
【請求項４】
既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段、新規データベース蓄積コスト計算手段、既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段、新規データベースアクセスコスト計算手段、統合コスト見積手段および可視化手段が同一の装置によって実現された
請求項３に記載のデータベース再構造化支援システム。
【請求項５】
既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段、新規データベース蓄積コスト計算手段、既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段、新規データベースアクセスコスト計算手段および統合コスト見積手段が同一の装置によって実現され、可視化手段は当該装置とは別に設けられた
請求項３に記載のデータベース再構造化支援システム。
【請求項６】
可視化手段は、複数種類のスキーマのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成し、前記画像とスキーマの属性を示すスキーマ構成情報とを含む画面を表示させるためのドキュメントを作成する
請求項４または請求項５に記載のデータベース再構造化支援システム。
【請求項７】
可視化手段は、複数種類のデータベースのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成し、前記画像と各データベースに含まれているスキーマを示すデータベース構成情報と、スキーマの属性を示すスキーマ構成情報とを含む画面を表示させるためのドキュメントを作成する
請求項６に記載のデータベース再構造化支援システム。
【請求項８】
可視化手段は、複数種類のスキーマのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を表示させるためのドキュメントと、複数種類のデータベースのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を表示させるためのドキュメントとを作成し、各ドキュメントに他のドキュメントへのハイパーリンクを設定する
請求項７に記載のデータベース再構造化支援システム。
【請求項９】
データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたデータベース再構造化支援システムに適用されるデータベース再構造化支援方法であって、
既存スキーマ蓄積コスト計算手段が、ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算し、
既存データベース蓄積コスト算出手段が、既存スキーマ蓄積コスト計算手段に計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算し、
新規スキーマ蓄積コスト計算手段が、新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算し、
新規データベース蓄積コスト計算手段が、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算し、
既存スキーマアクセスコスト計算手段が、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算し、
既存データベースアクセスコスト計算手段が、既存スキーマアクセスコスト計算手段によってアクセスログ内のＳＱＬ文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算し、
新規スキーマアクセスコスト計算手段が、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算し、
新規データベースアクセスコスト計算手段が、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算手段によって仮想アクセスログ内のＳＱＬ文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算し、
統合コスト見積手段が、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する
ことを特徴とするデータベース再構造化支援方法。
【請求項１０】
データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するコンピュータであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたコンピュータに搭載されるデータベース再構造化支援プログラムであって、
コンピュータに、
ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算処理、
既存スキーマ蓄積コスト計算処理で計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出処理、
新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算処理、
新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算処理、
アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算処理、
既存スキーマアクセスコスト計算処理でアクセスログ内のＳＱＬ文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算処理、
新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算処理、
仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算処理で仮想アクセスログ内のＳＱＬ文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算処理、および
再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積処理
を実行させるためのデータベース再構造化支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの最適化の設計を支援するデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラムに関し、特にデータベースの再構造化の設計を支援するデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラム関する。
【背景技術】
【０００２】
従来のデータベースの最適化技術は、非特許文献１と非特許文献２に詳しく記載されている。データベースの最適化技術には、データベースの再構造化、質問最適化、索引の最適化、データ配置の最適化など様々な手法がある。【０００３】
データベースの再構造化とは、データへのアクセスとデータ蓄積の効率を向上させるためデータベースが保持するデータのあり方を変更することである。データベースが保持するデータのあり方とは、データのスキーマ、およびスキーマの種類、スキーマの数である。従って、データベースの構成（データのあり方）は、スキーマ集合で表すことができる。本明細書では、データベースは関係データベースを指す。そして、スキーマは、属性集合、または属性集合と条件集合とのペアであると定義する。スキーマ、属性集合、条件集合をそれぞれＳ，Ａ，Ｃとし、属性集合Ａと条件集合Ｃとのペアを（Ａ，Ｃ）とすれば、上記のスキーマの定義は、以下に示す式１で表される。ただし、「｜」は、「または」を意味する。【０００４】
Ｓ：＝Ａ｜（Ａ，Ｃ）                                                  （式１）【０００５】
また、属性集合Ａ、条件集合Ｃは、それぞれ以下に示す式２、式３で表される。【０００６】
Ａ：＝ａｔｔｒｉｂｕｔｅ＋                                            （式２）【０００７】
Ｃ：＝（ＬＯＰ＋（ａｔｔｒｉｂｕｔｅ  ＣＯＰ  （ａｔｔｒｉｂｕｔｅ｜ｖａｌｕｅ）））＋
（式３）【０００８】
ただし、「ａｔｔｒｉｂｕｔｅ」は属性を表し、「ｖａｌｕｅ」は属性値を表す。また、「＋」の記号は、その記号の左側の内容が０回以上出現することを意味する。また、ＣＯＰは比較演算子を意味し、ＬＯＰは論理演算子を意味する。比較演算子ＣＯＰの種類として、“＞”，“＜”，“＝”，“≦”，“≧”，“≠”がある。また、論理演算子として、“ａｎｄ（論理積）”，“ｏｒ（論理和）”，“ｎｏｔ（否定）”がある。【０００９】
式２は、属性集合Ａが０個以上の属性（ａｔｔｒｉｂｕｔｅ）からなる集合として定義されることを意味している。また、式３は、条件集合ＣがＬＯＰ（論理演算子）、属性（ａｔｔｒｉｂｕｔｅ）、ＣＯＰ（比較演算子）、およびスカラー値（ｖａｌｕｅ）を含む０個以上の条件式の集合として定義されることを意味している。【００１０】
属性集合Ａは属性の集合であり、換言すれば、属性集合Ａは関係データベースのテーブルを表すことができる。例えば、「氏名」、「年齢」等の属性の集合｛氏名，年齢｝は「氏名」と「年齢」から構成される「テーブル」を表すことができる。【００１１】
属性集合Ａと条件集合Ｃとのペア（Ａ，Ｃ）は、「ビュー」を表す。「ビュー」は、テーブルの一部を取り出したり合成したりした仮想的な表である。例えば、条件式が「年齢４０才以上」を意味している場合、（Ａ，Ｃ）は、属性集合Ａであるテーブルから「年齢４０才以上」という条件を満たす部分だけを取りだしたビューを意味する。なお、ここで示した「氏名」や「年齢」等は属性の例示であり、属性は「氏名」や「年齢」に限られるわけではない。【００１２】
なお、比較演算子ＣＯＰや論理演算子の種類は、上述の通りであるので、これらの演算子の種類を式で表すと、以下のようになる。【００１３】
ＣＯＰ：＝“＞”｜“＜”｜“＝”｜“≦”｜“≧”｜“≠”【００１４】
ＬＯＰ：＝“ａｎｄ”｜“ｏｒ”｜“ｎｏｔ”【００１５】
関係データベースの再構造化は、スキーマ操作を通して、データベースのスキーマ集合を更新することである。本明細書では、関係データベースの再構造化のスキーマ操作を、結合、分割、作成・削除、および種類変換の４種類に分類して定義する。【００１６】
「結合」は、二つ以上のスキーマを一つのスキーマにマージする操作であり、ＳＱＬ（Structured Query Language）文の完全外部結合に相当する。【００１７】
「分割」は、一つのスキーマを二つ以上のスキーマに分割する操作である。【００１８】
「作成」は、新しいスキーマを定義して生成する操作である。「削除」は、既存スキーマの削除操作である。【００１９】
「種類変換」は、ビューをテーブルに変換するための操作である。【００２０】
図１は、データベースの再構造化の例を示す説明図である。図１では、データの関連性と利用頻度に基づいて、テーブル１とテーブル２とを１つのテーブル３にマージする場合を例示している。図１に示す例では、Ｘという共通の属性を持つ２つのテーブルを再構造化して１つのテーブルとしている。再構造化では、このようにスキーマ構成を変更して、データベースを最適化することができる。【００２１】
データベースの再構造化システムは、従来から多数提案されている（例えば、特許文献１〜４参照。）。これらの従来のシステムでは、データベース上のアクセスログを解析し、アクセスコストに基づいてビュー（マテリアライズドビュー（Materialized View ）、索引付きビュー）を自動生成・推薦することでデータのアクセス効率の向上を図っている。つまり、新しいスキーマ（ビュー）を作成して、データベースを再構造化する。【００２２】
また、特許文献５には、データベースマネジメントシステムがデータベースにアクセスするときにどのようなプランでアクセスを行うのかをコストを元に決定する計算機システムが記載されている。
【特許文献１】米国特許第７００７００６号明細書
【特許文献２】米国特許第６５４６３８１号明細書
【特許文献３】米国特許出願公開第２００５／０１９８０１９Ａ１号明細書
【特許文献４】米国特許出願公開第２００５／０１９８０１３Ａ１号明細書
【特許文献５】特開２００６−１２７４１８号公報
【非特許文献１】ヘクター・ガラシアモリナ（Hector Garcia-Molina）、ジェフリー・Ｄ・ウルマン（Jeffrey D.Ullman）、ジェニファー・ウィダム（Jennifer Widom）著、「データベースシステムズ：ザ・コンプリートブック（Database Systems: the Complete Book）」、米国、Prentice Hall、２００２年、ｐ．７８７−８３５
【非特許文献２】Ｃ．Ｊ．デイト（C.J.Date）著、藤原譲監訳、「データベースシステム概論原書６版」、丸善株式会社、１９９７年、ｐ．５４７−５７１
【発明の開示】
【発明が解決しようとする課題】
【００２３】
従来のデータベース再構造化システムでは、アクセスコストだけに基づくデータベースの再構造化を行っていたため、リソースの制限、利用要求やデータ特性に応じた柔軟なデータベース構成を設計することが困難であった。【００２４】
また、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができることが好ましい。【００２５】
そこで、本発明は、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができ、ユーザが再構造化後のデータベースの構成を柔軟に設計しやすくすることができるデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【００２６】
本発明のデータベース再構造化支援システムは、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段と、ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算手段と、既存スキーマ蓄積コスト計算手段が計算した各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出手段と、新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算手段と、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算手段と、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算手段と、既存スキーマアクセスコスト計算手段がアクセスログ内のＳＱＬ文毎に計算したアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算手段と、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算手段と、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算手段が仮想アクセスログ内のＳＱＬ文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算手段と、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積手段とを備えたことを特徴とする。【００２７】
また、本発明のデータベース再構造化支援方法は、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたデータベース再構造化支援システムに適用されるデータベース再構造化支援方法であって、既存スキーマ蓄積コスト計算手段が、ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算し、既存データベース蓄積コスト算出手段が、既存スキーマ蓄積コスト計算手段に計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算し、新規スキーマ蓄積コスト計算手段が、新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算し、新規データベース蓄積コスト計算手段が、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算し、既存スキーマアクセスコスト計算手段が、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算し、既存データベースアクセスコスト計算手段が、既存スキーマアクセスコスト計算手段によってアクセスログ内のＳＱＬ文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算し、新規スキーマアクセスコスト計算手段が、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算し、新規データベースアクセスコスト計算手段が、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算手段によって仮想アクセスログ内のＳＱＬ文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算し、統合コスト見積手段が、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算することを特徴とする。【００２８】
また、本発明のデータベース再構造化支援プログラムは、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するコンピュータであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたコンピュータに搭載されるデータベース再構造化支援プログラムであって、コンピュータに、ビューの蓄積コストを０とし、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算処理、既存スキーマ蓄積コスト計算処理で計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出処理、新規スキーマがビューである場合、新規スキーマの蓄積コストを０とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて１ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算処理、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算処理、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算処理、既存スキーマアクセスコスト計算処理でアクセスログ内のＳＱＬ文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算処理、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すＳＱＬ文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでＳＱＬ文当たりのアクセスコストを計算し、各ＳＱＬ文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算処理、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、新規スキーマアクセスコスト計算処理で仮想アクセスログ内のＳＱＬ文毎に計算されたアクセスコストとの総和をを求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算処理、および再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積処理を実行させることを特徴とする。
【発明の効果】
【００２９】
本発明によれば、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができ、ユーザが再構造化後のデータベースの構成を柔軟に設計しやすくすることができる。
【発明を実施するための最良の形態】
【００３０】
以下、本発明の実施例を図面を参照して説明する。【００３１】
実施例１．
図２は、本発明の第１の実施例を示すブロック図である。本発明のデータベース再構造化支援システムは、入力装置１０１と、支援処理装置１１０と、情報を記憶する記憶装置１２０とを備える。また、支援処理装置１１０には、出力装置１０２が接続されている。出力装置１０２は、データベース再構造化支援システムの一部として設けられていてもよい。【００３２】
入力装置１０１は、例えばキーボードやマウス等の入力デバイスである。入力装置１０１には、データベースの構成の変更内容がユーザによって入力される。具体的には、既に記憶装置１２０に記憶されているデータベース内のスキーマ（既存スキーマと記す。）を指定する情報、および指定された既存スキーマから生成される新規スキーマを定義するＳＱＬ文が入力装置１０１に入力される。この入力は、データベースを現状の構成から新規スキーマを含む構成に変更するという変更を意味している。【００３３】
記憶装置１２０は、再構造化の対象となるデータベース１２２と、データベース１２２へのアクセスの履歴情報であるログＤＢ１２１とを記憶している。記憶装置１２０は、例えばハードディスクによって実現される。ここで、アクセスログについて説明する。アクセスログはＳＱＬ文で記述された質問の集合である。ここでは、データベースに対する操作のことを質問（またはクエリ）という。ＳＱＬ文は、ｓｅｌｅｃｔ文、ｗｈｅｒｅ文、ｆｒｏｍ文等から構成される。データベースに対してＳＱＬ文を用いた操作が行われると、そのデータベースのアクセスログにそのＳＱＬ文が追加される。蓄積されたデータベースのアクセスログの集合がログＤＢ１２１である。【００３４】
図３は、アクセスログの例を示す説明図である。データベースのスキーマ構成が｛ｒ１，ｒ２，ｒ３，ｒ４｝であるとする。すなわち、データベースに含まれるスキーマがｒ１，ｒ２，ｒ３，ｒ４であるとする。図３に例示するアクセスログｑ１，ｑ２，ｑ３は、このデータベースのアクセスログの例である。図３に例示したアクセスログｑ１，ｑ２，ｑ３は、いずれもｓｅｌｅｃｔ文、ｗｈｅｒｅ文、ｆｒｏｍ文を含んでいる。ｑ１は、スキーマｑ１，ｑ２に関連するアクセスログである。ｑ２は、スキーマｑ１，ｑ４に関連するアクセスログである。ｑ３は、ｑ３に関連するアクセスログである。【００３５】
なお、集合やその集合に属する要素を記す際、集合は大文字で記し、その集合の要素は小文字で記すこととする。【００３６】
また、データベース１２２には、カタログ情報も含まれている。図４は、カタログ情報を示す説明図である。カタログ情報とは、テーブルのタプル数、タプルのヘッダサイズ、テーブルの属性集合、テーブルの属性集合に属する各属性のサイズ、テーブルの属性集合に属する各属性の値の種類（バリエーション）の数、ファイルシステムのブロックサイズ、およびブロックヘッダのサイズである。このうち、テーブルのタプル数、タプルのヘッダサイズ、テーブルの属性集合、テーブルの属性集合に属する各属性のサイズ、テーブルの属性集合に属する各属性の値の種類（バリエーション）の数を、データベースのカタログ情報と呼ぶ。また、ファイルシステムのブロックサイズと、ブロックヘッダのサイズとをファイルシステムのカタログ情報と呼ぶ。ファイルシステムとはデータベース１２２の管理領域である。カタログ情報は、蓄積コストとアクセスコストの計算に用いられる。タプルのヘッダサイズ、テーブルの属性集合に属する各属性のサイズ、ファイルシステムのブロックサイズおよびブロックヘッダのサイズの単位は、例えば、バイトである。以下、上記の各サイズの単位がバイトである場合を例にして説明する。【００３７】
なお、図４に示す各記号は、それぞれの情報を表す記号である。例えば、テーブルｒの属性集合は、図４に示すように「ｒ．Ａ」と記す。また、テーブルｒの属性集合Ａに属する属性ａｉの値の種類の数は、図４に示すように「Ｖ（ｒ，ａｉ）」と記す。Ｖ（ｒ，ａｉ）は、属性ａｉの値として実際にデータベース１２２に含まれている値の種類数であり、ａｉのとり得る値の種類ではない。例えば、あるテーブルの属性として「年齢」があり、その値のとり得る範囲が１８〜６０であったとしても、データベース１２２のテーブルｒ内に「年齢」の値として「４０」、「４５」、「４８」の３種類しか含まれていなければＶ（ｒ，年齢）は３となる。【００３８】
カタログ情報は、データベース１２２に含まれている。従って、記憶装置１２２は、データベース１２２とともにカタログ情報も記憶している。【００３９】
支援処理装置１１０は、プログラムに従って動作する情報処理装置である。支援処理装置１１０は、統合コスト見積手段１１１と、蓄積コスト見積手段１１２と、アクセスコスト見積手段１１３を、可視化手段１１４とを含む。【００４０】
蓄積コスト見積手段１１２は、再構造化前および再構造化後それぞれの蓄積コストを計算する。蓄積コストとは、テーブルのデータを蓄積するために必要となる記憶装置１２２のブロック数である。【００４１】
蓄積コスト見積手段１１２は、再構造化前および再構造化後それぞれの蓄積コストとして、スキーマの蓄積コストと、データベースの蓄積コストを計算し、計算した各蓄積コストを統合コスト見積手段１１１に返す。データベースはスキーマの集合であるので、データベースの蓄積コストは、各スキーマの蓄積コストの和である。【００４２】
アクセスコスト見積手段１１３は、ログＤＢ１２１を解析して、再構造化前および再構造化後それぞれのアクセスコストを計算する。アクセスコストとは、データベースに格納されているデータを参照するためのリレーション操作でアクセスされる記憶装置１２２のブロック数の和である。リレーション操作とは、射影、選択、結合、積、ユニオン、インターセクションである。【００４３】
アクセスコスト見積手段１１３は、再構造化前および再構造化後それぞれのアクセスコストとして、スキーマのアクセスコストと、データベースのアクセスコストを計算し、計算した各アクセスコストを統合コスト見積手段１１１に返す。【００４４】
蓄積コスト見積手段１１２は、再構造化後の蓄積コストを求めるとき、実際にデータベースを再構造化することなく蓄積コストを見積り、その見積り結果を再構造化後の蓄積コストとする。同様に、アクセスコスト見積手段１１３は、再構造化後のアクセスコストを求めるとき、実際にデータベースを再構造化することなくアクセスコストを見積り、その見積り結果を再構造化後のアクセスコストとする。蓄積コスト見積手段１１２およびアクセスコスト見積手段１１３の処理の詳細については後述する。【００４５】
統合コスト見積手段１１１は、アクセスコストと蓄積コストとを統合したコストである統合コストを計算する。統合コスト見積手段１１１は、再構造化前のデータベースの蓄積コストおよびアクセスコストを統合して、再構造化前のデータベースの統合コストを計算する。同様に、再構造化後のデータベースの蓄積コストおよびアクセスコストを統合して、再構造化後のデータベースの統合コストを計算する。また、再構造化前のスキーマの蓄積コストおよびアクセスコストを統合して、再構造化前のスキーマの統合コストを計算する。同様に、再構造化後のスキーマの蓄積コストおよびアクセスコストを統合して、再構造化後のスキーマの統合コストを計算する。統合コスト見積手段１１１は、アクセスコスト見積手段１１３および蓄積コスト見積手段１１２が計算した各アクセスコストと各蓄積コストと、それらを統合して計算した各統合蓄積コストを可視化手段１１４に渡す。【００４６】
可視化手段１１４は、統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像を表示するためのドキュメントを作成する。このドキュメントは、例えば、ＨＴＭＬ（HyperText Markup Language ）等で記述されるWebページである。以下、可視化手段１１４がＷｅｂページを作成する場合を例にして説明する。【００４７】
可視化手段１１４は、スキーマの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成する。このとき、可視化手段１１４は、複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストを比較するグラフを作成する。複数種類のスキーマとは、例えば既存スキーマと新規スキーマである。可視化手段１１４は、そのグラフと、コストをグラフ化した各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する。スキーマ構成情報とは、スキーマの属性を示す情報であり、スキーマがビューである場合には条件もスキーマ構成情報に含まれる。【００４８】
また、可視化手段１１４は、データベースの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成する。このとき、可視化手段１１４は、複数種類のデータベースの統合コスト、アクセスコスト、蓄積コストを比較するグラフを作成する。複数種類のデータベースとは、例えば既存スキーマの集合であるデータベースと、新規スキーマを含むデータベースである。可視化手段１１４は、そのグラフと、各データベースのデータベース構成情報と、データベースに含まれる各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する。データベース構成情報とは、各データベースに含まれているスキーマを示す情報である。すなわち、データベースがどのスキーマの集合であるのかを示す情報である。スキーマ構成情報については、既に説明した通りである。【００４９】
また、可視化手段１１４は、スキーマのコストの表示ドキュメント内には、データベースのコストの表示ドキュメントへのハイパーリンクを設定する。同様に、データベースのコストの表示ドキュメント内には、スキーマのコストの表示ドキュメントへのハイパーリンクを設定する。【００５０】
可視化手段１１４は、作成したドキュメントを出力装置１０２に出力する。可視化手段１１４は、例えば、出力装置１０２からの要求に応じてドキュメントを出力装置１０２に出力する。【００５１】
出力手段１０２は、例えば、ブラウザを搭載しディスプレイ装置を備えた情報処理装置であり、可視化手段１１４が作成したドキュメントに基づいて、ブラウザにより画面を表示する。【００５２】
統合コスト見積手段１１１、蓄積コスト見積手段１１２、アクセスコスト見積手段１１３、および可視化手段１１４は、例えば、プログラムに従って動作するＣＰＵによって実現される。統合コスト見積手段１１１、蓄積コスト見積手段１１２、アクセスコスト見積手段１１３、および可視化手段１１４が同一のＣＰＵによって実現されてもよい。プログラムは、支援処理装置１１０が備えるプログラム記憶装置（図示せず。）に記憶される。ＣＰＵは、そのプログラムを読み込み、プログラムに従って統合コスト見積手段１１１、蓄積コスト見積手段１１２、アクセスコスト見積手段１１３、および可視化手段１１４として動作する。また、出力装置１０２がディスプレイ装置であって、処理支援装置１１０にブラウザが搭載され、そのブラウザに従って、ＣＰＵがディスプレイ装置（出力装置１０２）にＷｅｂページを表示させてもよい。【００５３】
次に、動作について説明する。
図５は、本発明の処理経過の例を示す流れ図である。まず、統合コスト見積手段１１１には、入力装置１０１を介して、ユーザから既存スキーマを指定する情報と、指定された既存スキーマを統合して生成される新規スキーマの定義するＳＱＬ文とが入力される（ステップＡ１）。すなわち、ステップＡ１では、記憶装置１２０に記憶されたデータベース１２２にある既存スキーマの集合（Ｄとする）の選択と、その既存スキーマ集合Ｄを操作して生成される新規スキーマ集合Ｄ’の定義の入力が行われる。【００５４】
図６は、既存スキーマおよび既存スキーマから生成される新規スキーマの例を示す。既存スキーマの中に、ＩＤ、氏名および所属を属性とする既存スキーマｒ１と、ＩＤ、氏名、年齢および住所を属性とする既存スキーマｒ２とがあるとする。例えば、ユーザが既存スキーマｒ１，ｒ２から、ＩＤ、氏名、所属、年齢および住所を属性とする新規スキーマｓを作成した場合の統合コスト、蓄積コストおよびアクセスコストを調べようとしているとする。この場合、統合コスト見積手段１１１には、入力装置１０１を介して、既存スキーマｒ１，ｒ２を指定する情報が入力される。さらに、新規スキーマｓを定義する定義文７１（図６参照）が入力される。既存スキーマを指定する情報や新規スキーマの定義文の入力態様は、特に限定されない。【００５５】
また、ステップＡ１では、統合コスト見積手段１１１には、入力装置１０１を介して、新規スキーマの名称も入力される。さらに、再構造化後にも残っている既存スキーマを指定する情報も入力される。【００５６】
さらに、ステップＡ１では、アクセスコストおよび蓄積コストから統合コストを計算する際にアクセスコストおよび蓄積コストに対する重み付けを行うためのパラメータも入力される。【００５７】
ステップＡ１の後、統合コスト見積手段１１１は、ステップＡ１で入力された情報（既存スキーマの集合を指定する情報および新規スキーマの定義文）を、蓄積コスト見積手段１１２およびアクセスコスト見積手段１１３それぞれに渡す。また、統合コスト見積手段１１１は、アクセスコスト見積手段１１３に対しては、ステップＡ１で入力された新規スキーマの名称も渡す。また、蓄積コスト見積手段１１２に対しては、再構造化後にも残っている既存スキーマを指定する情報も渡す。そして、統合コスト見積手段１１１は、蓄積コスト見積手段１１２に再構造化前および再構造化後それぞれの蓄積コストを計算させる。また、アクセスコスト見積手段１１３に再構造化前および再構造化後それぞれのアクセスコストを計算させる。【００５８】
蓄積コスト見積手段１１２は、再構造化前および再構造化後それぞれの蓄積コストを計算し、統合コスト見積手段１１１に返す（ステップＡ２）。すなわち、現状での個々のスキーマの蓄積コストおよびデータベースの蓄積コストを計算し、また、新規スキーマを生成した場合における新規スキーマの蓄積コストおよびデータベースの蓄積コストを計算する。【００５９】
また、アクセスコスト見積手段１１３は、再構造化前および再構造化後それぞれのアクセスコストを計算し、統合コスト見積手段１１１に返す（ステップＡ３）。すなわち、現状での個々のスキーマのアクセスコストおよびデータベースのアクセスコストを計算し、また、新規スキーマを生成した場合における新規スキーマのアクセスコストおよびデータベースのアクセスコストを計算する。【００６０】
続いて、統合コスト見積手段１１１は、蓄積コストとアクセスコストとを統合した統合コストを計算する（ステップＡ４）。ステップＡ４では、統合コスト見積手段１１１は、各スキーマ毎に再構造化前における蓄積コストとアクセスコストとを統合し、再構造化前のスキーマ毎の統合コストを計算する。また、各スキーマ毎に再構造化後における蓄積コストとアクセスコストとを統合し、再構造化後のスキーマ毎の統合コストを計算する。さらに、統合コスト見積手段１１１は、再構造化前におけるデータベースの蓄積コストとアクセスコストとを統合し、再構造化前のデータベースの統合コストを計算する。また、再構造化後におけるデータベースの蓄積コストとアクセスコストとを統合し、再構造化後のデータベースの統合コストを計算する。【００６１】
続いて、可視化手段１１４は、既存スキーマと新規スキーマそれぞれの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像とともに各スキーマのスキーマ構成情報を表示する画面のドキュメントを作成する。また、既存スキーマの集合であるデータベースと、新規スキーマを含むデータベースそれぞれの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像と、各データベースのデータベース構成情報と、データベースに含まれる各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する（ステップＡ５）。【００６２】
出力装置１０２は、可視化手段１１４によって作成されたドキュメントに応じて、グラフ、スキーマ構成情報、データベース構成情報を表示する画面を表示する。ユーザは、この画面を確認して、ユーザ自身が想定した新規スキーマを作成した場合のスキーマやデータベース全体のアクセスコスト、蓄積コストおよび統合コストを確認し、また、現状のアクセスコスト、蓄積コストおよび統合コストからの変化を確認し、新規スキーマがコストの点からみて適切であるか否かを検討することができる。【００６３】
次に、コストの計算について説明する。
まず、アクセスコスト見積手段１１３が現状（すなわち再構造化前）のアクセスコストを計算する動作について説明する。アクセスコスト見積手段１１３は、アクセスログとなるＳＱＬ文毎にアクセスコストを算出する。このＳＱＬ文は、リレーション操作を表すＳＱＬ文である。すなわち、図３に例示するｑ１，ｑ２，ｑ３のようなＳＱＬ文である。アクセスコスト見積手段１１３は、アクセスコスト算出対象となるスキーマに関するＳＱＬ文毎に算出したアクセスコストの和としてスキーマのアクセスコストを計算する。また、データベースのアクセスログ内のＳＱＬ文毎に算出したアクセスコストの和としてデータベースのアクセスコストを計算する。【００６４】
図７は、リレーション操作を表すＳＱＬ文毎にアクセスコストを算出する動作の例を示す流れ図である。アクセスコスト見積手段１１３は、リレーション操作を表すＳＱＬ文ｑを、リレーション操作の系列を示す質問木に変換する（ステップＳ１）。一般的に、ＳＱＬ文に含まれるｓｅｌｅｃｔ文は射影に対応し、ｗｈｅｒｅ文は選択または結合に対応し、ｆｒｏｍ文は結合またはユニオンまたは積に対応する。従って、ステップＳ１では、アクセスコスト見積手段１１３は、テーブルまたはビューをリーフとし、結合とユニオンと積とインターセクションについてはリーフの親ノードとし、射影をルートとし、選択を中間ノードとして、ＳＱＬ文内の各リレーション操作を木構造で示した質問木を生成する。ＳＱＬ文をリレーション操作の系列（質問木）に変換する手法については、非特許文献１に記載されている。【００６５】
ステップＳ１の後、アクセスコスト見積手段１１３は、個々のリレーション操作後のタプル数を計算する（ステップＳ２）。あるリレーション操作後のタプル数は、直後のリレーション操作でアクセスさせるタプル数である。また、最初のリレーション操作でアクセスされるタプル数は、操作対象となるテーブルのタプル数である。アクセスコスト見積手段１１３は、ステップＳ２において、質問木のリーフ（テーブル）に近いノードから順に、リレーション操作後のタプル数を計算する。【００６６】
例えば、１０００タプルのテーブルに対して、最初にあるリレーション操作を行ったとし、そのリレーション操作後のタプル数が１００であるとする。このリレーション操作でアクセスされるタプル数は１０００タプルである。さらに、次のリレーション操作が行われる場合、そのリレーション操作でアクセスされるタプル数は、直前のリレーション操作後のタプル数１００である。このように、リレーション操作毎に、リレーション操作後のタプル数を求めることで、アクセスされるタプル数の和を求めることができる。【００６７】
また、リレーション操作前のタプル数とは、その直前のリレーション操作後のタプル数である。最初に行われるリレーション操作前のタプル数は、操作対象となるテーブルの数である。【００６８】
アクセスコスト見積手段１１３は、ステップＳ１で生成した質問木に含まれる各リレーション操作に対して、リレーション操作後のタプル数を計算する。このリレーション操作後のタプル数の計算について説明する。なお、リレーション操作後のタプル数の計算については、非特許文献１に記載されている。また、以下の説明では、リレーション操作後のタプル数をＴと記す。また、ｒや、ｒに添え字を付したｒ１，ｒ２等は、操作対象であるリレーションを意味する。また、Ｖ（ｒ，ａ）は、リレーションｒ中に出現する属性ａの値の種類数である。ここで、Ｖ（ｒ，ａ）は、属性ａのとり得る値の種類数ではなく、実際に操作対象のリレーションに含まれる値の種類数である。また、ｃはスカラーであるものとする。Ｔ（ｒ）は、操作対象のリレーションのタプル数であり、以下に示す各式の右辺に記すＴ（ｒ）は、リレーション操作前のタプル数である。アクセスコスト見積手段１１３は、射影、選択、積、ユニオン、インターセクションというリレーション操作の種類
に応じて、以下に示すようにリレーション操作後のタプル数を計算する。【００６９】
射影（π）の場合の計算について説明する。リレーション操作が射影（π）である場合、アクセスコスト見積手段１１３はリレーション操作後のタプル数を下記の式４により求める。【００７０】
Ｔ＝Ｔ（ｒ）                                                          （式４）【００７１】
すなわち、リレーション操作が射影（π）である場合、リレーション操作後のタプル数は、リレーション操作前のタプル数と等しい値である。【００７２】
次に、選択（σ）の場合の計算について説明する。リレーション操作が選択（σ）である場合、アクセスコスト見積手段１１３は、選択条件式に応じて、リレーション操作後のタプル数を計算する。【００７３】
選択条件式がａ＝ｃである場合（すなわち「属性ａの値がｃである」という条件の場合）、アクセスコスト見積手段１１３は、以下に示す式５によってリレーション操作後のタプル数を求める。すなわち、リレーション操作前のタプル数を、リレーションｒ中に出現する属性ａの値の種類数で除算することによって、リレーション操作後のタプル数を計算する。【００７４】
Ｔ＝Ｔ（ｒ）／Ｖ（ｒ，ａ）                                            （式５）【００７５】
選択条件式がａ≠ｃである場合（すなわち「属性ａの値がｃでない」という条件の場合）、アクセスコスト見積手段１１３は、以下に示す式６によってリレーション操作後のタプル数を求める。【００７６】
Ｔ＝Ｔ（ｒ）−Ｔ（ｒ）／Ｖ（ｒ，ａ）                                  （式６）【００７７】
選択条件がａ＞ｃである場合（すなわち「属性ａの値がｃより大きい」という条件の場合）、アクセスコスト見積手段１１３は、以下に示す式７によってリレーション操作後のタプル数を求める。すなわち、リレーション操作前のタプル数を３で除算することによって、リレーション操作後のタプル数を計算する。【００７８】
Ｔ＝Ｔ（ｒ）／３                                                      （式７）【００７９】
リレーション操作が複数の選択条件式の積（論理積）に応じた選択である場合、アクセスコスト見積手段１１３は、以下に示す式８によってリレーション操作後のタプル数を求める。【００８０】
Ｔ＝（Ｔ１＊Ｔ２＊Ｔ３＊・・・＊Ｔｎ）／Ｔ（ｒ）ｎ−１                （式８）【００８１】
ただし、式８において、Ｔｉ（ｉ＝１〜ｎ）は、ｉ番目の選択条件式のみに基づく選択を行うとした場合のリレーション操作後のタプル数である。式８は、リレーション操作前のタプル数Ｔ（ｒ）に対するそれぞれの条件のみに基づく選択を行う場合のリレーション操作後のタプル数の比（Ｔｉ／Ｔ（ｒ））の積に、Ｔ（ｒ）を乗じることを意味している。なお、記号「＊」は乗算を意味する。【００８２】
また、リレーション操作が複数の選択条件式の和（論理和）に応じた選択である場合、アクセスコスト見積手段１１３は、以下に示す式９によってリレーション操作後のタプル数を求める。【００８３】
Ｔ＝Ｔ（ｒ）＊（１−（１−Ｔ１／Ｔ（ｒ））（１−Ｔ２／Ｔ（ｒ））・・・（１−Ｔｎ／Ｔ（ｒ）））                                                        （式９）【００８４】
式９のＴ１〜Ｔｎは、式８のＴ１〜Ｔｎと同様である。すなわち、ｉ番目の選択条件式のみに基づく選択を行うとした場合のリレーション操作後のタプル数である。【００８５】
結合の場合の計算について説明する。ただし、結合は自然結合とみなし、結合の順序を考慮しないものとする。【００８６】
スキーマｒ１の属性ａの値がスキーマｒ２の属性ｂの値と等しいという条件（ｒ１．ａ＝ｒ２．ｂ）でｒ１とｒ２を結合する場合（１つの共通属性のある場合）、アクセスコスト見積手段１１３は、以下に示す式１０によってリレーション操作後のタプル数を求める。なお、スキーマｒ１の属性ａの値がスキーマｒ２の属性ｂの値と等しいという条件でｒ１とｒ２を結合する場合の例として、「ＩＤ、氏名、年齢、住所」を属性とする第１テーブルと、「社員ＩＤ、給料、ボーナス」を属性とする第２テーブルとを、第１テーブルのＩＤと第２テーブルの社員ＩＤとが等しいという条件で結合する場合等が挙げられる。【００８７】
Ｔ＝Ｔ（ｒ１）＊Ｔ（ｒ２）／ｍａｘ（Ｖ（ｒ１，ａ），Ｖ（ｒ２，ｂ））  
（式１０）【００８８】
Ｔ（ｒ１），Ｔ（ｒ２）は、それぞれｒ１，ｒ２のタプル数である。ｍａｘ（）は、括弧内の値のうち最大の値を示す関数である。従って、ｍａｘ（Ｖ（ｒ１，ａ），Ｖ（ｒ２，ａ））は、Ｖ（ｒ１，ａ）とＶ（ｒ２，ａ）のうち、大きい方の値を示す。なお、ｒ１．ａのように、スキーマの記号と属性の記号とをピリオドで結んだ場合、スキーマの属性を表すものとする。【００８９】
ｒ１．ａ１＝ｒ２．ｂ１，ｒ１．ａ２＝ｒ２．ｂ２，・・・，ｒ１．ａｎ＝ｒ２．ｂｎという条件でｒ１とｒ２を結合する場合（２つ以上の共通属性がある場合）、アクセスコスト見積手段１１３は、以下に示す式１１によってリレーション操作後のタプル数を求める。【００９０】
Ｔ＝Ｔ（ｒ１）＊Ｔ（ｒ２）／（ｍａｘ（Ｖ（ｒ１，ａ１），Ｖ（ｒ２，ｂ１））＊ｍａｘ（Ｖ（ｒ１，ａ２），Ｖ（ｒ２，ｂ２））＊・・・＊ｍａｘ（Ｖ（ｒ１，ａｎ），Ｖ（ｒ２，ｂｎ））
（式１１）【００９１】
また、ｒ１，ｒ２，ｒ３，・・・，ｒｎを結合する場合、アクセスコスト見積手段１１３は、以下に示す式１２および式１３によって、Ｐ１，Ｐ２を計算して、リレーション操作後のタプル数を求める。【００９２】
【数１】
2008139936.tif 000003
【００９３】
Ｐ２＝ｍｉｎ（Ｖ（ｒｉ，ａ１））＊ｍｉｎ（Ｖ（ｒｉ，ａ２））＊・・・＊ｍｉｎ（Ｖ（ｒｉ，ａｍ））                                                （式１３）【００９４】
ただし、式１３におけるｍｉｎ（）は、ｉを変動させたときの最小値を示す関数である。また、（ｒｉ，ａｊ）≠０である。また、ｉ，ｊは、それぞれ以下のような値である。【００９５】
ｉ＝１，・・・，ｎ【００９６】
ｊ＝１，・・・，ｍ【００９７】
また、ａｊは、ａｊ∈ｒ１∪ｒ２∪・・・∪ｒｎを満たす属性である。【００９８】
アクセスコスト見積手段１１３は、Ｐ１，Ｐ２を求めたならば、Ｐ１をＰ２で除算した値であるＰを計算し、Ｐ（＝Ｐ１／Ｐ２）を用いて、以下に示す式１４により、リレーション操作（本例では結合）後のタプル数を計算する。【００９９】
Ｔ＝Ｔ（ｒ１）＊Ｔ（ｒ２）・・・Ｔ（ｒｎ）／Ｐ                      （式１４）【０１００】
次に、積の場合の計算について説明する。リレーション操作がｒ１とｒ２との積（ｒ１×ｒ２）である場合、アクセスコスト見積手段１１３はリレーション操作後のタプル数を下記の式１５により求める。【０１０１】
Ｔ＝Ｔ（ｒ１）＊Ｔ（ｒ２）                                          （式１５）【０１０２】
次に、ユニオンの場合の計算について説明する。リレーション操作がｒ１とｒ２とのユニオン（ｒ１∪ｒ２）である場合、アクセスコスト見積手段１１３はリレーション操作後のタプル数を下記の式１６により求める。【０１０３】
Ｔ＝（Ｔ（ｒ１）＋Ｔ（ｒ２）＋ｍａｘ（Ｔ（ｒ１），Ｔ（ｒ２）））／２  （式１６）【０１０４】
次に、インターセクションの場合の計算について説明する。リレーション操作がｒ１とｒ２とのインターセクション（ｒ１∩ｒ２）である場合、アクセスコスト見積手段１１３はリレーション操作後のタプル数を下記の式１７により求める。つまり、リレーション操作の結合と見なしてリレーション操作後のタプル数を計算する。ただし、式１７におけるｒｋは、ｒ１とｒ２のジョイン（リレーション操作の結合）の結果である。【０１０５】
Ｔ＝Ｔ（ｒｋ）                                                      （式１７）【０１０６】
ステップＳ１で生成した質問木に含まれる各リレーション操作に対して、リレーション操作後のタプル数を計算した後（ステップＳ２の後）、アクセスコスト見積手段１１３は、データベースのカタログ情報およびファイルシステムのカタログ情報を用いて、各リレーション操作でアクセスされるタプル数Ｔをそれぞれブロック数（Ｂとする。）に変換する。具体的には、アクセスコスト見積手段１１３は、以下に示す式１８によってタプル数Ｔをブロック数Ｂに変換する（ステップＳ３）。【０１０７】
Ｂ＝ＩＮＴ（Ｔ／ｉｎｔ（（ｂ−ｂｈ）／（ｈ＋Σｓｉｚｅ（ａｉ））））（式１８）【０１０８】
式１８においてｂはファイルシステムのブロックサイズであり、ｂｈはブロックヘッダのサイズである（図４参照）。また、ｈはタプルのヘッダサイズであり、ｓｉｚｅ（ａｉ）は、タプルｔ＝（ａ１，ａ２，・・・，ａｎ）に属する個々の属性のサイズであり、Σｓｉｚｅ（ａｉ）はその総和（ａ１・・・ａｎの各属性のサイズの総和）である。また、式１８におけるＩＮＴ（）は括弧内の値を切り上げる関数であり、ｉｎｔ（）は括弧内の値を切り捨てる関数である。例えば、ＩＮＴ（１０．２）＝１１，ｉｎｔ（１０．２）＝１０である。【０１０９】
各リレーション操作でアクセスされるタプル数Ｔをそれぞれブロック数に変換した後、アクセスコスト見積手段１１３は、ＳＱＬ文ｑのアクセスコストｃｏｓｔ（ｑ）として、そのブロック数の和を求める（ステップＳ４）。このブロック数の総和が、ＳＱＬ文ｑのアクセスコストｃｏｓｔ（ｑ）である。【０１１０】
図８は、ＳＱＬ文のアクセスコストの計算例を示す説明図である。図８に示すように、ｓｅｌｅｃｔ文、ｆｒｏｍ文およびｗｈｅｒｅ文を含むＳＱＬ文８１のアクセスコストを計算するものとする。また、ＳＱＬ文８１に記載されたテーブルのタプル数Ｔは、１００００であるとする。アクセスコスト見積手段１１３は、ＳＱＬ文８１に記載されたテーブル（本例では社員表）をリーフとし、ＳＱＬ文８１を質問木８２に変換する。本例では、リレーション操作である選択（σ年齢＞４０）と、射影（π氏名，住所）とを含み、社員表をリーフとする質問木８２を作成する。【０１１１】
最初のリレーション操作（σ年齢＞４０）前のタプル数はテーブル（社員表）のタプル数であり、１００００である。リレーション操作（σ年齢＞４０）でアクセスされるタプル数は、この１００００である。アクセスコスト見積手段１１３は、このタプル数を用いて、最初のリレーション操作（σ年齢＞４０）後のタプル数を求める。このリレーション操作は「選択」であり、選択条件式は「年齢＞４０」であるので、アクセスコスト見積手段１１３は、式７によって、１００００／３という計算でタプル数を求める。このリレーション操作（σ年齢＞４０）後のタプル数１００００／３は、直後の射影（π氏名，住所）でアクセスされるタプル数である。【０１１２】
アクセスコスト見積手段１１３は、リレーション操作でアクセスされる上記の各タプル数１００００，１００００／３をそれぞれ式１８に従って計算する。このときアクセスコスト見積手段１１３は、式１８に含まれるｂ，ｂｈ，ｈ，ｓｉｚｅ（ａｉ）についてはデータベース１２２に含まれるカタログ情報の値を用いる。【０１１３】
アクセスコスト見積手段１１３は、式１８を用いて、タプル数１００００から選択時にアクセスされるブロック数Ｂσを計算する。ここでは、Ｂσ＝１０００ブロックであったとする。同様に、アクセスコスト見積手段１１３は、式１８を用いて、タプル数１００００／３から射影時にアクセスされるブロック数Ｂπを計算する。ここでは、Ｂπ＝３３４ブロックであったとする。【０１１４】
アクセスコスト見積手段１１３は、ステップＳ４でこれらのブロック数の和を求め、与えられたＳＱＬ文８１のアクセスコストを求める。本例では１０００＋３３４＝１３３４ブロックである。【０１１５】
アクセスコスト見積手段１１３は、アクセスログに含まれる他のＳＱＬ文についても同様にアクセスコストを計算する。【０１１６】
アクセスコスト見積手段１１３は、ステップＳ１〜Ｓ４で計算した各ＳＱＬ文のアクセスコストからスキーマのアクセスコスト、データベースのアクセスコストを計算する。【０１１７】
アクセスコストの計算対象となるスキーマのアクセスログをＱ（Ｓ）とする。スキーマのアクセスコストは、Ｑ（Ｓ）に含まれるＳＱＬ文のアクセスコストの総和である。よって、アクセスコスト見積手段１１３は、Ｑ（Ｓ）に含まれるＳＱＬ文のアクセスコストの総和としてスキーマのアクセスコストを計算する。すなわち、アクセスコスト見積手段１１３は、以下に示す式１９によってスキーマのアクセスコストを計算する。ただし、ｃｏｓｔａｃｃｅｓｓ（Ｓ）は、スキーマのアクセスコストである。【０１１８】
【数２】
2008139936.tif 000004
【０１１９】
データベースのアクセスコストは、データベースのアクセスログに含まれるＳＱＬ文のアクセスコストの総和である。よって、アクセスコスト見積手段１１３は、データベースのアクセスログ（Ｑ（Ｄ）とする。）に含まれるＳＱＬ文のアクセスコストの総和としてデータベースのアクセスコストを計算する。すなわち、アクセスコスト見積手段１１３は、以下に示す式２０によってデータベースのアクセスコストを計算する。ただし、ＣＯＳＴａｃｃｅｓｓ（Ｄ）は、データベースのアクセスコストである。【０１２０】
【数３】
2008139936.tif 000005
【０１２１】
次に、アクセスコスト見積手段１１３が再構造化後のスキーマおよびデータベースのアクセスコストを計算する動作について説明する。ただし、アクセスコスト見積手段１１３は、データベースの再構造化を実際に行うことなく、再構造化後のアクセスコストを計算する。上述のように、アクセスコストを計算するためにアクセスログとカタログ情報とを用いるが、実際に再構造化されていないデータベースに関してはアクセスログやカタログ情報が用意されていないので、アクセスコスト見積手段１１３は、再構造化前のデータベースのアクセスログやカタログ情報から、再構造化後のデータベースの仮想的なアクセスログやカタログ情報を作成する。ただし、仮想的なカタログ情報の一部（新規テーブルのタプル数）は蓄積コスト見積手段１１２が作成する。仮想的なアクセスログおよびカタログ情報を用いて計算したアクセスコストを仮想アクセスコストと記す。【０１２２】
仮想カタログ情報および仮想アクセスログを生成した後、アクセスコスト見積手段１１３は、その仮想カタログ情報および仮想アクセスログを用いて再構造化後のスキーマやデータベースのアクセスログを計算すればよい。ただし、再構造化の前後で変更のないスキーマに関連するアクセスログも用いてデータベースのアクセスコストを計算する必要がある場合がある。以下、仮想カタログ情報および仮想アクセスログを作成する動作を説明する。【０１２３】
まず、仮想カタログ情報を生成する動作について説明する。図４に示すようにデータベースのカタログ情報には、テーブルのタプル数、タプルのヘッダサイズ“ｈ”、属性のサイズ“ｓｉｚｅ（ａｉ）”、各属性の値の種類の数等があるが、そのうちデータベースの再構造化によって変化するのは、タプル数と、属性の値の種類の数である。また、ファイルシステムのカタログ情報は、データベースの再構造化によって変化しない。従って、タプル数と、属性の値の種類の数以外については、再構造化前のカタログ情報をそのまま用いる。【０１２４】
仮想的なカタログ情報のうち、新規スキーマのタプル数は、蓄積コスト見積手段１１２が生成する。図５に示すように、蓄積コスト見積手段１１２によるステップＡ２の後にアクセスコスト見積手段１１３がステップＡ３を行うので、アクセスコスト見積手段１１３は、新規スキーマのタプル数として、蓄積コスト見積手段１１２が新規スキーマ毎に計算した新規スキーマのタプル数を用いればよい。蓄積コスト見積手段１１２が新規スキーマのタプル数を計算する動作については後述する。【０１２５】
アクセスコスト見積手段１１３は、属性の値の種類の数“Ｖ（ｓ，ａ）”を、新規スキーマの生成態様に応じて計算する。新規スキーマの生成態様として「結合」、「分割」、「既存スキーマの種類の変更」、「ＳＱＬ文ｆ（Ｒ）による新規スキーマの生成」があり、以下、これらの４つの場合におけるＶ（ｓ，ａ）の計算について説明する。【０１２６】
新規スキーマｓの生成態様が既存スキーマｒ１とｒ２との結合である場合、すなわち、既存スキーマｒ１とｒ２との結合によって新規スキーマｓが作成される場合、新規スキーマｓの属性ａの値の種類数Ｖ（ｓ，ａ）は、属性ａがどの既存スキーマの属性であるかによって以下のように計算する。以下、このＶ（ｓ，ａ）を仮想的なＶ（ｓ，ａ）と記す。【０１２７】
ａ∈ｒ１．Ａ∩ｒ２．Ａであるならば、すなわち、新規スキーマの属性ａが既存スキーマｒ１の属性でもありｒ２の属性でもあるならば、アクセスコスト見積手段１１３は、以下に示す式２１によって仮想的なＶ（ｓ，ａ）を計算する。【０１２８】
Ｖ（ｓ，ａ）＝Ｖ（ｒ１，ａ）＋Ｖ（ｒ２，ａ）−Ｖ（ｒ１，ａ）＊Ｖ（ｒ２，ａ）／ｍａｘ（Ｖ（ｒ１，ａ），Ｖ（ｒ２，ａ））                              （式２１）【０１２９】
ａ∈ｒ１．Ａであるならば、すなわち、新規スキーマの属性ａが既存スキーマｒ１，ｒ２のうちのｒ１のみの属性であるならば、アクセスコスト見積手段１１３は、以下に示す式２２によって仮想的なＶ（ｓ，ａ）を計算する。【０１３０】
Ｖ（ｓ，ａ）＝Ｖ（ｒ１，ａ）                                        （式２２）【０１３１】
ａ∈ｒ２．Ａであるならば、すなわち、新規スキーマの属性ａが既存スキーマｒ１，ｒ２のうちのｒ２のみの属性であるならば、アクセスコスト見積手段１１３は、以下に示す式２３によって仮想的なＶ（ｓ，ａ）を計算する。【０１３２】
Ｖ（ｓ，ａ）＝Ｖ（ｒ２，ａ）                                        （式２３）【０１３３】
式２１から式２３では、結合により新規スキーマを生成する場合の仮想的なＶ（ｓ，ａ）の計算を説明したが、次に、分割により新規スキーマを生成する場合の仮想的なＶ（ｓ，ａ）の計算について説明する。既存スキーマｒを新規スキーマｓ１，ｓ２に分割する場合において、アクセスコスト見積手段１１３は、各属性の値の種類数を以下のように求める。【０１３４】
ａ∈ｓ１．Ａである場合、すなわち、属性ａが新規スキーマｓ１，ｓ２のうちのｓ１の属性である場合、アクセスコスト見積手段１１３は、仮想的なＶ（ｓ１，ａ）を以下の式２４によって計算する。【０１３５】
Ｖ（ｓ１，ａ）＝Ｖ（ｒ，ａ）                                        （式２４）【０１３６】
ａ∈ｓ２．Ａである場合、すなわち、属性ａが新規スキーマｓ１，ｓ２のうちのｓ２の属性である場合、アクセスコスト見積手段１１３は、仮想的なＶ（ｓ２，ａ）を以下の式２５によって計算する。【０１３７】
Ｖ（ｓ２，ａ）＝Ｖ（ｒ，ａ）                                        （式２５）【０１３８】
また、既存スキーマｒの種類を変更して新規スキーマをｓを生成する場合（すなわち、ビューをテーブルに変換する場合）、属性の値の種類の数は変化しないので、Ｖ（ｓ，ａ）＝Ｖ（ｒ，ａ）である。すなわち、既にカタログ情報に含まれているＶ（ｒ，ａ）を、仮想的なＶ（ｓ，ａ）とすればよい。【０１３９】
ＳＱＬ文ｆ（Ｒ）を用いて新規スキーマｓを生成する場合、属性値の種類数の変化はタプル数の変化と同率であるという考えに基づいて、新規スキーマｓにおける属性ａの値の種類数を求めることができる。ここでｆ（Ｒ）とは、既存スキーマの集合Ｒに対するリレーション操作（「結合」、「選択」、「射影」等）の組み合わせを示すＳＱＬ文である。アクセスコスト見積手段１１３は、ＳＱＬ文ｆ（Ｒ）を質問木に変換し、既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率を計算する。そして、その比率を、属性値の種類数の変化率として仮想的なＶ（ｓ，ａ）を計算する。【０１４０】
アクセスコスト見積手段１１３がＳＱＬ文ｆ（Ｒ）を質問木に変換する動作は、ステップＳ１（図７参照）と同様である。また、アクセスコスト見積手段１１３は、質問木のリーフに近いノードから順にリレーション操作後のタプル数を計算し、最後のリレーション操作後のタプル数を新規スキーマｓのタプル数Ｔ（ｓ）とする。【０１４１】
また、アクセスコスト見積手段１１３は、既存スキーマ集合Ｒのタプル数を以下のように計算する。既存スキーマ集合Ｒに属する各スキーマをｒ１，ｒ２，・・・，ｒｎとする。すなわち、Ｒ＝｛ｒ１，ｒ２，・・・，ｒｎ｝であるとする。アクセスコスト見積手段１１３は、既存スキーマ集合Ｒのタプル数Ｔ（Ｒ）を、Ｔ（Ｒ）＝Ｔ（ｒ１）＋Ｔ（ｒ２）＋・・・Ｔ（ｒｎ）という計算によって求める。【０１４２】
Ｔ（ｓ）をＴ（Ｒ）で除算したＴ（ｓ）／Ｔ（Ｒ）が既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率である。【０１４３】
また、既存スキーマ集合における属性ａの値の種類数Ｖ（Ｒ，ａ）は、以下の式で表される。【０１４４】
Ｖ（Ｒ，ａ）＝ｍａｘ（Ｖ（ｒ１，ａ），Ｖ（ｒ２，ａ），・・・，Ｖ（ｒｎ，ａ））【０１４５】
従って、アクセスコスト見積手段１１３は、ＳＱＬ文ｆ（Ｒ）を用いて新規スキーマｓを生成する場合における仮想的なＶ（ｓ，ａ）を、上述のＶ（Ｒ，ａ）およびＴ（ｓ）／Ｔ（Ｒ）を用いて以下の式２６によって計算する。【０１４６】
Ｖ（ｓ，ａ）＝Ｖ（Ｒ，ａ）＊Ｔ（ｓ）／Ｔ（Ｒ）                      （式２６）【０１４７】
図９は、ＳＱＬ文ｆ（Ｒ）を用いて新規スキーマｓを生成する場合における仮想的なＶ（ｓ，ａ）の計算例を示す説明図である。本例では、ＳＱＬ文ｆ（Ｒ）が、ｓｅｌｅｃｔ文、ｆｒｏｍ文、ｗｈｅｒｅ文を含むＳＱＬ文８１（図９参照）であるものとする。また、既存スキーマ集合には社員表というテーブルが存在するものとする。【０１４８】
アクセスコスト見積手段１１３は、ステップＳ１と同様の処理によって、ＳＱＬ文８１から質問木８２を生成する。また、アクセスコスト見積手段１１３は、質問木のリーフに近いノードから順にリレーション操作後のタプル数を計算し、最後のリレーション操作後のタプル数を新規スキーマｓのタプル数Ｔ（ｓ）とする。本例では、Ｔ（ｓ）＝３３３４である。また、Ｔ（Ｒ）＝１００００であるものとする。すると、既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率は、３３３４／１００００である。従って、例えば属性が「氏名」である場合、Ｖ（ｓ，氏名）＝Ｖ（社員表，氏名）＊３３３４／１００００である。同様に、例えば属性が「住所」である場合、Ｖ（ｓ，住所）＝Ｖ（社員表，住所）＊３３３４／１００００である。【０１４９】
次に、仮想アクセスログを生成する動作について説明する。データベース構成入力（ステップＡ１）で選択されたスキーマ集合Ｒ＝｛ｒ１，ｒ２，・・・，ｒｎ｝がスキーマの統合操作によって、新しいスキーマ集合Ｓに変換される。アクセスコスト見積手段１１３は、新しいスキーマ集合Ｓのアクセスログとみなされる仮想アクセスログを以下のように生成する。なお、新しいスキーマ集合Ｓ上の仮想アクセスログをＱ’（Ｓ）と記す。図１０は、仮想アクセスログを生成する動作を示す流れ図である。【０１５０】
アクセスコスト見積手段１１３は、Ｒ上のアクセスログＱ（Ｒ）から、ｒｉ∈Ｒを含むログを収集して、変換対象集合Ｑｃ（Ｒ）を生成する。具体的には、アクセスコスト見積手段１１３は、ＲのアクセスログＱ（Ｒ）の中から、新たなスキーマの生成に用いられる既存スキーマのログを収集する（ステップＳ１１）。ここで収集されたログの集合が変換対象集合Ｑｃ（Ｒ）である。例えば、新規スキーマｓが、既存スキーマｒ１，ｒ２の結合であると定義されている場合、アクセスコスト見積手段１１３は、アクセスログの中から既存スキーマｒ１，ｒ２のログを収集して変換対象集合Ｑｃ（Ｒ）とする。【０１５１】
変換対象集合Ｑｃ（Ｒ）の生成後、アクセスコスト見積手段１１３は、Ｑｃ（Ｒ）に属するアクセスログｑを、Ｓ上の質問（Ｓに対する質問）ｑ’に変換して、新規スキーマ集合Ｓに対する仮想アクセスログＱ’（Ｓ）を生成する。なお、ｑから変換されたｑ’は仮想アクセスログである。アクセスコスト見積手段１１３は、新規スキーマの生成態様に応じて、アクセスログｑから質問ｑ’への変換を行う。既に説明したように、新規スキーマの生成態様には、「結合」、「分割」、「既存スキーマの種類の変更」、「ＳＱＬ文ｆ（Ｒ）による新規スキーマの生成」があり、以下、これらの４つの場合における質問ｑ’への変換について説明する。【０１５２】
新規スキーマが既存スキーマｒ１とｒ２との結合である場合、アクセスコスト見積手段１１３は、変換対象集合Ｑｃ（Ｒ）に属するアクセスログｑに記述されている既存スキーマｒ１，ｒ２の名称を新規スキーマの名称に書き換えた質問ｑ’を生成する（ステップＳ１２）。すなわち、ｑ内の既存スキーマの名称を表す文字列を、新規スキーマの名称を表す文字列に変換したｑ’を生成する。なお、新規スキーマの名称は、ステップＡ１で入力されている。【０１５３】
次に、アクセスコスト見積手段１１３は、質問ｑを整形する（ステップＳ１３）。具体的には、アクセスコスト見積手段１１３は、質問ｑ’内のｓｅｌｅｃｔ文において、リレーション名が新規スキーマｓの名称のみであれば、その名称の記述を省略する。また、アクセスコスト見積手段１１３は、質問ｑ’内のｆｒｏｍ文において、新規スキーマｓの記述が２箇所以上あれば、新規スキーマｓの２番目以降の記述を削除する。すなわち、ｆｒｏｍ文から新規スキーマｓに関する重複記述を削除する。また、アクセスコスト見積手段１１３は、ｗｈｅｒｅ文に自明である条件文があれば、その条件文を削除する。すなわち、ｗｈｅｒｅ文から、符号の左右の記述子が同じである条件文を削除する。【０１５４】
既存スキーマｒを新規スキーマｓ１，ｓ２に分割する場合、アクセスコスト見積手段１１３は、変換対象集合Ｑｃ（Ｒ）に属するアクセスログｑに記述されているｓｅｌｅｃｔ文、ｆｒｏｍ文、およびｗｈｅｒｅ文をそれぞれ書き換えた質問ｑ’を生成する（ステップＳ１４）。すなわち、アクセスログｑに記述された各文を書き換えたものをｑ’とする。ステップＳ１４では、まず、アクセスコスト見積手段１１３は、ｓｅｌｅｃｔ文、ｆｒｏｍ文、およびｗｈｅｒｅ文に記述されている既存スキーマｒの属性集合Ａを抽出し、以下のルールに従ってスキーマ名を書き換える。【０１５５】
抽出した属性集合Ａが新規スキーマｓ１の属性集合（ｓ１．Ａと記す。）の部分集合ならば、すなわち、Ａ⊆ｓ１．Ａならば、アクセスコスト見積手段１１３は、アクセスログｑに記述されている既存スキーマｒのスキーマ名を新規スキーマｓ１のスキーマ名に書き換える。以下、既存スキーマｒのスキーマ名を“ｒ”と記し、新規スキーマｓ１，ｓ２のスキーマ名を“ｓ１”，“ｓ２”と記す。【０１５６】
抽出属性集合Ａが新規スキーマｓ１の属性集合ｓ１．Ａの部分集合ではなく、かつ、属性集合Ａが新規スキーマｓ２の属性集合ｓ２．Ａの部分集合（すなわちＡ⊆ｓ２．Ａ）であるならば、アクセスコスト見積手段１１３は、アクセスログｑに記述されている既存スキーマの名称“ｒ”を新規スキーマの名称“ｓ２”に書き換える。【０１５７】
抽出した属性集合Ａが新規スキーマｓ１の属性集合ｓ１．Ａの部分集合でもなく、新規スキーマｓ２の属性集合ｓ２．Ａの部分集合でもない場合、アクセスコスト見積手段１１３は、抽出した属性集合ＡをＡ１（⊆ｓ１．Ａ）とＡ２（⊆ｓ２．Ａ）とに分割する。すなわち、属性集合Ａを、属性集合ｓ１．Ａに属している属性の集合Ａ１と、属性集合ｓ２．Ａに属している属性の集合Ａ２とに分割する。例えば、抽出した属性集合Ａ＝｛ａ１，ａ２，ａ３｝であり、新規スキーマｓ１の属性集合ｓ１．Ａ＝｛ａ１，ａ２｝であり、新規スキーマｓ２の属性集合ｓ２．Ａ＝｛ａ３｝であるとする。この場合、アクセスコスト見積手段１１３は、ＡをＡ１＝｛ａ１，ａ２｝と、Ａ２＝｛ａ３｝に分割する。なお、ｓ１．Ａとｓ２．Ａの両方に属する属性は、Ａ１，Ａ２の両方に含める。【０１５８】
以上のように属性集合Ａを分割した後、アクセスコスト見積手段１１３は、アクセスログ内のｓｅｌｅｃｔ文、ｆｒｏｍ文およびｗｈｅｒｅ文に記述された属性またはスキーマの名称を以下に示すように書き換える。以下、属性の名称を“”を用いて表す。例えば、属性ａの名称を“ａ”、新規スキーマｓ１の属性ｓ１．ａの名称を“ｓ１．ａ”と表す。【０１５９】
アクセスコスト見積手段１１３は、ｓｅｌｅｃｔ文に記述された属性ａがＡ１の要素であれば（すなわちａ∈Ａ１ならば）、ｓｅｌｅｃｔ文に記述されたその属性の名称“ａ”を“ｓ１．ａ”に書き換える。同様に、ｓｅｌｅｃｔ文に記述された属性ａがＡ２の要素であれば（すなわちａ∈Ａ２ならば）、その属性の名称“ａ”を“ｓ２．ａ”に書き換える。また、ｓｅｌｅｃｔ文に記述された属性ａがＡ１，Ａ２それぞれに属しているならば、その属性の名称“ａ”を“ｓ１．ａ”に書き換える。【０１６０】
また、アクセスコスト見積手段１１３は、ｆｒｏｍ文に記述されたスキーマの名称“ｒ”を、新規スキーマｓ１，ｓ２の名称“ｓ１，ｓ２”に書き換える。【０１６１】
また、アクセスコスト見積手段１１３は、ｗｈｅｒｅ文に記述された属性ａがＡ１の要素であれば（すなわちａ∈Ａ１ならば）、ｗｈｅｒｅ文に記述されたその属性の名称“ａ”を“ｓ１．ａ”に書き換える。同様に、ｗｈｅｒｅ文に記述された属性ａがＡ２の要素であれば（すなわちａ∈Ａ２ならば）、その属性の名称“ａ”を“ｓ２．ａ”に書き換える。また、ｗｈｅｒｅ文に記述された属性ａがＡ１，Ａ２それぞれに属しているならば、“ｓ１．ａ＝ｓ２．ａ”という記述を書き加える。【０１６２】
ステップＳ１４で、以上のようにｓｅｌｅｃｔ文、ｆｒｏｍ文およびｗｈｅｒｅ文をそれぞれ書き換えたアクセスログを質問ｑ’とする。続いて、アクセスコスト見積手段１１３は、質問ｑ’を整形する（ステップＳ１５）。具体的には、アクセスコスト見積手段１１３は、質問ｑ’内のｓｅｌｅｃｔ文において、リレーション名が新規スキーマの名称“ｓ１”または“ｓ２”のみであるならば、その“ｓ１”または“ｓ２”の記述を省略する。また、アクセスコスト見積手段１１３は、質問ｑ’内のｆｒｏｍ文において、新規スキーマｓ１に関する重複記述と、新規スキーマｓ２に関する重複記述を削除する。また、アクセスコスト見積手段１１３は、ｗｈｅｒｅ文に自明である条件文があれば、その条件文を削除する。すなわち、ｗｈｅｒｅ文から、符号の左右の記述子が同じである条件文を削除する。【０１６３】
ＳＱＬ文ｆ（Ｒ）を用いて新規スキーマｓを生成する場合、ＳＱＬ文ｆ（Ｒ）に応じて仮想アクセスログである質問ｑ’を生成する（ステップＳ１６）。以下、ステップＳ１６におけるアクセスコスト見積手段１１３の動作について説明する。【０１６４】
ＳＱＬ文ｆ（Ｒ）が既存スキーマの削除を示している場合、新規スキーマのアクセスコストを計算する必要がないため、削除されるスキーマに関連するアクセスログを単に削除し、アクセスログｑからＳ上の質問ｑ’への変換を行わない。【０１６５】
また、新規に生成されるスキーマｓがビューである場合、アクセスコストは変化しないとみなして、Ｑｃ（Ｒ）を仮想アクセスログＱ’（Ｓ）とする。【０１６６】
また、テーブルを新規に生成する場合、つまり、新規スキーマｓがＳＱＬ文ｆ（Ｒ）で定義されるテーブル（マテリアライズドビューを含む。）である場合、アクセスコスト見積手段１１３は、テーブルを定義するＳＱＬ文ｆ（Ｒ）とアクセスログｑとを比較し、ｑに存在するｆ（Ｒ）に相当する部分をｓに書き換えることによってｑ’を生成する。この処理は、具体的には以下に示すように行う。【０１６７】
アクセスコスト見積手段１１３は、ＳＱＬ文ｆ（Ｒ）とアクセスログｑを分割統治戦略に基づいてそれぞれ質問木に変換する。ＳＱＬ文ｆ（Ｒ）から変換される質問木をＧ（ｆ（Ｒ））と記す。また、アクセスログｑから変換される質問木をＧ（ｑ）と記す。分割統治戦略は、分割した質問の結果を結合して元の質問と同じ結果を得られるように、複数のスキーマへの質問を一つか二つのスキーマにしかアクセスしない質問（小さい質問と呼ぶ。）に分解する手法である。アクセスコスト見積手段１１３は、分割された小さい質問の質問木を含む質問木を生成する。分割統治戦略については、非特許文献２に記載されている。【０１６８】
アクセスコスト見積手段１１３は、アクセスログの質問木Ｇ（ｑ）に質問木Ｇ（ｆ（Ｒ））が含まれていれば、質問木Ｇ（ｑ）中における質問木Ｇ（ｆ（Ｒ））に相当する部分をｓに置換する。この置換後の質問木を縮小版質問木Ｇ’（ｑ）と記す。【０１６９】
続いて、アクセスコスト見積手段１１３は、縮小版質問木Ｇ’（ｑ）をＳＱＬ文に変換する。縮小版質問木Ｇ’（ｑ）から変換されたＳＱＬ文が質問ｑ’（仮想アクセスログ）である。一般的に、質問木のリーフはｆｒｏｍ文に対応している。選択と射影は、それぞれｗｈｅｒｅ文とｓｅｌｅｃｔ文に対応している。リーフの親ノードが結合とユニオンと積とのリレーション操作であれば、これらのノードも、ｆｒｏｍ文に対応している。アクセスコスト見積手段１１３は、この対応関係に基づいて、縮小版質問木Ｇ’（ｑ）をＳＱＬ文に変換する。すなわち、アクセスコスト見積手段１１３は、リーフ、またはリーフとその親ノードが表すｆｒｏｍ文を作成し、選択または結合を示すノードが表すｗｈｅｒｅ文を作成し、射影を示すノードが表すｓｅｌｅｃｔ文を作成することによって縮小版質問木Ｇ’（ｑ）をＳＱＬ文（質問ｑ’）に変換する。質問木からＳＱＬ文への変換については、非特許文献１，２に記載されている。【０１７０】
図１１は、新規スキーマｓがＳＱＬ文ｆ（Ｒ）で定義されるテーブル（マテリアライズドビューを含む。）である場合に質問ｑ’を生成する処理の具体例を示す説明図である。図１１において質問木中に示す記号πは、射影を示す。また、図１２は、結合を表す記号である。図１１中の質問木においても結合を表す記号として、図１２に示す記号を用いている。アクセスログｑおよびｆ（Ｒ）が、それぞれ図１１上段に示すＳＱＬ文であるとする。【０１７１】
アクセスコスト見積手段１１３は、図１１に例示するアクセスログｑを分割統治戦略に基づいて質問木Ｇ（ｑ）を生成する。図１１に例示する質問木Ｇ（ｑ）は、小さい質問ｑ０の質問木Ｇ（ｑ０）と、小さい質問ｑ１の質問木Ｇ（ｑ１）とに分解できる。また、アクセスコスト見積手段１１３は、図１１に例示するｆ（Ｒ）を分割統治戦略に基づいて質問木Ｇ（ｆ（Ｒ））を生成する。【０１７２】
Ｇ（ｑ）のうち、点線で囲んで示した部分（Ｇ（ｑ０））は、Ｇ（ｆ（Ｒ））に相当する。従って、アクセスログの質問木Ｇ（ｑ）に質問木Ｇ（ｆ（Ｒ））が含まれているので、アクセスコスト見積手段１１３は、質問木Ｇ（ｑ）中のＧ（ｆ（Ｒ））に相当する部分（点線で囲んだＧ（ｑ０））を新規スキーマを表すｓに置き換える。アクセスコスト見積手段１１３は、この置き換えによって得られた質問木をＳＱＬ文に変換することによってｑ’を導出する。【０１７３】
既存スキーマｒの種類を変更して新規スキーマをｓを生成する場合（すなわち、ビューをテーブルに変換する場合）、アクセスコスト見積手段１１３は、アクセスログｑ’中に記述された既存スキーマの名称“ｒ”を新規スキーマの名称“ｓ”に変換する（ステップＳ１７）。この結果、質問ｑ’が得られる。【０１７４】
以上のように、図１０に示す処理によって生成された質問ｑ’が仮想アクセスログＱ’（Ｓ）である。【０１７５】
アクセスコスト見積手段１１３は、仮想的なカタログ情報および仮想アクセスログＱ’（Ｓ）を生成した後、仮想的なカタログ情報および仮想アクセスログＱ’（Ｓ）を用いて、再構造化後のスキーマのアクセスコストおよびデータベースのアクセスコストを計算する。この処理は、計算に用いるカタログ情報およびアクセスログが仮想的なカタログ情報および仮想アクセスログＱ’（Ｓ）である点以外は、再構造化前のスキーマのアクセスコストおよびデータベースのアクセスコストを計算する処理と同様である。【０１７６】
再構造化後のデータベースのアクセスコストを求める場合、アクセスコスト見積手段１１３は、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、仮想アクセスログ内のＳＱＬ文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する。例えば、再構造化前のデータベースがスキーマｒ１，ｒ２，ｒ３を含むデータベースであり、再構造化後のデータベースがスキーマｓ１，ｒ３を含むデータベースであるとする。本例で、スキーマｓ１は、ｒ１，ｒ２の結合であるものとする。アクセスコスト見積手段１１３は、既存のアクセスログＱからｒ１，ｒ２に関連するアクセスログＱｃ（Ｒ）を選択する。アクセスコスト見積手段１１３は、このアクセスログ（変換対象集合）Ｑｃ（Ｒ）を変換して仮想アクセスログＱ’（Ｓ）を生成する。この場合、再構造化後のデータベースのアクセスログはＱ−Ｑｃ（Ｒ）∪Ｑ’（Ｓ）となる。このようなアクセスログからデータベースのアクセスコストを計算すればよいので、アクセスコスト見積手段１１３は、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のＳＱＬ文毎のアクセスコストと、仮想アクセスログ内のＳＱＬ文毎に計算したアクセスコストとの総和を求めればよい。【０１７７】
アクセスコスト見積手段１１３は、再構造化前、再構造化後それぞれにおけるスキーマおよびデータベースのアクセスコストをステップＡ３（図５参照）で行う。既に説明したように、仮想的なカタログ情報のタプル数は、蓄積コスト見積手段１１２が新規スキーマ毎に計算する。蓄積コスト見積手段１１２は、再構造化前、再構造化後それぞれにおけるスキーマおよびデータベースの蓄積コストをステップＡ２（図５参照）で行う。なお、仮想的に計算される新規スキーマのタプル数の算出もステップＡ２で行われる。以下、ステップＡ２における蓄積コスト見積手段１１２の処理について説明する。【０１７８】
まず、蓄積コスト見積手段１１２が現状（すなわち再構造化前）の蓄積コストを計算する動作について説明する。既に説明したように、蓄積コストとは、テーブルのデータを蓄積するために必要となる記憶装置１２２のブロック数である。蓄積コスト見積手段１１２は、データベースのカタログ情報およびファイルシステムのカタログ情報（図４参照）を用いて蓄積コストを計算する。【０１７９】
蓄積コストの計算対象となるテーブルをｔとし、テーブルｔの属性として、ａ１，ａ２，・・・，ａｎがあるとする。また、テーブルｔの蓄積コストをｃｏｓｔｓｔｏｒａｇｅ（ｔ）と記すこととする。蓄積コスト見積手段１１２は、テーブルｔの蓄積コストｃｏｓｔｓｔｏｒａｇｅ（ｔ）を、以下に示す式２７によって計算する。【０１８０】
【数４】
2008139936.tif 000006
【０１８１】
式２７において、ｋはテーブルｔのタプル数である。ｓｉｚｅ（ａｉ）はテーブルｔの属性のサイズである。例えば、ｓｉｚｅ（ａ１）は、テーブルｔの１番目の属性のサイズである。ｈは、タプルのヘッダサイズである。このタプルｋ、属性のサイズｓｉｚｅ（ａｉ）、およびタプルのヘッダサイズは、データベースのカタログ情報に含まれている。なお、図４では、テーブルのタプル数をＴ（ｒ）と記している。上記のｋを図４の表記にあわせればＴ（ｔ）である。また、式２７において、ｂは、ファイルシステムのブロックのサイズであり、ｂｈはそのブロックのヘッダサイズである。ｂ，ｂｈはファイルシステムのカタログ情報に含まれている。本例では、ｓｉｚｅ（ａｉ），ｈ，ｂおよびｂｈの単位はバイトである。【０１８２】
式２７は、カタログ情報を用いて１ブロックで格納できるテーブルのタプル数を計算し、その計算したタプル数で既存のテーブルのタプル数ｋを除算することによって蓄積コストを計算することを意味している。【０１８３】
図１３は、蓄積コストの計算例を示す説明図である。蓄積コストを計算しようとするテーブルｔのタプルサイズが９８バイトであったとする。タプルサイズは、テーブルｔの各属性のサイズの総和にタプルのヘッダサイズを加算した値である。また、１ブロックのブロックサイズが１０２４バイトであり、ブロックヘッダのサイズが１２バイトであったとする。また、テーブルｔのタプル数が１００００であるとする。すると、式２７により、蓄積コストは、以下のように計算される。【０１８４】
ＩＮＴ（１００００／ｉｎｔ（（１０２４−１２）／９８））＝１０００【０１８５】
このように、本例では、蓄積コストｃｏｓｔｓｔｏｒａｇｅ（ｔ）は１０００ブロックとなる。なお、上記の式内のｉｎｔ（）関数の値は、１ブロックに格納できるタプル数を表す。上記の例では、１ブロックに格納できるタプル数が、ｉｎｔ（（１０２４−１２）／９８）＝１０タプルである。テーブルｔのタプル数１００００を、１ブロックに格納できるタプル数１０で除算することにより、蓄積コストとなるブロック数を計算することができる。【０１８６】
蓄積コスト見積手段１１２は、式２７の計算により、データベースに含まれている各スキーマの蓄積コストを計算する。ただし、ビューの蓄積コストは０とする。すなわち、スキーマにはテーブルとビューがあるが、テーブルについては式２７によって蓄積コストを計算し、ビューについては蓄積コストを０とする。【０１８７】
次に、蓄積コスト見積手段１１２は、データベースの蓄積コストを、データベースに含まれているスキーマの蓄積コストの和として計算する。データベースＤ＝｛ｓ１，ｓ２，・・・，ｓｎ｝であるとする。すなわち、データベースＤに属するスキーマとして、ｓ１，ｓ２，・・・，ｓｎがあるとする。Ｄに属する個々のスキーマｓｉの蓄積コストは、上記のように求められる。すなわち、ｓｉがテーブルであれば式２７により求められ、ビューであれば０として求められる。データベースの蓄積コストＣＯＳＴｓｔｏｒａｇｅ（Ｄ）は、データベースに含まれているスキーマの蓄積コストの和であり、蓄積コスト見積手段１１２は、以下に示す式２８によってデータベースの蓄積コストＣＯＳＴｓｔｏｒａｇｅ（Ｄ）を計算する。【０１８８】
【数５】
2008139936.tif 000007
【０１８９】
次に、蓄積コスト見積手段１１２が再構造化後のスキーマおよびデータベースの蓄積コストを計算する動作について説明する。スキーマ操作によるデータベースの再構造化は、ファイルシステムに影響を及ぼさないため、再構造化を行ったとしても、ブロックサイズｂおよびブロックのヘッダサイズｂｈは変化しない。また、このようなデータベースの再構造化は、既存スキーマの操作によって行うので、変更後のスキーマの各属性のサイズ、タプルのヘッダサイズは、再構造化前の値を継承して利用可能である。そのため、再構造化後のタプル数を推定すれば、新規スキーマのコストを式２７によって計算することができる。本発明では、データベースの再構造化を実際に行わず、再構造化後における新規スキーマのタプル数を推定し、そのタプル数を用いて新規スキーマの蓄積コストを計算する。このように計算する新規スキーマの蓄積コストを仮想蓄積コストと呼ぶ。【０１９０】
以下、蓄積コスト見積手段１１２は、新規スキーマの仮想コストを、新規スキーマの生成態様に応じて計算する。既に説明したように、新規スキーマの生成態様として「結合」、「分割」、「ＳＱＬ文ｆ（Ｒ）による新規スキーマの生成」、「既存スキーマの種類の変更」があり、以下、これらの４つの場合におけるタプル数の見積計算について説明する。なお、ｘをスキーマとした場合、Ｔ（ｘ）はｘのタプル数を表しているものとする。【０１９１】
既存スキーマｒ１とｒ２との結合によって新規スキーマｓが作成される場合、蓄積コスト見積手段１１２は、以下に示す式２９によって新規スキーマｓのタプル数Ｔ（ｓ）を計算する。【０１９２】
Ｔ（ｓ）＝（Ｔ（ｒ１）＋Ｔ（ｒ２）＋ｍａｘ（Ｔ（ｒ１），Ｔ（ｒ２）））／２
（式２９）【０１９３】
新規スキーマｓ１，ｓ２が既存スキーマｒの分割によって得られる場合、蓄積コスト見積手段１１２は、新規スキーマｓ１，ｓ２のタプル数Ｔ（ｓ１），Ｔ（ｓ２）は、いずれも既存スキーマｒのタプル数Ｔ（ｒ）と等しい値とする。すなわち、Ｔ（ｓ１）＝Ｔ（ｓ２）＝Ｔ（ｒ）とする。【０１９４】
ＳＱＬ文ｆ（Ｒ）を用いて新規スキーマｓを生成する場合、蓄積コスト見積手段１１２は、以下のように新規スキーマのタプル数を求める。【０１９５】
ｆ（Ｒ）により既存スキーマが削除され、新規スキーマが生成されない場合、新規スキーマの蓄積コストの計算を行わないので、タプル数の見積は行わない。【０１９６】
ｆ（Ｒ）により作成される新規スキーマがビューである場合、蓄積コスト見積手段１１２は、そのビューの蓄積コストを０とする。よって、タプル数の見積は行わない。【０１９７】
ｆ（Ｒ）によりテーブルを新規作成する場合、つまり、新規スキーマがテーブル（マテリアライズドビューを含む。）である場合、蓄積コスト見積手段１１２は、新規のテーブルｓを定義するＳＱＬ文ｆ（Ｒ）で返される結果のタプル数を新規スキーマのタプル数とする。例えば、新規テーブルｓが、図１４に例示するＳＱＬ文で定義されたとする。また、Ｔ（ｒ１）＝１０００，Ｔ（ｒ２）＝１００００，Ｖ（ｒ１，ＩＤ）＝１０００，Ｖ（ｒ２，ＩＤ）＝１００００とする。この場合、図１４に示すＳＱＬ文で返されるタプル数は１０００となるので、新規テーブルのタプル数を１０００とする。【０１９８】
なお、ＳＱＬ文で返される結果のタプル数は、アクセスコスト見積手段１１３がステップＳ１，Ｓ２（図７参照）でタプル数を求める処理と同様の処理で求めればよい。【０１９９】
既存スキーマｒの種類を変更して新規スキーマをｓを生成する場合（すなわち、ビューをテーブルに変換する場合）、蓄積コスト見積手段１１２はＳＱＬ文ｆ（Ｒ）によりテーブルを新規作成する場合と同様の計算により、新規ビューのタプル数を計算する。すなわち、アクセスコスト見積手段１１３がステップＳ１，Ｓ２（図７参照）でタプル数を求める処理と同様の処理の処理によって、ＳＱＬ文ｆ（Ｒ）を解析して新規ビューのタプル数を計算する。【０２００】
以上のように新規スキーマの生成態様に応じて新規スキーマのタプル数を計算したならば、蓄積コスト見積手段１１２は、そのタプル数を用いて、式２７によって仮想蓄積コストを計算する。タプル数以外のカタログ情報は、再構造化前のスキーマの蓄積コストの計算に用いた値を用いればよい。以上の処理によって、再構造化によって新たに得られる新規スキーマの蓄積コストが得られる。なお、再構造化によって変化しないスキーマの蓄積コストは、再構造化前におけるそのスキーマの蓄積コストと同じ値である。【０２０１】
また、蓄積コスト見積手段１１２は、再構造化後のデータベースの蓄積コストを計算する。蓄積コスト見積手段１１２は、再構造化後のデータベースに含まれる各スキーマの蓄積コストの和として、再構造化後のデータベースの蓄積コストを算出する。再構造化後のデータベースに含まれる各スキーマには、新規スキーマの他に、既存のスキーマが含まれる場合もある。再構造化後にデータベースに残る既存のスキーマは、予めユーザに指定される。再構造化後にデータベースに残っている既存のスキーマを指定する情報は、例えばステップＡ１で統合コスト見積手段１１１に入力され、統合コスト見積手段１１１がその情報を蓄積コスト見積手段１１２に渡す。蓄積コスト見積手段１１２は、計算した新規スキーマのコストに、予め指定されたユーザされた既存スキーマの蓄積コストを加算して、再構造化後のデータベースの蓄積コストを計算する。【０２０２】
なお、蓄積コスト見積手段１１２は、以上のように新規スキーマのタプル数を計算したならば、そのタプル数の情報をアクセスコスト見積手段１１３に渡す。既に説明したように、アクセスコスト見積手段１１３は、このタプル数を用いて再構造化後のアクセスコストを計算する。【０２０３】
次に、ステップＡ４において統合コスト見積手段１１１が統合コストを計算する動作について説明する。まず、スキーマの統合コストの計算について説明する。統合コスト見積手段１１１は、データベースに含まれるスキーマ毎に、蓄積コスト見積手段１１２に計算された蓄積コストと、アクセスコスト見積手段１１３に計算されたアクセスコストを統合して統合コストを計算する。データベースに含まれるあるスキーマｓの蓄積コストおよびアクセスコストをそれぞれｃｏｓｔｓｔｏｒａｇｅ（ｓ）、ｃｏｓｔａｃｃｅｓｓ（ｓ）とする。統合コスト見積手段１１１は、このスキーマの統合コスト（ＣＯＳＴ（ｓ）とする。）を、以下に示す式３０により計算する。【０２０４】
ＣＯＳＴ（ｓ）＝α＊ｃｏｓｔｓｔｏｒａｇｅ（ｓ）＋β＊ｃｏｓｔａｃｃｅｓｓ（ｓ）
（式３０）【０２０５】
式３０において、α，βは、アクセスコストおよび蓄積コストに対する重み付けを行うためのパラメータであり、ステップＡ１でユーザから入力装置１０１に入力される。αは蓄積コストに重み付けを行うためのパラメータであり、βはアクセスコストに重み付けを行うためのパラメータである。式３０に示すように、統合コスト見積手段１１１は、ｃｏｓｔｓｔｏｒａｇｅ（ｓ）にαを乗じた値と、ｃｏｓｔａｃｃｅｓｓ（ｓ）にβを乗じた値との和を統合コストとして計算する。よって、αの値が大きいほど蓄積コストを重視した統合コストが計算され、βの値が大きいほどアクセスコストを重視した統合コストが計算される。従って、ユーザは、データベースの再構造化の検討のために蓄積コストを重視した統合コストを得たい場合にはαとして大きな値を入力し、アクセスコストを重視した統合コストを得たい場合にはβとして大きな値を入力すればよい。【０２０６】
蓄積コスト見積手段１１２は、式３０によって、再構造化前のデータベースに属する各スキーマ毎に統合コストを計算する。同様に、再構造化後のデータベースに属する各スキーマについてもそれぞれ統合コストを計算する。【０２０７】
次に、データベースの統合コストの計算について説明する。統合コスト見積手段１１１は、蓄積コスト見積手段１１２に計算されたデータベースの蓄積コストと、アクセスコスト見積手段１１３に計算されたデータベースのアクセスコストを統合して統合コストを計算する。データベースの蓄積コスト、データベースのアクセスコストをそれぞれＣＯＳＴｓｔｏｒａｇｅ（Ｄ）、ＣＯＳＴａｃｃｅｓｓ（Ｄ）とすると、統合コスト見積手段１１１は、以下に示す式３１により、データベースの統合コスト（ＣＯＳＴｉｎｔ（Ｄ）とする。）を計算する。【０２０８】
ＣＯＳＴｉｎｔ（Ｄ）＝α＊ＣＯＳＴｓｔｏｒａｇｅ（Ｄ）＋β＊ＣＯＳＴａｃｃｅｓｓ（Ｄ）
（式３１）【０２０９】
式３１におけるα，βは、式３０におけるα、βと同じパラメータである。【０２１０】
統合コスト見積手段１１１は、式３１によって、再構造化前の蓄積コストＣＯＳＴｓｔｏｒａｇｅ（Ｄ）とアクセスコストＣＯＳＴａｃｃｅｓｓ（Ｄ）から、再構造化前の統合コストＣＯＳＴｉｎｔ（Ｄ）を計算する。同様に、統合コスト見積手段１１１は、式３１によって、再構造化後の蓄積コストＣＯＳＴｓｔｏｒａｇｅ（Ｄ）とアクセスコストＣＯＳＴａｃｃｅｓｓ（Ｄ）から、再構造化後の統合コストＣＯＳＴｉｎｔ（Ｄ）を計算する。【０２１１】
次に、ステップＡ５において可視化手段１１４が統合コスト、アクセスコスト、蓄積コストのグラフを表示する画面のドキュメントを作成する動作について説明する。【０２１２】
可視化手段１１４は、データベースの統合コスト、アクセスコスト、蓄積コストをデータベースの構成毎に示すグラフを作成する。図１５は、このようなグラフの例を示す説明図である。可視化手段１１４は、例えば、図１５に示すように横軸にデータベースの構成を示し、縦軸方向に各データベース構成における統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを作成する。以下、このようなグラフをデータベースコストグラフと記す。図１５に示す例では、「現案」は、再構造化前の現状のデータベースの構成を表している。また、「案１」および「案２」は、それぞれ再構造化後のデータベースの構成を指している。すなわち、ここでは、ステップＡ１において再構造化後のデータベースの構成として「案１」および「案２」の２種類が指定され、再構造化後のデータベースの各コストとして「案１」、「案２」のデータベース構成の各コストが計算されている場合の例を示している。【０２１３】
また、可視化手段１１４は、複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストをそれぞれ表示するグラフを作成する。図１６は、このようなグラフの例を示す説明図である。可視化手段１１４は、例えば、図１６に示すように横軸にスキーマを示し、縦軸方向に各スキーマの統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを作成する。以下、このようなグラフをスキーマコストグラフと記す。図１６に示す例では、既存スキーマｒ２および新規スキーマｓ１，ｓ２それぞれの統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを例示している。図１６では、ｒ２，ｓ１，ｓ２の各コストを表示するグラフを例示しているが、可視化手段１１４によって作成される複数種類のスキーマの各コストを表示するグラフは一種類に限定されない。【０２１４】
可視化手段１１４は、データベースコストグラフおよびスキーマコストグラフを作成し、さらにそのデータベースコストグラフを表示するＷｅｂページと、スキーマコストグラフを表示するＷｅｂページを作成する。【０２１５】
図１７は、データベースコストグラフを表示するＷｅｂページの例を示す説明図である。可視化手段１１４は、データベースコストグラフを表示するＷｅｂページに、各データベースに含まれているスキーマを示すデータベース構成情報９１と、各データベースに属する各スキーマの属性を示すスキーマ構成情報９２とを含める。図１７に例示するデータベース構成情報９１は、例えば、「現案」となるデータベースにはｒ１，ｒ２が含まれていること等を示している。また、図１７に例示するスキーマ構成情報９２は、例えば、スキーマｓ１の属性がＩＤ、氏名および年齢であること等を示している。データベースコストグラフは画像であり、データベース構成情報９１およびスキーマ構成情報９２は例えば、文字列である。可視化手段１１４は、ＨＴＭＬ等のマークアップ言語で定められた書式で、画像であるデータベースコストグラフや、例えば文字列であるデータベース構成情報９１およびスキーマ構成情報９２の表示を指示するドキュメントを作成する。【０２１６】
図１８は、スキーマコストグラフを表示するＷｅｂページの例を示す説明図である。可視化手段１１４は、スキーマコストグラフを表示するＷｅｂページに、グラフで示した各スキーマの属性を示すスキーマ構成情報９２を含める。図１８に例示するスキーマ構成情報９２は、例えば、スキーマｓ１の属性がＩＤ、氏名および年齢であること等を示している。【０２１７】
また、可視化手段１１４は、各Ｗｅｂページに、他のＷｅｂページへのハイパーリンクを含めておく。【０２１８】
可視化手段１１４は、データベースコストグラフを表示するＷｅｂページ中に、コストを表示した各データベースに属するスキーマのスキーマコストグラフを表示するＷｅｂページへのハイパーリンクを設定する。図１７に示す例では、「案１へ」、「案２へ」、「現案へ」という文字列がハイパーリンクの設定箇所である。可視化手段１１４は、例えば、「案１へ」という文字列には、「案１」の構成に含まれる新規スキーマのコストを表示するＷｅｂページへのハイパーリンクを設定する。【０２１９】
可視化手段１１４は、スキーマコストグラフを表示するＷｅｂページ中に、データベースコストグラフを表示するＷｅｂページへのハイパーリンクを設定する。図１８に示す例では、「データベースコストグラフへ」という文字列がハイパーリンクの設定箇所である。可視化手段１１４は、例えば、「データベースコストグラフへ」という文字列に、データベースコストグラフを表示するＷｅｂページへのハイパーリンクを設定する。【０２２０】
なお、可視化手段１１４は、Ｗｅｂページの中に、マークアップ言語で定められた所定の書式で文字列を記述することで、文字列にハイパーリンクを設定する。【０２２１】
ステップＡ６において出力装置１０２は、可視化手段１１４が作成したドキュメントの記述に従ってＷｅｂページを表示する。例えば、図１７や図１８に例示するＷｅｂページを表示する。【０２２２】
なお、本例では、Ｗｅｂページを表示する場合を示したが、スキーマコストグラフやデータベースコストグラフを表示する画面はＷｅｂページに限定されない。【０２２３】
本発明によれば、アクセスコストと、蓄積コストとをそれぞれ独立に計算し、アクセスコストと蓄積コストとを統合した統合コストを計算する。従って、ユーザは、アクセスコストだけでなく、アクセスコストおよび蓄積コストの両方を考慮して、データベースのコストの適否を確認することができ、再構造化後のデータベースの構成を柔軟に設計しやすくなる。【０２２４】
また、本発明では、アクセスコスト見積手段１１３は、アクセスコストを計算するときにタプル数をブロック数に変換し、ブロック数を単位とするアクセスコストを計算する。また、蓄積コストの単位もブロック数である。従って、アクセスコストおよび蓄積コストの単位が揃っているので、蓄積コストとアクセスコストとを統合した統合コストを計算することができる。【０２２５】
また、統合コスト見積手段１１１には、入力装置１０１を介して、蓄積コストに重み付けを行うためのパラメータであるαと、アクセスコストに重み付けを行うためのパラメータであるβとが入力される。そして、統合コスト見積手段１１１は、αと蓄積コストとの積と、βとアクセスコストとの積との和を統合コストとして計算する。従って、ユーザは、αやβの値を自由に設定することができ、統合コスト見積手段１１１はユーザから入力されたパラメータα，βに応じて、蓄積コストを重視した統合コストやアクセスコストを重視した統合コストを計算することができる。従って、ユーザは、蓄積コストを重視した統合コストやアクセスコストを重視した統合コスト等、所望の統合コストを確認することができ、再構造化後のデータベースの構成を柔軟に設計しやすくなる。【０２２６】
また、本発明では、データベースの再構造化を実際に行わずに、再構造化後の蓄積コストやアクセスコストを計算する。すなわち、蓄積コスト見積手段１１２は、新規スキーマのタプル数の見積計算を行い、そのタプル数と既存のカタログ情報とを用いて蓄積コストを計算する。また、アクセスコスト見積手段１１３は、新規スキーマにおける仮想的なＶ（ｓ，ａ）を計算し、そのＶ（ｓ，ａ）と、新規スキーマのタプル数と、既存のカタログ情報とを用いてアクセスコストを計算する。このように、実際にデータベースの再構造化を行うことなく、コストを見積ることができるので、再構造化後のデータベース構成の候補として様々な候補を用意して、それらの各候補におけるコストを容易に計算することができる。【０２２７】
また、本発明では、蓄積コスト見積手段１１２は、データベースの蓄積コストだけでなく、スキーマの蓄積コストも計算する。同様に、アクセスコスト見積手段１１３は、データベースのアクセスコストだけでなく、スキーマのアクセスコストも計算する。また、統合コスト見積手段１１１は、データベースの統合コストだけでなく、スキーマの統合コストも計算する。このように、データベースのコストとスキーマのコストを計算するので、ユーザは、データベース全体のコストだけでなく、スキーマレベルのコストも分析することができる。その結果、ユーザは、データベースの蓄積効率とアクセス効率に与える影響が大きいスキーマを容易に発見することができ、データベースのさらなる改良を支援することができる。【０２２８】
また、可視化手段１１４は、データベースコストグラフを示すＷｅｂページや、スキーマコストグラフを示すＷｅｂページを作成し、それらのＷｅｂページが出力装置１０２で表示される。従って、ユーザは各データベース構成や、各スキーマにおける蓄積コスト、アクセスコストおよび統合コストを容易に判断することができ、データベースの最適な構成を直感的に選択・決定することができる。【０２２９】
また、データベースコストグラフを示すＷｅｂページには、スキーマコストグラフを示すＷｅｂページへのハイパーリンクを設定し、スキーマコストグラフを示すＷｅｂページにはデータベースコストグラフを示すＷｅｂページへのハイパーリンクを設定するので、データベース全体のコストとスキーマレベルのコストとをそれぞれ確認しやすくすることができる。【０２３０】
実施例２．
図１９は、本発明の第２の実施例を示すブロック図である。第１の実施例と同様の構成要素については図２と同一の符号を付し、詳細な説明を省略する。【０２３１】
第２の実施例のデータベース再構造化支援システムは、入力装置１０１と、支援処理装置１１０と、可視化装置１３０と、記憶装置１２０とを備える。第２の実施例では、支援処理装置１１０に可視化手段１１４は含まれず、可視化手段１１４の代わりに可視化手段１１４と同様の処理を行う可視化装置１３０を支援処理装置１１０とは別に備える。【０２３２】
可視化装置１３０は、例えばプログラムに従って動作する情報処理装置によって実現され、第１の実施例における可視化手段１１４と同様に動作する。【０２３３】
本実施例では、統合コスト見積手段１１１は、各データベースや各スキーマの統合コスト、蓄積コスト、アクセスコスト、データベース構成情報およびスキーマ構成情報を可視化装置１３０に出力する。可視化装置１３０は、統合コスト見積手段１１１から入力されたこれらの情報を用いて、第１の実施例における可視化手段１１４と同様に、データベースコストグラフを表示するＷｅｂページのドキュメントと、スキーマコストグラフを表示するＷｅｂページのドキュメントとを作成する。可視化装置１３０は、作成した各Ｗｅｂページのドキュメントを出力装置１０２に出力し、出力装置１０２は、Ｗｅｂページを表示する。可視化装置１３０は、例えば、出力装置１０２からの要求に応じてＷｅｂページのドキュメントを出力装置１０２に出力する。【０２３４】
また、本実施例では、統合コスト見積手段１１１は、計算したコストを示すテキスト（文字列）を出力装置１０２に直接出力してもよい。出力装置１０２は、そのテキストを表示する。例えば、統合コスト見積手段１１１が、各データベースの統合コスト、蓄積コスト、アクセスコストを示すテキストと、各スキーマの統合コスト、蓄積コスト、アクセスコストを示すテキストとを出力装置１０２に出力し、出力装置１０２がそれらのテキストをそれぞれ表示してもよい。【０２３５】
このとき、統合コスト１１１は、各データベースや各スキーマに対してコストに基づいた順位付けを行い、その順番に、統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置１０２に出力してもよい。例えば、統合コストの値の昇順（降順でもよい。）に各データベースの構成（再構造化前、再構造化後の各データベース構成）を順位付けし、その順位に従って統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置１０２に出力してもよい。具体例を挙げると、再構造化前のデータベース構成の統合コストが最小であったならば、再構造化前のデータベース構成における統合コスト、蓄積コスト、アクセスコストを示すテキストを最初に出力装置１０２に出力し、以降、同様に、他のデータベース構成における統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置１０２に出力する。【０２３６】
本実施例によれば、グラフとは別に統合コスト、蓄積コスト、アクセスコストの具体的な値を文字列としてユーザに提示することができる。また、例えば、統合コストに基づいて、各データベースの構成の順位付けを行うことで、最適なデータベース構成を自動的に決定することができる。【０２３７】
また、可視化装置１３０がコスト見積装置１１０とは独立の装置として設けられるので、コスト見積装置１１０の処理負荷が軽減され、コスト見積装置１１０において上述の順位付けなどの処理を容易に行うことができる。【０２３８】
なお、第１の実施例においても、統合コスト見積手段１１１がコストを示すテキストを出力装置１０２に直接出力し、出力装置１０２がそのテキストを表示してもよい。この場合においても、統合コスト見積手段１１１は、上述の場合と同様に、コストに基づく順位付けを行って、その順番に、各データベースや各スキーマの統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置１０２に出力してもよい。【０２３９】
各実施例において、データベース記憶手段、ログ記憶手段およびカタログ情報記憶手段は、記憶装置１２０によって実現される。入力手段は、入力装置１０１によって実現される。既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段および新規データベース蓄積コスト計算手段は、蓄積コスト見積手段１１２によって実現される。既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段および新規データベースアクセスコスト計算手段は、アクセスコスト見積手段１１３によって実現される。統合コスト見積手段は、統合コスト見積手段１１１によって実現される。また、第１パラメータはαによって実現され、第２パラメータはβによって実現される。
【産業上の利用可能性】
【０２４０】
本発明は、データベースのパフォーマンスを分析する装置やプログラム、データベースを最適化するための装置やプログラム、あるいは、データベースの設計、管理、保守を支援するための装置やプログラムに好適に適用される。【０２４１】
この出願は、２００７年５月１１日に出願された日本出願特願２００７−１２７２６１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図面の簡単な説明】
【０２４２】
【図１】データベースの再構造化の例を示す説明図である。
【図２】本発明の第１の実施例を示すブロック図である。
【図３】アクセスログの例を示す説明図である。
【図４】カタログ情報を示す説明図である。
【図５】本発明の処理経過の例を示す流れ図である。
【図６】既存スキーマおよび既存スキーマから生成される新規スキーマの例を示す説明図である。
【図７】ＳＱＬ文毎にアクセスコストを算出する動作の例を示す流れ図である。
【図８】ＳＱＬ文のアクセスコストの計算例を示す説明図である。
【図９】仮想的なＶ（ｓ，ａ）の計算例を示す説明図である。
【図１０】仮想アクセスログを生成する動作を示す流れ図である。
【図１１】新規スキーマｓがＳＱＬ文ｆ（Ｒ）で定義されるテーブルである場合に質問ｑ’を生成する処理の具体例を示す説明図である。
【図１２】結合を表す記号を示す図である。
【図１３】蓄積コストの計算例を示す説明図である。
【図１４】新規テーブルを定義するＳＱＬ文の例を示す説明図である。
【図１５】データベースの統合コスト、アクセスコスト、蓄積コストをデータベースの構成毎に示すグラフの例を示す説明図である。
【図１６】複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストをそれぞれ表示するグラフの例を示す説明図である。
【図１７】データベースコストグラフを表示するＷｅｂページの例を示す説明図である。
【図１８】スキーマコストグラフを表示するＷｅｂページの例を示す説明図である。
【図１９】本発明の第２の実施例を示すブロック図である。
【符号の説明】
【０２４３】
１０１    入力装置
１０２    出力装置
１１０    支援処理装置
１１１    統合コスト見積手段
１１２    蓄積コスト見積手段
１１３    アクセスコスト見積手段
１１４    可視化手段
１２０    記憶装置
１２１    ログＤＢ
１２２    データベース
１３０    可視化装置
【図１】
2008139936.tif 000008
【図２】
2008139936.tif 000009
【図３】
2008139936.tif 000010
【図４】
2008139936.tif 000011
【図５】
2008139936.tif 000012
【図６】
2008139936.tif 000013
【図７】
2008139936.tif 000014
【図８】
2008139936.tif 000015
【図９】
2008139936.tif 000016
【図１０】
2008139936.tif 000017
【図１１】
2008139936.tif 000018
【図１２】
2008139936.tif 000019
【図１３】
2008139936.tif 000020
【図１４】
2008139936.tif 000021
【図１５】
2008139936.tif 000022
【図１６】
2008139936.tif 000023
【図１７】
2008139936.tif 000024
【図１８】
2008139936.tif 000025
【図１９】
2008139936.tif 000026
【国際調査報告】
2008139936.tif 000027
2008139936.tif 000028