JP2606608B2 - 同値キーが存在するデータのソート方式 - Google Patents

同値キーが存在するデータのソート方式

Info

Publication number
JP2606608B2
JP2606608B2 JP6290451A JP29045194A JP2606608B2 JP 2606608 B2 JP2606608 B2 JP 2606608B2 JP 6290451 A JP6290451 A JP 6290451A JP 29045194 A JP29045194 A JP 29045194A JP 2606608 B2 JP2606608 B2 JP 2606608B2
Authority
JP
Japan
Prior art keywords
record
match
battle
key
winner
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP6290451A
Other languages
English (en)
Other versions
JPH08129478A (ja
Inventor
洋一 上田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP6290451A priority Critical patent/JP2606608B2/ja
Publication of JPH08129478A publication Critical patent/JPH08129478A/ja
Application granted granted Critical
Publication of JP2606608B2 publication Critical patent/JP2606608B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はソート方式に関するもの
であり、特に同値キーレコードが数多く存在する場合に
好適なソート方式に関する。
【0002】
【従来の技術】メモリに入り切らない大量のレコードを
ソートする場合、レコードを1件ずつメモリに読み込
み、読み込んだレコードを読み込み済みのレコード群と
対戦させ、対戦の優勝者を順次ワークファイルに出力し
ていって中間結果であるストリング(部分的にソート済
みのレコード列)を複数作成していくプリソートフェー
ズを実施し、次いで、ワークファイル内の複数のストリ
ングを繰り返しマージしていって1本のストリングにま
とめて出力するマージフェーズを行うというように、前
半部分のプリソートフェーズと後半部分のマージフェー
ズとに分けてソートを行うソート方式が一般的である。
【0003】ところで、このようなソート方式では、レ
コード件数が増加するに伴い、レコードの対戦の回数、
従ってキー比較処理を呼び出す回数が急速に増加し、中
央処理装置を長時間使用するようになり、性能の低下を
招くという問題点がある。そこで、同一のキー値(同値
キー)を持つレコードが多数存在するレコードのソート
において、キー比較の回数を減らし、中央処理装置の使
用時間を短縮して性能の向上を図るため、従来より以下
のようなソート方式が提唱されている。
【0004】(1)従来技術1 レコードのキー比較時に同値キーであった場合に、レコ
ードの単一化を行い、同値キーレコードを1つのレコー
ドにまとめるソート方式(例えば特開平2−25982
7号公報)。 (2)従来技術2 同値キーレコード数のカウンタを設け、レコードのキー
比較時に、同値キーであった場合、同値キーレコード数
カウンタの計数処理を行い、出力結果として、レコード
のキー部分と、制御情報として、計数された同値キーレ
コード数を付加するソート方式(例えば特開平1−17
1021号公報)。
【0005】
【発明が解決しようとする課題】上述したように従来の
ソート方式においては、同値キーレコードが多く存在す
るソート処理の高速化のアプローチとして、キー比較処
理のなかで同値キーレコードを削除して、その後の対戦
では同値キーレコードの対戦を少なくすることにより、
キー比較回数を減らしていく技術が採用されている。
【0006】しかしながら、ソート結果として同値キー
レコードを削除せずにそのまま出力するような場合は、
上述した従来技術では、単一化した元のレコードまたは
計数された同値キーレコード数分だけレコードを複写す
る処理、キー情報からもとのレコードの形式に復元する
処理等を組み合わせて実行する必要がある。この結果、
キーの比較回数は少なくて済むが、特に同値キーレコー
ドが多数存在する場合には、レコードを複写する処理や
レコードからキー情報を抽出する処理やキー情報からレ
コードを復元する処理等の占める割合が多くなり、却っ
てソート性能の劣化を招くことになる。
【0007】勿論、同値キーレコードを削除しない通常
のソート処理を行えばそのような問題はないが、前述し
たようにレコード件数が増加するに伴い、キー比較回数
が急激に増加して、中央処理装置を長時間使うようにな
り、性能低下が問題となる。
【0008】本発明は、上記問題点に鑑み、ソート処理
の過程における同値キーレコード同士の対戦を極力抑え
得るようにすることにより、同値キーレコードを削除し
なくてもキー比較回数を削減できるようにし、同値キー
レコードが数多く存在するレコードを高速にソートする
ことができるようにすることを目的とする。
【0009】
【課題を解決するための手段ならびにその作用】本発明
の同値キーが存在するデータのソート方式は、上記の目
的を達成するために、レコードを1件ずつメモリに読み
込み、読み込んだレコードを読み込み済みのレコード群
と対戦させ、対戦の優勝者を順次ワークファイルに出力
していって中間結果であるストリングを複数作成してい
くプリソートフェーズを実施し、次いで、ワークファイ
ル内の複数のストリングのレコード同士をストリングの
先頭より順に対戦させ、対戦の優勝者を1本のストリン
グにまとめて出力するマージフェーズを実施するソート
方式において、プリソートフェーズにおいて、各ストリ
ングに出力するレコードに、当該レコードの後続のレコ
ードが同値キーレコードであるか否かを示す同値キーフ
ラグを付加するプリソート手段と、マージフェーズにお
いて、対戦の優勝者レコードをストリングに出力した
後、その優勝者レコードの属するストリングから次のレ
コードを得たときに、前記出力した優勝者レコードに付
加されていた同値キーフラグをチェックし、該同値キー
フラグが後続のレコードが同値キーレコードであること
を示すときは、前記取得した次のレコードは対戦に参加
させることなく直ちにストリングに出力するマージ手段
とを備えている。これにより、プリソートフェーズにお
けるキー比較回数を増加させることなく、マージフェー
ズにおけるキー比較回数を減らすことができ、トータル
なキー比較回数が削減される。
【0010】また、マージ手段は、最終マージ以外の場
合のストリングにレコードを出力する際、プリソートフ
ェーズにおける場合と同様に、当該レコードの後続のレ
コードが同値キーレコードであるか否かを示す同値キー
フラグを付加する。これにより、マージされて得られた
ストリングを更に他のストリングとマージする処理にお
いて、前述と同様にしてキー比較回数を減らすことがで
きる。以下、このような本発明のソート方式のより具体
的な構成および作用を説明する。
【0011】本発明の同値キーが存在するデータのソー
ト方式は、メモリに入り切らない大量のレコードを、同
値キーレコードについてはそのまま出力するようにして
ソートする方式であり、プリソート手段,対戦手段,キ
ー比較手段,マージ手段,マージ対戦手段,ソートワー
クファイル,プリソート用レコードエリア,対戦管理テ
ーブル,マージ対戦用レコードエリア,マージ対戦管理
テーブルを備え、プリソート手段,対戦手段,キー比較
手段,ソートワークファイル,プリソート用レコードエ
リア,対戦管理テーブルを使ってプリソートフェーズを
実施し、マージ手段,マージ対戦手段,マージ対戦管理
テーブル,キー比較手段,マージ対戦用レコードエリ
ア,ソートワークファイルを使用してマージフェーズを
実施する。
【0012】プリソートフェーズでは以下のような動作
が行われる。プリソート手段は、ファイルあるいはアプ
リケーションプログラムから入力したソート対象レコー
ドを1件ずつプリソート用レコードエリアへ読み込みな
がら、対戦手段を呼び出して、読み込んだレコードを、
プリソート用レコードエリア内に既にあるレコード群と
対戦させる。対戦手段は、キー比較手段を用いてレコー
ドの対戦(キーの比較)を行っていき、対戦の優勝者
(キー順で最初に出力すべきレコード)を決定する。プ
リソート手段は、対戦手段が決定した対戦の優勝者を、
ソートワークファイルへ書き込んでいくことにより、ソ
ート中間結果としてストリングと呼ぶ順序付けられたレ
コード列を生成する。
【0013】そして、本発明の特徴として、対戦手段
は、対戦に参加している各レコードのプリソート用レコ
ードエリア内アドレスを示すレコードポインタに加えて
同値キーフラグを含む情報を対戦管理テーブルにより管
理し、レコードの対戦で同値キーであった場合、そのい
ずれか一方を勝者として、そのレコードに対応する対戦
管理テーブルのエントリの同値フラグをONにする。ま
た、プリソート手段は、対戦手段が決定した対戦の優勝
者レコードを、ソートワークファイルへ書き込んでいく
際には、同値キーフラグもレコード制御情報として付加
する。
【0014】マージフェーズにおいては以下のような動
作が行われる。マージ手段は、ソートワークファイル内
の複数のストリングを繰り返しマージしていき、1本の
ストリングにまとめ、出力する。このマージ手段の1回
のマージ処理おいて以下のような動作が行われる。
【0015】マージ手段は、まず各ストリングの先頭レ
コードを、マージ対戦用レコードエリアに読み込み、マ
ージ対戦手段を呼び出してレコードの対戦を行わせる。
マージ対戦手段は、キー比較手段を用いて、レコードの
対戦(キーの比較)を行っていき、対戦の優勝者(キー
順に最初に出力すべきレコード)を決定する。マージ手
段は、マージ対戦手段が決定した優勝者をマージ結果と
して出力する。即ち、最終マージにおいてはファイル或
いはアプリケーションプログラムに出力し、それ以外の
場合はストリングとしてソートワークファイルへ再度書
き込む。
【0016】ここで、マージ手段は、優勝者を出力した
後、優勝者の属するストリングから次のレコードをマー
ジ対戦用レコードエリアに読み込み、再度マージ対戦手
段を呼び出し、読み込んだレコードをマージ対戦用レコ
ードエリア内のレコード群と対戦させて優勝者を決定
し、マージ結果として出力する。以上の処理を、マージ
する全ストリングのレコードを読み終わるまで繰り返
し、ストリングのマージを行っていく。
【0017】そして本発明の特徴として、プリソートフ
ェーズと同様に、マージ対戦手段は、対戦に参加してい
る各レコードのマージ対戦用レコードエリア内アドレス
を示すレコードポインタに加えて同値キーフラグを含む
情報をマージ対戦管理テーブルにより管理し、マージ手
段は、レコードを対戦に参加させる際に、そのレコード
に対応するマージ対戦管理テーブルのエントリの同値キ
ーフラグをOFFにリセットし、また、マージ対戦用レ
コードエリアへレコードを読み込む際には、制御情報で
ある同値キーフラグも同時に読み込む。ここで、マージ
対戦用レコードエリアに読み込んだ同値キーフラグ(同
値キーレコードフラグと呼ぶこともある)と、マージ対
戦管理テーブルのエントリ内の同値キーフラグとは別の
情報であることに注意されたい。
【0018】そして、マージ対戦手段は、レコードの対
戦で同値キーであった場合、そのいずれか一方を勝者と
して、そのレコードに対応するマージ対戦管理テーブル
のエントリの同値キーフラグをONにし、マージ手段
は、マージ対戦手段が優勝者レコードを決定したとき、
その優勝者レコードを出力レコードと決定して、該決定
した出力レコードに付加されている同値キーフラグを参
照し、以下の処理を行う。
【0019】出力レコードに付加されている同値キーフ
ラグがONであれば、その出力レコードをそれに元々付
加されていた同値キーフラグを付加してストリングに出
力し且つその出力レコードの属するストリングから読み
込んだ次のレコードを対戦に参加させることなく出力レ
コードに決定する処理を、付加されている同値キーフラ
グがOFFの出力レコードを読み込むまで繰り返す。出
力レコードに付加されている同値キーフラグがOFFで
あったとき、および、その同値キーフラグがONであっ
て前記処理が行われて同値キーフラグがOFFの出力レ
コードが読み込まれたときは、前記マージ対戦手段が決
定した優勝者レコードに対応する前記マージ対戦管理テ
ーブルの同値キーフラグを参照し、該同値キーフラグが
ONであれば、ONにした同値キーフラグを付加した出
力レコードをストリングに出力し、OFFであれば、そ
の出力レコードにOFFの同値キーフラグを付加してス
トリングに出力する
【0020】対戦手段,マージ対戦手段におけるレコー
ド対戦方式は、トーナメント置換方式,バイナリインサ
ーション方式等の任意の方式を用いることができる。
【0021】対戦手段にトーナメント置換方式を用いる
場合は、対戦で勝ち上がった方のレコードの情報を一時
的に設定しておくための作業領域である勝ち上がりレコ
ードエントリが備えられ、対戦手段の対戦は2進木構造
で定義される対戦構造の下位から上位に向けて勝ち抜き
戦形式で行っていき、対戦構造の各ノード毎に、前記対
戦管理テーブルのエントリを対応させ、該エントリには
対戦で負けた方のレコードの情報を設定し、対戦の開始
時には、読み込んだレコードの情報を前記勝ち上がりレ
コードエントリに設定し、その後勝ち上がりレコードエ
ントリのレコードと、対戦管理テーブルのレコード群と
を、対戦構造に従って順次対戦させていき、前記対戦管
理テーブル側のレコードが勝った場合は、前記勝ち上が
りレコードエントリと対戦管理テーブル側のレコードの
対戦管理テーブルエントリとを交換し、以下同様に対戦
を続け、対戦終了時に、前記勝ち上がりレコードエント
リに設定されているレコードを対戦の優勝者に決定し、
更に、同値キーレコードの対戦があった場合、前記勝ち
上がりレコードエントリに設定されているレコードを勝
者と決定し、前記勝ち上がりレコードエントリの同値キ
ーフラグをONに設定する。
【0022】そして、対戦手段にトーナメント置換方式
を用いた構成における好適な実施例においては、対戦手
段による対戦の優勝者,優勝者の同値キーフラグ,次に
入力したレコードの対戦開始エントリを含む対戦情報を
一時的に記憶しておくための対戦結果保存手段をも備
え、前記対戦手段は1回の対戦が終了して優勝者が決定
した時点で、前記対戦結果保存手段に対戦情報を保存す
ると共に、対戦を行うにあたり、前記対戦結果保存手段
に保存されている前回の対戦での優勝者レコードと今回
入力されたレコードとのキーを比較し、同値キーでなけ
れば、前記対戦結果保存手段に保存されている対戦開始
エントリからトーナメントの対戦を開始し、同値キーで
あれば、トーナメントの対戦はスキップし、入力された
レコードを直ちに今回の対戦の優勝者と決定すると共
に、前記対戦結果保存手段により保存されている前回の
優勝者の同値キーフラグの値を、今回の対戦の優勝者の
同値キーフラグとして引き継いだ後、前記対戦結果保存
手段により保存されている前回の優勝者の同値キーフラ
グはONに設定し、前記プリソート手段は、前記対戦手
段による1回の対戦を行って優勝者を決定した時点で、
前記対戦結果保存手段により保存されている前回の対戦
での優勝者およびその同値キーフラグを出力するように
している。
【0023】対戦手段にバイナリインサーション方式を
用いる場合は、前記対戦手段による対戦は、前記プリソ
ート用レコードエリアに新たに読み込んだレコードを、
既に読み込み済みでキー順に並んでいるレコード群内の
どの位置に挿入すべきかを、バイナリインサーション方
式により決定して、決定した位置にレコードを挿入する
方式で行い、且つ、挿入位置の決定は、レコード群を半
分ずつの2つのグループに分割し、分割した境界に位置
するレコードと挿入するレコードとを対戦させることに
より、挿入するレコードがどちらのグループに属するか
を判定することで行い、且つ、挿入するレコードとの対
戦相手は、分割した下位のグループの最上位レコードを
採用し、同値キーレコードの対戦においては、挿入する
レコードの方を勝ちとし、挿入するレコードに対応する
前記対戦管理テーブルの同値キーフラグをONにする。
【0024】マージ対戦手段にトーナメント置換方式を
用いる場合は、マージ対戦手段による対戦で勝ち上がっ
た方のレコードの情報を一時的に設定しておくための作
業領域である勝ち上がりレコードエントリを備え、前記
マージ対戦手段による対戦は2進木構造で定義される対
戦構造の下位から上位に向けて勝ち抜き戦形式で行って
いき、対戦構造の各ノード毎に、前記マージ対戦管理テ
ーブルのエントリを対応させ、該エントリには対戦で負
けた方のレコードの情報を設定し、対戦の開始時には、
読み込んだレコードの情報を前記勝ち上がりレコードエ
ントリに設定し、その後勝ち上がりレコードエントリの
レコードとマージ対戦管理テーブルのレコード群とを、
対戦構造に従って順次対戦させていき、前記マージ対戦
管理テーブル側のレコードが勝った場合は、前記勝ち上
がりレコードエントリとマージ対戦管理テーブル側のレ
コードのマージ対戦管理テーブルエントリとを交換し、
以下同様に対戦を続け、対戦終了時に、前記勝ち上がり
レコードエントリに設定されているレコードを対戦の優
勝者に決定し、更に、同値キーレコードの対戦があった
場合、前記勝ち上がりレコードエントリに設定されてい
るレコードを勝者と決定し、前記勝ち上がりレコードエ
ントリの同値キーフラグをONに設定する。
【0025】そして、マージ対戦手段にトーナメント置
換方式を用いた構成における好適な実施例においては、
マージ対戦手段による対戦の優勝者,優勝者の同値キー
フラグ,次に入力したレコードの対戦開始エントリを含
む対戦情報を一時的に記憶しておくための対戦結果保存
手段をも備え、前記マージ対戦手段は1回の対戦が終了
して優勝者が決定した時点で、前記対戦結果保存手段に
対戦情報を保存すると共に、対戦を行うにあたり、前記
対戦結果保存手段に保存されている前回の対戦での優勝
者レコードと今回入力されたレコードとのキーを比較
し、同値キーでなければ、前記対戦結果保存手段に保存
されている対戦開始エントリからトーナメントの対戦を
開始し、同値キーであれば、トーナメントの対戦はスキ
ップし、入力されたレコードを直ちに今回の対戦の優勝
者と決定するとともに、前記対戦結果保存手段により保
存されている前回の優勝者の同値キーフラグの値を、今
回の対戦の優勝者の同値キーフラグとして引き継いだ
後、前記対戦結果保存手段により保存されている前回の
優勝者の同値キーフラグはONに設定し、前記マージ手
段は、前記マージ対戦手段による1回の対戦を行って優
勝者を決定した時点で、前記対戦結果保存手段により保
存されている前回の対戦での優勝者およびその同値キー
フラグとを出力するようにしている。
【0026】マージ対戦手段にバイナリインサーション
方式を用いる場合は、前記マージ対戦手段の対戦は、前
記マージ対戦用レコードエリアに新たに読み込んだレコ
ードを、既に読み込み済みでキー順に並んでいるレコー
ド群内のどの位置に挿入すべきかを、バイナリインサー
ション方式により決定して、決定した位置にレコードを
挿入する方式で行い、且つ、挿入位置の決定は、レコー
ド群を半分ずつの2つのグループに分割し、分割した境
界に位置するレコードと挿入するレコードとを対戦させ
ることにより、挿入するレコードがどちらのグループに
属するかを判定することで行い、且つ、挿入するレコー
ドとの対戦相手は、分割した下位のグループの最上位レ
コードを採用し、同値キーレコードの対戦においては、
挿入するレコードの方を勝ちとし、挿入するレコードに
対応する前記対戦管理テーブルの同値キーフラグをON
にする。
【0027】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0028】図1は本発明の一実施例のブロック図であ
る。同図に示すように、本実施例のソート方式は、プリ
ソート手段1と、対戦手段2と、キー比較手段3と、マ
ージ手段4と、マージ対戦手段5と、ソートワークファ
イル7と、プリソート用レコードエリア9と、対戦管理
テーブル10と、マージ対戦用レコードエリア11と、
マージ対戦管理テーブル12と、勝ち上がりレコードエ
ントリ13と、対戦結果保存手段14とを備え、磁気デ
ィスクや磁気テープ中のファイルFIあるいはアプリケ
ーションプログラムAPから入力データ(ソート対象レ
コード)6を入力してソート処理を行い、出力データ
(ソート済レコード)8を、磁気ディスクや磁気テープ
中のファイルFOあるいはアプリケーションプログラム
APに出力するものである。
【0029】本実施例のソート方式における処理は大き
く分けて、入力データ6をプリソート用レコードエリア
9に読み込みながらソートしていって中間結果である幾
つかのストリングをソートワークファイル7へ出力して
いくプリソート処理と、このプリソート処理で作成した
幾つかのストリングを、マージ対戦用レコードエリア1
1に読み込みながら繰り返しマージしていき、最終的に
1本のストリングにまとめ、出力データ8として出力す
るマージ処理の2つ分けられ、プリソート処理はプリソ
ート手段1が制御を司り、マージ処理はマージ手段4が
制御を司る。
【0030】本実施例のソート方式が従来のソート方式
と大きく相違する点の1つは、プリソートフェーズにお
いてソートワークファイル7内に作成する各ストリング
中のレコードに、当該レコードの後続のレコードが同値
キーレコードであるか否かを示す同値キーフラグを付加
した点にある。このために、対戦に参加している各レコ
ードの情報を保持する対戦管理テーブル10および勝ち
上がりレコードエントリ13には、各レコード対応の同
値キーフラグを設定し、プリソートフェーズ中における
処理でこの同値キーフラグを操作するようにしている。
なお、対戦管理テーブル10および勝ち上がりレコード
エントリ13には、同値キーフラグ以外に、対戦に参加
している各レコードが格納されているプリソート用レコ
ードエリア9のアドレスを示すレコードポインタや、用
いるソート手法に応じて必要となる種々の情報も格納さ
れている。
【0031】本実施例のソート方式が従来のソート方式
と大きく相違する他の点は、マージフェーズにおいて、
マージ対象となるソートワークファイル7内のストリン
グ中のレコードイメージをそれに付加された同値キーフ
ラグと共にマージ対戦用レコードエリア11に読み込
み、また、マージ対戦に参加している各レコードの情報
を保持するマージ対戦管理テーブル12および勝ち上が
りレコードエントリ13に各レコード対応の同値キーフ
ラグ(この同値キーフラグはマージ対戦用レコードエリ
ア11に設定された同値キーフラグとは別のものであ
る)を設定し、これら2つの同値キーフラグを用いてマ
ージ処理を進めるようにした点にある。なお、マージ対
戦管理テーブル12には、同値キーフラグ以外に、マー
ジ対戦に参加している各レコードが格納されているマー
ジ対戦用レコードエリア11のアドレスを示すレコード
ポインタや、用いるソート手法に応じて必要となる種々
の情報も格納されている。
【0032】以下、本実施例について詳しく説明してい
く。まずプリソート処理の流れの概略を説明する。プリ
ソート手段1は、入力データ6中のレコードをプリソー
ト用レコードエリア9へ1件ずつ読み込んでいき、レコ
ードを1件読み込む毎に対戦手段2を呼び出し、読み込
んだレコードと、プリソート用レコードエリア9に読み
込み済みのレコード群との対戦を行わせる。
【0033】対戦手段2は、キー比較手段3を用いて、
レコードのキーを比較していき、優勝者(キー順で最初
に出力すべきレコード)を決定し、決定した優勝者レコ
ードの情報を、勝ち上がりレコードエントリ13に設定
するとともに、優勝者レコードの後続レコードに同値キ
ーのレコードがあるか否かを示す同値キーフラグも同時
に勝ち上がりレコードエントリ13に設定する。
【0034】本実施例では、対戦手段2における対戦
は、対戦管理テーブル10と対戦結果保存手段14とを
用いて、トーナメント置換方式により行われるが、処理
の詳細については、図2を参照して後述する。
【0035】なお、対戦手段2におけるソート方式とし
てバイナリインサーション方式を用いることも可能であ
り、対戦手段2にバイナリインサーション方式を適用し
た実施例の処理の詳細については、図3を参照して後述
する。
【0036】さて、プリソート手段1は、対戦手段2が
決定した対戦の優勝者レコードを、順次ソートワークフ
ァイル7へ出力していき、ストリングを作成していく
が、その際に同値キーフラグも制御情報として優勝者レ
コードに付加する。
【0037】プリソート手段1は入力データ6の全レコ
ードを幾つかのストリングとしてソートワークファイル
7に出力し終わると、マージ手段4に制御を渡し、プリ
ソート処理を終了する。以後、マージ処理が以下のよう
に行われる。
【0038】マージ手段4は、ソートワークファイル7
の各ストリングからマージ対戦用レコードエリア11
に、レコードを1件ずつ読み込んでいき、レコードを1
件読み込む毎にマージ対戦手段5を呼び出し、読み込ん
だレコードと、マージ対戦用レコードエリア11に読み
込み済みのレコード群との対戦を行わせる。
【0039】マージ対戦手段5は、対戦手段2と同様
に、キー比較手段3を用いてレコードのキーを比較して
いき、優勝者レコード(キー順で最初に出力すべきレコ
ード)を決定し、決定した優勝者レコードの情報を、勝
ち上がりレコードエントリ13に設定するとともに、優
勝者レコードの後続レコードに同値キーレコードがある
か否かを示す同値キーフラグも同時に勝ち上がりレコー
ドエントリ13に設定する。
【0040】このマージ対戦手段5における対戦は、本
実施例では、対戦手段2と同様に、マージ対戦管理テー
ブル12と対戦結果保存手段14とを用いてトーナメン
ト置換方式により行われる。勿論、対戦手段2がバイナ
リインサーション方式を採用し得ると同様に、マージ対
戦手段5もバイナリインサーション方式を採用すること
ができる。
【0041】マージ手段4は、最終マージの場合は、マ
ージ対戦手段5が決定した対戦の優勝者レコードを出力
データ8として順次出力していき、最終マージでない場
合は、マージ対戦手段5が決定した対戦の優勝者レコー
ドをソートワークファイル7へ順次出力していき、マー
ジ結果としての新たなストリングを作成していく。この
とき、マージ手段4は、ソートワークファイル7内のス
トリングの各レコードに制御情報として付加されている
同値キーフラグと、マージ対戦手段5により決定した対
戦の優勝者レコードのマージ対戦管理テーブル12の同
値キーフラグとの2つのフラグ情報を参照して、ストリ
ングとして出力するレコードに同値キーフラグを付加す
る。また、各レコードに付加されている同値キーフラグ
はキー比較回数の削減(対戦回数の削減)にも利用され
る。このようなマージ手段4の処理の詳細は、同値キー
フラグの扱いを含め、図4を参照して後に詳細に説明す
る。
【0042】以下、対戦手段2およびマージ手段4の処
理手順について、本発明の特徴部分である同値キーフラ
グの扱いを中心にして、図2から図4のフローチャート
を参照して詳細に説明する。
【0043】先ず、トーナメント置換方式を用いた対戦
手段2の処理手順の詳細を説明する。
【0044】周知のように、トーナメント置換方式は、
2進木構造で定義される対戦構造の下位から上位に向け
て勝ち抜き戦形式で対戦を行っていく方式であり、対戦
構造の各ノード毎に、対戦管理テーブル10のエントリ
を対応させ、該エントリには対戦で負けた方のレコード
の情報を設定する。他方、対戦で勝ち上がった方のレコ
ードの情報は勝ち上がりレコードエントリ13に一時的
に保持される。この勝ち上がりレコードエントリ13の
形式は対戦管理テーブル10のエントリと同じである。
【0045】対戦は、勝ち上がりレコードエントリのレ
コードと、対戦管理テーブル10のレコード群とを、対
戦構造に従って順次対戦させていく形式で行い、そして
各対戦においては、対戦管理テーブル10の対戦相手が
勝ち上がりレコードエントリ13のレコードに勝った場
合には、勝ったレコードと負けたレコードとを対戦管理
テーブル10と勝ち上がりレコードエントリ13との間
で入れ換え、対戦終了時に勝ち上がりレコードエントリ
13に設定されているレコードが対戦の優勝者となる。
【0046】以下、図2を参照して、トーナメント置換
方式を用いた対戦手段2の処理手順の詳細を説明する。
【0047】対戦手段2は、対戦を開始するにあたり、
ステップ201において、プリソート手段1から受け取
ったレコードの、プリソート用レコードエリア9内アド
レス(レコードポインタ)を、勝ち上がりレコードエン
トリ13に設定し、ステップ202において、勝ち上が
りレコードエントリ13の同値キーフラグをOFFに初
期設定する。
【0048】ステップ203では、プリソート用レコー
ドエリア9内にレコードが満杯になった後かを判定し、
満杯になった後でなければステップ211へ進み、満杯
になった後ならばステップ204に進む。従って、ソー
ト開始直後は未だプリソート用レコードエリア9はレコ
ードで満杯になっていないので、ステップ211へ進む
ことになる。
【0049】ステップ211では、対戦管理テーブル1
0で管理されるレコード群の中から最初に(次に)対戦
するレコードを選択する。
【0050】ステップ212では、ステップ211での
選択の結果、対戦するレコードが存在したか否かを判定
し、存在した場合は、ステップ213で、勝ち上がりレ
コードエントリ13のレコードと対戦相手のレコードと
を対戦させる。トーナメント置換方式の手順として周知
のように、対戦はまずストリング番号の比較で行い、ス
トリング番号の小さい方を勝ちと決定し、ストリング番
号が同一の場合にのみキーの比較で判定する。
【0051】ステップ214では、対戦の結果、同値キ
ーであったか否かを判定し、同値キーならば、勝ち上が
りレコードエントリ13のレコードを勝者と見做し、勝
ち上がりレコードエントリ13の同値キーフラグをON
に設定した後、ステップ211へ戻り、対戦を続行す
る。
【0052】対戦の結果、同値キーでなければ、ステッ
プ216で、どちらのレコードが勝ちかを判定する。
【0053】ステップ216の判定の結果、対戦相手
(対戦管理テーブル10側のレコード)の勝ちであれ
ば、ステップ217において、対戦相手のレコードの対
戦管理テーブル10のエントリと、勝ち上がりレコード
エントリ13とを交換することにより、対戦相手を新た
な勝ち上がりレコードに設定した後、ステップ211へ
戻り、対戦を続行する。また、ステップ216での判定
の結果、勝ち上がりレコードが勝ちならば、そのままス
テップ211へ戻り、対戦を続行する。
【0054】このような対戦が続けられ、ステップ21
2で次に対戦するレコードが存在しないと判定される
と、今回のレコードの入力時点での対戦が終了したこと
になり、ステップ218へ移行し、勝ち上がりレコード
エントリ13に設定されているレコードを対戦の優勝者
と決定し、ステップ219において、優勝者レコード,
優勝者レコードの同値キーフラグ,次の入力レコードの
対戦開始エントリ等の対戦結果を、対戦結果保存手段1
4に保存して、今回のレコード入力時点における対戦処
理を終了する。
【0055】以上のような対戦がレコード入力毎に行わ
れ、プリソート用レコードエリア9内にレコードが満杯
になった後に次のレコードが入力されると、ステップ2
03からステップ204へ移行する。ステップ204で
は、対戦結果保存手段14により保存されている前回の
対戦の優勝者レコードと、勝ち上がりレコードエントリ
13のレコード(今回の入力レコード)とのキーを比較
し、ステップ205で同値キーかを判定する。
【0056】ステップ205の判定の結果、同値キーで
あれば、ステップ206において、勝ち上がりレコード
エントリ13の同値キーフラグとして、対戦結果保存手
段14が保存している、前回の対戦での優勝者レコード
の同値キーフラグの値をそのまま引き継ぎ、ステップ2
07において、対戦結果保存手段14が保存している、
前回の対戦での優勝者レコードの同値キーフラグをON
に設定し直した後、トーナメントによる対戦を行うこと
なくステップ218へ移行し、勝ち上がりレコードエン
トリ13のレコード(今回の入力レコード)を対戦の優
勝者と決定する。
【0057】また、ステップ205の判定の結果、同値
キーでなければ、ステップ208において、どちらのレ
コードの勝ちかを判定し、勝ち上がりレコードエントリ
13のレコード(今回の入力レコード)の勝ちならば、
トーナメント置換方式の手順として周知のように、ステ
ップ209において、今回の入力レコードのストリング
番号に1を加算する。そして、ステップ210におい
て、対戦結果保存手段14により保存されている対戦開
始エントリを得て、ステップ211以降の対戦処理を開
始する。
【0058】以上が、トーナメント置換方式を用いた対
戦手段2の処理手順の詳細であり、次にその理解を容易
にするために、実際の入力データを使用して対戦手段2
の処理の流れを再度説明する。
【0059】図5乃至図9は、対戦手段2の処理の流れ
について、実際の入力データを使用して例示したものも
のである。各図において、501〜520は各ステップ
を示し、1つのステップが1回の対戦の状態を示すもの
であり、入力データは小文字の英字1文字で示し、下線
を引いた部分がカレント入力データである。また、△は
カレント入力データの対戦開始エントリ、↑は次の入力
データの対戦開始エントリを示し、太線は対戦の優勝者
の対戦経緯を示す。さらにトーナメントツリーの各ノー
ドにおける記号は、最初の1文字がストリング番号、2
文字目がキー、3文字目に”−”を付加した場合は、対
応する対戦管理テーブル10の同値キーフラグがONで
あることを示す。但し、ストリングのデータに”−”を
付加した場合は付加データとしての同値キーフラグがO
Nであること示す。また、( )で囲んである場合は、そ
のノードにおける対戦で勝者となったことを示し、実際
のエントリは上位のノードにあることを意味する。な
お、ソートは昇順で行われるものと仮定している。
【0060】以下処理を順に追って説明していく。処理
は大きくわけて3つに分けられる。最初の部分は図5の
ステップ501から504までで、トーナメントツリー
で示されるレコードエントリが満杯になるまでの処理、
つまり入力データとして、c,d,d,cの4つが処理
されるまでである。図2のフローチャートで言えば、ス
テップ203でYESと判定されるまでの処理である。
この部分では、入力レコードの対戦開始エントリは左か
ら順番に進められる。この段階における本発明の特徴に
関する処理はステップ504であり、図2のステップ2
14で同値キー(c)が検出されることにより、勝ち上
がりレコードエントリ13の同値キーがONにされてい
る。
【0061】処理の第2の部分は、図6のステップ50
5から図8のステップ516までで、トーナメントツリ
ーで示されるレコードエントリが満杯になってから、入
力データが終了するまでの処理である。この部分では、
入力レコードの対戦開始エントリは、前回の対戦での優
勝者の対戦開始エントリとなる。またストリング番号の
決定はトーナメント置換方式の手順として知られている
ように以下のように行う。即ち、レコード入力時に入力
レコードと前回の優勝者(各ステップで一番右上に記し
たレコード。例えばステップ505で言えば1c−)を
対戦させ(図2のステップ204)、入力レコードが勝
ったならば、入力レコードのストリング番号を1増し、
以降の対戦ではストリング番号の小さい方が、キーの大
小によらずに勝ちとなるようにする。今の例では、ステ
ップ506における入力データ(a)が前回の優勝者
(c)に勝ったため、aのストリング番号を2にしてい
る。またステップ515における入力データ(a)が前
回の優勝者(b)に勝ったため、aのストリング番号を
3にしている。また、優勝者のストリング番号が切り替
わった時点で、出力するストリングの切り換えを行う。
今の例では、ステップ512で優勝者のストリング番号
が1から2に切り替わったので、出力するストリングを
今までのストリング1からストリング2に切り替えてい
る。なお、図9のステップ518でも、優勝者のストリ
ング番号が2から3に切り替わったので、出力するスト
リングを今までのストリング2からストリング3に切り
替えている。
【0062】この第2の部分における同値キーフラグの
扱いは第1の部分と同様であり、今の例では、ステップ
506,509,510,511,513,514にお
ける対戦で同値キーを検出している。特にステップ50
9では、入力レコードと前回の優勝者が同値キー(e)
であるため、実際にはトーナメントによる対戦はスキッ
プして、入力レコードをそのまま優勝者と決定してお
り、前回の優勝者の同値キーフラグをONに変更して出
力している。同様に、ステップ514でも、入力レコー
ドと前回の優勝者が同値キー(b)であり、トーナメン
トによる対戦はスキップして、入力レコードをそのまま
優勝者と決定している。
【0063】第3の部分は図9のスキップ517以降
で、入力レコードが終了してから、残っているレコード
を順次追い出していく処理である。本例では、残ってい
るレコードを順次追い出していくために、ダミーレコー
ド(図中の”Z”で示す)を対戦に参加させ、通常のレ
コードとダミーレコードとの対戦では必ず通常のレコー
ドの勝ちと決定するように定めている。そして、対戦を
行っていき、ダミーレコードが優勝者となった時点で処
理は終了する。
【0064】以上、トーナメント置換方式を用いた対戦
手段2の処理手順について説明した。トーナメント置換
方式を用いたマージ対戦手段5の処理手順についても全
く同様であり、上述の説明において、対戦手段2をマー
ジ対戦手段5に、対戦管理テーブル10をマージ対戦管
理テーブル12に、プリソート用レコードエリア9をマ
ージ対戦用レコードエリア11に、それぞれ読み換えれ
ば、トーナメント置換方式を用いたマージ対戦手段5の
処理手順の詳細は容易に理解されるであろう。
【0065】次に、バイナリインサーション方式を用い
た対戦手段2の処理手順の詳細ついて説明する。
【0066】周知のように、バイナリインサーション方
式は、ソート済みのレコード列と、そのレコード列に挿
入したいレコードとが与えられたときに、レコード列を
半分ずつの2つのグループに分割し、分割した境界に位
置するレコードと、挿入するレコードとを対戦させるこ
とにより、挿入するレコードがどちらのグループに属す
るかを判定し、以下同様に、レコード列を半分ずつに区
切って、属するグループを特定する処理を、分割したグ
ループのレコード数が1になるまで繰り返して挿入位置
を決定する(但し、レコードの対戦で同値キーとなった
場合は、その時点で挿入位置が決定する)方式である。
【0067】バイナリインサーション方式を適用する場
合、図1の実施例のソート処理においては、プリソート
用レコードエリア9に読み込み済みで且つ既にソート済
みのレコード群(これらは対戦管理テーブル10により
管理され、対戦管理テーブル10のエントリはキー順に
線形に並んでいる)と、新たに読み込んだレコードとを
対戦させ、挿入位置を決定する処理を繰り返していき、
最上位に位置付けられたレコードを、ストリングとして
ソートワークファイル7へ順次出力していく方法で処理
が進められる。
【0068】以下、図3を参照して、対戦管理テーブル
10により管理されたソート済みのレコード群に、新た
に読み込んだレコードを挿入する処理手順の詳細を説明
する。
【0069】対戦手段2は、まずステップ301にて、
対戦管理テーブル10で管理されるレコード群を、比較
対象レコード群(挿入するレコードが属するレコード
群)と設定し、ステップ302では、挿入するレコード
の対戦管理テーブル10のエントリの同値キーフラグを
OFFに初期設定する。
【0070】次に、ステップ303では、比較対象レコ
ード群を、キーの大小で2つのグループに分割する。な
お、以下の説明において、分割した上位グループとは、
キーの順序で先に出力すべきグループを意味し、同様に
下位グループとは、キーの順序で後から出力すべきグル
ープを意味するものとする。またステップ303の処理
において、比較対象グループの要素数が1である場合
は、便宜上下位グループに入れ、上位グループは空集合
とする。
【0071】ステップ304では、挿入するレコード
と、ステップ303で分割した下位グループ内の最上位
(キー順で最初に出力すべき)レコードとのキーを比較
し、ステップ305では、キー比較の結果、同値キーで
あったか否かを判定する。
【0072】判定の結果、同値キーならば、ステップ3
06で、挿入するレコードの同値キーフラグをONに設
定し、ステップ307では、下位グループの最上位レコ
ードの直前に、挿入するレコードの対戦管理テーブル1
0のエントリを挿入して処理を終了する。
【0073】他方、ステップ305の判定の結果、同値
キーでなければ、ステップ308において、どちらのレ
コードが勝ち(キー順で先に出力すべき)かを判定す
る。
【0074】ステップ308の判定の結果、挿入するレ
コードの勝ちであれば、ステップ309で、下位グルー
プの要素数をチェックし、要素数が1であれば、ステッ
プ310において、下位グループの(唯一の)レコード
の直前に、挿入するレコードの対戦管理テーブル10の
エントリを挿入して、今回の処理を終了し、要素数が2
以上ならば、ステップ311において、上位グループを
新たな比較対象グループとして設定して、ステップ30
3に戻り、比較を続行する。
【0075】また、ステップ308の判定の結果、比較
した相手(下位グループの最上位レコード)が勝ちであ
れば、ステップ312で、下位グループの要素数をチェ
ックし、要素数が1であれば、ステップ313におい
て、下位グループの(唯一の)レコードの直後に、挿入
するレコードの対戦管理テーブル10のエントリを挿入
して、今回の処理を終了し、要素数が2以上ならば、ス
テップ314において、下位グループを新たな比較対象
グループとして設定して、ステップ303に戻り、比較
を続行する。
【0076】以上がバイナリインサーション方式を用い
た対戦手段2の処理手順の詳細である。なお、バイナリ
インサーション方式を用いたマージ対戦手段5について
も全く同様であり、上述の説明において、対戦手段2を
マージ対戦手段5に、対戦管理テーブル10をマージ対
戦管理テーブル12に、プリソート用レコードエリア9
をマージ対戦用レコードエリア11に、それぞれ読み換
えれば、バイナリインサーション方式を用いたマージ対
戦手段5の処理手順の詳細は容易に理解されるであろ
う。
【0077】次に、マージ手段4における1回のマージ
処理の処理手順の詳細について、図4を参照して説明す
る。なお、以下では、ソートワークファイル7内のスト
リングをマージして、新たなストリングとして再度ソー
トワークファイル7に書き込む場合(即ち最終マージで
ない場合)の処理について説明する。
【0078】マージ手段4は、まずステップ401にお
いて、マージする各ストリングの先頭レコードを、マー
ジ対戦用レコードエリア11に読み込みながら、マージ
対戦手段5による対戦を行っていく。このとき、プリソ
ート処理において既に制御データとしてレコードに付加
されている同値キーフラグも、レコードイメージと同時
にマージ対戦用レコードエリア11に読み込む。ここ
で、マージ対戦用レコードエリア11に読み込んだ同値
キーフラグと、マージ対戦管理テーブル12の同値キー
フラグとは別のものであることに注意されたい。また、
プリソート時と同様に、レコードを対戦に参加させる際
には、該当レコードのマージ対戦管理テーブル12の同
値キーフラグはOFFに設定する。
【0079】次に、ステップ402では、対戦の優勝者
を出力レコードと決定する。即ち、全ストリングの先頭
レコードを読み終わった時点での優勝者を最初に出力す
べきレコードとする。
【0080】ステップ403では、出力レコードに付加
されている同値キーフラグがONであるか否かをチェッ
クし、ONであれば、ステップ404で、出力レコード
をソートファイル7へ出力(付加されている同値キーフ
ラグもそのまま付加して出力する)し、ステップ405
で、出力レコードの属するストリングから次のレコード
(これは先に出力したレコードと同値キーを持つレコー
ドである)を読み込み、新たな出力レコードに決定し
て、ステップ403に戻る。
【0081】ステップ403〜405の処理を、同値キ
ーフラグがOFFのレコードを読み込むまで繰り返した
後、ステップ406に移行する。
【0082】ステップ406では、直前の対戦での優勝
者の、マージ対戦管理テーブル12のエントリの同値キ
ーフラグをチェックし、ONであれば、マージ時の対戦
で新たに同値キーレコードが見つかったということなの
で、ステップ407において、出力レコードとそれに付
加する同値キーフラグ(ONに設定)とを、ソートワー
クファイル7へ出力する。他方、チェックの結果、同値
キーフラグがOFFであれば、ステップ408におい
て、出力レコードとそれに付加する同値キーフラグ(O
FFに設定)とを、ソートワークファイル7へ出力す
る。
【0083】出力レコードをソートワークファイル7へ
出力した後、ステップ409において、出力レコードの
属するストリングから次のレコードを読み込み、ステッ
プ410では、読み込みの結果、出力レコードが属する
ストリングのレコードが終了していたか否かを判定す
る。
【0084】出力レコードが属するストリングのレコー
ドが終了していたならば、ステップ411で、マージ対
戦用レコードエリア11内のレコードで、まだ出力して
いないレコードが残っているか否かを判定し、残ってい
なければ処理(1回のマージ処理)を終了し、残ってい
れば、ステップ412にて、残っているレコードで対戦
を行って新たな優勝者を決定し、ステップ402に戻
り、処理を続行する。
【0085】ステップ410の判定の結果、出力レコー
ドが属するストリングのレコードが終了していなけれ
ば、即ちステップ409で次のレコードが読み込まれた
ならば、ステップ413にて、読み込んだレコードを対
戦に参加させて新たな優勝者を決定し、ステップ402
に戻って処理を続行する。
【0086】以上がマージ手段4における1回のマージ
処理の手順の詳細であるが、より理解を容易にするため
に、実際の入力データを使用して更に説明する。
【0087】図10および図11は、マージ手段4にお
ける1回のマージ処理の流れについて、実際の入力デー
タを使用して例示したものである。この例では3本のス
トリング1〜3をマージして、再度ソートワークファイ
ル7へ出力する例である。各図において、601〜61
1は各ステップを示し、1つのステップが1回の対戦の
状態を示すものであり、入力データは小文字の英字1文
字で示す。各ストリングのデータは、その時点でメモリ
に読み込まれている(最左端のデータ)か、または、こ
れから読み込むデータを示しており、出力済みのデータ
については記述していない。また、図5〜図9と同様
に、”−”は同値キーフラグを示し、ストリングのデー
タの後ろに”−”を付記した場合は、制御データとして
レコードに付加されている同値キーフラグがONである
ことを意味し、対戦の勝者に”−”を付記した場合は、
対戦の勝者レコードの、マージ対戦管理テーブル12の
同値キーフラグがONであることを意味する。なお、対
戦はトーナメント置換方式により行うものと仮定してい
る。
【0088】以下処理の順を追って説明していく。ステ
ップ601では、ストリングの先頭レコードの対戦を行
う。本例では、同値キーの場合、ストリング番号が小さ
い方を勝者とするので、この対戦の結果の優勝者は、ス
トリング2に所属するレコードaであり、優勝者のレコ
ードaの同値キーフラグはマージ対戦手段5によってO
Nにされている(図2のステップ215相当の処理によ
る)ため、図4のステップ403の結果はYESとな
り、出力レコードaに付加する同値キーフラグもONと
なる。
【0089】ステップ602では、ステップ601での
優勝者の属するストリング2から次のレコードbを読み
込んで対戦を行い、ストリング3に所属するレコードa
が優勝者となり、出力される。このとき、対戦相手は同
値キーでなかったので、図4のステップ403の判定結
果はNOとなり、且つ、優勝者レコードbに対応するマ
ージ対戦管理テーブル12の同値キーフラグはOFFな
ので、図4のステップ406の判定結果はNOとなり、
その結果、出力レコードaの同値キーフラグはOFFの
ままである。
【0090】ステップ603では、ステップ602での
優勝者の属するストリング3から次のレコードを読み込
み(図4のステップ409)、対戦を行い、ストリング
2に所属するレコードbが優勝者となり、出力される。
【0091】ステップ604では、ステップ603での
優勝者の属するストリング2から次のレコードcを読み
込んで対戦を行い、ストリング3に所属するレコードb
が優勝者となり、出力される。
【0092】ストリング605では、ストリング604
での優勝者の属するストリング3から次のレコードを読
み込むが、ストリング3内のレコードが終了しているた
め、ストリング1と2のレコードで対戦を行い、ストリ
ング1に所属するレコードcが優勝者となり、出力され
る。このとき、出力レコードcに付加されている同値キ
ーフラグがONであるため、後続の同値キーレコードc
も対戦させることなく直ちに出力する。さらに、マージ
対戦管理テーブル12の該当同値キーフラグもON(ス
トリング2のレコードcと同値キーであったため)であ
るため、後続の同値キーレコードcに付加する同値キー
フラグをONにして出力する。
【0093】ステップ606では、ステップ605での
優勝者の属するストリング1から次のレコードdを読み
込んで対戦を行い、ストリング2に所属するレコードc
が優勝者となり、出力される。このとき、出力レコード
cに付加されている同値キーフラグがONであり、後続
に2個の同値キーレコードcが存在するため、それらの
同値キーレコードも対戦させることなく直ちに出力す
る。
【0094】以上のようにして、ストリング1における
2個の連続する同値キーレコード(c−c)と、ストリ
ング2における3個の連続する同値キーレコード(c−
c−c)とがマージされて、5個の連続する同値キーレ
コード(c−c−c−c−c)にまとめられる。
【0095】以下、ステップ607以降についても同様
である。
【0096】
【発明の効果】以上説明したように、本発明は、プリソ
ートフェーズにおいて、各ストリングに出力するレコー
ドに、当該レコードの後続のレコードが同値キーレコー
ドであるか否かを示す同値キーフラグを付加し、マージ
フェーズにおいて、対戦の優勝者レコードをストリング
に出力した後、その優勝者レコードの属するストリング
から次のレコードを得たときに、前記出力した優勝者レ
コードに付加されていた同値キーフラグをチェックし、
該同値キーフラグが後続のレコードが同値キーレコード
であるこを示すときは、前記取得した次のレコードは対
戦に参加させることなくそのままストリングに出力する
ようにしたので、マージフェーズにおける同値キーレコ
ード同士の対戦が極力抑えられ、同値キーレコードの削
除を行う従来技術の場合と同様にキー比較回数を削減す
ることができ、しかも、従来技術のように出力時に(ソ
ート時にカウントした)同値キーレコード数分だけレコ
ードを複写したり、キー情報を元にレコードイメージを
復元したりする処理を行う必要もないので、その分、ソ
ート処理時間を短縮することができる効果がある。
【0097】また、マージフェーズにおいて、最終マー
ジ以外の場合のストリングにレコードを出力する際、プ
リソートフェーズにおける場合と同様に、当該レコード
の後続のレコードが同値キーレコードであるか否かを示
す同値キーフラグを付加したことにより、これらのスト
リングのマージ時に前述と同様の原理でキー比較回数を
減らすことができる。
【図面の簡単な説明】
【図1】本発明の一実施例のブロック図である。
【図2】トーナメント置換方式を用いた対戦手段の処理
手順を示すフローチャートである。
【図3】バイナリインサーション方式を用いた対戦手段
の処理手順を示すフローチャートである。
【図4】マージ手段における1回のマージ処理の手順を
示すフローチャートである。
【図5】対戦手段の処理の流れについて実際の入力デー
タを使用して例示した図である。
【図6】対戦手段の処理の流れについて実際の入力デー
タを使用して例示した図である。
【図7】対戦手段の処理の流れについて実際の入力デー
タを使用して例示した図である。
【図8】対戦手段の処理の流れについて実際の入力デー
タを使用して例示した図である。
【図9】対戦手段の処理の流れについて実際の入力デー
タを使用して例示した図である。
【図10】マージ手段における1回のマージ処理の流れ
について実際の入力データを使用して例示した図であ
る。
【図11】マージ手段における1回のマージ処理の流れ
について実際の入力データを使用して例示した図であ
る。
【符号の説明】
1…プリソート手段 2…対戦手段 3…キー比較手段 4…マージ手段 5…マージ対戦手段 6…入力データ 7…ソートワークファイル 8…出力データ 9…プリソート用レコードエリア 10…対戦管理テーブル 11…マージ対戦用レコードエリア 12…マージ対戦管理テーブル 13…勝ち上がりレコードエントリ 14…対戦結果保存手段

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】 メモリに入り切らない大量のレコード
    を、プリソートフェーズとマージフェーズとに分けてソ
    ートする方式において、 ソート対象レコードを格納するプリソート用レコードエ
    リアと、 該プリソート用レコードエリアに格納されたソート対象
    レコードのレコードポインタおよび同値キーフラグを、
    各レコード対応に格納する対戦管理テーブルと、 キー比較手段と、 対戦に参加している各レコードの前記プリソート用レコ
    ードエリア内アドレスであるレコードポインタとOFF
    状態に初期化した同値キーフラグとを前記対戦管理テー
    ブルに設定し、前記キー比較手段を用いてレコードの対
    戦を行って優勝者レコードを決定すると共に、同値キー
    レコード同士の対戦があった場合には、その何れか一方
    を勝者にしてその勝者に対応する前記対戦管理テーブル
    の同値キーフラグをONにする対戦手段と、 外部より入力されたソート対象レコードを1件ずつ前記
    プリソート用レコードエリアへ読み込みながら前記対戦
    手段を呼び出して、前記読み込んだレコードを、前記プ
    リソート用レコードエリア内に既に存在するレコード群
    と対戦させ、前記対戦手段が決定した対戦の優勝者レコ
    ードを、そのレコードに対応する前記対戦管理テーブル
    の同値キーフラグを付加して、前記ソートワークファイ
    ルへ順次出力していくことにより、ソート中間結果とし
    てストリングと呼ぶ順序付けられたレコード列を作成す
    るプリソート手段と、 マージ対戦対象のレコードをそれに付加された同値キー
    フラグとともに格納するマージ対戦用レコードエリア
    と、 マージ対戦対象のレコードの前記マージ対戦用レコード
    エリア内アドレスであるレコードポインタおよび同値キ
    ーフラグを、各レコード対応に格納するマージ対戦管理
    テーブルと、 マージ対戦に参加している各レコードの前記マージ対戦
    用レコードエリア内アドレスであるレコードポインタと
    OFF状態に初期化した同値キーフラグとを前記マージ
    対戦管理テーブルに設定し、前記キー比較手段を用いて
    レコードの対戦を行って優勝者レコードを決定すると共
    に、同値キーレコード同士の対戦があった場合には、そ
    の何れか一方を勝者にしてその勝者に対応する前記マー
    ジ対戦管理テーブルの同値キーフラグをONにするマー
    ジ対戦手段と、 前記ソートワークファイル内の複数のストリングを繰り
    返しマージしていって1本のストリングにまとめるソー
    ト処理を制御する手段であって、幾つかのストリングか
    ら1本のストリングを生成する1回のマージ処理におい
    て、今回のマージ対象のストリングの先頭レコードを順
    次前記マージ対戦用レコードエリアに読み込んで前記マ
    ージ対戦手段を呼び出してレコードの対戦を行わせ、前
    記マージ対戦手段が優勝者レコードを決定したとき、そ
    の優勝者レコードを出力レコードと決定して、該決定し
    た出力レコードに付加されている同値キーフラグを参照
    し、 出力レコードに付加されている同値キーフラグがONで
    あれば、その出力レコードをそれに元々付加されていた
    同値キーフラグを付加してストリングに出力し且つその
    出力レコードの属するストリングから読み込んだ次のレ
    コードを対戦に参加させることなく出力レコードに決定
    する処理を、付加されている同値キーフラグがOFFの
    出力レコードを読み込むまで繰り返し、 出力レコードに付加されている同値キーフラグがOFF
    であったとき、および、その同値キーフラグがONであ
    って前記処理が行われて同値キーフラグがOFFの出力
    レコードが読み込まれたときは、前記マージ対戦手段が
    決定した優勝者レコードに対応する前記マージ対戦管理
    テーブルの同値キーフラグを参照し、該同値キーフラグ
    がONであれば、ONにした同値キーフラグを付加した
    出力レコードをストリングに出力し、OFFであれば、
    その出力レコードにOFFの同値キーフラグを付加して
    ストリングに出力するマージ手段とを備えることを特徴
    とする同値キーが存在するデータのソート方式。
  2. 【請求項2】 請求項記載の同値キーが存在するデー
    タのソート方式において、 対戦で勝ち上がった方のレコードの情報を一時的に設定
    しておくための作業領域である勝ち上がりレコードエン
    トリを備え、 前記対戦手段はレコード対戦方式としてトーナメント置
    換方式を用い、対戦は2進木構造で定義される対戦構造
    の下位から上位に向けて勝ち抜き戦形式で行っていき、
    対戦構造の各ノード毎に、前記対戦管理テーブルのエン
    トリを対応させ、該エントリには対戦で負けた方のレコ
    ードの情報を設定し、対戦の開始時には、読み込んだレ
    コードの情報を前記勝ち上がりレコードエントリに設定
    し、その後勝ち上がりレコードエントリのレコードと対
    戦管理テーブルのレコード群とを、対戦構造に従って順
    次対戦させていき、前記対戦管理テーブル側のレコード
    が勝った場合は、前記勝ち上がりレコードエントリと対
    戦管理テーブル側のレコードの対戦管理テーブルエント
    リとを交換し、以下同様に対戦を続け、対戦終了時に、
    前記勝ち上がりレコードエントリに設定されているレコ
    ードを対戦の優勝者に決定し、更に、同値キーレコード
    の対戦があった場合、前記勝ち上がりレコードエントリ
    に設定されているレコードを勝者と決定し、前記勝ち上
    がりレコードエントリの同値キーフラグをONに設定す
    ることを特徴とする同値キーが存在するデータのソート
    方式。
  3. 【請求項3】 請求項記載の同値キーが存在するデー
    タのソート方式において、 前記対戦手段による対戦の優勝者,優勝者の同値キーフ
    ラグ,次に入力したレコードの対戦開始エントリを含む
    対戦情報を一時的に記憶しておくための対戦結果保存手
    段を備え、 前記対戦手段は1回の対戦が終了して優勝者が決定した
    時点で、前記対戦結果保存手段に対戦情報を保存すると
    共に、対戦を行うにあたり、前記対戦結果保存手段に保
    存されている前回の対戦での優勝者レコードと今回入力
    されたレコードとのキーを比較し、同値キーでなけれ
    ば、前記対戦結果保存手段に保存されている対戦開始エ
    ントリからトーナメントの対戦を開始し、同値キーであ
    れば、トーナメントの対戦はスキップし、入力されたレ
    コードを直ちに今回の対戦の優勝者と決定すると共に、
    前記対戦結果保存手段により保存されている前回の優勝
    者の同値キーフラグの値を、今回の対戦の優勝者の同値
    キーフラグとして引き継いだ後、前記対戦結果保存手段
    により保存されている前回の優勝者の同値キーフラグは
    ONに設定し、 前記プリソート手段は、前記対戦手段による1回の対戦
    を行って優勝者を決定した時点で、前記対戦結果保存手
    段により保存されている前回の対戦での優勝者およびそ
    の同値キーフラグを出力することを特徴とする同値キー
    が存在するデータのソート方式。
  4. 【請求項4】 請求項記載の同値キーが存在するデー
    タのソート方式において、 前記マージ対戦手段による対戦で勝ち上がった方のレコ
    ードの情報を一時的に設定しておくための作業領域であ
    る勝ち上がりレコードエントリを備え、 前記マージ対戦手段はレコード対戦方式としてトーナメ
    ント置換方式を用い、対戦は2進木構造で定義される対
    戦構造の下位から上位に向けて勝ち抜き戦形式で行って
    いき、対戦構造の各ノード毎に、前記マージ対戦管理テ
    ーブルのエントリを対応させ、該エントリには対戦で負
    けた方のレコードの情報を設定し、対戦の開始時には、
    読み込んだレコードの情報を前記勝ち上がりレコードエ
    ントリに設定し、その後勝ち上がりレコードエントリの
    レコードとマージ対戦管理テーブルのレコード群とを、
    対戦構造に従って順次対戦させていき、前記マージ対戦
    管理テーブル側のレコードが勝った場合は、前記勝ち上
    がりレコードエントリとマージ対戦管理テーブル側のレ
    コードのマージ対戦管理テーブルエントリとを交換し、
    以下同様に対戦を続け、対戦終了時に、前記勝ち上がり
    レコードエントリに設定されているレコードを対戦の優
    勝者に決定し、更に、同値キーレコードの対戦があった
    場合、前記勝ち上がりレコードエントリに設定されてい
    るレコードを勝者と決定し、前記勝ち上がりレコードエ
    ントリの同値キーフラグをONに設定することを特徴と
    する同値キーが存在するデータのソート方式。
  5. 【請求項5】 請求項記載の同値キーが存在するデー
    タのソート方式において、 前記マージ対戦手段による対戦の優勝者,優勝者の同値
    キーフラグ,次に入力したレコードの対戦開始エントリ
    を含む対戦情報を一時的に記憶しておくための対戦結果
    保存手段を備え、 前記マージ対戦手段は1回の対戦が終了して優勝者が決
    定した時点で、前記対戦結果保存手段に対戦情報を保存
    すると共に、対戦を行うにあたり、前記対戦結果保存手
    段に保存されている前回の対戦での優勝者レコードと今
    回入力されたレコードとのキーを比較し、同値キーでな
    ければ、前記対戦結果保存手段に保存されている対戦開
    始エントリからトーナメントの対戦を開始し、同値キー
    であれば、トーナメントの対戦はスキップし、入力され
    たレコードを直ちに今回の対戦の優勝者と決定するとと
    もに、前記対戦結果保存手段により保存されている前回
    の優勝者の同値キーフラグの値を、今回の対戦の優勝者
    の同値キーフラグとして引き継いだ後、前記対戦結果保
    存手段により保存されている前回の優勝者の同値キーフ
    ラグはONに設定し、 前記マージ手段は、前記マージ対戦手段による1回の対
    戦を行って優勝者を決定した時点で、前記対戦結果保存
    手段により保存されている前回の対戦での優勝者および
    その同値キーフラグとを出力することを特徴とする同値
    キーが存在するデータのソート方式。
  6. 【請求項6】 請求項記載の同値キーが存在するデー
    タのソート方式において、 前記対戦手段はレコード対戦方式としてバイナリインサ
    ーション方式を用い、対戦は、前記プリソート用レコー
    ドエリアに新たに読み込んだレコードを、既に読み込み
    済みでキー順に並んでいるレコード群内のどの位置に挿
    入すべきかを、バイナリインサーション方式により決定
    して、決定した位置にレコードを挿入する方式で行い、
    且つ、 挿入位置の決定は、レコード群を半分ずつの2つのグル
    ープに分割し、分割した境界に位置するレコードと、挿
    入するレコードとを対戦させることにより、挿入するレ
    コードがどちらのグループに属するかを判定することで
    行い、且つ、挿入するレコードとの対戦相手は、分割し
    た下位のグループの最上位レコードを採用し、同値キー
    レコードの対戦においては、挿入するレコードの方を勝
    ちとし、挿入するレコードに対応する前記対戦管理テー
    ブルの同値キーフラグをONにすることを特徴とする同
    値キーが存在するデータのソート方式。
  7. 【請求項7】 請求項記載の同値キーが存在するデー
    タのソート方式において、 前記マージ対戦手段はレコード対戦方式としてバイナリ
    インサーション方式を用い、対戦は、前記マージ対戦用
    レコードエリアに新たに読み込んだレコードを、既に読
    み込み済みでキー順に並んでいるレコード群内のどの位
    置に挿入すべきかを、バイナリインサーション方式によ
    り決定して、決定した位置にレコードを挿入する方式で
    行い、且つ、 挿入位置の決定は、レコード群を半分ずつの2つのグル
    ープに分割し、分割した境界に位置するレコードと、挿
    入するレコードとを対戦させることにより、挿入するレ
    コードがどちらのグループに属するかを判定することで
    行い、且つ、挿入するレコードとの対戦相手は、分割し
    た下位のグループの最上位レコードを採用し、同値キー
    レコードの対戦においては、挿入するレコードの方を勝
    ちとし、挿入するレコードに対応する前記マージ対戦管
    理テーブルの同値キーフラグをONにすることを特徴と
    する同値キーが存在するデータのソート方式。
JP6290451A 1994-10-31 1994-10-31 同値キーが存在するデータのソート方式 Expired - Fee Related JP2606608B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6290451A JP2606608B2 (ja) 1994-10-31 1994-10-31 同値キーが存在するデータのソート方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP6290451A JP2606608B2 (ja) 1994-10-31 1994-10-31 同値キーが存在するデータのソート方式

Publications (2)

Publication Number Publication Date
JPH08129478A JPH08129478A (ja) 1996-05-21
JP2606608B2 true JP2606608B2 (ja) 1997-05-07

Family

ID=17756204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6290451A Expired - Fee Related JP2606608B2 (ja) 1994-10-31 1994-10-31 同値キーが存在するデータのソート方式

Country Status (1)

Country Link
JP (1) JP2606608B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3344559B2 (ja) 1998-06-19 2002-11-11 三菱電機株式会社 マージソート処理装置
KR100292662B1 (ko) * 1999-08-23 2001-06-15 이경봉 인터넷상에서 주문형 궁합 제공 방법

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0782429B2 (ja) * 1984-09-15 1995-09-06 カシオ計算機株式会社 複数ファイルのマージ方法
JPH0667843A (ja) * 1992-08-14 1994-03-11 Nec Corp ソート処理装置

Also Published As

Publication number Publication date
JPH08129478A (ja) 1996-05-21

Similar Documents

Publication Publication Date Title
US6310971B1 (en) Information processing method and apparatus, and storage medium storing medium storing program for practicing this method
EP0250705B1 (en) Method and apparatus for retrieval of symbol strings from data
US5027305A (en) Interrogating device for changing the priority of the inference rules
JP3630057B2 (ja) 検索用データ構造構築方法、その装置、及び機械可読プログラム記録媒体
JP2606608B2 (ja) 同値キーが存在するデータのソート方式
US20040044683A1 (en) Data compiling method
US6678229B1 (en) Methods for optimizing recording order of data files to optical media
JP3183205B2 (ja) プリソート処理方式
CN114297193A (zh) 一种基于hash的数据比对方法及装置
JP3534471B2 (ja) マージソート方法及びマージソート装置
JP3387470B2 (ja) ソート処理方法及びソート処理装置
JPH0451320A (ja) プリソート処理方式
JPH11513160A (ja) 反復探索実行方法
JPH1139344A (ja) 2次元配列コードを用いた文字列検索方法
JP3293551B2 (ja) ソート処理方法
JP2001318783A (ja) ソート処理装置および記録媒体
JPH1021066A (ja) プログラム自動生成方法
CN114372176A (zh) 棋谱纠正方法及设备
JPS61275934A (ja) デイスクソ−トシステム
JP2673085B2 (ja) リレーショナルデータベースの結合処理方法
JPH04141726A (ja) ソート処理方式
JPH06332669A (ja) レコードソート方式
JPH09222909A (ja) シーケンスプログラム自動作成装置
JPH048816B2 (ja)
JPH05120338A (ja) 索引検索方式

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees