JPH113342A - グループバイ処理方式 - Google Patents

グループバイ処理方式

Info

Publication number
JPH113342A
JPH113342A JP9152171A JP15217197A JPH113342A JP H113342 A JPH113342 A JP H113342A JP 9152171 A JP9152171 A JP 9152171A JP 15217197 A JP15217197 A JP 15217197A JP H113342 A JPH113342 A JP H113342A
Authority
JP
Japan
Prior art keywords
record
group
hash
stored
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.)
Granted
Application number
JP9152171A
Other languages
English (en)
Other versions
JP3466054B2 (ja
Inventor
Naoteru Akaboshi
直輝 赤星
Ririan Harada
リリアン 原田
Riichiro Take
理一郎 武
Kazutaka Ogiwara
一隆 荻原
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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP15217197A priority Critical patent/JP3466054B2/ja
Priority to EP98302400A priority patent/EP0877324A3/en
Priority to US09/049,091 priority patent/US6226634B1/en
Publication of JPH113342A publication Critical patent/JPH113342A/ja
Application granted granted Critical
Publication of JP3466054B2 publication Critical patent/JP3466054B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99934Query formulation, input preparation, or translation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • Y10S707/99936Pattern matching access
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】 【課題】 等しいキーの値を持つレコード群に対して指
定された演算(平均値計算等)を行うグループバイ処理
に関し、二次記憶装置へのアクセスを効率化し、処理を
高速にする。 【解決手段】 レコードを一時的に格納する手段106
と、手段106に格納されたレコードの格納位置を示す
ポインタを、キー値から計算されたハッシュ関数値に対
応する位置に格納する手段107と、手段107内のポ
インタにより指されるレコードをハッシュ関数値に対応
させて二次記憶装置に出力する手段108と、出力され
たハッシュ済みレコードのリストを読み込み、キー値に
従ってソートし、グループバイ処理を実行する手段10
9とを備える。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般的にはデータベ
ースなどに記録された大量のデータのデータ処理に係
り、まず第一にグループバイ処理に関し、第二にデータ
ベースマイニングに関する。
【0002】本発明は、第一に、各レコードが持つキー
の値に応じて大量のレコードを分類し、等しいキーの値
を持つレコード群に対して、例えば平均値を求めるな
ど、指定された演算を行う処理、すなわちグループバイ
処理に関し、更に詳しくはハッシュ処理に基づくグルー
プバイ処理、すなわちキーの値に対して適切なハッシュ
関数を適用して得られるハッシュ値に従って大量のレコ
ードをハッシュしてハッシュ済みのレコードリストを作
成し、そのハッシュ済みレコードリストをキーの値に従
ってソートして、その結果でき上るソート済みレコード
リストに対してグループバイ処理を行う、ハッシュ処理
に基づくグループバイ処理方式に関する。
【0003】本発明は、第二に、データベースに記録さ
れたデータの間の関連規則を発見するデータベースマイ
ニングに関する。更に詳しくは、本発明はデータベース
の中の膨大なデータのうちで相関のあるデータの組み合
わせの出現回数を数え上げる方式に関し、この方式を用
いて数え上げられた結果から、与えられた条件に適合す
る組み合わせとその出現回数を用いて、データマイニン
グ手法の中の1つである相関ルールの生成処理が行われ
る。相関ルールを用いた相関分析は、近年米国を中心と
して広く注目されている。
【0004】
【従来の技術】一般にグループバイ処理における演算、
すなわち等しいキーの値、例えばアイテム番号を持つレ
コード群に対する演算としては、アイテムセットのよう
なレコードの数を数えるカウント処理や、それらのレコ
ード群の特定のフィールドの値の合計や平均を計算する
演算などがある。このようなグループバイ処理は、関係
データベースの処理や、統計処理などにおいて頻繁に行
われるものである。
【0005】グループバイ処理方式としては、ソート処
理に基づくものと、ハッシュ処理に基づくものとが知ら
れている。ソート処理に基づく方式は、レコード群をキ
ーの値に従ってソートすることによって、同一のキーの
値を持つレコードが連続してアクセス可能となることを
利用するものである。すなわち、まずレコード群をキー
の値に従ってソートし、その結果できあがるソート済の
レコードリストを頭からたどって、同一のキー値が続く
限り指定された演算の実行を繰り返し、キーの値が変化
した時点で演算の初期化を行う。
【0006】ハッシュ処理に基づく方式は、レコード群
をキーの値に従ってハッシュすることによって、同一の
キーの値を持つレコードが1つのハッシュバケットに集
まることを利用するものである。すなわち、まずキーの
値に対して適切なハッシュ関数を適用することによって
得られるハッシュ値に従ってレコード群をハッシュし、
その結果できあがるハッシュバケット毎に含まれている
レコードをキーの値に従ってソートし、ソート済のレコ
ードリストを作成して、そのソート済レコードリストに
おいて同一のキー値が続く限り、指定された演算の実行
を繰り返し、キーの値が変化した時点で演算の初期化を
行う。
【0007】図164はソート処理に基づくグループバ
イ処理方式の従来例のフローチャートである。同図にお
いて処理が開始されると、まずステップS201でグル
ープバイ対象レコード群がキー値によってソートされ、
ステップS202でソートされたレコード群の先頭のレ
コードが読み出され、ステップS203で関数の初期化
が行われ、ステップS204で読み出されたレコードに
関して関数の演算が実行され、ステップS205でソー
トされたレコード群の中にまだレコードが存在するか否
かが判定される。
【0008】まだレコードが存在する場合には、ステッ
プS206でソートされたレコード群の先頭が読み出さ
れ、ステップS207でそのレコードのキーの値が先立
つレコード、すなわちその前に読み出されたレコードの
キーの値と等しいか否かが判定され、等しい場合にはス
テップS204以降の処理が繰り返される。
【0009】先立つレコードのキーの値と等しくない時
にはステップS208で関数の終了処理が行われ、ステ
ップS209で先立つレコードと関数の処理結果を合わ
せたものが結果レコードとして出力された後に、ステッ
プS203以降の処理が繰り返される。
【0010】ステップS205でソートされたレコード
群のレコードが全てすでに読み出されていると判定され
ると、ステップS210で関数の終了処理が行われ、ス
テップS211で先立つレコードと関数の処理結果とを
合わせたものが結果レコードとして出力されて、処理を
終了する。
【0011】図165は、図164のフローチャートを
用いて実行されるグループバイ処理の経過を示す具体例
である。同図(1)に示すように、グループバイ対象レ
コード群は10個のレコードからなり、簡単のためにここ
では各レコードはキー値、例えば1つのアイテムの番号
のみからなるものとする。ステップS201の処理が済
むと、図165(2)の状態が実現される。
【0012】ここでは、グループバイ処理の演算として
は同一キー値を持つレコードの数を求めるカウント処理
を行うものとし、ステップS202とS203の処理が
終了すると(3)に示す状態となる。すなわちS203
の関数の初期化では、カウント値が0にリセットされる
ことになる。
【0013】ステップS204ではカウント値が1だけ
インクリメントされ、(4)の状態となる。ステップS
205の判定はここではYESとなり、ステップS20
6で現在のレコード“1”が先立つレコードとされ、新
しいレコード、すなわち“1”が現在のレコードとな
る。そしてステップS207の判定はYESとなり、ス
テップS204でカウント値がインクリメントされて
(5)に示す状態となる。
【0014】ステップS205の判定は再びYESとな
り、ステップS206で新しいレコードが読み込まれ
る。このレコードのキーの値は2であり、先立つレコー
ドのキーの値1とは異なるため、ステップS208で関
数の終了処理が行われる。カウント演算の場合には、終
了処理は単に現在のカウントの値を固定するだけであ
り、ステップS209ではこの固定された値が関数の処
理結果とされ、先立つレコード、ここでは“1”と合わ
されて結果レコードとして出力される。すなわち出力さ
れる結果レコードは“1,2”である。図165(6)
はこの結果を示す。
【0015】同様に処理を実行することによって最終的
には処理結果として次のレコード群が得られる。 1,2 2,2 3,3 4,1 5,2 この結果はグループバイ対象レコード群の中にキーの値
として1を持つものが2個、2を持つものが2個、3を
持つものが3個、4を持つものが1個、5を持つものが
2個あったことを示す。
【0016】図166はハッシュ処理に基づくグループ
バイ処理方式のフローチャートの従来例である。同図を
図164に示したソート処理に基づくフローチャートと
比較すると、まずステップS221でグループバイ対象
レコード群がキー値によりハッシュされ、ステップS2
22で各ハッシュバケット内のレコードがキー値により
ソートされ、全てのソートされたハッシュバケットの内
容が結合され、1つの列が作られた後に、図164のス
テップS202以降の処理と実質的に同一の処理がステ
ップS223〜S232において実行される。
【0017】図167は、図166のフローチャートを
用いて実行される処理の経過の具体例である。グループ
バイ対象レコード群は図165におけると同じである。
ハッシュ処理に基づく場合には、まずグループバイ対象
レコード群が適当なハッシュ関数を用いてハッシュされ
る。ここではハッシュ関数としてmod3を使うことに
する。すなわちキーの値を3で割り、余りの値に応じて
ハッシュバケットに振り分ける処理が行われる。余りが
iであればハッシュバケットiにそのレコードは格納さ
れる。ここでは余りの値としては0,1、および2の3
種類があり、従ってハッシュバケットは3つとなる。
【0018】図166のステップS221の処理が実行
され、ハッシュが終わった状態が図167の(2)であ
る。各ハッシュバケット内のレコード群をキーの値によ
ってソートした結果が(3)、全てのハッシュバケット
の内容を1つの列にまとめた結果が(4)であり、ステ
ップS222までの処理が終了する。以後の処理はソー
ト処理に基づく場合と同じである。最終的に結果レコー
ド群として次のレコードが得られる。
【0019】 3,3 1,2 4,1 2,2 5,2 図165の場合とはレコードの出現順序が異なっている
が、集合全体としてはソート処理に基づく場合と同一の
結果が得られる。
【0020】次に本発明におけるデータ組み合わせの数
え上げ方式に関する従来技術について説明する。このデ
ータ組み合わせの数え上げは前述のデータベースマイニ
ングにおける相関ルール生成処理の一部を成すものであ
るため、まず相関ルールについて説明する。なお後述す
るように本発明におけるデータ組み合わせの数え上げで
は、その処理の一部として本発明のグループバイ処理方
式が用いられる。
【0021】例として小売業においてPOS(Point-Of
-Sales) で収集した 100人の顧客のレシートのうち、20
人の顧客が商品Aを購入し、また、12人の顧客が商品A
と商品Bの両方を購入しているとする。1つの商品をア
イテムと呼び、また、1枚のレシートをトランザクショ
ンと呼ぶ。1つのトランザクションには、通常、複数の
アイテムが含まれる。このとき、以下の定義式 アイテムのサポート=アイテムを含むトランザクション
の数/全トランザクション数 に基づいて商品Aの「サポート」=20%、 商品Aと商
品Bの「サポート」=12%となる。さらに、単純な条件
付き確率計算により、「Aを購入する顧客の60%(12%
/20%)がBも購入する」と結論できる。これを「A→
B 確信度60%、サポート12%」と表わし、相関ルール
と定義する。つまり、相関ルール「A→B」における確
信度は、 「A→B」の確信度=A∧B(AとBの両方購入)のサ
ポート/Aのサポート である。さらに、A→Bといった単純なルールだけでな
く、A∧B→C∧D∧E(「AとBを購入する顧客がC
とDとEを購入する」)の様な複雑なルールも用いられ
る。この場合の確信度は、 「A∧B→C∧D∧E」の確信度=A∧B∧C∧D∧E
のサポート/A∧Bのサポート である。
【0022】相関ルールは、目玉商品がどの商品群の売
り上げに貢献したかの評価、棚割り(どの商品とどの商
品を近くに並べるべきか)の最適化や、クレジットカー
ドのデータからダイレクトメールのヒット率を高めると
いった、様々な局面に有効な情報である。
【0023】相関ルール生成処理は、(1) トランザクシ
ョンの中から、与えられたサポートの条件を満たすアイ
テムの組み合わせの出現回数を数え上げる処理と、(2)
(1)で求められた組み合わせ群とその出現回数を基に、
ルールとそのサポートおよび確信度の計算を行うという
2つの段階からなる処理からなる。本発明は、(1) の数
え上げ処理の効率化を行うものである。
【0024】(1) において、与えられたサポートの条件
を満たすアイテムの組み合わせ群を「ラージアイテムセ
ット」と呼ぶ。サポートの条件としては、最小値(0%
〔=すべての組み合わせを数える〕〜 100%〔=全部の
トランザクションで購入されたアイテムを数える〕)か
ら、最大値(最小値<=最大値<= 100%)の範囲であ
たえる。従来では、多くの場合、最大値を 100%に固定
する手法が用いられている。
【0025】(1) のラージアイテムセットの数え上げ処
理は非常に時間のかかる処理であるため、各種の高速化
手法が提案されている。中でも、SQLに基づくSET
Mアルゴリズムと、IBMが提案するいくつかのアルゴ
リズム中のApriori が代表的なものとして知られてい
る。SETMアルゴリズムは次の文献1、Apriori のア
ルゴリズムは次の文献2に述べられている。
【0026】文献1:Maurice Houtsma and Arun Swam
i. Set-Oriented Mining for Association Rules in Re
lational Databases. In Proceedings of the IEEE Dat
a Engineering Conference, pages 25-33, 1995. 文献2:Rakesh Agrawal and Ramakrishnan Srikant. F
ast Algorithms for Mining Association Rules. In Pr
oceedings of the 20th VLDB Conference, pages 487-4
99, Santiago, Chile, 1994. SETMに基づく相関ルール生成処理は、関係データベ
ース問い合わせ言語であるSQL言語をベースとしてお
り、実装が容易である特徴を持つ。処理にあたっては、
SQLの結合演算(Join Operation)とグループバイ演
算(GroupBy Operation )を用いる。サポートの最小値
の条件を満たす長さk−1のアイテムの組み合わせを含
むトランザクションのテーブルを用いた自己結合演算を
行い、長さkのアイテムの組み合わせ候補を生成する。
次に、グループバイ演算を用いて、長さkのラージアイ
テムセットを数え上げる。さらに、結合演算を用いてサ
ポートの最小値を満足するトランザクション群を生成
し、次の長さk+1のアイテムの組み合わせ生成に利用
する。
【0027】図168は、SETMにおける具体的な処
理の流れの説明図であり、図169はSETMの処理に
おける各機能ブロックの処理内容を示す図である。これ
らの図を用いて、従来技術としてのSETMの処理につ
いて詳細に説明する。
【0028】図168において、テーブルR1′は各ト
ランザクションt xに含まれるアイテムを示してい
る。例えばトランザクション1にはアイテム1,2、お
よび3が含まれていることが示されている。GB(1)
は1個ずつのアイテムの出現回数のカウント処理(グル
ープバイ処理)を行うものであり、テーブルL1はその
カウント結果を、カウント数が2以上のアイテムに対し
て示したものである。
【0029】テーブルR1は、ジョインの処理(結合処
理)J(1)によって、テーブルR1′に含まれるデー
タのうちでテーブルL1に存在するアイテムだけを抜き
出した結果を示す。
【0030】SJ(1)は、テーブルR1に対するセル
フジョインの処理を示し、その結果テーブルR2′とし
て、各トランザクションに対して2つのアイテムの可能
な組み合わせが生成される。
【0031】グループバイ処理GB(2)によって、2
つのアイテムの組み合わせの出現回数がテーブルR2′
の組み合わせに対してカウントされ、そのカウント結果
のうちでカウント数が2以上のものがテーブルL2とし
て作成される。
【0032】以下同様にして、3つのアイテムの組み合
わせのうちでカウント数が2以上のもののテーブルL3
が作られ、またアイテムが4個の組み合わせのうちでカ
ウント数が2以上のものがテーブルL4として作られる
が、テーブルL4の内容は空となる。
【0033】Apriori アルゴリズムでは、サポートの最
小値の条件を満たす長さk−1のラージアイテムセット
を用いて長さkのアイテムの組み合わせの候補を生成す
る。その際に、k−1のラージアイテムセットがすべて
メモリにのる場合、長さkのアイテムの組み合わせの中
の、長さk−1のすべての組み合わせがラージアイテム
セットに含まれているかをチェックし、含まれている場
合のみ、長さkのアイテムの組み合わせの候補とみな
す。長さk−1のアイテムの組み合わせをメモリ上のハ
ッシュ表(Hash Table)に登録しておくことにより、不
必要な候補を効率よくプルーニング(Pruning )する。
さらに、候補であるアイテムの組み合わせ群をハッシュ
木(Hash Tree )に保持し、各トランザクション毎にト
ランザクション中に含まれるアイテムの組み合わせがハ
ッシュ木に登録されている場合、そのカウント値を増や
すことにより、長さkのアイテムの組み合わせの候補の
出現回数を数え上げる。ハッシュ木に登録されている組
み合わせのみを対象とすることにより、不必要な組み合
わせの数え上げをしない工夫がなされている。
【0034】図170は、Apriori アルゴリズムによる
処理の具体例、図171はAprioriアルゴリズムの処理
における各機能ブロックの内容の説明図である。これら
の図に基づいて、Apriori アルゴリズムによるラージア
イテムセットの数え上げ処理の具体例について説明す
る。
【0035】図170において、8つのトランザクショ
ンのリストTLの内容は実質的に図168と同じであ
る。まず最初にこれらのトランザクションに含まれるア
イテムが1つずつSubset(1)に入力され、1つ1つの
アイテムの出現回数がC1としてカウントされる。その
カウント結果はFに入力され、出現回数が2回以上のも
のがフィルタリングによって選択され、フィルタリング
結果がL1として作成される。
【0036】L1の中に含まれるアイテムから2個の組
み合わせが選択され、C2としてハッシュ木に登録され
る。そして各トランザクションの中にハッシュ木に登録
された2個のアイテムの組み合わせが含まれている場
合、Subset(2)によってその出現回数をカウントする
ことによって、2個のアイテムの組み合わせの出現回数
が求められ、その結果がFによってフィルタリングされ
ることにより、2個のアイテムの組み合わせのうちで出
現回数が2回以上のものがL2として得られる。
【0037】以下同様の処理を実行することによって、
3個のアイテムの組み合わせのうちで出現回数が2回以
上のものがL3として得られ、また4個の組み合わせの
うちで出現回数が2回以上のものが、図168と同様
に、存在しないことが判明した時点で処理を終了する。
【0038】
【発明が解決しようとする課題】まず最初に、グループ
バイ処理方式に関する従来技術の問題点を説明する。前
述のようにグループバイ処理方式としてはソート処理に
基づくものとハッシュ処理に基づくものとがあるが、ソ
ート処理に基づく場合にはレコード群の全体を一度にソ
ートする必要があり、このソートのために処理時間およ
びコストが大きくなるという問題点があった。
【0039】これに対してハッシュ処理に基づく場合に
は、ソートの処理は各ハッシュバケットに含まれるレコ
ードの集合に対してのみ行われるために、ソート処理に
基づく方式よりもコストは小さくなる。しかしながら、
グループバイ処理対象レコード群全体のサイズが主記憶
の上に乗り切らないほど大きい場合には、ハッシュバケ
ットを二次記憶装置に書き出し、また書き出されたハッ
シュバケットを読み込む必要があり、二次記憶装置に対
するアクセスに大きなコストがかかるという問題点があ
った。
【0040】すなわち従来のハッシュ方式では、例えば
主記憶上にそれぞれのハッシュバケットに1対1に対応
するレコードバッファを設け、ハッシュ対象レコードに
対するハッシュ値に基づいてレコードをそれぞれのレコ
ードバッファに格納し、ある1つのレコードバッファが
一杯になった時点で、二次記憶装置上でそれぞれのレコ
ードバッファに1対1に対応するハッシュバケット格納
領域の1つにそのレコードバッファの内容を出力するよ
うな動作が行われる。それぞれのレコードバッファの大
きさは一般にそれほど大きく取ることはできないため、
各レコードバッファが一杯になるたびに二次記憶装置へ
のレコードの書き出しが行われる。このようにして二次
記憶装置上にハッシュバケットが作られても、各ハッシ
ュバケットの大きさがそれぞれ異なるため、二次記憶装
置上での各ハッシュバケットの格納領域は全体として非
連続の領域となる。一般に二次記憶装置として使われる
ディスク装置では、連続領域に対するアクセスよりも小
さな飛び飛びの領域に対する非連続的なアクセスの方が
時間がかかり、コストが大きくなってしまうという問題
点があった。
【0041】次に、従来の相関ルール生成処理としての
SETMアルゴリズムと、Aprioriアルゴリズムの問題
点について説明する。SETMに基づく相関ルール生成
処理では、最初の結合演算処理において、不必要な組み
合わせをプルーニングする手段がないため、続くグルー
プバイ演算処理が必要以上に重い処理となる問題点があ
った。
【0042】Apriori アルゴリズムでは、SETMアル
ゴリズムに見られる問題点を解消する工夫がなされてい
る。すなわち、サポートの最小値を満たす長さk−1の
ラージアイテムセットから長さkのアイテムの組み合わ
せの候補を生成する際に、長さk−1のラージアイテム
セットをハッシュ表に登録しておき、不必要な候補を生
成しないようにプルーニングを行う。しかし、ハッシュ
表がメモリ上に載らない場合には、プルーニングを行う
ことが出来ないことや、k=2においては長さ1のジョ
インの計算をしなければならず非常に重い処理となると
いう問題点があった。
【0043】さらに、Apriori アルゴリズムではアイテ
ムの組み合わせの数え上げを行う際に、アイテムの組み
合わせ候補をハッシュ木に保持しておいてトランザクシ
ョンをスキャンする。このため、ハッシュ木のすべての
アイテムの組み合わせ候補がメモリに載らない場合に
は、ハッシュ木を実メモリ上に載る大きさ毎に読み込ん
で処理を行うため、そのたびにトランザクションをスキ
ャンし直さなければならず、大きなトランザクションの
際には処理に非常な時間がかかるという問題点があっ
た。
【0044】本発明の第一の課題は、グループバイ処理
において、二次記憶装置に対するアクセスをできるだけ
連続的にするために、例えば比較的大きなブロック単位
でのデータの逐次読み出しと逐次書き込みを行うことに
よって、ハッシュ処理を高速化し、そのハッシュ処理の
結果を用いてグループバイ処理を行うことより、全体と
してグループバイ処理を高速化することである。
【0045】本発明の第二の課題は、従来のApriori ア
ルゴリズムにおけるハッシュ木のようなそのサイズが利
用できるメモリ量を超える可能性があり、しかも、超え
た場合には機能しなくなるプルーニング手段に替えて、
常に利用できるメモリ量にフィットさせることのできる
ビットマップを用いることにより、不必要なアイテムの
組み合わせ候補を効率的にプルーニングし、更にアイテ
ムセットを数え上げるグループバイ処理を従来技術に比
較して高速化することにより、相関のあるデータ組み合
わせの数え上げを効率的に実行することである。
【0046】
【課題を解決するための手段】図1は本発明におけるグ
ループバイ処理方式の原理構成を示すブロック図であ
る。同図はレコード群を、各レコードのキー値に対応す
るハッシュ関数値を用いて参照可能な格納形式に変換す
るためのハッシュ処理の結果に基づいて、該レコード群
に対するグループバイ処理を行うグループバイ処理方式
の原理構成ブロック図である。
【0047】図1においてレコード格納手段106は、
例えばレコードバッファであり、グループバイ処理の対
象となるレコード群を一時的に格納するものである。ま
たハッシュ値対応ポインタ格納手段107は、例えばハ
ッシュ表であり、レコード格納手段106に格納された
レコードの格納位置を示すポインタを、該レコードのキ
ー値から計算されたハッシュ関数値に対応する位置に格
納するものである。
【0048】ハッシュ済レコード出力手段108は、ハ
ッシュ値対応ポインタ格納手段107に格納されている
ポインタによって指示されるレコードを、該ポインタの
格納位置に対応するハッシュ関数値に対応させて、前記
記憶装置に出力するものである。
【0049】グループバイ処理実行手段109は、ハッ
シュ済レコード出力手段108によって前記記憶装置上
に出力されたハッシュ済レコードのリストを読み込み、
該リストのレコードをキー値に従ってソートし、該ソー
ト済のレコードリストに対してグループバイ処理を実行
するものである。
【0050】本発明におけるグループバイ処理方式にお
いては、図1の構成手段に加えて、例えば更に補助情報
リスト格納手段を備えることができる。この補助情報リ
ストは、ハッシュ済レコード出力手段108が、レコー
ド格納手段106からハッシュ関数値に対応して出力さ
れた複数のレコードを1つのブロックとして、前記記憶
装置に出力する場合に、そのブロックのレコードに対す
るハッシュ関数値による検索を可能とするための補助情
報のリストを格納するものである。
【0051】この場合には、グループバイ処理実行手段
109は、ハッシュ処理の結果として得られるハッシュ
関数値に対応したレコード列としてのハッシュ済リス
ト、ハッシュ関数値に対応して出力される複数のレコー
ドからなるブロック内のレコードをハッシュ関数値によ
り検索可能とするための補助情報のリストとを用いて、
グループバイ処理を実行する。
【0052】また本発明におけるグループバイ処理方式
においては、前述の補助情報リスト格納手段の代わり
に、ラン情報格納手段を備えることもできる。このラン
情報格納手段は、レコード出力手段108がレコード格
納手段106から前記ハッシュ関数値に対応して出力さ
れたレコードを記憶装置に出力するにあたって、ハッシ
ュ関数値を最小値から最大値まで連続的に変化させる間
に出力されるランのそれぞれに含まれるレコードの記憶
装置上の格納アドレスを示すラン情報を格納するもので
ある。
【0053】そしてこの場合には、グループバイ処理実
行手段109はハッシュ処理の結果として得られるハッ
シュ関数値に対応したハッシュ済レコード列の内容と、
ラン情報格納手段に格納されているラン情報とを用い
て、グループバイ処理を実行する。
【0054】このような補助情報リスト格納手段やラン
情報格納手段のいずれを用いるとしても、本発明におい
てはハッシュ済レコード出力手段108がハッシュ関数
値を例えばその最小値から最大値まで連続的に変化させ
てレコードを記憶装置の連続領域に逐次的、ブロック的
に出力する動作、すなわちランの出力動作をグループバ
イ処理の対象となるレコード群が無くなるまで繰り返す
ことによりハッシュ済レコードのリストが作成され、そ
のリストに基づいてグループバイ処理が実行されること
になる。
【0055】以上のように本発明におけるグループバイ
処理方式によれば、例えばハッシュ関数値に対応して出
力された複数のレコードを1つのブロックとして、例え
ばディスクなどの二次記憶装置に逐次的に出力すること
により、記憶装置に対するアクセスの処理を高速化する
ことが可能となる。
【0056】図2は本発明における相関のあるデータ組
み合わせの数え上げ方式の原理構成ブロック図である。
同図は、それぞれ1つ以上のアイテムをデータとして含
む多数のトランザクションから、2つ以上のアイテムの
組み合わせまたは1個のアイテムのみのうちで、トラン
ザクションの中での出現回数が与えられた条件に適合す
る2個以上のアイテムの組み合わせ、または1個のアイ
テムのみと、その出現回数とを求めるデータ組み合わせ
の数え上げ方式の原理構成ブロック図である。
【0057】図2において組み合わせ生成手段100
は、1個のアイテムのみを対象とする時は各トランザク
ションに含まれるアイテムを1個ずつ出力し、i個のア
イテムの組み合わせを対象とする時は組み合わせ生成制
約条件に適合する組み合わせのみを生成して、出力する
ものである。この生成制約条件は、i個の組み合わせに
含まれるアイテムの組み合わせ、または1個のアイテム
のうちで、トランザクションの中での出現回数が前述の
与えられた条件に適合するアイテムの組み合わせ、また
は1個のアイテムに含まれるアイテムに対応した条件で
ある。
【0058】出現回数カウント手段101は、組み合わ
せ生成手段100が出力する2個以上のアイテムの組み
合わせ、または1個のアイテムのみの、トランザクショ
ン中での出現回数を、例えばグループバイ処理によって
カウントするものである。
【0059】組み合わせ選択手段102は、出現回数カ
ウント手段101が出力する2個以上のアイテムの組み
合わせ、または1個のアイテムのうちで、出現回数が、
例えば指定された回数以上というような与えられた条件
に適合するものを選択するものである。
【0060】制約条件生成手段103は、組み合わせ選
択手段102の選択結果に対応した、前述の組み合わせ
生成制約条件を組み合わせ生成手段100に与えるもの
であり、この組み合わせ生成制約条件は、例えば選択手
段102の選択結果に出現するアイテムに対応するビッ
ト位置に“1”が立てられたビットマップである。
【0061】本発明の数え上げ方式においては、まず組
み合わせ生成手段100によって各トランザクションの
中からアイテムが1つずつ取り出され、それぞれ1個の
アイテムの出現回数が出現回数カウント手段101によ
ってカウントされる。この時には組み合わせ生成制約条
件は用いられず、トランザクションの中の全てのアイテ
ムが1つずつ組み合わせ生成手段100から出力され、
その出現回数がカウントされる。
【0062】出現回数カウント手段101の出力、すな
わち1つずつのアイテムの多数のトランザクション内部
での出現回数のカウント結果は組み合わせ選択手段10
2に与えられる。組み合わせ選択手段102は、例えば
出現回数がある回数以上であるものを選択し、その選択
結果を1個のみのアイテムの出現回数として出力する。
【0063】その出力結果は制約条件生成手段103に
与えられ、個々のアイテムに例えば1対1に対応するビ
ットマップ上で組み合わせ選択手段102の出力に含ま
れるアイテムに対応するビットに“1”が立てられ、含
まれないビットは“0”のままとされたビットマップが
作成され、組み合わせ生成手段100に組み合わせ生成
制約条件として与えられる。
【0064】次に組み合わせ生成手段100は、各トラ
ンザクションに含まれるアイテムのうちで、組み合わせ
生成制約条件としてのビットマップ上に“1”が立って
いるビットに対応するアイテムの中から2個を選択し、
その2個のアイテムの組み合わせを出現回数カウント手
段101に出力する。出現回数カウント手段101は2
個のアイテムの組み合わせの出現回数をカウントし、そ
の結果を組み合わせ選択手段102に与える。組み合わ
せ選択手段102は、出現回数が与えられた条件に適合
する2個のアイテムの組み合わせを選択して出力する。
【0065】同様の動作を繰り返すことにより、従来技
術の図168や図170で説明したように、例えば3個
のアイテムの組み合わせとしてラージアイテムセットが
生成された段階で実質的な処理が終了する。
【0066】すなわち、図2に示す発明を要約すると、
等しいキーの値を持つレコード群に対して指定された演
算(平均値計算等)を行うグループバイ処理に関し、二
次記憶装置へのアクセスを効率化し、処理を高速にする
ことを目的とし、レコードを一時的に格納する手段10
6と、手段106に格納されたレコードの格納位置を示
すポインタを、キー値から計算されたハッシュ関数値に
対応する位置に格納する手段107と、手段107内の
ポインタにより指されるレコードをハッシュ関数値に対
応させて二次記憶装置に出力する手段108と、出力さ
れたハッシュ済みレコードのリストを読み込み、キー値
に従ってソートし、グループバイ処理を実行する手段1
09とを備えることを特徴とする。
【0067】従来技術で用いられたハッシュ表は、ラー
ジアイテムセット中に存在する個々のアイテム、あるい
は、アイテムの組み合わせの数に比例したメモリ量を必
要とし、そのサイズを大きくして選択性を高めたり、小
さくして選択性を多少低くして、メモリ使用量を少なく
することはできない。このため、従来技術では、処理対
象のデータが大きく、ラージアイテムセットのサイズが
大きくなる場合に、ハッシュ表が利用可能なメモリ量を
超える可能性があり、その時にプルーニングができなく
なるという問題があった。本発明におけるプルーニング
は、個々のアイテム、または、アイテムの組み合わせが
ラージアイテムセット中に存在することを表現する1つ
または複数のビットマップを使って行われる。このビッ
トマップは、複数のアイテム、あるいは、複数のアイテ
ムの組み合わせの存在を単一のビットにより表現できる
ので、そのサイズを大きくして選択性を高めることや、
小さくして選択性を多少低くして、メモリ使用量を少な
くすることが可能である。この方式により、本発明はこ
の問題を解決している。
【0068】
【発明の実施の形態】本発明におけるグループバイ処理
方式においてはハッシュ処理の結果に基づいてグループ
バイ処理が行われる。そこで以下の説明ではハッシュ処
理の方式と、その結果を用いたグループバイ処理の方式
との二段階に分けて、グループバイ処理方式の実施例を
説明する。
【0069】図3は本発明におけるグループバイ処理方
式の第1の実施例におけるハッシュ方式の説明図であ
る。同図は、一般的に二次記憶装置に格納されているハ
ッシュ対象リスト11のレコード群を処理装置12によ
ってハッシュし、その結果をハッシュ済リスト21、お
よび補助情報リスト22として、再び二次記憶装置に出
力するハッシュ方式を示す。
【0070】入力バッファ13はハッシュ対象リスト1
1のレコードが一旦格納されるバッファである。レコー
ドバッファ14は入力バッファ13に格納されているレ
コードを格納するものであり、例えばその容量は4であ
るとする。ハッシュ表15は、入力バッファ13からレ
コードバッファ14に格納されるレコードのレコードバ
ッファ内での格納位置へのポインタを、そのレコードの
キーの値から計算されるハッシュ関数値に対応して格納
するものである。リンク管理表16は、レコードバッフ
ァ14の内部に同一のハッシュ関数値を持つ複数のレコ
ードが格納された時、その複数のレコードの間のリンク
を管理するためのものである。
【0071】ハッシュ済リスト用出力バッファ18は、
レコードバッファ14の内容が一杯になった時点でその
内容を格納するものである。この場合格納されるレコー
ドは、特定のハッシュ関数値を指定することによって、
ハッシュ表15内のポインタからポイントされるレコー
ドである。出力ハッシュ値メモリ17はその特定のハッ
シュ関数値を指定するものである。
【0072】指定されたハッシュ関数値を持つレコード
がハッシュ済リスト用出力バッファ18に格納される
と、出力ハッシュ値メモリ17の内容がインクリメント
され、その結果のハッシュ関数値を持つレコードが、レ
コードバッファ14からハッシュ済リスト用出力バッフ
ァ18に格納される。ハッシュ済リスト用出力バッファ
18が一杯になると、その内容としてのレコード群のハ
ッシュ済リスト31への出力がブロック的に行われる。
補助情報リスト用出力バッファ19は、このブロック的
な出力に際して、そのブロックが二次記憶装置内で格納
される領域の最初のアドレス(ブロック番号に対応)、
そのブロック内のレコードに対応するハッシュ関数値の
最小値、および最大値を補助情報として格納するもので
あり、このバッファ19の内容も補助情報リスト22と
して出力される。
【0073】一方レコードバッファ14から1つのレコ
ードがハッシュ済リスト用出力バッファ18に格納され
るたびに、入力バッファ13内のレコードがレコードバ
ッファ14に格納され、以下同様の動作が続行される。
【0074】図4〜図7は本発明におけるグループバイ
処理方式の第1の実施例におけるハッシュ処理のフロー
チャートである。ここでは図3のレコードバッファ14
が一杯になった時点で、1つのレコードをハッシュ済リ
スト用出力バッファ18に移動させると共に、レコード
バッファ14の空き領域には入力バッファ13から直ち
にレコードを補充し、またハッシュ済リスト用出力バッ
ファ18が一杯になった時点で、その内容が1つのブロ
ックのデータとしてハッシュ済リスト21に出力される
と同時に、そのブロックに対する補助情報が生成され、
その補助情報は補助情報リスト用出力バッファ19に格
納されるものとしてハッシュ処理を説明する。
【0075】図4において処理が開始されると、まずス
テップS1でハッシュ対象リスト11から入力バッファ
13にレコード群が読み込まれ、ステップS2で入力バ
ッファ13の中の先頭のレコードがレコードバッファ1
4の空き領域に移動され、ステップS3でそのレコード
のキー値に対するハッシュ関数値が計算され、ステップ
S4でそのハッシュ関数値に対応するハッシュ表15の
エントリにそのレコードがつながれる。すでにそのエン
トリにつながれているレコードが存在する場合には、既
に存在したレコードに対するポインタはハッシュ表15
から削除され、リンク管理表16を用いてすでに存在し
たレコードが新しいレコードにリンクされる。
【0076】続いてステップS5でレコードバッファ1
4に空きがあるか否かが判定され、空きがある場合には
ステップS7で入力バッファ13にレコードがあるか否
かが判定され、ある場合にはステップS2以降の処理が
繰り返される。
【0077】ステップS5でレコードバッファに空きが
ないと判定された時には、レコードバッファ14内のレ
コードをハッシュ済リスト用出力バッファ18に移動さ
せる出力処理がステップS6で行われ、出力処理終了後
にステップS7の処理に移行する。出力処理の詳細につ
いては図5で説明する。またステップS7で入力バッフ
ァ13にレコードがないと判定された時には、ステップ
S8でハッシュ対象リスト11に未入力のレコードがあ
るか否かが判定され、ある場合にはステップS9でハッ
シュ対象リスト11からレコード群が入力バッファ13
に読み込まれた後に、ステップS2以降の処理が繰り返
される。
【0078】ステップS8でハッシュ対象リスト11に
未入力のレコードが存在しないと判定されると、ステッ
プS10でレコードバッファ14にレコードが残ってい
るか否かが判定され、残っている時にはステップS11
の出力処理が行われた後にS10以降の処理が繰り返さ
れる。ステップS10でレコードバッファ14にレコー
ドが存在しないと判定されると、ステップS12の終了
処理が行われた後に処理を終了する。終了処理の詳細に
ついては図6で説明する。
【0079】図5は図4におけるステップS6,S11
の出力処理の詳細フローチャートである。同図において
処理が開始されると、まずステップS16で出力ハッシ
ュ値メモリ17によって指定されるハッシュ表のエント
リにつながれているレコードがあるか否かが判定され、
ない場合にはS17で出力ハッシュ値メモリ17の値が
インクリメントされ、ステップS18で出力ハッシュ値
がハッシュ値の最大値、例えばレコードのキー値を20
で割った剰余をハッシュ関数値としてとるものとすれ
ば、その最大値19を越えるか否かが判定され、越えな
い場合にはステップS16以降の処理が繰り返される。
【0080】最大ハッシュ値を越える場合には、ここで
出力ハッシュ値の値を0に戻してしまうと、ハッシュ済
リスト用出力バッファ18に格納され、1つのブロック
として取り扱われるべきレコードに対するハッシュ関数
値の順序が後述するようにずれてしまうことになるた
め、ハッシュ済リスト用出力バッファ18の内容を直ち
にハッシュ済リスト21に出力するためにステップS1
9の出力バッファ出力処理が行われた後に、ステップS
20の処理に移行する。出力バッファ出力処理の詳細は
図7で説明する。
【0081】出力バッファ出力処理の終了後にステップ
S20で出力ハッシュ値の値が0に戻され、ステップS
16以降の処理が繰り返される。ステップS16で出力
ハッシュ値によって指定されるハッシュ表のエントリに
つながれているレコードがあると判定された場合には、
ステップS21で出力ハッシュ値によって指定されるハ
ッシュ表のエントリにつながれているレコードがハッシ
ュ済リスト用出力バッファ18に移動させられる。複数
のレコードがそのエントリにリンク管理表16を介して
つながれている場合には、移動させられたレコードの次
にリンクされているレコードがそのハッシュ表のエント
リにつながれる。そしてステップS22でハッシュ済リ
スト用出力バッファ18が一杯か否かが判定され、一杯
である場合にはステップS23の出力バッファ出力処理
が行われた後に、また一杯でない時には直ちに図4のス
テップS7、またはS10の処理に戻る。
【0082】図6は図4のステップS12、すなわち終
了処理の詳細フローチャートである。同図において処理
が開始されると、まずステップS26でハッシュ済リス
ト用出力バッファ18にレコードがあるか否かが判定さ
れ、レコードがある場合にはそこに残っているレコード
をハッシュ済リスト21に出力するための出力バッファ
出力処理、すなわちステップS27の処理が行われた後
に、残っていない場合には直ちにステップS28の処理
に移行する。ステップS28では補助情報リスト用出力
バッファ19にレコードが残っているか否かが判定さ
れ、残っている場合にはステップS29でその内容が補
助情報リスト22に出力された後に、またレコードが残
っていない場合には直ちに図4に戻り、全ての処理を終
了する。
【0083】図7はステップS19,S23、およびS
27の出力バッファ出力処理の詳細フローチャートであ
る。同図において処理が開始されると、まずステップS
31でハッシュ済リスト用出力バッファ18の先頭、お
よび末尾のレコードのハッシュキー値と、ハッシュ済リ
スト用出力バッファ18の内容が出力されるべきハッシ
ュ済リスト21内のブロックの先頭アドレスとが1組の
補助情報レコードとされて、そのレコードが補助情報リ
スト用出力バッファ19に格納され、ステップS32で
補助情報リスト用出力バッファ19が一杯か否かが判定
され、一杯である場合にはステップS33でその内容が
補助情報リスト22に出力された後に、また一杯でない
時には直ちにステップS34でハッシュ済リスト用出力
バッファ18の内容がハッシュ済リスト21に出力され
た後に、図5のステップS20、図4のステップS7,
S10、または図6のステップS28に戻る。
【0084】図8は、図165で説明したグループバイ
対象レコード群に対する図4〜図7のフローチャートに
よるハッシュ処理の経過の説明図である。同図におい
て、ハッシュ表は上から順にハッシュ値の0,1および
2を示し、左側の*印は図3の出力ハッシュ値メモリ1
7の内容(どのハッシュ値か)を示す。
【0085】図8(1) のグループバイ対象レコード群の
最初のレコードが、レコードバッファ14に格納された
状態を(2) に示す。すなわち、最初のレコードとしての
“5”に対するハッシュ値は2であり、ハッシュ表中の
2のエントリから、レコードバッファ14に格納された
レコード“5”をポイントするポインタがつながれる。
【0086】図8(3) は次のレコードとしての“3”が
そのハッシュ関数値0のエントリにつながれた状態を、
また(4) はその次のレコード“3”が更にハッシュ表の
ハッシュ値0のエントリにつながれた状態を示す。この
ようにハッシュ表の1つのエントリからポイントされる
レコードが複数になると、その複数のレコードの間のリ
ンク関係は図3のリンク管理表16によって管理され
る。その詳細は出願人の次の先願に詳細に記述されてい
る。
【0087】特開平8−129551(平成8年5月2
1日公開)、 発明の名称「ハッシュ方式」 図8(5) は、更にその次のレコード“4”がハッシュ表
中のハッシュ値1のエントリからポイントされた状態を
示す。前述のように、レコードバッファ14の容量がレ
コード4個分であるとすると、この時点でレコードバッ
ファは一杯になる。
【0088】そこで図8(6) に示すように1つのレコー
ド、ここでは“3”がレコードバッファ14からハッシ
ュ済リスト用出力バッファ18に出力される。この時出
力されるレコードは、出力ハッシュ値メモリ17の内容
としてのハッシュ値、ここでは0を持つものである。
【0089】図8(7) は更にその次のレコード“2”
が、ハッシュ表の2のエントリにつながれた状態を示
す。この時点でもレコードバッファ14が一杯であるた
め、出力ハッシュ値メモリ17の値、ここでは0のエン
トリにつながれているレコード“3”がハッシュ済リス
ト用出力バッファ18に出力される。
【0090】図8(8) はその次のレコード“1”がハッ
シュ表の1のエントリにつながれた状態を示す。この時
点でハッシュ済リスト用出力バッファ18に出力すべき
レコードは、ハッシュ表の1のエントリから指されるレ
コード、すなわち入力バッファ13からレコードバッフ
ァ14に格納されたばかりのレコード“1”である。こ
れは(7) の時点で出力ハッシュ値メモリ17の値0のエ
ントリにつながれているレコード“3”が出力された後
に、そのエントリにつながれているレコードがなくなっ
てしまい、その結果出力ハッシュ値メモリ17の内容が
インクリメントされたことによる。
【0091】以下同様にして処理が実行されるが、図3
のハッシュ済リスト用出力バッファ18の内容が一杯に
なるたびに、その内容は二次記憶装置上のハッシュ済リ
スト21に出力される。図9は最終的に二次記憶装置内
に作られたハッシュ済リストの内容を示す。ブロック番
号2に対して格納されているレコードは2個であるが、
これは図5のステップS18で出力ハッシュ値が最大ハ
ッシュ値を越えたと判定されると、その時点で出力バッ
ファ出力処理、すなわちステップS19が実行されるた
めである。図9に対応する補助情報リストは[0,0,
1][1,1,2][2,2,2]および[3,0,
1]である。
【0092】グループバイ処理方式の第1の実施例にお
ける後半の処理、すなわちハッシュ処理の結果を用いた
グループバイ処理について説明する前に、グループバイ
処理方式の第2の実施例におけるハッシュ処理について
説明する。図10は第2の実施例におけるハッシュ処理
の説明図である。第1の実施例における図3と比較する
と、処理装置12の内部に出力ブロック数カウンタ20
が備えられている点のみが異なっている。これは第1の
実施例において、補助情報レコードがブロック番号、ブ
ロック内のレコードの最小ハッシュ値、および最大ハッ
シュ値からなっているのに対して、この第2の実施例で
はブロック番号、ブロック内のレコードの最小ハッシュ
値、および補助情報レコードの生成順の番号、すなわち
出力ブロックの生成順の番号の3つからなっていること
による。この補助情報レコードの内容、およびそのソー
トについては後述する。
【0093】第2の実施例におけるハッシュ処理のフロ
ーチャートは図4〜図7とほぼ同様であるが、図7の出
力バッファ出力処理に一部異なる部分があり、そのフロ
ーチャートを図11に示す。同図において、ステップS
36でハッシュ済リスト用出力バッファ18の先頭のレ
コードのハッシュ値、出力ブロック数カウンタ20のカ
ウント値、ハッシュ済リスト用出力バッファの内容が出
力されるべきハッシュ済リスト内のアドレスが組とされ
て、補助情報レコードが作られ、それが補助情報リスト
用出力バッファ19に格納される。その後ステップS3
7の判定で補助情報用出力バッファ19が一杯の時には
ステップS38でその内容が補助情報リスト22に出力
された後に、補助情報リスト用出力バッファ19が一杯
でない時にはステップS38の処理が行われることな
く、ステップS39で出力ブロック数カウンタ20のカ
ウント値がインクリメントされ、ステップS40でハッ
シュ済リスト用出力バッファ18の内容がハッシュ済リ
スト21に出力されて、処理が呼び出し元に戻る。
【0094】第1、および第2の実施例における後半の
処理、すなわちグループバイ処理自体について説明する
前に、補助情報リストのソートについて説明する。第
1、および第2の実施例では、ハッシュ処理によって作
成された補助情報リストのソートが実行された後に、グ
ループバイ処理が実行される。
【0095】一般的にソートの手法のうちで入力デー
タ、すなわちソート対象データの中で等しいキーを持つ
データの順序がソートの後でも保存されているものを安
定なソートという。すなわち安定なソートでは、同じキ
ーを持つレコードの相対的な順序がソート前とソート後
とで変化しないことになるが、この安定なソートはソー
トの手法のうちの1つのカテゴリに入るものであり、全
てのソートが安定なソートというわけではない。
【0096】そこで、補助情報リストのソートにおいて
どのようなソート方式を用いるかが問題となるが、ソー
トの手法として安定なソートだけに限定せず、一般的な
ソートの手法を用いることができるようにするために
は、第1、および第2の実施例において説明したよう
に、補助情報リストの内容としてブロック番号と最小ハ
ッシュ値の2つの情報だけでは不足であり、第3の情報
として最大ハッシュ値、または補助情報レコードの生成
順の番号も持たせる必要がある。
【0097】これに対して補助情報リストのソートの方
法として安定なソートを保証できる方法を用いることが
できる場合には、補助情報レコードが持つべき情報は、
例えばブロック番号と最小ハッシュ値の2つだけに限定
することができる。このように安定なソートを用いる場
合には、補助情報レコードの大きさを小さくできるとい
う利点があるが、補助情報リストのソート方式が安定な
ソートのみに限定されてしまうという欠点がある。
【0098】補助情報リストのソート方式として安定な
ソートを用いる場合には、キーとして最小ハッシュ値を
使用してソートを行うことによって、同じキーを持つ補
助情報レコードに対しては、ソート後の補助情報リスト
の順序がソート前の補助情報リストの順序と同じになる
ようにソートすることが可能となり、その結果ソート後
の補助情報リストの順序がソート前のランの中での順序
と同じになるようにソートすることができる。
【0099】これに対して補助情報リストのソート方式
として安定なソートのみに限定せず、一般的なソートの
方法を用いる場合には、補助情報のうちの第3の情報と
して最大ハッシュ値、あるいは補助情報レコードの生成
順の番号を持たせることによって最小ハッシュ値を第1
キー、最大ハッシュ値、あるいは補助情報レコードの生
成順の番号を第2キーとしてソートを実行すれば、ソー
ト後の補助情報リストの順序がソート前のランの中での
順序と同じになるようにすることが可能である。この第
3の情報としての最大ハッシュ値、または補助情報レコ
ードの生成順の番号も補助情報として持たせ、安定なソ
ートを実行しても当然何ら問題は生じない。
【0100】補助情報リストのソートは、例えば図3の
処理装置12の内部に補助情報リストソート装置を備え
ることによって実行される。安定なソートが保証されて
いる場合には、補助情報リストの内容を補助情報リスト
ソート装置に読み込み、開始ハッシュ値をキーとしてソ
ートを実行し、ソート結果をソートされた補助情報リス
トとして出力する。
【0101】補助情報リストのソートについては、第1
に補助情報リストソート装置が安定なソートを保証して
いるか否か、第2に補助情報リストがすでに二次記憶装
置に出力されているか否か、第3に二次記憶装置に出力
されている補助情報リストが、補助情報リストソート装
置が使えるメモリ上に全て格納できるか否かによって、
その処理が異なる。補助情報リストが二次記憶装置に出
力されていない場合には、補助情報リスト用出力バッフ
ァ19の中で、すなわち主記憶上のみでソートを行うこ
とが可能であり、これらに関連して補助情報リストのソ
ート処理については、図12〜図17の6種類の処理フ
ローチャートのいずれかを使用することができる。
【0102】図12は補助情報リストソート処理(第1
の方法)のフローチャートである。このフローチャート
は安定なソートが保証され、補助情報リストが二次記憶
装置に出力されていない場合の処理フローチャートを示
す。この場合には、ステップS41で参照ハッシュ値を
キーとしてソートが実行され、ステップS42でソート
処理の結果が後述するソートされた補助情報リスト用入
力バッファに格納できるか否かが判定され、格納できる
場合にはステップS43でその入力バッファにソート結
果が格納され、格納できない場合にはステップS44で
ソート結果が二次記憶装置に出力されて、処理を終了す
る。ここでソートされた補助情報リスト用入力バッファ
は、図3の処理装置12の内部、例えば主記憶上に設け
られるものであり、一般にその容量はあまり大きくない
ため、ステップS42の判定が行われる。
【0103】図13は補助情報リストソート処理(第2
の方法)のフローチャートを示す。このフローチャート
は安定なソートが保証されておらず、補助情報リストが
二次記憶装置に出力されていない場合の処理を示す。こ
の場合は、ステップS46で最小ハッシュ値を第1キ
ー、最大ハッシュ値あるいは補助情報レコード生成順の
番号を第2キーとしてソートが実行され、その後図12
と同様にステップS42〜S44の処理が実行されて、
処理を終了する。
【0104】図14は補助情報リストソート処理(第3
の方法)のフローチャートである。同図は安定なソート
が保証され、補助情報リストが二次記憶装置に出力され
ており、かつ出力されている補助情報リストが、補助情
報リストソート装置が使用できるメモリ上に全て格納で
きる場合に対応する。この場合には、まずステップS4
8で二次記憶装置上に格納されている補助情報リストが
ソート装置のメモリ上に展開されて、ステップS49で
最小ハッシュ値をキーとしたソートが実行された後に、
図12と同様にステップS42〜S44の処理が実行さ
れて、処理を終了する。
【0105】図15は補助情報リストソート処理(第4
の方法)のフローチャートを示す。同図は安定なソート
が保証されておらず、補助情報リストが二次記憶装置に
出力されており、出力されている補助情報リストの大き
さが、補助情報リストソート処理装置が使用できるメモ
リ上に全て格納できる大きさである場合に対応する。こ
の場合には、図14と同様にステップS48で補助情報
リストがメモリ上に展開された後に、図13と同様にス
テップS46でソートが実行された後に、ステップS4
2〜S44の処理が実行されて、処理を終了する。
【0106】図16は補助情報リストソート処理(第5
の方法)のフローチャートである。これは安定なソート
が保証され、補助情報リストが二次記憶装置に出力され
ており、出力された補助情報リストが、補助情報リスト
ソート処理装置が使用できるメモリ上にその全てを格納
することができない大きさを持つ場合に対応する。この
場合には、ステップS51で最小ハッシュ値をキーとし
て外部ソートが実行され、ステップS52でそのソート
結果が二次記憶装置に出力されて、処理を終了する。こ
の場合には外部ソートを行わなければならないほど補助
情報リストの大きさが大きいために、図12のステップ
S42における判定、すなわち補助情報リスト用入力バ
ッファがソート結果を格納できるか否かの判定が実行さ
れず、ステップS52でソート結果が直ちに二次記憶装
置に出力される。
【0107】図17は補助情報リストソート処理(第6
の方法)のフローチャートである。これは図16と比較
して安定なソートが保証されていない点のみが異なる場
合に対応する。この場合には、ステップS53で最小ハ
ッシュ値が第1キー、最大ハッシュ値、または補助情報
レコード生成順の番号が第2キーとして使われて、外部
ソートが実行され、ステップS52でそのソート結果が
二次記憶装置に出力されて、処理を終了する。
【0108】以上で補助情報リストのソート処理につい
ての説明を終わり、第1の実施例および第2の実施例に
おける後半の処理、すなわちハッシュ処理の結果を用い
たグループバイ処理について説明する。この後半の処
理、すなわちグループバイ処理自体については、本発明
のグループバイ処理方式の一部であることから、以後グ
ループバイ関数処理と呼ぶことにする。図18はこのグ
ループバイ関数処理の全体説明図である。同図におい
て、処理装置12の内部には前述のソートされた補助情
報リスト用入力バッファ31と、ランの数に等しい個数
のハッシュ済リスト用入力バッファ32a,32b,・
・・,32nが設けられ、図12〜図17のいずれかの
フローチャートを用いてソートされた結果としての、ソ
ートされた補助情報リスト30はソートされた補助情報
リスト用入力バッファ31に読み込まれ、ハッシュ済リ
スト21の内容はハッシュ済リスト入力バッファ32a
〜32nのいずれかに読み込まれ、最小ハッシュ値レコ
ード取り出し装置33、ハッシュ値が等しいレコード群
のソート装置34、グループバイ関数演算処理装置35
が使用されて最終的な処理結果が出力される。
【0109】図19はグループバイ処理方式の第1およ
び第2の実施例におけるグループバイ関数処理の全体フ
ローチャートである。同図において処理が開始される
と、まずステップS61でハッシュ済リスト用入力バッ
ファ32a〜32nのいずれかに空のものがあるか否か
が判定され、ある場合にはステップS62でソートされ
た補助情報リスト用入力バッファ31にレコードが格納
されていないか否かが判定され、格納されていない場合
にはステップS63でソートされた補助情報リスト30
にレコードがあるか否かが判定され、ある場合にはステ
ップS64でそのリスト30から入力バッファ31にレ
コード群が読み込まれる。
【0110】続いてステップS65で補助情報リスト用
入力バッファ31から1つのレコードが読み出され、そ
のレコードが指すブロックがハッシュ済リスト21から
読み出されて、ハッシュ済リスト用入力バッファ32a
〜32nのうちで空のバッファに格納された後に、ステ
ップS61以降の処理が繰り返される。
【0111】ステップS62で補助情報リスト用入力バ
ッファにレコードがある場合には、ステップS63,S
64の処理を行うことなく、ステップS65の処理に移
行し、その後ステップS61以降の処理が繰り返され
る。
【0112】ステップS61でハッシュ済リスト入力バ
ッファに空のものがないと判定されるか、ステップS6
3で補助情報リスト30にレコードがないと判定される
と、ステップS66で空でないハッシュ済リスト用入力
バッファがあるか否かが判定される。ある場合には、ス
テップS67で最小ハッシュ値レコード取り出し装置3
3を用いて、空でないハッシュ済リスト用入力バッファ
の先頭のレコードの中でハッシュ値が最も小さいものを
取り出し、ハッシュ値が等しいレコード群のソート装置
34にそのレコードを与える。その後ステップS68
で、ソート装置34に入力されたレコードのハッシュ値
がその直前に入力されたレコードのハッシュ値と異なる
か否かが判定され、異なっていない場合にはステップS
61以降の処理が繰り返される。
【0113】これに対してハッシュ値が異なる場合に
は、同一のハッシュ値を持つレコードの取り出しが終了
したことになるため、ステップS69でソート装置34
にたまっているレコードをキー値を用いてソートし、そ
の結果をグループバイ関数演算処理装置35に出力して
ソート装置34を空にした後に、ステップS70で図2
0で説明するグループバイ関数演算処理が行われ、その
後ステップS61以降の処理が繰り返される。そしてス
テップS66で空でないハッシュ済リスト用入力バッフ
ァが存在しないと判定された時点で、処理を終了する。
【0114】図20は、図19のステップS70、すな
わちグループバイ関数演算処理の詳細フローチャートで
ある。同図を従来例の図166と比較すると、ステップ
S71〜S80の内容は図166のステップS223〜
S232と実質的に同じであり、グループバイ関数演算
処理自体は従来例と基本的に同じである。
【0115】次に本発明におけるグループバイ処理方式
の第3の実施例について説明する。図21は第3の実施
例におけるハッシュ処理の説明図である。同図を図3に
示した第1の実施例におけるハッシュ処理と比較する
と、ハッシュ済リスト用出力バッファ18に代わってハ
ッシュ済レコード用出力バッファ38が備えられている
点と、ハッシュ済リスト21の代わりにハッシュ済レコ
ード出力領域40が二次記憶装置上に設けられている点
とが異なっている。すなわち、第3の実施例ではハッシ
ュ済レコード用出力バッファ38の内容を二次記憶装置
に出力するにあたって、ハッシュ済リスト21のように
連続した領域に逐次的に書込みを行う代わりに、二次記
憶装置上の必ずしも連続でない領域に書込みを行うとい
う点が第1、および第2の実施例と異なる。この第3の
実施例は、二次記憶装置上に空き領域が多いにもかかわ
らず、その空き領域は連続した領域ではないという状況
において有効であり、二次記憶装置への書込みは逐次書
込みではないが、ハッシュ済レコード用出力バッファ3
8の内容を一度に出力することにより、書込みデータの
サイズを大きく取ることができ、連続領域に対する書込
みに近い性能で処理を実行することができる。
【0116】第3の実施例における処理のフローチャー
トは、第1の実施例に対する図4〜図7とほぼ同様であ
るが、図7と出力バッファ出力処理の内容がやや異な
り、その処理は図22に示される。
【0117】図22において処理が開始されると、まず
ステップS81で図21のハッシュ済レコード出力領域
40から、ハッシュ済レコード用出力バッファ18の大
きさ分の連続した領域が探され、その領域が確保され、
確保された連続領域の先頭アドレスが得られる。ステッ
プS82でハッシュ済レコード用出力バッファ38の先
頭、および末尾のレコードに対応するハッシュ値、すな
わち最小ハッシュ値および最大ハッシュ値と、ステップ
S81で得られた領域の先頭アドレスが組とされて補助
情報レコードが作られ、それが補助情報リスト用出力バ
ッファ19に格納された後、ステップS83、S84で
図7のステップS32,S33と同様の処理が行われた
後に、ステップS85でハッシュ済レコード用出力バッ
ファ38の内容が、ハッシュ済レコード出力領域40の
中のステップS81で確保された領域に出力されて、処
理が呼出し元に戻る。
【0118】図23は第3の実施例における後半の処
理、すなわちグループバイ関数処理の全体説明図であ
る。同図を図18に示した第1、および第2の実施例に
おけるグループバイ関数処理と比較すると、ハッシュ済
リスト21の代わりにハッシュ済レコード出力領域40
が二次記憶装置上に設けられている点と、処理装置12
内のラン数分のハッシュ済リスト用入力バッファ32a
〜32nに代わって、同様のハッシュ済レコード用入力
バッファ36a〜36nが設けられている点が異なって
いる。
【0119】図24は第3の実施例におけるグループバ
イ関数処理の全体フローチャートである。同図を第1、
第2の実施例における図19と比較すると、ハッシュ済
リスト用入力バッファの代わりにハッシュ済レコード用
入力バッファという用語が、またハッシュ済リストの代
わりにハッシュ済レコード出力領域という用語が用いら
れている点のみが異なっている。
【0120】図25はグループバイ処理方式の第4の実
施例におけるハッシュ処理の説明図である。この第4の
実施例では、第1〜第3の実施例と異なって、補助情報
リストの代わりに処理装置12の内部にラン情報メモリ
23、およびラン番号メモリ24を備える点に大きな特
徴がある。このラン情報としては、二次記憶装置上で1
つのランの最初のレコードの格納アドレス、すなわち開
始アドレス(開始ブロック番号)と、そのランにおける
最後のレコードの格納アドレス、すなわちランの終了ア
ドレス(終了ブロック番号)の2つの情報を持つもので
ある。第1の実施例に対する図3と同様に、二次記憶装
置上のハッシュ済リスト21は連続領域であり、その領
域への逐次書込みと逐次読出しとによって処理が実行さ
れるために、高速に処理を行うことができる。
【0121】この第4の実施例においては、補助情報リ
ストの代わりにラン情報が用いられるが、それ以外のハ
ッシュ処理の方法は第1の実施例におけるとほぼ同じで
あり、処理のフローチャートも第1の実施例に対応する
図4〜図7と類似したものとなる。特に図4に対応する
全体処理のフローチャートは第1の実施例におけると同
じであり、その説明を省略する。
【0122】ラン情報を使用する点で図5の出力処理、
図6の終了処理、および図7の出力バッファ出力処理と
は一部異なる処理が生ずる。図26〜図28は第4の実
施例におけるこれらの処理のフローチャートである。図
26は出力処理のフローチャートであり、図5と比較す
るとステップS20で出力ハッシュ値の値が0に戻され
る、すなわち1つのランが終了した時点で、ステップS
90の処理が追加され、ラン番号メモリ24に格納され
ているラン番号のインクリメントが行われる点が異なっ
ている。
【0123】図27は第4の実施例における終了処理の
フローチャートであり、図6と比較すると、補助情報を
用いないために、ステップS28、およびS29の処理
が不要となる点が異なっている。
【0124】図28は第4の実施例における出力バッフ
ァ出力処理のフローチャートである。このフローチャー
トでは、補助情報リストを使用しないことに関連して、
第1の実施例に対する図7とはかなり異なる処理が行わ
れる。まずステップS91でハッシュ済リスト用出力バ
ッファ18の内容がハッシュ済リスト21に出力された
後、ステップS92でラン番号が指すラン情報の開始ア
ドレスが設定されているか否かが判定される。設定され
ていない場合には、ステップS93でラン情報の開始ア
ドレスとして、ハッシュ済リストの一部として出力され
るレコードの二次記憶装置上でのアドレス(ブロック番
号)がセットされた後に、また開始アドレスがすでに設
定されていると判定された場合には、ステップS93の
処理を行うことなく、ステップS94で終了アドレスと
して、出力されるレコードの二次記憶装置上でのアドレ
ス(ブロック番号)がセットされて、処理が元に戻る。
【0125】図28のステップS92〜S94の処理に
ついて、図8のハッシュ処理を具体例として説明する。
図8(1) のグループバイ対象レコード群のハッシュ処理
が開始され、図8(8) まで処理が進んだ時点を考える。
ここでラン情報は(開始ブロック番号、終了ブロック番
号)の形式で表現するものとし、処理を始める前の初期
状態としてラン番号は1、ラン情報は(未設定、未設
定)となっていたものとする。(8) の状態で図9に示す
ようにブロック0にレコード3,3,1が出力される。
この出力処理は図28のステップS91において行われ
る。
【0126】ステップS92で開始アドレスが設定され
ているか否かが判定されるが、ここでは未設定であるた
めに、ステップS93でラン情報に開始ブロック番号が
セットされ、ラン情報は(0、未設定)となる。更にス
テップS94でラン情報は(0,0)となる。
【0127】ハッシュ処理が続いて図8(11)まで処理が
進んだとすると、ブロック1にレコード4,2,5がス
テップS91で出力され、ステップS92ではラン番号
1に対応するラン情報の開始アドレスがすでに設定され
ているため、ステップS93の処理を行うことなく、ス
テップS94でラン情報の終了アドレスが更新され、ラ
ン番号1のラン情報は(0,1)となる。
【0128】更にハッシュ処理が続き、図8(13)まで処
理が進んだとすると、ステップS91でブロック2にレ
コード2,5が出力される。すでにラン番号1のラン情
報の開始アドレスは設定されているため、ステップS9
3の処理を行うことなく、ステップS94で終了アドレ
スが更新され、ラン番号1に対するラン情報は(0,
2)となる。
【0129】ここでラン番号1のランに対するレコード
の出力は終了しており、図26のステップS20の後に
S90の処理が実行され、ラン番号がインクリメントさ
れて2となる。ラン番号2に対するラン情報は、この時
点では(未設定、未設定)である。
【0130】ハッシュ処理が更に進行し、図8(15)まで
処理が進んだとすると、ステップS91でブロック3に
レコード3,1が出力される。この時ラン情報の開始ア
ドレスは設定されていないため、ステップS93でラン
情報は(3、未設定)となり、ステップS94でラン情
報は(3,3)となる。以上の経過を経てラン情報とし
て(0,2)(3,3)が得られる。
【0131】第4の実施例においても、第1の実施例に
対する第2の実施例の関係と同様に、二次記憶装置上の
連続領域としてのハッシュ済リスト21の格納領域の代
わりに、飛び飛びのレコード格納領域、すなわち図21
のハッシュ済レコード出力領域40を利用することも可
能である。この場合の処理も、第3の実施例における図
26〜図28の処理とほぼ同様であるが、図26に示し
た出力処理の一部が変更される。
【0132】図29はこのようにグループバイ処理方式
の第4の実施例において、二次記憶装置上の飛び飛びの
領域をハッシュ済レコード出力領域として用いる場合
の、出力処理のフローチャートである。同図を図26と
比較すると、ステップS90でラン番号がインクリメン
トされ、新しいランに対するレコードの出力を開始する
前に、ステップS96でハッシュ済レコード出力領域内
で新しいランを格納できる連続領域が探し出された後
に、ステップS16以降の処理が実行される点が異なっ
ている。
【0133】なおここで新しいランを格納できる連続領
域を探し出す場合に、新しいランの長さは一般的に不明
であるが、ハッシュ対象レコードがハッシュ値としてラ
ンダムな値を持つという仮定ができる場合には、ランの
長さは例えばレコードバッファ14の容量の2倍の長さ
を持つようになるといえるが、一般的には2倍の長さに
は限定されず、その長さは不明である。しかしながら、
例えば第1の実施例に対応する図3においても、二次記
憶装置上でハッシュ済リスト21が格納される連続領域
の長さを明確に決定することが必ずしも困難でないと考
えられることに対応して、新しいランを格納できる連続
領域を探し出すことは実用的にはそれほど困難でないも
のと考えられる。
【0134】図30は第4の実施例において、ハッシュ
処理の結果を図25のハッシュ済リスト21、すなわち
連続領域の形式でなく、図21のハッシュ済レコード出
力領域40のように飛び飛びの領域に出力する場合の出
力結果を示す。この場合には、ハッシュ済レコードの出
力は、その一部が逐次書込みであるが、全てが逐次書込
みである必要はないという特徴がある。すなわち、1つ
のランの内部では逐次書込みを行い、異なるランは離れ
た領域にあってよいということになる。
【0135】図30は、図8と同様のハッシュ動作が行
われた場合の、二次記憶装置上へのハッシュ済レコード
の出力結果であるが、ラン番号1のランはブロック番号
0からブロック番号2までの連続領域に格納されている
のに対し、ラン番号2のランはブロック番号10のみの
連続領域に格納されている。従ってラン情報は(0,
2)および(10,10)である。この場合図25のハ
ッシュ処理と比較すると、ハッシュ済レコードの二次記
憶装置への書込みは完全に逐次ではないが、ランの内部
では逐次書込みを行うため、高速に処理を行うことが可
能であり、二次記憶装置上に空いている連続領域の長さ
があまり長くない場合などに有効である。
【0136】図31は第4の実施例における後半の処
理、すなわちグループバイ関数処理の全体説明図であ
る。同図を例えば第3の実施例に対応する図23と比較
すると、補助情報リストを使用しないことから、ソート
された補助情報リスト用入力バッファ31の代わりに、
ラン情報メモリ23が用いられる点が異なっている。な
おここでハッシュ済レコード出力領域40は連続領域の
ように見えるが、前述のように第4の実施例ではこの領
域は連続であっても、非連続であっても、どちらでもよ
く、図31ではどちらの場合をも表していると考えてよ
い。
【0137】図32は第4の実施例におけるグループバ
イ関数処理の全体フローチャートである。同図において
処理が開始されると、まずステップS101で図31の
ハッシュ済レコード用入力バッファ36a〜36nのそ
れぞれに1対1に対応するようにランの割り当てが行わ
れ、ステップS102でラン情報の各エントリにある各
先頭ブロックのレコードが各ハッシュ済レコード入力バ
ッファに格納された後に、ステップS103〜S109
の処理が繰り返される。
【0138】まずステップS103で空でないハッシュ
済レコード用入力バッファがあるか否かが判定され、あ
る場合にはステップS104で最小ハッシュ値レコード
取り出し装置33を用いて、空でないハッシュ済レコー
ド用入力バッファの先頭のレコードの中でハッシュ値が
最も小さいものが取り出され、ソート装置34に入力さ
れる。そしてステップS105で入力されたレコードの
ハッシュ値が直前に入力されたもののハッシュ値と異な
るか否かが判定され、異なる場合にはステップS106
でソート装置34に溜まっているレコードがキー値によ
ってソートされ、その結果がグループバイ関数演算処理
装置35に入力され、ソート装置34が空にされた後、
ステップS107でグループバイ関数演算処理が行われ
る。
【0139】その後ステップS108で空となったハッ
シュ済リスト用入力バッファがあるか否かが判定され、
ある場合にはステップS109でその入力バッファに割
り当てられたランにおいて読み出されていないブロック
があれば、その中の先頭ブロックがハッシュ済レコード
用入力バッファに格納された後、ステップS103以降
の処理が繰り返される。
【0140】またステップS105で2つのハッシュ値
が同じであると判定された場合には、ステップS10
6,S107の処理を実行することなく、ステップS1
08の処理に移行する。そしてステップS103で空で
ないハッシュ済レコード用入力バッファが存在しないと
判定された時点で、処理を終了する。
【0141】ステップS107のグループバイ関数演算
処理は、第1の実施例に対応する図20におけると同じ
であるので、その説明を省略する。以上のようにグルー
プバイ処理方式の第4の実施例では、ラン数分のハッシ
ュ済レコード用入力バッファが用意され、各ハッシュ済
レコード用入力バッファにはそれぞれ1対1に対応する
特定のランのブロックのレコードしか格納されないよう
に処理が実行される。それぞれのランのブロックのレコ
ードが、ラン情報に従って順番に格納されるように処理
が行われる。ハッシュ済レコード出力領域からハッシュ
済レコード用入力バッファへの読込みを行う時に発生す
る二次記憶装置への読出し要求は連続領域に対するもの
ではないが、1つ1つの読出し要求に対応する領域のサ
イズを比較的大きく取ることができるため、連続領域に
対する読出し要求に近い性能で処理を実行することが可
能となる。
【0142】図33はグループバイ処理方式の第5の実
施例におけるハッシュ処理の説明図である。この第5の
実施例では、第4の実施例と同様に補助情報リストでな
くラン情報が用いられるが、二次記憶装置上のハッシュ
済レコード出力領域41としての飛び飛びの領域の1つ
1つが必ずしも1つのランの全てのレコードを格納でき
る大きさを持っていない場合の実施例であり、このため
その飛び飛びの領域を連結する情報を用いて、ハッシュ
済レコードを出力するものである。
【0143】グループバイ処理方式の第5の実施例にお
けるハッシュ処理のフローチャートは、第4の実施例に
対する図26〜図28とほぼ同様であるが、出力バッフ
ァ出力処理の一部に異なる点があり、この処理のフロー
チャートを図34に示す。図34を第4の実施例におけ
る図28と比較すると、ステップS91に対応するステ
ップS111で出力バッファの内容をハッシュ済レコー
ド出力領域に出力するにあたり、次にレコードを出力す
べき領域のアドレスも一緒に出力する点のみが異なって
いる。
【0144】図35はグループバイ処理方式の第5の実
施例における後半の処理、すなわちグループバイ関数処
理の全体説明図である。同図を第4の実施例における図
31と比較すると、ハッシュ済レコード出力領域41が
飛び飛びの領域であり、しかも各領域の内部に、次のレ
コードが格納されている領域のアドレスも格納されてい
る点のみが異なっている。
【0145】図36は第5の実施例におけるグループバ
イ関数処理の全体フローチャートである。同図を第4の
実施例における図32と比較すると、ステップS102
に対応するS113でラン情報の各エントリにある各先
頭ブロックのレコードが各ハッシュ済レコード用入力バ
ッファに格納されるにあたり、同時に次にレコードを読
み込むべきブロックのアドレスが獲得される点と、ステ
ップS109に対応するS114で読み出されていない
ブロックがハッシュ済レコード用入力バッファに格納さ
れるにあたり、同時に次にレコードを読み込むべきブロ
ックのアドレスが獲得される点が異なっている。
【0146】以上で本発明におけるグループバイ処理方
式の実施例を詳細に説明したが、以下で具体的なグルー
プ対象リストとしてのレコード群を用いて、本発明にお
けるグループバイ処理方式をさらに詳細に説明する。
【0147】図37はデータの具体例とともに、本発明
におけるグループバイ処理方式の全体処理方式を示す図
である。同図は前述の第1の実施例にほぼ対応するもの
である。
【0148】図37において処理装置12の内部には、
図18におけると同様の構成要素に加えて、ハッシュ処
理装置50、補助情報リストソート装置51が備えら
れ、また図18のグループバイ関数演算処理装置35の
具体例としてカウント処理装置52が備えられている。
また二次記憶装置53には、ハッシュ処理の後にグルー
プバイ関数処理の対象となるグループバイ対象リスト5
4が格納され、ハッシュ処理の結果としてのハッシュ済
リストを格納する領域21、補助情報リストを格納する
領域22、および補助情報リストのソート結果としての
ソートされた補助情報リストを格納する領域30が備え
られている。
【0149】図38は図37のハッシュ処理装置50の
構成を示す。その構成は、図3と比較して、入力バッフ
ァ13とほぼ同様の役割をはたすグループバイ対象リス
ト用入力バッファ55が、入力バッファ13に代わって
備えられている点のみが異なっている。
【0150】ここで具体的なグループバイ対象データ
が、次の30個のレコード(キー値のみからなる)によっ
て構成されるリストとして与えられるものとする。 5,3,3,4,2,1,2,3,5,1,2,3,3,2,1,1,5,5,4,1,4,2,3,3,2,
5,1,1,3,3 このグループバイ対象データに対するハッシュ処理のた
めのハッシュ関数として、キーの値のmod3を用いる
ものとする。すなわちキーの値を3で割り、その時の余
りの値をハッシュ関数の値とする。ハッシュ表15のエ
ントリはこれに合わせて3つとなっている。グループバ
イ対象リスト用入力バッファ55、ハッシュ済リスト用
出力バッファ18には共に3つのレコードが格納される
ものとし、またレコードバッファ14には4つのレコー
ドが格納されるものとする。これに合わせてリンク管理
表16のエントリ数も4となっている。
【0151】ハッシュ処理の結果として次に示すハッシ
ュ済リストが得られる。 3,3,1,4,2,5,2,2,5,3,3,3,1,1,1,4,1,4,2,5,5,2,5,2,3,
3,3,3,1,1 同時に次に示す補助情報リストが得られる。
【0152】〔10,0,1〕〔11,1,2〕〔12,2,2〕〔13,0,
0〕〔14,1,1〕〔15,1,1〕〔16,2,2〕〔17,2,2〕〔18,0,
0〕〔19,0,1〕 ここではハッシュ済リストの中にハッシュ値でソートさ
れた次の3つの列が含まれる。
【0153】 3,3,1,4,2,5,2,2,5 3,3,3,1,1,1,4,1,4,2,5,5,2,5,2 3,3,3,3,1,1 列が3つであるためラン数は3である。これらのレコー
ドをそれぞれ対応するハッシュ値で置き替えると、次の
ようになっている。
【0154】 0,0,1,1,2,2,2,2,2 0,0,0,1,1,1,1,1,1,2,2,2,2,2,2 0,0,0,0,1,1 図39はこのような具体的データを対象とするグループ
バイ処理の全体フローチャートである。同図において処
理が開始されると、ステップS116でハッシュ処理が
行われ、ステップS117で補助情報リストのソートが
行われ、その結果がソートされた補助情報リスト30に
格納され、ステップS118でグループバイ処理が行わ
れて、全体処理を終了する。
【0155】図40〜図42はハッシュ処理、およびグ
ループバイ処理の詳細フローチャートである。図40は
ハッシュ処理のフローチャートであり、これを第1の実
施例における図4と比較すると、例えばステップS12
1において図4のステップS1のハッシュ対象リストの
代わりに、グループバイ対象リストという用語が用いら
れている点のみが異なっている。
【0156】図41はグループバイ処理の全体フローチ
ャートである。同図を第1および第2の実施例に対応す
る図19と比較すると、ステップS70のグループバイ
関数処理の代わりに、ステップS150でカウント処理
が行われる点のみが異なっている。
【0157】図42は図41のステップS150におけ
るカウント処理の詳細フローチャートである。同図を第
1、第2の実施例に対応する図20と比較すると、ステ
ップS72における関数の初期化の代わりに、ステップ
S152でカウンタが0に初期設定されることと、ステ
ップS73で読み出されたレコードに関して関数演算を
実行する代わりに、ステップS153でカウンタのカウ
ント値をインクリメントすることと、ステップS77、
およびS79における関数の終了処理に対して、特別な
処理が実行されないこととが異なっている。
【0158】図43はハッシュ処理の経過の説明図であ
る。その意味は図8とほぼ同様であり、図37で説明し
たグループバイ対象リストの入力に対するハッシュ処理
の経過を示す。
【0159】前半の処理としてのハッシュ処理が終了す
ると、ハッシュ処理によって得られた補助情報リストの
ソートが行われる。このソートでは各レコードの2番目
の数値である開始ハッシュ値を第1キー、3番目の数値
である終了ハッシュ値を第2キーとしてソートを実行す
ることにより、ソートされた補助情報リスト30として
次のものが得られる。
【0160】〔13,0,0〕〔18,0,0〕〔10,0,1〕〔19,0,
1〕〔14,1,1〕〔15,1,1〕〔11,1,2〕〔12,2,2〕〔16,2,
2〕〔17,2,2〕 ソートされた補助情報リスト30とハッシュ済リスト2
1とを用いてグループバイ関数処理を行うことができ
る。ハッシュ済リストの中のランの数が3であるため、
ハッシュ済リスト用入力バッファ32a〜32nの数は
3個である。最小ハッシュ値レコード取り出し装置33
による処理の経過が図44に示される。
【0161】図44で、最小ハッシュ値を持つレコード
が3つの入力バッファの先頭に複数ある場合には、左に
ある入力バッファにあるレコードが優先して取り出され
るものとしているが、この優先順位はどのように付けて
もかまわないことは当然である。例えば1番上の左から
2番目の状態は、ブロック13の3つのレコードが1つ
づつ取り出され、空になった状態を示している。その右
側の状態は、空になった最も左側の入力バッファにブロ
ック番号19のレコードが格納された状態を示してい
る。更にその右側、最上部の最も右側の状態は、最も左
側の入力バッファの先頭レコードのみが新たに取り出さ
れた状態を示している。このような処理が続けられるこ
とにより、最小ハッシュ値レコード取り出し装置33に
よる処理の結果は以下のようになる。
【0162】3,3,3,3,3,3,3,3,3,1,1,4,1,4,4,1,1,1,1,
2,5,2,5,2,2,2,5,2,5,5 ここで同一のハッシュ値を持つレコードが連続するよう
な結果が得られている。この各レコードに対応するハッ
シュ値を列で示すと以下のようになる。
【0163】 0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2 2,2,2,2,2,2,2,2,2 この結果はハッシュ値が等しいレコード群のソート装置
34に与えられる。これによってハッシュ値が0を持つ
9個のレコード(3,3,3,3,3,3,3,3,3) がまずソートさ
れ、次にハッシュ値が1を持つ10個のレコード(1,1,4,
1,4,4,1,1,1,1) がソートされ、最後にハッシュ値が2
を持つ11個のレコード(2,5,2,5,2,2,2,5,2,5,5) がソー
トされる。この結果カウント処理装置52に与えられる
レコード列は以下のようになる。
【0164】3,3,3,3,3,3,3,3,3,1,1,1,1,1,1,1,4,4,4,
2,2,2,2,2,2,5,5,5,5,5 カウント処理装置52は、入力レコードキーの値が等し
い間はカウント値をインクリメントするため、カウント
処理装置52の出力は以下のようになる。
【0165】 〔3,9〕〔1,7〕〔4,3〕〔2,6〕〔5,5〕 次に前述の第4の実施例に対応させて具体的なデータの
グループバイ処理について説明する。グループバイ対象
データは前述のものと同じとし、ハッシュ関数、ハッシ
ュ表15のエントリの数、レコードバッファ14、グル
ープバイ対象リスト用入力バッファ55、およびハッシ
ュ済リスト用出力バッファ18のレコード格納数も前述
のものと同じとする。ハッシュ処理の結果として得られ
るハッシュ済リストも前述のものと同じである。補助情
報リストの代わりに得られるラン情報は、図37の補助
情報リスト22の内容に対応して次のようになる。
【0166】(10,12) (13,17) (18,19) このラン情報は1番目のランがブロック番号10〜12
の連続領域、2番目のランがブロック番号13〜17の
連続領域、3番目のランがブロック番号18〜19に格
納されていることを示す。ハッシュ済リストの中にハッ
シュ値でソートされた3つの列が得られるが、これも前
述のものと同じである。
【0167】第4の実施例における後半の処理、すなわ
ちグループバイ関数処理について説明する。図45はこ
の場合の最小ハッシュ値レコード取り出し装置33によ
る処理経過の説明図である。ここではハッシュ済リスト
用入力バッファの左から順に1番目のラン、2番目のラ
ン、3番目のランに割り付けてあるが、ハッシュ済リス
ト入力バッファはランに対して1対1に対応すれば、ど
のように割り当ててもかまわない。最小ハッシュ値レコ
ードを取り出した結果は次のようになる。
【0168】3,3,3,3,3,3,3,3,3,1,4,1,1,1,4,1,4,1,1,
2,5,2,2,5,2,5,5,2,5,2 ハッシュ値が等しいレコード群のソート装置34にこの
レコード列が与えられると、ハッシュ値が0を持つ9個
のレコード(3,3,3,3,3,3,3,3,3) がまずソートされ、次
にハッシュ値が1を持つ10個のレコード(1,4,1,1,1,4,
1,4,1,1) がソートされ、最後にハッシュ値が2を持つ1
1個のレコード(2,5,2,2,5,2,5,5,2,5,2) がソートされ
る。この結果カウント処理装置52に与えられるレコー
ド列とその出力は前述のものと同じになる。
【0169】以上において本発明におけるグループバイ
処理方式の実施例を詳細に説明したが、次にこのグルー
プバイ処理方式を利用する、相関のあるデータ組み合わ
せ数え上げ方式について、その実施例を説明する。
【0170】図46は本発明の組み合わせ数え上げ方式
の実施例の構成の説明図である。同図において、本発明
の数え上げ方式は相関があると考えられるアイテムの組
み合わせの候補を生成する組み合わせ生成部C(i) 1、
グループバイ処理によって組み合わせ候補のトランザク
ション内部での出現回数をカウントする出現回数数え上
げ部G(i) 2、出現回数のカウント値が例えばある指定
された範囲にある場合にその組み合わせを相関のある組
み合わせとして、ラージアイテムセットL(i)の要素と
して選択する組み合わせ選択部F3、および組み合わせ
選択部F3の出力するラージアイテムセットから、組み
合わせ生成部C(i) 1によって組み合わせのプルーニン
グのために使用されるビットマップb15,b(i-1) 6
を生成し、C(i+1) によって使用されるビットマップb
i7を追加するビットマップ生成部B(i) 4から構成さ
れている。
【0171】図46の各部は以下のような処理を実行す
る。 C(i) ・i=1の時:同一トランザクションに含まれるアイテ
ムを1つづつG(i) へ送る。
【0172】・i>2の時:同一トランザクションに含
まれるi個のアイテムの組み合わせの内、ビットマップ
フィルタb1,b2,..., b(i-1) により除外されない
ものをG(i) へ送る。ここで、フィルタb1,b
2,..., b(i-1) は図46のb1,..., b(i-1) に相当
するが、その詳細は後述する。
【0173】G(i) i個のアイテムが並んだレコードを受け取り、そのレコ
ード全体をキーとして後述のグループバイ処理を行い、
各グループに含まれるレコードの個数を計算し、レコー
ドにその個数を付け加えたものを出力する。
【0174】F G(i) の出力を受け取り、個数が与えられた条件に合う
ものを長さiのラージアイテムセットL(i) として出力
する。
【0175】B(i) Fの出力[アイテム1... アイテムi,個数]を受け取
り、ビットマップフィルタbj(1≦j≦i)に対し
て、[アイテム1,...アイテムi]の中から、全てのj
個のアイテムの組み合わせを取り出し、それぞれの組み
合わせに対して、Hj(j個のアイテムの組み合わせ)
で計算されるビット位置に“1”を立てる操作を行う。
この時、b1,..., b(i-1) は既に存在するので、これ
らを更新する。biはまだ存在しないので、これを新規
に作成し、更新を行う。
【0176】図47は、本発明の組み合わせの数え上げ
方式の全体処理フローチャートである。同図において処
理が開始されると、まずステップS501でアイテムの
組み合わせの個数としてのiが1とされた後に、ステッ
プS502でL(i) 、ここではL(1) が生成される。こ
のL(1) は1個のアイテムのみからなるラージアイテム
セットである。
【0177】その後ステップS503でL(i) の要素
数、すなわち組み合わせの数がi+1以上あるか否かが
判定される。ここではL(1) のラージアイテムセットの
要素数が2個以上であるか否かが判定され、この判定が
Yesの場合にはステップS504でiの値が1インク
リメントされた後に、ステップS502以降の処理が繰
り返される。
【0178】すなわち、ここでは2個のアイテムの組み
合わせのうちで出現回数が指定された範囲にあるものの
集合としてのラージアイテムセットL(2) の生成がS5
02で行われ、続いてS503以降の処理が実行され
る。そしてステップS503でラージアイテムセットL
(i) に含まれる要素の数がi+1個以上でないと判定さ
れた時点で、処理を終了する。
【0179】図48はラージアイテムセットL(i) 生成
処理のフローチャートである。同図において処理が開始
されると、まずステップS510でトランザクションリ
ストTLの先頭のトランザクションが読み出され、ステ
ップS511でi個のアイテムの組み合わせ候補が生成
され、その組み合わせ候補、すなわちアイテム1からア
イテムiまでの組み合わせが出現回数数え上げ部G(i)
に送り込まれ、ステップS512でトランザクションリ
ストが空か否かが判定され、空でない時にはステップS
510以降の処理が繰り返され、トランザクションリス
トの内部から組み合わせ候補の生成とG(i) への送り込
みが実行される。
【0180】ステップS512でトランザクションリス
トが空になったと判定されると、ステップS513で数
え上げ部G(i) から、アイテムの組み合わせ候補とその
トランザクション内での出現回数、すなわち個数が組み
合わせ選択部Fに送られ、組み合わせ選択処理が行われ
る。そしてステップS514で組み合わせ選択結果がラ
ージアイテムセットL(i) として格納され、同時にラー
ジアイテムセットにおけるアイテムの組み合わせの部分
がビットマップ生成部B(i) に送られる。ステップS5
15でビットマップ生成処理が行われ、ステップS51
6で数え上げ部G(i) にまだレコードが存在するか否か
が判定され、存在する場合にはステップS513以降の
処理が繰り返され、存在しない場合には処理を終了す
る。
【0181】次に具体例を用いて、本発明の組み合わせ
の数え上げ方式の処理について更に詳細に説明する。こ
こでは具体例として、以下の4つのトランザクションT
1〜T4からなるトランザクションリストTLを対象と
する。
【0182】 T1=[1,2,4] T2=[2,3,6] T3=[1,4,5,6] T4=[1,2,4,5] 各トランザクション内部のアイテムは、その番号順にソ
ートされているものとする。ここではラージアイテムセ
ットとして選択される組み合わせ候補の出現回数、すな
わち個数のサポートの最小値として50%以上の条件を満
たす個数、すなわち全トランザクションの数の4に対し
て個数が2以上となる条件を満たすものを組み合わせ選
択部Fにおける選択条件とする。
【0183】まず長さ1のアイテムセットL(1) の生成
について説明する。図49〜図52は長さ1のアイテム
の組み合わせ候補の生成とその出現回数数え上げの説明
図である。
【0184】はじめに、図49でトランザクションT1
[1,2,4]を読み込んで、C(1) に入力する。C
(1) では、同一トランザクション中に含まれるアイテム
を1つづつ、すなわち[1],[2],[4]の3個を
出現回数数え上げ部G(1) に入力する。G(1) では、C
(1) から入力されたアイテム、[1],[2],[4]
の出現個数を数え上げ、アイテムと個数をペアとして保
持する。ここでは、アイテム[1],[2],[4]が
それぞれ1回づつ入力されたので、[アイテム,個数]
の形式で、[1,1],[2,1],[4,1]を保持
する。以上で、T1についての処理が終わる。
【0185】1つのトランザクションについてG(1) へ
の入力処理が終了したら、C(1) にもどって、次のトラ
ンザクションの処理を行う。図50では、T2=[2,
3,6]について、[2],[3],[6]の3個のア
イテムとしてG(1) に入力する。G(1) では、それまで
のトランザクションの処理で数え上げたアイテムと個数
に、入力されたアイテムと個数を追加していく。アイテ
ム[2]はT1とT2の両方で入力されるので、T2の
処理が終了した段階では、[アイテム,個数]の形式で
[2,2]と保持される。
【0186】以下同様にすべてのトランザクションにつ
いて、C(1) でアイテムを1つづつG(1) に入力して、
G(1) で数え上げを行う。T4までのトランザクション
をすべて処理した結果、[アイテム,個数]の組は、
[1,3],[2,3],[4,3],[3,1],
[6,2],[5,2]となる。この結果が図9であ
る。
【0187】すべてのトランザクションについてG(1)
への入力処理が終了したら、G(1)から[アイテム,個
数]の組を取り出し、Fにおいてサポートの最小値を満
たすアイテムを選ぶ。図53〜図58はこの処理の説明
図である。図53では、[1,3]の個数3がサポート
の最小値50%を満たしているので、これをラージアイテ
ムセットL(1) に登録する。と同時に、B(1) では、ア
イテム[1]をビットマップb1に登録する。ここでは
アイテムに対応するビット位置(0〜5)は以下のハッ
シュ関数H1によって得られる。
【0188】 H1(アイテム1)=アイテム1の番号mod6. この場合、トランザクション中のユニークなアイテムの
総個数が6個であるから、ビットマップのビット数はそ
れに合わせて6とした。もし、ビットマップがメモリに
入らない、あるいは他の処理のためにメモリを予約した
いのであれば、ユニークなアイテムの総個数6より小さ
な値を取ることも可能である。ビットマップのすべての
ビットは、最初は“0”である。アイテム[1]にハッ
シュ関数を適用すると、1mod6=1を得るので、b
1の1に対応する上から2番目のビットに“1”を立て
る。
【0189】次に、図54でG(1) から[2,3]を取
り出し、アイテム[2]の個数3がサポートの最小値で
ある50%以上の条件を満たすのでラージアイテムセット
として登録する。同時に、2mod6=2であるから、
B(1) ではビットマップb1の3番目のビットに“1”
を立てる。
【0190】図55,図57,図58ではアイテムと個
数のペアのうち[4,3],[6,2],[5,2]に
ついてサポートの最小値の条件を満たしているので、
[4],[6],[5]と個数の組をラージアイテムセ
ットL(1) に登録し、同時にビットマップb1のハッシ
ュ関数値に対応する位置に“1”をセットする。
【0191】しかし、図56では[3,1]について個
数1がサポートの最小値の条件を満たしていないので、
ラージアイテムセットL(1) およびビットマップb1へ
の登録は行わない。処理の結果、ビットマップb1=
{1,1,1,0,1,1}となり、長さ1のラージア
イテムセットL(1) ={[1,3],[2,3],
[4,3],[6,2],[5,2]}が生成される。
【0192】次に長さ2のラージアイテムセットL(2)
の生成について説明する。図59〜図62はアイテムの
組み合わせ候補の数え上げまでの説明図である。長さ2
のアイテムの組み合わせ生成では、既に作成されたビッ
トマップb1を利用する。はじめに、図59でトランザ
クションT1=[1,2,4]を読み込んで、ビットマ
ップb1でセットされたアイテムだけを使って長さ2の
アイテムの組み合わせの候補を生成する。ここでは、b
1に3つのアイテムが登録されているので、[1],
[2],[4]の3つのアイテムから[12],[1
4],[24]の3つのアイテムの組み合わせの候補を
生成し、数え上げ部であるG(2) に入力する。G(2) で
は、C(2) から入力されたアイテムの組み合わせ[1
2],[14],[24]の出現個数を数え上げ、アイ
テムと個数を組として保持する。[12],[14],
[24]がそれぞれ1回づつ入力されたので、[アイテ
ム1アイテム2,個数]の形式で、[12,1],[1
4,1][24,1]を保持する。以上で、T1につい
ての処理が終わる。
【0193】次のトランザクションT2=[2,3,
6]のアイテムをビットマップb1でフィルタリングす
ると、アイテム[3]が落とされるので、その結果アイ
テムの組み合わせの候補として[26]1つだけを図6
0でG(2) に入力する。T3,T4についても同様の処
理を行うが、T3とT4にはビットマップb1でふるい
にかけられて落とされるアイテムがないので、トランザ
クションから生成されるすべての長さ2のアイテムの組
み合わせを図61、図62でG(2) に入力する。
【0194】すべてのトランザクションについてG(2)
への入力処理が終了したら、G(2)から、[アイテム1
アイテム2,個数]を取り出し、Fで個数がサポートの
最小値の条件を満たすものを選ぶ。この処理を図63〜
図72に示す。[12,2]の個数2がサポートの最小
値50%以上の条件を満たしているので、アイテムの組み
合わせ候補[12]と出現回数を図63でラージアイテ
ムセットL(2) に登録する。同時に、B(2) では、アイ
テムの組み合わせ[12]の各アイテム[1],[2]
をビットマップb1に登録する。この場合、b1のビッ
ト位置1と2に“1”を立てる。さらに、[12]につ
いては以下のハッシュ関数H2で計算されるビットマッ
プb2(ビット位置0〜4)のビット位置3に“1”を
立てる。
【0195】H2(アイテム1,アイテム2)=(アイ
テム1の番号+アイテム2の番号)mod5. このハッシュ関数H2ではアイテム1アイテム2の番号
の和のmod5を取るものを用いたので、ビットマップ
のビット数はこれに合わせて5とした。最初は、b2の
すべての5つのビットは“0”である。なお、ここでの
ハッシュ関数は例として設定したもので、実際にはハッ
シュ関数の効率を考慮して任意に設定できる。また、ビ
ットマップの大さもメモリの大きさを考慮に入れて任意
に設定できる。b1では常に1つのアイテムで“1”を
立てるビット位置を決めるが、b2は2個のアイテムを
引数としたハッシュ関数によりビット位置を決定する。
【0196】図64,図65,図67,図69に示すよ
うに、[14,3],[24,2],[15,2],
[45,2]についてはサポートの最小値を満たすの
で、アイテムをラージアイテムセットL(2) に登録し、
同時にビットマップb1とb2を更新する。これに対し
て図66,図68,図70〜図72では、サポートの最
小値が満たされていないためアイテムセットへの登録と
ビットマップの更新は行われない。以上の処理の結果、
長さ2のラージアイテムセットL(2) ={[12,
2],[14,3],[24,2],[15,2],
[45,2]}および、b1={0,1,1,0,1,
1},b2={1,1,0,1,1}が生成される。こ
の結果を図72に示す。
【0197】次にL(3) の生成について説明する。図7
3〜図76は組み合わせ候補数え上げまでの説明図であ
る。長さ3のアイテムの組み合わせの生成では長さ2の
ラージアイテムセットを作成した際に生成したビットマ
ップb1およびb2を利用する。まず、トランザクショ
ンT1=[1,2,4]を読み込んで、ビットマップb
1でセットされたアイテムだけを使って長さ3のアイテ
ムの組み合わせを生成する。ここでは、[1],
[2],[4]の3つのアイテムがb1にセットされて
いる。次に長さ2のアイテムの組み合わせ[12],
[14],[2,4]がビットマップb2でセットされ
ているかどうかを調べる。この場合、b2[H2(1,
2)]=b2[H2(1,4)]=b2[H2(2,
4)]=1とすべてセットされていることから[12
4]を組み合わせ候補としてG(3) に入力する。この処
理を図73に示す。
【0198】図74に示すように、T2=[2,3,
6]の場合、b1に[3]がセットされていないためふ
るい落とされて、トランザクションの長さが2となって
しまうため、長さ3のアイテムの組み合わせ候補が生成
できずG(3) への入力は行わない。
【0199】T3=[1,4,5,6]の場合、
[1],[4],[5],[6]に対応するb1のビッ
トがセットされているので、4つの長さ3のアイテムの
組み合わせ[145],[146],[156],[4
56]が考えられるが、まず、それぞれについて、ビッ
トマップb2のチェックを行う。[145]の場合、
[14],[15],[45]のすべてについて、対応
するb2のビットがセットされているので、組み合わせ
の候補として図75でG(3) に入力する。
【0200】しかし、[146]の場合、[14],
[46]に対応するb2のビットはセットされている
が、[16]のビットがセットされていないため、[1
46]を組み合わせの候補としてG(3) に入力しない。
同様に、[456]のすべての2個のアイテムの組み合
わせ[45],[46],[56]に対応するb2のビ
ットはセットされているので、[456]は組み合わせ
の候補としてG(3) に入力されるが、[156]の中の
[16]のb2のビットはセットされていないためG
(3) に入力されない。
【0201】T4=[1,2,4,5]についても同様
なb1とb2のチェックを行い、組み合わせの候補とし
て[124]と[145]をG(3) に入力する。この結
果を図76に示す。
【0202】この例では、不要な候補の生成をふせぐた
め、長さ3のアイテムの組み合わせ候補を生成する際
に、すべての長さ2のアイテムの組み合わせに対応する
ビットマップb2のビットをチェックした。この手法
は、不要な数え上げを防止するプルーニングとして有効
であるが、例えば、処理に使用できるメモリの量が十分
でない場合には各アイテムのチェック、あるいは2の長
さのアイテムの組み合わせのチェックを行わない方法、
すなわちb1あるいはb2を使用しない方法を取ること
もできる。また、b1とb2を使うが、チェックする長
さ2の組み合わせを少なくする方式もあり得る。
【0203】例えば、長さ3のアイテムの組み合わせを
生成する際に、先頭の長さ2の組み合わせ1つだけをチ
ェックするやり方を考えることが出来る。もちろん、こ
の様にすると、チェック漏れが発生しやすくなり、組み
合わせ候補は増大するのでG(3) での処理の負荷は高く
なるが、チェック作業の負荷を減らすことが出来る。ど
の方式が最も高速であるかは、データや、プログラムの
実装方式や、システムの特性に依存する。
【0204】G(3) への入力処理が終了したら、図77
〜図79に示すように、G(3) から[アイテム1アイテ
ム2アイテム3,個数]の組を取り出し、Fで個数がサ
ポートの最小値の条件を満たすアイテムを選ぶ。図77
では、[124,2]の個数2がサポートの最小値50%
以上という条件を満たしているので、これを長さ3のラ
ージアイテムセットL(3) に登録する。同時に、B(3)
では、[124]の各アイテム[1],[2],[4]
それぞれに対応するビットマップb1のビット位置に
“1”を立てる。また、ハッシュ関数H3を用いて、す
べての3つのアイテムの組み合わせ[124]に対応す
るビットマップb3のビット位置に“1”を立てる。
【0205】H3(アイテム1,アイテム2,アイテム
3)=(アイテム1の番号+アイテム2の番号+アイテ
ム3の番号)mod5. 同時に、[124]の中から、2個のアイテムの組み合
わせを取り出し、ビットマップb2を生成することもで
きるが、ここではb1とb3のみを生成する。
【0206】続いて行われる図78,図79の処理の結
果、長さ3のラージアイテムセットL(3) ={[12
4,2],[145,2]},ビットマップb1=
{0,1,1,0,1,1},b3={1,0,1,
0,0}が生成される。
【0207】図79では、長さ3のラージアイテムセッ
トL(3) の個数が2個であり、図47のステップS50
3における終了条件の4個以下となったので処理を終了
する。以上で、ラージアイテムセットの数え上げ処理が
終了し、この結果を用いて相関ルールを生成することが
出来る。
【0208】以上に述べた実施例では、i>1の場合の
C(i) では、各トランザクションに対し、ビットマップ
b1,b(i-1) により除外されない長さiのアイテムの
組み合わせ候補が生成される。それと同時に、各トラン
ザクションに対し、ビットマップb1,b(i-1) により
除外されないアイテムのみを新たなトランザクションと
して格納することもできる。これにより、i>2の場
合、基のトランザクション群TLではなく、C(i-1) で
生成されたリダクションされたトランザクション群から
アイテムの組み合わせの候補を生成することができる。
【0209】以上において相関ルール生成のために使用
されるデータ組み合わせの数え上げ方式について詳細に
説明したが、以上の説明はいわゆる基本相関分析に関す
るものである。相関分析の手法としては、この基本相関
分析に加えて階層相関分析と時系列分析という2つの手
法が知られており、本発明はこれら2つの手法に対して
も適用可能である。
【0210】そこで、まず階層相関分析におけるデータ
組み合わせの数え上げ方式について、具体例を用いて説
明する。図80はこの階層相関分析に用いられるデータ
の階層構造の具体例の説明図である。同図において、例
えばアイテム1のエビス 500mlと、アイテム2のラガー
350mlとの親はアイテム7としてのビールであり、また
アイテム7のビール、アイテム8のジュース、アイテム
9の牛乳の親はアイテム10の飲料であるという階層構
造が示されている。
【0211】階層相関分析は、分類法が異なるレベルに
あるデータを対象とするデータベースのマイニングに有
効である。前述の基本相関分析では例えばエビスビール
500mlを購入する顧客が同時に「ピーナッツ」を購入す
るという相関ルールを生成するこはできるが、より一般
化されたルールとしてビールまたは飲料を購入する顧客
が同時にピーナッツを購入するというルールを生成する
ことができない。すなわち基本相関分析のみでは、多く
のより一般的で重要な相関ルールの生成が行われないこ
とになる可能性がある。
【0212】階層相関分析と基本相関分析との違いは、
アイテムの組み合わせを生成する組み合わせ生成部C
(i) の動作にある。基本分析の場合には、それぞれのト
ランザクションに含まれるアイテムのみで組み合わせが
生成されるのに対して、階層分析の場合には階層構造に
おける親データも含めて組み合わせが生成される。しか
し1つのアイテムとそのアイテムの親からなる組み合わ
せは生成されない。
【0213】例えばトランザクションT=[1,3,
5]から生成される2個のアイテムの組み合わせとし
て、基本分析で生成される[13],[15],[3
5]以外に、次のアイテムの組み合わせがある。
【0214】[18],[37],[78],[1
9],[57],[79],[39],[58],[8
9] これに対して生成されないアイテムの組み合わせとして
は次のものがある。
【0215】[17],[110],[710],[3
8],[310],[810],[59],[51
0],[910] 階層相関分析のための組み合わせ数え上げ方式の具体例
を説明するためのトランザクションリストTLとして、
次の4つのトランザクションT1〜T4を用いる。
【0216】 T1=[2,3,5,6], T2=[1,3,5] T3=[1,2,4] T4=[5] アイテムの組み合わせのうちからラージアイテムセット
として選択される時のサポートの最小値は50%、最大値
は75%とする。トランザクションが4個であるため、出
現回数が2、および3の場合に、アイテムの組み合わせ
候補がラージアイテムセットに入れられることになる。
【0217】図81〜図84は1個のみのアイテムの組
み合わせ候補の数え上げとしてのG(1) までの処理を示
す。図81では最初のトランザクション[2,3,5,
6]が組み合わせ生成部C(1) に与えられ、図80で説
明した親データも含めて1個ずつのアイテムが数え上げ
部G(1) に出力され、アイテムの数え上げが行われる。
【0218】図82においてはトランザクションT2=
[1,3,5]が、また図83においてはT3=[1,
2,4]が、また図41においては[5]が組み合わせ
生成部C(1) に与えられ、親を含む1個ずつのアイテム
が数え上げ部G(1) に出力され、1個ずつのアイテムの
数え上げが行われ、最終的な結果が図84において得ら
れる。
【0219】図85〜図94は、図81〜図84で数え
上げられた1個ずつのアイテムの出現回数を用いて、出
現回数がサポートの値を満たす2、または3であるアイ
テムをラージアイテムセットの要素として選択し、また
選択されたラージアイテムセットに対するビットマップ
b1を作成する処理の説明図である。図85において、
アイテムとその出現回数としての最初のデータ[2,
2]が組み合わせ選択部Fに与えられ、これがラージア
イテムセットのL(1) の要素として出力されると同時
に、そのアイテムの番号2がビットマップ生成部B(1)
に与えられ、次のハッシュ関数によって与えられるビッ
ト位置に対して“1”が立てられる。
【0220】アイテム番号mod10 図86においては[7,3]、図88においては[3,
2]、図89においては[8,3]、図90においては
[5,3]、図91においては[9,3]、図93にお
いては[1,2]がラージアイテムセットL(1) の要素
として選択され、ビットマップb1のハッシュ関数によ
って指定される位置に“1”が立てられる。
【0221】これに対して図87においては[10,
4]、図92においては[6,1]、図94においては
[4,1]が組み合わせ選択部Fに与えられるが、これ
らはサポート値を満たしていないためにラージアイテム
セットL(1) としては選択されず、ビットマップb1の
対応する位置に“1”が立てられることもない。
【0222】図95〜図98は、2個のアイテムの組み
合わせ候補の数え上げ処理としてのG(2) までの処理の
説明図である。図95においては、トランザクションT
1=[2,3,5,6]が組み合わせ生成部C(2) に与
えられ、図80の階層構造における親も含めて2個のア
イテムの組み合わせ候補が数え上げ部G(2) に与えら
れ、2個のアイテムの組み合わせ候補の出現回数がカウ
ントされる。
【0223】但しこの場合、2個のアイテムの組み合わ
せ候補の生成において、図85〜図94で作成されたビ
ットマップb1の対応する位置に“1”が立っていない
アイテムは使用されない。例えば階層構造において最上
位の親である10は、前述のハッシュ関数によって指定
されるビット位置0に“1”が立っていないために、組
み合わせ候補を生成するためには使用されない。
【0224】図96においてはトランザクションT2=
[1,3,5]、図97においてはトランザクションT
3=[1,2,4]、図98においてはトランザクショ
ンT4=[5]が組み合わせ生成部C(2) に与えられ、
数え上げ部G(2) によって2個のアイテムの組み合わせ
候補の出現回数がカウントされる。ここで例えば図97
においてC(2) に入力されるトランザクションに含まれ
るアイテム4は、対応するビット位置に“1”が立って
いないために組み合わせ候補の生成には使用されない
が、その親であるアイテム8は使用される。また、図9
8においてはトランザクションに含まれるアイテムが1
個のみであるために、組み合わせ候補の生成は行われな
い。
【0225】図99〜図109はG(2) によってカウン
トされた2個のアイテムの組み合わせ候補のうちで、与
えられたサポート条件を満足する組み合わせ候補のラー
ジアイテムセットL(2) の要素としての選択処理の説明
図である。図99においては、最初の組み合わせ候補と
しての[23,1]が組み合わせ選択部Fに入力される
が、ここで出現回数1はサポート条件を満たしていない
ために、この組み合わせ候補はラージアイテムセットL
(2) としては選択されず、従ってビットマップへの登録
も行われない。
【0226】図100においては、組み合わせ候補[2
8,2]が組み合わせ選択部Fに与えられ、この組み合
わせ候補はサポート条件を満たしているため、ラージア
イテムセットL(2) の要素として選択されると同時に、
ビットマップ生成部B(2) によってビットマップb1、
およびb2の対応する位置へのビット設定が行われる。
これらのビットマップのうちb1に対して使用されるハ
ッシュ関数は図85〜図94で説明したものと同じであ
る。これに対してb2の設定に対して使用されるハッシ
ュ関数は次のものである。
【0227】 (アイテム1の番号+アイテム2の番号)mod7 図101,図102,図105,図106,図107,
図108においては、組み合わせ選択部Fに入力される
アイテムの組み合わせ候補がラージアイテムセットL
(2) の要素として選択され、ビットマップb1、および
b2の対応する位置へのビット設定が行われる。
【0228】これに対して図103,図104,図10
9においては、組み合わせ選択部Fに入力されるアイテ
ムの組み合わせ候補がサポート条件を満たしていないた
め、ラージアイテムセットの要素としての選択は行われ
ず、またビットマップの対応するビット位置へのビット
設定も行われない。
【0229】図99〜図109において組み合わせ候補
のうち、[58,2]から[19,1]に対する処理は
示されていないが、最終的に得られる結果は図109に
示されている。
【0230】図110〜図113は3個のアイテムの組
み合わせ候補の数え上げ処理としてのG(3) までの説明
図である。図110において、トランザクションT1=
[2,3,5,6]が組み合わせ生成部C(3) に入力さ
れ、アイテムの親も含めて3個のアイテムの組み合わせ
候補が生成され、その出現回数がG(3) によってカウン
トされる。但しこの場合、ビットマップb1において
“1”が立っていないビット位置に対応するアイテム、
またはビットマップb2の対応する位置に“1”が立っ
ていない2個のアイテムの組み合わせを含む組み合わせ
候補は生成されない。
【0231】例えば前述と同様にb1において“1”が
立っていない階層構造の最上位の親である10は組み合
わせ候補の生成には使用されない。また例えば[23
5]は3個のアイテムのうちの2個のアイテムの組み合
わせの中に、図99〜図109で説明したハッシュ関数
値に対応する位置に“1”が立っていないものがあるた
め、組み合わせ候補としては生成されない。
【0232】同様にして図111においてはT2=
[1,3,5]、図112においてはT3=[1,2,
4]が組み合わせ生成部C(3) に与えられ、G(3) によ
って組み合わせ候補のカウントが行われる。
【0233】これに対して図113においては、トラン
ザクションに含まれるアイテムの個数が1個のみである
ため、組み合わせ候補は生成されず、図112において
得られた結果がこの処理の最終結果となる。
【0234】図114〜図119は、図110〜図11
3で生成された3個のアイテムの組み合わせ候補のう
ち、サポート条件を満足する候補のラージアイテムセッ
トL(3) への選択処理の説明図である。図114におい
て、選択部Fに入力される最初の組み合わせ候補[35
7,2]はサポート条件を満足しているため、ラージア
イテムセットL(3) の要素として選択されると同時に、
3個のアイテムの組み合わせがビットマップ生成部B
(3) に与えられ、ビットマップb1、およびb3の設定
が行われる。
【0235】ここでビットマップb1の設定に使用され
るハッシュ関数は図85〜図94で説明したものと同じ
であるが、b3の設定に使用されるハッシュ関数は次に
示すものである。
【0236】(アイテム1の番号+アイテム2の番号+
アイテム3の番号)mod7 図115においては組み合わせ候補[379,2]、図
116においては[578,2]、図117においては
[789,2]が組み合わせ選択部Fに入力され、これ
らの組み合わせ候補はいずれもサポート条件を満たして
いるために、ラージアイテムセットL(3) の要素として
選択されると同時に、ビットマップへのビット設定が行
われる。
【0237】これに対して図118においての[15
8,1]、図119においての[128,1]、および
図示しない[189,1]の入力時においては、いずれ
もサポート条件を満たしていないために、ラージアイテ
ムセットの要素としての選択は行われず、ビットマップ
への設定も行われない。そしてこの処理の最終結果は図
119に示すものとなる。
【0238】図120〜図123は4つのアイテムの組
み合わせ候補の生成と、その数え上げ処理の説明図であ
るが、図120〜図123のいずれにおいても4つのア
イテムの組み合わせ候補は生成されず、組み合わせの数
え上げ処理は終了する。
【0239】相関分析の次の手法としての時系列分析へ
の本発明の応用について説明する。この時系列分析は、
長期間に渡る顧客の商品購入パターンの分析に利用され
る。顧客が第1のアイテムを購入した後に、所定の期間
内に第2のアイテムを購入する確率を相関ルールとして
知ることができれば、例えば小売業者はより効果的に在
庫管理を行うことができる。
【0240】図124は顧客の長期間に渡る商品購入パ
ターンとしてのシーケンスリストの説明図である。この
図で第1のシーケンスは、ある顧客がアイテム3を1個
だけ購入した後に、例えば次の日にアイテム8だけを購
入し、更にその1週間後にアイテム3と8とを1つずつ
購入したというような、商品購入の時系列パターンを示
している。
【0241】図124の説明において、1つのエレメン
トは前述のトランザクション、すなわち1枚のレシート
に対応し、例えばアイテム3と8が同じエレメントに属
するということは、アイテム3と8とが同一のレシート
に記録されていることを示す。
【0242】以下に説明する時系列分析においてはサポ
ートの最小値を40%とする。図124のシーケンスリス
トは5つのシーケンスによって構成されているために、
40%のサポートはアイテムの組み合わせの出現回数が2
以上であることを示す。
【0243】時系列分析における組み合わせ生成部C
(i) 、数え上げ部G(i) 、組み合わせ選択部F、および
ビットマップ生成部B(i) の動作を以下に説明する。 C(i) ・i=1の時:同一シーケンスに含まれるアイテムを1
つづつG(i) へ送る。
【0244】・i>2の時:同一シーケンスに含まれる
i個のアイテムの順列の内、ビットマップフィルタb
1,b2,..., b(i-1) により除外されないものをG
(i) へ送る。
【0245】G(i) i個のアイテムの順列を受け取り、後述するグループバ
イ処理を行い、その個数を付け加えたものを出力する。
【0246】F G(i) の出力を受け取り、個数が与えられた条件に合う
ものを長さiのラージシーケンスL(i) として出力す
る。
【0247】B(i) Fの出力を受け取り、ビットマップフィルタbj(1≦
j≦i)に対して、i個のアイテムの順列の中から、全
てのj個のアイテムの順列を取り出し、それぞれの順列
に対して、Hj(j個のアイテムの順列)で計算される
ビット位置に“1”を立てる操作を行う。
【0248】j個のアイテムの順列の内部表現は[アイ
テム1,..., アイテムj,セパレータ1,..., セパレー
タ(j-1) ]、セパレータk(1≦k≦j-1 )はアイテム
kとアイテム(k+1) が同じエレメントに属する場合は
0、異なるエレメントに属する場合は1となる。
【0249】ハッシュ関数Hjは、Hj(アイテム
1,..., アイテムj,セパレータ1,..., セパレータ(j
-1))=(アイテム1の番号+...,+アイテムjの番号+
セパレータ1+...,+セパレータ(j-1))modNとす
る。Nはビットマップのビット数を示す。
【0250】図125〜図129はシーケンスリストに
属するアイテム1個ずつの出現回数の数え上げ処理とし
てのG(1) までの処理の説明図である。図125〜図1
29において、それぞれのシーケンスリストに含まれる
アイテムが1個ずつG(1) によってカウントされ、最終
結果として図129が得られる。
【0251】図130〜図137は、図125〜図12
9で得られたアイテム1個ずつの出現回数のカウント値
に対応して、サポート値が40%以上のアイテムを選択し
てラージシーケンスL(1) を作成する処理と、同時にビ
ットマップb1を作成する処理の説明図である。例えば
図130において入力されるアイテム3はその個数が4
であり、サポートの最小値を満たしているためラージシ
ーケンスL(1) の要素とされ、同時にそのアイテム3は
ビットマップ生成部B(1) に与えられ、ビットマップb
1へのビット設定が行われる。ここでビットマップb1
のビット数は8である。
【0252】図131〜図134においては、組み合わ
せ選択部Fに入力されるアイテムの出現回数がサポート
値を満たしているため、それらのアイテムはラージシー
ケンスL(1) に追加されるが、図135〜図137で入
力されるアイテムの出現回数はサポート値以下であるた
めラージシーケンスL(1) への登録は行われず、この処
理の最終結果は図137となる。
【0253】図138〜図142は2個のアイテムの組
み合わせ候補の数え上げ処理の説明図である。図138
において、C(2) によって、ビットマップb1を用いた
フィルタリングによって落とされないアイテムを用いて
2つのアイテムの組み合わせ候補が生成され、その出現
回数がG(2) によってカウントされる。この組み合わせ
においては、シーケンスにおける順序があるため、また
同じエレメントに属するか否かによって、次の3つの組
み合わせ候補は別々のものとしてカウントされる。
【0254】<(3) (8) >,<(8) (3) >,<(3,8) > 図139〜図142において、同様にして2つのアイテ
ムの組み合わせ候補の数え上げが行われるが、例えば図
139においてアイテム1,2、および6はビットマッ
プb1によってフィルタリングされ、組み合わせ候補の
生成には使用されない。また、図142においてシーケ
ンスに含まれるアイテムは1個のみであるため、2個の
アイテムの組み合わせ候補は生成されず、図141が最
終結果となる。
【0255】図143〜図153は、図138〜図14
2において作成された2個のアイテムの組み合わせ候補
のうち、サポート値を満たすものによるラージシーケン
スL(2) の作成と、ビットマップ作成部B(2) によるビ
ットマップb1、およびb2生成の処理の説明図であ
る。図143において、組み合わせ選択部Fに入力され
る2個のアイテムの組み合わせ候補はサポート値を満た
しているため、ラージシーケンスL(2) の要素とされ、
2つのアイテム3,8に対してハッシュ関数H1、およ
びH2を用いてビットマップb1、およびb2のビット
設定処理が行われる。
【0256】図144〜図147、図151〜図153
において入力される組み合わせ候補はサポート値を満た
していないため、ラージシーケンスへの登録、およびビ
ットマップのビット設定は行われない。
【0257】これに対して、図148〜図150におい
て組み合わせ生成部Fに入力される組み合わせ候補はサ
ポート値を満たしているため、ラージシーケンスL(2)
への登録と、ビットマップのビット設定処理が行われ、
この処理の最終結果は図153となる。
【0258】図154〜図158は、3個のアイテムの
組み合わせ候補のG(3) によるカウント処理などの説明
図である。図154において最初のシーケンスが組み合
わせ生成部C(3) に入力されるが、このシーケンスから
生成される3個のアイテムの組み合わせ候補はいずれも
ビットマップb2によってフィルタリングされ、G(3)
には入力されない。
【0259】図155、および図157において、組み
合わせ生成部C(3) によって生成される3個のアイテム
の組み合わせ候補1種類だけがそれぞれG(3) によって
カウントされる。図156および図158においては、
G(3) に入力される組み合わせ候補は存在せず、この処
理の最終結果は図158となる。
【0260】図159は、図154〜図158において
作成された3個のアイテムの組み合わせ候補のうちサポ
ート値を満足するものをラージシーケンスL(3) に登録
し、同時にビットマップb1、およびb3へビット設定
を行う処理の説明図である。3個のアイテムの組み合わ
せ候補は1種類のみであり、組み合わせ生成部Fによっ
てこの組み合わせ候補がラージシーケンスL(3) とさ
れ、またこの組み合わせ候補の中のアイテムを用いてビ
ットマップb1、およびb3の設定が行われる。ラージ
シーケンスL(3) の要素数は1個のみとなるため、組み
合わせの数え上げ処理はここで終了する。
【0261】図160は、従来技術の図168および図
170におけると同じトランザクションリストを用い
て、本発明における基本相関分析のためのアイテム組み
合わせの数え上げ処理の流れを説明したものである。図
160においては、例えばラージアイテムセットL1に
対応して作成されるビットマップb1を用いて、トラン
ザクションリストから組み合わせ生成部C(2) によって
フィルタリングされないアイテム2個の組み合わせ候補
が生成され、数え上げ部G(2) に与えられる点に本発明
の基本的な特徴がある。
【0262】このビットマップを生成する処理は簡単な
ものであり、またビットマップの容量は利用できるメモ
リ量にフィットするサイズにすることが常に可能である
ため、図168における結合処理の処理量が大きいとい
う問題点や、図170におけるハッシュ木の容量が利用
できるメモリ量よりも大きくなる場合があるというよう
な問題点を解決することが可能である。
【0263】以上において本発明のデータ組み合わせの
数え上げ方式の全体的処理の説明を終了し、次に組み合
わせの出現回数数え上げ部G(i) において実行されるグ
ループバイ処理について説明する。
【0264】アイテムの組み合わせ候補の数え上げには
本発明におけるグループバイ処理方式が用いられるが、
その処理について具体例を用いて以下に説明する。アイ
テムが1個のみのときにその出現回数を数え上げる場合
には、アイテム番号をレコードのキー値と考えることに
よって、前述のグループバイ処理方式をそのまま用いる
ことができるため、ここでは2個のアイテムの組み合わ
せ候補の数え上げを具体例として説明する。またグルー
プバイ処理の方式としては、前述の第1の実施例と同様
にまずハッシュ処理によってハッシュ済みリストと補助
情報リストを作成した後に、グループバイ関数処理とし
て同じキーの値を持つレコードの数え上げを行う場合を
説明する。
【0265】入力レコードは次の16件であり、それぞれ
のレコードはアイテムの番号を2つ持っており、その2
つのアイテム番号によってハッシュ処理、およびソート
処理におけるキーが決定されるものとする。
【0266】[12][14][24][26][1
4][15][16][45][46][56][1
2][14][15][24][25][45] このような場合のキーの比較方法としては種々考えられ
るが、ここでは一例として辞書順を用いることにする。
すなわち2つのレコードを比較する時、まず1番目のア
イテム番号で比較して大小がつけばそのままレコードの
キーの大小関係とし、1番目のアイテム番号が等しけれ
ば2番目のアイテム番号を比較して、大小がつけばその
ままキーの大小関係とし、2番目のアイテム番号も等し
ければ更に3番目のアイテム番号を比較するというよな
比較を続け、最後のアイテム番号まで等しければ2つの
レコードのキーの値は等しいとする。そこで例えば[1
2]と[14]とは、1番目のアイテム番号は等しい
が、2番目のアイテム番号で比較することにより、[1
2]より[14]の方がキーの値が大きいとすることが
できる。
【0267】ハッシュ関数としては適当なものを選んで
使用することができるが、ここではハッシュ関数の一例
として、次式のようにアイテム番号の総和に対して、3
で割った時の剰余をとることにする。つまり[12]の
ハッシュ値は(1+2)mod3=0で0となり、[1
4]のハッシュ値は(1+4)mod3=2で2とな
る。
【0268】
【数1】
【0269】ここでIk はアイテム番号、Rはレコード
[I1,I2,...,Ii ] 前述のグループバイ処理方式の第1の実施例と同様に、
16件の入力レコードからまずハッシュ済みリストが生成
される。この時図3のハッシュ表15の大きさは3、レ
コードバッファ14は4つ分のレコードの格納領域を持
ち、ハッシュ済みリスト用出力バッファ18は3つのレ
コードを格納できるものとする。
【0270】図161はハッシュ済みリスト生成処理の
経過の説明図である。同図においては、図3の入力バッ
ファ13からレコードバッファ14へのレコードの入力
と、レコードバッファ14からハッシュ済みリスト用出
力バッファ18へのレコードの出力の経過が示されてい
る。図8におけると同様に、1つのレコードが入力され
る時、すでに同じハッシュ値を持つレコードがハッシュ
表のそのハッシュ値の領域からポイントされている時に
は、新しく入力されるレコードがハッシュ表からポイン
トされ、すでに入力されているレコードはリンク管理表
によって管理される。
【0271】図162は、図161の処理結果としての
ハッシュ済みリストである。図161と比較することに
より、ランとしてはブロック番号0〜2のランと、ブロ
ック番号3〜5の2本のランが得られることが分かる。
【0272】次に補助情報リストとしては[ブロック番
号、先頭レコードのハッシュ値、末尾レコードのハッシ
ュ値]の形を用いるものとすると、次のような補助情報
リストが得られる。この補助情報リストの形式はiの値
によっては変化しない。
【0273】[0,0,0][1,1,2][2,2,
2][3,0,0][4,0,1][5,1,1] 補助情報リストのソートによって、例えば次のようにソ
ートされた補助情報リストが得られる。このソートの方
式もiの値によっては変化しないものとする。
【0274】[0,0,0][3,0,0][4,0,
1][5,1,1][1,1,2][2,2,2] このソートされた補助情報リストをもとに、図19のグ
ループバイ関数処理が行われるが、まず図18における
最小ハッシュ値レコード取り出し装置33による処理を
図163に示す。ここではラン数分のハッシュ済みリス
ト用入力バッファは2個であり、2個のバッファにソー
トされた補助情報リスト30の順番に従って入力された
レコードから最小ハッシュ値のレコードが1つずつ取り
出され、最終的な結果は次のようになる。
【0275】[24][12][15][45][4
5][15][24][12][25][16][4
6][14][26][56][14][14] この最小ハッシュ値レコード取り出し装置33による処
理結果を、ハッシュ値毎に分けると次のようになる。
【0276】ハッシュ値0:[24][12][15]
[45][45][15][24][12] ハッシュ値1:[25][16][46] ハッシュ値2:[14][26][56][14][1
4] このようにハッシュ値が等しいレコードに対しては、図
18のソート装置34によるソート処理が行われ、その
結果がグループバイ関数演算処理装置35に送られ、数
え上げが実行される。このソートでは、前述した辞書式
順序を用いることにする。図19では、ハッシュ値0の
レコードが取り出されなくなった時点でハッシュ値0の
レコードのソートが行われ、ハッシュ値1のレコードが
取り出されなくなった時点でハッシュ値1のレコードの
ソートが行われる。このような動作が最後まで繰り返さ
れ、出力されるレコードは[キー値,個数]の形式で表
される。キー値はここでは2つのアイテム番号からな
る。
【0277】まずハッシュ値()のレコードのソートが行
われ、 [12][12][15][15][24][24]
[45][45] というソート結果が得られ、次にグループバイ関数演算
処理装置35にソート結果が送られ、 [12,2][15,2][24,2][45,2] が得られる。次にハッシュ値1のレコードのソートが行
われ、 [16][25][46] というソート結果が得られ、次にグループバイ関数演算
処理装置35にソート結果が送られ、 [16,1][25,1][46,1] が得られる。最後にハッシュ値2のレコードのソートが
行われ、 [14][14][26][56] というソート結果が得られ、次にグループバイ関数演算
処理装置35にソート結果が送られ、 [14,3][26,1][56,1] という結果が得られる。
【0278】全体では、 [12,2][15,2][24,2][45,2]
[16,1][25,1][46,1][14,3]
[26,1][56,1] という結果が得れる。
【0279】以上において、本発明におけるグループバ
イ処理方式と、このグループバイ処理方式を利用したデ
ータ組み合わせ数え上げ方式について実施例を詳細に説
明したが、本発明の実施例は以上の記述のみに限定され
ることはなく、特許請求の範囲の記載に適合する範囲
で、様々な他の実施の形態を取ることができることは当
然である。
【0280】
【発明の効果】以上詳細に説明したように、本発明のグ
ループバイ処理においては、二次記憶装置に対するアク
セスをできるだけ連続的にするために、比較的大きなブ
ロック単位でのデータの逐次読み出しと逐次書き込みを
行うことによってハッシュ処理を高速化し、そのハッシ
ュ処理の結果を用いたグループバイ処理を実行すること
により、全体としての高速化が可能となる。次に、本発
明のデータ組み合わせ数え上げ方式においては、不必要
なアイテムの組み合わせ候補のプルーニングのためにメ
モリ使用量を小さくできるビットマップを用いることに
より、利用可能なメモリ量が小さい場合にもプルーニン
グが効率よく行え、更にアイテムセットを数え上げるグ
ループバイ処理を高速化することによって、組み合わせ
の数え上げを効率的に実行することが可能になる。本発
明のデータ組み合わせ数え上げ方式を、データベースの
マイニング手法としての相関ルールの生成処理に応用す
ることによって、データベースマイニングの効率化に寄
与するところが大きい。
【図面の簡単な説明】
【図1】本発明におけるグループバイ処理方式の原理構
成を示すブロック図である。
【図2】本発明における相関のあるデータ組み合わせの
数え上げ方式の原理構成を示すブロック図である。
【図3】グループバイ処理方式の第1の実施例における
ハッシュ処理を説明する図である。
【図4】グループバイ処理方式の第1の実施例における
ハッシュ処理の全体フローチャートである。
【図5】図4における出力処理の詳細フローチャートで
ある。
【図6】図4における終了処理の詳細フローチャートで
ある。
【図7】図5、図6における出力バッファ出力処理の詳
細フローチャートである。
【図8】グループバイ処理方式の第1の実施例における
ハッシュ処理の経過を示す図である。
【図9】グループバイ処理方式の第1の実施例における
ハッシュ処理の結果として得られるハッシュ済リストを
示す図である。
【図10】グループバイ処理方式の第2の実施例におけ
るハッシュ処理の説明図である。
【図11】グループバイ処理方式の第2の実施例におけ
る出力バッファ出力処理の詳細フローチャートである。
【図12】補助情報リストソート処理(第1の方法)の
フローチャートである。
【図13】補助情報リストソート処理(第2の方法)の
フローチャートである。
【図14】補助情報リストソート処理(第3の方法)の
フローチャートである。
【図15】補助情報リストソート処理(第4の方法)の
フローチャートである。
【図16】補助情報リストソート処理(第5の方法)の
フローチャートである。
【図17】補助情報リストソート処理(第6の方法)の
フローチャートである。
【図18】グループバイ処理方式の第1および第2の実
施例におけるグループバイ関数処理の全体説明図であ
る。
【図19】グループバイ処理方式の第1および第2の実
施例におけるグループバイ関数処理の全体フローチャー
トである。
【図20】図19におけるグループバイ関数演算処理の
詳細フローチャートである。
【図21】グループバイ処理方式の第3の実施例におけ
るハッシュ処理の説明図である。
【図22】グループバイ処理方式の第3の実施例におけ
る出力バッファ出力処理の詳細フローチャートである。
【図23】グループバイ処理方式の第3の実施例におけ
るグループバイ関数処理の全体説明図である。
【図24】グループバイ処理方式の第3の実施例におけ
るグループバイ関数処理の全体フローチャートである。
【図25】グループバイ処理方式の第4の実施例におけ
るハッシュ処理の説明図である。
【図26】グループバイ処理方式の第4の実施例のハッ
シュ処理における出力処理の詳細フローチャートであ
る。
【図27】グループバイ処理方式の第4の実施例のハッ
シュ処理における終了処理の詳細フローチャートであ
る。
【図28】図26、図27における出力バッファ出力処
理の詳細フローチャートである。
【図29】グループバイ処理方式の第4の実施例におい
てハッシュ済レコード出力領域が非連続である場合の出
力処理の詳細フローチャートである。
【図30】グループバイ処理方式の第4の実施例におい
てハッシュ済レコード出力領域が非連続である場合の出
力結果の例を示す図である。
【図31】グループバイ処理方式の第4の実施例におけ
るグループバイ関数処理の全体説明図である。
【図32】グループバイ処理方式の第4の実施例におけ
るグループバイ関数処理の全体フローチャートである。
【図33】グループバイ処理方式の第5の実施例におけ
るハッシュ処理の説明図である。
【図34】グループバイ処理方式の第5の実施例のハッ
シュ処理における出力バッファ出力処理の詳細フローチ
ャートである。
【図35】グループバイ処理方式の第5の実施例におけ
るグループバイ関数処理の全体説明図である。
【図36】グループバイ処理方式の第5の実施例におけ
るグループバイ関数処理の全体フローチャートである。
【図37】具体的データを用いた本発明におけるグルー
プバイ処理方式の実施例の全体説明図である。
【図38】図37におけるハッシュ処理装置の構成を示
すブロック図である。
【図39】具体例を用いた本発明におけるグループバイ
処理方式の全体処理フローチャートである。
【図40】具体的なデータを用いたハッシュ処理のフロ
ーチャートである。
【図41】具体的なデータを用いたグループバイ処理の
全体フローチャートである。
【図42】図41におけるカウント処理の詳細フローチ
ャートである。
【図43】具体的なデータを用いたハッシュ処理の経過
の説明図である。
【図44】具体的なデータを用いたグループバイ処理方
式の第1の実施例に対応する最小ハッシュ値レコード取
り出しの経過の説明図である。
【図45】具体的なデータを用いたグループバイ処理方
式の第4の実施例に対応する最小ハッシュ値レコード取
り出しの経過の説明図である。
【図46】本発明のデータ組み合わせ数え上げ方式の実
施例の構成を説明する図である。
【図47】本発明のデータ組み合わせ数え上げ方式の全
体処理フローチャートである。
【図48】ラージアイテムセット生成処理のフローチャ
ートである。
【図49】長さ1のアイテムの組み合わせ候補の生成C
(1) とその数え上げG(1) とを説明する図(その1)で
ある。
【図50】長さ1のアイテムの組み合わせ候補の生成C
(1) とその数え上げG(1) とを説明する図(その2)で
ある。
【図51】長さ1のアイテムの組み合わせ候補の生成C
(1) とその数え上げG(1) とを説明する図(その3)で
ある。
【図52】長さ1のアイテムの組み合わせ候補の生成C
(1) とその数え上げG(1) とを説明する図(その4)で
ある。
【図53】長さ1のラージアイテムセットL(1) の選択
を説明する図(その1)である。
【図54】長さ1のラージアイテムセットL(1) の選択
を説明する図(その2)である。
【図55】長さ1のラージアイテムセットL(1) の選択
を説明する図(その3)である。
【図56】長さ1のラージアイテムセットL(1) の選択
を説明する図(その4)である。
【図57】長さ1のラージアイテムセットL(1) の選択
を説明する図(その5)である。
【図58】長さ1のラージアイテムセットL(1) の選択
を説明する図(その6)である。
【図59】長さ2のアイテムの組み合わせ候補数え上げ
G(2) までの処理を説明する図(その1)である。
【図60】長さ2のアイテムの組み合わせ候補数え上げ
G(2) までの処理を説明する図(その2)である。
【図61】長さ2のアイテムの組み合わせ候補数え上げ
G(2) までの処理を説明する図(その3)である。
【図62】長さ2のアイテムの組み合わせ候補数え上げ
G(2) までの処理を説明する図(その4)である。
【図63】長さ2のラージアイテムセットL(2) の選択
を説明する図(その1)である。
【図64】長さ2のラージアイテムセットL(2) の選択
を説明する図(その2)である。
【図65】長さ2のラージアイテムセットL(2) の選択
を説明する図(その3)である。
【図66】長さ2のラージアイテムセットL(2) の選択
を説明する図(その4)である。
【図67】長さ2のラージアイテムセットL(2) の選択
を説明する図(その5)である。
【図68】長さ2のラージアイテムセットL(2) の選択
を説明する図(その6)である。
【図69】長さ2のラージアイテムセットL(2) の選択
を説明する図(その7)である。
【図70】長さ2のラージアイテムセットL(2) の選択
を説明する図(その8)である。
【図71】長さ2のラージアイテムセットL(2) の選択
を説明する図(その9)である。
【図72】長さ2のラージアイテムセットL(2) の選択
を説明する図(その10)である。
【図73】長さ3のアイテムの組み合わせ候補数え上げ
G(3) までの処理を説明する図(その1)である。
【図74】長さ3のアイテムの組み合わせ候補数え上げ
G(3) までの処理を説明する図(その2)である。
【図75】長さ3のアイテムの組み合わせ候補数え上げ
G(3) までの処理を説明する図(その3)である。
【図76】長さ3のアイテムの組み合わせ候補数え上げ
G(3) までの処理を説明する図(その4)である。
【図77】長さ3のラージアイテムセットL(3) の選択
を説明する図(その1)である。
【図78】長さ3のラージアイテムセットL(3) の選択
を説明する図(その2)である。
【図79】長さ3のラージアイテムセットL(3) の選択
を説明する図(その3)である。
【図80】階層相関分析に用いられるデータの階層構造
の具体例を示す図である。
【図81】階層相関分析におけるG(1) までの処理を説
明する図(その1)である。
【図82】階層相関分析におけるG(1) までの処理を説
明する図(その2)である。
【図83】階層相関分析におけるG(1) までの処理を説
明する図(その3)である。
【図84】階層相関分析におけるG(1) までの処理を説
明する図(その4)である。
【図85】階層相関分析におけるL(1) の選択を説明す
る図(その1)である。
【図86】階層相関分析におけるL(1) の選択を説明す
る図(その2)である。
【図87】階層相関分析におけるL(1) の選択を説明す
る図(その3)である。
【図88】階層相関分析におけるL(1) の選択を説明す
る図(その4)である。
【図89】階層相関分析におけるL(1) の選択を説明す
る図(その5)である。
【図90】階層相関分析におけるL(1) の選択を説明す
る図(その6)である。
【図91】階層相関分析におけるL(1) の選択を説明す
る図(その7)である。
【図92】階層相関分析におけるL(1) の選択を説明す
る図(その8)である。
【図93】階層相関分析におけるL(1) の選択を説明す
る図(その9)である。
【図94】階層相関分析におけるL(1) の選択を説明す
る図(その10)である。
【図95】階層相関分析におけるG(2) までの処理を説
明する図(その1)である。
【図96】階層相関分析におけるG(2) までの処理を説
明する図(その2)である。
【図97】階層相関分析におけるG(2) までの処理を説
明する図(その3)である。
【図98】階層相関分析におけるG(2) までの処理を説
明する図(その4)である。
【図99】階層相関分析におけるL(2) の選択を説明す
る図(その1)である。
【図100】階層相関分析におけるL(2) の選択を説明
する図(その2)である。
【図101】階層相関分析におけるL(2) の選択を説明
する図(その3)である。
【図102】階層相関分析におけるL(2) の選択を説明
する図(その4)である。
【図103】階層相関分析におけるL(2) の選択を説明
する図(その5)である。
【図104】階層相関分析におけるL(2) の選択を説明
する図(その6)である。
【図105】階層相関分析におけるL(2) の選択を説明
する図(その7)である。
【図106】階層相関分析におけるL(2) の選択を説明
する図(その8)である。
【図107】階層相関分析におけるL(2) の選択を説明
する図(その9)である。
【図108】階層相関分析におけるL(2) の選択を説明
する図(その10)である。
【図109】階層相関分析におけるL(2) の選択を説明
する図(その11)である。
【図110】階層相関分析におけるG(3) までの処理を
説明する図(その1)である。
【図111】階層相関分析におけるG(3) までの処理を
説明する図(その2)である。
【図112】階層相関分析におけるG(3) までの処理を
説明する図(その3)である。
【図113】階層相関分析におけるG(3) までの処理を
説明する図(その4)である。
【図114】階層相関分析におけるL(3) の選択を説明
する図(その1)である。
【図115】階層相関分析におけるL(3) の選択を説明
する図(その2)である。
【図116】階層相関分析におけるL(3) の選択を説明
する図(その3)である。
【図117】階層相関分析におけるL(3) の選択を説明
する図(その4)である。
【図118】階層相関分析におけるL(3) の選択を説明
する図(その5)である。
【図119】階層相関分析におけるL(3) の選択を説明
する図(その6)である。
【図120】階層相関分析におけるG(4) までの処理を
説明する図(その1)である。
【図121】階層相関分析におけるG(4) までの処理を
説明する図(その2)である。
【図122】階層相関分析におけるG(4) までの処理を
説明する図(その3)である。
【図123】階層相関分析におけるG(4) までの処理を
説明する図(その4)である。
【図124】時系列分析におけるシーケンスリストの例
を説明する図である。
【図125】時系列分析におけるG(1) までの処理を説
明する図(その1)である。
【図126】時系列分析におけるG(1) までの処理を説
明する図(その2)である。
【図127】時系列分析におけるG(1) までの処理を説
明する図(その3)である。
【図128】時系列分析におけるG(1) までの処理を説
明する図(その4)である。
【図129】時系列分析におけるG(1) までの処理を説
明する図(その5)である。
【図130】時系列分析におけるL(1) の選択を説明す
る図(その1)である。
【図131】時系列分析におけるL(1) の選択を説明す
る図(その2)である。
【図132】時系列分析におけるL(1) の選択を説明す
る図(その3)である。
【図133】時系列分析におけるL(1) の選択を説明す
る図(その4)である。
【図134】時系列分析におけるL(1) の選択を説明す
る図(その5)である。
【図135】時系列分析におけるL(1) の選択を説明す
る図(その6)である。
【図136】時系列分析におけるL(1) の選択を説明す
る図(その7)である。
【図137】時系列分析におけるL(1) の選択を説明す
る図(その8)である。
【図138】時系列分析におけるG(2) までの処理を説
明する図(その1)である。
【図139】時系列分析におけるG(2) までの処理を説
明する図(その2)である。
【図140】時系列分析におけるG(2) までの処理を説
明する図(その3)である。
【図141】時系列分析におけるG(2) までの処理を説
明する図(その4)である。
【図142】時系列分析におけるG(2) までの処理を説
明する図(その5)である。
【図143】時系列分析におけるL(2) の選択を説明す
る図(その1)である。
【図144】時系列分析におけるL(2) の選択を説明す
る図(その2)である。
【図145】時系列分析におけるL(2) の選択を説明す
る図(その3)である。
【図146】時系列分析におけるL(2) の選択を説明す
る図(その4)である。
【図147】時系列分析におけるL(2) の選択を説明す
る図(その5)である。
【図148】時系列分析におけるL(2) の選択を説明す
る図(その6)である。
【図149】時系列分析におけるL(2) の選択を説明す
る図(その7)である。
【図150】時系列分析におけるL(2) の選択を説明す
る図(その8)である。
【図151】時系列分析におけるL(2) の選択を説明す
る図(その9)である。
【図152】時系列分析におけるL(2) の選択を説明す
る図(その10)である。
【図153】時系列分析におけるL(2) の選択を説明す
る図(その11)である。
【図154】時系列分析におけるG(3) までの処理を説
明する図(その1)である。
【図155】時系列分析におけるG(3) までの処理を説
明する図(その2)である。
【図156】時系列分析におけるG(3) までの処理を説
明する図(その3)である。
【図157】時系列分析におけるG(3) までの処理を説
明する図(その4)である。
【図158】時系列分析におけるG(3) までの処理を説
明する図(その5)である。
【図159】時系列分析におけるL(3) の選択を説明す
る図である。
【図160】基本相関分析における本発明の処理の流れ
を説明する図である。
【図161】アイテム組み合わせ数え上げ処理における
ハッシュ済みリスト生成処理の経過を説明する図であ
る。
【図162】図161の処理結果としてのハッシュ済み
リストを示す図である。
【図163】図162のハッシュ済みリストに対する最
小ハッシュ値レコード取り出し処理の経過を示す図であ
る。
【図164】ソート処理に基づくグループバイ処理の従
来例のフローチャートである。
【図165】図164のフローチャートを用いた具体的
な処理経過の説明図である。
【図166】ハッシュ処理に基づくグループバイ処理の
従来例のフローチャートである。
【図167】図166のフローチャートを用いた具体的
な処理経過の説明図である。
【図168】SETMアルゴリズムにおける具体的な処
理の流れを説明する図である。
【図169】SETMアルゴリズムの処理における各機
能ブロック処理内容を示す図である。
【図170】アプリオリ・アルゴリズムにおける具体的
な処理の流れを説明する図である。
【図171】アプリオリ・アルゴリズムの処理における
各機能ブロックの内容を説明する図である。
【符号の説明】
1 組み合わせ生成部 2 出現回数数え上げ部 3 組み合わせ選択部 4 ビットマップ生成部 5,6 ビットマップ 11 ハッシュ対象リスト 12 処理装置 13 入力バッファ 14 レコードバッファ 15 ハッシュ表 16 リンク管理表 17 出力ハッシュ値メモリ 18 ハッシュ済リスト用出力バッファ 19 補助情報リスト用出力バッファ 20 出力ブロック数カウンタ 21 ハッシュ済リスト 22 補助情報リスト 23 ラン情報メモリ 24 ラン番号メモリ 30 ソートされた補助情報リスト 31 ソートされた補助情報リスト用入力バッファ 32a〜32n ハッシュ済リスト用入力バッファ 33 最小ハッシュ値レコード取り出し装置 34 ハッシュ値が等しいレコード群のソート装置 35 グループバイ関数演算処理装置 36a〜36n ハッシュ済レコード用入力バッファ 38 ハッシュ済レコード用出力バッファ 40,41 ハッシュ済レコード出力領域
───────────────────────────────────────────────────── フロントページの続き (72)発明者 武 理一郎 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内 (72)発明者 荻原 一隆 神奈川県川崎市中原区上小田中4丁目1番 1号 富士通株式会社内

Claims (50)

    【特許請求の範囲】
  1. 【請求項1】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によって該記憶装置上に
    出力されたハッシュ済レコードのリストを読み込み、該
    リストのレコードをキー値に従ってソートし、該ソート
    済レコードのリストに対してグループバイ処理を実行す
    るグループバイ処理実行手段とを備えることを特徴とす
    るグループバイ処理方式。
  2. 【請求項2】 前記グループバイ処理方式において、 前記ハッシュ済レコード出力手段が、前記レコード格納
    手段から前記ハッシュ関数の値に対応して出力された複
    数のレコードを1つのブロックとして前記記憶装置に出
    力すると共に、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを格納する補助
    情報リスト格納手段を更に備えることを特徴とする請求
    項1記載のグループバイ処理方式。
  3. 【請求項3】 前記グループバイ処理実行手段が、前記
    複数のレコードを1つのブロックとして前記ハッシュ済
    レコード出力手段によって出力され、ハッシュ関数値に
    対応したレコード列としてのハッシュ済リスト、前記補
    助情報リスト格納手段に格納されている補助情報のリス
    トとを用いてグループバイ処理を実行することを特徴と
    する請求項2記載のグループバイ処理方式。
  4. 【請求項4】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式におけるハッシュ方式であって、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されるハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置上で必ずしも連続でない領域に出力するハッシュ済
    レコード出力手段とを備えることを特徴とするハッシュ
    方式。
  5. 【請求項5】 前記ハッシュ済レコード出力手段が、前
    記レコード格納手段から前記ハッシュ関数値に対応して
    出力された複数のレコードを1つのブロックとして、前
    記記憶装置に出力すると共に、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを格納する補助
    情報リスト格納手段を更に備えることを特徴とする請求
    項4記載のハッシュ方式。
  6. 【請求項6】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    に基づいてグループバイ処理を行うグループバイ処理方
    式において、 前記ハッシュ処理の結果として得られ、前記記憶装置上
    で必ずしも連続でない領域に格納されたハッシュ関数値
    に対応したレコード列としてのハッシュ済リストと、該
    ハッシュ関数値に対応して格納された複数のレコードか
    らなるブロック内のレコードを、ハッシュ関数値により
    検索可能とするための補助情報のリストとを用いてグル
    ープバイ処理を実行するグループバイ処理実行手段を備
    えることを特徴とするグループバイ処理方式。
  7. 【請求項7】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置上で必ずしも連続でない領域に出力する手段であっ
    て、前記レコード格納手段から前記ハッシュ関数値に対
    応して出力された複数のレコードを1つのブロックとし
    て、該1つのブロックが前記記憶装置上で連続した領域
    に格納される形式で出力するハッシュ済レコード出力手
    段と、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを格納する補助
    情報リスト格納手段と、 前記ハッシュ関数値に対応して前記ハッシュ済レコード
    出力手段によって出力されたハッシュ済レコード列と、
    前記補助情報リスト格納手段に格納されている補助情報
    のリストとを用いてグループバイ処理を実行するグルー
    プバイ処理実行手段とを備えることを特徴とするグルー
    プバイ処理方式。
  8. 【請求項8】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式におけるハッシュ方式であって、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段とを備えることを特徴と
    するハッシュ方式。
  9. 【請求項9】 前記ハッシュ済レコード出力手段が、前
    記ポインタによって指示されるレコードを前記記憶装置
    に出力するにあたり、前記1つのランに含まれるレコー
    ドを該記憶装置上の連続領域に出力すると共に、異なる
    ランのレコードは必ずしも互いに連続でない領域に格納
    することを特徴とする請求項8記載のハッシュ方式。
  10. 【請求項10】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 前記ハッシュ処理の結果として得られるハッシュ関数値
    に対応したレコードが前記記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ハッシュ関数値に対
    応したレコードの格納にあたりハッシュ関数値を最小値
    から最大値まで連続的に変化させる間に格納されるラン
    のそれぞれに含まれるレコードの前記記憶装置上の格納
    アドレスを示すラン情報とを用いてグループバイ処理を
    実行するグループバイ処理実行手段を備えることを特徴
    とするグループバイ処理方式。
  11. 【請求項11】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段と、 該ハッシュ済レコード出力手段によって出力されたレコ
    ードが前記記憶装置上で格納されているハッシュ済レコ
    ード列の内容と、該ラン情報格納手段に格納されている
    ラン情報とを用いてグループバイ処理を実行するグルー
    プバイ処理実行手段を備えることを特徴とするグループ
    バイ処理方式。
  12. 【請求項12】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力する手段であって、ハッシュ関数値を最小値
    から最大値まで連続的に変化させる間に出力されるラン
    のそれぞれに含まれるレコードを該記憶装置上に連続領
    域に出力すると共に、異なるランのレコードは必ずしも
    互いに連続でない領域に格納するハッシュ済レコード出
    力手段と、 該ランのそれぞれに含まれるレコードの該記憶装置上の
    格納アドレスを示すラン情報を格納するラン情報格納手
    段と、 該ハッシュ済レコード出力手段によって出力されたレコ
    ードが該記憶装置上で格納されているハッシュ済レコー
    ド列の内容と、該ラン情報格納手段に格納されているラ
    ン情報とを用いてグループバイ処理を実行するグループ
    バイ処理実行手段を備えることを特徴とするグループバ
    イ処理方式。
  13. 【請求項13】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式におけるハッシュ方式であって、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて、前記記
    憶装置上で必ずしも連続でない領域に出力する手段であ
    って、それぞれ複数のレコードからなる2つの連続すべ
    きブロックがそれぞれ独立の連続領域であって、相互に
    非連続である領域に格納される時、該2つのブロックの
    連結関係を示すデータを加えてレコードの出力を行うハ
    ッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段とを備えることを特徴と
    するハッシュ方式。
  14. 【請求項14】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 前記ハッシュ処理の結果として得られるハッシュ関数値
    に対応したレコードが前記記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ハッシュ関数値に対
    応したレコードの該記憶装置への出力にあたり、ハッシ
    ュ関数値を最小値から最大値まで連続的に変化させる間
    に出力されるランのそれぞれに含まれるレコードの前記
    記憶装置上の格納アドレスを示すラン情報と、それぞれ
    複数のレコードからなる2つの連続すべきブロックがそ
    れぞれ独立の連続領域に格納され、該2つの連続領域が
    相互に非連続となってい、該2つのブロックの連結関係
    を示すデータとに基づいてグループバイ処理を実行する
    グループバイ処理実行手段を備えることを特徴とするグ
    ループバイ処理方式。
  15. 【請求項15】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて、前記記
    憶装置上で必ずしも連続でない領域に出力する手段であ
    って、それぞれ複数のレコードからなる2つの連続すべ
    きブロックがそれぞれ独立の連続領域であって、相互に
    非連続である領域に格納される時、該2つのブロックの
    連結関係を示すデータを加えてレコードの出力を行うハ
    ッシュ済レコード出力手段と、該ハッシュ済レコード出
    力手段によるレコードの出力にあたり、ハッシュ関数 値を最小値から最大値まで連続的に変化させる間に出力
    されるランのそれぞれに含まれるレコードの前記記憶装
    置上の格納アドレスを示すラン情報を格納するラン情報
    格納手段と、 前記ハッシュ済レコード出力手段によって出力され、ハ
    ッシュ関数値に対応したレコードが前記記憶装置上で格
    納されているハッシュ済レコード列の内容と、前記ラン
    情報格納手段に格納されているラン情報と、前記2つの
    ブロックの連結関係を示すデータとに基づいてグループ
    バイ処理を実行するグループバイ処理実行手段を備える
    ことを特徴とするグループバイ処理方式。
  16. 【請求項16】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能と、 該記憶装置上に出力されたハッシュ済レコードのリスト
    を読み込み、該リストのレコードをキー値に従ってソー
    トし、該ソート済レコードリストに対してグループバイ
    処理を実行する機能とを計算機に実行させるためのプロ
    グラムを格納した記憶媒体。
  17. 【請求項17】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置上で必ずしも連続でない領域に出力する機能で
    あって、 前記ハッシュ関数値に対応して出力されるべき複数のレ
    コードを1つのブロックとして、該1つのブロックが前
    記記憶装置上で連続した領域に格納される形式で出力す
    る機能と、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを記憶する機能
    と、 前記ハッシュ関数値に対応して前記記憶装置に出力され
    たハッシュ済レコード列と、前記補助情報のリストとを
    用いてグループバイ処理を実行する機能とを計算機に実
    行させるためのプログラムを格納した記憶媒体。
  18. 【請求項18】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能と、 該記憶装置へのレコードの出力にあたり、ハッシュ関数
    値を最小値から最大値まで連続的に変化させる間に出力
    されるランのそれぞれに含まれるレコードの前記記憶装
    置上の格納アドレスを示すラン情報を記憶する機能と、 該出力されたレコードが前記記憶装置上で格納されてい
    るハッシュ済レコード列の内容と、前記ラン情報とを用
    いてグループバイ処理を実行する機能とを計算機に実行
    させるためのプログラムを格納した記憶媒体。
  19. 【請求項19】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能であって、ハッシュ関数値を最
    小値から最大値まで連続的に変化させる間に出力される
    ランのそれぞれに含まれるレコードを該記憶装置上の連
    続領域に出力すると共に、異なるランのレコードは必ず
    しも互いに連続でない領域に出力する機能と、 該ランのそれぞれに含まれるレコードの該記憶装置上の
    格納アドレスを示すラン情報を記憶する機能と、 該出力されたレコードが該記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ラン情報とを用いて
    グループバイ処理を実行する機能とを計算機に実行させ
    るためのプログラムを格納した記憶媒体。
  20. 【請求項20】 記憶装置に格納されているレコード群
    を、各レコードのキー値に対応するハッシュ関数値を用
    いて参照可能な格納形式に変換するためのハッシュ処理
    の結果に基づいてグループバイ処理を行うグループバイ
    処理方式において、 該レコード群を一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて、前
    記記憶装置上で必ずしも連続でない領域に出力する機能
    であって、それぞれ複数のレコードからなる2つの連続
    すべきブロックがそれぞれ独立の連続領域であって、相
    互に非連続である領域に格納される時、該2つのブロッ
    クの連結関係を示すデータを加えてレコードの出力を行
    う機能と、 該レコードの出力にあたり、ハッシュ関数値を最小値か
    ら最大値まで連続的に変化させる間に出力されるランの
    それぞれに含まれるレコードの前記記憶装置上の格納ア
    ドレスを示すラン情報を記憶する機能と、 前記ハッシュ関数値に対応したレコードが前記記憶装置
    上で格納されているハッシュ済レコード列の内容と、前
    記ラン情報と、前記2つのブロックの連結関係を示すデ
    ータとに基づいて、グループバイ処理を実行する機能と
    を計算機に実行させるためのプログラムを格納した記憶
    媒体。
  21. 【請求項21】 それぞれ1個以上のアイテムをデータ
    として含む多数のトランザクションから、アイテム1個
    ずつまたは2個以上のアイテムの組み合わせのうちで、
    前記トランザクションの中での出現回数が与えられた条
    件に適合するアイテム1個ずつまたは2個以上のアイテ
    ムの組み合わせとその出現回数とを求めるデータ組み合
    わせの数え上げ方式において、 アイテム1個ずつを対象とする時は、各トランザクショ
    ンに含まれるアイテムを1個ずつ出力し、i(≧2)個
    のアイテムの組み合わせを対象とする時は、該i個のア
    イテムの組み合わせに含まれるアイテムの部分的組み合
    わせまたはアイテム1個ずつのうちで、前記出現回数が
    与えられた条件に適合するアイテムの部分的組み合わせ
    またはアイテム1個ずつに含まれるアイテムに対応した
    組み合わせ生成制約条件に適合するアイテムの組み合わ
    せのみを生成して出力する組み合わせ生成手段と、 該組み合わせ生成手段が出力するアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションにおける出現回数をカウントする出現回数カウン
    ト手段と、 該出現回数カウント手段が出力するアイテム1個ずつま
    たは2個以上のアイテムの組み合わせのうちで出現回数
    が与えられた条件に適合するものを選択する組み合わせ
    選択手段と、 該組み合わせ選択手段の選択結果に対応した前記生成制
    約条件を前記組み合わせ生成手段に与える制約条件生成
    手段とを備えることを特徴とする相関のあるデータ組み
    合わせの数え上げ方式。
  22. 【請求項22】 前記制約条件生成手段が、前記組み合
    わせ選択手段の選択結果としてのアイテム1個ずつ、ま
    たは2個以上のアイテムの組み合わせあるいは部分的組
    み合わせに含まれるアイテムに対応したビット位置に
    “1”を立てたビットマップを、前記組み合わせ生成制
    約条件として生成し、 前記組み合わせ生成手段がi(≧2)個のアイテムの組
    み合わせの生成にあたって、該ビットマップ上で“1”
    が立っているビット位置に対応するアイテムの組み合わ
    せのみを生成することを特徴とする請求項21記載の相
    関のあるデータ組み合わせの数え上げ方式。
  23. 【請求項23】 前記制約条件生成手段が、前記ビット
    マップにおいて前記組み合わせ選択手段の選択結果とし
    てのアイテム1個ずつまたはアイテムの組み合わせに含
    まれるアイテムの番号に対するハッシュ関数の値に対応
    したビット位置に“1”を立てることを特徴とする請求
    項22記載の相関のあるデータ組み合わせの数え上げ方
    式。
  24. 【請求項24】 前記組み合わせ生成手段が、前記トラ
    ンザクションに含まれるアイテム以外に、アイテムの階
    層構造においてトランザクションに含まれる他のアイテ
    ムの親のアイテムを含めて、アイテムの組み合わせまた
    はアイテム1個ずつを出力することを特徴とする請求項
    21記載の相関のあるデータ組み合わせの数え上げ方
    式。
  25. 【請求項25】 前記組み合わせ生成手段が、時間的に
    連続するトランザクションに含まれるアイテムのシーケ
    ンスデータから、該シーケンスにおける順序を維持した
    形式で、アイテムの組み合わせを生成することを特徴と
    する請求項21記載の相関のあるデータ組み合わせの数
    え上げ方式。
  26. 【請求項26】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によって該記憶装置上に
    出力されたハッシュ済レコードのリストを読み込み、該
    リストのレコードをキー値に従ってソートし、該ソート
    済レコードのリストに対してグループバイ処理を実行す
    るグループバイ処理実行手段とを備えることを特徴とす
    る請求項21記載の相関のあるデータ組み合わせの数え
    上げ方式。
  27. 【請求項27】 前記ハッシュ済レコード出力手段が、
    前記レコード格納手段から前記ハッシュ関数の値に対応
    して出力された複数のレコードを1つのブロックとして
    前記記憶装置に出力すると共に、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを格納する補助
    情報リスト格納手段を更に備えることを特徴とする請求
    項26記載の相関のあるデータ組み合わせの数え上げ方
    式。
  28. 【請求項28】 前記グループバイ処理実行手段が、前
    記複数のレコードを1つのブロックとして前記ハッシュ
    済レコード出力手段によって出力され、ハッシュ関数値
    に対応したレコード列としてのハッシュ済リストと、前
    記補助情報リスト格納手段に格納されている補助情報の
    リストとを用いてグループバイ処理を実行することを特
    徴とする請求項27記載の相関のあるデータ組み合わせ
    数え上げ方式。
  29. 【請求項29】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うためのハッシュ処理方式において、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されるハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置上で必ずしも連続でない領域に出力するハッシュ済
    レコード出力手段とを備えることを特徴とする請求項2
    1記載の相関のあるデータ組み合わせ数え上げ方式。
  30. 【請求項30】 前記ハッシュ済レコード出力手段が、
    前記レコード格納手段から前記ハッシュ関数値に対応し
    て出力された複数のレコードを1つのブロックとして、
    前記記憶装置に出力すると共に、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを格納する補助
    情報リスト格納手段を更に備えることを特徴とする請求
    項29記載の相関のあるデータ組み合わせの数え上げ方
    式。
  31. 【請求項31】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 前記ハッシュ処理の結果として得られ、前記記憶装置上
    で必ずしも連続でない領域に格納されたハッシュ関数値
    に対応したレコード列としてのハッシュ済リストと、該
    ハッシュ関数値に対応して格納された複数のレコードか
    らなるブロック内のレコードを、ハッシュ関数値により
    検索可能とするための補助情報のリストとを用いてグル
    ープバイ処理を実行するグループバイ処理実行手段を備
    えることを特徴とする請求項21記載の相関のあるデー
    タ組み合わせの数え上げ方式。
  32. 【請求項32】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置上で必ずしも連続でない領域に出力する手段であっ
    て、前記レコード格納手段から前記ハッシュ関数値に対
    応して出力された複数のレコードを1つのブロックとし
    て、該1つのブロックが前記記憶装置上で連続した領域
    に格納される形式で出力するハッシュ済レコード出力手
    段と、 該ブロックのレコードに対するハッシュ関数値による検
    索を格納とするための補助情報のリストを格納する補助
    情報リスト格納手段と、 前記ハッシュ関数値に対応して前記ハッシュ済レコード
    出力手段によって出力されたハッシュ済レコード列と、
    前記補助情報リスト格納手段に格納されている補助情報
    のリストとを用いてグループバイ処理を実行するグルー
    プバイ処理実行手段とを備えることを特徴とする請求項
    21記載の相関のあるデータ組み合わせの数え上げ方
    式。
  33. 【請求項33】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うためのハッシュ処理方式において、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段とを備えることを特徴と
    する請求項21記載の相関のあるデータ組み合わせの数
    え上げ方式。
  34. 【請求項34】 前記ハッシュ済レコード出力手段が、
    前記ポインタによって指示されるレコードを前記記憶装
    置に出力するにあたり、前記1つのランに含まれるレコ
    ードを該記憶装置上の連続領域に出力すると共に、異な
    るランのレコードは必ずしも互いに連続でない領域に格
    納することを特徴とする請求項33記載の相関のあるデ
    ータ組み合わせの数え上げ方式。
  35. 【請求項35】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 前記ハッシュ処理の結果として得られるハッシュ関数値
    に対応したレコードが前記記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ハッシュ関数値に対
    応したレコードの格納にあたりハッシュ関数値を最小値
    から最大値まで連続的に変化させる間に格納されるラン
    のそれぞれに含まれるレコードの前記記憶装置上の格納
    アドレスを示すラン情報とを用いてグループバイ処理を
    実行するグループバイ処理実行手段を備えることを特徴
    とする請求項21記載の相関のあるデータ組み合わせの
    数え上げ方式。
  36. 【請求項36】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うめたに、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力するハッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段と、 該ハッシュ済レコード出力手段によって出力されたレコ
    ードが前記記憶装置上で格納されているハッシュ済レコ
    ード列の内容と、該ラン情報格納手段に格納されている
    ラン情報とを用いてグループバイ処理を実行するグルー
    プバイ処理実行手段を備えることを特徴とする請求項2
    1記載の相関のあるデータ組み合わせの数え上げ方式。
  37. 【請求項37】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて前記記憶
    装置に出力する手段であって、ハッシュ関数値を最小値
    から最大値まで連続的に変化させる間に出力されるラン
    のそれぞれに含まれるレコードを該記憶装置上に連続領
    域に出力すると共に、異なるランのレコードは必ずしも
    互いに連続でない領域に格納するハッシュ済レコード出
    力手段と、 該ランのそれぞれに含まれるレコードの該記憶装置上の
    格納アドレスを示すラン情報を格納するラン情報格納手
    段と、 該ハッシュ済レコード出力手段によって出力されたレコ
    ードが該記憶装置上で格納されているハッシュ済レコー
    ド列の内容と、該ラン情報格納手段に格納されているラ
    ン情報とを用いてグループバイ処理を実行するグループ
    バイ処理実行手段を備えることを特徴とする請求項21
    記載の相関のあるデータ組み合わせの数え上げ方式。
  38. 【請求項38】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うためのハッシュ処理方式において、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて、前記記
    憶装置上で必ずしも連続でない領域に出力する手段であ
    って、それぞれ複数のレコードからなる2つの連続すべ
    きブロックがそれぞれ独立の連続領域であって、相互に
    非連続である領域に格納される時、該2つのブロックの
    連結関係を示すデータを加えてレコードの出力を行うハ
    ッシュ済レコード出力手段と、該ハッシュ済レコード出
    力手段によるレコードの出力にあたり、ハッシュ関数値
    を最小値から最大値まで連続的に変化させる間に出力さ
    れるランのそれぞれに含まれるレコードの前記記憶装置
    上の格納アドレスを示すラン情報を格納するラン情報格
    納手段とを備えることを特徴とする請求項21記載の相
    関のあるデータ組み合わせの数え上げ方式。
  39. 【請求項39】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 前記ハッシュ処理の結果として得られるハッシュ関数値
    に対応したレコードが前記記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ハッシュ関数値に対
    応したレコードの該記憶装置への出力にあたり、ハッシ
    ュ関数値を最小値から最大値まで連続的に変化させる間
    に出力されるランのそれぞれに含まれるレコードの前記
    記憶装置上の格納アドレスを示すラン情報と、それぞれ
    複数のレコードからなる2つの連続すべきブロックがそ
    れぞれ独立の連続領域に格納され、該2つの連続領域が
    相互に非連続となっているとき、該2つのブロックの連
    結関係を示すデータとに基づいてグループバイ処理を実
    行するグループバイ処理実行手段を備えることを特徴と
    する請求項21記載の相関のあるデータ組み合わせの数
    え上げ方式。
  40. 【請求項40】 前記出現回数カウント手段が、記憶装
    置に格納され、それぞれアイテム1個ずつまたは2個以
    上のアイテムの組み合わせを示すレコードの集合を、各
    レコードのキーの値に対応するハッシュ関数値によって
    参照可能な形式に変換するハッシュ処理の結果に基づい
    て、前記出現回数カウント処理としてのレコードのグル
    ープバイ処理を行うために、 該レコードを一時的に格納するレコード格納手段と、 該レコード格納手段に格納されたレコードの格納位置を
    示すポインタを、該レコードのキー値から計算されたハ
    ッシュ関数値に対応する位置に格納するハッシュ値対応
    ポインタ格納手段と、 該ハッシュ値対応ポインタ格納手段に格納されているポ
    インタによって指示されるレコードを、該ポインタの格
    納位置に対応するハッシュ関数値に対応させて、前記記
    憶装置上で必ずしも連続でない領域に出力する手段であ
    って、それぞれ複数のレコードからなる2つの連続すべ
    きブロックがそれぞれ独立の連続領域であって、相互に
    非連続である領域に格納される時、該2つのブロックの
    連結関係を示すデータを加えてレコードの出力を行うハ
    ッシュ済レコード出力手段と、 該ハッシュ済レコード出力手段によるレコードの出力に
    あたり、ハッシュ関数値を最小値から最大値まで連続的
    に変化させる間に出力されるランのそれぞれに含まれる
    レコードの前記記憶装置上の格納アドレスを示すラン情
    報を格納するラン情報格納手段と、 前記ハッシュ済レコード出力手段によって出力され、ハ
    ッシュ関数値に対応したレコードが前記記憶装置上で格
    納されているハッシュ済レコード列の内容と、前記ラン
    情報格納手段に格納されているラン情報と、前記2つの
    ブロックの連結関係を示すデータとに基づいてグループ
    バイ処理を実行するグループバイ処理実行手段を備える
    ことを特徴とする請求項21記載の相関のあるデータ組
    み合わせの数え上げ方式。
  41. 【請求項41】 それぞれ1個以上のアイテムをデータ
    として含む多数のトランザクションから、アイテム1個
    ずつまたは2個以上のアイテムの組み合わせのうちで、
    前記トランザクションの中での出現回数が与えられた条
    件に適合するアイテム1個ずつまたは2個以上のアイテ
    ムの組み合わせとその出現回数とを求めるデータ組み合
    わせの数え上げ方式において、 1個ずつのアイテムを対象とする時は各トランザクショ
    ンに含まれるアイテムを1個ずつ出力し、i(≧2)個
    のアイテムの組み合わせを対象とする時は、該i個の組
    み合わせに含まれるアイテム1個ずつまたはアイテムの
    部分的組み合わせのうちで、前記出現回数が与えられた
    条件に適合するアイテムの部分的組み合わせまたはアイ
    テム1個ずつに含まれるアイテムに対応した組み合わせ
    生成制約条件に適合するアイテムの組み合わせのみを生
    成して出力するアイテム組み合わせ生成機能と、 該出力されたアイテム1個ずつまたは2個以上のアイテ
    ムの組み合わせの全てのトランザクションでの出現回数
    をカウントする機能と、 該カウントされた出現回数が与えられた条件に適合する
    アイテム1個ずつまたは2個以上のアイテムの組み合わ
    せを選択する機能と、 該選択結果に対応した前記生成制約条件を前記アイテム
    組み合わせ生成機能に与える機能とを計算機に実行させ
    るためのプログラムを格納した計算機読み出し可能記憶
    媒体。
  42. 【請求項42】 前記出力されたアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションでの出現回数をカウントする機能が、記憶装置に
    格納され、それぞれアイテム1個ずつまたは2個以上の
    アイテムの組み合わせを示すレコードの集合を、各レコ
    ードのキーの値に対応するハッシュ関数値によって参照
    可能な形式に変換するハッシュ処理の結果に基づいて、
    前記出現回数カウントの処理としてのレコードのグルー
    プバイ処理を行う機能であって、 該レコードを一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能と、 該記憶装置上に出力されたハッシュ済レコードのリスト
    を読み込み、該リストのレコードをキー値に従ってソー
    トし、該ソート済レコードリストに対してグループバイ
    処理を実行する機能とを計算機に実行させるためのプロ
    グラムを格納した請求項41記載の計算機読出し可能記
    憶媒体。
  43. 【請求項43】 前記出力されたアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションでの出現回数をカウントする機能が、記憶装置に
    格納され、それぞれアイテム1個ずつまたは2個以上の
    アイテムの組み合わせを示すレコードの集合を、各レコ
    ードのキーの値に対応するハッシュ関数値によって参照
    可能な形式に変換するハッシュ処理の結果に基づいて、
    前記出現回数カウントの処理としてのレコードのグルー
    プバイ処理を行う機能であって、 該レコードを一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置上で必ずしも連続でない領域に出力する機能で
    あって、前記ハッシュ関数値に対応して出力されるべき
    複数のレコードを1つのブロックとして、該1つのブロ
    ックが前記記憶装置上で連続した領域に格納される形式
    で出力する機能と、 該ブロックのレコードに対するハッシュ関数値による検
    索を可能とするための補助情報のリストを記憶する機能
    と、 前記ハッシュ関数値に対応して前記記憶装置に出力され
    たハッシュ済レコード列と、前記補助情報のリストとを
    用いてグループバイ処理を実行する機能とを計算機に実
    行させるためのプログラムを格納した請求項41記載の
    計算機読出し可能記憶媒体。
  44. 【請求項44】 前記出力されたアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションでの出現回数をカウントする機能が、記憶装置に
    格納され、それぞれアイテム1個ずつまたは2個以上の
    アイテムの組み合わせを示すレコードの集合を、各レコ
    ードのキーの値に対応するハッシュ関数値によって参照
    可能な形式に変換するハッシュ処理の結果に基づいて、
    前記出現回数カウントの処理としてのレコードのグルー
    プバイ処理を行う機能であって、 該レコードを一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能と、 該記憶装置へのレコードの出力にあたり、ハッシュ関数
    値を最小値から最大値まで連続的に変化させる間に出力
    されるランのそれぞれに含まれるレコードの前記記憶装
    置上の格納アドレスを示すラン情報を記憶する機能と、 該出力されたレコードが前記記憶装置上で格納されてい
    るハッシュ済レコード列の内容と、前記ラン情報とを用
    いてグループバイ処理を実行する機能とを計算機に実行
    させるためのプログラムを格納した請求項41記載の計
    算機読出し可能記憶媒体。
  45. 【請求項45】 前記出力されたアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションでの出現回数をカウントする機能が、記憶装置に
    格納され、それぞれアイテム1個ずつまたは2個以上の
    アイテムの組み合わせを示すレコードの集合を、各レコ
    ードのキーの値に対応するハッシュ関数値によって参照
    可能な形式に変換するハッシュ処理の結果に基づいて、
    前記出現回数カウントの処理としてのレコードのグルー
    プバイ処理を行う機能であって、 該レコードを一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて前記
    記憶装置に出力する機能であって、ハッシュ関数値を最
    小値から最大値まで連続的に変化させる間に出力される
    ランのそれぞれに含まれるレコードを該記憶装置上の連
    続領域に出力すると共に、異なるランのレコードは必ず
    しも互いに連続でない領域に出力する機能と、 該ランのそれぞれに含まれるレコードの該記憶装置上の
    格納アドレスを示すラン情報を記憶する機能と、 該出力されたレコードが該記憶装置上で格納されている
    ハッシュ済レコード列の内容と、該ラン情報とを用いて
    グループバイ処理を実行する機能とを計算機に実行させ
    るためのプログラムを格納した請求項41記載の計算機
    読出し格納記憶媒体。
  46. 【請求項46】 前記出力されたアイテム1個ずつまた
    は2個以上のアイテムの組み合わせの全てのトランザク
    ションでの出現回数をカウントする機能が、記憶装置に
    格納され、それぞれアイテム1個ずつまたは2個以上の
    アイテムの組み合わせを示すレコードの集合を、各レコ
    ードのキーの値に対応するハッシュ関数値によって参照
    可能な形式に変換するハッシュ処理の結果に基づいて、
    前記出現回数カウントの処理としてのレコードのグルー
    プバイ処理を行う機能であって、 該レコードを一時的に記憶する機能と、 該一時的に記憶されたレコードの格納位置を示すポイン
    タを、該レコードのキー値から計算されたハッシュ関数
    値に対応する位置に記憶する機能と、 該ポインタによって指示されるレコードを、該ポインタ
    の格納位置に対応するハッシュ関数値に対応させて、前
    記記憶装置上で必ずしも連続でない領域に出力する機能
    であって、それぞれ複数のレコードからなる2つの連続
    すべきブロックがそれぞれ独立の連続領域であって、相
    互に非連続である領域に格納される時、該2つのブロッ
    クの連結関係を示すデータを加えてレコードの出力を行
    う機能と、 該レコードの出力にあたり、ハッシュ関数値を最小値か
    ら最大値まで連続的に変化させる間に出力されるランの
    それぞれに含まれるレコードの前記記憶装置上の格納ア
    ドレスを示すラン情報を記憶する機能と、 前記ハッシュ関数値に対応したレコードが前記記憶装置
    上で格納されているハッシュ済レコード列の内容と、前
    記ラン情報と、前記2つのブロックの連結関係を示すデ
    ータとに基づいて、グループバイ処理を実行する機能と
    を計算機に実行させるためのプログラムを格納した請求
    項41記載の計算機読出し可能記憶媒体。
  47. 【請求項47】 それぞれ1個以上のアイテムをデータ
    として含む多数のトランザクションから、アイテム1個
    ずつまたは2個以上のアイテムの組み合わせのうちで、
    前記トランザクションの中での出現回数が与えられた条
    件に適合するアイテム1個ずつまたは2個以上のアイテ
    ムの組み合わせとその出現回数とを求めるデータ組み合
    わせの数え上げ方法において、 各トランザクションに含まれるアイテムを1個ずつカウ
    ントして、該1個ずつのアイテムの全トランザクション
    での出現回数をカウントし、 該カウント回数が与えられた条件に適合するアイテムを
    選択して、該アイテムと該カウント回数との組を数え上
    げ結果として出力し、 該選択されたアイテムに対応したビット位置に“1”を
    セットしたビットマップを作成し、 組み合わせ内のアイテムの個数を示すiの値をi=2と
    し、 該ビットマップに“1”が立っている位置に対応するア
    イテムを用いて、各トランザクションに含まれるi個の
    アイテムの組み合わせを生成し、 該生成されたアイテムの組み合わせの全トランザクショ
    ンでの出現回数をカウントし、 該カウント回数が与えられた条件に適合するアイテムの
    組み合わせを選択して、該アイテムの組み合わせと該カ
    ウント回数との組を数え上げ結果として出力し、 該選択されたアイテムの組み合わせあるいは部分的組み
    合わせ、または該組み合わせに含まれるアイテム1個ず
    つに対応したビット位置に“1”をセットしたビットマ
    ップを作成し、 iの値をインクリメントして前記i個のアイテムの組み
    合わせの生成以降の処理を繰り返すことを特徴とする相
    関のあるデータ組み合わせの数え上げ方法。
  48. 【請求項48】 前記ビットマップの作成において、 前記1個ずつのアイテムのうちで、前記選択されたアイ
    テムに対応したビット位置への“1”のセットと、 前記i個のアイテムの組み合わせのうちで、前記選択さ
    れたアイテムの組み合わせあるいは部分的組み合わせ、
    または該組み合わせに含まれるアイテム1個ずつに対応
    したビット位置への“1”のセットとにあたり、 アイテム1個ずつ、またはアイテムの組み合わせあるい
    は部分的組み合わせに含まれるアイテムの番号に対する
    ハッシュ関数の値に対応したビット位置に“1”をセッ
    トすることを特徴とする請求項47記載の相関のあるデ
    ータ組み合わせの数え上げ方法。
  49. 【請求項49】 前記データ組み合わせの数え上げ方法
    において、 前記トランザクションに含まれるアイテム以外に、アイ
    テムの階層構造においてトランザクションに含まれる他
    のアイテムの親のアイテムを含めて、前記与えられた条
    件に適合するアイテム1個ずつまたは2個以上の組み合
    わせとその出現回数とを求めることを特徴とする請求項
    47記載の相関のあるデータ組み合わせの数え上げ方
    法。
  50. 【請求項50】 前記データ組み合わせの数え上げ方法
    において、 前記多数のトランザクションのうちで、時間的に連続す
    るトランザクションに含まれるアイテムのシーケンスデ
    ータから、i=2個以上のアイテムの組み合わせに対し
    ては該シーケンスにおける順序を維持した形式で、前記
    与えられた条件に適合するアイテム1個ずつまたは2個
    以上の組み合わせとその出現回数とを求めることを特徴
    とする請求項47記載の相関のあるデータ組み合わせの
    数え上げ方法。
JP15217197A 1997-04-18 1997-06-10 グループ化と集計演算処理方式 Expired - Fee Related JP3466054B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP15217197A JP3466054B2 (ja) 1997-04-18 1997-06-10 グループ化と集計演算処理方式
EP98302400A EP0877324A3 (en) 1997-04-18 1998-03-27 Association rule generation and group-by processing system
US09/049,091 US6226634B1 (en) 1997-04-18 1998-03-27 Association rule generation and group-by processing system

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP10069697 1997-04-18
JP9-100696 1997-04-18
JP15217197A JP3466054B2 (ja) 1997-04-18 1997-06-10 グループ化と集計演算処理方式

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2003196820A Division JP3601719B2 (ja) 1997-04-18 2003-07-14 相関のあるデータ組み合わせの数え上げ方式

Publications (2)

Publication Number Publication Date
JPH113342A true JPH113342A (ja) 1999-01-06
JP3466054B2 JP3466054B2 (ja) 2003-11-10

Family

ID=26441671

Family Applications (1)

Application Number Title Priority Date Filing Date
JP15217197A Expired - Fee Related JP3466054B2 (ja) 1997-04-18 1997-06-10 グループ化と集計演算処理方式

Country Status (3)

Country Link
US (1) US6226634B1 (ja)
EP (1) EP0877324A3 (ja)
JP (1) JP3466054B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259612A (ja) * 1999-03-12 2000-09-22 Fujitsu Ltd 相関分析装置及び記録媒体
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
JP2014135063A (ja) * 2008-10-23 2014-07-24 Ab Initio Technology Llc グラフベース計算におけるデータ記録
US9563721B2 (en) 2008-01-16 2017-02-07 Ab Initio Technology Llc Managing an archive for approximate string matching

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3251138B2 (ja) * 1994-10-31 2002-01-28 富士通株式会社 ハッシュ方式
US20010042204A1 (en) * 2000-05-11 2001-11-15 David Blaker Hash-ordered databases and methods, systems and computer program products for use of a hash-ordered database
JP3515050B2 (ja) 2000-07-07 2004-04-05 三菱電機株式会社 データベース演算処理装置
US7725423B1 (en) * 2001-02-08 2010-05-25 Teradata Us, Inc. Analyzing associations in the order of transactions
US7283987B2 (en) * 2001-03-05 2007-10-16 Sap Ag Compression scheme for improving cache behavior in database systems
US7499922B1 (en) * 2001-04-26 2009-03-03 Dakota Software Corp. Information retrieval system and method
KR100832222B1 (ko) * 2001-06-09 2008-05-23 자프 아게 메인 메모리 데이터베이스 시스템의 색인 구조를 위한캐쉬에 최적화된 동시성 제어방법
US7213025B2 (en) * 2001-10-16 2007-05-01 Ncr Corporation Partitioned database system
JP2003323364A (ja) * 2002-05-08 2003-11-14 Canon Inc ネットワークデバイス管理装置及び方法、並びにコンピュータプログラム及びコンピュータ可読記憶媒体
US20050004937A1 (en) * 2003-05-12 2005-01-06 Colarik Andrew Michael Integrity mechanism for file transfer in communications networks
US6867844B2 (en) * 2003-06-19 2005-03-15 Asml Holding N.V. Immersion photolithography system and method using microchannel nozzles
US7720790B2 (en) * 2003-08-18 2010-05-18 Oracle International Corporation Dynamic selection of frequent itemset counting technique
US7756853B2 (en) * 2003-08-18 2010-07-13 Oracle International Corporation Frequent itemset counting using subsets of bitmaps
US8326658B1 (en) * 2004-04-12 2012-12-04 Amazon Technologies, Inc. Generation and contextual presentation of statistical data reflective of user selections from an electronic catalog
US7487169B2 (en) * 2004-11-24 2009-02-03 International Business Machines Corporation Method for finding the longest common subsequences between files with applications to differential compression
JP2006163596A (ja) * 2004-12-03 2006-06-22 Internatl Business Mach Corp <Ibm> 情報処理システム、制御方法、及びプログラム
US8046348B1 (en) * 2005-06-10 2011-10-25 NetBase Solutions, Inc. Method and apparatus for concept-based searching of natural language discourse
JP4878131B2 (ja) * 2005-08-04 2012-02-15 株式会社エヌ・ティ・ティ・ドコモ ユーザ行動推定システム、ユーザ行動推定方法
JP4634349B2 (ja) * 2006-08-22 2011-02-16 株式会社日立製作所 IPSec処理装置、ネットワークシステム、及びIPSec処理プログラム
US7979563B2 (en) * 2007-08-16 2011-07-12 International Business Machines Corporation Method and system for dynamic client/server network management using proxy servers
WO2010064939A1 (en) * 2008-12-05 2010-06-10 Business Intelligence Solutions Safe B.V. Methods, apparatus and systems for data visualization and related applications
US20120173301A1 (en) * 2011-01-04 2012-07-05 International Business Machines Corporation System and method for failure association analysis
US9311615B2 (en) 2010-11-24 2016-04-12 International Business Machines Corporation Infrastructure asset management
US8527546B2 (en) 2010-11-25 2013-09-03 International Business Machines Corporation Generating a checkpoint image for use with an in-memory database
US9155320B2 (en) 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US9230548B2 (en) * 2012-06-06 2016-01-05 Cypress Semiconductor Corporation Hybrid hashing scheme for active HMMS
US9607036B2 (en) 2013-08-21 2017-03-28 International Business Machines Corporation Managing a data set
WO2016048263A1 (en) 2014-09-22 2016-03-31 Hewlett Packard Enterprise Development Lp Identification of content-defined chunk boundaries
US12038922B2 (en) * 2021-10-17 2024-07-16 Speedata Ltd. Pipelined hardware-implemented database query processing

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255170A (ja) * 1995-03-15 1996-10-01 Oki Electric Ind Co Ltd ソート付き検索処理装置
JPH096732A (ja) * 1995-06-14 1997-01-10 Fujitsu Ltd 並列プロセッサ装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS647230A (en) 1987-06-30 1989-01-11 Nec Corp System for referring definition of label
EP0381418A3 (en) 1989-01-31 1991-11-27 International Business Machines Corporation A small fast lookup table for use in a data processing system
JPH03257549A (ja) 1990-03-08 1991-11-18 Oki Electric Ind Co Ltd レコード配置方法
JPH0877010A (ja) 1994-09-07 1996-03-22 Hitachi Ltd データ分析方法および装置
JPH08161287A (ja) 1994-12-09 1996-06-21 Hitachi Ltd データ分析支援システム
US5511190A (en) * 1995-01-20 1996-04-23 Tandem Computers, Inc. Hash-based database grouping system and method
JPH08235033A (ja) * 1995-02-24 1996-09-13 Nec Corp オブジェクト指向データベース管理システムにおける結合演算方式
US5970490A (en) * 1996-11-05 1999-10-19 Xerox Corporation Integration platform for heterogeneous databases
US5852822A (en) * 1996-12-09 1998-12-22 Oracle Corporation Index-only tables with nested group keys
US5926807A (en) * 1997-05-08 1999-07-20 Microsoft Corporation Method and system for effectively representing query results in a limited amount of memory
US5960434A (en) * 1997-09-26 1999-09-28 Silicon Graphics, Inc. System method and computer program product for dynamically sizing hash tables

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08255170A (ja) * 1995-03-15 1996-10-01 Oki Electric Ind Co Ltd ソート付き検索処理装置
JPH096732A (ja) * 1995-06-14 1997-01-10 Fujitsu Ltd 並列プロセッサ装置

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259612A (ja) * 1999-03-12 2000-09-22 Fujitsu Ltd 相関分析装置及び記録媒体
KR20040046465A (ko) * 2002-11-27 2004-06-05 한국전자통신연구원 다단계 해시함수를 이용하여 검색시간 한계를 보장하는분리 체이닝 구조의 데이터 처리 시스템 및 그 처리방법
US9563721B2 (en) 2008-01-16 2017-02-07 Ab Initio Technology Llc Managing an archive for approximate string matching
JP2014135063A (ja) * 2008-10-23 2014-07-24 Ab Initio Technology Llc グラフベース計算におけるデータ記録
US9607103B2 (en) 2008-10-23 2017-03-28 Ab Initio Technology Llc Fuzzy data operations
US11615093B2 (en) 2008-10-23 2023-03-28 Ab Initio Technology Llc Fuzzy data operations

Also Published As

Publication number Publication date
JP3466054B2 (ja) 2003-11-10
EP0877324A3 (en) 2000-02-09
US6226634B1 (en) 2001-05-01
EP0877324A2 (en) 1998-11-11

Similar Documents

Publication Publication Date Title
JP3466054B2 (ja) グループ化と集計演算処理方式
JP2683870B2 (ja) 文字列検索システム及び方法
EP2924594B1 (en) Data encoding and corresponding data structure in a column-store database
JP2002501256A (ja) データベース装置
JP3566111B2 (ja) 記号辞書作成方法及び記号辞書検索方法
KR101105363B1 (ko) 롱 트랜잭션 데이터 스트림을 위한 빈발항목집합 탐색 방법
CN103339624A (zh) 支持地理结构数据的交互式模糊搜索的高效前缀搜索算法
EP2450810A2 (en) Method for extracting information from a database
CN106570128A (zh) 一种基于关联规则分析的挖掘算法
JP3452531B2 (ja) データ・マイニングする方法およびシステム
US6735600B1 (en) Editing protocol for flexible search engines
JP5686893B2 (ja) データベース管理システム、装置及び方法
CN108170799A (zh) 一种海量数据的频繁序列挖掘方法
KR101443285B1 (ko) 유용성 높은 패턴의 마이닝 방법
US20050065947A1 (en) Thesaurus maintaining system and method
JPWO2013111287A1 (ja) Sparqlクエリ最適化方法
JP3258063B2 (ja) データベース検索システム及び方法
JP3601719B2 (ja) 相関のあるデータ組み合わせの数え上げ方式
Ansari et al. TFI-Apriori: Using new encoding to optimize the apriori algorithm
JP2004110327A (ja) 時系列相関抽出装置
RU2433467C1 (ru) Способ формирования структуры агрегированных данных и способ поиска данных посредством структуры агрегированных данных в системе управления базами данных
CN107609110B (zh) 基于分类树的最大多样频繁模式的挖掘方法及装置
JP6666312B2 (ja) 多次元データ管理システム及び多次元データ管理方法
JP2786380B2 (ja) キーワード照合検索処理方法
JP2020187644A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030819

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

Free format text: PAYMENT UNTIL: 20080829

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees