JPH06103459B2 - ソート処理方法および装置 - Google Patents

ソート処理方法および装置

Info

Publication number
JPH06103459B2
JPH06103459B2 JP17008282A JP17008282A JPH06103459B2 JP H06103459 B2 JPH06103459 B2 JP H06103459B2 JP 17008282 A JP17008282 A JP 17008282A JP 17008282 A JP17008282 A JP 17008282A JP H06103459 B2 JPH06103459 B2 JP H06103459B2
Authority
JP
Japan
Prior art keywords
block
buffer
data
span
sort
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
Application number
JP17008282A
Other languages
English (en)
Other versions
JPS5960539A (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.)
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 JP17008282A priority Critical patent/JPH06103459B2/ja
Publication of JPS5960539A publication Critical patent/JPS5960539A/ja
Publication of JPH06103459B2 publication Critical patent/JPH06103459B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

【発明の詳細な説明】 〔発明の技術分野〕 本発明は、ディスクパック装置などの直接アクセスの外
部記憶に格納されているデータセットの中のレコードを
ソートする方法および装置に関するものである。
〔従来技術と問題点〕
外部記憶装置上のデータを与えられた順序関係規約(ソ
ート・ルール)に従って、ソートすることを一般に外部
ソート(external sort)と呼ぶ。外部ソートは、バン
キング・アプリケーションを筆頭に、諸事務計算、デー
タベース・アプリケーション、その他の分野で日常よく
行われる処理である。外部ソートの処理のために、汎用
のソート/マージプログラムが提供されているが、どの
ソート/マージアルゴリズムを採用するにせよ、外部記
憶に記録されたデータは外部記憶制御装置、チャネル装
置を経由して主記憶上に転送され、また送りもどされる
というプロセスが必要になっている。ソートのためのチ
ャネル使用の率は、実行環境により違うが、事務計算や
データベースがらみの処理の分野においては、2割以上
を占めているのではなかろうかといわれている。外部ソ
ートのためのチャネル占有率が減少すれば、相対的に他
の目的のためのチャネル使用効率が高まることになる。
また、外部ソートの性能を左右する主なファクターが、
データの転送回数(アクセス回数)であり、転送回数を
最小にするアルゴリズムが良い外部ソート・アルゴリズ
ムであるとも考えられている。
しかし、中央演算装置と主記憶装置を用いた外部ソート
方法である限り、チャネル経由のデータ転送回数を減少
させるには限界がある。むしろ、チャネルと外部記憶装
置の中間に外部ソート専用の装置を置いて、チャネルを
使用せずに、外部ソートが達成できれば、(1)専用装
置によるソート処理の高速化、(2)チャネルの外部ソ
ートのための占有率減少の一挙両得になるのではないか
と考えられる。また、仮にもし、そのような専用の装置
ができたとしても、装置が複雑で高価なものになるよう
であれば、ソート処理の高速化と、チャネル占有率の減
少分の努力が実らないことになる。したがって、もしそ
のような装置ができたとしても単純なもので、安価なも
のでなければならない。ましてや、その新しい装置のた
めにさらに巨大なソフトウェア開発が必要になったり、
多大のソフトウェア変更が生じるのではこまる。
現在の汎用の外部ソート・プログラムは、入力ファイ
ル、作業用ファイル、出力ファイルの3本のファイルを
開設した後に、入力ファイルから作業用ファイルへ、作
業用ファイルから出力ファイルへの読み込み、書き出し
処理を行いながらソート処理を実現している。この処理
内容をそのまゝハードウェア化するというも考えられる
が、しかし、複数のファイルを1つの装置が同時に制御
するという実行環境は、ハードウェア化する場合、ロジ
ックが複雑になるし、スペース不足の場合にどうするか
など、余計な世話もしなくてはならなくなり、単純な装
置として実現するという方針からはずれる。さらに、既
存の汎用ソート・プログラムの設計思想は、データ・ア
クセス回数最小という要請に応えようとするところに力
点があり、単純化しようという思想とは多少ずれてい
る。特に、ファイルのスペース管理という、本来ソフト
ウェアによってサポートされているシステムと情報交換
が必要になることは、ハードウェア化する際のネックに
なる可能性が大きい。したがって、ソートされるべきデ
ータの物理的空間が最初から最後まで、明確に定義され
ているようなソート方法を前提にしたほうがハードウェ
ア化が容易になろう。
今、仮に、外部記憶装置とチャネルの間にしかるべき、
外部ソート装置を設置したとしよう。その場合の運用状
況としては、『せっかく、外部ソート装置を設置したの
だから』という気持が作用して、その外部ソート装置に
つながるデータセット群は、常にソート済みとして用い
るようなマスターファイル群や、その他のサブファイル
群であろう。すなわち、かような外部ソート装置に連結
されたファイルの多くは、常にソート済みの状況にある
ような運用になろう。とすれば、その外部ソート装置の
特性として、ソート済みの状態にあるファイルへのデー
タの追加、あるいは、ほぼソート済みに近い部分的に未
ソートな状態のもののソートなどが容易に処理できる必
要があろう。
〔発明の目的〕
本発明は、上記の考察に基づくものであって、ソートす
べきデータセットの中でソート処理を行い得ること、略
ぼソート済みのデータセットのソートの場合に効果が大
きいこと、使用するメモリ領域の少ないこと及びハード
ウェア化が容易なこと等の特徴を有するソート処理方法
および装置を提供することを目的としている。
〔発明の構成〕
そしてそのため、本発明の第1番目の発明のソート処理
方法は、 それぞれがN個のレコードを持つ第1ブロック,第2ブ
ロック,…,第nブロックより構成されたソート済みブ
ロック列に,N個のレコードを持つソート済みの第n+1
ブロックを追加し、第1ブロックから第n+1ブロック
までをソートするソート処理方法であって、 第nブロックを第1バッファに格納し、第n+1ブ
ロックを第2バッファに格納し、 第1バッファの内容と第2バッファの内容をマージ
し、マージ結果をソート・ルールにしたがって第1バッ
ファおよび第2バッファに格納し、 マージ後の第1バッファに格納されているレコード
列において、マージ前の第1バッファに格納されていた
レコード列の先頭レコードより前方に位置するレコード
列が存在するか否かを調べ、 存在しない場合には、ソートを終了し、 存在する場合には、第1バッファの内容を第2バッ
ファに移動し、ソート済みブロック列における1つ前の
ブロックを第1バッファに格納し、再びの処理を行う ことを特徴とするものである。
本発明の第2番目の発明のソート処理装置は、 それぞれがN個のレコードよりなるM個のブロックを持
つデータセットを格納する外部記憶ユニットと、 バッファ・リードの指令を受取ったとき上記外部記憶ユ
ニットから指定されたブロックを読出して指定されたバ
ッファに格納すると共にライトの指令を受取ったとき指
定されたバッファのデータを指定された外部記憶ユニッ
トのブロックに書込むブロック入出力コントローラと、 内部ソート指令を受取ったとき指定されたバッファの内
容を内部ソートする内部ソータと、 マージを行うと共にスパン長を求めることを支持するス
パン・スライダ指令を受取ったとき指定された第pバッ
ファおよび第qバッファに格納されているソート済デー
タをスパン長に基づいてマージする処理、マージ前とマ
ージ後におけるデータの移動の有無を出力する処理、マ
ージ処理の結果得られるレコード列における,マージ前
の第pバッファに格納されていたレコード列の先頭レコ
ードより前方に位置するレコード列の長さを示すスパン
長を出力する処理を行う2ブロック・スパン・スライダ
と、 制御手段と を具備し、 上記制御手段は、上記データセットの全ブロックのそれ
ぞれを内部ソートする処理を行った後、 ブロック番号iを初期値に設定し、 i+1をiに設定し、 ブロック番号iがMより大であるか否かを調べ、No
の場合には次にの処理に移行し、Yesの場合は終了と
し、 スパン長をNに、ブロック番号iをkに設定すると
共に、第kブロックのデータを第qバッファに格納すべ
きことを上記ブロック入出力コントローラに指令し、 k−1をkに設定し、 kが1より小さいか否かを調べ、Yesの場合には
の処理に戻り、Noの場合には次のの処理を行い、 第kブロックのデータを第qバッファに読込むべき
ことを上記ブロック入出力コントローラに指令すると共
に、第pバッファおよび第qバッファの内容をマージす
べきこと、マージ処理の結果得られるレコード列におけ
るスパンの長さをスパン長格納域にセットすべきこと、
並びにマージ前とマージ後でデータの移動があったか否
かを示す移動有無情報を出力すべきことを上記2ブロッ
ク・スパン・スライダに指令し、 移動有無情報が移動なしを示しているか否かを調
べ、移動なしの場合にはの処理に移行し、移動ありの
場合にはの処理に移行し、 第pバッファのデータを第kブロックに書込むべき
こと及び第qバッファのデータを第k+1ブロックに書
込むべきことを上記ブロック入出力コントローラに指令
し、 スパン長が零であるか否かを調べ、Yesの場合には
の処理に移行し、Noの場合にはの処理に移行し、 第pバッファと第qバッファのデータを交換した
後、上記の処理を行うよう構成されている ことを特徴とするものである。
〔発明の実施例〕
以下、本発明を図面を参照しつつ説明する。ファイル
(データセットと同義)Fは、下記のようにレコードr
〔1〕、r〔2〕、…r〔P〕、…r〔K〕の並びとし
て考えることが出来る。
また、ファイルFは、下記のようにブロックの並びとし
て考えることも出来る。
各ブロックは固定長のものであり、ブロックBiは下記の
ようにN個のレコードから構成されている。
ここで、▲Ri j▼は第i番目のブロックの第j番目のレ
コードを意味している。また▲Ri j▼は ▲Ri j▼=r〔N・(i−1)+j〕 である。なお、ブロックとは、入出力の単位である。
次に本明細書で使用する記号の定義について説明する。
r′およびrをレコードとすると、 r′←r は、レコードr′がレコードrの前に位置すべきことを
意味している。また、 r〔p〕r〔q〕 は、レコードr〔p〕からr〔q〕までがソートされた
ことを意味している。ただし、p<qである。
同様に、 ▲Ri j▼▲Ri′ j′▼ ただし、N・(i−1)+j<N・(i′−1)+j′
は、レコード▲Ri j▼からレコード▲Ri′ j′▼まで
がソートされたことを意味している。
次に、本発明のソート処理方式のアルゴリズムについて
説明する。ソート処理は、 given:file F target:▲R1 1▼▲RM N▼ と書くことが出来る。これを問題0という。本発明にお
ける解法レベル1は、 for i=1,M ▲R1 1▼▲Ri N▼ を行うことである。上式は、iを1から1刻みでMまで
変化させながら、 ▲R1 1▼▲Ri N▼ を実行せよ、ということを意味している。第1図は上記
の解法レベル1の処理を説明するものである。即ち、先
ずブロックB1をソートされた状態にする。次に、ブロッ
クB1からB2までをソートされた状態にする。同様な処理
を繰返してブロックB1からBi-1までをソートされた状態
にする。ソートされた状態にあるブロックB1からBi-1
での並びにブロックBiを加え、しかる後にブロックB1
らBiまでをソートされた状態にする。同様な処理を繰返
し、ブロックB1からブロックBMまでをソートされた状態
とする。
上記の処理を行うためには、ソートされた状態にあるブ
ロックB1からBi-1の並びにブロックBiを加える、しかる
後にブロックB1からBiまでをソートされた状態にしなく
てはならない。これを問題1とすると、問題1は given:▲R1 1▼▲Ri-1 N▼,Bi target:▲R1 1▼▲Ri N▼ と書くことが出来る。この問題1の解法を解法レベル2
とすると、解法レベル2は Internal Sort Bi Merge Bi and<B1,B2,………,Bi-1> と書くことが出来る。ここで問題となることは、上記の
マージを如何にして行うかと言うことである。これを問
題2とすると、問題2は、 given:▲R1 1▼▲Ri-1 N▼,▲Ri 1▼▲Ri N▼ target:▲R1 1▼▲Ri N▼ と書くことが出来る。この問題2に対する解法を解法レ
ベル3とすると、解法レベル3は、下記の式で与えられ
る。
fot u=i,2,−1 ▲Ru-1 1▼▲Ri N▼ 上式は、uをiから−1刻みで2まで変化させながら ▲R1 1▼▲Ri N▼ を実現せよ、ということを意味している。上記の解法レ
ベル3を実行するためには、下記の問題を解く必要があ
る。
given:▲Ru-1 1▼▲Ru-1 N▼,▲Ru 1▼▲Ri N▼ target:▲Ru-1 1▼▲Ri N▼ これを問題3とすると、問題3はu−1で示されるブロ
ックBu-1がソートされ、且つブロックBuからBiまでソー
トされた状態の下で、ブロックBu-1からBiまでソートせ
よということを意味している。
最初の状態ではu=iであるので、問題3は、 given:▲Ri-1 1▼▲Ri-1 N▼,▲Ri 1▼▲Ri N▼ target:▲Ri-1 1▼▲Ri N▼ となる。第2図は第1ステップの問題3の解法を説明す
るものである。ブロックBi-1は既にソートされた状態で
あり、その先頭のレコード▲Ri-1 1▼の内容がa、そ
の最後のレコード▲Ri-1 N▼の内容がbであるとす
る。同様に、ブロックBiは既にソートされた状態にあ
り、その先頭レコード▲Ri 1▼の内容はc、最後のレ
コード▲Ri N▼の内容はであるとする。ブロックBi-1
とBiをマージすると、図示のようにCase1ないし4の状
態が生ずる。Case1は、マージ結果とマージ前の状態が
変化しなかった場合を示している。Case2は、マージ結
果においてマージ前のレコード▲Ri 1▼が前方に移され
た場合を示している。Case3は、マージ結果の状態がマ
ージ前のブロックBi-1とBiとを交換した状態になる場合
を示している。Case4は、マージ結果においてマージ前
のレコード▲Ri 1▼が先頭に位置し、マージ前のレコー
ド▲Ri-1 1▼がそれより後方に位置する場合を示してい
る。Case3は、Case4の特別の場合と考えることも出来
る。マージ結果がCase1となる予想される場合には、何
も行わない。即ち、既にブロックB1からBiまでソートが
行われた状態にある。マージ結果がCase2になると予想
される場合には、ブロックBi-1とBiとの2ブロック・マ
ージを行い、その後の処理は行わない。即ち、上記の2
ブロック・マージを行うと、ブロックB1からBiまでがソ
ートされた状態となる。マージ結果がCase3になると予
想される場合は、マージを行いマージ後のBiが完成され
たものとし、次に given:▲R1 1▼▲Ri-2 N▼,▲Ri-1 1▼▲Ri-1 N▼ target:▲R1 1▼▲Ri-1 N▼ なる問題を解く。マージ結果がCase4になると予想され
る場合には、マージを行い、マージ後のBiおよび▲R
i-1 k+1▼▲Ri N▼が完成されたものとし、次に given:▲R1 1▼▲Ri-2 N▼,▲Ri-1 1▼▲Ri-1 k▼ target:▲R1 1▼▲Ri-1 k▼ なる問題を解く。なお、k+1はマージ後において内容
aをもつレコード(マージ前のレコード▲Ri-1 1▼)
のブロックBi-1上の位置を示している。
次に、スパン・スライドなる概念について説明する。第
3図において、レコード▲Ru 1▼ないし▲Ru k▼をスパ
ンという。即ち、スパンとは、前方に位置するレコード
列(▲R1 1▼,…,▲Ru-1 N▼)よりも前方に位置すべ
きレコードを含んでいる可能性のあるレコードのまとま
り(▲Ru 1▼,…,▲Ru k▼)である。これは、第2図
のCase4におけるCからa(たゞしaは含まず)
までに対応する。第3図において、▲R1 1▼▲Ru-2 N
▼,▲Ru-1 1▼▲Ru-1 N▼,▲Ru 1▼▲Ru k▼,▲
u k+1▼▲Ri N▼であり、且つ▲Ru-1 N▼←▲Ru k+1
▼である。ブロックBu-1とブロックBuとをマージする
と、第2図のCase1ないし4の場合が生ずる。Case1、2
の場合にはスパンは消滅し、Case3、4の場合は新たな
スパンが生成される。2個のブロックをマージして、ス
パンを求めることを、スパン・スライドという。Case
3、4の場合には、uの値を−1した後、ブロックBu-1
とブロックBuとのスパン・スライドを行う。ブロックBu
-1とブロックBuとをマージする場合、ブロックBu-1とブ
ロックBuのスパン部分(RuないしRuの部分)とをマージ
する。
第4図は本発明の1実施例のブロック図である。第4図
において、1はソート処理装置、2は外部記憶ユニッ
ト、3はスパン・ソート・スーパバイザ、4は2ブロッ
ク・スパン・スライダ、5はブロック内部ソータ、6は
ブロック入出力コントローラ、7はレコード比較器、8
−1ないし8−3はブロック・バッファ、BPはバッファ
・プールをそれぞれ示している。なお、白の太線はブロ
ック・アクセス、黒の太線はレコード・アクセス、実線
は制御信号の流れをそれぞれ示している。ブロック入出
力コントローラ6は、スパン・ソート・スーパバイザ3
から何れのブロックを何れのブロック・バッファに読込
むべきか、或は何れのブロック・バッファの内容を何れ
のブロックに書出すべきかを指示されて、その指示どお
りブロック単位の入出力を行う。ブロック内部ソータ5
は、スパン・ソート・スーパバイザ3から何れのブロッ
ク・バッファの内容を内部ソートすべきかを指示され
て、その指示どおりブロック・バッファ内部のレコード
に関するソーティングを行う。ソーティングに必要なレ
コードとレコードの比較には、レコード比較器7を用い
る。2ブロック・スパン・スライダ4は、スパン・ソー
ト・スーパバイザ3から何れの2個のブロック・バッフ
ァの内容をスパン・スライド(マージ)するかを指示さ
れて、その指示どおりスパン・スライドを行う。レコー
ド比較器7は、2つのレコードが入力されると、それら
の順序を判定し、目的とする順なら真、そうでなければ
偽の値を出力する。スパン・ソート・スーパバイザ3
は、2ブロック・スパン・スライダ4、ブロック内部ソ
ータ5、ブロック入出力コントローラ6に指令を与え
る。このため、スパン・ソート・スーパバイザ3に、外
部記憶ユニット2上のソート対象データセットのブロッ
ク番地の先頭と最後を予め設定しておき、また、スパン
・スライドの制御の初期値を与えておく必要がある。ソ
ート処理装置1をプロセッサで実現する場合には、スパ
ン・ソート・スーパバイザ3、2ブロック・スパン・ス
ライダ4、内部ブロック・ソータ5、ブロック入出力コ
ントローラ6及びレコード比較器7は、ソフトウェアで
実現される。勿論、これらを全て純ハードウェア構成と
することも出来る。
本発明のソート処理は、第1フェーズおよび第2フェー
ズに分けることが出来る。第1フェーズとは、データセ
ットの全ブロックのそれぞれをブロック内部についてソ
ート済みの状態にするためのフェーズである。第5図は
第1フェーズの概要を説明するものである。ブロック入
出力コントローラ6は、スパン・ソート・スーパバイザ
3のリード指令を受けて、外部記憶ユニット2の中のブ
ロックをリードし、これをブロック・バッファ8−1に
書込む。ブロック・バッファ8−1のブロックの書込み
が終了した後、スパン・ソート・スーパバイザ3は、ブ
ロック内部ソータ5に対してブロック・バッファ8−1
の内容を内部ソートすべきことを指令する。この内部ソ
ート指令を受取ると、ブロック内部ソータ5は、レコー
ド比較器7を使用しながらブロック・バッファ8−1の
ブロック・データについての内部ソートを行い、そのソ
ート結果をスパン・ソート・スーパバイザ3に通知す
る。ブロック内部ソータ5によるブロック・データの内
部ソートが完了すると、スパン・ソート・スーパバイザ
3は、必要に応じてブロック・バッファ8−1のブロッ
ク・データを外部記憶ユニット6の元のブロック位置に
ライトすべきことをブロック入出力コントローラ6に指
令する。このライト指令を受取ると、入出力コントロー
ラ6は、ブロック・バッファ8−1の中のブロック・デ
ータを外部記憶ユニット2内の元のブロック位置にライ
トする。以下、同様な処理が繰返される。
第6図はソート処理の第2フェーズの概要を説明するも
のである。スパン・ソート・スーパバイザ3は、最初に
外部記憶ユニット2内の連続せる2個のブロックをブロ
ック・バッファ8−1、8−2に読込むべきことをブロ
ック入出力コントローラ6に指令する。ブロック入出力
コントローラ6は、このリード指令を受取ると、外部記
憶ユニット2の中の連続せる2個のブロックをブロック
・バッファ8−1、8−2に読込む。このリード指令の
実行が完了した後、スパン・ソート・スーパバイザ3
は、ブロック・バッファ8−1、8−2のブロック・デ
ータについてスパン・スライドすべきことを2ブロック
・スパン・スライダ4に対して指令する。2ブロック・
スパン・スライダ4は、このスパン・スライド指令を受
取ると、ブロック・バッファ8−1、8−2内の2個の
ブロック・データをスパン・スライドし、スパン・スラ
イドの結果をスパン・ソート・スーパバイザ3に対して
通知する。スパン・スライド指令の実行完了後、スパン
・ソート・スーパバイザ3は、必要に応じてブロック・
バッファ8−1、8−2のブロック・データを外部記憶
ユニット2の中の元のブロック位置にライトすると同時
にこれらのブロック・データを外部記憶ユニット2の中
の作業記憶域にライトすべきことをブロック入出力コン
トローラ6に指令する。ブロック入出力コントローラ6
は、このライト指令を受取ると、ブロック・バッファ8
−1、8−2のブロック・データを外部記憶ユニット2
にライトする。以下、同様な処理が繰返される。
スパン・ソート・スーパバイザ3からブロック入出力コ
ントローラ6への指令には、下記のようなものがある。
BIOC(Read,i,p) BIOC(Write,i,p) ブロック入出力コントローラ6は、前者の指令を受取る
と、第iブロックのデータを第pバッファに読込み、後
者の指令を受取ると、第pバッファのデータを第iブロ
ックに書込む。なお、バッファとはブロック・バッファ
のことである。スパン・ソート・スーパバイザ3からブ
ロック内部ソータ5への指令は、下記のような形式をも
つ。
BIS(p,c) ブロック内部ソータ5は、この指令を受取ると、第pバ
ッファのデータを内部ソートし、このときソート前とソ
ート後とでデータの並びが不変であればc=0、変化し
ていればc=1を出力する。スパン・ソート・スーパバ
イザ3から2ブロック・スパン・スライダ4への指令
は、下記のような構成をもつ。
2BSS(p,q,sp,c) 2ブロック・スパン・スライダ3は、この指令を受取る
と、第pバッファと第qバッファをマージし、終了後の
スパン長を指定領域spに出力し、処理前と処理後とでバ
ッファ内データの移動がなかったならばc=0、移動が
あったならばc=1を出力する。なお、開始直前におい
て第qバッファがスパン長spのスパン・ブロックである
とし、終了後は第pバッファがスパン・ブロックになる
ものとする。
第7図はスパン・ソート・スーパバイザ3の動作ロジッ
クを示すものである。スパン・ソート・スーパバイザ3
は、第1フェーズのための動作ロジックと、第2フェー
ズのための動作ロジックとを有している。先ず、第1フ
ェーズのための動作ロジックについて説明する。
ブロック番号iを0にする。
i+1をiとする。
iがMより大きいかを調べる。Yesの場合は第2フ
ェーズを開始し、Noの場合にはを行う。
BIOC(Read i,1)を発行する。
BIC(1,c)を発行する。
cが0であるか、否かを調べる。Yesの場合には
を行い、Noの場合にはを行う。
BIOC(Write,i,1)を行い、に戻る。第2フェー
ズのための動作ロジックは下記のような動作を行う。
ブロック番号iを1に、バッファ番号pを1に、バ
ッファ番号qを2にする。
i+1をiにする。
iがMより大きいか否かを調べる。Yesの場合には
第2フェーズ終了となり、Noの場合にはを行う。
Nをスパン長に、iをブロック番号kにし、そして
BIOC(Read,k,q)を発行する。
k−1をkにする。
kが1より小さいか、否かを調べる。Yesの場合に
はを行い、Noの場合にはを行う。
BIOC(Read,k,p)および2BSS(p,q,sp,c)を発行す
る。
cが0か、否かを調べる。Yesの場合にはを行
い、Noの場合にはを行う。
BIOC(Write M+1,p),BIOC(Write,M+2,q)、BIO
C(Write,k,p),BIOC(Write,k+1,q)を発行する。
尚、前記2命令は、データ保全性確保のためのデータの
コピーである。
スパン長が0か、否かを調べる。Yesの場合はを
行い、Noの場合はを行う。
第pバッファの内容を第xバッファに移し、第qバ
ッファの内容を第qバッファに移し、第xバッファの内
容を第qバッファに移す。次にを行う。
第8図はスパン・ソートの状態遷移の例を示すものであ
る。なお、本発明によるソートをスパン・ソートとい
う。この例は、ブロック数が6の場合である。ステッ
プないしステップは第1フェーズである。ないし
ステップによって、第1ブロックないし第6ブロックが
それぞれ内部ソートされる。ステップにおいては、第
1、第2ブロックがスパン・スライドされ、第1ブロッ
クから第2ブロックまでがソートされた状態とされる。
ステップでは第2、第3ブロックがスパン・スライド
される。ステップの処理でスパンが存続した場合に
は、ステップで第1、第2ブロックのスパン・スライ
ドを行う。ステップが終了すると、第1ブロックから
第3ブロックまでがソートされた状態となる。同様な処
理がこの後も繰返される。
〔発明の効果〕
以上の説明から明らかなように、本発明によれば、 (イ) 同一のデータセット内で処理できるので、他の
ファイルを必要としないこと、 (ロ) 必要とするメモリ領域が少なくて済むこと、 (ハ) 線形ソートであるので、ファイルの管理が容易
なこと、 (ニ) 略ぼソート済みのデータセットのソートに効果
が大きいこと、 (ホ) 実行環境が対象データセットのみに限定できる
ので、ハードフェア化が容易なこと 等の顕著な効果を奏することが出来る。
【図面の簡単な説明】
第1図はブロックB1からブロックBMまでをソートするた
めの基本的な手順を説明する図、第2図はソートされた
状態にあるブロックBi-1ソートされた状態にあるブロッ
クBiをマージした後の状態を説明する図、第3図はスパ
ン・スライドを説明するための図、第4図は本発明の1
実施例のブロック図、第5図は実施例におけるソート処
理の第1フェーズの概要を示す図、第6図は実施例にお
けるソート処理の第2フェーズの概要を示す図、第7図
はスパン・ソート・スーパバイザの動作ロジックを示す
図、第8図はスパン・ソートの状態遷移例である。 1……ソート処理装置、2……外部記憶ユニット、3…
…スパン・ソート・スーパバイザ、4……2ブロック・
スパン・スライダ、5……ブロック内部ソータ、6……
ブロック入出力コントローラ、7……レコード比較器、
8−1ないし8−3……ブロック・バッファ、BP……バ
ッファ・プール。

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】それぞれがN個のレコードを持つ第1ブロ
    ック,第2ブロック,…,第nブロックより構成された
    ソート済みブロック列に,N個のレコードを持つソート済
    みの第n+1ブロックを追加し、第1ブロックから第n
    +1ブロックまでをソートするソート処理方法であっ
    て、 第nブロックを第1バッファに格納し、第n+1ブ
    ロックを第2バッファに格納し、 第1バッファの内容と第2バッファの内容をマージ
    し、マージ結果をソート・ルールにしたがって第1バッ
    ファおよび第2バッファに格納し、 マージ後の第1バッファに格納されているレコード
    列において、マージ前の第1バッファに格納されていた
    レコード列の先頭レコードより前方に位置するレコード
    列が存在するか否かを調べ、 存在しない場合には、ソートを終了し、 存在する場合には、第1バッファの内容を第2バッ
    ファに移動し、ソート済みブロック列における1つ前の
    ブロックを第1バッファに格納し、再びの処理を行う ことを特徴とするソート処理方法。
  2. 【請求項2】それぞれがN個のレコードよりなるM個の
    ブロックを持つデータセットを格納する外部記憶ユニッ
    トと、 バッファ・リードの指令を受取ったとき上記外部記憶ユ
    ニットから指定されたブロックを読出して指定されたバ
    ッファに格納すると共にライトの指令を受取ったとき指
    定されたバッファのデータを指定された外部記憶ユニッ
    トのブロックに書込むブロック入出力コントローラと、 内部ソート指令を受取ったとき指定されたバッファの内
    容を内部ソートする内部ソータと、 マージを行うと共にスパン長を求めることを支持するス
    パン・スライダ指令を受取ったとき指定された第pバッ
    ファおよび第qバッファに格納されているソート済デー
    タをスパン長に基づいてマージする処理、マージ前とマ
    ージ後におけるデータの移動の有無を出力する処理、マ
    ージ処理の結果得られるレコード列における,マージ前
    の第pバッファに格納されていたレコード列の先頭レコ
    ードより前方に位置するレコード列の長さを示すスパン
    長を出力する処理を行う2ブロック・スパン・スライダ
    と、 制御手段と を具備し、 上記制御手段は、上記データセットの全ブロックのそれ
    ぞれを内部ソートする処理を行った後、 ブロック番号iを初期値に設定し、 i+1をiに設定し、 ブロック番号iがMより大であるか否かを調べ、No
    の場合には次にの処理に移行し、Yesの場合は終了と
    し、 スパン長をNに、ブロック番号iをkに設定すると
    共に、第kブロックのデータを第qバッファに格納すべ
    きことを上記ブロック入出力コントローラに指令し、 k−1をkに設定し、 kが1より小さいか否かを調べ、Yesの場合には
    の処理に戻り、Noの場合には次のの処理を行い、 第kブロックのデータを第pバッファに読込むべき
    ことを上記ブロック入出力コントローラに指令すると共
    に、第pバッファおよび第qバッファの内容をマージす
    べきこと、マージ処理の結果得られるレコード列におけ
    るスパンの長さをスパン長格納域にセットすべきこと、
    並びにマージ前とマージ後でデータの移動があったか否
    かを示す移動有無情報を出力すべきことを上記2ブロッ
    ク・スパン・スライダに指令し、 移動有無情報が移動なしを示しているか否かを調
    べ、移動なしの場合にはの処理に移行し、移動ありの
    場合にはの処理に移行し、 第pバッファのデータを第kブロックに書込むべき
    こと及び第qバッファのデータを第k+1ブロックに書
    込むべきことを上記ブロック入出力コントローラに指令
    し、 スパン長が零であるか否かを調べ、Yesの場合には
    の処理に移行し、Noの場合にはの処理に移行し、 第pバッファと第qバッファのデータを交換した
    後、上記の処理を行うよう構成されている ことを特徴とするソート処理装置。
JP17008282A 1982-09-29 1982-09-29 ソート処理方法および装置 Expired - Lifetime JPH06103459B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP17008282A JPH06103459B2 (ja) 1982-09-29 1982-09-29 ソート処理方法および装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP17008282A JPH06103459B2 (ja) 1982-09-29 1982-09-29 ソート処理方法および装置

Publications (2)

Publication Number Publication Date
JPS5960539A JPS5960539A (ja) 1984-04-06
JPH06103459B2 true JPH06103459B2 (ja) 1994-12-14

Family

ID=15898303

Family Applications (1)

Application Number Title Priority Date Filing Date
JP17008282A Expired - Lifetime JPH06103459B2 (ja) 1982-09-29 1982-09-29 ソート処理方法および装置

Country Status (1)

Country Link
JP (1) JPH06103459B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6139141A (ja) * 1984-07-30 1986-02-25 Noboru Denki Seisakusho:Kk Ramの制御方式

Also Published As

Publication number Publication date
JPS5960539A (ja) 1984-04-06

Similar Documents

Publication Publication Date Title
US4210961A (en) Sorting system
US20050144167A1 (en) Parallel merge/sort processing device, method, and program
US5724500A (en) Multiple writing volume backup method
JP3515810B2 (ja) ソート処理方法および装置
JPH06103459B2 (ja) ソート処理方法および装置
JP2923952B2 (ja) マージ処理方法
Estivill-Castro et al. Foundations for faster external sorting
JPH0581337A (ja) データ処理装置
JPS63196959A (ja) フアイルの退避復元方式
JPH0581342A (ja) データ処理装置
JP3293544B2 (ja) 補助記憶装置を用いたソート方式
JPH01226050A (ja) 異種オペレーティングシステムのデータ共用制御方式
JPH0580977A (ja) データ処理装置
CN117251426A (zh) 基于内存链式描述性文件系统的数据管理装置及其方法
JP3518420B2 (ja) ディスクキャッシュを用いたソート処理方法ならびに装置
JPH01147720A (ja) 分類処理方式
JP3328849B2 (ja) データ書き込み処理装置
JPH0581339A (ja) データ処理装置
JPH04353944A (ja) 索引順編成ファイルのレコード追加方式
JPH0291725A (ja) 併合処理方式
JPH0310341A (ja) ディスクスペースコンパクション方式
JPH0418658A (ja) 機能分散型計算機システム
JPS634475A (ja) スタンドアロ−ン型ワ−クシステムのフアイル管理方式
JPH02257284A (ja) データ処理装置
JPH07141112A (ja) 外部記憶制御装置