JP5071478B2 - データベース構造化支援システム - Google Patents

データベース構造化支援システム Download PDF

Info

Publication number
JP5071478B2
JP5071478B2 JP2009514101A JP2009514101A JP5071478B2 JP 5071478 B2 JP5071478 B2 JP 5071478B2 JP 2009514101 A JP2009514101 A JP 2009514101A JP 2009514101 A JP2009514101 A JP 2009514101A JP 5071478 B2 JP5071478 B2 JP 5071478B2
Authority
JP
Japan
Prior art keywords
cost
schema
access
database
storage
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2009514101A
Other languages
English (en)
Other versions
JPWO2008139936A1 (ja
Inventor
強 馬
義英 石黒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2009514101A priority Critical patent/JP5071478B2/ja
Publication of JPWO2008139936A1 publication Critical patent/JPWO2008139936A1/ja
Application granted granted Critical
Publication of JP5071478B2 publication Critical patent/JP5071478B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Description

本発明は、データベースの最適化の設計を支援するデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラムに関し、特にデータベースの再構造化の設計を支援するデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラム関する。
従来のデータベースの最適化技術は、非特許文献1と非特許文献2に詳しく記載されている。データベースの最適化技術には、データベースの再構造化、質問最適化、索引の最適化、データ配置の最適化など様々な手法がある。
データベースの再構造化とは、データへのアクセスとデータ蓄積の効率を向上させるためデータベースが保持するデータのあり方を変更することである。データベースが保持するデータのあり方とは、データのスキーマ、およびスキーマの種類、スキーマの数である。従って、データベースの構成(データのあり方)は、スキーマ集合で表すことができる。本明細書では、データベースは関係データベースを指す。そして、スキーマは、属性集合、または属性集合と条件集合とのペアであると定義する。スキーマ、属性集合、条件集合をそれぞれS,A,Cとし、属性集合Aと条件集合Cとのペアを(A,C)とすれば、上記のスキーマの定義は、以下に示す式1で表される。ただし、「|」は、「または」を意味する。
S:=A|(A,C) (式1)
また、属性集合A、条件集合Cは、それぞれ以下に示す式2、式3で表される。
A:=attribute+ (式2)
C:=(LOP+(attribute COP (attribute|value)))+
(式3)
ただし、「attribute」は属性を表し、「value」は属性値を表す。また、「+」の記号は、その記号の左側の内容が0回以上出現することを意味する。また、COPは比較演算子を意味し、LOPは論理演算子を意味する。比較演算子COPの種類として、“>”,“<”,“=”,“≦”,“≧”,“≠”がある。また、論理演算子として、“and(論理積)”,“or(論理和)”,“not(否定)”がある。
式2は、属性集合Aが0個以上の属性(attribute)からなる集合として定義されることを意味している。また、式3は、条件集合CがLOP(論理演算子)、属性(attribute)、COP(比較演算子)、およびスカラー値(value)を含む0個以上の条件式の集合として定義されることを意味している。
属性集合Aは属性の集合であり、換言すれば、属性集合Aは関係データベースのテーブルを表すことができる。例えば、「氏名」、「年齢」等の属性の集合{氏名,年齢}は「氏名」と「年齢」から構成される「テーブル」を表すことができる。
属性集合Aと条件集合Cとのペア(A,C)は、「ビュー」を表す。「ビュー」は、テーブルの一部を取り出したり合成したりした仮想的な表である。例えば、条件式が「年齢40才以上」を意味している場合、(A,C)は、属性集合Aであるテーブルから「年齢40才以上」という条件を満たす部分だけを取りだしたビューを意味する。なお、ここで示した「氏名」や「年齢」等は属性の例示であり、属性は「氏名」や「年齢」に限られるわけではない。
なお、比較演算子COPや論理演算子の種類は、上述の通りであるので、これらの演算子の種類を式で表すと、以下のようになる。
COP:=“>”|“<”|“=”|“≦”|“≧”|“≠”
LOP:=“and”|“or”|“not”
関係データベースの再構造化は、スキーマ操作を通して、データベースのスキーマ集合を更新することである。本明細書では、関係データベースの再構造化のスキーマ操作を、結合、分割、作成・削除、および種類変換の4種類に分類して定義する。
「結合」は、二つ以上のスキーマを一つのスキーマにマージする操作であり、SQL(Structured Query Language)文の完全外部結合に相当する。
「分割」は、一つのスキーマを二つ以上のスキーマに分割する操作である。
「作成」は、新しいスキーマを定義して生成する操作である。「削除」は、既存スキーマの削除操作である。
「種類変換」は、ビューをテーブルに変換するための操作である。
図1は、データベースの再構造化の例を示す説明図である。図1では、データの関連性と利用頻度に基づいて、テーブル1とテーブル2とを1つのテーブル3にマージする場合を例示している。図1に示す例では、Xという共通の属性を持つ2つのテーブルを再構造化して1つのテーブルとしている。再構造化では、このようにスキーマ構成を変更して、データベースを最適化することができる。
データベースの再構造化システムは、従来から多数提案されている(例えば、特許文献1〜4参照。)。これらの従来のシステムでは、データベース上のアクセスログを解析し、アクセスコストに基づいてビュー(マテリアライズドビュー(Materialized View )、索引付きビュー)を自動生成・推薦することでデータのアクセス効率の向上を図っている。つまり、新しいスキーマ(ビュー)を作成して、データベースを再構造化する。
また、特許文献5には、データベースマネジメントシステムがデータベースにアクセスするときにどのようなプランでアクセスを行うのかをコストを元に決定する計算機システムが記載されている。
米国特許第7007006号明細書 米国特許第6546381号明細書 米国特許出願公開第2005/0198019A1号明細書 米国特許出願公開第2005/0198013A1号明細書 特開2006−127418号公報 ヘクター・ガラシアモリナ(Hector Garcia-Molina)、ジェフリー・D・ウルマン(Jeffrey D.Ullman)、ジェニファー・ウィダム(Jennifer Widom)著、「データベースシステムズ:ザ・コンプリートブック(Database Systems: the Complete Book)」、米国、Prentice Hall、2002年、p.787−835 C.J.デイト(C.J.Date)著、藤原譲監訳、「データベースシステム概論原書6版」、丸善株式会社、1997年、p.547−571
従来のデータベース再構造化システムでは、アクセスコストだけに基づくデータベースの再構造化を行っていたため、リソースの制限、利用要求やデータ特性に応じた柔軟なデータベース構成を設計することが困難であった。
また、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができることが好ましい。
そこで、本発明は、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができ、ユーザが再構造化後のデータベースの構成を柔軟に設計しやすくすることができるデータベース再構造化支援システム、データベース再構造化支援方法およびデータベース再構造化支援プログラムを提供することを目的とする。
本発明のデータベース再構造化支援システムは、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段と、ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算手段と、既存スキーマ蓄積コスト計算手段が計算した各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出手段と、新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算手段と、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算手段と、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算手段と、既存スキーマアクセスコスト計算手段がアクセスログ内のSQL文毎に計算したアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算手段と、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算手段と、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算手段が仮想アクセスログ内のSQL文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算手段と、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積手段とを備えたことを特徴とする。
また、本発明のデータベース再構造化支援方法は、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたデータベース再構造化支援システムに適用されるデータベース再構造化支援方法であって、既存スキーマ蓄積コスト計算手段が、ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算し、既存データベース蓄積コスト算出手段が、既存スキーマ蓄積コスト計算手段に計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算し、新規スキーマ蓄積コスト計算手段が、新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算し、新規データベース蓄積コスト計算手段が、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算し、既存スキーマアクセスコスト計算手段が、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算し、既存データベースアクセスコスト計算手段が、既存スキーマアクセスコスト計算手段によってアクセスログ内のSQL文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算し、新規スキーマアクセスコスト計算手段が、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算し、新規データベースアクセスコスト計算手段が、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算手段によって仮想アクセスログ内のSQL文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算し、統合コスト見積手段が、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算することを特徴とする。
また、本発明のデータベース再構造化支援プログラムは、データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するコンピュータであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたコンピュータに搭載されるデータベース再構造化支援プログラムであって、コンピュータに、ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算処理、既存スキーマ蓄積コスト計算処理で計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出処理、新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算処理、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算処理、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算処理、既存スキーマアクセスコスト計算処理でアクセスログ内のSQL文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算処理、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算処理、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算処理で仮想アクセスログ内のSQL文毎に計算されたアクセスコストとの総和をを求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算処理、および再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積処理を実行させることを特徴とする。
本発明によれば、実際にデータベースを再構造化することなく、再構造化後のコストを見積もることができ、ユーザが再構造化後のデータベースの構成を柔軟に設計しやすくすることができる。
以下、本発明の実施例を図面を参照して説明する。
実施例1.
図2は、本発明の第1の実施例を示すブロック図である。本発明のデータベース再構造化支援システムは、入力装置101と、支援処理装置110と、情報を記憶する記憶装置120とを備える。また、支援処理装置110には、出力装置102が接続されている。出力装置102は、データベース再構造化支援システムの一部として設けられていてもよい。
入力装置101は、例えばキーボードやマウス等の入力デバイスである。入力装置101には、データベースの構成の変更内容がユーザによって入力される。具体的には、既に記憶装置120に記憶されているデータベース内のスキーマ(既存スキーマと記す。)を指定する情報、および指定された既存スキーマから生成される新規スキーマを定義するSQL文が入力装置101に入力される。この入力は、データベースを現状の構成から新規スキーマを含む構成に変更するという変更を意味している。
記憶装置120は、再構造化の対象となるデータベース122と、データベース122へのアクセスの履歴情報であるログDB121とを記憶している。記憶装置120は、例えばハードディスクによって実現される。ここで、アクセスログについて説明する。アクセスログはSQL文で記述された質問の集合である。ここでは、データベースに対する操作のことを質問(またはクエリ)という。SQL文は、select文、where文、from文等から構成される。データベースに対してSQL文を用いた操作が行われると、そのデータベースのアクセスログにそのSQL文が追加される。蓄積されたデータベースのアクセスログの集合がログDB121である。
図3は、アクセスログの例を示す説明図である。データベースのスキーマ構成が{r1,r2,r3,r4}であるとする。すなわち、データベースに含まれるスキーマがr1,r2,r3,r4であるとする。図3に例示するアクセスログq1,q2,q3は、このデータベースのアクセスログの例である。図3に例示したアクセスログq1,q2,q3は、いずれもselect文、where文、from文を含んでいる。q1は、スキーマq1,q2に関連するアクセスログである。q2は、スキーマq1,q4に関連するアクセスログである。q3は、q3に関連するアクセスログである。
なお、集合やその集合に属する要素を記す際、集合は大文字で記し、その集合の要素は小文字で記すこととする。
また、データベース122には、カタログ情報も含まれている。図4は、カタログ情報を示す説明図である。カタログ情報とは、テーブルのタプル数、タプルのヘッダサイズ、テーブルの属性集合、テーブルの属性集合に属する各属性のサイズ、テーブルの属性集合に属する各属性の値の種類(バリエーション)の数、ファイルシステムのブロックサイズ、およびブロックヘッダのサイズである。このうち、テーブルのタプル数、タプルのヘッダサイズ、テーブルの属性集合、テーブルの属性集合に属する各属性のサイズ、テーブルの属性集合に属する各属性の値の種類(バリエーション)の数を、データベースのカタログ情報と呼ぶ。また、ファイルシステムのブロックサイズと、ブロックヘッダのサイズとをファイルシステムのカタログ情報と呼ぶ。ファイルシステムとはデータベース122の管理領域である。カタログ情報は、蓄積コストとアクセスコストの計算に用いられる。タプルのヘッダサイズ、テーブルの属性集合に属する各属性のサイズ、ファイルシステムのブロックサイズおよびブロックヘッダのサイズの単位は、例えば、バイトである。以下、上記の各サイズの単位がバイトである場合を例にして説明する。
なお、図4に示す各記号は、それぞれの情報を表す記号である。例えば、テーブルrの属性集合は、図4に示すように「r.A」と記す。また、テーブルrの属性集合Aに属する属性aiの値の種類の数は、図4に示すように「V(r,ai)」と記す。V(r,ai)は、属性aiの値として実際にデータベース122に含まれている値の種類数であり、aiのとり得る値の種類ではない。例えば、あるテーブルの属性として「年齢」があり、その値のとり得る範囲が18〜60であったとしても、データベース122のテーブルr内に「年齢」の値として「40」、「45」、「48」の3種類しか含まれていなければV(r,年齢)は3となる。
カタログ情報は、データベース122に含まれている。従って、記憶装置122は、データベース122とともにカタログ情報も記憶している。
支援処理装置110は、プログラムに従って動作する情報処理装置である。支援処理装置110は、統合コスト見積手段111と、蓄積コスト見積手段112と、アクセスコスト見積手段113を、可視化手段114とを含む。
蓄積コスト見積手段112は、再構造化前および再構造化後それぞれの蓄積コストを計算する。蓄積コストとは、テーブルのデータを蓄積するために必要となる記憶装置122のブロック数である。
蓄積コスト見積手段112は、再構造化前および再構造化後それぞれの蓄積コストとして、スキーマの蓄積コストと、データベースの蓄積コストを計算し、計算した各蓄積コストを統合コスト見積手段111に返す。データベースはスキーマの集合であるので、データベースの蓄積コストは、各スキーマの蓄積コストの和である。
アクセスコスト見積手段113は、ログDB121を解析して、再構造化前および再構造化後それぞれのアクセスコストを計算する。アクセスコストとは、データベースに格納されているデータを参照するためのリレーション操作でアクセスされる記憶装置122のブロック数の和である。リレーション操作とは、射影、選択、結合、積、ユニオン、インターセクションである。
アクセスコスト見積手段113は、再構造化前および再構造化後それぞれのアクセスコストとして、スキーマのアクセスコストと、データベースのアクセスコストを計算し、計算した各アクセスコストを統合コスト見積手段111に返す。
蓄積コスト見積手段112は、再構造化後の蓄積コストを求めるとき、実際にデータベースを再構造化することなく蓄積コストを見積り、その見積り結果を再構造化後の蓄積コストとする。同様に、アクセスコスト見積手段113は、再構造化後のアクセスコストを求めるとき、実際にデータベースを再構造化することなくアクセスコストを見積り、その見積り結果を再構造化後のアクセスコストとする。蓄積コスト見積手段112およびアクセスコスト見積手段113の処理の詳細については後述する。
統合コスト見積手段111は、アクセスコストと蓄積コストとを統合したコストである統合コストを計算する。統合コスト見積手段111は、再構造化前のデータベースの蓄積コストおよびアクセスコストを統合して、再構造化前のデータベースの統合コストを計算する。同様に、再構造化後のデータベースの蓄積コストおよびアクセスコストを統合して、再構造化後のデータベースの統合コストを計算する。また、再構造化前のスキーマの蓄積コストおよびアクセスコストを統合して、再構造化前のスキーマの統合コストを計算する。同様に、再構造化後のスキーマの蓄積コストおよびアクセスコストを統合して、再構造化後のスキーマの統合コストを計算する。統合コスト見積手段111は、アクセスコスト見積手段113および蓄積コスト見積手段112が計算した各アクセスコストと各蓄積コストと、それらを統合して計算した各統合蓄積コストを可視化手段114に渡す。
可視化手段114は、統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像を表示するためのドキュメントを作成する。このドキュメントは、例えば、HTML(HyperText Markup Language )等で記述されるWebページである。以下、可視化手段114がWebページを作成する場合を例にして説明する。
可視化手段114は、スキーマの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成する。このとき、可視化手段114は、複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストを比較するグラフを作成する。複数種類のスキーマとは、例えば既存スキーマと新規スキーマである。可視化手段114は、そのグラフと、コストをグラフ化した各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する。スキーマ構成情報とは、スキーマの属性を示す情報であり、スキーマがビューである場合には条件もスキーマ構成情報に含まれる。
また、可視化手段114は、データベースの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成する。このとき、可視化手段114は、複数種類のデータベースの統合コスト、アクセスコスト、蓄積コストを比較するグラフを作成する。複数種類のデータベースとは、例えば既存スキーマの集合であるデータベースと、新規スキーマを含むデータベースである。可視化手段114は、そのグラフと、各データベースのデータベース構成情報と、データベースに含まれる各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する。データベース構成情報とは、各データベースに含まれているスキーマを示す情報である。すなわち、データベースがどのスキーマの集合であるのかを示す情報である。スキーマ構成情報については、既に説明した通りである。
また、可視化手段114は、スキーマのコストの表示ドキュメント内には、データベースのコストの表示ドキュメントへのハイパーリンクを設定する。同様に、データベースのコストの表示ドキュメント内には、スキーマのコストの表示ドキュメントへのハイパーリンクを設定する。
可視化手段114は、作成したドキュメントを出力装置102に出力する。可視化手段114は、例えば、出力装置102からの要求に応じてドキュメントを出力装置102に出力する。
出力手段102は、例えば、ブラウザを搭載しディスプレイ装置を備えた情報処理装置であり、可視化手段114が作成したドキュメントに基づいて、ブラウザにより画面を表示する。
統合コスト見積手段111、蓄積コスト見積手段112、アクセスコスト見積手段113、および可視化手段114は、例えば、プログラムに従って動作するCPUによって実現される。統合コスト見積手段111、蓄積コスト見積手段112、アクセスコスト見積手段113、および可視化手段114が同一のCPUによって実現されてもよい。プログラムは、支援処理装置110が備えるプログラム記憶装置(図示せず。)に記憶される。CPUは、そのプログラムを読み込み、プログラムに従って統合コスト見積手段111、蓄積コスト見積手段112、アクセスコスト見積手段113、および可視化手段114として動作する。また、出力装置102がディスプレイ装置であって、処理支援装置110にブラウザが搭載され、そのブラウザに従って、CPUがディスプレイ装置(出力装置102)にWebページを表示させてもよい。
次に、動作について説明する。
図5は、本発明の処理経過の例を示す流れ図である。まず、統合コスト見積手段111には、入力装置101を介して、ユーザから既存スキーマを指定する情報と、指定された既存スキーマを統合して生成される新規スキーマの定義するSQL文とが入力される(ステップA1)。すなわち、ステップA1では、記憶装置120に記憶されたデータベース122にある既存スキーマの集合(Dとする)の選択と、その既存スキーマ集合Dを操作して生成される新規スキーマ集合D’の定義の入力が行われる。
図6は、既存スキーマおよび既存スキーマから生成される新規スキーマの例を示す。既存スキーマの中に、ID、氏名および所属を属性とする既存スキーマr1と、ID、氏名、年齢および住所を属性とする既存スキーマr2とがあるとする。例えば、ユーザが既存スキーマr1,r2から、ID、氏名、所属、年齢および住所を属性とする新規スキーマsを作成した場合の統合コスト、蓄積コストおよびアクセスコストを調べようとしているとする。この場合、統合コスト見積手段111には、入力装置101を介して、既存スキーマr1,r2を指定する情報が入力される。さらに、新規スキーマsを定義する定義文71(図6参照)が入力される。既存スキーマを指定する情報や新規スキーマの定義文の入力態様は、特に限定されない。
また、ステップA1では、統合コスト見積手段111には、入力装置101を介して、新規スキーマの名称も入力される。さらに、再構造化後にも残っている既存スキーマを指定する情報も入力される。
さらに、ステップA1では、アクセスコストおよび蓄積コストから統合コストを計算する際にアクセスコストおよび蓄積コストに対する重み付けを行うためのパラメータも入力される。
ステップA1の後、統合コスト見積手段111は、ステップA1で入力された情報(既存スキーマの集合を指定する情報および新規スキーマの定義文)を、蓄積コスト見積手段112およびアクセスコスト見積手段113それぞれに渡す。また、統合コスト見積手段111は、アクセスコスト見積手段113に対しては、ステップA1で入力された新規スキーマの名称も渡す。また、蓄積コスト見積手段112に対しては、再構造化後にも残っている既存スキーマを指定する情報も渡す。そして、統合コスト見積手段111は、蓄積コスト見積手段112に再構造化前および再構造化後それぞれの蓄積コストを計算させる。また、アクセスコスト見積手段113に再構造化前および再構造化後それぞれのアクセスコストを計算させる。
蓄積コスト見積手段112は、再構造化前および再構造化後それぞれの蓄積コストを計算し、統合コスト見積手段111に返す(ステップA2)。すなわち、現状での個々のスキーマの蓄積コストおよびデータベースの蓄積コストを計算し、また、新規スキーマを生成した場合における新規スキーマの蓄積コストおよびデータベースの蓄積コストを計算する。
また、アクセスコスト見積手段113は、再構造化前および再構造化後それぞれのアクセスコストを計算し、統合コスト見積手段111に返す(ステップA3)。すなわち、現状での個々のスキーマのアクセスコストおよびデータベースのアクセスコストを計算し、また、新規スキーマを生成した場合における新規スキーマのアクセスコストおよびデータベースのアクセスコストを計算する。
続いて、統合コスト見積手段111は、蓄積コストとアクセスコストとを統合した統合コストを計算する(ステップA4)。ステップA4では、統合コスト見積手段111は、各スキーマ毎に再構造化前における蓄積コストとアクセスコストとを統合し、再構造化前のスキーマ毎の統合コストを計算する。また、各スキーマ毎に再構造化後における蓄積コストとアクセスコストとを統合し、再構造化後のスキーマ毎の統合コストを計算する。さらに、統合コスト見積手段111は、再構造化前におけるデータベースの蓄積コストとアクセスコストとを統合し、再構造化前のデータベースの統合コストを計算する。また、再構造化後におけるデータベースの蓄積コストとアクセスコストとを統合し、再構造化後のデータベースの統合コストを計算する。
続いて、可視化手段114は、既存スキーマと新規スキーマそれぞれの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像とともに各スキーマのスキーマ構成情報を表示する画面のドキュメントを作成する。また、既存スキーマの集合であるデータベースと、新規スキーマを含むデータベースそれぞれの統合コスト、アクセスコスト、蓄積コストをグラフ化した画像を作成し、その画像と、各データベースのデータベース構成情報と、データベースに含まれる各スキーマのスキーマ構成情報とを表示する画面のドキュメントを作成する(ステップA5)。
出力装置102は、可視化手段114によって作成されたドキュメントに応じて、グラフ、スキーマ構成情報、データベース構成情報を表示する画面を表示する。ユーザは、この画面を確認して、ユーザ自身が想定した新規スキーマを作成した場合のスキーマやデータベース全体のアクセスコスト、蓄積コストおよび統合コストを確認し、また、現状のアクセスコスト、蓄積コストおよび統合コストからの変化を確認し、新規スキーマがコストの点からみて適切であるか否かを検討することができる。
次に、コストの計算について説明する。
まず、アクセスコスト見積手段113が現状(すなわち再構造化前)のアクセスコストを計算する動作について説明する。アクセスコスト見積手段113は、アクセスログとなるSQL文毎にアクセスコストを算出する。このSQL文は、リレーション操作を表すSQL文である。すなわち、図3に例示するq1,q2,q3のようなSQL文である。アクセスコスト見積手段113は、アクセスコスト算出対象となるスキーマに関するSQL文毎に算出したアクセスコストの和としてスキーマのアクセスコストを計算する。また、データベースのアクセスログ内のSQL文毎に算出したアクセスコストの和としてデータベースのアクセスコストを計算する。
図7は、リレーション操作を表すSQL文毎にアクセスコストを算出する動作の例を示す流れ図である。アクセスコスト見積手段113は、リレーション操作を表すSQL文qを、リレーション操作の系列を示す質問木に変換する(ステップS1)。一般的に、SQL文に含まれるselect文は射影に対応し、where文は選択または結合に対応し、from文は結合またはユニオンまたは積に対応する。従って、ステップS1では、アクセスコスト見積手段113は、テーブルまたはビューをリーフとし、結合とユニオンと積とインターセクションについてはリーフの親ノードとし、射影をルートとし、選択を中間ノードとして、SQL文内の各リレーション操作を木構造で示した質問木を生成する。SQL文をリレーション操作の系列(質問木)に変換する手法については、非特許文献1に記載されている。
ステップS1の後、アクセスコスト見積手段113は、個々のリレーション操作後のタプル数を計算する(ステップS2)。あるリレーション操作後のタプル数は、直後のリレーション操作でアクセスさせるタプル数である。また、最初のリレーション操作でアクセスされるタプル数は、操作対象となるテーブルのタプル数である。アクセスコスト見積手段113は、ステップS2において、質問木のリーフ(テーブル)に近いノードから順に、リレーション操作後のタプル数を計算する。
例えば、1000タプルのテーブルに対して、最初にあるリレーション操作を行ったとし、そのリレーション操作後のタプル数が100であるとする。このリレーション操作でアクセスされるタプル数は1000タプルである。さらに、次のリレーション操作が行われる場合、そのリレーション操作でアクセスされるタプル数は、直前のリレーション操作後のタプル数100である。このように、リレーション操作毎に、リレーション操作後のタプル数を求めることで、アクセスされるタプル数の和を求めることができる。
また、リレーション操作前のタプル数とは、その直前のリレーション操作後のタプル数である。最初に行われるリレーション操作前のタプル数は、操作対象となるテーブルの数である。
アクセスコスト見積手段113は、ステップS1で生成した質問木に含まれる各リレーション操作に対して、リレーション操作後のタプル数を計算する。このリレーション操作後のタプル数の計算について説明する。なお、リレーション操作後のタプル数の計算については、非特許文献1に記載されている。また、以下の説明では、リレーション操作後のタプル数をTと記す。また、rや、rに添え字を付したr1,r2等は、操作対象であるリレーションを意味する。また、V(r,a)は、リレーションr中に出現する属性aの値の種類数である。ここで、V(r,a)は、属性aのとり得る値の種類数ではなく、実際に操作対象のリレーションに含まれる値の種類数である。また、cはスカラーであるものとする。T(r)は、操作対象のリレーションのタプル数であり、以下に示す各式の右辺に記すT(r)は、リレーション操作前のタプル数である。アクセスコスト見積手段113は、射影、選択、積、ユニオン、インターセクションというリレーション操作の種類
に応じて、以下に示すようにリレーション操作後のタプル数を計算する。
射影(π)の場合の計算について説明する。リレーション操作が射影(π)である場合、アクセスコスト見積手段113はリレーション操作後のタプル数を下記の式4により求める。
T=T(r) (式4)
すなわち、リレーション操作が射影(π)である場合、リレーション操作後のタプル数は、リレーション操作前のタプル数と等しい値である。
次に、選択(σ)の場合の計算について説明する。リレーション操作が選択(σ)である場合、アクセスコスト見積手段113は、選択条件式に応じて、リレーション操作後のタプル数を計算する。
選択条件式がa=cである場合(すなわち「属性aの値がcである」という条件の場合)、アクセスコスト見積手段113は、以下に示す式5によってリレーション操作後のタプル数を求める。すなわち、リレーション操作前のタプル数を、リレーションr中に出現する属性aの値の種類数で除算することによって、リレーション操作後のタプル数を計算する。
T=T(r)/V(r,a) (式5)
選択条件式がa≠cである場合(すなわち「属性aの値がcでない」という条件の場合)、アクセスコスト見積手段113は、以下に示す式6によってリレーション操作後のタプル数を求める。
T=T(r)−T(r)/V(r,a) (式6)
選択条件がa>cである場合(すなわち「属性aの値がcより大きい」という条件の場合)、アクセスコスト見積手段113は、以下に示す式7によってリレーション操作後のタプル数を求める。すなわち、リレーション操作前のタプル数を3で除算することによって、リレーション操作後のタプル数を計算する。
T=T(r)/3 (式7)
リレーション操作が複数の選択条件式の積(論理積)に応じた選択である場合、アクセスコスト見積手段113は、以下に示す式8によってリレーション操作後のタプル数を求める。
T=(T1*T2*T3*・・・*Tn)/T(r)n−1 (式8)
ただし、式8において、Ti(i=1〜n)は、i番目の選択条件式のみに基づく選択を行うとした場合のリレーション操作後のタプル数である。式8は、リレーション操作前のタプル数T(r)に対するそれぞれの条件のみに基づく選択を行う場合のリレーション操作後のタプル数の比(Ti/T(r))の積に、T(r)を乗じることを意味している。なお、記号「*」は乗算を意味する。
また、リレーション操作が複数の選択条件式の和(論理和)に応じた選択である場合、アクセスコスト見積手段113は、以下に示す式9によってリレーション操作後のタプル数を求める。
T=T(r)*(1−(1−T1/T(r))(1−T2/T(r))・・・(1−Tn/T(r))) (式9)
式9のT1〜Tnは、式8のT1〜Tnと同様である。すなわち、i番目の選択条件式のみに基づく選択を行うとした場合のリレーション操作後のタプル数である。
結合の場合の計算について説明する。ただし、結合は自然結合とみなし、結合の順序を考慮しないものとする。
スキーマr1の属性aの値がスキーマr2の属性bの値と等しいという条件(r1.a=r2.b)でr1とr2を結合する場合(1つの共通属性のある場合)、アクセスコスト見積手段113は、以下に示す式10によってリレーション操作後のタプル数を求める。なお、スキーマr1の属性aの値がスキーマr2の属性bの値と等しいという条件でr1とr2を結合する場合の例として、「ID、氏名、年齢、住所」を属性とする第1テーブルと、「社員ID、給料、ボーナス」を属性とする第2テーブルとを、第1テーブルのIDと第2テーブルの社員IDとが等しいという条件で結合する場合等が挙げられる。
T=T(r1)*T(r2)/max(V(r1,a),V(r2,b))
(式10)
T(r1),T(r2)は、それぞれr1,r2のタプル数である。max()は、括弧内の値のうち最大の値を示す関数である。従って、max(V(r1,a),V(r2,a))は、V(r1,a)とV(r2,a)のうち、大きい方の値を示す。なお、r1.aのように、スキーマの記号と属性の記号とをピリオドで結んだ場合、スキーマの属性を表すものとする。
r1.a1=r2.b1,r1.a2=r2.b2,・・・,r1.an=r2.bnという条件でr1とr2を結合する場合(2つ以上の共通属性がある場合)、アクセスコスト見積手段113は、以下に示す式11によってリレーション操作後のタプル数を求める。
T=T(r1)*T(r2)/(max(V(r1,a1),V(r2,b1))*max(V(r1,a2),V(r2,b2))*・・・*max(V(r1,an),V(r2,bn))
(式11)
また、r1,r2,r3,・・・,rnを結合する場合、アクセスコスト見積手段113は、以下に示す式12および式13によって、P1,P2を計算して、リレーション操作後のタプル数を求める。
Figure 0005071478
P2=min(V(ri,a1))*min(V(ri,a2))*・・・*min(V(ri,am)) (式13)
ただし、式13におけるmin()は、iを変動させたときの最小値を示す関数である。また、(ri,aj)≠0である。また、i,jは、それぞれ以下のような値である。
i=1,・・・,n
j=1,・・・,m
また、ajは、aj∈r1∪r2∪・・・∪rnを満たす属性である。
アクセスコスト見積手段113は、P1,P2を求めたならば、P1をP2で除算した値であるPを計算し、P(=P1/P2)を用いて、以下に示す式14により、リレーション操作(本例では結合)後のタプル数を計算する。
T=T(r1)*T(r2)・・・T(rn)/P (式14)
次に、積の場合の計算について説明する。リレーション操作がr1とr2との積(r1×r2)である場合、アクセスコスト見積手段113はリレーション操作後のタプル数を下記の式15により求める。
T=T(r1)*T(r2) (式15)
次に、ユニオンの場合の計算について説明する。リレーション操作がr1とr2とのユニオン(r1∪r2)である場合、アクセスコスト見積手段113はリレーション操作後のタプル数を下記の式16により求める。
T=(T(r1)+T(r2)+max(T(r1),T(r2)))/2 (式16)
次に、インターセクションの場合の計算について説明する。リレーション操作がr1とr2とのインターセクション(r1∩r2)である場合、アクセスコスト見積手段113はリレーション操作後のタプル数を下記の式17により求める。つまり、リレーション操作の結合と見なしてリレーション操作後のタプル数を計算する。ただし、式17におけるrkは、r1とr2のジョイン(リレーション操作の結合)の結果である。
T=T(rk) (式17)
ステップS1で生成した質問木に含まれる各リレーション操作に対して、リレーション操作後のタプル数を計算した後(ステップS2の後)、アクセスコスト見積手段113は、データベースのカタログ情報およびファイルシステムのカタログ情報を用いて、各リレーション操作でアクセスされるタプル数Tをそれぞれブロック数(Bとする。)に変換する。具体的には、アクセスコスト見積手段113は、以下に示す式18によってタプル数Tをブロック数Bに変換する(ステップS3)。
B=INT(T/int((b−bh)/(h+Σsize(ai))))(式18)
式18においてbはファイルシステムのブロックサイズであり、bhはブロックヘッダのサイズである(図4参照)。また、hはタプルのヘッダサイズであり、size(ai)は、タプルt=(a1,a2,・・・,an)に属する個々の属性のサイズであり、Σsize(ai)はその総和(a1・・・anの各属性のサイズの総和)である。また、式18におけるINT()は括弧内の値を切り上げる関数であり、int()は括弧内の値を切り捨てる関数である。例えば、INT(10.2)=11,int(10.2)=10である。
各リレーション操作でアクセスされるタプル数Tをそれぞれブロック数に変換した後、アクセスコスト見積手段113は、SQL文qのアクセスコストcost(q)として、そのブロック数の和を求める(ステップS4)。このブロック数の総和が、SQL文qのアクセスコストcost(q)である。
図8は、SQL文のアクセスコストの計算例を示す説明図である。図8に示すように、select文、from文およびwhere文を含むSQL文81のアクセスコストを計算するものとする。また、SQL文81に記載されたテーブルのタプル数Tは、10000であるとする。アクセスコスト見積手段113は、SQL文81に記載されたテーブル(本例では社員表)をリーフとし、SQL文81を質問木82に変換する。本例では、リレーション操作である選択(σ年齢>40)と、射影(π氏名,住所)とを含み、社員表をリーフとする質問木82を作成する。
最初のリレーション操作(σ年齢>40)前のタプル数はテーブル(社員表)のタプル数であり、10000である。リレーション操作(σ年齢>40)でアクセスされるタプル数は、この10000である。アクセスコスト見積手段113は、このタプル数を用いて、最初のリレーション操作(σ年齢>40)後のタプル数を求める。このリレーション操作は「選択」であり、選択条件式は「年齢>40」であるので、アクセスコスト見積手段113は、式7によって、10000/3という計算でタプル数を求める。このリレーション操作(σ年齢>40)後のタプル数10000/3は、直後の射影(π氏名,住所)でアクセスされるタプル数である。
アクセスコスト見積手段113は、リレーション操作でアクセスされる上記の各タプル数10000,10000/3をそれぞれ式18に従って計算する。このときアクセスコスト見積手段113は、式18に含まれるb,bh,h,size(ai)についてはデータベース122に含まれるカタログ情報の値を用いる。
アクセスコスト見積手段113は、式18を用いて、タプル数10000から選択時にアクセスされるブロック数Bσを計算する。ここでは、Bσ=1000ブロックであったとする。同様に、アクセスコスト見積手段113は、式18を用いて、タプル数10000/3から射影時にアクセスされるブロック数Bπを計算する。ここでは、Bπ=334ブロックであったとする。
アクセスコスト見積手段113は、ステップS4でこれらのブロック数の和を求め、与えられたSQL文81のアクセスコストを求める。本例では1000+334=1334ブロックである。
アクセスコスト見積手段113は、アクセスログに含まれる他のSQL文についても同様にアクセスコストを計算する。
アクセスコスト見積手段113は、ステップS1〜S4で計算した各SQL文のアクセスコストからスキーマのアクセスコスト、データベースのアクセスコストを計算する。
アクセスコストの計算対象となるスキーマのアクセスログをQ(S)とする。スキーマのアクセスコストは、Q(S)に含まれるSQL文のアクセスコストの総和である。よって、アクセスコスト見積手段113は、Q(S)に含まれるSQL文のアクセスコストの総和としてスキーマのアクセスコストを計算する。すなわち、アクセスコスト見積手段113は、以下に示す式19によってスキーマのアクセスコストを計算する。ただし、costaccess(S)は、スキーマのアクセスコストである。
Figure 0005071478
データベースのアクセスコストは、データベースのアクセスログに含まれるSQL文のアクセスコストの総和である。よって、アクセスコスト見積手段113は、データベースのアクセスログ(Q(D)とする。)に含まれるSQL文のアクセスコストの総和としてデータベースのアクセスコストを計算する。すなわち、アクセスコスト見積手段113は、以下に示す式20によってデータベースのアクセスコストを計算する。ただし、COSTaccess(D)は、データベースのアクセスコストである。
Figure 0005071478
次に、アクセスコスト見積手段113が再構造化後のスキーマおよびデータベースのアクセスコストを計算する動作について説明する。ただし、アクセスコスト見積手段113は、データベースの再構造化を実際に行うことなく、再構造化後のアクセスコストを計算する。上述のように、アクセスコストを計算するためにアクセスログとカタログ情報とを用いるが、実際に再構造化されていないデータベースに関してはアクセスログやカタログ情報が用意されていないので、アクセスコスト見積手段113は、再構造化前のデータベースのアクセスログやカタログ情報から、再構造化後のデータベースの仮想的なアクセスログやカタログ情報を作成する。ただし、仮想的なカタログ情報の一部(新規テーブルのタプル数)は蓄積コスト見積手段112が作成する。仮想的なアクセスログおよびカタログ情報を用いて計算したアクセスコストを仮想アクセスコストと記す。
仮想カタログ情報および仮想アクセスログを生成した後、アクセスコスト見積手段113は、その仮想カタログ情報および仮想アクセスログを用いて再構造化後のスキーマやデータベースのアクセスログを計算すればよい。ただし、再構造化の前後で変更のないスキーマに関連するアクセスログも用いてデータベースのアクセスコストを計算する必要がある場合がある。以下、仮想カタログ情報および仮想アクセスログを作成する動作を説明する。
まず、仮想カタログ情報を生成する動作について説明する。図4に示すようにデータベースのカタログ情報には、テーブルのタプル数、タプルのヘッダサイズ“h”、属性のサイズ“size(ai)”、各属性の値の種類の数等があるが、そのうちデータベースの再構造化によって変化するのは、タプル数と、属性の値の種類の数である。また、ファイルシステムのカタログ情報は、データベースの再構造化によって変化しない。従って、タプル数と、属性の値の種類の数以外については、再構造化前のカタログ情報をそのまま用いる。
仮想的なカタログ情報のうち、新規スキーマのタプル数は、蓄積コスト見積手段112が生成する。図5に示すように、蓄積コスト見積手段112によるステップA2の後にアクセスコスト見積手段113がステップA3を行うので、アクセスコスト見積手段113は、新規スキーマのタプル数として、蓄積コスト見積手段112が新規スキーマ毎に計算した新規スキーマのタプル数を用いればよい。蓄積コスト見積手段112が新規スキーマのタプル数を計算する動作については後述する。
アクセスコスト見積手段113は、属性の値の種類の数“V(s,a)”を、新規スキーマの生成態様に応じて計算する。新規スキーマの生成態様として「結合」、「分割」、「既存スキーマの種類の変更」、「SQL文f(R)による新規スキーマの生成」があり、以下、これらの4つの場合におけるV(s,a)の計算について説明する。
新規スキーマsの生成態様が既存スキーマr1とr2との結合である場合、すなわち、既存スキーマr1とr2との結合によって新規スキーマsが作成される場合、新規スキーマsの属性aの値の種類数V(s,a)は、属性aがどの既存スキーマの属性であるかによって以下のように計算する。以下、このV(s,a)を仮想的なV(s,a)と記す。
a∈r1.A∩r2.Aであるならば、すなわち、新規スキーマの属性aが既存スキーマr1の属性でもありr2の属性でもあるならば、アクセスコスト見積手段113は、以下に示す式21によって仮想的なV(s,a)を計算する。
V(s,a)=V(r1,a)+V(r2,a)−V(r1,a)*V(r2,a)/max(V(r1,a),V(r2,a)) (式21)
a∈r1.Aであるならば、すなわち、新規スキーマの属性aが既存スキーマr1,r2のうちのr1のみの属性であるならば、アクセスコスト見積手段113は、以下に示す式22によって仮想的なV(s,a)を計算する。
V(s,a)=V(r1,a) (式22)
a∈r2.Aであるならば、すなわち、新規スキーマの属性aが既存スキーマr1,r2のうちのr2のみの属性であるならば、アクセスコスト見積手段113は、以下に示す式23によって仮想的なV(s,a)を計算する。
V(s,a)=V(r2,a) (式23)
式21から式23では、結合により新規スキーマを生成する場合の仮想的なV(s,a)の計算を説明したが、次に、分割により新規スキーマを生成する場合の仮想的なV(s,a)の計算について説明する。既存スキーマrを新規スキーマs1,s2に分割する場合において、アクセスコスト見積手段113は、各属性の値の種類数を以下のように求める。
a∈s1.Aである場合、すなわち、属性aが新規スキーマs1,s2のうちのs1の属性である場合、アクセスコスト見積手段113は、仮想的なV(s1,a)を以下の式24によって計算する。
V(s1,a)=V(r,a) (式24)
a∈s2.Aである場合、すなわち、属性aが新規スキーマs1,s2のうちのs2の属性である場合、アクセスコスト見積手段113は、仮想的なV(s2,a)を以下の式25によって計算する。
V(s2,a)=V(r,a) (式25)
また、既存スキーマrの種類を変更して新規スキーマをsを生成する場合(すなわち、ビューをテーブルに変換する場合)、属性の値の種類の数は変化しないので、V(s,a)=V(r,a)である。すなわち、既にカタログ情報に含まれているV(r,a)を、仮想的なV(s,a)とすればよい。
SQL文f(R)を用いて新規スキーマsを生成する場合、属性値の種類数の変化はタプル数の変化と同率であるという考えに基づいて、新規スキーマsにおける属性aの値の種類数を求めることができる。ここでf(R)とは、既存スキーマの集合Rに対するリレーション操作(「結合」、「選択」、「射影」等)の組み合わせを示すSQL文である。アクセスコスト見積手段113は、SQL文f(R)を質問木に変換し、既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率を計算する。そして、その比率を、属性値の種類数の変化率として仮想的なV(s,a)を計算する。
アクセスコスト見積手段113がSQL文f(R)を質問木に変換する動作は、ステップS1(図7参照)と同様である。また、アクセスコスト見積手段113は、質問木のリーフに近いノードから順にリレーション操作後のタプル数を計算し、最後のリレーション操作後のタプル数を新規スキーマsのタプル数T(s)とする。
また、アクセスコスト見積手段113は、既存スキーマ集合Rのタプル数を以下のように計算する。既存スキーマ集合Rに属する各スキーマをr1,r2,・・・,rnとする。すなわち、R={r1,r2,・・・,rn}であるとする。アクセスコスト見積手段113は、既存スキーマ集合Rのタプル数T(R)を、T(R)=T(r1)+T(r2)+・・・T(rn)という計算によって求める。
T(s)をT(R)で除算したT(s)/T(R)が既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率である。
また、既存スキーマ集合における属性aの値の種類数V(R,a)は、以下の式で表される。
V(R,a)=max(V(r1,a),V(r2,a),・・・,V(rn,a))
従って、アクセスコスト見積手段113は、SQL文f(R)を用いて新規スキーマsを生成する場合における仮想的なV(s,a)を、上述のV(R,a)およびT(s)/T(R)を用いて以下の式26によって計算する。
V(s,a)=V(R,a)*T(s)/T(R) (式26)
図9は、SQL文f(R)を用いて新規スキーマsを生成する場合における仮想的なV(s,a)の計算例を示す説明図である。本例では、SQL文f(R)が、select文、from文、where文を含むSQL文81(図9参照)であるものとする。また、既存スキーマ集合には社員表というテーブルが存在するものとする。
アクセスコスト見積手段113は、ステップS1と同様の処理によって、SQL文81から質問木82を生成する。また、アクセスコスト見積手段113は、質問木のリーフに近いノードから順にリレーション操作後のタプル数を計算し、最後のリレーション操作後のタプル数を新規スキーマsのタプル数T(s)とする。本例では、T(s)=3334である。また、T(R)=10000であるものとする。すると、既存のスキーマ集合のタプル数と新規スキーマのタプル数の比率は、3334/10000である。従って、例えば属性が「氏名」である場合、V(s,氏名)=V(社員表,氏名)*3334/10000である。同様に、例えば属性が「住所」である場合、V(s,住所)=V(社員表,住所)*3334/10000である。
次に、仮想アクセスログを生成する動作について説明する。データベース構成入力(ステップA1)で選択されたスキーマ集合R={r1,r2,・・・,rn}がスキーマの統合操作によって、新しいスキーマ集合Sに変換される。アクセスコスト見積手段113は、新しいスキーマ集合Sのアクセスログとみなされる仮想アクセスログを以下のように生成する。なお、新しいスキーマ集合S上の仮想アクセスログをQ’(S)と記す。図10は、仮想アクセスログを生成する動作を示す流れ図である。
アクセスコスト見積手段113は、R上のアクセスログQ(R)から、ri∈Rを含むログを収集して、変換対象集合Qc(R)を生成する。具体的には、アクセスコスト見積手段113は、RのアクセスログQ(R)の中から、新たなスキーマの生成に用いられる既存スキーマのログを収集する(ステップS11)。ここで収集されたログの集合が変換対象集合Qc(R)である。例えば、新規スキーマsが、既存スキーマr1,r2の結合であると定義されている場合、アクセスコスト見積手段113は、アクセスログの中から既存スキーマr1,r2のログを収集して変換対象集合Qc(R)とする。
変換対象集合Qc(R)の生成後、アクセスコスト見積手段113は、Qc(R)に属するアクセスログqを、S上の質問(Sに対する質問)q’に変換して、新規スキーマ集合Sに対する仮想アクセスログQ’(S)を生成する。なお、qから変換されたq’は仮想アクセスログである。アクセスコスト見積手段113は、新規スキーマの生成態様に応じて、アクセスログqから質問q’への変換を行う。既に説明したように、新規スキーマの生成態様には、「結合」、「分割」、「既存スキーマの種類の変更」、「SQL文f(R)による新規スキーマの生成」があり、以下、これらの4つの場合における質問q’への変換について説明する。
新規スキーマが既存スキーマr1とr2との結合である場合、アクセスコスト見積手段113は、変換対象集合Qc(R)に属するアクセスログqに記述されている既存スキーマr1,r2の名称を新規スキーマの名称に書き換えた質問q’を生成する(ステップS12)。すなわち、q内の既存スキーマの名称を表す文字列を、新規スキーマの名称を表す文字列に変換したq’を生成する。なお、新規スキーマの名称は、ステップA1で入力されている。
次に、アクセスコスト見積手段113は、質問qを整形する(ステップS13)。具体的には、アクセスコスト見積手段113は、質問q’内のselect文において、リレーション名が新規スキーマsの名称のみであれば、その名称の記述を省略する。また、アクセスコスト見積手段113は、質問q’内のfrom文において、新規スキーマsの記述が2箇所以上あれば、新規スキーマsの2番目以降の記述を削除する。すなわち、from文から新規スキーマsに関する重複記述を削除する。また、アクセスコスト見積手段113は、where文に自明である条件文があれば、その条件文を削除する。すなわち、where文から、符号の左右の記述子が同じである条件文を削除する。
既存スキーマrを新規スキーマs1,s2に分割する場合、アクセスコスト見積手段113は、変換対象集合Qc(R)に属するアクセスログqに記述されているselect文、from文、およびwhere文をそれぞれ書き換えた質問q’を生成する(ステップS14)。すなわち、アクセスログqに記述された各文を書き換えたものをq’とする。ステップS14では、まず、アクセスコスト見積手段113は、select文、from文、およびwhere文に記述されている既存スキーマrの属性集合Aを抽出し、以下のルールに従ってスキーマ名を書き換える。
抽出した属性集合Aが新規スキーマs1の属性集合(s1.Aと記す。)の部分集合ならば、すなわち、A⊆s1.Aならば、アクセスコスト見積手段113は、アクセスログqに記述されている既存スキーマrのスキーマ名を新規スキーマs1のスキーマ名に書き換える。以下、既存スキーマrのスキーマ名を“r”と記し、新規スキーマs1,s2のスキーマ名を“s1”,“s2”と記す。
抽出属性集合Aが新規スキーマs1の属性集合s1.Aの部分集合ではなく、かつ、属性集合Aが新規スキーマs2の属性集合s2.Aの部分集合(すなわちA⊆s2.A)であるならば、アクセスコスト見積手段113は、アクセスログqに記述されている既存スキーマの名称“r”を新規スキーマの名称“s2”に書き換える。
抽出した属性集合Aが新規スキーマs1の属性集合s1.Aの部分集合でもなく、新規スキーマs2の属性集合s2.Aの部分集合でもない場合、アクセスコスト見積手段113は、抽出した属性集合AをA1(⊆s1.A)とA2(⊆s2.A)とに分割する。すなわち、属性集合Aを、属性集合s1.Aに属している属性の集合A1と、属性集合s2.Aに属している属性の集合A2とに分割する。例えば、抽出した属性集合A={a1,a2,a3}であり、新規スキーマs1の属性集合s1.A={a1,a2}であり、新規スキーマs2の属性集合s2.A={a3}であるとする。この場合、アクセスコスト見積手段113は、AをA1={a1,a2}と、A2={a3}に分割する。なお、s1.Aとs2.Aの両方に属する属性は、A1,A2の両方に含める。
以上のように属性集合Aを分割した後、アクセスコスト見積手段113は、アクセスログ内のselect文、from文およびwhere文に記述された属性またはスキーマの名称を以下に示すように書き換える。以下、属性の名称を“”を用いて表す。例えば、属性aの名称を“a”、新規スキーマs1の属性s1.aの名称を“s1.a”と表す。
アクセスコスト見積手段113は、select文に記述された属性aがA1の要素であれば(すなわちa∈A1ならば)、select文に記述されたその属性の名称“a”を“s1.a”に書き換える。同様に、select文に記述された属性aがA2の要素であれば(すなわちa∈A2ならば)、その属性の名称“a”を“s2.a”に書き換える。また、select文に記述された属性aがA1,A2それぞれに属しているならば、その属性の名称“a”を“s1.a”に書き換える。
また、アクセスコスト見積手段113は、from文に記述されたスキーマの名称“r”を、新規スキーマs1,s2の名称“s1,s2”に書き換える。
また、アクセスコスト見積手段113は、where文に記述された属性aがA1の要素であれば(すなわちa∈A1ならば)、where文に記述されたその属性の名称“a”を“s1.a”に書き換える。同様に、where文に記述された属性aがA2の要素であれば(すなわちa∈A2ならば)、その属性の名称“a”を“s2.a”に書き換える。また、where文に記述された属性aがA1,A2それぞれに属しているならば、“s1.a=s2.a”という記述を書き加える。
ステップS14で、以上のようにselect文、from文およびwhere文をそれぞれ書き換えたアクセスログを質問q’とする。続いて、アクセスコスト見積手段113は、質問q’を整形する(ステップS15)。具体的には、アクセスコスト見積手段113は、質問q’内のselect文において、リレーション名が新規スキーマの名称“s1”または“s2”のみであるならば、その“s1”または“s2”の記述を省略する。また、アクセスコスト見積手段113は、質問q’内のfrom文において、新規スキーマs1に関する重複記述と、新規スキーマs2に関する重複記述を削除する。また、アクセスコスト見積手段113は、where文に自明である条件文があれば、その条件文を削除する。すなわち、where文から、符号の左右の記述子が同じである条件文を削除する。
SQL文f(R)を用いて新規スキーマsを生成する場合、SQL文f(R)に応じて仮想アクセスログである質問q’を生成する(ステップS16)。以下、ステップS16におけるアクセスコスト見積手段113の動作について説明する。
SQL文f(R)が既存スキーマの削除を示している場合、新規スキーマのアクセスコストを計算する必要がないため、削除されるスキーマに関連するアクセスログを単に削除し、アクセスログqからS上の質問q’への変換を行わない。
また、新規に生成されるスキーマsがビューである場合、アクセスコストは変化しないとみなして、Qc(R)を仮想アクセスログQ’(S)とする。
また、テーブルを新規に生成する場合、つまり、新規スキーマsがSQL文f(R)で定義されるテーブル(マテリアライズドビューを含む。)である場合、アクセスコスト見積手段113は、テーブルを定義するSQL文f(R)とアクセスログqとを比較し、qに存在するf(R)に相当する部分をsに書き換えることによってq’を生成する。この処理は、具体的には以下に示すように行う。
アクセスコスト見積手段113は、SQL文f(R)とアクセスログqを分割統治戦略に基づいてそれぞれ質問木に変換する。SQL文f(R)から変換される質問木をG(f(R))と記す。また、アクセスログqから変換される質問木をG(q)と記す。分割統治戦略は、分割した質問の結果を結合して元の質問と同じ結果を得られるように、複数のスキーマへの質問を一つか二つのスキーマにしかアクセスしない質問(小さい質問と呼ぶ。)に分解する手法である。アクセスコスト見積手段113は、分割された小さい質問の質問木を含む質問木を生成する。分割統治戦略については、非特許文献2に記載されている。
アクセスコスト見積手段113は、アクセスログの質問木G(q)に質問木G(f(R))が含まれていれば、質問木G(q)中における質問木G(f(R))に相当する部分をsに置換する。この置換後の質問木を縮小版質問木G’(q)と記す。
続いて、アクセスコスト見積手段113は、縮小版質問木G’(q)をSQL文に変換する。縮小版質問木G’(q)から変換されたSQL文が質問q’(仮想アクセスログ)である。一般的に、質問木のリーフはfrom文に対応している。選択と射影は、それぞれwhere文とselect文に対応している。リーフの親ノードが結合とユニオンと積とのリレーション操作であれば、これらのノードも、from文に対応している。アクセスコスト見積手段113は、この対応関係に基づいて、縮小版質問木G’(q)をSQL文に変換する。すなわち、アクセスコスト見積手段113は、リーフ、またはリーフとその親ノードが表すfrom文を作成し、選択または結合を示すノードが表すwhere文を作成し、射影を示すノードが表すselect文を作成することによって縮小版質問木G’(q)をSQL文(質問q’)に変換する。質問木からSQL文への変換については、非特許文献1,2に記載されている。
図11は、新規スキーマsがSQL文f(R)で定義されるテーブル(マテリアライズドビューを含む。)である場合に質問q’を生成する処理の具体例を示す説明図である。図11において質問木中に示す記号πは、射影を示す。また、図12は、結合を表す記号である。図11中の質問木においても結合を表す記号として、図12に示す記号を用いている。アクセスログqおよびf(R)が、それぞれ図11上段に示すSQL文であるとする。
アクセスコスト見積手段113は、図11に例示するアクセスログqを分割統治戦略に基づいて質問木G(q)を生成する。図11に例示する質問木G(q)は、小さい質問q0の質問木G(q0)と、小さい質問q1の質問木G(q1)とに分解できる。また、アクセスコスト見積手段113は、図11に例示するf(R)を分割統治戦略に基づいて質問木G(f(R))を生成する。
G(q)のうち、点線で囲んで示した部分(G(q0))は、G(f(R))に相当する。従って、アクセスログの質問木G(q)に質問木G(f(R))が含まれているので、アクセスコスト見積手段113は、質問木G(q)中のG(f(R))に相当する部分(点線で囲んだG(q0))を新規スキーマを表すsに置き換える。アクセスコスト見積手段113は、この置き換えによって得られた質問木をSQL文に変換することによってq’を導出する。
既存スキーマrの種類を変更して新規スキーマをsを生成する場合(すなわち、ビューをテーブルに変換する場合)、アクセスコスト見積手段113は、アクセスログq’中に記述された既存スキーマの名称“r”を新規スキーマの名称“s”に変換する(ステップS17)。この結果、質問q’が得られる。
以上のように、図10に示す処理によって生成された質問q’が仮想アクセスログQ’(S)である。
アクセスコスト見積手段113は、仮想的なカタログ情報および仮想アクセスログQ’(S)を生成した後、仮想的なカタログ情報および仮想アクセスログQ’(S)を用いて、再構造化後のスキーマのアクセスコストおよびデータベースのアクセスコストを計算する。この処理は、計算に用いるカタログ情報およびアクセスログが仮想的なカタログ情報および仮想アクセスログQ’(S)である点以外は、再構造化前のスキーマのアクセスコストおよびデータベースのアクセスコストを計算する処理と同様である。
再構造化後のデータベースのアクセスコストを求める場合、アクセスコスト見積手段113は、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、仮想アクセスログ内のSQL文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する。例えば、再構造化前のデータベースがスキーマr1,r2,r3を含むデータベースであり、再構造化後のデータベースがスキーマs1,r3を含むデータベースであるとする。本例で、スキーマs1は、r1,r2の結合であるものとする。アクセスコスト見積手段113は、既存のアクセスログQからr1,r2に関連するアクセスログQc(R)を選択する。アクセスコスト見積手段113は、このアクセスログ(変換対象集合)Qc(R)を変換して仮想アクセスログQ’(S)を生成する。この場合、再構造化後のデータベースのアクセスログはQ−Qc(R)∪Q’(S)となる。このようなアクセスログからデータベースのアクセスコストを計算すればよいので、アクセスコスト見積手段113は、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、仮想アクセスログ内のSQL文毎に計算したアクセスコストとの総和を求めればよい。
アクセスコスト見積手段113は、再構造化前、再構造化後それぞれにおけるスキーマおよびデータベースのアクセスコストをステップA3(図5参照)で行う。既に説明したように、仮想的なカタログ情報のタプル数は、蓄積コスト見積手段112が新規スキーマ毎に計算する。蓄積コスト見積手段112は、再構造化前、再構造化後それぞれにおけるスキーマおよびデータベースの蓄積コストをステップA2(図5参照)で行う。なお、仮想的に計算される新規スキーマのタプル数の算出もステップA2で行われる。以下、ステップA2における蓄積コスト見積手段112の処理について説明する。
まず、蓄積コスト見積手段112が現状(すなわち再構造化前)の蓄積コストを計算する動作について説明する。既に説明したように、蓄積コストとは、テーブルのデータを蓄積するために必要となる記憶装置122のブロック数である。蓄積コスト見積手段112は、データベースのカタログ情報およびファイルシステムのカタログ情報(図4参照)を用いて蓄積コストを計算する。
蓄積コストの計算対象となるテーブルをtとし、テーブルtの属性として、a1,a2,・・・,anがあるとする。また、テーブルtの蓄積コストをcoststorage(t)と記すこととする。蓄積コスト見積手段112は、テーブルtの蓄積コストcoststorage(t)を、以下に示す式27によって計算する。
Figure 0005071478
式27において、kはテーブルtのタプル数である。size(ai)はテーブルtの属性のサイズである。例えば、size(a1)は、テーブルtの1番目の属性のサイズである。hは、タプルのヘッダサイズである。このタプルk、属性のサイズsize(ai)、およびタプルのヘッダサイズは、データベースのカタログ情報に含まれている。なお、図4では、テーブルのタプル数をT(r)と記している。上記のkを図4の表記にあわせればT(t)である。また、式27において、bは、ファイルシステムのブロックのサイズであり、bhはそのブロックのヘッダサイズである。b,bhはファイルシステムのカタログ情報に含まれている。本例では、size(ai),h,bおよびbhの単位はバイトである。
式27は、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、その計算したタプル数で既存のテーブルのタプル数kを除算することによって蓄積コストを計算することを意味している。
図13は、蓄積コストの計算例を示す説明図である。蓄積コストを計算しようとするテーブルtのタプルサイズが98バイトであったとする。タプルサイズは、テーブルtの各属性のサイズの総和にタプルのヘッダサイズを加算した値である。また、1ブロックのブロックサイズが1024バイトであり、ブロックヘッダのサイズが12バイトであったとする。また、テーブルtのタプル数が10000であるとする。すると、式27により、蓄積コストは、以下のように計算される。
INT(10000/int((1024−12)/98))=1000
このように、本例では、蓄積コストcoststorage(t)は1000ブロックとなる。なお、上記の式内のint()関数の値は、1ブロックに格納できるタプル数を表す。上記の例では、1ブロックに格納できるタプル数が、int((1024−12)/98)=10タプルである。テーブルtのタプル数10000を、1ブロックに格納できるタプル数10で除算することにより、蓄積コストとなるブロック数を計算することができる。
蓄積コスト見積手段112は、式27の計算により、データベースに含まれている各スキーマの蓄積コストを計算する。ただし、ビューの蓄積コストは0とする。すなわち、スキーマにはテーブルとビューがあるが、テーブルについては式27によって蓄積コストを計算し、ビューについては蓄積コストを0とする。
次に、蓄積コスト見積手段112は、データベースの蓄積コストを、データベースに含まれているスキーマの蓄積コストの和として計算する。データベースD={s1,s2,・・・,sn}であるとする。すなわち、データベースDに属するスキーマとして、s1,s2,・・・,snがあるとする。Dに属する個々のスキーマsiの蓄積コストは、上記のように求められる。すなわち、siがテーブルであれば式27により求められ、ビューであれば0として求められる。データベースの蓄積コストCOSTstorage(D)は、データベースに含まれているスキーマの蓄積コストの和であり、蓄積コスト見積手段112は、以下に示す式28によってデータベースの蓄積コストCOSTstorage(D)を計算する。
Figure 0005071478
次に、蓄積コスト見積手段112が再構造化後のスキーマおよびデータベースの蓄積コストを計算する動作について説明する。スキーマ操作によるデータベースの再構造化は、ファイルシステムに影響を及ぼさないため、再構造化を行ったとしても、ブロックサイズbおよびブロックのヘッダサイズbhは変化しない。また、このようなデータベースの再構造化は、既存スキーマの操作によって行うので、変更後のスキーマの各属性のサイズ、タプルのヘッダサイズは、再構造化前の値を継承して利用可能である。そのため、再構造化後のタプル数を推定すれば、新規スキーマのコストを式27によって計算することができる。本発明では、データベースの再構造化を実際に行わず、再構造化後における新規スキーマのタプル数を推定し、そのタプル数を用いて新規スキーマの蓄積コストを計算する。このように計算する新規スキーマの蓄積コストを仮想蓄積コストと呼ぶ。
以下、蓄積コスト見積手段112は、新規スキーマの仮想コストを、新規スキーマの生成態様に応じて計算する。既に説明したように、新規スキーマの生成態様として「結合」、「分割」、「SQL文f(R)による新規スキーマの生成」、「既存スキーマの種類の変更」があり、以下、これらの4つの場合におけるタプル数の見積計算について説明する。なお、xをスキーマとした場合、T(x)はxのタプル数を表しているものとする。
既存スキーマr1とr2との結合によって新規スキーマsが作成される場合、蓄積コスト見積手段112は、以下に示す式29によって新規スキーマsのタプル数T(s)を計算する。
T(s)=(T(r1)+T(r2)+max(T(r1),T(r2)))/2
(式29)
新規スキーマs1,s2が既存スキーマrの分割によって得られる場合、蓄積コスト見積手段112は、新規スキーマs1,s2のタプル数T(s1),T(s2)は、いずれも既存スキーマrのタプル数T(r)と等しい値とする。すなわち、T(s1)=T(s2)=T(r)とする。
SQL文f(R)を用いて新規スキーマsを生成する場合、蓄積コスト見積手段112は、以下のように新規スキーマのタプル数を求める。
f(R)により既存スキーマが削除され、新規スキーマが生成されない場合、新規スキーマの蓄積コストの計算を行わないので、タプル数の見積は行わない。
f(R)により作成される新規スキーマがビューである場合、蓄積コスト見積手段112は、そのビューの蓄積コストを0とする。よって、タプル数の見積は行わない。
f(R)によりテーブルを新規作成する場合、つまり、新規スキーマがテーブル(マテリアライズドビューを含む。)である場合、蓄積コスト見積手段112は、新規のテーブルsを定義するSQL文f(R)で返される結果のタプル数を新規スキーマのタプル数とする。例えば、新規テーブルsが、図14に例示するSQL文で定義されたとする。また、T(r1)=1000,T(r2)=10000,V(r1,ID)=1000,V(r2,ID)=10000とする。この場合、図14に示すSQL文で返されるタプル数は1000となるので、新規テーブルのタプル数を1000とする。
なお、SQL文で返される結果のタプル数は、アクセスコスト見積手段113がステップS1,S2(図7参照)でタプル数を求める処理と同様の処理で求めればよい。
既存スキーマrの種類を変更して新規スキーマをsを生成する場合(すなわち、ビューをテーブルに変換する場合)、蓄積コスト見積手段112はSQL文f(R)によりテーブルを新規作成する場合と同様の計算により、新規ビューのタプル数を計算する。すなわち、アクセスコスト見積手段113がステップS1,S2(図7参照)でタプル数を求める処理と同様の処理の処理によって、SQL文f(R)を解析して新規ビューのタプル数を計算する。
以上のように新規スキーマの生成態様に応じて新規スキーマのタプル数を計算したならば、蓄積コスト見積手段112は、そのタプル数を用いて、式27によって仮想蓄積コストを計算する。タプル数以外のカタログ情報は、再構造化前のスキーマの蓄積コストの計算に用いた値を用いればよい。以上の処理によって、再構造化によって新たに得られる新規スキーマの蓄積コストが得られる。なお、再構造化によって変化しないスキーマの蓄積コストは、再構造化前におけるそのスキーマの蓄積コストと同じ値である。
また、蓄積コスト見積手段112は、再構造化後のデータベースの蓄積コストを計算する。蓄積コスト見積手段112は、再構造化後のデータベースに含まれる各スキーマの蓄積コストの和として、再構造化後のデータベースの蓄積コストを算出する。再構造化後のデータベースに含まれる各スキーマには、新規スキーマの他に、既存のスキーマが含まれる場合もある。再構造化後にデータベースに残る既存のスキーマは、予めユーザに指定される。再構造化後にデータベースに残っている既存のスキーマを指定する情報は、例えばステップA1で統合コスト見積手段111に入力され、統合コスト見積手段111がその情報を蓄積コスト見積手段112に渡す。蓄積コスト見積手段112は、計算した新規スキーマのコストに、予め指定されたユーザされた既存スキーマの蓄積コストを加算して、再構造化後のデータベースの蓄積コストを計算する。
なお、蓄積コスト見積手段112は、以上のように新規スキーマのタプル数を計算したならば、そのタプル数の情報をアクセスコスト見積手段113に渡す。既に説明したように、アクセスコスト見積手段113は、このタプル数を用いて再構造化後のアクセスコストを計算する。
次に、ステップA4において統合コスト見積手段111が統合コストを計算する動作について説明する。まず、スキーマの統合コストの計算について説明する。統合コスト見積手段111は、データベースに含まれるスキーマ毎に、蓄積コスト見積手段112に計算された蓄積コストと、アクセスコスト見積手段113に計算されたアクセスコストを統合して統合コストを計算する。データベースに含まれるあるスキーマsの蓄積コストおよびアクセスコストをそれぞれcoststorage(s)、costaccess(s)とする。統合コスト見積手段111は、このスキーマの統合コスト(COST(s)とする。)を、以下に示す式30により計算する。
COST(s)=α*coststorage(s)+β*costaccess(s)
(式30)
式30において、α,βは、アクセスコストおよび蓄積コストに対する重み付けを行うためのパラメータであり、ステップA1でユーザから入力装置101に入力される。αは蓄積コストに重み付けを行うためのパラメータであり、βはアクセスコストに重み付けを行うためのパラメータである。式30に示すように、統合コスト見積手段111は、coststorage(s)にαを乗じた値と、costaccess(s)にβを乗じた値との和を統合コストとして計算する。よって、αの値が大きいほど蓄積コストを重視した統合コストが計算され、βの値が大きいほどアクセスコストを重視した統合コストが計算される。従って、ユーザは、データベースの再構造化の検討のために蓄積コストを重視した統合コストを得たい場合にはαとして大きな値を入力し、アクセスコストを重視した統合コストを得たい場合にはβとして大きな値を入力すればよい。
蓄積コスト見積手段112は、式30によって、再構造化前のデータベースに属する各スキーマ毎に統合コストを計算する。同様に、再構造化後のデータベースに属する各スキーマについてもそれぞれ統合コストを計算する。
次に、データベースの統合コストの計算について説明する。統合コスト見積手段111は、蓄積コスト見積手段112に計算されたデータベースの蓄積コストと、アクセスコスト見積手段113に計算されたデータベースのアクセスコストを統合して統合コストを計算する。データベースの蓄積コスト、データベースのアクセスコストをそれぞれCOSTstorage(D)、COSTaccess(D)とすると、統合コスト見積手段111は、以下に示す式31により、データベースの統合コスト(COSTint(D)とする。)を計算する。
COSTint(D)=α*COSTstorage(D)+β*COSTaccess(D)
(式31)
式31におけるα,βは、式30におけるα、βと同じパラメータである。
統合コスト見積手段111は、式31によって、再構造化前の蓄積コストCOSTstorage(D)とアクセスコストCOSTaccess(D)から、再構造化前の統合コストCOSTint(D)を計算する。同様に、統合コスト見積手段111は、式31によって、再構造化後の蓄積コストCOSTstorage(D)とアクセスコストCOSTaccess(D)から、再構造化後の統合コストCOSTint(D)を計算する。
次に、ステップA5において可視化手段114が統合コスト、アクセスコスト、蓄積コストのグラフを表示する画面のドキュメントを作成する動作について説明する。
可視化手段114は、データベースの統合コスト、アクセスコスト、蓄積コストをデータベースの構成毎に示すグラフを作成する。図15は、このようなグラフの例を示す説明図である。可視化手段114は、例えば、図15に示すように横軸にデータベースの構成を示し、縦軸方向に各データベース構成における統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを作成する。以下、このようなグラフをデータベースコストグラフと記す。図15に示す例では、「現案」は、再構造化前の現状のデータベースの構成を表している。また、「案1」および「案2」は、それぞれ再構造化後のデータベースの構成を指している。すなわち、ここでは、ステップA1において再構造化後のデータベースの構成として「案1」および「案2」の2種類が指定され、再構造化後のデータベースの各コストとして「案1」、「案2」のデータベース構成の各コストが計算されている場合の例を示している。
また、可視化手段114は、複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストをそれぞれ表示するグラフを作成する。図16は、このようなグラフの例を示す説明図である。可視化手段114は、例えば、図16に示すように横軸にスキーマを示し、縦軸方向に各スキーマの統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを作成する。以下、このようなグラフをスキーマコストグラフと記す。図16に示す例では、既存スキーマr2および新規スキーマs1,s2それぞれの統合コスト、アクセスコストおよび蓄積コストをプロットしたグラフを例示している。図16では、r2,s1,s2の各コストを表示するグラフを例示しているが、可視化手段114によって作成される複数種類のスキーマの各コストを表示するグラフは一種類に限定されない。
可視化手段114は、データベースコストグラフおよびスキーマコストグラフを作成し、さらにそのデータベースコストグラフを表示するWebページと、スキーマコストグラフを表示するWebページを作成する。
図17は、データベースコストグラフを表示するWebページの例を示す説明図である。可視化手段114は、データベースコストグラフを表示するWebページに、各データベースに含まれているスキーマを示すデータベース構成情報91と、各データベースに属する各スキーマの属性を示すスキーマ構成情報92とを含める。図17に例示するデータベース構成情報91は、例えば、「現案」となるデータベースにはr1,r2が含まれていること等を示している。また、図17に例示するスキーマ構成情報92は、例えば、スキーマs1の属性がID、氏名および年齢であること等を示している。データベースコストグラフは画像であり、データベース構成情報91およびスキーマ構成情報92は例えば、文字列である。可視化手段114は、HTML等のマークアップ言語で定められた書式で、画像であるデータベースコストグラフや、例えば文字列であるデータベース構成情報91およびスキーマ構成情報92の表示を指示するドキュメントを作成する。
図18は、スキーマコストグラフを表示するWebページの例を示す説明図である。可視化手段114は、スキーマコストグラフを表示するWebページに、グラフで示した各スキーマの属性を示すスキーマ構成情報92を含める。図18に例示するスキーマ構成情報92は、例えば、スキーマs1の属性がID、氏名および年齢であること等を示している。
また、可視化手段114は、各Webページに、他のWebページへのハイパーリンクを含めておく。
可視化手段114は、データベースコストグラフを表示するWebページ中に、コストを表示した各データベースに属するスキーマのスキーマコストグラフを表示するWebページへのハイパーリンクを設定する。図17に示す例では、「案1へ」、「案2へ」、「現案へ」という文字列がハイパーリンクの設定箇所である。可視化手段114は、例えば、「案1へ」という文字列には、「案1」の構成に含まれる新規スキーマのコストを表示するWebページへのハイパーリンクを設定する。
可視化手段114は、スキーマコストグラフを表示するWebページ中に、データベースコストグラフを表示するWebページへのハイパーリンクを設定する。図18に示す例では、「データベースコストグラフへ」という文字列がハイパーリンクの設定箇所である。可視化手段114は、例えば、「データベースコストグラフへ」という文字列に、データベースコストグラフを表示するWebページへのハイパーリンクを設定する。
なお、可視化手段114は、Webページの中に、マークアップ言語で定められた所定の書式で文字列を記述することで、文字列にハイパーリンクを設定する。
ステップA6において出力装置102は、可視化手段114が作成したドキュメントの記述に従ってWebページを表示する。例えば、図17や図18に例示するWebページを表示する。
なお、本例では、Webページを表示する場合を示したが、スキーマコストグラフやデータベースコストグラフを表示する画面はWebページに限定されない。
本発明によれば、アクセスコストと、蓄積コストとをそれぞれ独立に計算し、アクセスコストと蓄積コストとを統合した統合コストを計算する。従って、ユーザは、アクセスコストだけでなく、アクセスコストおよび蓄積コストの両方を考慮して、データベースのコストの適否を確認することができ、再構造化後のデータベースの構成を柔軟に設計しやすくなる。
また、本発明では、アクセスコスト見積手段113は、アクセスコストを計算するときにタプル数をブロック数に変換し、ブロック数を単位とするアクセスコストを計算する。また、蓄積コストの単位もブロック数である。従って、アクセスコストおよび蓄積コストの単位が揃っているので、蓄積コストとアクセスコストとを統合した統合コストを計算することができる。
また、統合コスト見積手段111には、入力装置101を介して、蓄積コストに重み付けを行うためのパラメータであるαと、アクセスコストに重み付けを行うためのパラメータであるβとが入力される。そして、統合コスト見積手段111は、αと蓄積コストとの積と、βとアクセスコストとの積との和を統合コストとして計算する。従って、ユーザは、αやβの値を自由に設定することができ、統合コスト見積手段111はユーザから入力されたパラメータα,βに応じて、蓄積コストを重視した統合コストやアクセスコストを重視した統合コストを計算することができる。従って、ユーザは、蓄積コストを重視した統合コストやアクセスコストを重視した統合コスト等、所望の統合コストを確認することができ、再構造化後のデータベースの構成を柔軟に設計しやすくなる。
また、本発明では、データベースの再構造化を実際に行わずに、再構造化後の蓄積コストやアクセスコストを計算する。すなわち、蓄積コスト見積手段112は、新規スキーマのタプル数の見積計算を行い、そのタプル数と既存のカタログ情報とを用いて蓄積コストを計算する。また、アクセスコスト見積手段113は、新規スキーマにおける仮想的なV(s,a)を計算し、そのV(s,a)と、新規スキーマのタプル数と、既存のカタログ情報とを用いてアクセスコストを計算する。このように、実際にデータベースの再構造化を行うことなく、コストを見積ることができるので、再構造化後のデータベース構成の候補として様々な候補を用意して、それらの各候補におけるコストを容易に計算することができる。
また、本発明では、蓄積コスト見積手段112は、データベースの蓄積コストだけでなく、スキーマの蓄積コストも計算する。同様に、アクセスコスト見積手段113は、データベースのアクセスコストだけでなく、スキーマのアクセスコストも計算する。また、統合コスト見積手段111は、データベースの統合コストだけでなく、スキーマの統合コストも計算する。このように、データベースのコストとスキーマのコストを計算するので、ユーザは、データベース全体のコストだけでなく、スキーマレベルのコストも分析することができる。その結果、ユーザは、データベースの蓄積効率とアクセス効率に与える影響が大きいスキーマを容易に発見することができ、データベースのさらなる改良を支援することができる。
また、可視化手段114は、データベースコストグラフを示すWebページや、スキーマコストグラフを示すWebページを作成し、それらのWebページが出力装置102で表示される。従って、ユーザは各データベース構成や、各スキーマにおける蓄積コスト、アクセスコストおよび統合コストを容易に判断することができ、データベースの最適な構成を直感的に選択・決定することができる。
また、データベースコストグラフを示すWebページには、スキーマコストグラフを示すWebページへのハイパーリンクを設定し、スキーマコストグラフを示すWebページにはデータベースコストグラフを示すWebページへのハイパーリンクを設定するので、データベース全体のコストとスキーマレベルのコストとをそれぞれ確認しやすくすることができる。
実施例2.
図19は、本発明の第2の実施例を示すブロック図である。第1の実施例と同様の構成要素については図2と同一の符号を付し、詳細な説明を省略する。
第2の実施例のデータベース再構造化支援システムは、入力装置101と、支援処理装置110と、可視化装置130と、記憶装置120とを備える。第2の実施例では、支援処理装置110に可視化手段114は含まれず、可視化手段114の代わりに可視化手段114と同様の処理を行う可視化装置130を支援処理装置110とは別に備える。
可視化装置130は、例えばプログラムに従って動作する情報処理装置によって実現され、第1の実施例における可視化手段114と同様に動作する。
本実施例では、統合コスト見積手段111は、各データベースや各スキーマの統合コスト、蓄積コスト、アクセスコスト、データベース構成情報およびスキーマ構成情報を可視化装置130に出力する。可視化装置130は、統合コスト見積手段111から入力されたこれらの情報を用いて、第1の実施例における可視化手段114と同様に、データベースコストグラフを表示するWebページのドキュメントと、スキーマコストグラフを表示するWebページのドキュメントとを作成する。可視化装置130は、作成した各Webページのドキュメントを出力装置102に出力し、出力装置102は、Webページを表示する。可視化装置130は、例えば、出力装置102からの要求に応じてWebページのドキュメントを出力装置102に出力する。
また、本実施例では、統合コスト見積手段111は、計算したコストを示すテキスト(文字列)を出力装置102に直接出力してもよい。出力装置102は、そのテキストを表示する。例えば、統合コスト見積手段111が、各データベースの統合コスト、蓄積コスト、アクセスコストを示すテキストと、各スキーマの統合コスト、蓄積コスト、アクセスコストを示すテキストとを出力装置102に出力し、出力装置102がそれらのテキストをそれぞれ表示してもよい。
このとき、統合コスト111は、各データベースや各スキーマに対してコストに基づいた順位付けを行い、その順番に、統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置102に出力してもよい。例えば、統合コストの値の昇順(降順でもよい。)に各データベースの構成(再構造化前、再構造化後の各データベース構成)を順位付けし、その順位に従って統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置102に出力してもよい。具体例を挙げると、再構造化前のデータベース構成の統合コストが最小であったならば、再構造化前のデータベース構成における統合コスト、蓄積コスト、アクセスコストを示すテキストを最初に出力装置102に出力し、以降、同様に、他のデータベース構成における統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置102に出力する。
本実施例によれば、グラフとは別に統合コスト、蓄積コスト、アクセスコストの具体的な値を文字列としてユーザに提示することができる。また、例えば、統合コストに基づいて、各データベースの構成の順位付けを行うことで、最適なデータベース構成を自動的に決定することができる。
また、可視化装置130がコスト見積装置110とは独立の装置として設けられるので、コスト見積装置110の処理負荷が軽減され、コスト見積装置110において上述の順位付けなどの処理を容易に行うことができる。
なお、第1の実施例においても、統合コスト見積手段111がコストを示すテキストを出力装置102に直接出力し、出力装置102がそのテキストを表示してもよい。この場合においても、統合コスト見積手段111は、上述の場合と同様に、コストに基づく順位付けを行って、その順番に、各データベースや各スキーマの統合コスト、蓄積コスト、アクセスコストを示すテキストを出力装置102に出力してもよい。
各実施例において、データベース記憶手段、ログ記憶手段およびカタログ情報記憶手段は、記憶装置120によって実現される。入力手段は、入力装置101によって実現される。既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段および新規データベース蓄積コスト計算手段は、蓄積コスト見積手段112によって実現される。既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段および新規データベースアクセスコスト計算手段は、アクセスコスト見積手段113によって実現される。統合コスト見積手段は、統合コスト見積手段111によって実現される。また、第1パラメータはαによって実現され、第2パラメータはβによって実現される。
本発明は、データベースのパフォーマンスを分析する装置やプログラム、データベースを最適化するための装置やプログラム、あるいは、データベースの設計、管理、保守を支援するための装置やプログラムに好適に適用される。
この出願は、2007年5月11日に出願された日本出願特願2007−127261を基礎とする優先権を主張し、その開示の全てをここに取り込む。
データベースの再構造化の例を示す説明図である。 本発明の第1の実施例を示すブロック図である。 アクセスログの例を示す説明図である。 カタログ情報を示す説明図である。 本発明の処理経過の例を示す流れ図である。 既存スキーマおよび既存スキーマから生成される新規スキーマの例を示す説明図である。 SQL文毎にアクセスコストを算出する動作の例を示す流れ図である。 SQL文のアクセスコストの計算例を示す説明図である。 仮想的なV(s,a)の計算例を示す説明図である。 仮想アクセスログを生成する動作を示す流れ図である。 新規スキーマsがSQL文f(R)で定義されるテーブルである場合に質問q’を生成する処理の具体例を示す説明図である。 結合を表す記号を示す図である。 蓄積コストの計算例を示す説明図である。 新規テーブルを定義するSQL文の例を示す説明図である。 データベースの統合コスト、アクセスコスト、蓄積コストをデータベースの構成毎に示すグラフの例を示す説明図である。 複数種類のスキーマの統合コスト、アクセスコスト、蓄積コストをそれぞれ表示するグラフの例を示す説明図である。 データベースコストグラフを表示するWebページの例を示す説明図である。 スキーマコストグラフを表示するWebページの例を示す説明図である。 本発明の第2の実施例を示すブロック図である。
符号の説明
101 入力装置
102 出力装置
110 支援処理装置
111 統合コスト見積手段
112 蓄積コスト見積手段
113 アクセスコスト見積手段
114 可視化手段
120 記憶装置
121 ログDB
122 データベース
130 可視化装置

Claims (10)

  1. データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、
    テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、
    前記データベースのアクセスログを記憶するログ記憶手段と、
    テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、
    データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段と、
    ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算手段と、
    既存スキーマ蓄積コスト計算手段が計算した各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出手段と、
    新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算手段と、
    新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算手段と、
    アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算手段と、
    既存スキーマアクセスコスト計算手段がアクセスログ内のSQL文毎に計算したアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算手段と、
    新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算手段と、
    仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算手段が仮想アクセスログ内のSQL文毎に計算したアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算手段と、
    再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積手段とを備えた
    ことを特徴とするデータベース再構造化支援システム。
  2. 入力手段には、蓄積コストに重み付けを行うための第1パラメータとアクセスコストに重み付けを行うための第2パラメータとが入力され、
    統合コスト見積手段は、蓄積コストに第1パラメータを乗じた値と、アクセスコストに第2パラメータを乗じた値との和として統合コストを計算する
    請求項1に記載のデータベース再構造化支援システム。
  3. アクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成する可視化手段を備えた請求項1または請求項2に記載のデータベース再構造化支援システム。
  4. 既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段、新規データベース蓄積コスト計算手段、既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段、新規データベースアクセスコスト計算手段、統合コスト見積手段および可視化手段が同一の装置によって実現された
    請求項3に記載のデータベース再構造化支援システム。
  5. 既存スキーマ蓄積コスト計算手段、既存データベース蓄積コスト算出手段、新規スキーマ蓄積コスト計算手段、新規データベース蓄積コスト計算手段、既存スキーマアクセスコスト計算手段、既存データベースアクセスコスト計算手段、新規スキーマアクセスコスト計算手段、新規データベースアクセスコスト計算手段および統合コスト見積手段が同一の装置によって実現され、可視化手段は当該装置とは別に設けられた
    請求項3に記載のデータベース再構造化支援システム。
  6. 可視化手段は、複数種類のスキーマのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成し、前記画像とスキーマの属性を示すスキーマ構成情報とを含む画面を表示させるためのドキュメントを作成する
    請求項4または請求項5に記載のデータベース再構造化支援システム。
  7. 可視化手段は、複数種類のデータベースのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を作成し、前記画像と各データベースに含まれているスキーマを示すデータベース構成情報と、スキーマの属性を示すスキーマ構成情報とを含む画面を表示させるためのドキュメントを作成する
    請求項6に記載のデータベース再構造化支援システム。
  8. 可視化手段は、複数種類のスキーマのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を表示させるためのドキュメントと、複数種類のデータベースのアクセスコストと蓄積コストと統合コストとをグラフ化した画像を表示させるためのドキュメントとを作成し、各ドキュメントに他のドキュメントへのハイパーリンクを設定する
    請求項7に記載のデータベース再構造化支援システム。
  9. データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するデータベース再構造化支援システムであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたデータベース再構造化支援システムに適用されるデータベース再構造化支援方法であって、
    既存スキーマ蓄積コスト計算手段が、ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算し、
    既存データベース蓄積コスト算出手段が、既存スキーマ蓄積コスト計算手段に計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算し、
    新規スキーマ蓄積コスト計算手段が、新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算し、
    新規データベース蓄積コスト計算手段が、新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算し、
    既存スキーマアクセスコスト計算手段が、アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算し、
    既存データベースアクセスコスト計算手段が、既存スキーマアクセスコスト計算手段によってアクセスログ内のSQL文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算し、
    新規スキーマアクセスコスト計算手段が、新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算し、
    新規データベースアクセスコスト計算手段が、仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算手段によって仮想アクセスログ内のSQL文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算し、
    統合コスト見積手段が、再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する
    ことを特徴とするデータベース再構造化支援方法。
  10. データを蓄積するために必要な記憶装置の容量を示す蓄積コストと、リレーション操作でアクセスされる記憶装置の容量を示すアクセスコストとを用いてデータベースの構成を変更した場合の評価値を計算するコンピュータであって、テーブルまたはビューであるスキーマの集合であるデータベースを記憶するデータベース記憶手段と、前記データベースのアクセスログを記憶するログ記憶手段と、テーブルのタプル数と、タプルのヘッダサイズと、テーブルの属性集合と、テーブルの属性集合に属する各属性のサイズと、テーブルの属性集合に属する各属性の値の種類数と、データベースの管理領域のブロックサイズと、ブロックヘッダのサイズとを含むカタログ情報を記憶するカタログ情報記憶手段と、データベース記憶手段に記憶されたデータベース内の既存スキーマを指定する情報と、当該既存スキーマから生成される新規スキーマの定義と、再構造化後にも残る既存スキーマを指定する情報とが入力される入力手段とを備えたコンピュータに搭載されるデータベース再構造化支援プログラムであって、
    コンピュータに、
    ビューの蓄積コストを0とし、カタログ情報を用いて1ブロックで格納できるテーブルのタプル数を計算し、当該タプル数で既存のテーブルのタプル数を除算することで既存のテーブルの蓄積コストを計算する既存スキーマ蓄積コスト計算処理、
    既存スキーマ蓄積コスト計算処理で計算された各ビューおよび各テーブルの蓄積コストの総和を求めることによって再構造化前のデータベースの蓄積コストを計算する既存データベース蓄積コスト算出処理、
    新規スキーマがビューである場合、新規スキーマの蓄積コストを0とし、新規スキーマがテーブルである場合、新規スキーマのタプル数を計算し、カタログ情報を用いて1ブロックで格納できるタプル数を計算し、当該タプル数で新規スキーマのタプル数を除算することで新規スキーマの蓄積コストを計算する新規スキーマ蓄積コスト計算処理、
    新規スキーマの蓄積コストと、再構造化後にも残る既存スキーマの蓄積コストとの総和を求めることによって、再構造化後のデータベースの蓄積コストを計算する新規データベース蓄積コスト計算処理、
    アクセスコストの計算対象スキーマのアクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数をカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって既存スキーマのアクセスコストを計算する既存スキーマアクセスコスト計算処理、
    既存スキーマアクセスコスト計算処理でアクセスログ内のSQL文毎に計算されたアクセスコストの総和を求めることによって再構造化前のデータベースのアクセスコストを計算する既存データベースアクセスコスト計算処理、
    新規スキーマを生成する既存スキーマのアクセスログから新規スキーマのアクセスログとみなされる仮想アクセスログを作成し、新規スキーマの属性集合に属する各属性の値の種類数を計算し、仮想アクセスログ内のリレーション操作を表すSQL文毎に、リレーション操作でアクセスされるタプル数を計算し、各リレーション操作毎のタプル数を、計算した属性の値の種類数と新規スキーマのタプル数とカタログ情報を用いてブロック数に変換し、各ブロックの和を求めることでSQL文当たりのアクセスコストを計算し、各SQL文毎のアクセスコストの和を求めることによって新規スキーマのアクセスコストを計算する新規スキーマアクセスコスト計算処理、
    仮想アクセスログの作成に用いられなかった既存スキーマのアクセスログ内のSQL文毎のアクセスコストと、新規スキーマアクセスコスト計算処理で仮想アクセスログ内のSQL文毎に計算されたアクセスコストとの総和を求めることによって、再構造化後のデータベースのアクセスコストを計算する新規データベースアクセスコスト計算処理、および
    再構造化前のデータベースのアクセスコストと蓄積コストとを統合した再構造化前のデータベースの統合コストを計算し、再構造化前のスキーマのアクセスコストと蓄積コストとを統合した再構造化前のスキーマの統合コストを計算し、再構造化後のデータベースのアクセスコストと蓄積コストとを統合した再構造化後のデータベースの統合コストを計算し、再構造化後のスキーマのアクセスコストと蓄積コストとを統合した再構造化後のスキーマの統合コストを計算する統合コスト見積処理
    を実行させるためのデータベース再構造化支援プログラム。
JP2009514101A 2007-05-11 2008-04-30 データベース構造化支援システム Expired - Fee Related JP5071478B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009514101A JP5071478B2 (ja) 2007-05-11 2008-04-30 データベース構造化支援システム

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2007127261 2007-05-11
JP2007127261 2007-05-11
PCT/JP2008/058273 WO2008139936A1 (ja) 2007-05-11 2008-04-30 データベース構造化支援システム
JP2009514101A JP5071478B2 (ja) 2007-05-11 2008-04-30 データベース構造化支援システム

Publications (2)

Publication Number Publication Date
JPWO2008139936A1 JPWO2008139936A1 (ja) 2010-08-05
JP5071478B2 true JP5071478B2 (ja) 2012-11-14

Family

ID=40002149

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009514101A Expired - Fee Related JP5071478B2 (ja) 2007-05-11 2008-04-30 データベース構造化支援システム

Country Status (3)

Country Link
US (1) US8280876B2 (ja)
JP (1) JP5071478B2 (ja)
WO (1) WO2008139936A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102125010B1 (ko) * 2020-03-17 2020-06-19 김명훈 데이터베이스 전환 분석 시스템 및 방법

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8893131B2 (en) * 2008-04-11 2014-11-18 Yahoo! Inc. System and/or method for bulk loading of records into an ordered distributed database
US8307089B1 (en) 2011-08-29 2012-11-06 Ariel Inventions, Llc System and method for storing broadcast content in a cloud-based computing environment
US8930223B2 (en) * 2012-03-30 2015-01-06 International Business Machines Corporation Patient cohort matching
US20130262417A1 (en) * 2012-04-02 2013-10-03 Business Objects Software Ltd. Graphical Representation and Automatic Generation of Iteration Rule
US9116953B2 (en) * 2013-05-17 2015-08-25 Sap Se Calculation engine with dynamic partitioning of intermediate results
US9116960B2 (en) * 2013-05-17 2015-08-25 Sap Se Calculation engine with optimized multi-part querying
GB201312776D0 (en) * 2013-07-17 2013-08-28 Qatar Foundation Data integration and cleansing
KR101394468B1 (ko) * 2013-11-12 2014-05-14 주식회사 아나패스 블록의 불연속도 연산방법 및 이를 이용한 폴백 수행 방법
KR102371811B1 (ko) * 2014-03-14 2022-03-07 아브 이니티오 테크놀로지 엘엘시 키드 엔티티들의 속성 매핑
CN106991101B (zh) * 2016-01-21 2021-02-02 阿里巴巴集团控股有限公司 一种数据表分析处理的方法和装置
US10673787B2 (en) * 2017-10-03 2020-06-02 Servicenow, Inc. Virtual agent conversation service
US10977222B1 (en) 2018-09-29 2021-04-13 Splunk Inc. Mechanism for data schema consistency monitoring
US11226963B2 (en) * 2018-10-11 2022-01-18 Varada Ltd. Method and system for executing queries on indexed views
WO2021039110A1 (ja) * 2019-08-28 2021-03-04 三菱電機株式会社 改善提案装置、および、改善提案方法
US11334626B1 (en) * 2020-11-02 2022-05-17 Bank Of America Corporation Hybrid graph and relational database architecture
US20220269702A1 (en) * 2021-02-19 2022-08-25 Sap Se Intelligent annotation of entity-relationship data models

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546381B1 (en) * 1998-11-02 2003-04-08 International Business Machines Corporation Query optimization system and method
US20050198013A1 (en) * 2004-03-08 2005-09-08 Microsoft Corporation Structured indexes on results of function applications over data
US7007006B2 (en) * 2001-06-21 2006-02-28 International Business Machines Corporation Method for recommending indexes and materialized views for a database workload

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01102656A (ja) * 1987-10-15 1989-04-20 Fujitsu Ltd システム性能見積処理方式
US6718320B1 (en) * 1998-11-02 2004-04-06 International Business Machines Corporation Schema mapping system and method
US7272589B1 (en) * 2000-11-01 2007-09-18 Oracle International Corporation Database index validation mechanism
US7283987B2 (en) * 2001-03-05 2007-10-16 Sap Ag Compression scheme for improving cache behavior in database systems
US7490097B2 (en) * 2003-02-20 2009-02-10 Microsoft Corporation Semi-structured data storage schema selection
US7260563B1 (en) * 2003-10-08 2007-08-21 Ncr Corp. Efficient costing for inclusion merge join
US7706050B2 (en) * 2004-03-05 2010-04-27 Qualcomm Mems Technologies, Inc. Integrated modulator illumination
US7382528B2 (en) * 2004-09-07 2008-06-03 Gemological Institute Of America, Inc. Gem microscope having a swivel base and a stationary power cord
JP4463661B2 (ja) 2004-11-01 2010-05-19 株式会社日立製作所 計算機システム、計算機、データベースアクセス方法及びデータベースシステム
US7483873B2 (en) * 2005-01-18 2009-01-27 International Business Machines Corporation Method, system and article of manufacture for improving execution efficiency of a database workload

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6546381B1 (en) * 1998-11-02 2003-04-08 International Business Machines Corporation Query optimization system and method
US7007006B2 (en) * 2001-06-21 2006-02-28 International Business Machines Corporation Method for recommending indexes and materialized views for a database workload
US20050198013A1 (en) * 2004-03-08 2005-09-08 Microsoft Corporation Structured indexes on results of function applications over data
US20050198019A1 (en) * 2004-03-08 2005-09-08 Microsoft Corporation Structured indexes on results of function applications over data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102125010B1 (ko) * 2020-03-17 2020-06-19 김명훈 데이터베이스 전환 분석 시스템 및 방법

Also Published As

Publication number Publication date
WO2008139936A1 (ja) 2008-11-20
US8280876B2 (en) 2012-10-02
US20100217759A1 (en) 2010-08-26
JPWO2008139936A1 (ja) 2010-08-05

Similar Documents

Publication Publication Date Title
JP5071478B2 (ja) データベース構造化支援システム
US7015911B2 (en) Computer-implemented system and method for report generation
US7895238B2 (en) Generating an information catalog for a business model
US8316012B2 (en) Apparatus and method for facilitating continuous querying of multi-dimensional data streams
US7624114B2 (en) Automatically generating web forms from database schema
JP3842573B2 (ja) 構造化文書検索方法、構造化文書管理装置及びプログラム
US9659073B2 (en) Techniques to extract and flatten hierarchies
US8886617B2 (en) Query-based searching using a virtual table
KR102330547B1 (ko) 보고 생성 방법
US7917503B2 (en) Specifying relevance ranking preferences utilizing search scopes
US8850314B2 (en) Context driven help function
JP5570608B2 (ja) エクセル基盤の分析レポート作成システム及び方法
US20060167929A1 (en) Method for optimizing archival of XML documents
US20050289138A1 (en) Aggregate indexing of structured and unstructured marked-up content
US20050251513A1 (en) Techniques for correlated searching through disparate data and content repositories
Krotov et al. Research note: Scraping financial data from the web using the R language
JP4343206B2 (ja) 構造化文書検索支援装置およびプログラム
US10650044B2 (en) Method and apparatus for converting from a source database system to a destination database system
US8260772B2 (en) Apparatus and method for displaying documents relevant to the content of a website
US8099663B2 (en) Apparatus and method for document synchronization
US8615733B2 (en) Building a component to display documents relevant to the content of a website
Ahmed et al. Generating data warehouse schema
US20070244860A1 (en) Querying nested documents embedded in compound XML documents
Tamiar et al. Structured Web pages management for efficient data retrieval
KR20140104544A (ko) 의미 데이터 구축을 위한 시스템 및 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110304

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120724

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120806

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150831

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees