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
Application number
JP7622198A
Other languages
English (en)
Other versions
JPH11272448A (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 JP7622198A priority Critical patent/JP3293551B2/ja
Publication of JPH11272448A publication Critical patent/JPH11272448A/ja
Application granted granted Critical
Publication of JP3293551B2 publication Critical patent/JP3293551B2/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】
【従来の技術】一般に大量データのソート処理において
は、入力データからソートの中間結果であるソート済み
レコード列(以下、ストリングと呼ぶ)を磁気ディスク
装置等の補助記憶装置内の作業ファイルに複数個出力
し、これらを読み出してマージすることによって最終的
なソート結果を得る方式が用いられている。
【0003】この従来のソート処理方法において、ソー
ト対象である全データ量が多いと、ソートの中間結果た
る全ストリング数が一度にマージできるストリング数
(以下、マージウェイ数と呼ぶ)よりも多くなるという
事態が生じる場合がある。かかる場合、従来のソート処
理方法においては、作業ファイル内のストリング同士を
マージし、この結果得られる新たなストリングを作業フ
ァイルに出力する。そして、この新たなストリングの数
がマージウェイ数よりも多い場合には、再び作業ファイ
ル内のストリング同士をマージし、新たなストリングを
作業ファイルに出力するのである。このような処理をス
トリング数がマージウェイ数より少なくなるまで繰り返
し、ストリング数がマージウェイ数より少なくなったと
きに、その時点で最終的に残った全てのストリングをマ
ージし、最終的なソート結果として出力するのである。
【0004】
【発明が解決しようとする課題】ところで、上述した従
来のソート処理方法において、最も時間を費やす処理は
作業ファイルとの間で行うストリングの入出力処理であ
る。何故ならばストリングを格納する補助記憶装置は、
ソートやマージの作業に使用する主記憶装置よりもアク
セス速度が低いからである。ここで、ソートに使用でき
る主記憶装置の容量が十分に大きければ、中間的なソー
ト結果であるストリングのデータ量を大きくすることが
できるため、作業ファイルとの間で行うストリングの入
出力回数を少なくすることができる。しかしながら、メ
モリの容量が小さい場合は、ストリングのデータ量を大
きくすることができないことからストリング数が必然的
に大きくなり、作業ファイルとの間で行うストリングの
入出力回数が多くなり、ソート処理に要する時間が増大
することとなる。
【0005】この発明は以上説明した事情に鑑みてなさ
れたものであり、補助記憶装置との間で行うストリング
の入出力の回数を従来よりも低減することができ、従来
よりも短い所要時間で大量データのソート処理を行うこ
とができるソート処理方法を提供することを目的として
いる。
【0006】
【課題を解決するための手段】請求項1に係る発明は、
入力レコードを所定量ずつ取り込み、所定のキーに基づ
いてソートし、その結果得られるソート済みのレコード
列である複数のストリングを補助記憶装置に格納し、該
補助記憶装置内の各ストリングをマージすることにより
最終的なソート済みレコード列を出力するソート処理方
法において、補助記憶装置内の複数のストリングをマー
ジする際にマージ対象であるストリングの数がマージ可
能なストリング数を越えている場合には、 a.各ストリングの先頭のレコードのキーの値を調べ、
当該キーの値のソート優先順位の高いものから順に前記
マージ可能なストリング数分のストリングをマージ対象
として選択し、 b.前記補助記憶装置内に格納された前記マージ対象と
ならならなかった各ストリングの先頭のレコードのキー
の値のうちソート優先順位が最も高いものをレコード出
力閾値として設定し、 c.前記マージ対象となるストリングのマージを行い、
マージ済みのレコードの前記キーの値が前記レコード出
力閾値を越えない間は当該マージ済みレコードを前記最
終的なソート済みレコード列として出力し、マージ済み
のレコードの前記キーの値が前記レコード出力閾値を越
えている場合は当該マージ済みレコードを新たなストリ
ングとして前記補助記憶装置に格納し、 d.前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になるまで前記マージ対象の選択、前
記レコード出力閾値の設定および前記マージを繰り返
し、前記補助記憶装置内のストリング数がマージ可能な
ストリング数以下になった時点で当該ストリングをマー
ジして出力することを特徴とするソート処理方法を要旨
とする。
【0007】請求項2に係る発明は、前記複数のストリ
ングを補助記憶装置に格納する際に、各ストリングにお
ける先頭のレコードの前記キーの値を前記補助記憶装置
よりも高速アクセス可能な記憶手段に予め格納し、この
記憶手段に格納した各キーの値に基づいて前記マージ対
象の選択および前記レコード出力閾値の設定を行うこと
を特徴とする請求項1に記載のソート処理方法を要旨と
する。
【0008】請求項3に係る発明は、前記最終的なソー
ト済みレコード列を出力ファイルバッファに一旦格納
し、この出力ファイルバッファに蓄積されたレコード列
を最終的な出力先に出力することを特徴とする請求項1
または2に記載のソート処理方法を要旨とする。
【0009】
【発明の実施の形態】以下、図面を参照し、本発明の実
施の形態について説明する。図1はこの発明の一実施形
態であるソート処理方法を実行する情報処理装置の構成
を示すブロック図である。この情報処理装置は、プロセ
ッサ100と、主記憶装置200と、磁気ディスク装置
300とにより構成されている。
【0010】プロセッサ100は、メモリを内蔵してお
り、このメモリには本実施形態に係るソート処理用プロ
グラムが記憶されている。図1におけるソート処理手段
1は、プロセッサ100がこのソート処理用プログラム
を実行することにより提供される手段であり、プリソー
ト手段11、ストリングマージ手段12およびストリン
グ選択手段13により構成されている。
【0011】そして、本実施形態においては、磁気ディ
スク装置300内の入力ファイル21、作業ファイル2
2および出力ファイル23並びに主記憶装置200内の
ストリング管理テーブル31を使用してソート処理が行
われる。
【0012】本実施形態におけるソート処理は、プリソ
ートと、コレーションという2つの過程から成り立って
いる。
【0013】まず、プリソート過程において、プリソー
ト手段11は、入力ファイル21から1回のレコード入
力で入力可能な数のレコードを読み込んでソートを行
い、その結果を1本のストリングとして作業ファイル2
2へ出力する。その際、作業ファイル22に出力された
ストリングの作業ファイル22内のアドレスと、そのス
トリングの先頭レコードのキーの値をストリング管理テ
ーブル31に登録する。
【0014】そして、プリソート過程では、以上のレコ
ード入力とストリング出力を、入力ファイル21上の全
てのレコードを読み終えるまで繰り返す。
【0015】次にコレーション過程では、作業ファイル
22上に出力されたストリングを全てマージすることに
よって、最終的なソート処理結果を得て出力ファイル2
3へ出力する。
【0016】この過程において、ストリングマージ手段
12は1度にマージウェイ数分のストリングをマージす
ることができる。ここで、作業ファイル22上のストリ
ング数がマージウェイ数以下の場合、このマージウェイ
数分のストリングのマージ結果は最終的なソート処理結
果となるので、ストリングマージ手段12はマージ結果
を出力ファイルへ出力する。
【0017】一方、作業ファイル22上のストリング数
がマージウェイ数より多い場合には、このマージウェイ
数分のストリングのマージ結果は最終的なソート処理結
果にはならない。しかし、ストリングの選択によって
は、このマージウェイ数分のストリングのマージ結果の
一部分は最終的なソート処理結果の一部分となる。スト
リング選択手段13は、この選択方法を提供するもので
ある。すなわち、次の通りである。
【0018】まず、ストリングマージ手段12は、どの
ストリング同士をマージするかをストリング選択手段1
3に問い合わせる。ストリング選択手段13は、この問
い合わせを受けて、ストリング管理テーブル31を参照
し、各ストリングの先頭レコードのキーの値を比較し、
ソート優先順位が高いキーの値を先頭レコードに含むス
トリングから順にマージウェイ数分だけストリングを選
択し、ストリングマージ手段12に通知する。また、そ
の際選ばれなかったストリングのうち、もっともソート
優先順位が高いキーの値を先頭レコードに含むものにつ
いて、その先頭レコードのキーの値をレコード出力閾値
としてストリングマージ手段12に通知する。
【0019】ストリングマージ手段12は、通知された
ストリングをマージする際に、マージされたレコードの
キーの値のソート優先順位がレコード出力閾値のソート
優先順位よりも高いか等しい場合、マージされたレコー
ドは最終的なソート処理結果の一部であるから、それを
出力ファイル23へ出力する。そうでない場合、つまり
マージされたレコードのキーの値がレコード出力閾値よ
りもソート優先順位が低い場合、マージされたレコード
をストリングとして作業ファイル22へ出力する。こう
してストリングマージ手段12はマージウェイ数分のス
トリングについてマージを行い、そのマージ結果を作業
ファイル22へ一本のストリングとして出力し終わる
と、作業ファイル22へ出力されたストリングの作業フ
ァイル22内のアドレスとそのストリングの先頭レコー
ドのキーの値をストリング管理テーブル31に登録し、
再度作業ファイル22上のストリングをマージウェイ数
分選択してマージを行なう。
【0020】ストリングマージ手段12は、作業ファイ
ル22上のストリング数がマージウェイ数以下になるま
でストリングのマージを繰り返し、作業ファイル22上
のストリング数がマージウェイ数以下になれば、ストリ
ングマージ手段12はこのマージウェイ数分のストリン
グのマージ結果を最終的なソート処理結果として出力フ
ァイル23へ出力し、コレーション過程終了、すなわち
ソート処理終了となる。
【0021】次に図2〜図4を参照し、レコードを昇順
にソートする場合における本実施形態の具体的処理例に
ついて説明する。
【0022】まず、プリソート過程は図2に示すフロー
に従って行われる。すなわち、プリソート手段11は、
磁気ディスク装置300内の入力ファイル21から一度
にソート可能な数のレコードを読み込み(ステップS
1)、これらのレコードを所定のキーが昇順に並ぶよう
にソートする(ステップS2)。そして、このソートに
より得られたレコード列であるストリングを磁気ディス
ク装置300内の作業ファイル22へ書き込むととも
に、当該ストリングの作業ファイル22内でのアドレス
と、当該ストリングの先頭レコードのキーの値をストリ
ング管理テーブル31に登録する(ステップS3)。以
後、入力レコードがなくなるまでこれを繰り返す(ステ
ップS4、S1〜S3)。
【0023】以上がプリソート過程の処理内容である。
図3はこのプリソート過程の終了時におけるストリング
管理テーブル31の内容を例示したものである。この処
理例において、プリソート手段11は8本のストリング
を作業ファイル22に作成している。従って、ストリン
グ管理テーブル31には、これらの8本のストリングに
対応した各情報が格納されているのである。なお、各ス
トリングの作業ファイル内のアドレスは、本実施形態の
技術的意義を理解する上で重要度が低いので図示を省略
した。
【0024】次に、コレーション過程は図4に示すフロ
ーに従って行われる。なお、この処理例では、マージウ
ェイ数が3であり、ストリングマージ手段12は同時に
3本のストリングをマージすることができるとする。
【0025】まず、ストリングマージ手段12は、例え
ばストリング管理テーブル31を参照することにより、
作業ファイル22内のストリングの数がマージウェイ数
以下か否かを判断する(ステップS11)。
【0026】この処理例の場合、作業ファイル22には
8個のストリングが含まれているため、ステップS11
判断結果が「NO」となり、ステップS12へ進む。
【0027】次にステップ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)。
【0028】次にストリングマージ手段12は、作業フ
ァイル22からストリング番号4、7、3の各ストリン
グを読み出してマージする(ステップS14)。このと
き、マージして得られたレコードのキーの値は「2」か
ら始まり徐々に増えていく。これがレコード出力閾値と
等しい「9」になるまでは、そのマージ済みレコードを
最終的なソート処理結果として出力ファイル23へ出力
する(ステップS14、S15、S17)。そして、レ
コード出力閾値より大きくなると、以降のマージ済みレ
コードを作業ファイル22へストリングとして出力する
(ステップS14、S16、S17)。
【0029】このマージが終わると、ストリングマージ
手段12は、出力したストリングについて、作業ファイ
ル22内のアドレスと先頭レコードのキーの値をストリ
ング管理テーブル31に登録し、再度、ストリング選択
手段13へマージすべきストリングを問い合わせる。以
後、作業ファイル22内のストリング数がマージウェイ
数の3以下になるまでこれを繰り返す。
【0030】そして、作業ファイル22内のストリング
数がマージウェイ数の3以下になった場合には、作業フ
ァイル22から各ストリングを読み出してマージし(ス
テップS18)、マージした結果を出力ファイル23に
書き込む(ステップS19)。
【0031】以上により本実施形態におけるソート処理
の全処理が終了し、ソートされた全レコードが出力ファ
イル23内に得られる。
【0032】以上、本発明の一実施形態について説明し
たが、本発明の適用範囲はこれに限定されるものではな
く、本発明には様々な変形例が考えられる。例えば次の
通りである。 (1)ソート処理の処理形態として、入力ファイルと出
力ファイルが存在しない形態が有り得る。この場合、図
5に示すように、ファイル以外のレコード入力元24か
らレコードを入力し、ファイル以外のレコード出力先2
5にソート済みのレコードを出力する形態で本発明を実
施することができる。 (2)ソート処理に限らず、一般に複数レコードをファ
イルへ出力する処理においては、各レコードを1個ずつ
出力するのではなく、複数レコードを蓄積しておく領域
(以後出力バッファと呼ぶ)に1個ずつためていき、出
力バッファが一杯になった時点で出力バッファにある複
数レコードを一括して出力ファイルへ出力する方式があ
る。本発明でも、図6の実施形態のように、出力ファイ
ル23へのレコード出力について出力バッファ14を用
意し、複数レコードを一括して出力することができる。
【0033】
【発明の効果】以上説明したように、この発明によれ
ば、作業ファイル上のストリング数がマージウェイ数よ
りも大きい場合において複数のストリングのマージを行
う場合に、マージ結果の一部を最終的なソート結果とし
て出力することができるので、作業ファイルとの間で行
うストリングファイルの入出力の回数を低減することが
でき、ソートの処理時間を短縮することができる。ま
た、この発明によれば、作業ファイル内のストリングの
マージが開始されると、直ちにマージ結果が最終的なソ
ート結果の一部として出力されるため、ソート処理が開
始されてからその結果の出力が開始されるまでの時間を
短くすることができる。
【図面の簡単な説明】
【図1】 図1はこの発明の一実施形態であるソート処
理方法を実行する情報処理装置の構成を示すブロック図
である。
【図2】 同実施形態におけるプリソート過程の処理の
流れを示すフローチャートである。
【図3】 同実施形態におけるストリング管理テーブル
を示す図である。
【図4】 同実施形態におけるコレーション過程の処理
の流れを示すフローチャートである。
【図5】 この発明の他の実施形態の構成を示すブロッ
ク図である。
【図6】 この発明の他の実施形態の構成を示すブロッ
ク図である。
【符号の説明】
200 主記憶装置 31 ストリング管理テーブル 100 プロセッサ 1 ソート処理手段 11 プリソート手段 12 ストリングマージ手段 13 ストリング選択手段 300 磁気ディスク装置 21 入力ファイル 22 作業ファイル 23 出力ファイル

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】 入力レコードを所定量ずつ取り込み、所
    定のキーに基づいてソートし、その結果得られるソート
    済みのレコード列である複数のストリングを補助記憶装
    置に格納し、該補助記憶装置内の各ストリングをマージ
    することにより最終的なソート済みレコード列を出力す
    るソート処理方法において、 補助記憶装置内の複数のストリングをマージする際にマ
    ージ対象であるストリングの数がマージ可能なストリン
    グ数を越えている場合には、 a.各ストリングの先頭のレコードのキーの値を調べ、
    当該キーの値のソート優先順位の高いものから順に前記
    マージ可能なストリング数分のストリングをマージ対象
    として選択し、 b.前記補助記憶装置内に格納された前記マージ対象と
    ならならなかった各ストリングの先頭のレコードのキー
    の値のうちソート優先順位が最も高いものをレコード出
    力閾値として設定し、 c.前記マージ対象となるストリングのマージを行い、
    マージ済みのレコードの前記キーの値が前記レコード出
    力閾値を越えない間は当該マージ済みレコードを前記最
    終的なソート済みレコード列として出力し、マージ済み
    のレコードの前記キーの値が前記レコード出力閾値を越
    えている場合は当該マージ済みレコードを新たなストリ
    ングとして前記補助記憶装置に格納し、 d.前記補助記憶装置内のストリング数がマージ可能な
    ストリング数以下になるまで前記マージ対象の選択、前
    記レコード出力閾値の設定および前記マージを繰り返
    し、前記補助記憶装置内のストリング数がマージ可能な
    ストリング数以下になった時点で当該ストリングをマー
    ジして出力することを特徴とするソート処理方法。
  2. 【請求項2】 前記複数のストリングを補助記憶装置に
    格納する際に、各ストリングにおける先頭のレコードの
    前記キーの値を前記補助記憶装置よりも高速アクセス可
    能な記憶手段に予め格納し、この記憶手段に格納した各
    キーの値に基づいて前記マージ対象の選択および前記レ
    コード出力閾値の設定を行うことを特徴とする請求項1
    に記載のソート処理方法。
  3. 【請求項3】 前記最終的なソート済みレコード列を出
    力ファイルバッファに一旦格納し、この出力ファイルバ
    ッファに蓄積されたレコード列を最終的な出力先に出力
    することを特徴とする請求項1または2に記載のソート
    処理方法。
JP7622198A 1998-03-24 1998-03-24 ソート処理方法 Expired - Fee Related JP3293551B2 (ja)

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)

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