JP3293551B2 - ソート処理方法 - Google Patents
ソート処理方法Info
- Publication number
- JP3293551B2 JP3293551B2 JP7622198A JP7622198A JP3293551B2 JP 3293551 B2 JP3293551 B2 JP 3293551B2 JP 7622198 A JP7622198 A JP 7622198A JP 7622198 A JP7622198 A JP 7622198A JP 3293551 B2 JP3293551 B2 JP 3293551B2
- Authority
- JP
- Japan
- Prior art keywords
- record
- strings
- merged
- output
- string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
ート処理を行う場合に好適なソート処理方法に関する。
は、入力データからソートの中間結果であるソート済み
レコード列(以下、ストリングと呼ぶ)を磁気ディスク
装置等の補助記憶装置内の作業ファイルに複数個出力
し、これらを読み出してマージすることによって最終的
なソート結果を得る方式が用いられている。
ト対象である全データ量が多いと、ソートの中間結果た
る全ストリング数が一度にマージできるストリング数
(以下、マージウェイ数と呼ぶ)よりも多くなるという
事態が生じる場合がある。かかる場合、従来のソート処
理方法においては、作業ファイル内のストリング同士を
マージし、この結果得られる新たなストリングを作業フ
ァイルに出力する。そして、この新たなストリングの数
がマージウェイ数よりも多い場合には、再び作業ファイ
ル内のストリング同士をマージし、新たなストリングを
作業ファイルに出力するのである。このような処理をス
トリング数がマージウェイ数より少なくなるまで繰り返
し、ストリング数がマージウェイ数より少なくなったと
きに、その時点で最終的に残った全てのストリングをマ
ージし、最終的なソート結果として出力するのである。
来のソート処理方法において、最も時間を費やす処理は
作業ファイルとの間で行うストリングの入出力処理であ
る。何故ならばストリングを格納する補助記憶装置は、
ソートやマージの作業に使用する主記憶装置よりもアク
セス速度が低いからである。ここで、ソートに使用でき
る主記憶装置の容量が十分に大きければ、中間的なソー
ト結果であるストリングのデータ量を大きくすることが
できるため、作業ファイルとの間で行うストリングの入
出力回数を少なくすることができる。しかしながら、メ
モリの容量が小さい場合は、ストリングのデータ量を大
きくすることができないことからストリング数が必然的
に大きくなり、作業ファイルとの間で行うストリングの
入出力回数が多くなり、ソート処理に要する時間が増大
することとなる。
れたものであり、補助記憶装置との間で行うストリング
の入出力の回数を従来よりも低減することができ、従来
よりも短い所要時間で大量データのソート処理を行うこ
とができるソート処理方法を提供することを目的として
いる。
入力レコードを所定量ずつ取り込み、所定のキーに基づ
いてソートし、その結果得られるソート済みのレコード
列である複数のストリングを補助記憶装置に格納し、該
補助記憶装置内の各ストリングをマージすることにより
最終的なソート済みレコード列を出力するソート処理方
法において、補助記憶装置内の複数のストリングをマー
ジする際にマージ対象であるストリングの数がマージ可
能なストリング数を越えている場合には、 a.各ストリングの先頭のレコードのキーの値を調べ、
当該キーの値のソート優先順位の高いものから順に前記
マージ可能なストリング数分のストリングをマージ対象
として選択し、 b.前記補助記憶装置内に格納された前記マージ対象と
ならならなかった各ストリングの先頭のレコードのキー
の値のうちソート優先順位が最も高いものをレコード出
力閾値として設定し、 c.前記マージ対象となるストリングのマージを行い、
マージ済みのレコードの前記キーの値が前記レコード出
力閾値を越えない間は当該マージ済みレコードを前記最
終的なソート済みレコード列として出力し、マージ済み
のレコードの前記キーの値が前記レコード出力閾値を越
えている場合は当該マージ済みレコードを新たなストリ
ングとして前記補助記憶装置に格納し、 d.前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になるまで前記マージ対象の選択、前
記レコード出力閾値の設定および前記マージを繰り返
し、前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になった時点で当該ストリングをマー
ジして出力することを特徴とするソート処理方法を要旨
とする。
ングを補助記憶装置に格納する際に、各ストリングにお
ける先頭のレコードの前記キーの値を前記補助記憶装置
よりも高速アクセス可能な記憶手段に予め格納し、この
記憶手段に格納した各キーの値に基づいて前記マージ対
象の選択および前記レコード出力閾値の設定を行うこと
を特徴とする請求項1に記載のソート処理方法を要旨と
する。
ト済みレコード列を出力ファイルバッファに一旦格納
し、この出力ファイルバッファに蓄積されたレコード列
を最終的な出力先に出力することを特徴とする請求項1
または2に記載のソート処理方法を要旨とする。
施の形態について説明する。図1はこの発明の一実施形
態であるソート処理方法を実行する情報処理装置の構成
を示すブロック図である。この情報処理装置は、プロセ
ッサ100と、主記憶装置200と、磁気ディスク装置
300とにより構成されている。
り、このメモリには本実施形態に係るソート処理用プロ
グラムが記憶されている。図1におけるソート処理手段
1は、プロセッサ100がこのソート処理用プログラム
を実行することにより提供される手段であり、プリソー
ト手段11、ストリングマージ手段12およびストリン
グ選択手段13により構成されている。
スク装置300内の入力ファイル21、作業ファイル2
2および出力ファイル23並びに主記憶装置200内の
ストリング管理テーブル31を使用してソート処理が行
われる。
ートと、コレーションという2つの過程から成り立って
いる。
ト手段11は、入力ファイル21から1回のレコード入
力で入力可能な数のレコードを読み込んでソートを行
い、その結果を1本のストリングとして作業ファイル2
2へ出力する。その際、作業ファイル22に出力された
ストリングの作業ファイル22内のアドレスと、そのス
トリングの先頭レコードのキーの値をストリング管理テ
ーブル31に登録する。
ード入力とストリング出力を、入力ファイル21上の全
てのレコードを読み終えるまで繰り返す。
22上に出力されたストリングを全てマージすることに
よって、最終的なソート処理結果を得て出力ファイル2
3へ出力する。
12は1度にマージウェイ数分のストリングをマージす
ることができる。ここで、作業ファイル22上のストリ
ング数がマージウェイ数以下の場合、このマージウェイ
数分のストリングのマージ結果は最終的なソート処理結
果となるので、ストリングマージ手段12はマージ結果
を出力ファイルへ出力する。
がマージウェイ数より多い場合には、このマージウェイ
数分のストリングのマージ結果は最終的なソート処理結
果にはならない。しかし、ストリングの選択によって
は、このマージウェイ数分のストリングのマージ結果の
一部分は最終的なソート処理結果の一部分となる。スト
リング選択手段13は、この選択方法を提供するもので
ある。すなわち、次の通りである。
ストリング同士をマージするかをストリング選択手段1
3に問い合わせる。ストリング選択手段13は、この問
い合わせを受けて、ストリング管理テーブル31を参照
し、各ストリングの先頭レコードのキーの値を比較し、
ソート優先順位が高いキーの値を先頭レコードに含むス
トリングから順にマージウェイ数分だけストリングを選
択し、ストリングマージ手段12に通知する。また、そ
の際選ばれなかったストリングのうち、もっともソート
優先順位が高いキーの値を先頭レコードに含むものにつ
いて、その先頭レコードのキーの値をレコード出力閾値
としてストリングマージ手段12に通知する。
ストリングをマージする際に、マージされたレコードの
キーの値のソート優先順位がレコード出力閾値のソート
優先順位よりも高いか等しい場合、マージされたレコー
ドは最終的なソート処理結果の一部であるから、それを
出力ファイル23へ出力する。そうでない場合、つまり
マージされたレコードのキーの値がレコード出力閾値よ
りもソート優先順位が低い場合、マージされたレコード
をストリングとして作業ファイル22へ出力する。こう
してストリングマージ手段12はマージウェイ数分のス
トリングについてマージを行い、そのマージ結果を作業
ファイル22へ一本のストリングとして出力し終わる
と、作業ファイル22へ出力されたストリングの作業フ
ァイル22内のアドレスとそのストリングの先頭レコー
ドのキーの値をストリング管理テーブル31に登録し、
再度作業ファイル22上のストリングをマージウェイ数
分選択してマージを行なう。
ル22上のストリング数がマージウェイ数以下になるま
でストリングのマージを繰り返し、作業ファイル22上
のストリング数がマージウェイ数以下になれば、ストリ
ングマージ手段12はこのマージウェイ数分のストリン
グのマージ結果を最終的なソート処理結果として出力フ
ァイル23へ出力し、コレーション過程終了、すなわち
ソート処理終了となる。
にソートする場合における本実施形態の具体的処理例に
ついて説明する。
に従って行われる。すなわち、プリソート手段11は、
磁気ディスク装置300内の入力ファイル21から一度
にソート可能な数のレコードを読み込み(ステップS
1)、これらのレコードを所定のキーが昇順に並ぶよう
にソートする(ステップS2)。そして、このソートに
より得られたレコード列であるストリングを磁気ディス
ク装置300内の作業ファイル22へ書き込むととも
に、当該ストリングの作業ファイル22内でのアドレス
と、当該ストリングの先頭レコードのキーの値をストリ
ング管理テーブル31に登録する(ステップS3)。以
後、入力レコードがなくなるまでこれを繰り返す(ステ
ップS4、S1〜S3)。
図3はこのプリソート過程の終了時におけるストリング
管理テーブル31の内容を例示したものである。この処
理例において、プリソート手段11は8本のストリング
を作業ファイル22に作成している。従って、ストリン
グ管理テーブル31には、これらの8本のストリングに
対応した各情報が格納されているのである。なお、各ス
トリングの作業ファイル内のアドレスは、本実施形態の
技術的意義を理解する上で重要度が低いので図示を省略
した。
ーに従って行われる。なお、この処理例では、マージウ
ェイ数が3であり、ストリングマージ手段12は同時に
3本のストリングをマージすることができるとする。
ばストリング管理テーブル31を参照することにより、
作業ファイル22内のストリングの数がマージウェイ数
以下か否かを判断する(ステップS11)。
8個のストリングが含まれているため、ステップS11
判断結果が「NO」となり、ステップS12へ進む。
マージ手段12は、ストリング選択手段13にマージす
べきストリングを問い合わせる。ストリング選択手段1
3は、ストリング管理テーブル31を参照し、各ストリ
ングのうち先頭レコードのキーの値が最も小さいストリ
ング、2番目に小さいストリングおよび3番目に小さい
ストリングを選択し、ストリングマージ手段12に通知
する。図3に示す例では、ストリング番号4、7、3の
各ストリングの先頭のレコードのキーの値が「2」、
「4」、「6」となっており、これらの3個のキーの値
が最も小さい。従って、ストリング選択手段13は、ス
トリング番号4、7、3をストリングマージ手段12に
通知する。また、ストリング選択手段13は、残りのス
トリングの先頭レコードのキーの値のうち、もっとも小
さい数字をレコード出力閾値としてストリングマージ手
段12に通知する。図3に示す例では、ストリング番号
1のストリングの先頭レコードのキーの値「9」がレコ
ード出力閾値としてストリングマージ手段12に通知さ
れることとなる(以上、ステップS12)。
ァイル22からストリング番号4、7、3の各ストリン
グを読み出してマージする(ステップS14)。このと
き、マージして得られたレコードのキーの値は「2」か
ら始まり徐々に増えていく。これがレコード出力閾値と
等しい「9」になるまでは、そのマージ済みレコードを
最終的なソート処理結果として出力ファイル23へ出力
する(ステップS14、S15、S17)。そして、レ
コード出力閾値より大きくなると、以降のマージ済みレ
コードを作業ファイル22へストリングとして出力する
(ステップS14、S16、S17)。
手段12は、出力したストリングについて、作業ファイ
ル22内のアドレスと先頭レコードのキーの値をストリ
ング管理テーブル31に登録し、再度、ストリング選択
手段13へマージすべきストリングを問い合わせる。以
後、作業ファイル22内のストリング数がマージウェイ
数の3以下になるまでこれを繰り返す。
数がマージウェイ数の3以下になった場合には、作業フ
ァイル22から各ストリングを読み出してマージし(ス
テップS18)、マージした結果を出力ファイル23に
書き込む(ステップS19)。
の全処理が終了し、ソートされた全レコードが出力ファ
イル23内に得られる。
たが、本発明の適用範囲はこれに限定されるものではな
く、本発明には様々な変形例が考えられる。例えば次の
通りである。 (1)ソート処理の処理形態として、入力ファイルと出
力ファイルが存在しない形態が有り得る。この場合、図
5に示すように、ファイル以外のレコード入力元24か
らレコードを入力し、ファイル以外のレコード出力先2
5にソート済みのレコードを出力する形態で本発明を実
施することができる。 (2)ソート処理に限らず、一般に複数レコードをファ
イルへ出力する処理においては、各レコードを1個ずつ
出力するのではなく、複数レコードを蓄積しておく領域
(以後出力バッファと呼ぶ)に1個ずつためていき、出
力バッファが一杯になった時点で出力バッファにある複
数レコードを一括して出力ファイルへ出力する方式があ
る。本発明でも、図6の実施形態のように、出力ファイ
ル23へのレコード出力について出力バッファ14を用
意し、複数レコードを一括して出力することができる。
ば、作業ファイル上のストリング数がマージウェイ数よ
りも大きい場合において複数のストリングのマージを行
う場合に、マージ結果の一部を最終的なソート結果とし
て出力することができるので、作業ファイルとの間で行
うストリングファイルの入出力の回数を低減することが
でき、ソートの処理時間を短縮することができる。ま
た、この発明によれば、作業ファイル内のストリングの
マージが開始されると、直ちにマージ結果が最終的なソ
ート結果の一部として出力されるため、ソート処理が開
始されてからその結果の出力が開始されるまでの時間を
短くすることができる。
理方法を実行する情報処理装置の構成を示すブロック図
である。
流れを示すフローチャートである。
を示す図である。
の流れを示すフローチャートである。
ク図である。
ク図である。
Claims (3)
- 【請求項1】 入力レコードを所定量ずつ取り込み、所
定のキーに基づいてソートし、その結果得られるソート
済みのレコード列である複数のストリングを補助記憶装
置に格納し、該補助記憶装置内の各ストリングをマージ
することにより最終的なソート済みレコード列を出力す
るソート処理方法において、 補助記憶装置内の複数のストリングをマージする際にマ
ージ対象であるストリングの数がマージ可能なストリン
グ数を越えている場合には、 a.各ストリングの先頭のレコードのキーの値を調べ、
当該キーの値のソート優先順位の高いものから順に前記
マージ可能なストリング数分のストリングをマージ対象
として選択し、 b.前記補助記憶装置内に格納された前記マージ対象と
ならならなかった各ストリングの先頭のレコードのキー
の値のうちソート優先順位が最も高いものをレコード出
力閾値として設定し、 c.前記マージ対象となるストリングのマージを行い、
マージ済みのレコードの前記キーの値が前記レコード出
力閾値を越えない間は当該マージ済みレコードを前記最
終的なソート済みレコード列として出力し、マージ済み
のレコードの前記キーの値が前記レコード出力閾値を越
えている場合は当該マージ済みレコードを新たなストリ
ングとして前記補助記憶装置に格納し、 d.前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になるまで前記マージ対象の選択、前
記レコード出力閾値の設定および前記マージを繰り返
し、前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になった時点で当該ストリングをマー
ジして出力することを特徴とするソート処理方法。 - 【請求項2】 前記複数のストリングを補助記憶装置に
格納する際に、各ストリングにおける先頭のレコードの
前記キーの値を前記補助記憶装置よりも高速アクセス可
能な記憶手段に予め格納し、この記憶手段に格納した各
キーの値に基づいて前記マージ対象の選択および前記レ
コード出力閾値の設定を行うことを特徴とする請求項1
に記載のソート処理方法。 - 【請求項3】 前記最終的なソート済みレコード列を出
力ファイルバッファに一旦格納し、この出力ファイルバ
ッファに蓄積されたレコード列を最終的な出力先に出力
することを特徴とする請求項1または2に記載のソート
処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7622198A JP3293551B2 (ja) | 1998-03-24 | 1998-03-24 | ソート処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP7622198A JP3293551B2 (ja) | 1998-03-24 | 1998-03-24 | ソート処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH11272448A JPH11272448A (ja) | 1999-10-08 |
JP3293551B2 true JP3293551B2 (ja) | 2002-06-17 |
Family
ID=13599138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7622198A Expired - Fee Related JP3293551B2 (ja) | 1998-03-24 | 1998-03-24 | ソート処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3293551B2 (ja) |
-
1998
- 1998-03-24 JP JP7622198A patent/JP3293551B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH11272448A (ja) | 1999-10-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5140644A (en) | Character string retrieving system and method | |
US6954759B2 (en) | Data processing method using record division storing scheme and apparatus therefor | |
JPH0225536B2 (ja) | ||
US7231383B2 (en) | Search engine for large-width data | |
JPH02178730A (ja) | 分割法を用いた内部ソート方式 | |
US20070050396A1 (en) | Fast algorithm for building multimedia library database | |
US5519860A (en) | Central processor index sort followed by direct record sort and write by an intelligent control unit | |
JP3515810B2 (ja) | ソート処理方法および装置 | |
JP3293551B2 (ja) | ソート処理方法 | |
JPH0666050B2 (ja) | ソート処理方法 | |
JPS6127771B2 (ja) | ||
US20030212985A1 (en) | System and method for using data address sequences of a program in a software development tool | |
EP0468402B1 (en) | Character string retrieving system and method | |
US5479657A (en) | System and method for sorting count information by summing frequencies of usage and using the sums to determine write addresses | |
JP2682448B2 (ja) | 索引検索方式 | |
JP3293544B2 (ja) | 補助記憶装置を用いたソート方式 | |
JPH048816B2 (ja) | ||
JPS6143338A (ja) | 連想技術を使用して稀薄なデータベースをサーチする方法 | |
JP2596332B2 (ja) | データ組合せ抽出方法およびその装置 | |
JPH0394325A (ja) | データ処理装置 | |
JP3518420B2 (ja) | ディスクキャッシュを用いたソート処理方法ならびに装置 | |
JPH11306183A (ja) | データベース検索システム | |
JP3309803B2 (ja) | ソート処理方式,方法およびソート処理プログラムを記録した記録媒体 | |
JP2989962B2 (ja) | ベクトル処理装置 | |
JPS60225938A (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: 20020305 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080405 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090405 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100405 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110405 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120405 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |