JPH0370826B2 - - Google Patents
Info
- Publication number
- JPH0370826B2 JPH0370826B2 JP59231251A JP23125184A JPH0370826B2 JP H0370826 B2 JPH0370826 B2 JP H0370826B2 JP 59231251 A JP59231251 A JP 59231251A JP 23125184 A JP23125184 A JP 23125184A JP H0370826 B2 JPH0370826 B2 JP H0370826B2
- Authority
- JP
- Japan
- Prior art keywords
- record
- records
- buffer memory
- read
- relation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 claims description 89
- 238000000034 method Methods 0.000 claims description 30
- 238000001514 detection method Methods 0.000 claims description 20
- 238000004364 calculation method Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
〔発明の技術分野〕
本発明は、ソート処理されている2つのリレー
シヨンに対してマージ・ソート処理を基本にした
関係演算により、併合(ジヨイン)演算を高速に
実行し得るデータ処理装置に関する。 〔発明の技術的背景とその問題点〕 大容量記憶装置の進歩に伴い、その大容量記憶
装置上で大規模なデータベースを構築する計算機
システムが増えてきている。ところが、データベ
ースが大規模になる程、該データベースから必要
なデータを検索するに必要な時間が長くなるとい
う問題が生じている。これを解決する方法の1つ
として、検索に必要な処理、つまり関係演算を専
用ハードウエアで実行することが種々提唱されて
いる。 ところで、関係演算の1つに併合(join−
equal)演算がある。この併合演算は、例えば2
つのリレーシヨン{R1}{R2}
シヨンに対してマージ・ソート処理を基本にした
関係演算により、併合(ジヨイン)演算を高速に
実行し得るデータ処理装置に関する。 〔発明の技術的背景とその問題点〕 大容量記憶装置の進歩に伴い、その大容量記憶
装置上で大規模なデータベースを構築する計算機
システムが増えてきている。ところが、データベ
ースが大規模になる程、該データベースから必要
なデータを検索するに必要な時間が長くなるとい
う問題が生じている。これを解決する方法の1つ
として、検索に必要な処理、つまり関係演算を専
用ハードウエアで実行することが種々提唱されて
いる。 ところで、関係演算の1つに併合(join−
equal)演算がある。この併合演算は、例えば2
つのリレーシヨン{R1}{R2}
【表】
から、そのキイ(属性Aと、属性C)の値が等し
いレコードを、その組合せの数だけ結合して新し
いリレーシヨン{R3}を
いレコードを、その組合せの数だけ結合して新し
いリレーシヨン{R3}を
本発明はこのような事情を考慮してなされたも
ので、その目的とするところは、2つのリレーシ
ヨン間の併合演算を簡易に、且つ高速に実行する
ことができるデータ処理装置を提供することにあ
る。 〔発明の概要〕 本発明は、所定の規則に従つてソート処理が施
された複数のレコードからなる第1および第2の
リレーシヨンをそれぞれ入力して第1および第2
のレコードバツフアメモリに格納する時、各リレ
ーシヨンにおけるレコードの属性を示すキイの値
の重複を検出して、その重複検出結果を上記各レ
コードに対応させて前記第1および第2のレコー
ドバツフアメモリに格納する。そして関係演算に
必要なレコードを前記第1および第2のレコード
バツフアメモリから順次読み出して比較し、その
比較結果に従つて上記レコードの出力を制御する
とき、前記比較結果と該レコードに付された前記
重複検出結果とに従つて次に読出すレコードを制
御するようにしたものである。そして特にこのレ
コードの読出し制御を 前記比較結果が等しくない場合には前記ソー
ト処理方向に若い値のレコードを格納したレコ
ードバツフアメモリから次のレコードを読出す
と共に、他方のレコードバツフアメモリからは
同じレコードを読出し、 前記比較結果が等しいときであつて、これら
の各レコードが重複レコードでない場合には前
記第1および第2のレコードバツフアメモリか
ら次のレコードをそれぞれ読出し、 前記比較結果が等しいときであつて、一方の
レコードだけが重複レコードとして示される場
合にはそのレコードを格納したレコードバツフ
アメモリから次のレコードを読出すと共に他方
のレコードバツフアメモリからは重複レコード
中の先頭レコードを読出し、 前記比較結果が等しいときであつて、前記各
レコードが共に重複レコードとして示されると
きには前記第1のレコードバツフアメモリから
同じレコードを読出すと共に前記第2のレコー
ドバツフアメモリから次のレコードを読出す ようにしたことを特徴とするものである。 〔発明の効果〕 かくして本発明によれば、2つのリレーシヨン
の各レコードに付された重複検出結果に従つて上
記リレーシヨン中の重複レコードについてのみ、
そのレコードの繰返し読出しを行い、その他のレ
コードについては順にその読出しを行うので、ソ
ート処理された2つのリレーシヨンをそれぞれほ
ぼ1回スキヤンニングするだけで併合演算に必要
なレコードの比較処理の全てを行うことが可能と
なる。従つて、各リレーシヨンにおけるレコード
の重複が殆んどない場合には、その処理に必要な
時間はほぼ ({R1}のレコードの数) +({R2}のレコードの数) となり、処理所要時間の大幅な短縮化を図ること
が可能となる。しかも各リレーシヨンのレコード
のキイの値の重複を調べておき、そのレコード重
複情報を利用して各レコードの読出し制御を行う
ので、その制御アルゴリズムが簡単であり、構成
の複雑化を招来することなしにデータ処理装置を
構築することができる等の実用上多大なる効果が
奏せられる。 〔発明の実施例〕 以下、図面を参照して本発明の一実施例につき
説明する。 図は、本発明の実施例に係るデータ処理装置の
概略構成図である。データ処理装置は、基本的に
はマージ・ソート処理をベースとした関係演算を
行う演算部と、その関係演算結果の出力制御を行
う出力制御部とにより構成される。 所定の規則に従つてソート処理が施された重複
のレコードからなる第1および第2のリレーシヨ
ンがそれぞれ入力される演算部の入力段には、各
リレーシヨン中のレコードのキイの値の重複を検
出する重複検出回路が設けられている。この重複
検出回路は、順次入力されるレコードの1語をセ
ツトする入力レジスタ11と、1レコード分の記
憶容量を持ち、かつFIFO(フアーストイン・フア
ストアウト)機能を有するレコードバツフアメモ
リ12と、このレコードバツフアメモリ12から
読出されるレコードのキイの値と前記入力レジス
タ11にセツトされた次のレコードのキイの値と
を比較する比較回路13と、上記レコードバツフ
アメモリ12から読出されるレコードを1語分づ
つセツトして次段の回路に転送するデータレジス
タ14と、前記比較回路13が出力するイコール
信号Eから前記レコードバツフアメモリ12にセ
ツトされていたレコードのキイの値が、現入力レ
コードのキイの値のと重複しているか否かを判定
し、重複している場合に重複フラグFをセツトす
るフラグ回路15とを備えて構成される。 尚、前記各レコードが複数の語によつて構成さ
れる場合、比較回路13は各語毎に比較処理して
いることから、入力リレーシヨン中の相前後する
レコードのキイ(属性)の値が重複しているか否
かが決定されるタイミングは、そのレコードの最
後の語について処理したときとなる。従つて、前
記重複フラグFは、前記レコードの最後の1語が
前記データレジスタ14を介して次段に転送され
るときに有効となる。 しかしてこのような重複検出回路を介して入力
される第1のリレーシヨンの各レコードは、第1
のレコードバツフアメモリ16に入力されて格納
される。この時、前記重複検出回路にて検出され
た各レコードについての重複検出結果(重複フラ
グF)が、そのレコードに対応して該第1のレコ
ードバツフアメモリ16に格納される。同様にし
て第2のリレーシヨンのレコードが入力されたと
き、そのレコードは前記重複検出回路を介して第
2のレコードバツフアメモリ17に格納され、各
レコードについて検出された重複検出結果(重複
フラグF)が、そのレコードに対応して該第2の
レコードバツフアメモリ17に格納される。 これらの第1および第2のレコードバツフアメ
モリ16,17は、1つのリレーシヨンのレコー
ドを記憶できる容量をそれぞれ持ち、レコード読
出し制御回路18,19の制御を受けて格納レコ
ードおよびそのレコードに付加された重複検出結
果の読出しが制御されるようになつている。 尚、上記レコード読出し制御回路18,19
は、それぞれ読出し制御用のアドレスレジスタ2
0と、バツクアツプレジスタ21とを具備して構
成される。バツクアツプレジスタ21は、後述す
るレコードの比較結果と各レコードに付された重
複検出結果(重複フラグF)とに従つて、前記ア
ドレスレジスタ20の値をセーブしたり、或いは
該バツクアツプレジスタ21に格納している値を
前記アドレスレジスタ20にロードするものであ
る。これらのアドレスレジスタ20およびバツク
アツプレジスタ21にセツトされる値の、前記比
較結果と重複検出結果(重複フラグF)とに基づ
く更新制御によつて、前記第1および第2のレコ
ードバツフアメモリ16,17から読出される各
リレーシヨンのレコードが制御される。 この他にも、本発明の要旨とは直接関係しない
ことから図示していないが、レコード読出し制御
回路18,19には書き込み用のレジスタや、こ
れらのレジスタを制御する制御回路が設けられて
いることは云うまでもない。 しかして前記第1および第2のレコードバツフ
アメモリ16,17からそれぞれ読出されるレコ
ードデータ、およびそのレコードに付された重複
検出結果の情報は、データレジスタ22,23に
それぞれセツトされる。 比較回路24は、上記データレジスタ22,2
3にそれぞれセツトされたレコードデータを相互
に比較し、その比較結果を前記レコード読出し制
御回路18,19に出力すると共に、次段の出力
制御回路25に出力している。前記レコード読出
し制御回路18,19は、このような比較回路2
4によるレコードの比較結果と、上記データレジ
スタ22,23にセツトされた重複検出結果の情
報とを入力して、前記各レジスタ20,21のセ
ツトデータを更新制御している。 1レコード分の記憶容量を持ち、且つFIFO機
能を有する第3および第4のレコードバツフアメ
モリ26,27は、前記データレジスタ22,2
3を介して前記レコードバツフアメモリ16,1
7からそれぞれ転送されてきた各レコードを、一
旦格納するものである。これらのレコードバツフ
アメモリ26,27は、前記レコードの比較処理
が語単位で行われ、その比較結果が得られるタイ
ミングがレコードの最後の語を処理した時点であ
ることから、該レコードの全ての語に対する比較
処理が終了するまで、そのレコードの各語を保存
する為に設けられるものである。そして、このよ
うにして上記各レコードバツフアメモリ26,2
7にそれぞれ格納されたレコードは、前記出力制
御回路25の制御を受けて読出し制御され、選択
回路28から出力レジスタ29を介して出力され
るようになつている。 尚、このレコードの出力は、第3のレコードバ
ツフアメモリ26に格納されたレコードと、第4
のレコードバツフアメモリ27に格納されたレコ
ードとを結合して行われる。この結合処理は選択
回路28にて、例えば第3のレコードバツフアメ
モリ26に格納されているレコードを出力した
後、第4のレコードバツフアメモリ27に格納さ
れているレコードを出力することによつて行われ
る。ここで、2つのレコードを結合して出力する
場合、前述した比較演算が2つのレコードの語数
の多いレコードの語長分によつて規定されるのに
対し、その出力所要時間は両レコードの語長の
「和」に相当した時間となる。この為、一般にレ
コードの比較演算時間より、レコードの出力処理
時間の方が多くかかる。これに対処するべく、例
えば前記演算部ではその比較演算を1サイクルの
前半で実行し、後半を待ち状態とする等すれば良
い。 この他に、演算部には現在キイ・フイールドを
処理中か否かを出力する回路や、レコードの最後
の1語、つまりサイクルの最後を処理中か否かを
出力する回路等が設けられることは勿論のことで
ある。 次に、実施例装置における併合演算処理の基本
的な流れについて説明する。 () 先ずリレーシヨン{Rx}をそのキイの
値に対し昇順(小さい順)にソート処理し、レ
コードの重複検出を行つて重複フラグFを付加
した後、第1のレコードバツフアメモリ16に
格納する。同様にリレーシヨン{Ry}をその
キイの値に対し昇順にソート処理し、レコード
の重複検出を行つて重複フラグFを付加した
後、第2のレコードバツフアメモリ17に格納
する。 () 次に上記各リレーシヨン{Rx}{Ry}
の先頭のレコードに、それぞれポインタ(以
降、これを単にポインタと称する)と、バツク
アツプ用のポインタ(以降、これをバツクアツ
プポインタと称する)を置く。 () そして上記ポインタの示すレコードをレ
コードバツフアメモリ16,17から読出して
そのキイの値を比較する。そして、上記レコー
ドのキイの値が等しければ、併合条件を満すと
して、両レコードを合せて出力し、上記キイの
値が異なる場合にはそのレコードの出力をやめ
る。 しかして、上記キイの値が等しい場合には、
そのレコードに付された重複フラグFを調べ、
その重複フラグFに従つた以下の処理を行う。 先ず両レコードの重複フラグFが共に
“0”ならば、各リレーシヨンのポインタを、
次のレコードに進める。このとき、バツクア
ツプポインタも、上記ポインタの新しい値を
セーブする。 いずれか一方のレコードの重複フラグFの
みが“1”ならば、重複フラグFが“1”で
あるレコードを含む側のリレーシヨンのポイ
ンタを次のレコードに進める。この時、バツ
クアツプポインタの値も上記ポインタの値で
同時に更新する。そして重複フラグFが
“0”であるレコードを含む側のリレーシヨ
ンについては、バツクアツプポインタが指し
ているレコードをポインタとする。この場
合、バツクアツプポインタの値は更新しな
い。 そして両レコードの重複フラグFが共に
“1”ならば、リレーシヨン{Ry}のポイン
タを次のレコードまで進め、そのバツクアツ
プポインタについては更新しない。一方、リ
レーシヨン{Rx}については、バツクアツ
プポインタが指しているレコードをポインタ
とする。 また上述したようにキイの値が異なる場合
には、キイの値の小さい方のリレーシヨン、
つまり前記ソート処理方向に若い値のキイを
持つリレーシヨンのポインタを次のレコード
まで進める。このときバツクアツプポインタ
も同時に更新する。尚、この場合には前記重
複フラグFはポインタの制御には利用されな
い。 () しかる後、前記各リレーシヨン中に次に
比較するレコードがあれば、前述した()の
処理に戻り、いずれか一方のリレーシヨンにレ
コードがなくなれば、上述した処理を終了す
る。 ところで上記()の処理において、2つのレ
コードのキイの値が等しい場合について検討する
と、各リレーシヨンにおけるレコードが重複して
いるか否かにより、4通りの状態が考えられる。
この各状態について、リレーシヨン{R4}とリ
レーシヨン{R5}を例に、前述したポインタの
制御を説明する。 (1) 両レコードが共に重複していない場合のリレ
ーシヨン{R4}{R5}は、例えば次のように
示される。
ので、その目的とするところは、2つのリレーシ
ヨン間の併合演算を簡易に、且つ高速に実行する
ことができるデータ処理装置を提供することにあ
る。 〔発明の概要〕 本発明は、所定の規則に従つてソート処理が施
された複数のレコードからなる第1および第2の
リレーシヨンをそれぞれ入力して第1および第2
のレコードバツフアメモリに格納する時、各リレ
ーシヨンにおけるレコードの属性を示すキイの値
の重複を検出して、その重複検出結果を上記各レ
コードに対応させて前記第1および第2のレコー
ドバツフアメモリに格納する。そして関係演算に
必要なレコードを前記第1および第2のレコード
バツフアメモリから順次読み出して比較し、その
比較結果に従つて上記レコードの出力を制御する
とき、前記比較結果と該レコードに付された前記
重複検出結果とに従つて次に読出すレコードを制
御するようにしたものである。そして特にこのレ
コードの読出し制御を 前記比較結果が等しくない場合には前記ソー
ト処理方向に若い値のレコードを格納したレコ
ードバツフアメモリから次のレコードを読出す
と共に、他方のレコードバツフアメモリからは
同じレコードを読出し、 前記比較結果が等しいときであつて、これら
の各レコードが重複レコードでない場合には前
記第1および第2のレコードバツフアメモリか
ら次のレコードをそれぞれ読出し、 前記比較結果が等しいときであつて、一方の
レコードだけが重複レコードとして示される場
合にはそのレコードを格納したレコードバツフ
アメモリから次のレコードを読出すと共に他方
のレコードバツフアメモリからは重複レコード
中の先頭レコードを読出し、 前記比較結果が等しいときであつて、前記各
レコードが共に重複レコードとして示されると
きには前記第1のレコードバツフアメモリから
同じレコードを読出すと共に前記第2のレコー
ドバツフアメモリから次のレコードを読出す ようにしたことを特徴とするものである。 〔発明の効果〕 かくして本発明によれば、2つのリレーシヨン
の各レコードに付された重複検出結果に従つて上
記リレーシヨン中の重複レコードについてのみ、
そのレコードの繰返し読出しを行い、その他のレ
コードについては順にその読出しを行うので、ソ
ート処理された2つのリレーシヨンをそれぞれほ
ぼ1回スキヤンニングするだけで併合演算に必要
なレコードの比較処理の全てを行うことが可能と
なる。従つて、各リレーシヨンにおけるレコード
の重複が殆んどない場合には、その処理に必要な
時間はほぼ ({R1}のレコードの数) +({R2}のレコードの数) となり、処理所要時間の大幅な短縮化を図ること
が可能となる。しかも各リレーシヨンのレコード
のキイの値の重複を調べておき、そのレコード重
複情報を利用して各レコードの読出し制御を行う
ので、その制御アルゴリズムが簡単であり、構成
の複雑化を招来することなしにデータ処理装置を
構築することができる等の実用上多大なる効果が
奏せられる。 〔発明の実施例〕 以下、図面を参照して本発明の一実施例につき
説明する。 図は、本発明の実施例に係るデータ処理装置の
概略構成図である。データ処理装置は、基本的に
はマージ・ソート処理をベースとした関係演算を
行う演算部と、その関係演算結果の出力制御を行
う出力制御部とにより構成される。 所定の規則に従つてソート処理が施された重複
のレコードからなる第1および第2のリレーシヨ
ンがそれぞれ入力される演算部の入力段には、各
リレーシヨン中のレコードのキイの値の重複を検
出する重複検出回路が設けられている。この重複
検出回路は、順次入力されるレコードの1語をセ
ツトする入力レジスタ11と、1レコード分の記
憶容量を持ち、かつFIFO(フアーストイン・フア
ストアウト)機能を有するレコードバツフアメモ
リ12と、このレコードバツフアメモリ12から
読出されるレコードのキイの値と前記入力レジス
タ11にセツトされた次のレコードのキイの値と
を比較する比較回路13と、上記レコードバツフ
アメモリ12から読出されるレコードを1語分づ
つセツトして次段の回路に転送するデータレジス
タ14と、前記比較回路13が出力するイコール
信号Eから前記レコードバツフアメモリ12にセ
ツトされていたレコードのキイの値が、現入力レ
コードのキイの値のと重複しているか否かを判定
し、重複している場合に重複フラグFをセツトす
るフラグ回路15とを備えて構成される。 尚、前記各レコードが複数の語によつて構成さ
れる場合、比較回路13は各語毎に比較処理して
いることから、入力リレーシヨン中の相前後する
レコードのキイ(属性)の値が重複しているか否
かが決定されるタイミングは、そのレコードの最
後の語について処理したときとなる。従つて、前
記重複フラグFは、前記レコードの最後の1語が
前記データレジスタ14を介して次段に転送され
るときに有効となる。 しかしてこのような重複検出回路を介して入力
される第1のリレーシヨンの各レコードは、第1
のレコードバツフアメモリ16に入力されて格納
される。この時、前記重複検出回路にて検出され
た各レコードについての重複検出結果(重複フラ
グF)が、そのレコードに対応して該第1のレコ
ードバツフアメモリ16に格納される。同様にし
て第2のリレーシヨンのレコードが入力されたと
き、そのレコードは前記重複検出回路を介して第
2のレコードバツフアメモリ17に格納され、各
レコードについて検出された重複検出結果(重複
フラグF)が、そのレコードに対応して該第2の
レコードバツフアメモリ17に格納される。 これらの第1および第2のレコードバツフアメ
モリ16,17は、1つのリレーシヨンのレコー
ドを記憶できる容量をそれぞれ持ち、レコード読
出し制御回路18,19の制御を受けて格納レコ
ードおよびそのレコードに付加された重複検出結
果の読出しが制御されるようになつている。 尚、上記レコード読出し制御回路18,19
は、それぞれ読出し制御用のアドレスレジスタ2
0と、バツクアツプレジスタ21とを具備して構
成される。バツクアツプレジスタ21は、後述す
るレコードの比較結果と各レコードに付された重
複検出結果(重複フラグF)とに従つて、前記ア
ドレスレジスタ20の値をセーブしたり、或いは
該バツクアツプレジスタ21に格納している値を
前記アドレスレジスタ20にロードするものであ
る。これらのアドレスレジスタ20およびバツク
アツプレジスタ21にセツトされる値の、前記比
較結果と重複検出結果(重複フラグF)とに基づ
く更新制御によつて、前記第1および第2のレコ
ードバツフアメモリ16,17から読出される各
リレーシヨンのレコードが制御される。 この他にも、本発明の要旨とは直接関係しない
ことから図示していないが、レコード読出し制御
回路18,19には書き込み用のレジスタや、こ
れらのレジスタを制御する制御回路が設けられて
いることは云うまでもない。 しかして前記第1および第2のレコードバツフ
アメモリ16,17からそれぞれ読出されるレコ
ードデータ、およびそのレコードに付された重複
検出結果の情報は、データレジスタ22,23に
それぞれセツトされる。 比較回路24は、上記データレジスタ22,2
3にそれぞれセツトされたレコードデータを相互
に比較し、その比較結果を前記レコード読出し制
御回路18,19に出力すると共に、次段の出力
制御回路25に出力している。前記レコード読出
し制御回路18,19は、このような比較回路2
4によるレコードの比較結果と、上記データレジ
スタ22,23にセツトされた重複検出結果の情
報とを入力して、前記各レジスタ20,21のセ
ツトデータを更新制御している。 1レコード分の記憶容量を持ち、且つFIFO機
能を有する第3および第4のレコードバツフアメ
モリ26,27は、前記データレジスタ22,2
3を介して前記レコードバツフアメモリ16,1
7からそれぞれ転送されてきた各レコードを、一
旦格納するものである。これらのレコードバツフ
アメモリ26,27は、前記レコードの比較処理
が語単位で行われ、その比較結果が得られるタイ
ミングがレコードの最後の語を処理した時点であ
ることから、該レコードの全ての語に対する比較
処理が終了するまで、そのレコードの各語を保存
する為に設けられるものである。そして、このよ
うにして上記各レコードバツフアメモリ26,2
7にそれぞれ格納されたレコードは、前記出力制
御回路25の制御を受けて読出し制御され、選択
回路28から出力レジスタ29を介して出力され
るようになつている。 尚、このレコードの出力は、第3のレコードバ
ツフアメモリ26に格納されたレコードと、第4
のレコードバツフアメモリ27に格納されたレコ
ードとを結合して行われる。この結合処理は選択
回路28にて、例えば第3のレコードバツフアメ
モリ26に格納されているレコードを出力した
後、第4のレコードバツフアメモリ27に格納さ
れているレコードを出力することによつて行われ
る。ここで、2つのレコードを結合して出力する
場合、前述した比較演算が2つのレコードの語数
の多いレコードの語長分によつて規定されるのに
対し、その出力所要時間は両レコードの語長の
「和」に相当した時間となる。この為、一般にレ
コードの比較演算時間より、レコードの出力処理
時間の方が多くかかる。これに対処するべく、例
えば前記演算部ではその比較演算を1サイクルの
前半で実行し、後半を待ち状態とする等すれば良
い。 この他に、演算部には現在キイ・フイールドを
処理中か否かを出力する回路や、レコードの最後
の1語、つまりサイクルの最後を処理中か否かを
出力する回路等が設けられることは勿論のことで
ある。 次に、実施例装置における併合演算処理の基本
的な流れについて説明する。 () 先ずリレーシヨン{Rx}をそのキイの
値に対し昇順(小さい順)にソート処理し、レ
コードの重複検出を行つて重複フラグFを付加
した後、第1のレコードバツフアメモリ16に
格納する。同様にリレーシヨン{Ry}をその
キイの値に対し昇順にソート処理し、レコード
の重複検出を行つて重複フラグFを付加した
後、第2のレコードバツフアメモリ17に格納
する。 () 次に上記各リレーシヨン{Rx}{Ry}
の先頭のレコードに、それぞれポインタ(以
降、これを単にポインタと称する)と、バツク
アツプ用のポインタ(以降、これをバツクアツ
プポインタと称する)を置く。 () そして上記ポインタの示すレコードをレ
コードバツフアメモリ16,17から読出して
そのキイの値を比較する。そして、上記レコー
ドのキイの値が等しければ、併合条件を満すと
して、両レコードを合せて出力し、上記キイの
値が異なる場合にはそのレコードの出力をやめ
る。 しかして、上記キイの値が等しい場合には、
そのレコードに付された重複フラグFを調べ、
その重複フラグFに従つた以下の処理を行う。 先ず両レコードの重複フラグFが共に
“0”ならば、各リレーシヨンのポインタを、
次のレコードに進める。このとき、バツクア
ツプポインタも、上記ポインタの新しい値を
セーブする。 いずれか一方のレコードの重複フラグFの
みが“1”ならば、重複フラグFが“1”で
あるレコードを含む側のリレーシヨンのポイ
ンタを次のレコードに進める。この時、バツ
クアツプポインタの値も上記ポインタの値で
同時に更新する。そして重複フラグFが
“0”であるレコードを含む側のリレーシヨ
ンについては、バツクアツプポインタが指し
ているレコードをポインタとする。この場
合、バツクアツプポインタの値は更新しな
い。 そして両レコードの重複フラグFが共に
“1”ならば、リレーシヨン{Ry}のポイン
タを次のレコードまで進め、そのバツクアツ
プポインタについては更新しない。一方、リ
レーシヨン{Rx}については、バツクアツ
プポインタが指しているレコードをポインタ
とする。 また上述したようにキイの値が異なる場合
には、キイの値の小さい方のリレーシヨン、
つまり前記ソート処理方向に若い値のキイを
持つリレーシヨンのポインタを次のレコード
まで進める。このときバツクアツプポインタ
も同時に更新する。尚、この場合には前記重
複フラグFはポインタの制御には利用されな
い。 () しかる後、前記各リレーシヨン中に次に
比較するレコードがあれば、前述した()の
処理に戻り、いずれか一方のリレーシヨンにレ
コードがなくなれば、上述した処理を終了す
る。 ところで上記()の処理において、2つのレ
コードのキイの値が等しい場合について検討する
と、各リレーシヨンにおけるレコードが重複して
いるか否かにより、4通りの状態が考えられる。
この各状態について、リレーシヨン{R4}とリ
レーシヨン{R5}を例に、前述したポインタの
制御を説明する。 (1) 両レコードが共に重複していない場合のリレ
ーシヨン{R4}{R5}は、例えば次のように
示される。
【表】
しかしてこの場合には、サイクルでレコー
ド[2/G]と[2/p]とを出力する。この
サイクルの最後では、仮にリレーシヨン
{R4}あるいはリレーシヨン{R5}のポイン
タが指しているレコードを残したとしても、先
に進んだ方のポインタが指すレコードのキイの
値が、残された方のレコードのキイ値より大き
いことが明らかであることから、両リレーシヨ
ンのポインタを同時に更新できる。 次のサイクルでは両リレーシヨン共に、そ
のポインタを次のレコードである[3/T]と
[5/h]に進めて、その比較処理を行えば良
い。 (2) リレーシヨン{R4}のレコードのキイの値
が重複しており、リレーシヨン{R5}のレコ
ードのキイの値が重複していない場合の例は、
次のように示される。
ド[2/G]と[2/p]とを出力する。この
サイクルの最後では、仮にリレーシヨン
{R4}あるいはリレーシヨン{R5}のポイン
タが指しているレコードを残したとしても、先
に進んだ方のポインタが指すレコードのキイの
値が、残された方のレコードのキイ値より大き
いことが明らかであることから、両リレーシヨ
ンのポインタを同時に更新できる。 次のサイクルでは両リレーシヨン共に、そ
のポインタを次のレコードである[3/T]と
[5/h]に進めて、その比較処理を行えば良
い。 (2) リレーシヨン{R4}のレコードのキイの値
が重複しており、リレーシヨン{R5}のレコ
ードのキイの値が重複していない場合の例は、
次のように示される。
【表】
この場合には、サイクルの終りで、リレー
シヨン{R4}のポインタを[2/G]から
[2/Q]へ進ませ、リレーシヨン{R5}につ
いてはそのポインタを固定的にレコード[2/
p]を指すようにする。 そしてサイクルでは、レコードの重複フラ
グFが共に“0”となるので、両レコードのポ
インタを同時更新する。 (3) リレーシヨン{R4}のレコードのキイの値
が重複せず、リレーシヨン{R5}のレコード
のキイの値だけが重複している場合には、次の
ようになる。
シヨン{R4}のポインタを[2/G]から
[2/Q]へ進ませ、リレーシヨン{R5}につ
いてはそのポインタを固定的にレコード[2/
p]を指すようにする。 そしてサイクルでは、レコードの重複フラ
グFが共に“0”となるので、両レコードのポ
インタを同時更新する。 (3) リレーシヨン{R4}のレコードのキイの値
が重複せず、リレーシヨン{R5}のレコード
のキイの値だけが重複している場合には、次の
ようになる。
【表】
この場合には、サイクル,では、リレー
シヨン{R4}のポインタを固定的にレコード
[2/G]を指すようにし、リレーシヨン
{R5}のポインタを[2/p]から[2/t]
へと先に進ませるようにすればよい。 そしてサイクルでは、レコードの重複フラ
グFが共に“0”となることから両レコードの
ポインタの同時更新を行えば良い。 (4) 次に、両リレーシヨンのレコードのキイの値
が共に重複している場合には、例えば次のよう
になる。
シヨン{R4}のポインタを固定的にレコード
[2/G]を指すようにし、リレーシヨン
{R5}のポインタを[2/p]から[2/t]
へと先に進ませるようにすればよい。 そしてサイクルでは、レコードの重複フラ
グFが共に“0”となることから両レコードの
ポインタの同時更新を行えば良い。 (4) 次に、両リレーシヨンのレコードのキイの値
が共に重複している場合には、例えば次のよう
になる。
【表】
この場合には、サイクル,では、リレー
シヨン{R4}のポインタを固定的にレコード
[2/G]を指すようにし、リレーシヨン
{R5}のポインタをレコード[2/p]から
[2/t]へと先に進むようにする。但し、リ
レーシヨン{R5}のバツクアツプポインタは、
重複しているレコードの先頭のレコード[2/
p]を指したまま固定する。 サイクルでは、リレーシヨン{R4}のレ
コードの重複フラグFだけが“1”になる。そ
こで、リレーシヨン{R4}のポインタを次の
レコード[2/Z]に進め、リレーシヨン
{R5}のポインタを、上記バツクアツプポイン
タが指すレコード[2/p]に戻す。 そしてサイクル,では、リレーシヨン
{R4}のポインタを固定しておき、リレーシヨ
ン{R5}のポインタを[2/p]から[2/
t]へと先に進ませる。この時、リレーシヨン
{R4}のレコードの重複フラグFは“0”なの
で、リレーシヨン{R5}のバツクアツプポイ
ンタは更新される。 サイクルでは、両レコードの重複フラグF
が共に“0”となり、両リレーシヨンのポイン
タを共に次のレコードに進める。 以上(1)〜(4)の処理を行うことにより、両リレー
シヨンにおける[2/α]と[2/β]の全ての
組合せに対する併合演算処理がなされることにな
る。従つて、この処理の後には両リレーシヨンの
ポインタをそれぞれ先頭に戻す必要がなくなる。 次に前述した実施例装置の処理動作につき、リ
レーシヨン{R1}{R2}を例に挙げて説明する。
尚、ここではリレーシヨン{R1}{R2}の各属
性の語長が全て1語長であり、2語長で1レコー
ドが構成されるものとする。また、1語の処理時
間を1フエーズとし、1レコードの処理時間(1
サイクル)が2フエーズからなるものとする。 先ず最初に、リレーシヨン{R1}を構成する
複数のレコードを、そのキイ(属性A)の値でそ
れぞれ昇順のソート処理を施して、次のようなリ
レーシヨンを得る。
シヨン{R4}のポインタを固定的にレコード
[2/G]を指すようにし、リレーシヨン
{R5}のポインタをレコード[2/p]から
[2/t]へと先に進むようにする。但し、リ
レーシヨン{R5}のバツクアツプポインタは、
重複しているレコードの先頭のレコード[2/
p]を指したまま固定する。 サイクルでは、リレーシヨン{R4}のレ
コードの重複フラグFだけが“1”になる。そ
こで、リレーシヨン{R4}のポインタを次の
レコード[2/Z]に進め、リレーシヨン
{R5}のポインタを、上記バツクアツプポイン
タが指すレコード[2/p]に戻す。 そしてサイクル,では、リレーシヨン
{R4}のポインタを固定しておき、リレーシヨ
ン{R5}のポインタを[2/p]から[2/
t]へと先に進ませる。この時、リレーシヨン
{R4}のレコードの重複フラグFは“0”なの
で、リレーシヨン{R5}のバツクアツプポイ
ンタは更新される。 サイクルでは、両レコードの重複フラグF
が共に“0”となり、両リレーシヨンのポイン
タを共に次のレコードに進める。 以上(1)〜(4)の処理を行うことにより、両リレー
シヨンにおける[2/α]と[2/β]の全ての
組合せに対する併合演算処理がなされることにな
る。従つて、この処理の後には両リレーシヨンの
ポインタをそれぞれ先頭に戻す必要がなくなる。 次に前述した実施例装置の処理動作につき、リ
レーシヨン{R1}{R2}を例に挙げて説明する。
尚、ここではリレーシヨン{R1}{R2}の各属
性の語長が全て1語長であり、2語長で1レコー
ドが構成されるものとする。また、1語の処理時
間を1フエーズとし、1レコードの処理時間(1
サイクル)が2フエーズからなるものとする。 先ず最初に、リレーシヨン{R1}を構成する
複数のレコードを、そのキイ(属性A)の値でそ
れぞれ昇順のソート処理を施して、次のようなリ
レーシヨンを得る。
【表】
このリレーシヨン{R1}のレコードデータを
順次入力して、先ずそのリレーシヨン中に重複レ
コードがあるか否かを検査し、その検査結果をレ
コードに同期して出力する。この重複レコードの
検出は次のようにして行われる。 即ち、リレーシヨン{R1}の各レコードは、
上記したソート処理された順序で入力され、従つ
て第1サイクルではレコード[2/F]が入力さ
れる。 この第1サイクルの第1フエーズでは、1番目
のレコードの第1の語[2]が入力され、入力レ
ジスタ11にセツトされ、レコードバツフアメモ
リ12に格納される。 次の第2フエーズでは、次の第2の語[F]が
入力レジスタ11にセツトされ、前記レコードバ
ツフアメモリ12に格納される。この第1および
第2フエーズの処理によつて最初のレコードの入
力が終了する。 続く第2サイクルでは、つぎの3つの処理が平
行して行われる。 その1つは2番目のレコード[3/U]を入力
して前記レコードバツフアメモリ12に格納する
動作であり、2つ目は上記2番目のレコードと前
記レコードバツフアメモリ12から読出される1
番目のレコード[2/F]とを比較する動作であ
る。 そして3つ目は前記レコードバツフアメモリ1
2から読出した1番目のレコード[3/U]を第
1のレコードバツフアメモリ16に格納する動作
である。 この時、上記1番目のレコードに対して求めら
れた重複フラグFの値も上記第1のレコードバツ
フアメモリ16に格納する。 即ち、第1フエーズでの1つ目の処理は第1サ
イクルと同様に、2番目のレコードの先頭の1語
である[3]を入力し、入力レジスタ11にセツ
トし、同時にレコードバツフアメモリ12に格納
することにより行われる。 そしてFIFO機能を有しているレコードバツフ
アメモリ12から、1サイクル前に記憶したレコ
ードの先頭の語[2]を読出し、これをデータレ
ジスタ14を介して第1のレコードバツフアメモ
リ16に転送すると共に比較回路13に与え、前
記入力レジスタ11にセツトされている2番目の
レコードの最初の語[3]と比較する。この場
合、2つの語が等しくないこと、つまり条件に合
致していないことがわかる。 続く第2フエーズでは、入力レジスタ11か
ら、2番目のレコードの2語目の値[U]をレコ
ードバツフアメモリ12に格納し、このレコード
バツフアメモリ12から前記1番目のレコードの
次の語である[F]を読出し、これをデータレジ
スタ14を経由して第1のデーレコードバツフア
メモリ16に転送し、同時に前記入力レジスタ1
1にセツトされた語[U]と比較する。このフエ
ーズはレコードの最後の1語の処理であり、前記
1番目のレコードのキイの値が次のレコードのキ
イの値と重複していないので、比較回路13のイ
コール信号E(=0)を受けてフラグ回路15は
重複フラグF(=0)を出力する。 以下、同様な処理が各サイクル毎に行われる
が、第3サイクルではレコード[6/D]が入力
され、続く第4サイクルではレコード[6/P]
が入力されることから、、上記第3サイクルで入
力されたレコード[6/D]に対しては、重複フ
ラグF(=1)が付される。 このような重複レコードの検出処理によつて、
第1のレコードバツフアメモリ16には前記リレ
ーシヨン{R1}が次のような形で格納される。
順次入力して、先ずそのリレーシヨン中に重複レ
コードがあるか否かを検査し、その検査結果をレ
コードに同期して出力する。この重複レコードの
検出は次のようにして行われる。 即ち、リレーシヨン{R1}の各レコードは、
上記したソート処理された順序で入力され、従つ
て第1サイクルではレコード[2/F]が入力さ
れる。 この第1サイクルの第1フエーズでは、1番目
のレコードの第1の語[2]が入力され、入力レ
ジスタ11にセツトされ、レコードバツフアメモ
リ12に格納される。 次の第2フエーズでは、次の第2の語[F]が
入力レジスタ11にセツトされ、前記レコードバ
ツフアメモリ12に格納される。この第1および
第2フエーズの処理によつて最初のレコードの入
力が終了する。 続く第2サイクルでは、つぎの3つの処理が平
行して行われる。 その1つは2番目のレコード[3/U]を入力
して前記レコードバツフアメモリ12に格納する
動作であり、2つ目は上記2番目のレコードと前
記レコードバツフアメモリ12から読出される1
番目のレコード[2/F]とを比較する動作であ
る。 そして3つ目は前記レコードバツフアメモリ1
2から読出した1番目のレコード[3/U]を第
1のレコードバツフアメモリ16に格納する動作
である。 この時、上記1番目のレコードに対して求めら
れた重複フラグFの値も上記第1のレコードバツ
フアメモリ16に格納する。 即ち、第1フエーズでの1つ目の処理は第1サ
イクルと同様に、2番目のレコードの先頭の1語
である[3]を入力し、入力レジスタ11にセツ
トし、同時にレコードバツフアメモリ12に格納
することにより行われる。 そしてFIFO機能を有しているレコードバツフ
アメモリ12から、1サイクル前に記憶したレコ
ードの先頭の語[2]を読出し、これをデータレ
ジスタ14を介して第1のレコードバツフアメモ
リ16に転送すると共に比較回路13に与え、前
記入力レジスタ11にセツトされている2番目の
レコードの最初の語[3]と比較する。この場
合、2つの語が等しくないこと、つまり条件に合
致していないことがわかる。 続く第2フエーズでは、入力レジスタ11か
ら、2番目のレコードの2語目の値[U]をレコ
ードバツフアメモリ12に格納し、このレコード
バツフアメモリ12から前記1番目のレコードの
次の語である[F]を読出し、これをデータレジ
スタ14を経由して第1のデーレコードバツフア
メモリ16に転送し、同時に前記入力レジスタ1
1にセツトされた語[U]と比較する。このフエ
ーズはレコードの最後の1語の処理であり、前記
1番目のレコードのキイの値が次のレコードのキ
イの値と重複していないので、比較回路13のイ
コール信号E(=0)を受けてフラグ回路15は
重複フラグF(=0)を出力する。 以下、同様な処理が各サイクル毎に行われる
が、第3サイクルではレコード[6/D]が入力
され、続く第4サイクルではレコード[6/P]
が入力されることから、、上記第3サイクルで入
力されたレコード[6/D]に対しては、重複フ
ラグF(=1)が付される。 このような重複レコードの検出処理によつて、
第1のレコードバツフアメモリ16には前記リレ
ーシヨン{R1}が次のような形で格納される。
【表】
しかる後、リレーシヨン{R1}同様なソート
処理が施されたリレーシヨン{R2} を順次入
力し、同様に重複レコードの検出を行つて第2の
レコードバツフアメモリ17に次のようなリレー
シヨンを得る。
処理が施されたリレーシヨン{R2} を順次入
力し、同様に重複レコードの検出を行つて第2の
レコードバツフアメモリ17に次のようなリレー
シヨンを得る。
【表】
以上の処理を経て、各レコードバツフアメモリ
16,17に格納されたリレーシヨン間の併合演
算処理を次のようにして行う。 先ず、両リレーシヨンの先頭のレコードにポイ
ンタを置く。つまりレコード読出し制御回路1
8,19の各アドレスレジスタ20に前記各リレ
ーシヨンの先頭レコードの1番目の語、つまりレ
コード[2/F]の[2]と、レコード[1/
e]の[1]を記憶している番地を指すようにポ
インタをそれぞれセツトする。同時に各アドレス
レジスタ20にセツトされた値を、バツクアツプ
レジスタ21にそれぞれセーブする。 以上の準備を完了して、併合演算処理を開始す
る。 先ず第1サイクルでは次の3つの処理を平行し
て行う。但し、前述した重複レコードの検出処理
における第1サイクルと、ここでの第1サイクル
とは異なるタイミングである。 即ち、第1に前記第1のレコードバツフアメモ
リ16から読出したリレーシヨン{R4}の1番
目のレコード[2/F]と、第2のレコードバツ
フアメモリ17から読出したリレーシヨン{R5}
の1番目のレコード[1/e]とを比較する。そ
して第1のレコードバツフアメモリ16から読出
した1番目のレコード[2/F]を第3のレコー
ドバツフアメモリ26に格納し、第2のレコード
バツフアメモリ17から読出した1番目のレコー
ド[1/e]を第4のレコードバツフアメモリ2
7に格納する。そして次のサイクルで比較するレ
コードを選択するべく前記ポインタの制御を行
う。 具体的には、その第1フエーズでは、第1およ
び第2のレコードバツフアメモリ16,17か
ら、前記各アドレスレジスタ20が指す語[2]
[1]を同時に読出し、ころをデータレジスタ2
2,23セツトした後、比較回路24にて比較す
る。この場合、両レコードの各語の値が一致しな
いので、つまりリレーシヨン{R1}のキイの値
の方が大きいので、該レコードを出力しないこと
を決定する。そこで、出力制御回路25に対し
て、次の第2サイクルでレコード[2/F]
[1/r]を結合して出力しないように通知する。
そして前記各アドレスレジスタ20をカウントア
ツプする。尚、次のサイクルでは、上記比較され
たキイの値の小さい方のリレーシヨン{R2}の
ポインタを進め、リレーシヨン{R1}のポイン
タは元に戻す。 この処理と同時に前記各データメモリ22,2
3に格納されたデータ[2][1]をそれぞれ読
出して、前記レコードバツフアメモリ26,27
にそれぞれ格納する。 続く第2フエーズでは、前記各レコードバツフ
アメモリ16,17から、各レコードの2番目の
語[F][e]を読出し、データレジスタ22,
23を経由して、前記レコードバツフアメモリ2
6,27にそれぞれ格納する。そして、リレーシ
ヨン{R2}のレコードの方がそのキイの値が小
さいので、リレーシヨン{R2}のポインタを先
に進め、リレーシヨン{R1}のポインタはその
ままにする。即ち、この第2フエーズから次のフ
エーズである第2サイクルの第1フエーズに移る
時、レコード読出し制御回路18ではそのアドレ
スレジスタ20に、バツクアツプレジスタ21の
値をロードし、先頭のレコード[2/F]をもう
一度読出せるようにする。他方、レコード読出し
制御回路19では、そのアドレスレジスタ20を
カウントアツプし、次のレコード[2/k]を読
出せるようにする。そして、次の第2サイクルの
最初で、上記バツクアツプレジスタ21に上記ア
ドレスレジスタ20の値をセーブする。 続く第2サイクルでは、第1のレコードバツフ
アメモリ16から読出したリレーシヨン{R4}
の1番目のレコード[2/F]と、第2のレコー
ドバツフアメモリ17から読出したリレーシヨン
{R5}の2番目のレコード[2/q]とを比較す
る。 そして上記各レコードバツフアメモリ16,1
7からそれぞれ読出したレコード[2/F]
[2/q]を、前記レコードバツフアメモリ26,
27にそれぞれ格納し、次のサイクルで比較する
レコードを選択する。 以上の各処理は、第1サイクルでの処理と同様
に行われるが、この場合、読出したレコードが
[2/F][2/k]であることから、そのキイの
値が一致する。そこで次の第3サイクルでは、出
力制御回路25の出力制御によつて、前記第3お
よび第4のレコードバツフアメモリ26,27か
らそれぞれ読出されるレコード[2/F][2/
k]が結合して出力される。 またこのとき第2フエーズの終りで、その比較
結果が同値であることから、前記各レコードにそ
れぞれ付された重複フラグFが前記レコード読出
し制御回路18,19に入力される。この場合、
両レコードに付された重複フラグFが共に“0”
であることから、両リレーシヨンに対するポイン
タがそれぞれ先に進められる。つまり、各アドレ
スレジスタ20がそれぞれカウントアツプされ、
次の第3サイクルの先頭でその値が前記各バツク
アツプレジスタ21にそれぞれセーブされる。 次の第3サイクルでは、前述した第1および第
2サイクルで行われる3つの処理に加えて、レコ
ードの結合出力動作が行われる。 即ち、第3サイクルではリレーシヨン{R4}
の2番目のレコード[3/U]と、リレーシヨン
{R5}の2番目のレコード[2/k]とが比較さ
れ、同時に上記各レコード[3/U][2/k]
が前記各レコードバツフアメモリ26,27にそ
れぞれ転送して格納され、更に次のサイクルで比
較するレコードを選択する為のポインタ制御が行
われる。 これに加えて前記レコードバツフアメモリ2
6,27にそれぞれ格納され、そのキイの値が等
しいと判定された、前記リレーシヨン{R1}の
1番目のレコード[2/F]と、リレーシヨン
{R2}の2番目のレコード[2/k]が選択回路
28を介して読出され、結合して出力される。 このレコードの結合出力動作を更に詳しく説明
すると、その第1フエーズで第3のレコードバツ
フアメモリ26からレコードの先頭の語[2]を
読出し、選択回路28を経由して出力レジスタ2
9にセツトし、これを出力する。続く第2フエー
ズでは次の語[F]を読出し、同様に出力する。
しかる後、第3フエーズと第4フエーズでは、第
2のレコードバツフアメモリ27からリレーシヨ
ン{R2}のレコードの語[2][q]を順に読出
し、前記選択回路28を経由して出力レジスタ2
9にセツトして出力する。 この結果、出力レジスタ29の出力としてリレ
ーシヨン{R3}の第1番目のレコード[2/
F/2/q]が得られる。 これ以降のサイクルでは、上記第3サイクルと
同様な処理が行われる。 しかして第4サイクルでは、第3サイクルで比
較されたレコードが[3/U]と[2/k]であ
り、そのキイの値が異なることから、そのレコー
ドの結合出力は行われない。 このようなサイクルが同様にて繰返されて、第
4サイクルにてレコード[6/D][6/s]が
比較された場合、キイの値が等しいことが検出さ
れる。この場合にも上記レコード[6/D]
[6/s]が結合して出力される。しかしてこの
時、上記各レコードにそれぞれ付された重複フラ
グFが共に“1”なので、前述したようにリレー
シヨン{R1}の読出しを制御するレコード読出
し制御回路18のアドレスレジスタ20には、そ
のバツクアツプレジスタ21の値がロードされ、
再度前記レコード[6/D]が読出されるように
ポインタ制御がなされる。一方このとき、レコー
ド読出し制御回路19のアドレスレジスタ20は
カウントアツプされ、次のレコード[6/w]を
読出すようにポインタ制御される。しかし、レコ
ード読出し制御回路19のバツクアツプレジスタ
21の値はそのまま維持され、そのリレーシヨン
における重複レコードの最初、つまりレコード
[6/s]に戻れるようにしておく。 第5サイクルでも、レコードのキイの値が共に
[6]として一致する。従つてこの場合のレコー
ド[6/D][6/w]が結合されて出力される。
しかしこの場合、リレーシヨン{R1}の重複フ
ラグFだけが“1”であることから、このサイク
ルの最後で、レコード読出し制御回路18のアド
レスレジスタ20の値がカウントアツプされて次
のレコード[6/P]が読出されるようにされ、
且つそのバツクアツプレジスタ21の値が上記ア
ドレスレジスタ20の値に更新される。つまり、
このレコード[6/P]が再度読出せるようにバ
ツクアツプポインタが制御される。 そして、レコード読出し制御回路19のアドレ
スレジスタ20には、そのバツクアツプレジスタ
21に格納された値がロードされ、そのリレーシ
ヨンの重複しているレコードの先頭であるレコー
ド[6/s]が読出されるようにポインタ制御が
なされる。 次の第6サイクルでは、レコード[6/P]
[6/s]が比較され、そのキイの値が一致する
ことから該レコードの結合出力が行われる。そし
て、リレーシヨン{R2}側の重複フラグFだけ
が“1”であることから、レコード読出し制御回
路18のポインタ更新は行われず、レコード読出
し制御回路19のアドレスレジスタ20の値がカ
ウントアツプされ、且つそのバツクアツプレジス
タ21の値が上記アドレスレジスタ20の値に更
新される。 そして第7サイクルでは、レコード[6/P]
[6/w]が比較され、結合出力される。そして
この場合、上記各レコードの重複フラグFが共に
“0”であるので、そのリレーシヨンのポインタ
は共に次のレコードを指すように制御される。 然し乍ら、この場合には両リレーシヨンに次の
レコードがないことから、このサイクルでレコー
ドの比較処理が終了する。 以上に説明したように、本装置によればリレー
シヨン{R1}{R2}に対して、その先頭のレコ
ードから末尾のレコードへと、重複するレコード
を除いて1回のスキヤンによつて併合演算に必要
なレコードの比較処理を行い得る。従つて、リレ
ーシヨン中に重複するレコードが無いか、或いは
無視できる程度の重複レコード量ならば、併合演
算に必要な実行時間は、リレーシヨン{R1}の
レコードの数とリレーシヨン{R2}のレコード
の数との和に相当したサイクル時間となる。 つまり従来例では、その実行時間が両レコード
数の「積」で決つていたのが、本発明によればそ
の「和」で決まるようになる。従つて、効率良く
短時間に併合演算処理を実行することが可能とな
る。また以上の処理を、相前後して入力するレコ
ードの間でそのキイの値を比較し、その比較結果
に従つて各レコードに重複フラグFを付して行つ
ているので、簡単なアルゴリズムで効率良く併合
演算を行い得る。 尚、本発明は上述した実施例に限定されるもの
ではない。例えば各レコードを構成するキイ(属
性)の数や、そのキイ(属性)の語長、またリレ
ーシヨンを構成するリコードの数等は仕様に応じ
て定めれば良いものである。また併合条件につい
ても。特に限定されるものではない。要するに本
発明は、その要旨を逸脱しない範囲で種々変形し
て実施することができる。
16,17に格納されたリレーシヨン間の併合演
算処理を次のようにして行う。 先ず、両リレーシヨンの先頭のレコードにポイ
ンタを置く。つまりレコード読出し制御回路1
8,19の各アドレスレジスタ20に前記各リレ
ーシヨンの先頭レコードの1番目の語、つまりレ
コード[2/F]の[2]と、レコード[1/
e]の[1]を記憶している番地を指すようにポ
インタをそれぞれセツトする。同時に各アドレス
レジスタ20にセツトされた値を、バツクアツプ
レジスタ21にそれぞれセーブする。 以上の準備を完了して、併合演算処理を開始す
る。 先ず第1サイクルでは次の3つの処理を平行し
て行う。但し、前述した重複レコードの検出処理
における第1サイクルと、ここでの第1サイクル
とは異なるタイミングである。 即ち、第1に前記第1のレコードバツフアメモ
リ16から読出したリレーシヨン{R4}の1番
目のレコード[2/F]と、第2のレコードバツ
フアメモリ17から読出したリレーシヨン{R5}
の1番目のレコード[1/e]とを比較する。そ
して第1のレコードバツフアメモリ16から読出
した1番目のレコード[2/F]を第3のレコー
ドバツフアメモリ26に格納し、第2のレコード
バツフアメモリ17から読出した1番目のレコー
ド[1/e]を第4のレコードバツフアメモリ2
7に格納する。そして次のサイクルで比較するレ
コードを選択するべく前記ポインタの制御を行
う。 具体的には、その第1フエーズでは、第1およ
び第2のレコードバツフアメモリ16,17か
ら、前記各アドレスレジスタ20が指す語[2]
[1]を同時に読出し、ころをデータレジスタ2
2,23セツトした後、比較回路24にて比較す
る。この場合、両レコードの各語の値が一致しな
いので、つまりリレーシヨン{R1}のキイの値
の方が大きいので、該レコードを出力しないこと
を決定する。そこで、出力制御回路25に対し
て、次の第2サイクルでレコード[2/F]
[1/r]を結合して出力しないように通知する。
そして前記各アドレスレジスタ20をカウントア
ツプする。尚、次のサイクルでは、上記比較され
たキイの値の小さい方のリレーシヨン{R2}の
ポインタを進め、リレーシヨン{R1}のポイン
タは元に戻す。 この処理と同時に前記各データメモリ22,2
3に格納されたデータ[2][1]をそれぞれ読
出して、前記レコードバツフアメモリ26,27
にそれぞれ格納する。 続く第2フエーズでは、前記各レコードバツフ
アメモリ16,17から、各レコードの2番目の
語[F][e]を読出し、データレジスタ22,
23を経由して、前記レコードバツフアメモリ2
6,27にそれぞれ格納する。そして、リレーシ
ヨン{R2}のレコードの方がそのキイの値が小
さいので、リレーシヨン{R2}のポインタを先
に進め、リレーシヨン{R1}のポインタはその
ままにする。即ち、この第2フエーズから次のフ
エーズである第2サイクルの第1フエーズに移る
時、レコード読出し制御回路18ではそのアドレ
スレジスタ20に、バツクアツプレジスタ21の
値をロードし、先頭のレコード[2/F]をもう
一度読出せるようにする。他方、レコード読出し
制御回路19では、そのアドレスレジスタ20を
カウントアツプし、次のレコード[2/k]を読
出せるようにする。そして、次の第2サイクルの
最初で、上記バツクアツプレジスタ21に上記ア
ドレスレジスタ20の値をセーブする。 続く第2サイクルでは、第1のレコードバツフ
アメモリ16から読出したリレーシヨン{R4}
の1番目のレコード[2/F]と、第2のレコー
ドバツフアメモリ17から読出したリレーシヨン
{R5}の2番目のレコード[2/q]とを比較す
る。 そして上記各レコードバツフアメモリ16,1
7からそれぞれ読出したレコード[2/F]
[2/q]を、前記レコードバツフアメモリ26,
27にそれぞれ格納し、次のサイクルで比較する
レコードを選択する。 以上の各処理は、第1サイクルでの処理と同様
に行われるが、この場合、読出したレコードが
[2/F][2/k]であることから、そのキイの
値が一致する。そこで次の第3サイクルでは、出
力制御回路25の出力制御によつて、前記第3お
よび第4のレコードバツフアメモリ26,27か
らそれぞれ読出されるレコード[2/F][2/
k]が結合して出力される。 またこのとき第2フエーズの終りで、その比較
結果が同値であることから、前記各レコードにそ
れぞれ付された重複フラグFが前記レコード読出
し制御回路18,19に入力される。この場合、
両レコードに付された重複フラグFが共に“0”
であることから、両リレーシヨンに対するポイン
タがそれぞれ先に進められる。つまり、各アドレ
スレジスタ20がそれぞれカウントアツプされ、
次の第3サイクルの先頭でその値が前記各バツク
アツプレジスタ21にそれぞれセーブされる。 次の第3サイクルでは、前述した第1および第
2サイクルで行われる3つの処理に加えて、レコ
ードの結合出力動作が行われる。 即ち、第3サイクルではリレーシヨン{R4}
の2番目のレコード[3/U]と、リレーシヨン
{R5}の2番目のレコード[2/k]とが比較さ
れ、同時に上記各レコード[3/U][2/k]
が前記各レコードバツフアメモリ26,27にそ
れぞれ転送して格納され、更に次のサイクルで比
較するレコードを選択する為のポインタ制御が行
われる。 これに加えて前記レコードバツフアメモリ2
6,27にそれぞれ格納され、そのキイの値が等
しいと判定された、前記リレーシヨン{R1}の
1番目のレコード[2/F]と、リレーシヨン
{R2}の2番目のレコード[2/k]が選択回路
28を介して読出され、結合して出力される。 このレコードの結合出力動作を更に詳しく説明
すると、その第1フエーズで第3のレコードバツ
フアメモリ26からレコードの先頭の語[2]を
読出し、選択回路28を経由して出力レジスタ2
9にセツトし、これを出力する。続く第2フエー
ズでは次の語[F]を読出し、同様に出力する。
しかる後、第3フエーズと第4フエーズでは、第
2のレコードバツフアメモリ27からリレーシヨ
ン{R2}のレコードの語[2][q]を順に読出
し、前記選択回路28を経由して出力レジスタ2
9にセツトして出力する。 この結果、出力レジスタ29の出力としてリレ
ーシヨン{R3}の第1番目のレコード[2/
F/2/q]が得られる。 これ以降のサイクルでは、上記第3サイクルと
同様な処理が行われる。 しかして第4サイクルでは、第3サイクルで比
較されたレコードが[3/U]と[2/k]であ
り、そのキイの値が異なることから、そのレコー
ドの結合出力は行われない。 このようなサイクルが同様にて繰返されて、第
4サイクルにてレコード[6/D][6/s]が
比較された場合、キイの値が等しいことが検出さ
れる。この場合にも上記レコード[6/D]
[6/s]が結合して出力される。しかしてこの
時、上記各レコードにそれぞれ付された重複フラ
グFが共に“1”なので、前述したようにリレー
シヨン{R1}の読出しを制御するレコード読出
し制御回路18のアドレスレジスタ20には、そ
のバツクアツプレジスタ21の値がロードされ、
再度前記レコード[6/D]が読出されるように
ポインタ制御がなされる。一方このとき、レコー
ド読出し制御回路19のアドレスレジスタ20は
カウントアツプされ、次のレコード[6/w]を
読出すようにポインタ制御される。しかし、レコ
ード読出し制御回路19のバツクアツプレジスタ
21の値はそのまま維持され、そのリレーシヨン
における重複レコードの最初、つまりレコード
[6/s]に戻れるようにしておく。 第5サイクルでも、レコードのキイの値が共に
[6]として一致する。従つてこの場合のレコー
ド[6/D][6/w]が結合されて出力される。
しかしこの場合、リレーシヨン{R1}の重複フ
ラグFだけが“1”であることから、このサイク
ルの最後で、レコード読出し制御回路18のアド
レスレジスタ20の値がカウントアツプされて次
のレコード[6/P]が読出されるようにされ、
且つそのバツクアツプレジスタ21の値が上記ア
ドレスレジスタ20の値に更新される。つまり、
このレコード[6/P]が再度読出せるようにバ
ツクアツプポインタが制御される。 そして、レコード読出し制御回路19のアドレ
スレジスタ20には、そのバツクアツプレジスタ
21に格納された値がロードされ、そのリレーシ
ヨンの重複しているレコードの先頭であるレコー
ド[6/s]が読出されるようにポインタ制御が
なされる。 次の第6サイクルでは、レコード[6/P]
[6/s]が比較され、そのキイの値が一致する
ことから該レコードの結合出力が行われる。そし
て、リレーシヨン{R2}側の重複フラグFだけ
が“1”であることから、レコード読出し制御回
路18のポインタ更新は行われず、レコード読出
し制御回路19のアドレスレジスタ20の値がカ
ウントアツプされ、且つそのバツクアツプレジス
タ21の値が上記アドレスレジスタ20の値に更
新される。 そして第7サイクルでは、レコード[6/P]
[6/w]が比較され、結合出力される。そして
この場合、上記各レコードの重複フラグFが共に
“0”であるので、そのリレーシヨンのポインタ
は共に次のレコードを指すように制御される。 然し乍ら、この場合には両リレーシヨンに次の
レコードがないことから、このサイクルでレコー
ドの比較処理が終了する。 以上に説明したように、本装置によればリレー
シヨン{R1}{R2}に対して、その先頭のレコ
ードから末尾のレコードへと、重複するレコード
を除いて1回のスキヤンによつて併合演算に必要
なレコードの比較処理を行い得る。従つて、リレ
ーシヨン中に重複するレコードが無いか、或いは
無視できる程度の重複レコード量ならば、併合演
算に必要な実行時間は、リレーシヨン{R1}の
レコードの数とリレーシヨン{R2}のレコード
の数との和に相当したサイクル時間となる。 つまり従来例では、その実行時間が両レコード
数の「積」で決つていたのが、本発明によればそ
の「和」で決まるようになる。従つて、効率良く
短時間に併合演算処理を実行することが可能とな
る。また以上の処理を、相前後して入力するレコ
ードの間でそのキイの値を比較し、その比較結果
に従つて各レコードに重複フラグFを付して行つ
ているので、簡単なアルゴリズムで効率良く併合
演算を行い得る。 尚、本発明は上述した実施例に限定されるもの
ではない。例えば各レコードを構成するキイ(属
性)の数や、そのキイ(属性)の語長、またリレ
ーシヨンを構成するリコードの数等は仕様に応じ
て定めれば良いものである。また併合条件につい
ても。特に限定されるものではない。要するに本
発明は、その要旨を逸脱しない範囲で種々変形し
て実施することができる。
図は本発明の一実施例に係るデータ処理装置の
要部概略構成図である。 11……入力レジスタ、12……レコードバツ
フアメモリ、13……比較回路、14……データ
レジスタ、15……フラグ回路、16……第1の
レコードバツフアメモリ、17……第2のレコー
ドバツフアメモリ、18,19……レコード読出
し制御回路、20……アドレスレジスタ、21…
…バツクアツプレジスタ、22,23……データ
レジスタ、24……比較回路、25……出力制御
回路、26……第3のレコードバツフアメモリ、
27……第4のレコードバツフアメモリ、28…
…選択回路、29……出力レジスタ。
要部概略構成図である。 11……入力レジスタ、12……レコードバツ
フアメモリ、13……比較回路、14……データ
レジスタ、15……フラグ回路、16……第1の
レコードバツフアメモリ、17……第2のレコー
ドバツフアメモリ、18,19……レコード読出
し制御回路、20……アドレスレジスタ、21…
…バツクアツプレジスタ、22,23……データ
レジスタ、24……比較回路、25……出力制御
回路、26……第3のレコードバツフアメモリ、
27……第4のレコードバツフアメモリ、28…
…選択回路、29……出力レジスタ。
Claims (1)
- 1 所定の規則に従つてソート処理された複数の
レコードからなる第1および第2のリレーシヨン
における上記レコードの属性を示すキイの重複を
それぞれ検出する手段と、上記第1および第2の
リレーシヨンのレコードをそれぞれ格納する第1
および第2のレコードバツフアメモリに上記重複
検出結果を前記各レコードに対応させて格納する
手段と、上記第1および第2のレコードバツフア
メモリからそれぞれ読出されたレコードの前記キ
イを相互に比較し、その比較結果に従つて上記第
1のリレーシヨン中のキイに等しい前記第2のリ
レーシヨン中のレコードを上記第1のリレーシヨ
ンのレコードと結合して出力する手段と、上記比
較結果および前記比較処理された各レコードにそ
れぞれ付された重複検出結果に従つて前記第1お
よび第2のレコードバツフアメモリから次に読出
すレコードを制御する手段とを具備し、このレコ
ードの読出しを制御する手段は、前記比較結果が
等しくない場合には前記ソート処理の方向に若い
値を有するレコードを格納したレコードバツフア
メモリから次のレコードを読出すと共に他方のレ
コードバツフアメモリからは同じレコードを読出
し、前記比較結果が等しいときには前記各レコー
ドに付された重複検出結果を調べ、これらの各レ
コードが重複レコードでない場合には前記第1お
よび第2のレコードバツフアメモリから次のレコ
ードをそれぞれ読出し、一方のレコードだけが重
複レコードとして示される場合にはそのレコード
を格納したレコードバツフアメモリから次のレコ
ードを読出すと共に他方のレコードバツフアメモ
リからは同じレコードを読出し、前記各レコード
が共に重複レコードとして示されるときには、前
記第2のレコードバツフアメモリからのレコード
をバツクアツプして保存して前記第1のレコード
バツフアメモリから同じレコードを読出すと共に
前記第2のレコードバツフアメモリから次に続く
重複レコードを順次読出し、その後前記第1のレ
コードバツフアメモリから次のレコードを読出す
と共に前記第2のレコードバツフアメモリからは
上記バツクアツプされたレコードを読出し、更に
その後前記第1のレコードバツフアメモリから同
じレコードを読出すと共に前記第2のレコードバ
ツフアメモリからは次のレコードを読出してなる
ことを特徴とするデータ処理装置。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59231251A JPS61110232A (ja) | 1984-11-05 | 1984-11-05 | デ−タ処理装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP59231251A JPS61110232A (ja) | 1984-11-05 | 1984-11-05 | デ−タ処理装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPS61110232A JPS61110232A (ja) | 1986-05-28 |
| JPH0370826B2 true JPH0370826B2 (ja) | 1991-11-11 |
Family
ID=16920687
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP59231251A Granted JPS61110232A (ja) | 1984-11-05 | 1984-11-05 | デ−タ処理装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPS61110232A (ja) |
-
1984
- 1984-11-05 JP JP59231251A patent/JPS61110232A/ja active Granted
Also Published As
| Publication number | Publication date |
|---|---|
| JPS61110232A (ja) | 1986-05-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US4514826A (en) | Relational algebra engine | |
| US3686641A (en) | Multiprogram digital processing system with interprogram communication | |
| US5060143A (en) | System for string searching including parallel comparison of candidate data block-by-block | |
| JPS60134973A (ja) | データ処理装置 | |
| KR0152979B1 (ko) | 가변길이 데이터 처리장치 | |
| JPS62256055A (ja) | ブロック閉塞を用いたロールバックリカバリシステム | |
| JP3076044B2 (ja) | パイプラインのエラー情報記憶方式 | |
| JPH0370826B2 (ja) | ||
| JPH0373021B2 (ja) | ||
| JPH0520350A (ja) | ベクトル処理装置 | |
| JP2716254B2 (ja) | リストベクトル処理装置 | |
| JPH0373020B2 (ja) | ||
| JPH0833812B2 (ja) | ソート処理装置 | |
| JP2798492B2 (ja) | リストベクトル処理装置 | |
| JP2586172B2 (ja) | 学習機能付テーブル検索装置 | |
| JP2539079B2 (ja) | カラムデ―タ選択処理回路 | |
| JP2702356B2 (ja) | デバッグ情報アクセス方式 | |
| JPH0642248B2 (ja) | 情報検索装置 | |
| JPH069038B2 (ja) | ダイレクトメモリアクセス制御装置 | |
| JPS6143734B2 (ja) | ||
| JPH03147036A (ja) | 可変長データ処理装置 | |
| JPH0752451B2 (ja) | 情報検索装置 | |
| JPH03251937A (ja) | データベース検索方式 | |
| JPH0373019B2 (ja) | ||
| JPH01234931A (ja) | リレーシヨナルデータベースの射影処理方式 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| EXPY | Cancellation because of completion of term |