JP3584630B2 - データベース処理システムにおける分類集計処理方法 - Google Patents
データベース処理システムにおける分類集計処理方法 Download PDFInfo
- Publication number
- JP3584630B2 JP3584630B2 JP24958996A JP24958996A JP3584630B2 JP 3584630 B2 JP3584630 B2 JP 3584630B2 JP 24958996 A JP24958996 A JP 24958996A JP 24958996 A JP24958996 A JP 24958996A JP 3584630 B2 JP3584630 B2 JP 3584630B2
- Authority
- JP
- Japan
- Prior art keywords
- aggregation
- server
- result
- processing
- value
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は1つ以上のノードを連携させてデータベース処理を行なう並列データベース処理システムに係わり、特にデータベースの分類集計処理の高速化を図る並列データベース処理システムに関する。
【0002】
【従来の技術】
データベースの論理構造は、図2に示すようにテーブル形式(20)である。この表の横方向をレコード(21)、縦方向をカラム(22)という。各レコードの同じカラムは、同じ形式のデータを格納する。
【0003】
分類集計処理とは、テーブル内のレコードをあらかじめ指定された1つ以上のカラムの値に基づき、いくつかのグループに分類し、それぞれのグループに属するレコードの集合ごとにあらかじめ指定された1つ以上の集計対象カラムの値の合計値、平均値などの統計値を計算する処理である。
【0004】
図3に分類集計処理の例を示す。この例では、関係データベースは販売実績に関する情報をテーブルの形で保持する。テーブル内のレコードは商品コード、販売地、販売日、値段に関するカラム値をもつ(30)。この例では、テーブル内のレコードを商品コード、販売地、販売日のカラム値に関して同じ値を持つレコードを一つのグループとし(31)、それぞれのグループごとにレコードの値段の合計値を計算する(32)。集計処理の結果は再びテーブルの形で得られる(33)。
【0005】
従来の分類集計処理方式としては、第1の方式として文献「Parallel Sorting Algorithms (Selim G. Akl著、Academic Press, Inc.発行)」の3章の48頁〜49頁に開示されているマージソート方式、第2の方式として文献「Relational Database Management (M. Papazoglou, W. Valder著、PRENTICE HALL発行)」の9章の262頁〜264頁に開示されている単純ハッシュ方式をあげることができる。
【0006】
まず第1の従来方式としてマージソート方式のフローチャートを図4に示す。マージソート方式では、データベースのテーブルを構成するレコードを二次記憶装置からブロック単位で読み込み(40)、主記憶上でソートした後(41)、再びこれを二次記憶装置に書き戻す(42)。この操作をすべてのレコードブロックに対して繰り返した後(43)、ブロックごとにソートされたレコードリストの間で二次記憶装置を作業領域としてマージソートを行なう(44)。以上の操作の後、ソートされたレコードの列を二次記憶装置から順次読み込みながら(45)レコードの分類集計処理を行なう(46)。しかしマージソート方式では、レコードの外部ソート処理に際して大量のI/Oが発生し、またソート処理(分類処理に相当)と集計処理の間で並行実行を行なうことができないため、この方式では効率の良い分類集計処理を行なうことができない。
【0007】
また第2の従来方式として単純ハッシュ方式のフローチャートを図5に示す。単純ハッシュ方式では、二次記憶装置に格納されたレコードを読みだす際に(50)、ハッシュ関数を用いたレコードのグループ化を行ない(51)、同時に集計結果格納領域上の集計結果を更新してゆくことによって(52)分類処理と集計処理を並行実行し、グループ化のための一時ファイルを作成せずに分類集計処理を行なう。しかし単純ハッシュ方式では、集計結果格納領域に対してランダムにアクセスするため、集計結果が主記憶上の予約領域に収まりきらない場合に(53)二次記憶装置に対してランダムI/Oが発生し(54)、分類集計処理の実行効率を低下させてしまう。
【0008】
【発明が解決しようとする課題】
従来の関係データベースシステムでは、分類集計処理においてデータベースのレコードをグループ化する際に、二次記憶装置を介したマージソートを行なっていた。この方法では、マージソート処理のために大量のI/Oアクセスが必要とされ、また分類処理と集計処理を並行実行することができないため、分類集計処理の効率を大きく低下させていた。
【0009】
あるいはまた、従来の関係データベースシステムでは、グループ集計におけるレコードの分類処理の際に、ハッシュ関数を用いたグルーピングを行なっていた。この方法では、集計処理の際に集計結果格納領域に対してランダムアクセスが発生し、集計結果が主記憶上の予約領域に収まらない場合には大量のランダムI/Oが二次記憶装置に対して発行され、分類集計処理の効率低下の要因となっていた。
【0010】
本発明の目的は、データベースの分類集計処理において分類処理と集計処理を並行実行可能とすることである。
【0011】
本発明の他の目的は、集計結果が主記憶上の予約領域に収まらない場合でも二次記憶装置に対するランダムI/Oを発生させないことである。
【0012】
【課題を解決するための手段】
本発明による並列データベース処理システムの分類集計処理方式は、1つ以上の入出力サーバ2と、1つ以上の集計処理サーバ4と、1つ以上の問い合わせ処理サーバ5とを接続するネットワーク3とを備え、多数のレコードからなる一つのテーブルが分割された部分テーブル7を上記複数の入出力サーバに分割して保持する並列データベース処理システムにおいて分類集計処理を行なう方法であって、
ハッシュ機構を用いて集計結果の格納場所の決定と集計処理をレコード単位で実行することによりレコードの分類処理と集計処理を並行実行可能とし、集計結果が主記憶上の予約領域に収まらない場合には、部分集計結果を補助二次記憶装置17に待避し、集計処理終了後に待避した部分集計結果を統合し、補助二次記憶装置に対するランダムI/Oを防止することにより効率的に分類集計処理を実行する方式である。
【0013】
具体的には、データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しを行なう入出力サーバと、レコードの集計処理を行なう集計処理サーバとを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なう第1のデータベース処理システムであって、前記入出力サーバは、各レコードのグループ化カラムの値に応じて当該レコードの集計処理を行なう集計処理サーバに転送する手段を有し、前記集計処理サーバは、集計結果格納領域を集計処理サーバが備える主記憶上に確保する手段と、入出力サーバから受信したレコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納場所に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段とを有し、前記問い合わせ処理サーバは、前記集計処理サーバから受信した中間集計結果を統合する手段を有することにより実現する。
【0014】
また、上記第1のデータベース処理システムにおいて、集計処理サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、集計処理サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0015】
また、上記第1のデータベース処理システムにおいて、集計処理サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、集計処理サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0016】
また、上記第1のデータベース処理システムにおいて、集計処理サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを集計処理サーバの備える補助二次記憶装置に待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0017】
また、上記第1のデータベース処理システムにおいて、集計処理サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを集計処理サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、集計処理サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0018】
次に、データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しと集計処理を行なう入出力・集計サーバと、中間集計結果の集計処理を行なう中間集計処理サーバと、前記問い合わせ処理サーバと前記入出力・集計サーバと中間集計処理サーバとを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なう第2のデータベース処理システムにおいて、前記入出力・集計サーバは、集計結果格納領域を入出力・集計サーバが備える主記憶上に確保する手段と、各レコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納領域に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該部分集計結果に対応するグループ化識別子の値に応じて当該部分集計結果の統合処理を行なう中間集計サーバに転送する手段とを有し、前記中間集計サーバは、入出力・集計サーバから受信した部分集計結果を統合し、中間結果を生成する手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段を有し、前記問い合わせ処理サーバは、前記中間集計処理サーバから受信した中間集計結果を統合する手段を有することにより実現する。
【0019】
また、上記第2のデータベース処理システムにおいて、入出力・集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、主記憶上の集計途中の集計結果を前記入出力・集計サーバの備える対応規則に従って中間集計サーバに部分集計結果として転送し、中間集計サーバにおいて部分集計結果の分類集計処理を行なうことによって、それぞれの入出力・集計サーバに格納されたレコードに関する集計処理を行うことにより実現する。
【0020】
また、上記第2のデータベース処理システムにおいて、入出力・集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、入出力集計サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0021】
また、上記第2のデータベース処理システムにおいて、入出力・集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、入出力・集計サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果の間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0022】
また、上記第2のデータベース処理システムにおいて、入出力・集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを入出力・集計サーバの備える補助二次記憶装置に待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果との間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0023】
また、上記第2のデータベース処理システムにおいて、入出力・集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを入出力・集計サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、入出力・集計サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことにより実現する。
【0024】
また、中間集計サーバにおいて部分集計結果の分類集計処理を行なう際に、中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、中間集計サーバの備える補助二次記憶装置に中間集計処理として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことにより実現する。
【0025】
また、中間集計サーバにおいて部分集計結果の分類集計処理を行なう際に、中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、中間集計サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことにより実現する。
【0026】
また、中間集計サーバにおいて部分集計結果の分類集計処理を行なう際に、中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを中間集計サーバの備える補助二次記憶装置に待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことにより実現する。
【0027】
また、中間集計サーバにおいて部分集計結果の分類集計処理を行なう際に、中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを中間集計サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、中間集計サーバの備える補助二次記憶装置に中間集計結果として待避し、集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことにより実現する。
【0028】
更に、データベース処理システムに格納されているテーブルを構成するレコードの一つ以上のカラムをグループ化カラムとして指定し、当該指定されたグループ化カラム値に対してグループ識別子を一対一あるいは多対一に対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該分類された各々のグループに属するレコードの一つ以上のカラムを集計対象カラムとして指定し、当該指定されたカラムの値に関する集計処理を行なうデータベース処理システムにおいて、分類集計処理のグループ化カラムの指定に、グループ識別子の値の範囲を指定するための書式を有することにより実現する。
【0029】
更に又、データベース処理システムに格納されているテーブルを構成するレコードの一つ以上のカラムをグループ化カラムとして指定し、当該指定されたグループ化カラム値に対してグループ識別子を一対一あるいは多対一に対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該分類された各々のグループに属するレコードの一つ以上のカラムを集計対象カラムとして指定し、当該指定されたカラムの値に関する集計処理を行なうデータベース処理システムにおいて、分類集計処理のグループ化カラムの指定に、グループ化の結果得られるグループ数の上限を指定するための書式を有することにより実現する。
【0030】
更に又、データベース処理システムに格納されているテーブルを構成するレコードの一つ以上のカラムをグループ化カラムとして指定し、当該指定されたグループ化カラム値に対してグループ識別子を一対一あるいは多対一に対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該分類された各々のグループに属するレコードの一つ以上のカラムを集計対象カラムとして指定し、当該指定されたカラムの値に関する集計処理を行なうデータベース処理システムにおいて、分類集計処理のグループ化カラムの指定に、グループ化カラム値とグループ識別子との対応を定義するためのユーザ定義関数を指定するための書式を有することにより実現する。
【0031】
更に、上記データベース処理システムにおいて、分類集計処理のグループ化カラムの指定に、グループ識別子の値の範囲を指定するための書式を有し、グループ化カラムごとのグループ識別子の値の範囲の指定の有無に対応して、集計結果格納位置をグループ化識別子の値から計算によって直接決定する配列方式と、グループ化識別子の比較によって決定するハッシュ方式とをそれぞれグループ化カラムごとに使い分けることにより実現する。
【0032】
更に、上記データベース処理システムにおいて、分類集計処理のグループ化カラムの指定に、グループ化の結果得られるグループ数の上限を指定するための書式を有し、グループ化カラムごとのグループ識別子の値の範囲の指定を参照して、指定された範囲の上限あるいは下限を逸脱した値を持つグループ識別子のためのグループを用意し、当該グループに分類されるレコードに関しても集計処理を行なうことにより実現する。
【0033】
更に、上記データベース処理システムにおいて分類集計処理のグループ化カラムの指定に、グループ化カラム値とグループ識別子との対応を定義するためのユーザ定義関数を指定するための書式を有し、グループ化カラム値とグループ識別子との対応を定義するためのユーザ定義関数を利用して、グループ識別子の値の範囲を狭く限定して集計処理を行なうことにより実現する。
【0034】
【発明の実施の形態】
(実施例1)
図1に、本発明における並列データベース処理システムの一実施例の構成を示す。図1において、1はテーブルを格納する二次記憶装置、2は二次記憶装置から部分テーブル7を読み出す入出力サーバ、4はレコードの分類集計処理を行なう集計処理サーバ、5は各集計サーバの集計結果を統合し、最終的な集計結果を作成する問い合わせ処理サーバ、3はそれぞれのノードの間でレコードや集計結果を交換するためのネットワーク、6はデータベースに対して分類集計処理要求を発行し、また集計結果を問い合わせ処理サーバ5から取り出すための端末装置である。ネットワーク3としては、LAN、WAN、専用ハードウェア装置等、任意のプロセッサ間結合ネットワークを利用することができる。
【0035】
二次記憶装置1は、グループ集計の対象となるレコードを格納する。レコードは、ハッシュ分割法あるいはキー値分割法等の分割手法に基づき、複数の二次記憶装置に分割して格納されている。入出力サーバ2は、二次記憶装置1から読み出したレコードを一時的に格納するデータバッファ8、レコードの分配先の集計処理サーバを決定するレコード分配手段9および複数の送信バッファ10を保持する。データバッファ8は入出力サーバが備える主記憶上に確保される。
【0036】
二次記憶装置1の保持する部分テーブル7は、ブロック単位でデータバッファ8に転送される。また、レコード分配手段9では、データバッファ8内のレコードを順次取り出し、各レコードのグループ化の対象となるカラムの値を参照して当該レコードの集計を行なうべき集計処理サーバ4を決定する。入出力サーバ2は、当該レコードの集計処理に必要となるグループ化カラムと集計対象カラムのみを取り出した後、送信バッファ10からネットワーク3を通じて各集計処理サーバ4に分配する。
【0037】
集計処理サーバ4は、複数の受信バッファ11と入出力サーバ2から転送されたレコードを集計する集計手段12と集計結果を格納する集計結果格納領域13および集計途中の集計結果を待避するための補助二次記憶装置17を保持する。集計結果格納領域は集計処理サーバ4の備える主記憶上に確保される。集計処理サーバでは、受信バッファ11に転送されたレコードに対して集計手段12を用いて集計処理を行い、中間集計結果を集計結果格納領域13に格納する。中間集計結果が集計結果格納領域13に収まらない場合は、集計途中の集計結果は部分集計結果として補助二次記憶装置17に待避される。集計処理サーバ4は、分配されたすべてのレコードに関して集計処理を終えた時点で、中間集計結果を問い合わせ処理サーバ5へ転送する。
【0038】
問い合わせ処理サーバ5は、複数の受信バッファ14、集計結果統合手段15および最終集計結果格納領域16を保持する。問い合わせ処理サーバ5は、端末装置6からの集計処理を受け付け、集計処理実行手順を決定し、入出力サーバ2や集計処理サーバ4に対する実行指示を行う。また問い合わせ処理サーバ5はそれぞれの集計処理サーバ4が作成した中間集計結果をネットワーク3を通じて収集し、それらの間で統合処理を行なうことにより最終収集結果を作成し、最終集計結果格納領域16に格納する。最終集計結果格納領域16は問い合わせ処理サーバ5が備える主記憶あるいは二次記憶上に保持される。端末装置6は、問い合わせ処理サーバ5に対して集計処理を依頼し、問い合わせ処理サーバ5上に最終集計結果が作成され次第、順次最終集計結果を取り出す。
【0039】
図6は本実施例おける分類集計処理全体の処理フローを示す。
まずはじめに端末装置6は集計処理実行要求を問い合わせ処理サーバ5に対して転送し(処理要求発行700)、問い合わせ処理サーバからの応答を待つ。一方集計処理実行要求を受け付けた問い合わせ処理サーバ5は、要求された集計処理を行うための実行計画を作成し(処理要求受付701)、当該計画に従って入出力サーバや問い合わせ処理サーバ上の集計処理プログラムの起動を行なう(プログラム起動702)。問い合わせ処理サーバ5は、受信バッファ14、最終集計結果格納領域16などの初期化を行なった後(領域初期化703)、集計処理サーバ4からの応答を待つ。
【0040】
問い合わせ処理サーバ5により集計処理プログラムを起動された入出力サーバ2や集計処理サーバ4は、問い合わせ処理サーバ5からの指示に従って、データバッファ8、送信バッファ10、受信バッファ11、集計結果格納領域13などの初期化を行う(704、705)。入出力サーバ2は、領域初期化を行なった後、二次記憶装置1からデータバッファ8に読み込んだレコードごとに分配処理手段9に基づいてレコードの転送先集計処理サーバを決定し、送信バッファ10を通じてレコードの転送を行なう(706)。入出力サーバ2は、すべてのレコードを分配し終えた時点で終了通知を各集計処理サーバに対して送信し(707)、終了する(708)。
【0041】
一方入出力サーバ2からレコードを分配された集計処理サーバ4では、レコードを受信し次第、レコードの集計処理を行ない、中間集計結果の作成を始める。中間集計結果があらかじめ割り当てられた集計結果格納領域に収まらない場合には、中間集計結果を部分集計結果として補助二次記憶装置17への待避処理を行なう(709)。各集計処理サーバでは、すべての入出力サーバからの終了通知を受信した時点で(710)、もし中間集計結果の二次記憶装置への待避処理が行なわれていた場合には(711)、部分集計結果の統合処理を行なう(712)。
【0042】
以上のような手順で作成された中間集計結果は、各集計処理サーバ4から問い合わせ処理サーバ5に対してブロック単位で転送される(713)。すべての中間集計結果を転送し終えた時点で、集計処理サーバは問い合わせ処理サーバに対して終了通知を送信し(714)、終了する(715)。
【0043】
中間集計結果を受け取った問い合わせ処理サーバ5では、中間集計結果を順次、最終集計結果格納領域16に格納し、端末装置6から要求にしたがって、最終集計結果を端末装置6に対して転送する(716)。問い合わせ処理サーバはすべての集計処理サーバからの終了通知を受け取った時点で(717)、端末装置に対して終了通知を送信し(718)、終了する(719)。端末装置6は、必要に応じて問い合わせ処理サーバ5に対して最終集計結果を要求し、最終主計結果を受信する(720)。端末装置6は、問い合わせ処理サーバ5からの終了通知を受信して(721)集計処理の終了を確認した時点で自身の処理を終了する(722)。
【0044】
本実施例において、集計処理サーバにおける集計処理(709)と中間集計処理転送(713)との間を除いて、互いに隣接する処理の間ではレコード単位で並行実行を行なうことが可能である。
【0045】
以下では、各ノード上の集計処理プログラムのフローチャートを更に詳しく説明する。
【0046】
図7は入出力サーバ2における分類集計処理のフローチャートを示す。入出力サーバ2は、問い合わせ処理サーバ5からの指示にしたがって、まずデータバッファ8、送信バッファ10の初期化を行う(80)。次に二次記憶装置1に格納されているレコードをブロック単位でデータバッファ8に転送する(81)。次に入出力サーバ2は、データバッファ8からレコードを順次取り出し(82)、各レコードごとにレコード分配手段9(後述する)にしたがって分配先の集計処理サーバ4を決定する(83)。各レコードは、分配先ごとにページ単位で蓄積され(84)、ページが埋まった時点(85)で送信バッファ10から対応する集計処理サーバ4に転送される(86)。入出力サーバ2は、すべてのレコードを転送し終えた時点で、各集計処理サーバに対して終了通知を送信し(87)、終了する(88)。
【0047】
図8は集計処理サーバ4における分類集計処理のフローチャートを示す。集計処理サーバ4は、問い合わせ処理サーバ5からの指示にしたがって、まず集計結果格納領域13、受信バッファ11の初期化を行う(90)。集計処理サーバ4は、入出力サーバ2から受信バッファ11に転送された(91)レコードページからレコードを一つずつ取り出し(92)、それぞれのレコードに対してグループ分類手段(後述する)を適用し、分類先グループを指定するグループ識別子を決定する(93)。次いで取り出したレコードに対して集計処理を行い(95)、得られた集計結果を集計結果格納領域13に対して書き込む(96)。集計結果格納形式としてハッシュ方式を利用した場合、集計結果があらかじめ割り当てられた集計結果格納領域に収まらない場合がある(97)。この場合は、途中の集計結果を部分集計結果として対応するグループ化識別子の値に関して主記憶上でソートした後、補助二次記憶装置17に待避する(98)。各集計処理サーバは、受信したレコード分だけ集計処理を繰り返すことにより中間集計結果を得る(99)。
【0048】
集計処理サーバは、すべての入出力サーバから終了通知を受信した時点で(910)、もし集計途中で部分集計結果が補助二次記憶装置17に待避されていた場合は(911)、この時点で待避した部分集計結果の間でマージソート処理を行ない、中間集計結果を作成する(912)。二次記憶装置に待避されている部分集計結果は、ソートされているので、部分集計結果の間のマージ処理は効率良く実行することができる。部分集計結果が待避されていない場合は、何も処理を行なう必要はない。各集計処理サーバはすべてのレコードの集計処理を終えた後に、得られた中間集計結果を問い合わせ処理サーバに対して転送し(913)、転送を終えた時点で終了通知を問い合わせ処理サーバに対して送信し(914)、終了する(915)。
【0049】
図9は問い合わせ処理サーバ5における分類集計処理のフローチャートを示す。
【0050】
問い合わせ処理サーバ5は、まず端末装置6から集計処理実行要求を受け付け(100)、処理の内容にしたがって、入出力サーバ2や集計処理サーバ4上の集計処理プログラムを起動する(101)。次いで問い合わせ処理サーバ5は、受信バッファ14、最終集計結果格納領域16の初期化を行い(102)、集計処理サーバ4からの中間集計結果の受信を待つ。問い合わせ処理サーバ5は、各集計処理サーバ4から中間集計結果を受信し次第(103)、中間集計結果を順につなぎ合わせて最終集計結果とする(104)。問い合わせ処理サーバ5は、端末装置6からの要求にしたがって、最終集計結果を頭から順に転送する(105)。問い合わせ処理サーバ5はすべての最終集計結果を転送し終えた時点で(106)、端末装置6に対して終了通知を送信し(107)、終了する(108)。
【0051】
図10は、端末装置6における処理のフローチャートを示す。端末装置6は、問い合わせ処理サーバ5に対して集計処理実行要求を発行した後(110)、問い合わせ処理サーバ5からの最終集計結果の受信を待つ(111)。端末装置6は問い合わせ処理サーバ5に対して次々と最終集計結果の転送を要求する。端末装置6は問い合わせ処理サーバ5から終了通知を受け取った時点で(112)、処理を終了する(113)。
【0052】
以下では、上記の説明に登場したレコード分配手段、グループ分類手段、集計処理手段、集計結果格納方式、統合処理手段に関して、それぞれ更に詳しく解説する。
【0053】
本実施例におけるレコード分配手段とは、あらかじめ複数の二次記憶装置1に分割されて格納されているレコード群を、入出力サーバ2を経由して各集計サーバ4に再分配する方法である。本レコード分配手段では、集計処理において同じグループに分類されるレコード同士が、必ず同一集計サーバ4に対して分散されている必要がある。すなわち本実施例における分配では、集計処理サーバNiに分配されるレコードの集合をSi、グループGjに分類されるレコードの集合をTjとした時、すべてのjについてあるiが存在して、Si⊇GjかつSk(k≠i)∩Gj=空集合が成り立つ。同一グループに分類されるレコードは必ず同一集計処理サーバで集計されるため、問い合わせ処理サーバ5は送られてきた中間集計結果を単につなぎ合わせるだけで簡単に最終集計結果を取得することができる。
【0054】
レコード分配手段の具体例としては、ハッシュ分割、キー値分割、ラウンドロビン分割などの方法が適用可能である。ただし、二次記憶に分割格納されているレコードが、集計処理を行なうにあたってあらかじめ上記の条件を満たすように分割されている場合は、データの分配を行なわずに、直接入出力サーバが集計処理サーバとしての役割を果たし、集計処理を行なう場合もあり得る。
【0055】
本実施例におけるグループ分類手段とは、端末装置6から発行された分類集計処理の指示するグループ分けにしたがって各集計処理サーバ4に分配されたレコードにグループ識別子を割り当て、当該識別子に基づきレコードを分類する方法である。レコードとグループ識別子の対応法については、以下で詳しく述べる。
【0056】
本実施例におけるグループ識別子とは、グループ分類手段において各レコードが分類されるべきグループを指定する識別子である。グループ識別子とは、整数値、文字列などの互いに識別が可能な離散値である。複数のカラムの値に基づいてグループ分類を行なう多次元分類集計処理の場合は、それぞれのグループ化カラムに対応するグループ識別子を組み合わせることによって最終的なグループ識別子を生成する。たとえば、カラム{Ai}をもつレコードをグループ化カラム{Gi}(⊆{Ai})に関してグループ化する場合、それぞれのグループ化カラムGiに関してグループ識別子対応関数giを適用し、その結果得られるグループ識別子の組<g1(G1),..,gn(Gn)>を当該レコードのグループ識別子として用いる。
【0057】
本実施例では、グループ化カラムとグループ識別子の間の対応付けにユーザ定義のグループ化関数を利用することができる。
【0058】
グループ分類手段においては、グループ化カラムの値に応じて適当なグループ識別子を対応させ、各レコードをいずれかのグループに対応させる。グループ識別子の値の決定法としては、以下の3方式のうち適切なものを選択することができる。
【0059】
第一の方法は、グループ化に使用されるカラム(グループ化カラム)の値をそのまま利用する方法、第二の方法は、グループ化カラム値に対して組み込み関数を適用した値を利用する方法、第三の方法は、グループ化カラム値に対してユーザ定義のグループ化関数を適用した値を利用する方法である。
【0060】
ユーザ定義のグループ化関数は、互いに識別可能な離散的な値を出力する必要がある。ユーザ定義のグループ関数を利用することにより、グループ化カラム値の定義域をいくつかの区間に区切り、それぞれの区間毎にグループ化を行なうことが可能となる。例えば、年齢をグループ化カラム値として用い、年代別にレコードをグループ化して、年代別の収入の平均値などを求める処理に有用である。また、区間が限定されない離散的な値の分布を持つグループカラム値に対して、その取りうる値が既知であればユーザ定義のグループ化関数を適用することにより、グループ識別子の分布を区間の限定された連続な分布に変換し、集計結果格納方式としてアクセス効率の良い配列方式を利用することができる。例えば、商品名をグループ化カラム値として用いる場合、出現する商品名が既知であればそれぞれの商品名に番号を対応させ、集計結果格納方式としてハッシュの代わりに対応する番号の最大値分の配列で代用することができる。
【0061】
本実施例では、グループ化カラム値の分布に関してその範囲や種類があらかじめわかっている場合に、各グループ化カラム値ごとにグループ識別子の分布に関する指定(グループ化指定)を行なうことができる。指定の方法としては、以下の3種類がある。第一の方法はグループ識別子範囲指定、第二の方法はグループ識別子上限指定、第三の方法はグループ識別子種別上限指定である。
【0062】
グループ識別子範囲指定では、グループ分類に用いるグループ識別子の取りうる値の上限値と下限値の指定が可能である。グループ識別子に順序を定義できる場合に利用可能である。
【0063】
範囲外のグループ化カラム値を持つレコードがあった場合には、それぞれ下限値以下、上限値以上であることを示す特別なグループ識別子を用意し、例外値に関する集計処理を別に行なう。このことにより、集計結果格納方式において当該グループ化カラムに関して集計結果で必要になる領域の上限値を見積もり、当該グループ化カラムに関しては集計結果の格納位置決定法に配列方式を選択して効率的な格納位置決定を行なうことができる。
【0064】
グループ識別子上限指定とは、グループ分類に用いるグループ識別子が整数であった場合に、グループ識別子範囲指定において下限を0で固定し、上限を指定可能とする。このことにより簡便なグループ識別子範囲指定を行なうことができる。
【0065】
グループ識別子種別上限指定では、グループ分類に用いるグループ識別子の取りうる値の種類の上限値を指定する。このことにより、当該グループ化カラムに関して集計結果で必要になる領域の上限値を見積もることができる。
【0066】
本実施例における集計処理手段とは、与えられたレコードの集合から一つずつレコードを取り出しながら統計量を逐次的に計算する方法である。具体的な集計処理としては合計値、平均値などがある。レコードの情報以外にも集計済みのレコード数などの補助情報を用いて集計を進めていくこともある。
【0067】
本実施例における集計結果格納方式とは、グループ集計結果の格納方式を決定するための方法である。本実施例では、それぞれのグループ化カラム値ごとに配列方式、ハッシュ方式、ハッシュ・配列併用方式の3方式の何れかを後述の集計結果格納方式選択手段を用いて使い分ける。
【0068】
図11に配列方式の集計結果格納形式を示す。集計結果が主記憶上の予約領域に収まることが保証される場合は本方式を利用する。本格納形式は、集計結果を要素とする一つの配列120から成る。
【0069】
配列方式では、グループ識別子を配列の添え字として利用し、集計結果を配列の要素として格納する。配列の格納領域は主記憶上に確保される。この方式は格納場所の決定に比較操作を必要としないので、集計結果を高速に格納することができる。また、グループ化カラムの値が上限、下限の範囲を逸脱する場合は、それぞれの上限以上、下限以下のグループ識別子に対応するグループを設け、別個集計する。
【0070】
図12にハッシュ方式の集計結果格納形式を示す。集計結果が主記憶上の予約領域に収まらない可能性がある場合、本方式を利用する。本格納形式は、一つのハッシュテーブル130、複数のハッシュリスト131、複数のハッシュエントリ132、一つの集計結果格納領域133から成る。本方式において、ハッシュテーブル130はハッシュリスト131へのポインタを保持する。ハッシュリスト131はハッシュエントリ132のリストである。ハッシュエントリ132は、集計結果を格納するレコードへポインタおよび同じハッシュ値を持つ別のハッシュエントリへのポインタを保持する。集計結果格納領域133は主記憶上の予約領域から確保されるが、予約領域が足りなくなった場合には、後述する方法により対処する。
【0071】
ハッシュ方式では、グループ識別子をハッシュ関数に適用し、ハッシュテーブルから適切なハッシュリストの選択し、ハッシュエントリから目的の格納場所を決定する。この方式は、格納場所の決定に際してハッシュリストをたどる必要があるが、必要な分の格納領域だけを消費するので主記憶の格納効率は良い。
【0072】
図13にハッシュ・配列併用方式の集計結果格納方式を示す。多次元分類集計処理において、それぞれのグループ化カラムごとに配列方式とハッシュ方式の格納方式を使い分ける場合、本方式を利用する。以下では、レコードの多次元グループ化に用いるグループ識別子{gi}を、後述の集計結果格納形式選択方式に基づいて、ハッシュ方式のキーとなるハッシュグループ識別子{hi}(⊆{gi})と、配列方式の添え字となる配列グループ識別子{ci}(⊆{gi})に排他的({hi}∩{ci}={gi},{hi}∩{ci}=空集合)に分割する。
【0073】
本格納形式は、一つのハッシュテーブル140、複数のハッシュリスト141、複数のハッシュエントリ142から成る。本方式において、ハッシュテーブル140はハッシュリスト141へのポインタから成る。ハッシュリスト141はハッシュエントリ142のリストである。ハッシュエントリ142は、同じハッシュ値を持つ別のハッシュエントリへのポインタ、格納されている集計結果に対応するハッシュグループ識別子、同じハッシュグループ識別子を持つ集計結果を格納する配列から成る。
【0074】
ハッシュ・配列併用方式では、まずハッシュグループ識別子を用いて、ハッシュエントリから集計結果が格納されるべき配列を見つける。もし目的とする配列がハッシュエントリに登録されていなかった場合は、新たに配列を主記憶上の予約領域上に確保し、ハッシュエントリに追加する。予約領域上に配列を確保できなくなった場合の対処法は後述する。目的の配列を決定した後、ついで配列グループ識別子を用いて配列方式の格納場所決定法に準じて最終的に集計結果を格納すべき場所を特定する。この方式では、それぞれのグループ化識別子のグループ化に応じて、配列方式を利用するかハッシュ方式を利用するかを使い分けることにより、格納場所の決定が高速で、かつ格納効率の良い格納を可能とする。
【0075】
以下では、本実施例において中間集計結果が主記憶上の予約領域に収まらなくなった場合の対処方法について述べる。集計処理サーバ4において集計結果が主記憶上の予約領域に収まりきれなくなるのは、集計結果格納方式としてハッシュ方式あるいはハッシュ・配列併用方式を利用していて、ハッシュエントリに予約領域以上の配列格納領域を追加しようとした場合である。以下では、集計結果が主記憶上の予約領域に収まらなくなった時点で、集計処理サーバ上に蓄積されている集計途中の集計結果を部分集計結果と呼ぶ。
【0076】
図14および図16に本実施例における中間集計結果が主記憶上の予約領域に収まらなくなった場合の処理方法及びフローチャートを示す。
【0077】
本実施例では、集計処理サーバ4において集計結果が主記憶上の予約領域に収まらなくなった場合(170)、部分集計結果を集計処理サーバの主記憶上でソートしたのち(171)補助二次記憶装置17に待避する(150、172)。部分集計結果を待避した後は、主記憶上の集計結果格納領域は再利用することが可能となる。
【0078】
集計処理サーバ4は、すべてのレコードの集計が終わった時点で(173)、補助二次記憶装置17内に待避された複数の部分集計結果の間でNウェイマージ処理を行ない(151、174)、処理結果を問い合わせ処理サーバ5に転送する。この方式では、補助二次記憶装置に対するランダムI/Oが発生しないので、効率の良い集計結果の作成が可能になっている。
【0079】
また、集計結果が主記憶上の予約領域に収まらなくなった場合、主記憶上の部分集計結果を全て補助二次記憶17に待避するのではなく、LRU(Least Recently Used)方式に基づき、最も最近に参照された部分集計結果の一部を主記憶上に留め、残りの部分集計結果を補助二次記憶に待避し、全てのレコードの集計が終わった時点で、主記憶上の部分集計結果と助二次記憶装置17内に待避された複数の部分集計結果との間でNウェイマージ処理を行い、集計結果を作成することも可能である。この方式では、主記憶上で集計されるレコードの割合を高め、集計処理を効率的に行なうことができる。
【0080】
さらにまた、集計結果が主記憶上の予約領域に収まらなくなった場合、主記憶上の部分集計結果を補助二次記憶17に待避するのではなく、主記憶上で集計することのできなかったレコードを補助二次記憶装置に待避し、全てのレコードの集計が終わった時点で、主記憶上の部分集計結果と補助二次記憶装置17内に待避されたレコードとの間でNウェイマージ処理を行い、集計結果を作成することも可能である。この方式では、主記憶上で集計することのできなかったレコード数が少ない場合に、集計処理を効率的に行なうことができる。
【0081】
加えて、先述の方式において、集計処理中に集計対象レコードの内、実際に主記憶上で集計されたレコードの比率を監視しておき、この比率が一定の値を下回った時には、主記憶上の部分集計結果を全て補助二次記憶装置に待避し、全てのレコードの集計が終わった時点で、主記憶上の部分集計結果と補助二次記憶装置17内に待避された複数の部分集計結果と補助二次記憶装置17内に待避されたレコードとの間でNウェイマージ処理を行い、集計結果を作成することも可能である。この方式では、集計対象のレコードの分布に偏りがある場合に、集計処理を効率的に行なうことができる。
【0082】
本実施例では、各グループ識別子ごとのグループ化指定に基づいて集計結果格納領域の格納方式を選択する。以下では、格納方式の選択方法について述べる。
【0083】
多次元分類集計処理に利用されるすべてのグループ識別子に対して“グループ識別子範囲指定(グループ識別子上限指定を含む)”が指定されている場合は、それぞれの指定から集計格納領域の大きさの上限値を算出し、各集計処理サーバの主記憶上の予約領域に収まるかどうかを判断する。収まる場合は、集計格納領域を主記憶上に配列の形で確保する。収まらない場合は、一部または全部の識別子に関してハッシュ方式に切り替えた後、残りの識別子には配列方式を採用する。
【0084】
多次元分類集計処理に利用されるすべてのグループ識別子に対して“グループ識別子範囲指定(グループ識別子上限指定を含む)あるいはグループ識別子種別上限指定”が指定されている場合は、それぞれの指定からグループ識別子の種類の上限値を見積もり、集計格納領域のサイズの上限値を算出し、各集計処理サーバの主記憶上の予約領域に収まるかを判断する。収まる場合は、あらかじめ必要とされる領域を主記憶上に確保しておき、必要な領域はここから取得する。収まらない場合は、「グループ識別子種別上限指定」がされた識別子に関してはハッシュ方式に切り替えた後、残りの識別子に関しては配列方式とし、配列方式部分について集計格納領域を主記憶上に確保する。
【0085】
上記以外の場合は、すべてのグループ識別子に対してハッシュ方式を選択する。
【0086】
以上のように、グループ分類手段においてグループ化指定で指定されたそれぞれのグループ化識別子の特性に応じて、集計結果格納方式を使い分けることにより、格納場所の決定が高速で、かつ格納効率の良い格納方式の実現が可能になる。
【0087】
本実施例における統合処理手段とは、集計処理サーバ4から転送されたきた複数の中間集計結果を統合して、問い合わせ処理サーバ5にて最終集計結果を作成する方法である。本実施例の場合、各集計処理サーバ上の中間集計結果は互いに独立なグループに関する集計結果を保持しているので、それぞれの中間集計結果の間で再計算を行なう必要はなく、単にそれぞれの中間集計結果同士をつなぎあわせれば、最終集計結果を得ることができる。
【0088】
本実施例の特徴は以下のとおりである。
【0089】
本実施例では、分類集計処理においてレコードの値によって一意に集計結果格納領域の位置を決定することのできる集計結果格納領域決定手段を用いることで、分類処理と集計処理とをレコード単位で並行実行することを可能とし、
集計処理結果が主記憶上の予約領域に収まらない場合に、部分集計結果を主記憶上でソートした後、補助二次記憶装置に待避し、最後にNウェイマージにより統合することで補助二次記憶処理装置に対するランダムI/Oの発行を抑え、
グループ化識別子ごとにグループ化識別子の値の範囲あるいは種別の上限値に関する情報を指定することにより、格納場所の決定が高速で、かつ格納効率の良い格納方式の実現を可能とする。
【0090】
以下では、データベースに対する問い合わせ言語としてSQLを念頭に置き、本実施例におけるグループ化指定の一例を示す。
【0091】
まずグループ識別子範囲指定、グループ識別子上限指定、グループ識別子種別上限指定の構文をそれぞれBNF記法にしたがって示す。
【0092】
<グループ識別子範囲指定> ::= RANGE <列名> [下限値,..,上限値] [{,<列名> [下限値,..,上限値]} ...];
<グループ識別子上限指定> ::= MAX<列名> 上限値 [{,<列名> 上限値} ...];
<グループ識別子種別上限指定> ::= GROUP MAX <列名> 上限値 [{,<列名> 上限値} ...];
ただし上記の指定法は一つの実現例である。グループ化指定の指定のタイミングとしてはテーブルの形式定義時、問い合わせ発行時、あるいはコメントの形の指定も有り得る。
【0093】
以下にSQL文を通じたグループ分類手段の指定の一例を前出の例を用いて示す。
【0094】
CREATE TABLE 販売実績 (商品コード INT,販売地 STRING(32),販売日 INT,値段 INT);
GROUP MAX 販売実績.商品コード 1000, 販売実績.販売地 100;
RANGE 販売実績.販売日 [1,..,31];
SELECT 商品コード,販売地,販売日,SUM(値段) FROM 販売実績 GROUP BY 商品コード,販売地,販売日;
上記1つ目のSQL文は、商品コード,販売地,販売日,値段をカラムに持つ販売実績の表を定義している。2つ目のSQL文は、商品コード、販売地の種別の上限値としてそれぞれ1000、100を指定している。3つ目のSQL文は販売日の値の範囲が1以上31以下であることを指示している。4つ目のSQL文は、集計処理要求文であり、販売実績のテーブルの中のレコードを商品コード,販売地,販売日の値によってグループ化し、それぞれのグループごとに値段の合計を求めることを指示している。
【0095】
上記4つ目のSELECT文においては、商品コード、販売地に関してはハッシュ方式、販売日に関しては配列形式が選択される。グループごとの集計結果のレコードのサイズを44バイトとして、集計結果格納領域としておよそ44バイト×1000×100×33=145.2Mbが必要とされる。もしこれだけの領域が主記憶上に確保可能な場合は、検索処理実行前に必要な領域が主記憶上に確保され、動的なメモリ割り当ての発生しない効率的な集計処理を行なうことができる。また最初に必要な大きさの領域を確保することができなかった場合は、配列領域として44×33=1452バイト単位の領域が主記憶から必要に応じて動的に割り当てられる。割り当てが不可能になった場合は、前述の方法に基づき部分集計結果が二次記憶装置に待避されることになる。
【0096】
図18に本実施例における分類集計処理の例を示す。本例では2つの入出力サーバ、2つの集計処理サーバ、1つの問い合わせ処理サーバを使って、前述の分類集計処理を本実施例に基づいて実行した場合を示す。まずそれぞれ2つの入出力サーバに分割格納されているレコードのうち(190)商品コードがHT44966であるレコードは集計処理サーバ1へ、商品コードがPC15550であるレコードは集計処理サーバ2へ分配される(191)。次いでそれぞれの集計処理サーバにおいて、販売地と販売日に関してグループ化が行なわれ、それぞれのグループごとに集計処理が行なわれる(192)。それぞれの集計処理サーバは分配されたレコードに関して集計処理を終えた時点で、中間集計結果を問い合わせ処理サーバに転送する(193)。問い合わせ処理サーバは転送された中間集計結果を結合して最終集計結果を作成する(194)。
【0097】
ただし上記実施例において、それぞれのサーバは、物理的に同じ計算機上で動作しても、あるいはまたネットワークで接続された別々の計算機上で動作してもよい。
【0098】
また上記実記例の入出力サーバの分類手段において、グループ化識別子の値に応じて分類先を決定するのではなく、分配レコード数が各集計サーバごとに均等になるような分配を行い負荷分散を図り、問い合わせ処理ノードでもう一度中間集計結果の分類集計処理を行なうことで全体の分類集計処理を完成させてもよい。
【0099】
さらに上記実施例においては、集計処理サーバをネットワークを介して2段以上接続し、大規模な数のレコードに関しては分類集計処理を階層的に行なってもよい。
【0100】
(実施例2)
図20に、本発明における並列データベース処理システムのまた別の実施例の構成を示す。
【0101】
図20において、1はテーブルを部分テーブル7単位で分割格納する二次記憶装置、18は二次記憶装置から部分テーブル7を読み出し、部分集計処理の作成を行なう入出力・集計サーバ、19は部分集計結果の間でもう一度分類集計処理を行い、中間集計結果の作成を行なう中間集計サーバ、5は各中間集計サーバの集計結果を統合し、最終的な集計結果を作成する問い合わせ処理サーバ、3はそれぞれのノードの間でレコードや集計結果を交換するためのネットワーク、6はデータベースに対して分類集計処理要求を発行し、また集計結果を問い合わせ処理サーバから取り出すための端末装置である。ネットワーク3としては、LAN、WAN、専用ハードウェア装置等、任意のプロセッサ間結合ネットワークを利用することができる。
【0102】
以下では、実施例2における入出力・集計サーバ18および中間集計サーバ19の構成及び動作について説明する。実施例2の以下で説明されない他の部分は、実施例1と同じである。
【0103】
入出力・集計サーバ18は、二次記憶装置1から読み出したレコードを一時的に格納するデータバッファ8、データバッファから取り出されたレコードの集計処理を行なうための集計処理手段12、集計結果を格納する部分集計結果格納領域25、集計結果レコードの分配先を決定するレコード分配手段9、および複数の送信バッファ10を保持する。データバッファ8、集計結果格納領域13、送信バッファ10は入出力・集計サーバ18が備える主記憶上に確保される。入出力・集計サーバ18は、二次記憶装置1の保持する部分テーブル7をブロック単位でデータバッファ8に転送する。ついで入出力・集計サーバ18は、データバッファ8からレコードを順次取り出し、集計処理手段12を用いて部分集計結果格納領域25上に集計結果を作成する。集計結果格納領域上の集計結果は、集計結果格納領域の容量に達し次第、レコード分配手段9を用いて分配先の中間集計サーバ19を決定し、送信バッファ10を経由して部分集計結果として中間集計サーバ19に転送される。
【0104】
中間集計サーバ19は、複数の受信バッファ11および入出力・集計サーバから転送された部分集計結果の集計途中結果を待避するための補助二次記憶装置17、部分集計結果の間の分類集計処理の作業領域を提供する集計結果格納領域13を保持する。入出力・集計サーバ18から転送された部分集計結果は、中間集計サーバ19においてもう一度分類集計処理が行なわれる。集計処理の途中で集計結果が集計結果格納領域13に収まらなくなった場合は、集計途中の集計結果を補助二次記憶装置に待避する。すべての部分集計結果を入出力・集計サーバ18から受信した後、中間集計サーバ19は、補助二次記憶装置17に待避された部分集計結果の間でNウェイマージ処理を行なう。マージ結果は中間集計結果として、問い合わせ処理サーバ5に対して転送される。
【0105】
図21は本実施例おける分類集計処理全体の処理フローの様子を示す。まずはじめに端末装置6は集計処理実行要求を問い合わせ処理サーバ5に対して転送し(2600)、問い合わせ処理サーバからの応答を待つ。一方集計処理実行要求を受け付けた問い合わせ処理サーバ5は、要求された集計処理を行うための実行計画を作成し(2601)、当該計画に従って入出力・集計サーバ18や中間集計処理サーバ19上の集計処理プログラムの起動を行なう(2602)。
【0106】
問い合わせ処理サーバ5は、受信バッファ14、最終集計結果格納領域16などの初期化を行なった後(2603)、中間集計サーバ19からの応答を待つ。問い合わせ処理サーバ5により集計処理プログラムを起動された入出力・集計サーバ18や中間集計サーバ19は、問い合わせ処理サーバ5からの指示に従って、データバッファ8、送信バッファ10、受信バッファ11、集計結果格納領域13、部分集計結果格納領域25などの初期化を行う(2604、2605)。
【0107】
入出力・集計サーバ18は、領域初期化を行なった後、二次記憶装置1からデータバッファ8に読み込んだレコードごとに集計処理手段12に基づいて集計処理を行なう(2606)。入出力・集計サーバ18は、集計結果が部分集計結果格納領域25の容量に達し次第、 部分集計結果の転送先の中間集計サーバをレコードごとに分配処理手段9に基づいて決定し、送信バッファ10を通じてレコードページの転送を行なう(2623)。入出力・集計サーバ18は、すべてのレコードページを分配し終えた時点で終了通知を各集計処理サーバに対して送信し(2607)、終了する(2608)。
【0108】
一方入出力・集計サーバ18からレコードページを分配された中間集計サーバ19では、レコードページを受信し次第、転送された部分集計結果の分類集計処理を行なう。集計結果が格納領域に収まらなくなった場合は、集計途中の集計結果をグループ化識別子の値に関してソートした後、補助二次記憶装置に待避する。(2609)。各中間集計サーバでは、すべての入出力・集計サーバからの終了通知を受信した時点で(2610)、補助二次記憶装置17に待避された部分集計結果があれば(2611)、それらの間でマージソート処理を行なう(2612)。
【0109】
以上のような手順で作成された中間集計結果は、各中間集計サーバから問い合わせ処理サーバに対してブロック単位で転送される(2613)。すべての中間集計結果を転送し終えた時点で、中間集計サーバは問い合わせ処理サーバに対して終了通知を送信し(2614)、終了する(2615)。中間集計結果を受け取った問い合わせ処理サーバ5では、中間集計結果を順次、最終集計結果格納領域15に格納し、端末装置6から要求にしたがって、最終集計結果を端末装置6に対して転送する(2616)。問い合わせ処理サーバはすべての集計処理サーバからの終了通知を受け取った時点で(2617)、端末装置に対して終了通知を送信し(2618)、終了する(2619)。端末装置6は、必要に応じて問い合わせ処理サーバ5に対して最終集計結果を要求し、最終集計結果を受信する(2620)。端末装置6は、問い合わせ処理サーバ5からの終了通知を受信して(2621)集計処理の終了を確認した時点で自身の処理を終了する(2622)。
【0110】
本実施例は、部分集計結果の統合処理を複数の中間集計サーバで分担して独立に行なうので、集計結果のグループ数が多い場合に効率の良い処理を行なうことができる。
【0111】
以下では、入出力・集計サーバおよび中間集計サーバのフローチャートを更に詳しく説明する。
【0112】
図22は入出力・集計サーバにおける分類集計処理のフローチャートを示す。入出力・集計サーバ18は、問い合わせ処理サーバ5からの指示にしたがって、まずデータバッファ8、部分集計結果格納領域25、送信バッファ10の初期化を行なう(2700)。次に二次記憶装置1に格納されているレコードをブロック単位でデータバッファ8に転送する(2701)。次いで入出力・集計サーバは、データバッファ8からレコードを順次取り出し(2702)、レコードの分類されるべきグループ識別子を決定する(2703)。入出力・集計サーバは、レコードの値を参照して集計処理を行い(2704)、グループ識別子に基づいて集計結果格納領域上の集計結果格納領域を決定し、集計結果を書き込む(2705)。このときもし集計結果が集計格納領域に収まらない場合は(2706)、集計途中の部分集計結果の中間集計サーバへの転送処理を行なう(2707)。読み出したすべてのブロック・レコードについて集計処理を終えた時点で(2708、2709)、最後の集計結果の転送を行なった後(2710)、終了通知を中間集計サーバに対して送信し(2711)、終了する(2712)。
【0113】
図23に中間集計サーバにおける分類集計処理のフローチャートを示す。中間集計サーバ19は、問い合わせ処理サーバ5からの指示にしたがって、まず集計結果格納領域13、受信バッファ11の初期化を行う(2800)。中間集計サーバは、入出力・集計サーバから受信バッファ11に転送された(2801)部分集計結果から集計結果を一つずつ取り出し(2803)、対応するグループ化識別子の値に関して分類処理を行う(2804)。
【0114】
次いで分類された集計結果ごとに集計値の再集計処理を行ない(2805)、その結果を集計結果格納領域13に書き込む(2806)。集計結果が集計結果格納領域に収まらない場合は(2807)、途中の集計結果を対応するグループ化識別子の値に関してソートし、補助二次記憶装置に格納する(2808)。各中間集計サーバは、受信した集計結果分だけ集計結果を繰り返す(2809)。中間集計サーバは、すべての入出力・集計サーバから終了通知を受信した時点で(2810)、もし集計結果が補助二次記憶装置に待避されていた場合には(2811)、待避された集計結果の間でマージソート処理を行い、中間集計結果を作成する(2812)。中間集計サーバは中間集計結果は問い合わせ処理サーバに対して転送し(2813)、終了通知を送信した後(2814)、終了する(2815)。
【0115】
以下では、本実施例の入出力・集計サーバ18において集計結果が主記憶上の予約領域に収まらなくなった場合の対処方法について述べる。入出力・集計サーバ18において集計結果が主記憶上の予約領域に収まりきれなくなるのは、集計結果格納方式としてハッシュ方式あるいはハッシュ・配列併用方式を利用していて、ハッシュエントリに予約領域以上の配列格納領域を追加しようとした場合である。以下では、集計結果が主記憶上の予約領域に収まらなくなった時点で、入出力・集計サーバ上に蓄積されている集計途中の集計結果を部分集計結果と呼ぶ。
【0116】
図15および図17に本実施例における中間集計結果が主記憶上の予約領域に収まらなくなった場合の処理方法及びフローチャートを示す。
【0117】
本実施例では、入出力・集計サーバ18において集計結果が主記憶上の予約領域に収まらなくなった場合、部分集計結果に含まれるそれぞれの集計結果を、同じグループに関する集計結果は同じ中間集計サーバ19に転送されるように分類し、転送する(160)。部分集計結果を待避した後は、主記憶上の集計結果格納領域は再利用することが可能となる。中間集計サーバは部分集計結果を主記憶上でソートしたのち補助二次記憶装置17に待避する(161)。中間集計サーバ19は、すべての集計結果が転送された時点で(180)、補助二次記憶装置内に待避された複数の部分集計結果の間でNウェイマージ処理を行ない(162、181)、処理結果を問い合わせ処理サーバ5に転送する。この方式では、補助二次記憶装置に対するランダムI/Oが発生しないので、効率の良い集計結果の作成が可能になっている。
【0118】
ただし本実施例において、入出力・集計サーバにおいて集計結果が主記憶上の予約領域に収まらなくなった場合、実施例1における集計処理サーバの場合と同様に、部分集計結果の一部を補助二次記憶装置に待避する、あふれたレコードだけ補助二次記憶装置に待避する、主記憶上での集計成功率により部分集計結果を補助二次記憶装置に待避する等により、効率的な集計処理を図ることも可能である。
【0119】
図19に本実施例における分類集計処理の例を示す。本例では2つの入出力・出力サーバ、2つの中間集計サーバ、1つの問い合わせ処理サーバを使って、前述の分類集計処理を本実施例に基づいて実行した場合を示す。まずそれぞれ2つの入出力・集計サーバに分割格納されているレコードに関して(200)各入出力・集計サーバにおいて集計処理をした後、商品コードがHT44966であるレコードに関する集計結果は中間集計サーバ1へ、商品コードがPC15550であるレコードに関する集計結果は集計処理サーバ2へ分配される(201)。次いでそれぞれの中間集計サーバにおいて、それぞれの同じグループに関する集計結果ごとに部分集計結果の再分類集計処理が行なわれる(202)。それぞれの中間集計サーバは分配されたすべての部分集計結果に関して分類集計処理を終えた時点で、マージ後の中間集計結果を問い合わせ処理サーバに転送する(203)。問い合わせ処理サーバは転送された中間集計結果を結合して最終集計結果を作成する(204)。
【0120】
ただし上記実施例において、それぞれのサーバは、物理的に同じ計算機上で動作しても、あるいはまたネットワークで接続された別々の計算機上で動作してもよい。
【0121】
また上記実記例の入出力サーバの分類手段において、グループ化識別子の値に応じて分類先を決定するのではなく、分配レコード数が各集計サーバごとに均等になるような分配を行い負荷分散を図り、問い合わせ処理ノードでもう一度中間集計結果の分類集計処理を行なうことで全体の分類集計処理を完成させてもよい。
【0122】
さらに上記実施例においては、集計処理サーバをネットワークを介して2段以上接続し、大規模な数のレコードに関しては分類集計処理を階層的に行なってもよい。
【0123】
本発明では、分類集計処理対象データの特性に応じて上記2つの実施例のうちから最も効率のよい方式を採用することができる。例えば、集計処理サーバ数を十分確保できる場合は実施例1を採用し、二次記憶装置に格納されたレコードをなるべく多くの集計処理サーバに分配することで、短時間で分類集計処理を終えることができる。また、集計結果のデー多量が集計対象レコードのデー多量に対して十分小さくなる場合は実施例2を採用することによって、ネットワーク上のデータ転送量を削減することができる。
【0124】
【発明の効果】
本発明による並列データベース処理システムでは、分類処理と集計処理とをレコード単位で並行実行し、集計結果が主記憶上の予約領域に収まらなかった場合のランダムI/Oの発生を防止することにより効率の良いグループ化集計処理が可能となる。
【図面の簡単な説明】
【図1】本発明による並列データベース処理システムの実施例1のブロック図である。
【図2】データベースの論理構造を示す図である。
【図3】分類集計処理の概略を示す図である。
【図4】マージソート方式のフローチャートを示す図である。
【図5】単純ハッシュ方式のフローチャートを示す図である。
【図6】実施例1における分類集計処理全体の処理フローの概略を示す図である。
【図7】実施例1における入出力サーバの処理のフローチャートを示す図である。
【図8】実施例1における集計処理サーバの処理のフローチャートを示す図である。
【図9】問い合わせ処理サーバの処理のフローチャートを示す図である。
【図10】端末装置の処理のフローチャートを示す図である。
【図11】配列方式に基づく集計結果格納形式を示す図である。
【図12】ハッシュ方式に基づく集計結果格納形式を示す図である。
【図13】ハッシュ・配列併用方式に基づく集計結果格納形式を示す図である。
【図14】実施例1において集計結果が予約領域に収まらなかった場合の対処法を示す図である。
【図15】実施例2において集計結果が予約領域に収まらなかった場合の対処法を示す図である。
【図16】実施例1において集計結果が予約領域に収まらなかった場合の処理のフローチャートを示す図である。
【図17】実施例2において集計結果が予約領域に収まらなかった場合の処理のフローチャートを示す図である。
【図18】実施例1で分類集計処理を行なった場合の実施例を示す図である。
【図19】実施例2で分類集計処理を行なった場合の実施例を示す図である。
【図20】本発明による並列データベース処理システムの実施例2のブロック図である。
【図21】実施例2における分類集計処理全体の処理フローの概略を示す図である。
【図22】実施例2における入出力・集計サーバの処理のフローチャートを示す図である。
【図23】実施例2における中間集計サーバの処理のフローチャートを示す図である。
【符号の説明】
1:二次記憶装置、2:入出力サーバ、3:ネットワーク、4:集計処理サーバ、5:問い合わせ処理サーバ、6:端末装置、7:部分テーブル、8:データバッファ、9:レコード分配手段、10:送信バッファ、11:受信バッファ、12:集計処理手段、13:集計結果格納領域、14:受信バッファ、15:集計結果統合手段、16:最終集計結果格納領域、17:補助二次記憶装置、18:入出力・集計サーバ、19:中間集計ノード。
Claims (6)
- データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しを行なう入出力サーバと、レコードの集計処理を行なう集計処理サーバとを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力サーバは、各レコードのグループ化カラムの値に応じて当該レコードの集計処理を行なう集計処理サーバに転送する手段を有し、
前記集計処理サーバは、集計結果格納領域を集計処理サーバが備える主記憶上に確保する手段と、入出力サーバから受信したレコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納場所に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段とを有し、
前記問い合わせ処理サーバは、前記集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムの分類集計処理方法において、
前記集計処理サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、集計処理サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行なうことを特徴とする分類集計処理方法。 - データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しを行なう入出力サーバと、レコードの集計処理を行なう集計処理サーバとを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力サーバは、各レコードのグループ化カラムの値に応じて当該レコードの集計処理を行なう集計処理サーバに転送する手段を有し、
前記集計処理サーバは、集計結果格納領域を集計処理サーバが備える主記憶上に確保する手段と、入出力サーバから受信したレコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納場所に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段とを有し、
前記問い合わせ処理サーバは、前記集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムの分類集計処理方法において、
前記集計処理サーバは、主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを集計処理サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、集計処理サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの集計処理サーバに分配されたレコードに関する集計処理を行うことを特徴とする分類集計処理方法。 - データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しと集計処理を行なう入出力・集計サーバと、中間集計結果の集計処理を行なう中間集計処理サーバとを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力・集計サーバは、集計結果格納領域を入出力・集計サーバが備える主記憶上に確保する手段と、各レコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納領域に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該部分集計結果に対応するグループ化識別子の値に応じて当該部分集計結果の統合処理を行なう中間集計サーバに転送する手段とを有し、
前記中間集計サーバは、入出力・集計サーバから受信した部分集計結果を統合し、中間結果を生成する手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段を有し、
前記問い合わせ処理サーバは、前記中間集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムにおける分類集計処理方法において、
前記入出力・集計サーバは、主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、入出力・集計サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果の間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことを特徴とする分類集計処理方法。 - データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しと集計処理を行なう入出力・集計サーバと、中間集計結果の集計処理を行なう中間集計処理サーバを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力・集計サーバは、集計結果格納領域を入出力・集計サーバが備える主記憶上に確保する手段と、各レコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納領域に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該部分集計結果に対応するグループ化識別子の値に応じて当該部分集計結果の統合処理を行なう中間集計サーバに転送する手段とを有し、
前記中間集計サーバは、入出力・集計サーバから受信した部分集計結果を統合し、中間結果を生成する手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段を有し、
前記問い合わせ処理サーバは、前記中間集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムにおける分類集計処理方法において、
前記入出力・集計サーバは、主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを入出力・集計サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、入出力・集計サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの入出力・集計サーバに分配されたレコードに関する集計処理を行うことを特徴とする分類集計処理方法。 - データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しと集計処理を行なう入出力・集計サーバと、中間集計結果の集計処理を行なう中間集計処理サーバを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力・集計サーバは、集計結果格納領域を入出力・集計サーバが備える主記憶上に確保する手段と、各レコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納領域に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該部分集計結果に対応するグループ化識別子の値に応じて当該部分集計結果の統合処理を行なう中間集計サーバに転送する手段とを有し、
前記中間集計サーバは、入出力・集計サーバから受信した部分集計結果を統合し、中間結果を生成する手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段を有し、
前記問い合わせ処理サーバは、前記中間集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムにおける分類集計処理方法において、
前記入出力・集計サーバは、主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、主記憶上の集計途中の集計結果を前記入出力・集計サーバの備える対応規則に従って前記中間集計サーバに部分集計結果として転送し、
前記中間集計サーバは、転送された前記部分集計結果の分類集計処理を行なうにあたり、該中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、集計途中の集計結果のうち、最も最近に参照された集計結果の一部を残し、残りの集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、中間集計サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことを特徴とする分類集計処理方法。 - データベースに対する問い合わせ処理要求を処理する問い合わせ処理サーバと、データベースのレコードの読み出しと集計処理を行なう入出力・集計サーバと、中間集計結果の集計処理を行なう中間集計処理サーバを備え、前記レコードの一つ以上のカラムをグループ化カラムとして指定し、当該グループ化カラム値に対してグループ識別子を対応させ、当該グループ識別子の値が同じである複数のレコードを1つのグループに分類し、当該レコードの一つ以上のカラムを集計対象カラムとして指定し、各々のグループに分類されたレコード毎に集計処理を行なうデータベース処理システムであって、
前記入出力・集計サーバは、集計結果格納領域を入出力・集計サーバが備える主記憶上に確保する手段と、各レコードのグループ化カラムの値からグループ識別子を生成する手段と、グループ識別子の値から当該グループ識別子に対応する集計結果の格納場所を一意に決定する分類手段と、当該格納領域に納められている集計結果を当該レコードの集計対象カラムの値に基づき更新する集計手段と、当該部分集計結果に対応するグループ化識別子の値に応じて当該部分集計結果の統合処理を行なう中間集計サーバに転送する手段とを有し、
前記中間集計サーバは、入出力・集計サーバから受信した部分集計結果を統合し、中間結果を生成する手段と、当該中間集計結果を前記問い合わせ処理サーバに転送する手段を有し、
前記問い合わせ処理サーバは、前記中間集計処理サーバから受信した中間集計結果を統合する手段を有するデータベース処理システムにおける分類集計処理方法において、
前記入出力・集計サーバは、主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、主記憶上の集計途中の集計結果を前記入出力・集計サーバの備える対応規則に従って前記中間集計サーバに部分集計結果として転送し、
前記中間集計サーバは、転送された前記部分集計結果の分類集計処理を行なうにあたり、該中間集計サーバの主記憶上に確保された集計結果格納領域に集計結果が収まらなくなった場合に、あふれて集計することのできなかったレコードを中間集計サーバの備える補助二次記憶装置に待避し、かつ、主記憶上で集計することのできたレコードの比率が一定の値を下回った時点で、集計途中の集計結果を当該集計結果に対応するグループ化識別子の値に関して主記憶上でソートした後、中間集計サーバの備える補助二次記憶装置に中間集計結果として待避し、
集計処理を終えた時点で、主記憶上の集計結果と補助二次記憶装置に待避した前記0個以上のレコードの集計結果と補助二次記憶装置に待避した前記0個以上のソート済みの中間集計結果との間でマージ処理を行なうことによって、それぞれの中間集計サーバに分配された部分集計結果に関する集計処理を行うことを特徴とする分類集計処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24958996A JP3584630B2 (ja) | 1996-09-20 | 1996-09-20 | データベース処理システムにおける分類集計処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP24958996A JP3584630B2 (ja) | 1996-09-20 | 1996-09-20 | データベース処理システムにおける分類集計処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1097544A JPH1097544A (ja) | 1998-04-14 |
JP3584630B2 true JP3584630B2 (ja) | 2004-11-04 |
Family
ID=17195271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP24958996A Expired - Fee Related JP3584630B2 (ja) | 1996-09-20 | 1996-09-20 | データベース処理システムにおける分類集計処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3584630B2 (ja) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3687768B2 (ja) * | 1998-04-16 | 2005-08-24 | 株式会社日立製作所 | 組合せ分析情報作成装置及び組合せ分析情報作成プログラムを記録した記録媒体 |
JP3469460B2 (ja) * | 1998-04-27 | 2003-11-25 | 富士通株式会社 | グループバイ処理装置および方法 |
JP2001155028A (ja) * | 1999-11-29 | 2001-06-08 | Hitachi Ltd | リレーショナルデータベースにおける集約演算処理方法、その装置及び集約演算処理プログラムを記録したコンピュータ読み取り可能な記録媒体 |
JP4404212B2 (ja) * | 2005-03-25 | 2010-01-27 | 日本電気株式会社 | 複数系列データ配置方法及び複数系列データ配置装置 |
JP4782490B2 (ja) * | 2005-06-29 | 2011-09-28 | 富士通株式会社 | データ集合分割プログラム、データ集合分割装置、およびデータ集合分割方法 |
CN101192227B (zh) | 2006-11-30 | 2011-05-25 | 阿里巴巴集团控股有限公司 | 一种基于分布式计算网络的日志文件分析方法和*** |
JP4659888B2 (ja) * | 2009-02-13 | 2011-03-30 | 株式会社日立製作所 | データベース処理システム、計算機及びデータベース処理方法 |
JP5474743B2 (ja) * | 2010-11-20 | 2014-04-16 | 株式会社野村総合研究所 | プログラム開発支援システム |
DE112011103497T5 (de) | 2010-11-22 | 2013-08-14 | International Business Machines Corp. | Informationsverarbeitungssystem, Informationsverarbeitungsvorrichtung, Lastausgleichsverfahren, Planungsverfahren für die Datenbankbereitstellung und Programm zum Durchführen der Verbindungsverteilung für den Lastausgleich in einer verteilten Datenbank |
JP5342087B2 (ja) * | 2011-03-30 | 2013-11-13 | 株式会社日立製作所 | 計算機システム及びデータ管理方法 |
JP5888336B2 (ja) * | 2011-10-06 | 2016-03-22 | 富士通株式会社 | データ処理方法、分散処理システムおよびプログラム |
JP5604403B2 (ja) * | 2011-10-26 | 2014-10-08 | 株式会社野村総合研究所 | データ利用システム |
JP5608633B2 (ja) * | 2011-12-21 | 2014-10-15 | 株式会社野村総合研究所 | データ利用システム |
WO2013136442A1 (ja) * | 2012-03-13 | 2013-09-19 | 株式会社野村総合研究所 | データ利用システム、時限データの履歴管理システム及びデータ処理システム |
US9218379B2 (en) * | 2013-03-15 | 2015-12-22 | Informatica Llc | Method, apparatus, and computer-readable medium for efficiently performing operations on distinct data values |
JP6221584B2 (ja) * | 2013-09-30 | 2017-11-01 | 日本電気株式会社 | 処理の並列化装置、処理の並列化方法及びプログラム |
JP6336302B2 (ja) * | 2014-03-11 | 2018-06-06 | 株式会社電通国際情報サービス | 情報処理装置、情報処理方法及びプログラム |
JP2016130929A (ja) * | 2015-01-14 | 2016-07-21 | 日本電気株式会社 | 集約装置、集約システム、集約方法、および、プログラム |
-
1996
- 1996-09-20 JP JP24958996A patent/JP3584630B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH1097544A (ja) | 1998-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3584630B2 (ja) | データベース処理システムにおける分類集計処理方法 | |
JP3952518B2 (ja) | 多次元データ処理方法 | |
JP2000187668A (ja) | グループ化方法と重複排除方法 | |
US8219564B1 (en) | Two-dimensional indexes for quick multiple attribute search in a catalog system | |
US20160350302A1 (en) | Dynamically splitting a range of a node in a distributed hash table | |
US8151078B2 (en) | Method for rearranging a logical volume in a network connected storage system | |
US20070143253A1 (en) | Database system | |
US20100042587A1 (en) | Method for Laying Out Fields in a Database in a Hybrid of Row-Wise and Column-Wise Ordering | |
JP2004070403A (ja) | ファイル格納先ボリューム制御方法 | |
US20090271385A1 (en) | System and method for parallel query evaluation | |
JP3560662B2 (ja) | 並列プロセッサ装置 | |
KR20060048488A (ko) | 질의 강제 인덱싱 | |
JP2008123040A (ja) | リソース割当方法、リソース割当プログラム、および、管理コンピュータ | |
US10810174B2 (en) | Database management system, database server, and database management method | |
US11455323B2 (en) | Data processing method and system | |
JPWO2012137347A1 (ja) | 計算機システム及び並列分散処理方法 | |
JP2009146350A (ja) | サービス管理装置及びデータアクセス制御装置及びデータ検索方法 | |
JP6269140B2 (ja) | アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置 | |
US20090063394A1 (en) | Apparatus and method for streamlining index updates in a shared-nothing architecture | |
US8560560B2 (en) | Device and method for distributed processing | |
CN116982035A (zh) | 分布式数据***中索引质量的测量与改进 | |
JP3598522B2 (ja) | 分散型データベース管理装置 | |
WO2005041067A1 (ja) | 分散メモリ型情報処理システム | |
JP5464017B2 (ja) | 分散メモリデータベースシステム、データベースサーバ、データ処理方法およびそのプログラム | |
JPH06309284A (ja) | 問合せ処理負荷分散方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20040713 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20040726 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20070813 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080813 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080813 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090813 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100813 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100813 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110813 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |