JP2001243242A - 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体 - Google Patents
問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体Info
- Publication number
- JP2001243242A JP2001243242A JP2000054368A JP2000054368A JP2001243242A JP 2001243242 A JP2001243242 A JP 2001243242A JP 2000054368 A JP2000054368 A JP 2000054368A JP 2000054368 A JP2000054368 A JP 2000054368A JP 2001243242 A JP2001243242 A JP 2001243242A
- Authority
- JP
- Japan
- Prior art keywords
- aggregation
- query
- function
- processing method
- data
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
部の専用の集約手段を、リレーショナルデータベースの
集約を効率的に行うインデクスのような手段として定義
し利用することで、リレーショナルデータベースにおけ
る多次元的な集約などの複雑な集約の効率化をはかる。 【解決手段】ユーザからの問合せを解析し、実行するデ
ータベース管理システムに対し、データベース管理シス
テムで管理するデータ群への、集約関数に対応する集約
を含む処理を行う1つ以上の集約手段111を、該デー
タ群の識別子および該集約関数の識別子と関連付けて登
録しておき、データベース管理システムへの問合せが、
集約を行う検索問合せ101である場合、その問合せに
含まれる検索対象のデータ群の識別子および集約関数の
識別子を含む条件121により、対応する集約手段11
1を選択し、実行する。
Description
技術に関し、特にデータベースにおける集約処理技術に
関するものである。
帳票などのデータから、売上の傾向などを分析すること
に活用されている。支店ごとの売上の傾向、商品ごとの
売上の傾向、月ごとの売上の傾向、あるいは、支店と商
品の組合せに対する売上の傾向などを分析する。そのた
めには、支店なら同じ支店、商品なら同じ商品に対する
データごとに、売上をまとめる作業が重要になる。この
ように、幾つかの切り口で、売上などの分析したいデー
タをまとめる作業を集約と呼ぶ。集約の代表的なものと
して、合計(集計)、最大、最小、平均、カウントなど
がある。なお集約は、同じ支店とか同じ期間とか同じも
のに対してまとめる他に、幾つかの連続する期間につい
てまとめるなど、まとめるための基準が明確であれば良
く、本発明に適用できる。
合せ言語の標準規格SQLにおける集約を行う問合せ
(以下集約問合せと呼ぶことにする)の例である。
表 WHERE 支店 = '横浜' GROUP BY商品 例の場合、WHERE句で限定した'横浜'支店のデータに対
し、集約関数SUMに指定した売上を、GROUP BY句で指定
した商品のデータが同じ商品であるものごとにグループ
として合計(SUM)し、商品別の売上の合計を求める問合
せである。GROUP BY句には値式も記述できる。簡単のた
め、以下では列を指定する場合で説明を行うが、値式を
指定する場合でも本発明の適用は可能である。集約関
数、GROUP BYなどSQLについては、ISO/IEC JTC1/SC2
1/WG3 FRA-007, ISO Working Draft Database Language
SQL, 1998等に記載がある。
が同様の分析を行い、同じ集約結果を利用することが多
い。しかし、一般に分析を行うデータは数十万〜数百万
以上の多大なデータである。また集約問合せを行うに
は、全データの中から同じグループのデータをまとめる
ことが必要であり、これは、ソートなど負荷が高い処理
を必要とする。したがって、分析の要求ごとに、一回一
回元のデータから集約問合せをやり直すのでは、実用上
耐え切れないことが多い。したがって、頻繁に使用され
そうな集約に対しては、あらかじめ、結果を表(以下で
は集約結果表と呼ぶことにする)として格納しておき再
利用することが行われている。
タベースの標準的な技術の1つであるビューに似た形式
で定義し、集約結果表を作成するのに用いるSQLと、
集約結果表との関連を保持し、同じSQL(もしくは、
そのSQLの結果をさらに加工することで結果を求めら
れるSQL)が発行されたら、集約結果表を自動的に参
照することも行われる。
ショナルデータベース以外のアプローチが存在する。
は、売上などの分析のキーとなるデータを、支店、商
品、時間など複数の切り口またはその組合せに対して行
われることが多い。必要に応じて、いろいろな切り口で
分析するため、どの切り口の集約に対しても高速に出し
たいという要求がでてくる。その要求に対して、出てき
たのが、多次元データベースOLAP(On-Line Analytical
Processing)である。リレーショナルデータベースがデ
ータを表として管理するのに対し、多次元データベース
ではデータを多次元の配列など多次元にアクセスしやす
い形で管理することで、各切り口に対し高速なアクセス
を可能とする。支店、日時、商品などの分析の切り口と
なる各データを次元(データ)と呼び、売上げなどの分
析のキーとなるデータをファクト(データ)と呼ぶ。多
次元データベースでは、あらかじめ各次元(またはその
組合せ)ごとに集約した結果を計算しておく、事前集約
と呼ばれる機能がある。事前集約がある場合、頻繁にお
こる集約問合せの時に何回も計算せずに済み、より高速
に集約を求めることができる。
一般に普及しているリレーショナルデータベースを利用
して行うことも行われている。リレーショナルデータベ
ースを利用して多次元的にデータを管理することをROLA
P(リレーショナルOLAP)と呼び、それに対応して、上
記多次元の配列などとして管理することをMOLAP(マルチ
・ディメンジョナルOLAP)と呼ぶこともある。また、デ
ータを表として管理するリレーショナルデータベースに
対して、データを多次元の配列など多次元にアクセスし
やすい形で管理するデータベースを多次元データベース
(Multi-Dimensional Database)と呼ぶこともある。以降
において、多次元データベースと呼ぶとき特にことわら
ない限り多次元の配列など多次元に均等にアクセスしや
すい形で管理するMOLAPを意図し、リレーショナルデー
タベースによるROLAPは含まないものとする。
的としたMOLAPの方が高速であり、特に多次元にわたる
複雑な問合せに強い面がある。ROLAPのメリットとして
は、データベースシステムの主流となっているリレーシ
ョナルデータベースで多次元の分析を行えることがあげ
られる。
言語SQL自身が、多次元的な集約の問合せを発行する
方法(ROLLUP、CUBE、GROUPING SETなどの構文)を用意し
ている。前述のように、SQLでは、集約の問合せとし
てGROUP BYという構文が存在し、上記ROLLUPなどは、そ
の拡張の形式になっている。ROLLUPは、大計、中計、小
計といった上位レベルへの集計(集約)に用いる。一般に
は、月ごとの小計、4半期ごとの中計、年ごとの大計な
どのように、同種の集計に用いられることが多い。
し、さまざまな視点、切り口から集計を見たいときに用
いる(ROLLUPも多次元的な集計の一種である)。CUBE句に
記述した列に対して、全ての組合せの集計が行われる。
単純なGROUP BYとROLLUP,CUBEは混ぜて使用することも
できる。またGROUPING SETという集計方法もあり、指定
した各列(や組合せ)に対して集計を行う。図6の10
1はROLLUP問合せの例である。ROLLUP,CUBEなどについ
てはANSI X3H2-69-296/DBL:MAD-032(R1) SuperSets(The
Cube and Beyond) by Frank Pellow - October 1996な
どに記述がある。
結果を表として格納しておき再利用する方法では、多次
元的な集約など、複雑な集約に対して、効率的に行うこ
とが困難な場合がある。
難な集約の例として、ここでは、多次元的な集約(ROLL
UPやCUBEなど)を行う場合について考える。例えば、支
店、商品、年月に対する売上のデータとして、対象とな
る支店数、商品数、年月数が各10個ずつで、データが
(1つ目の支店、1つ目の商品、1つ目の年月)、(2
つ目の支店、2つ目の商品、2つ目の年月)、…、(1
0個目の支店、10個目の商品、10個目の年月)のよ
うに対角上にのみ売上があるものとする。CUBEは全ての
組合せの集約なので、この場合、集約結果表は、(支
店、商品、年月)、(支店、商品)、(商品、年月)、
(支店、年月)、(支店)、(商品)、(年月)、全合
計に対する結果の集まりとなる。データが対角上にある
ため、結局、それぞれ10個ずつ(全合計は1つ)、計
10×7+1=71個の行からなる表である。しかし、
(支店、商品)に対する集約は、(支店、商品、年月)
に対する集約から求められるし、(支店)に対する集約
は、(支店、商品)や(支店、商品、年月)に対する集
約から求められるなど、最低、(支店、商品、年月)に
対するデータ10個があれば、他の集約も求めることが
できる。ただし、実際には、最低限の10個のデータか
ら、全合計などを求めるのは時間がかかる可能性があ
り、例えば、他に(支店)に対する集約を用意しておき
全合計を求めるときは、これを使用するとか、良く使わ
れるパタンに対する集約を用意しておくことが考えられ
る。いずれにせよ、必ずしも全パタン(例の場合71個
の行)を用意する必要は無い。しかし、集約結果を表と
して保持しておく従来技術の場合は、全ての結果(例の
場合71個の行)を作ることになってしまう。無論、こ
れは極端な例であるが、一般にデータが疎にしか存在し
ない場合には程度の差はあれ同様のことがいえる。上記
は、支店、商品、年月の3つの次元に対して10個ずつ
の例であるが、次元が増え、各次元の要素の数が増えれ
ば、必ず全ての組合せに対して用意しておくのはデータ
サイズに対して多大な負荷となってしまう。
処理を好適に行う問合せ処理方法およびそれを実施した
データベース処理システムを提供することを目的とす
る。
決するために、入力した問合せを解析し、集約処理を行
う問合せである場合、上記問合せに含まれる処理対象の
データ群の識別情報および集約関数の識別情報に対応す
る集約処理プログラムを呼び出す。
て選択することにより、その問合せに記述された集約処
理を好適に行う問合せ処理方法およびそれを実施したデ
ータベース処理システムを実現することが可能となる。
面を用いて説明する。
図は、集約を行う検索問合せに対して、問合せに含まれ
る条件により、対応する集約手段を選択し実行する本発
明の基本となる考え方についての処理説明を行うのに用
いる。
01が発行される。本図の場合、リレーショナルデータ
ベース管理システムへの問合せ言語SQLの例である。
まず、問合せは、解析され、集約を行う問合せ(以下集
約問合せと呼ぶことにする)かどうか判断される11。
集約問合せでなければ、従来のリレーショナルデータベ
ースの問合せ処理を行う110。集約問合せであれば、
問合せに含まれる検索対象のデータ群の識別子および集
約関数の識別子を含む条件をチェックする12。例の場
合チェックされるのは、検索対象のデータ群の識別子で
ある表の識別子と、集約関数の識別子および集約する対
象となる列と、グループ化の指定であるGROUP BY句に指
定された列(以下グループ化列と呼ぶことにする)と、RO
LLUP,CUBEなどグループ化の種類(以下グループ化タイ
プと呼ぶことにする)である。本図の例の場合、問合せ
101の表識別子はFROM句より売上表、集約関数の識別
子はSUM、集約する対象となる列は売上、グループ化列
は、GROUP BY句より支店、期間、商品、グループ化タイ
プは同じくGROUP BY句よりCUBEである。条件のチェック
12により、集約手段111a、111b、…と関連付け
られた各条件121a、121b、…を参照し、適合する
条件が無いかチェックする。適合する条件が無ければ、
従来のリレーショナルデータベース管理システムの(集
約を含む)問合せ処理を行う110。適合する条件があ
れば、対応する集約手段を実行する。または、集約手段
の実行を含む問合せ実行手順指示を生成し、その実行時
に問合せ実行手順指示にしたがって集約手段が実行され
る。本図の例の場合、121aの条件1が、表識別子が
売上表、集約関数の識別子がSUM、集約する対象となる
列が売上、グループ化列が、支店、期間、商品、グルー
プ化タイプがCUBEであり、問合せ101の情報と一致す
るので、111aの集約手段1が実行されることとな
る。
致する場合、対応する集約手段を選択する例であるが、
必ずしも合致しなくても適用可能な場合がある。例え
ば、支店、期間、商品に対する売上のデータを多次元的
に扱う集約手段の場合、支店、期間、商品の組に対する
集約の他に、支店ごと、期間ごとなど、サブセットに対
しての集約を求められるように集約手段を実現すること
が可能である。このような場合は、グループ化列に対し
てはサブセットになっているかチェックすれば良い。ど
のようなチェックを行うかは、図2の説明で後述するよ
うに、集約手段をタイプ付けることによって、リレーシ
ョナルデータベース管理システムが判断するようにすれ
ば良い。
れたデータを集約する手段を用い、グループ化の指定
に、ROLLUPやCUBEなど多次元の観点でのグループ化を適
用し、集約手段の選択のための条件に含めることで、従
来技術では困難である多次元の集約に対する効率良い集
約を、リレーショナルデータベース管理システムに取り
込むことが可能となる。
の概要図である。集約手段の定義21は、データベース
管理システムで管理するデータ群に対し、各特定の集約
関数に対応する集約を含む処理を行う集約手段を、検索
対象のデータ群の識別子および集約関数の識別子を含む
条件と関連付けるものである。本図の例の場合、インデ
クス定義に似た形式で、集約手段を定義する例である
が、データベース管理システムで管理するデータ群に対
し、各特定の集約関数に対応する集約を含む処理を行う
集約手段を、検索対象のデータ群の識別子および集約関
数の識別子を含む条件と関連付けるものであれば、他の
形式であっても問題無く本発明に適用できる。
せに対して多次元的に集約(SUM)を求める集約手段(を
実現する外部関数)sales_cube_sumを、検索対象のデー
タ群(表)の識別子および集約関数の識別子を含む条件と
関連付けている。本図の例の場合、リレーショナルデー
タベース管理システムでサポートする集約手段のインタ
フェースや、集約手段を選択する際の条件のチェック方
法をタイプ付ける、CREATE INDEX TYPE文201と、実
際に、集約手段を条件に対応付けるCREATE INDEX文20
2に分けて定義している。201の場合、このインデク
スタイプを用いて定義される集約手段が、多次元のcube
に対する集約手段(のインタフェース)であることを意
味する。リレーショナルデータベースでサポートする集
約手段のインタフェースが限定されている場合などに対
して、タイプ付けを行わず、CREATE INDEX202で、対
応するグループ化タイプ(cube, rollupなど)を指定す
る方法に対しても、本発明を適用可能である。図3は、
本発明をリレーショナルデータベース管理システムに適
用する実施例の概要図である。
の集約手段35から構成される。集約手段35は、多次
元のデータなど複雑な集約に対応する処理を行う専用の
手段である。本図の例では、集約手段35がデータベー
ス管理システム31の外部の手段として描かれている
が、集約手段35がデータベース管理システム31に組
込まれた一体化されたシステムとしても多次元の集約な
ど従来技術では困難な(効率的な)集約を行う方法として
本発明を適用できる。
テムの外部から拡張する場合、データベース管理システ
ムからアクセスできる場所にインストールすることによ
り、使用可能になる。
合せ101などの問合せ文を解析し、問合せ実行手順指
示302の作成を行なうプリプロセス処理部32と、作
成した問合せ実行手順指示302にしたがって、検索な
どの問合せを実行する実行処理部33を有する。本図の
例では、検索問合せ301は、データベース管理システ
ム31の外部から入力されているが、ルーチン(関数や
手続き)の本体に書かれた検索問合せのようにデータベ
ース管理システム31の内部のルーチンの実行からの入
力などであっても本発明を問題無く適用できる。本図お
よび以降の説明は、プリプロセス処理部32、実行処理
部33がそれぞれ1つの例で行なうが、実行処理部33
を有するデータベースサーバや、プリプロセス処理部3
2を有するデータベースサーバが複数あり、相互にネッ
トワークで繋がる並列データベース管理システムに対し
ても、本発明を適用できる。
101中の集約に対して、図1で示した集約手段の選択
331を行い、集約手段35による集約処理の適用を行
なう。集約手段の選択331には、集約を行う表、集約
関数の情報やグループ化の情報と集約手段とを関連付け
る、集約手段に関する定義情報305などのディクショ
ナリ情報36を用いる。集約手段の定義情報305は、
図2で示した集約手段の定義(文)21によって登録さ
れる。集約手段定義を解析し、ディクショナリ情報に登
録する処理は、プリプロセス処理部32に有っても良い
し、独立したディクショナリ情報登録部として存在して
も良い。図3ではディクショナリ情報36を検索したり
するのはプリプロセス処理部32として表しているが、
ディクショナリ情報36の処理を専門に行うディクショ
ナリ情報処理部があっても良い。また、ディクショナリ
情報36は、キャッシュなどメモリ上に展開されたもの
でも、磁気ディスク装置などの記憶装置に格納したもの
でも良い。集約手段の選択331では、ディクショナリ
情報36を用いて、発行された集約問合せ101に対し
て、集約手段に関する定義情報305に登録されている
集約手段35を使用した集約処理を適用できるか判断す
る。集約手段35を使用した集約処理を適用できる場合
には、集約手段にアクセスするための情報311を含
む、問合せ実行手順指示302を作成する。
32で作成した問合せ実行手順指示302に基づいて、
問合せを実行し、問合せ結果をユーザアプリケーション
などの問合せを発行した所に返す。以下の説明では、問
合せ実行手順指示302および、問合せ実行手順指示3
02の実行については、各構文を実行するための指示と
情報をインタプリタが解釈実行する例で述べる。しか
し、集約手段を使用した集約処理方法を適用できれば、
実行手順指示の形式には依存しないので、各構文を実行
する実行形式のコードであっても本発明を適用できる。
ベース操作処理には、検索実行処理、結果転送処理、繰
り返し処理、関数起動処理など(以下の説明に必要な処
理以外は省略)問合せを実行するのに必要となる基本的
な処理があり、各処理を組み合わせて問合せを実行す
る。問合せ実行手順指示302は、各処理に対する指示
の組み合わせで構成される。
E句に書かれた条件判定(の一部)などを行ないなが
ら、集約手段の情報311にしたがって、集約手段にア
クセスする。集約手段(群)35には、多次元のデータに
対する集約(ROLLUP,CUBE,GROUPING SETなど)に対応する
集約手段や、ユーザ定義の集約に対応する集約手段など
が存在する。多次元のデータに対する集約に対応する集
約手段か、ユーザ定義の集約に対応する集約手段のどち
らか一方に対応するものしか無くても良いし、その他の
複雑な集約に対応する集約手段であっても良い。集約を
行いたい多次元のデータのセット(表など)が複数存在
すれば、対応する集約手段も複数になり得るし、複数の
ユーザ定義の集約に対応する場合にも対応して集約手段
は複数になり得る。
はどのユーザ定義集約関数に対応するかは、集約手段の
定義21によって定義情報305として関連付け、定義
情報305を参照することで、集約手段選択331にお
いて、問合せ101に対して適切な集約手段35を選択
する。
た集約手段に、集約手段への入力情報312により、問
合せに対応する集約処理を要求する。集約手段への入力
情報312は、集約を行う問合せ101に関する情報で
あり、集約関数の情報や、グループ化列の情報や、グル
ープ化タイプの情報(ROOLLUP、CUBEなど)などであ
る。入力情報は集約手段(のインタフェースのタイプ)
ごとに異なるものであり、必ずしも上記全ての情報があ
る必要が無く、他の情報があっても良い。集約手段は、
要求された問合せ情報に基づき、対応する集約結果の値
およびその集約結果の値をだしたもととなるグループを
識別する情報313を出力として返す。集約手段35か
らの出力は一般的に複数存在するが、順次出力を行いデ
ータベース管理システム31側が順次受け取る方法で
も、全ての出力を一斉に行う方法でも、何らかの基準に
したがって複数回に分割して行う方法でも、その他の方
法でも本発明に問題無く適用できる。
33は、問合せ実行手順指示にしたがい、受け取った出
力を加工するなどして、問合せの結果を出す。
(表の列など)に対応して複数存在する。例えば、A社
の売上げ表の支店、商品、期間に対応する集約手段と、
B社の売上げ表の支店、商品、期間に対応する集約手段
は、対応するデータや、データに対する分析(集約)の
方法が異なるため、それぞれ独立に存在する。集約手段
定義は、各表の列に対応して定義される。ただし、異な
るデータに対して同じ分析(集約)を行うことも有り得
るので、複数の集約手段が、(ブラックボックスの中
で)共通の処理を共有していても良い。
約や、ユーザ定義の集約など、複雑な集約を行う手段を
リレーショナルデータベース管理システムに拡張的、選
択的に組込むことができる。
た、より詳細の実施例を図面を用いて説明する。
ステムに対して、外部の高速アクセス手段を組込む1つ
の手段になる。例えば、文書などの大きなデータをB木
インデクスでアクセスするには、全文を比較しなくては
ならないし、特定の語を含む文書の検索などにはB木イ
ンデクスは向かない。それに対して、文書検索専用のシ
ステムでは、上記アクセスを高速に行う手段が開発され
ている。このような外部の高速アクセス手段を、組込み
モジュールにより、データベース管理システムに組込む
手段の一例としては、特開平10―69489号公報に
開示されている。
記述された外部関数である。SQLの関数定義などや組込
みモジュールのインタフェース仕様記述によって、SQL
の関数起動などの契機による組込みモジュールの起動や
振る舞いが規定される。
「共通オブジェクトリクエスト・ブローカ 〜構造と仕
様〜,オブジェクトマネジメントグループ編著, 相磯
秀夫監訳,社団法人 日本オフィスオートメーション協
会,原本 "The Common Object Request Broker:Archite
cture andSpecification" OMG Document Number 91.12.
1, Revision 1.1」に記述されているようなIDL(Int
erface Definition Language;インタフェイス定義言
語)およびその拡張を用いる方法がある。この方法で
は、CORBAと呼ばれるソフトウエアアーキテクチャ
において、モジュール間のインタフェイスをIDLによ
って定義する。そのインタフェイスをC言語などのプロ
グラミング言語に対応付け、スタブと呼ばれる接続用の
モジュールを生成する。このスタブモジュールを介する
ことによって、柔軟なモジュール間通信を可能としてい
る。組込みモジュールは、組込みモジュールに関する定
義情報をディクショナリ情報に組み入れることで、使用
可能となる。
実現する実施例の概要図である。
約手段35には、組込みモジュール41(および組込み
モジュールがアクセスする多次元配列上データ414)
が対応する。集約手段情報311には、組込みモジュー
ル起動情報431が対応する。集約手段アクセス部32
4には、起動制御442、組込みモジュール起動部44
3などが対応する。図3では、集約手段出力情報は省略
しているが、組込みモジュール41からの出力として、
集約結果の値とその集約結果の値をだしたもととなるグ
ループを識別する情報をリレーショナルデータベース管
理システム側に返すのは図3と同様である。
し、問合せ実行手順指示302の作成を行なうプリプロ
セス処理部32と、作成した問合せ実行手順指示302
にしたがって、検索などの問合せを実行する実行処理部
33を有する。本図の例では、検索問合せ101は、デ
ータベース管理システム41の外部から入力されている
が、ルーチン(関数や手続き)の本体に書かれた検索問
合せのようにデータベース管理システム41の内部のル
ーチンの実行からの入力などであっても本発明を問題無
く適用できる。本図および以降の説明は、プリプロセス
処理部42、実行処理部43がそれぞれ1つの例で行な
うが、実行処理部43を有するデータベースサーバや、
プリプロセス処理部42を有するデータベースサーバが
複数あり、相互にネットワークで繋がる並列データベー
ス管理システムに対しても、本発明を適用できる。
101中の集約に対して、集約手段(組込みモジュー
ル)の選択331を行い、組込みモジュールによる集約
処理の適用を行なう。集約手段の選択処理には、組込み
モジュールに関する定義情報421、集約手段に関する
定義情報305などのディクショナリ情報36を用い
る。図4ではディクショナリ情報36を検索したりする
のはプリプロセス処理部32として表しているが、ディ
クショナリ情報36の処理を専門に行うディクショナリ
情報処理部があっても良い。また、ディクショナリ情報
36は、キャッシュなどメモリ上に展開されたもので
も、磁気ディスク装置などの記憶装置に格納したもので
も良い。集約手段の選択331では、ディクショナリ情
報36を用いて、発行された集約演算を有する問合せ1
01に対して、組込みモジュールに関する定義情報42
1に登録されている組込みモジュール41を使用した集
約処理を適用できるか判断する。組込みモジュール41
を使用した集約処理を適用できる場合には、組込みモジ
ュール起動のための情報431を含む、問合せ実行手順
指示302を作成する。
32で作成した問合せ実行手順指示302に基づいて、
問合せを実行し、問合せ結果をユーザアプリケーション
などの問合せを発行した所に返す。以下の説明では、問
合せ実行手順指示302および、問合せ実行手順指示3
02の実行については、各構文を実行するための指示と
情報をインタプリタが解釈実行する例で述べる。しか
し、組込みモジュールを使用した集約処理方法を適用で
きれば、実行手順指示の形式には依存しないので、各構
文を実行する実行形式のコードであっても本発明を適用
できる。
ベース操作処理には、検索実行処理、結果転送処理、繰
り返し処理、関数起動処理など(説明に必要な処理以外
は省略)問合せを実行するのに必要となる基本的な処理
があり、各処理を組み合わせて問合せを実行する。問合
せ実行手順指示302は、各処理に対する指示の組み合
わせで構成される。
は、WHERE句に書かれた条件判定(の一部)などを行な
いながら、組込みモジュール起動情報431にしたがっ
て、組込みモジュールを起動する。集約用の組込みモジ
ュールとしては、多次元のデータにアクセスし、多次元
のデータや集約の値を取得する、すなわち多次元データ
ベース■の処理に対応する処理を行い、共通的に使用さ
れる組込みモジュール関数(以下多次元データ取得の組
込みモジュール関数412と呼ぶことにする)と、前述
のsales_cube_sumのように、各集約手段のインタフェー
ス部分にあたり、集約に関する情報を受け取り多次元デ
ータベースエンジン(多次元データ取得の組込みモジュ
ール関数)への問合せに変換する処理や、グループ化タ
イプ(ROLLUP,CUBEなど)に対応する処理や、ユーザ定義
の集約(もしくはユーザ定義の集約用の組込みモジュー
ル関数の呼出し)に対応する処理など各集約手段特有の
処理を行う組込みモジュール関数(以下集約手段特有の
組込みモジュール関数411と呼ぶことにする)を有す
る。例では多次元データ取得の組込みモジュール関数
と、集約手段特有の組込みモジュール関数を分ける形に
しているが、集約手段特有の組込みモジュール関数が直
接多次元配列状のデータ414にアクセスしデータや集
約の値を取得、計算するようにしても、本発明に適用で
きる(基本的には多次元配列状のデータ414を含めブ
ラックボックスの中なので多次元のデータなどに対して
集約の値を(効率良く)取り出せる手段であれば良
い)。
元配列状データ414の組合せが、図3の集約手段35
を形成する1つの例である。本図の例の場合、集約手段
特有の組込みモジュール関数411が、集約手段とリレ
ーショナルデータベース管理システム31とのインタフ
ェース部分にあたり、多次元データ取得の組込みモジュ
ール関数412、ユーザ定義の集約用の組込みモジュー
ル関数や多次元配列状データ414などは、集約手段の
ブラックボックスの中になる。
1は、多次元配列状のデータのもととなる表や列などに
対応して複数存在する。例えば、A社の売上げ表の支
店、商品、期間に対応する組込みモジュールおよび多次
元配列状データと、B社の売上げ表の支店、商品、期間
に対応する組込みモジュールおよび多次元配列状データ
は、対応するデータや、データに対する分析(集約)の
方法が異なるため、それぞれ独立に存在するかもしれな
い。集約手段定義305は、各表の列に対応して定義さ
れることになる。
(集約)を行うことも有り得るので、その場合、共通の
組込みモジュールを使用する方法であっても本発明に問
題無く適用できる。
列などとして管理される集約値のアクセス手段であり、
多次元データベースで管理するデータに該当する。多次
元データ取得の組込みモジュール関数が多次元データベ
ースなど多次元の配列として管理されるデータに(効率
良く)アクセスするエンジン部分を形成する。
ュール関数として定義し、集約手段特有の組込みモジュ
ール関数などで直接使用することで、多次元のデータに
対する複雑な集約などを効率良く行うことが可能にな
る。また、多次元配列状データに、直接、ユーザ定義の
集約の値を用意しておき、集約手段(特有の組込みモジ
ュール関数)と対応付ける代案も適用可能である。
例の構成図を説明した後、本発明の特徴となる部分であ
る集約手段選択321、集約手段35、集約手段定義部
323の処理説明と、集約手段選択331の入力である
集約を行う検索問合せ101、集約手段選択331の入
力であり集約手段定義部323の出力である集約手段定
義情報305(および集約手段選択の入力である組込み
モジュール定義情報421)、集約手段選択331(集約
手段情報作成332)の出力である問合せ実行手順指示
302、集約手段の入力である集約手段入力情報31
2、集約手段の出力である集約手段出力情報313、集
約手段定義部323の入力である集約手段定義21(お
よび組込みモジュール仕様定義401)について個々に
例をあげて説明を行う。集約手段情報作成322は、集
約手段選択321により選択した集約手段(の識別子)
から該当する集約手段の定義情報を取得し、該当する組
込みモジュールの呼び出しを行う問合せ実行手順指示を
作成するものであり、新規の特徴的な技術を必要としな
いため処理説明は省略する(ただし、集約手段選択32
1した結果として問合せ手順指示302の説明は行
う)。また、集約手段アクセス部324は、問合せ実行
手順指示にしたがい、組込みモジュール等の集約手段に
集約手段入力情報を渡し、集約手段出力情報を受け取る
ものであり、新規の特徴的な技術を必要としないため処
理説明は省略する。
構成図である。
ド502、中央処理装置(CPU)503、フロッピー
ディスクドライブ504、主メモリ505、磁気ディス
ク装置506、通信制御装置507を含む一般的な計算
機システムの構成に対して適用できる。本発明を適用す
るのみの目的の特殊なハードウエア装置は必要無い。デ
ィスプレイ501は、データベース管理システム(プロ
グラム)の実行状況等を表示するために使用する。キー
ボード502は、データベース管理システムの実行等を
指示するコマンドを入力するために使用する。中央処理
装置503は、本発明を実行するプログラムを含んだデ
ータベース管理システムを構成する各種プログラムを実
行する。フロッピーディスクドライブ504は、フロッ
ピーディスク509に対するデータの読み書きのために
使用する。主メモリ505は、本発明を実行するプログ
ラムを含む、各種プログラムおよび、プログラム実行な
どに伴う一時的なデータを保持するために使用する。磁
気ディスク装置506は、データベース(表データ)の
格納や、データベースに対する問合せ操作中に生じる一
時的なデータの格納などに使用する。通信制御装置50
7は、並列データベース管理システムにおいて、同様の
構成を持つ他のデータベースサーバと、リクエスト、デ
ータの交換等を行なうなどのように、ネットワーク51
0を介した通信に使用する。システムバス508は、こ
れらの各種装置を接続するために使用する。
ム511、ワークエリア512、データベース管理シス
テムプログラム513などが保持される。システムプロ
グラム511は、周辺装置との間のデータの入出力な
ど、本発明を実行するプログラムを含むデータベース管
理システムを構成する各種プログラムを実行するための
基本機能を提供する。ワークエリア512は、プログラ
ムの実行時に一時的に必要となるデータを記憶するため
に用いられる。データベース管理システムプログラム5
13は、データベースに対する問合せ101を解析し、
問合せ実行手順指示302を作成したり、問合せ実行手
順指示302に基づいて、問合せの実行を行なったりす
る。上記機能の他にも、表定義、関数定義など各種定義
文を解析し、ディクショナリ情報36としてワークエリ
アや磁気ディスク装置などに登録する機能を持つプログ
ラム(部分)などを有する。データベース管理システム
プログラム513は、プリプロセス処理プログラム(部
分)32や、実行処理プログラム(部分)33を有し、
制御プログラム(部分)514が、これらの機能を制御
する。本発明は、検索問合せの解析や実行に関するもの
であり、本発明を実行するプログラムは、これら、プリ
プロセス処理部31や、実行処理部32に存在する。実
行用ワークエリアやディクショナリ情報36は、ワーク
エリア512に存在する。ディクショナリ情報は、磁気
ディスク装置506におく形でも良く、ワークエリア5
12にキャッシュ情報として置く方法でも良い。本図で
は、プリプロセス処理部32、実行処理部33を明確に
分け、制御部514が制御する形で書いているが、各機
能に対して、共通に実行されるプログラムが存在した
り、各機能が制御部を介さずに混在していても、データ
ベース検索問合せの解析、実行を行なえるプログラムで
あればかまわない。
ィスク509や、ネットワーク510を介して、主メモ
リ中に設定される。なお本実施例では、外部とのプログ
ラムやデータのやりとりに、フロッピーディスクドライ
ブ504を使用する構成にしているが、光磁気ディス
ク、追記型光ディスクなど、他種の可搬型媒体を使用す
る構成をとることもできる。
合せ101の例である。また、検索問合せ101の例の
前提となる表の定義601、集約関数の定義602、集
約手段定義21を示す。実際にこれらの定義や問合せ文
をデータベース管理システム31が受け付ける順は、図
に示した順とは別である。例えば、集約手段定義21
に、602で定義する集約関数や、601で定義する表
を使用しているため、一般的には、先に602や601
の定義を行なう必要がある(解析の方法などによって
は、必ずしもこの限りでは無い)。
01に対する問合せであり、期間が1995から1996の間の
データに対して、支店、期間、商品をグループ化列とし
て、売上をROLLUPによるグループ化タイプの方法で集計
する問合わせを表している。売上表601は、各支店(I
D)、商品、期間、売上から構成される。データは挿入問
合せなどにより、表303に格納されるが、挿入問合せ
については、検索問合せ101に影響しないので、詳細
は省略し、以下の例では、データは表303に既に挿入
してあるものとする(データ挿入時のインデクスのメン
テナンスなどで関連はあるが、本発明の主内容とは関係
無いので省略する)。問合せ101で使用するaggrとい
う関数は、入力(売上)を集約演算する関数を意図す
る。一般にシステムで使用できるものとして総計SUM、
最大値MAX、最小値MIN、要素数COUNT、平均AVGがある。
また各種統計関数(メディアン、標準偏差など)や、ユ
ーザ定義の集約関数を定義し使用することも可能であ
る。602は集約関数をユーザ定義する例である。60
2の場合、FLOAT型のデータを入力に、FLOAT型の集約結
果を出力する集約関数の例であるが、入力をユーザ定義
型にし、ユーザ定義型に対する集約関数を定義すること
も可能である。ユーザ定義型に対する集約問合せに対し
ても本発明を問題無く適用できる。どのような集約を行
うかは、組込みモジュールagg_funcの本体および、イン
ターフェース記述により規定される。また、ユーザ定義
の集約関数を組込みモジュール関数として定義し、集約
手段特有の組込みモジュール関数などで直接使用するこ
とで、多次元のデータに対する複雑な集約などを効率良
く行うことが可能になる。また、多次元配列状データ
に、直接、ユーザ定義の集約の値を用意しておき、集約
手段(特有の組込みモジュール関数)と対応付ける代案
も適用可能である。21は集約手段の定義の例である。
CREATE INDEX TYPEによって、集約手段の組込みモジュ
ール関数のインタフェースなどをタイプ付けする。そし
て、CREATE INDEXで、タイプ付けした集約手段のタイプ
によって、具体的なデータ(表、列)に対して集約手段
を定義する。
に、関連する組込みモジュールの仕様記述401に記述
し、ディクショナリ定義(図11の集約手段タイプ-外
部関数関連テーブル1103)に登録することで、集約
関数やグループ化列の情報と集約手段に関連する組込み
モジュール(外部関数)を関連付けることができ、集約
手段選択331は、上記ディクショナリ情報を利用し
て、集約を行う検索問合せ101に対応する集約手段3
5を選択することが可能になる。
に対応する集約手段のタイプであることを示す(ここで
は、GROUP BY ROLLUPにも対応するものとする)。集約手
段が複数の集約関数に対応する場合、列挙するなどして
も良く、その場合でも発明に問題無く適用できる。例の
場合、集約手段sales_rollup_indexは売上表601の支
店、期間、商品に関連する検索で、ROLLUPのグループ化
タイプにより売上について集約関数aggrの結果を取得す
るためのものであることを示す。ROLLUP用の集約手段を
用いてGROUP BYを行えるとか、支店、期間、商品上の集
約手段を用いて支店、期間の集約を行えるとか適用範囲
に対して予め定めた幅があっても良い。
ジュール仕様記述(集約手段用)401の例である。組
込みモジュールの仕様記述401はモジュールの種別7
01、各外部関数の識別子、入出力パラメタ情報、関数
修飾702、パラメタ修飾703を含む。本図の例の場
合、モジュールの種別はインデクス型701aであり、C
REATE INDEX TYPEで定義した集約手段(型)を実現するた
めのモジュールであることを示す。この場合、集約手段
タイプmolap_typeに対応する組込みモジュールの仕様記
述401ということになる。外部関数sales_rollup_agg
rに対するパラメタの情報、関数修飾702が記述され
ている。関数修飾702は、モジュールの使用方法(起
動の契機など)を規定するためあらかじめ決められたも
のである。集約値取得の関数修飾の関数の場合、次の2
種類の特徴付けられたパラメタが必要となる。1つは、
グループ化列の指定であり、本図の例ではグループ化列
情報というパラメタ修飾703aにより特徴付けてい
る。例えば、この集約手段のタイプによる集約手段が、
支店、期間、商品上の集約手段である場合、問合せが、
支店、期間の集約であっても一般的には使用できる。集
約手段の構成列のうち、どの列に対する集約を行うのか
を指定する情報が必要である。例では構成列数分のBIT
のON,OFFで表すことを意図しているが、どの列に対する
集約を行うのかを指定する情報であることが分かれば、
別の指定方法でもかまわない。また、集約を行う列に順
序性を持たせたい場合などは各構成列に対応するパラメ
タに順番を示す番号を記すなどの方法が必要となる。RO
LLUP用のインデクスはROLLUPにしか使用しない仕様の場
合には、必要無い。また、ROLLUP用のインデクスがROLL
UPにもGROUP BYにも使用できる場合、何の目的で使用す
るのかを示す情報が必要になる。
なるグループを識別する情報の出力であり、本図の例で
はグループ列値というパラメタ修飾703b、703c、
703dにより特徴付けている。例の場合FLOAT型で返り
値RETのparam4が集約結果の値値を返すパラメタである
ことを意図するが、集約結果の値が単独で検索されて
も、支店、期間、商品がそれぞれ幾つの場合の集約結果
の値なのかがわからない。例えば、問合せの出力にグル
ープ化列が無い場合であっても、ROLLUPやCUBEなどの計
算のために必要になる可能性がある。また、並列データ
ベース管理システムの構成で、複数の実行処理部33か
らの集約結果の値をまとめる方法をとる場合などにおい
ては、各集約結果の値が、どのグループ化列の値に対し
て集約されたものかわからないとまとめられないため必
ず必要となる。
約関数に対応している場合の例である。集約手段が複数
の集約関数に対応し、直接、複数の集約関数に対応した
値を取り出せる場合には、上記のパラメタ修飾の他に、
取り出す集約関数の識別子を与えるパラメタや、取り出
した集約結果の値を格納するパラメタおよび対応するパ
ラメタ修飾の種類が必要となる(RETを複数のパラメタ
に対応できる特別なデータ型で定義する方法もある)。
の中のDBCOLUMNINFO704の例である。一般的にデータ
ベース管理システム31が、データの検索などを行う場
合、条件に合うデータを一度に全て取り出すようなこと
はしない(検索結果が一件とかなら別である)。データ
ページ上でどこまで検索したかを保持しておき順次取り
出していく。多次元データ取得で用いる多次元データベ
ースエンジンが順次データを検索するタイプのものでは
無く、複数のデータを一度に検索するものである場合、
システムのデータ検索と同様に順次取り出す制御を行う
ための一つの手段として、検索結果を一時的に作成する
リストなどに保持しておく方法がある。一時的に作成す
るリストによる保持や検索は、実行処理部33が通常行
っているサービスである。その他にも、組込みモジュー
ル41に対して、実行処理部33のサービスを提供すれ
ば、組込みモジュール関数で同様の処理を開発する負担
が減少する。このように実行処理部33のサービスを提
供する手段の一つとして、さまざまな実行処理部33の
制御用情報へのアドレスなどをまとめて提供する手段
(パラメタ)がDBCOLUMNINFO704である。
303の例である。売上表601は、支店(ID)、商品、
期間、売上などの列データから構成されるが、本発明の
説明に必要なデータのみ表している。
01の検索問合せの例より、結果は支店、期間、商品お
よび売上の集約(例ではSUM)の結果の組である。ROLLU
Pのグループ化タイプの方法をとる。例えば、(支店、期
間、商品)の組が(1,1995,COMPUTER)のデータは1つであ
り、売上は1000なので1つ目の結果は、1,1995,COMPUTE
R,1000であり、(支店、期間、商品)の組が(1,1995,BOO
K)のデータは1つであり、売上は3000なので2つ目の結
果は、1,1995,BOOK,3000である。他に(支店、期間)の組
が(1,1995)のデータは無い。この後の結果として(2,199
5,BOOK)を出力する方法もあるが、例では、(1,1995)に
対するROLLUPの結果を先に出力している。以下、出力順
に特に取り決めは無く検索順で良いものとする。取り決
めがある場合は、組込みモジュール関数中で並び変えを
行うか、組込みモジュール関数の結果に対して並び変え
を行えば良く、本発明の主内容に影響は無い。無論、多
次元配列状のデータが、取り決めの順で検索できる構造
になっていれば並び変えは必要無い。(1,1995)のデータ
は上記、(支店、期間、商品)が(1,1995,COMPUTER)と(1,
1995,BOOK)のデータ2つであり、売上の集約結果の値は
1000+3000=4000なので、3つ目の結果は1,1995,―,4000
である(ただし、―はROLLUPしていることを表すものと
してシステムで決めたものであれば何でも良い)。以
下、同様に各(支店、期間、商品)(支店、期間、―)(支
店、―、―)(―、―、―)に対する結果を出力する。
モジュール定義情報421の例である。定義情報は、組
込みモジュール仕様記述の組込み手段によってディクシ
ョナリ情報36に組込まれる。図7の例より、各組込み
モジュール(外部関数)に対して、関数修飾702など
の情報により外部関数テーブル1101を、パラメタの
情報により外部関数パラメタテーブル1102を、組込
みモジュールタイプの情報701などよりインデクス型
-外部関数関連テーブル1103を作成する。本図で
は、本発明の説明に必要な情報のみを示しており、この
他に情報があっても良いし、類する情報が取得できるな
らば、他の形式で情報が存在しても良い。
段定義情報422の例である。図6のCREATE INDEX TYP
EとCREATE INDEXの定義21を解析することによってデ
ィクショナリ情報36に組込まれる。解析は問合わせ解
析部321が行う方式でも、定義文解析部が独立して存
在する方式でも本発明に問題無く適用できる。本図で
は、本発明の説明に必要な情報のみを示しており、この
他に情報があっても良いし、類する情報が取得できるな
らば、他の形式で情報が存在しても良い。
せ実行手順指示302の例である。
転送は、それぞれ、実行処理部33に対応する処理を行
うプログラムが存在し、問合せ実行制御323が制御を
行う。本図の例は、集約値を検索しては、結果をユーザ
アプリケーション側などに転送する処理を、データ(集
約問合せ結果)が無くなるまで繰り返す処理手順を示し
ている。検索実行の情報に、データの検索なのか集約値
の検索なのか、インデクスは使用するのか、組込みモジ
ュールは使用するのか、使用する場合、どのインデクス
や組込みモジュールを使用するのかなど、検索に必要な
情報1302が指定され、その情報にしたがって検索タ
イプに応じた検索が行われ、その一端として組込みモジ
ュール41の起動が行われる。組込みモジュールの起動
情報431としては、何のための組込みモジュールか起
動の契機となる関数修飾702に対応する情報と、起動
する組込みモジュールのid、起動する組込みモジュール
のパラメタおよび、入力として渡す引数などの情報を含
む。検索実行により検索した結果は、結果転送により、
ユーザアプリケーションなどに転送される。検索した結
果は、実行処理部33が作業用に用いるワーク領域13
06に格納する。そのため、検索した結果を格納する場
所の情報1304と、転送するデータを格納する場所の
情報1305としては、共通の実行用ワーク1306上
の場所を実行用ワーク領域の先頭アドレスからのオフセ
ット値などで指しておく(実行用ワーク領域を実際にと
るのは実行時なので、問合せ実行手順指示を作成する解
析時には存在しないため、先頭からのオフセット値で示
している)。集約の基準となる列の値や集約値など組込
みモジュールの起動の結果に対しては、結果格納場所情
報で示す場所に入るように共通の実行用ワーク1306
上の場所を実行用ワーク領域の先頭アドレスからのオフ
セット値などで指しておく。実行用ワーク上の共通の場
所を指すようにする処理は、問合せ解析部321や問合
せ実行手順指示作成部322において行われる。
うに、集約問合せも一種の検索問合せであり、組込みの
集約処理も、検索処理(図の検索実行)の拡張で行うこ
とが可能である。無論、他の実行手順指示の構成であっ
ても、関数修飾702の目的にしたがって、組込みモジ
ュール41を起動し、集約値を検索し、ユーザアプリケ
ーションなどに結果を返せる構成であれば本発明に適用
できる。
段入力情報312の例である。集約手段への入力情報3
12は、集約を行う問合せ101に関する情報である。
図7の組込みモジュールのIN(またはINOUT)のパラメタ
に対応して渡す情報である。例の場合、param1, param
2, param3に取得したいグループ化列の値を指定する。
特別な値に対する集約で無ければNULLを指定する。para
m5には、図8で説明したDBCOLUMNINFOへのオフセットを
指定する。param6には、グループ化を行いたい列に対応
してフラグをたてる。例えば、支店、期間、商品に対す
る売上を求めることができる集約手段の場合、そのサブ
セットである支店、期間とか、商品のみとかに対しても
集約の結果を求めることが可能である。その場合、支
店、期間、商品の順に対応して、(1,1,0)や(0,0,1)のよ
うにフラグを立てて求めたいグループ化列の組を指定す
る。集約手段のタイプによっては、この他に、集約関数
の情報や、グループ化タイプの情報(ROOLLUP、CUBEな
ど)などが入力情報として有得る。
段出力情報313の例である。集約手段への出力情報3
13は集約結果の値およびその集約結果の値をだしたも
ととなるグループを識別する情報を含む。図7の組込み
モジュールのOUTまたはRET(またはINOUT)のパラメタに
対応して返される情報である。param4は集約の結果の値
を返すRETパラメタである。param5には、図8で説明し
たDBCOLUMNINFOへのオフセットを指定する。param7,par
am8,param9に集約結果の値をだしたもととなるグループ
化列の値が返される。
配列状のデータ414の例である。多次元データベース
などによりCUBEやROLLUPなど多次元的な切り口の集約に
対応する構造を持つ。本図の例では、支店、期間、商品
をそれぞれ軸として、n次元(この場合n=3)的に売上な
どのファクトデータ1601を配置し、各軸の方向にポ
インタを張る構造で対応する(逆をいえば、内部的にポ
インタを張ることで、n次元的な配置を実現する)。各
軸のデータの最後尾には、その軸方向の事前集約値を置
く(ALLと書いてある軸上)。本図は、図9の例をもとに
した多次元配列状のデータの例である。例えば、支店が
1、期間が1995の軸を参照すると、商品がRADIOのもの
は図10より無いのでSUMの値も無し(0とする方法もあ
るが、集約値が本当に0の場合と区別する必要があ
る)、商品がCOMPUTERのものは図10より1つあり、売
上は1000、よってSUMも1000、商品がBOOKのものは図1
0より1つあり、売上は3000、よってSUMも3000、この
軸の集約値(SUM)は1000+3000=4000したがって最後尾に4
000を置く。各ファクトデータ1601として、複数の
集約結果(例の場合SUMとMAX)を置くことで、複数の集
約関数に対応することもできる。
対しては、支店,期間を固定(1,1994)して、商品軸方向
に集約値を検索し、終了(ALLは除く)したら、期間軸
方向に1つ動かし(1,1995)、商品軸方向に集約値を検索
し以下、(1,1997)まで同様に行い終了したら、支店軸方
向に1つ動かし(2,1994)、以下同様に(3,1997)の軸まで
検索する。次に商品に対してROLLUPする。支店を固定
(1)して、商品がALLの軸に対して、集約値を検索し、終
了(期間がALLは除く)したら、支店軸方向に1つ動かし
(2)、以下同様に(3)の軸まで検索する。次に期間につい
てROLLUPする。商品と期間がALLの軸に対して検索す
る。最後に、支店についてROLLUPする。商品と期間と支
店がALLの場所を検索する(上記、商品と期間のROLLUP
の延長上でそのまま検索しても良い)。上記検索順序は
一例であり、先にALLまで検索してしまうなど、他の検
索順序であっても良く、このような検索順序の制御は、
多次元データ取得を関数修飾に持つ組込みモジュール関
数412(多次元配列状データにアクセスし集約値を取
得する多次元データベースエンジンに対応する組込みモ
ジュール関数)において行われる。
ータを参照しながら条件評価を行うことも可能である。
例えば、上記ROLLUPに対して、条件(WHERE節)に支店=
1とあった場合、インデクスのサーチは支店が2や3のと
ころを見る必要は無く、支店が1のところでサーチを止
められる。ただし、支店,期間,商品が全てALLのところ
は、支店が2や3に対するデータを含むので、(ALL,ALL,A
LL)を参照することはできず、期間,商品がALLの軸に対
し、条件に合ったところ(この場合(1,ALL,ALL)のみ)
を集約する必要がある。
有の組込みモジュール関数411において行う方法や、
条件評価を多次元データベースエンジン側の条件評価に
変換して多次元データ取得を関数修飾に持つ組込みモジ
ュール関数412で行う方法が考えられる。
が、本図の例のようにどの軸方向にも参照可能な構造に
なっていれば、対応できる。GROUPING SETや、組み合わ
せの場合も同様である。
かの判断は、集約手段のタイプにより集約手段選択33
1が行う。多次元データ取得を関数修飾に持つ組込みモ
ジュール412は、DBCOLUMNINFO704などにより、ど
のようなWHERE条件が与えられているか参照し、集約値
の取得方法を判断できる。DBCOLUMNINFO704経由では
無く、関数のパラメタとして明示的に渡す方法であって
も良い。
ンタを持つとか、多次元配列データ上で条件評価を高速
に行うために、各軸に対してハッシュによってアクセス
できるようにするとかの方法も考えられる。また、デー
タの無い部分を圧縮するなどの方法も考えられる。
ておけば、複雑なユーザ定義の集約演算をはじめとし
て、任意の集約関数に対処できる。多次元データ取得を
関数修飾に持つ組込みモジュール412は、DBCOLUMNIN
FO704などにより、どのような集約関数が与えられて
いるか参照し、集約値を計算することが可能である。DB
COLUMNINFO704経由では無く、関数のパラメタとして
明示的に渡す方法であっても良い。
般的な多次元データベースのデータ構造に類して、CUB
E、ROLLUP、GROUPING SETなどに対して、集約値(もし
くは集約値を計算するための情報)を(高速に)取得で
きる構造のデータになっていれば本発明に適用できる。
状データをメンテナンスする場合は、各事前集約値まで
メンテナンスする必要がある。
理説明の概略は図1である。
の定義情報305を取得する。集約演算を含む問合わせ
以外は発明の範囲の外であり、集約演算を含む問合せ1
1に対して、集約手段を使用できるかチェックする1
2。図12の集約手段定義情報305に対して、集約手
段に関連する表識別子は集約手段テーブル1201、集
約手段に関連する集約関数は、集約手段-集約関数関連
テーブル1203、集約手段に関連するグループ化列
は、集約手段構成列テーブル1202、集約手段に関連
するグループ化タイプは、集約手段-集約関数関連テー
ブル1203でそれぞれチェックできる。したがって、
条件121をチェックし、適合する集約手段(組込みモ
ジュール関数)の識別子を取得することが可能になる。
あとは、図11で示すような、組込みモジュールの定義
情報により、組込みモジュールの起動情報を問合せ実行
手順指示302に作成することができ、実行処理部によ
って起動され、集約手段の実行が実現されることにな
る。
用可能かGROUP BYにも適用可能かなどは、あらかじめシ
ステムで決め事とする方法や集約手段のタイプなどを増
やし指定する方法がある。いずれにせよ、問合わせの集
約方法に対して集約手段を使用できるか判断できれば問
題無い。また集約手段がWHERE条件にどこまで対応でき
るかについても、あらかじめシステムで決め事とする方
法(例えばWHERE条件があったら一切適用しない方法も
ある)や集約手段のタイプなどを増やし指定する方法が
ある。いずれにせよWHERE条件に対して集約手段を使用
できるか判断できれば問題無い。使用できる集約手段が
複数ある場合には、コストを見積もって一番良いものを
選択するようにしても良い。
111の概要説明である。本図は多次元の集約を行う集
約手段のフロントエンドにあたる処理(図4の411に
相当)の例である。
報(何の集約演算の結果が欲しいか、グループ化したい
列は何か、ROLLUPの結果を出したいか、CUBEの結果を出
したいかなど集約手段の仕様による)などを入力情報3
12として受け取る1701。次にその入力情報を多次
元データベースへの問合せに変換する1702。次に図
4のように、多次元データベースのエンジンにあたる処
理412に対し問合せを発行する1703。そして、多
次元データベースのエンジンにあたる処理から結果を受
取り1704、集約手段出力情報を作成し1705、集
約手段の結果としてリレーショナルデータベース管理シ
ステム側に返却する。本図の場合、問合せに対し、結果
が1つの例であるが、多次元データベースのエンジンに
あたる処理412から複数の結果が返される場合もあ
り、その場合は、結果を順次リレーショナルデータベー
ス管理システムに返す処理が必要になる。
ンジン(の集約値計算)を、インタフェース部分のみを
開発することで容易に使用できる効果がある。多次元デ
ータベースのエンジンに、現在のデータベースの主流で
あるリレーショナルデータベースからアクセスし、表デ
ータと多次元の配列データに対する問合せを一辺に発行
することが可能になる。
あるが、入力情報312と出力情報313に示される情
報が、集約手段の型などに対応して規定されれば、多次
元にかかわらず一般的に(複雑な)集約を行う手段とし
て、本発明に適用することができる。
23の処理説明の概略である。
タベース管理システムに発行されると、定義部323は
解析を行い1801、対応する定義情報305に登録を
行う。図6の集約手段定義21bの場合、解析した結果
から、集約手段sales_rollup_indexに対して、関連する
表、集約手段タイプ、外部関数との関連が図12の集約
手段テーブル1201に、関連するグループ化列との関
連が集約手段構成列テーブル1202に、関連する集約
関数とグループ化タイプとの関連が集約手段-集約関数
関連テーブルに登録される。集約手段が登録されると、
同時に集約手段によりアクセスする多次元配列状のデー
タ414を作成する1803。集約手段に既存の多次元
データベースエンジンを用いる場合、多次元配列状のデ
ータの作成は、多次元データベースエンジンへの入力処
理を利用することになる。多次元データベースエンジン
が、データの一括作成しかできない場合は、多次元の集
約を利用したいデータが全てリレーショナルデータベー
スにそろった段階で、本図の例のように、集約手段定義
を契機に一括作成することになる。集約したいデータが
更新された場合は、集約手段定義を再度やり直すことに
なる。それに対し、多次元データベースエンジンが、デ
ータの追加を行える場合には、リレーショナルデータベ
ースへのデータのINSERTを契機に多次元データベースエ
ンジンへの入力を行う方法も適用できる。
て示したデータベース管理システムプログラム513の
プリプロセス処理部プログラム32や実行処理部プログ
ラム33として実行される。しかし、そのプログラムは
図4の例の様にコンピュータシステムに物理的に直接接
続される外部記憶装置に格納されるものに限定されるこ
とはなく、磁気ディスク装置、フロッピーディスク装置
等のコンピュータで読み書きできる記憶媒体に格納する
ことができる。
発明は、前記実施形態に限定されるものではなく、その
要旨を逸脱しない範囲において種々変更可能であること
は勿論である。
ベース管理システムにおける集約問合せ処理方法によれ
ば、データベース管理システムにおいて、多次元の集約
機能など複雑な集約を行う外部の集約手段を問合せに応
じて選択することにより、データサイズを必要最低限に
押えるなど効率の良い集約方法を実行することができ
る。
に応じて選択することにより、その問合せに記述された
集約処理を好適に行う問合せ処理方法およびそれを実施
したデータベース処理システムを実現することが可能と
なる。
用する実施例の概要図
21…集約手段と関連付けられた条件、21…集約手段
の定義 31…データベース管理システム、32…プリプロセス
処理部、33…実行処理部、34…記憶装置、35…集
約手段、36…ディクショナリ情報、302…問合せ実
行手順指示、303…表データ、305…集約手段定義
情報、312…集約手段入力情報、313…集約手段出
力情報、321…問合せ解析部、322…問合せ実行手
順指示作成部、323…問合せ実行制御、324…集約
手段アクセス部、331…集約手段選択、332…集約
手段情報作成 41…組込みモジュール群、401…組込みモジュール
仕様記述 411…集約手段特有の組込みモジュール関数、412
…多次元データ取得の組込みモジュール関数、414…
多次元配列状データ、421…組込みモジュール定義情
報、431…組込みモジュール起動情報、442…起動
制御、443…組込みモジュール起動部、702…関数
修飾、703…パラメタ修飾、704…DBCOLUMNINFO、
Claims (17)
- 【請求項1】入力した問合せを解析し、集約処理を行う
問合せである場合、上記問合せに含まれる処理対象のデ
ータ群の識別情報および集約関数の識別情報に対応する
集約処理プログラムを呼び出すことを特徴とする問合せ
処理方法。 - 【請求項2】請求項1記載の問合せ処理方法において、 上記データ群の識別情報は、データベースの識別情報で
あることを特徴とする問合せ処理方法。 - 【請求項3】請求項1記載の問合せ処理方法において、 上記集約を行う検索問合は、集約関数の引数を含む検索
結果をグループ化の指定によりグループに分けられ、上
記グループごとに集約関数の引数を集約関数に適用する
記述を含むことを特徴とする問合せ処理方法。 - 【請求項4】請求項3記載の問合せ処理方法において、 上記グループ化の指定は、リレーショナルデータベース
の問合せ言語SQLのGROUP BY句による指定であることを
特徴とする問合せ処理方法。 - 【請求項5】請求項4記載の問合せ処理方法において、 上記GROUP BY句は、ROLLUPの操作を行う指定を含むこと
を特徴とする問合せ処理方法。 - 【請求項6】請求項4記載の問合せ処理方法において、 上記GROUP BY句は、CUBEの操作を行う指定を含むことを
特徴とする問合せ処理方法。 - 【請求項7】請求項1記載の問合せ処理方法において、 上記集約関数は、合計を計算する関数であることを特徴
とする問合せ処理方法。 - 【請求項8】請求項1記載の問合せ処理方法において、 上記集約関数は、最大値を計算する関数であることを特
徴とする問合せ処理方法。 - 【請求項9】請求項1記載の問合せ処理方法において、 上記集約関数は、最小値を計算する関数であることを特
徴とする問合せ処理方法。 - 【請求項10】請求項1記載の問合せ処理方法におい
て、 上記集約関数は、平均値を計算する関数であることを特
徴とする問合せ処理方法。 - 【請求項11】請求項1記載の問合せ処理方法におい
て、 上記集約関数は、その集約関数の引数を含む検索結果を
グループ化の指定によりグループに分け、そのグループ
ごとに、そのグループに属するデータを基に1つの集約
結果である値を作り出し、そのグループごとに作り出し
た集約結果の値を出力するユーザ定義の関数であること
を特徴とする問合せ処理方法。 - 【請求項12】請求項1記載の問合せ処理方法におい
て、 上記集約処理は、上記問合せ中の集約に関する情報を入
力に含み、集約結果の値と、その集約結果の値を出した
もととなるグループを識別する情報を出力に含むことを
特徴とする問合せ処理方法。 - 【請求項13】請求項1記載の問合せ処理方法におい
て、 上記集約処理は、多次元の配列上に管理されたデータを
集約する処理であることを特徴とする問合せ処理方法。 - 【請求項14】請求項1記載の問合せ処理方法におい
て、 上記データ群の識別情報および上記約関数の識別情報と
集約処理プログラムとの対応付けを予め行うことを特徴
とする問合せ処理方法。 - 【請求項15】請求項1記載の問合せ処理方法におい
て、 さらに、上記集約処理プログラムから集約処理結果を入
力し、上記問合せの結果として出力することを特徴とす
る問合せ処理方法。 - 【請求項16】入力した問合せを解析する手段と、集約
処理を行う問合せである場合、上記問合せに含まれる処
理対象のデータ群の識別情報および集約関数の識別情報
に対応する集約処理プログラムを呼び出す手段とを備え
たことを特徴とするデータベース処理システム。 - 【請求項17】入力した問合せを解析し、集約処理を行
う問合せである場合、上記問合せに含まれる処理対象の
データ群の識別情報および集約関数の識別情報に対応す
る集約処理プログラムを呼び出す問合せ処理プログラム
を格納したことを特徴とする計算機読み取り可能な記録
媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000054368A JP2001243242A (ja) | 2000-02-25 | 2000-02-25 | 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2000054368A JP2001243242A (ja) | 2000-02-25 | 2000-02-25 | 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001243242A true JP2001243242A (ja) | 2001-09-07 |
Family
ID=18575636
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000054368A Pending JP2001243242A (ja) | 2000-02-25 | 2000-02-25 | 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2001243242A (ja) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006048646A (ja) * | 2004-07-30 | 2006-02-16 | Microsoft Corp | ワークブックをデータソースとして公開するための方法、システム、および装置 |
US7707143B2 (en) | 2004-06-14 | 2010-04-27 | International Business Machines Corporation | Systems, methods, and computer program products that automatically discover metadata objects and generate multidimensional models |
US7716167B2 (en) | 2002-12-18 | 2010-05-11 | International Business Machines Corporation | System and method for automatically building an OLAP model in a relational database |
US7873664B2 (en) | 2002-05-10 | 2011-01-18 | International Business Machines Corporation | Systems and computer program products to browse database query information |
US7895191B2 (en) | 2003-04-09 | 2011-02-22 | International Business Machines Corporation | Improving performance of database queries |
US7953694B2 (en) | 2003-01-13 | 2011-05-31 | International Business Machines Corporation | Method, system, and program for specifying multidimensional calculations for a relational OLAP engine |
JP2013218380A (ja) * | 2012-04-04 | 2013-10-24 | Nec Corp | データベース問合せ文解析装置、データベース問合せ文解析方法およびプログラム |
US8578399B2 (en) | 2004-07-30 | 2013-11-05 | Microsoft Corporation | Method, system, and apparatus for providing access to workbook models through remote function cells |
JP2015022388A (ja) * | 2013-07-17 | 2015-02-02 | 株式会社東芝 | データベース・システム |
JP2017537383A (ja) * | 2014-11-26 | 2017-12-14 | ルッカー データ サイエンシズ インコーポレイテッド | 正規化されたデータセットの関係認識集約(raa) |
JP2020098554A (ja) * | 2018-12-19 | 2020-06-25 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法及びプログラム |
JP2021511582A (ja) * | 2018-01-16 | 2021-05-06 | オラクル・インターナショナル・コーポレイション | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 |
-
2000
- 2000-02-25 JP JP2000054368A patent/JP2001243242A/ja active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7873664B2 (en) | 2002-05-10 | 2011-01-18 | International Business Machines Corporation | Systems and computer program products to browse database query information |
US7716167B2 (en) | 2002-12-18 | 2010-05-11 | International Business Machines Corporation | System and method for automatically building an OLAP model in a relational database |
US7953694B2 (en) | 2003-01-13 | 2011-05-31 | International Business Machines Corporation | Method, system, and program for specifying multidimensional calculations for a relational OLAP engine |
US7895191B2 (en) | 2003-04-09 | 2011-02-22 | International Business Machines Corporation | Improving performance of database queries |
US7707143B2 (en) | 2004-06-14 | 2010-04-27 | International Business Machines Corporation | Systems, methods, and computer program products that automatically discover metadata objects and generate multidimensional models |
US9317495B2 (en) | 2004-07-30 | 2016-04-19 | Microsoft Technology Licensing, Llc | Method, system, and apparatus for providing access to workbook models through remote function calls |
US7991804B2 (en) | 2004-07-30 | 2011-08-02 | Microsoft Corporation | Method, system, and apparatus for exposing workbooks as data sources |
KR101143155B1 (ko) | 2004-07-30 | 2012-05-11 | 마이크로소프트 코포레이션 | 데이터 소스로서 워크북을 노출시키기 위한 방법, 시스템,및 장치 |
JP2006048646A (ja) * | 2004-07-30 | 2006-02-16 | Microsoft Corp | ワークブックをデータソースとして公開するための方法、システム、および装置 |
US8578399B2 (en) | 2004-07-30 | 2013-11-05 | Microsoft Corporation | Method, system, and apparatus for providing access to workbook models through remote function cells |
JP2013218380A (ja) * | 2012-04-04 | 2013-10-24 | Nec Corp | データベース問合せ文解析装置、データベース問合せ文解析方法およびプログラム |
JP2015022388A (ja) * | 2013-07-17 | 2015-02-02 | 株式会社東芝 | データベース・システム |
JP2017537383A (ja) * | 2014-11-26 | 2017-12-14 | ルッカー データ サイエンシズ インコーポレイテッド | 正規化されたデータセットの関係認識集約(raa) |
JP2021511582A (ja) * | 2018-01-16 | 2021-05-06 | オラクル・インターナショナル・コーポレイション | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 |
JP7273045B2 (ja) | 2018-01-16 | 2023-05-12 | オラクル・インターナショナル・コーポレイション | Sqlクエリプランを最適化するための次元コンテキスト伝搬技術 |
JP2020098554A (ja) * | 2018-12-19 | 2020-06-25 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法及びプログラム |
WO2020129680A1 (ja) * | 2018-12-19 | 2020-06-25 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法及びプログラム |
JP7183762B2 (ja) | 2018-12-19 | 2022-12-06 | 日本電信電話株式会社 | サーバ選択装置、サーバ選択方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1705945B (zh) | 提供查询的属性的方法和系统 | |
US7702616B1 (en) | Methods and apparatus for processing a query joining tables stored at different data sources | |
US6341281B1 (en) | Database system with methods for optimizing performance of correlated subqueries by reusing invariant results of operator tree | |
US6687693B2 (en) | Architecture for distributed relational data mining systems | |
RU2398273C2 (ru) | Объединение многомерных выражений и расширений глубинного анализа данных для извлечения информации из кубов olap | |
US6466931B1 (en) | Method and system for transparently caching and reusing query execution plans efficiently | |
US6012053A (en) | Computer system with user-controlled relevance ranking of search results | |
US7734620B2 (en) | Optimizing a database query that fetches N rows | |
US6304872B1 (en) | Search system for providing fulltext search over web pages of world wide web servers | |
US5375237A (en) | Computerized method of creating a convenient dictionary representing data structures for use by a plurality of program products | |
US20030037037A1 (en) | Method of storing, maintaining and distributing computer intelligible electronic data | |
US20110145210A1 (en) | System and Method for Managing One or More Databases | |
AU735010B3 (en) | Business intelligence system | |
US20030105745A1 (en) | Text-file based relational database | |
CN111767303A (zh) | 一种数据查询方法、装置、服务器及可读存储介质 | |
CN101556602B (zh) | 一种基于差分表的内存OLAP What-if分析方法 | |
US20060129609A1 (en) | Database synchronization using change log | |
US11269880B2 (en) | Retroreflective clustered join graph generation for relational database queries | |
JP2001243242A (ja) | 問合せ処理方法およびそれを実施するデータベース管理システムその処理プログラムを格納した記録媒体 | |
US20020049747A1 (en) | Method for integrating and accessing of heterogeneous data sources | |
CN106815353A (zh) | 一种数据查询的方法及设备 | |
JP2008537827A (ja) | 階層データベースのリレーショナル・クエリ | |
EP1700095B1 (en) | System and method for generating custom hierarchies in an analytical data structure | |
WO2023086322A1 (en) | Late materialization of queried data in database cache | |
US20080215539A1 (en) | Data ordering for derived columns in a database system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060216 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060221 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060417 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060420 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20060606 |