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

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

Info

Publication number
JPH0855013A
JPH0855013A JP6192480A JP19248094A JPH0855013A JP H0855013 A JPH0855013 A JP H0855013A JP 6192480 A JP6192480 A JP 6192480A JP 19248094 A JP19248094 A JP 19248094A JP H0855013 A JPH0855013 A JP H0855013A
Authority
JP
Japan
Prior art keywords
data
work
buffer
buffers
record
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.)
Granted
Application number
JP6192480A
Other languages
English (en)
Other versions
JP3515810B2 (ja
Inventor
Haruhisa Yamashita
治久 山下
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 JP19248094A priority Critical patent/JP3515810B2/ja
Priority to US08/460,690 priority patent/US5659733A/en
Publication of JPH0855013A publication Critical patent/JPH0855013A/ja
Application granted granted Critical
Publication of JP3515810B2 publication Critical patent/JP3515810B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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/36Combined merging and sorting

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)

Abstract

(57)【要約】 【目的】必要とするバッファが比較的少なくて済み、作
業域内でのレコード移動回数が少なく、高速で効率よく
マージ処理を行う。 【構成】データ移動部18は、次に読み込むべきデータ
ブロックの代表レコード以上のソート順位のデータレコ
ードを、全て作業バッファ12から取り出して出力して
も、作業バッファ12に空きバッファができない場合
に、作業バッファ12のうちの1つの作業バッファ12
内の全てのデータレコードを、他の1つ以上の作業バッ
ファ12に移動させて、前記空きバッファをつくる。こ
のとき、データレコードの移動により、データレコード
が追加された1つ以上の作業バッファ12については、
各作業バッファ12内のデータレコードを前記ソート順
位に従ってソートし、新たな代表レコードをインデック
ス領域8に登録する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、入力データから複数の
ソート済みデータブロックを作成し、これらを複数の作
業バッファに一旦読み込んで、マージしながら前記複数
の作業バッファから逐次データレコードを読出して出力
することにより全データをソートするソート処理方法お
よび装置に関する。
【0002】
【従来の技術】ソート処理において、ソートすべき全デ
ータの量が少なく、全データをメインメモリ内に展開す
ることができる場合には、ソートすべき全データをメイ
ンメモリ内に展開し、メインメモリ内でソート順位に従
ってデータをソートして出力すればよい。
【0003】しかしながら、多くの場合、ソートすべき
全データの量は、メインメモリの容量に比して多く、ソ
−トすべき全デ−タをメモリ内に展開することができな
い。このように、ソ−トすべき全デ−タをメモリ内に展
開することができない場合には、一般に、次のようにし
て全データのソートを行う。
【0004】図10に示すように、第1ステップS1で
は、ソートすべきデータが格納されている入力ファイル
F1から、メインメモリに展開し得る量毎にデータを逐
次取り出し、各ブロック内のデータをソートして、各々
個別にソートされているソート済みデータ群からなる複
数のデータブロックD1を生成し、外部ファイルF2に
格納する。
【0005】第2ステップS2では、外部ファイルF2
から第1ステップS1で生成された個別ソート済みの複
数のデータブロックD1のデータをマージして、全デー
タをソートし、ソート結果を出力ファイルF3に格納す
る。通常の場合、入力ファイルF1および出力ファイル
F3は、いずれも外部ファイルF2の一部である。
【0006】上述の第2ステップにおけるマージの方法
として、例えば特開昭57−90757号公報等に示さ
れる方法(以下、このマージ法を「ブロックマージ」と
称する)および例えば特開平2−75018号公報等に
示される方法(以下、このマージ法を「バッファマー
ジ」と称する)とが用いられている。
【0007】これらブロックマージおよびバッファマー
ジでは、例えば、上述したソート済みデータ群からなる
複数のデータブロックD1を生成する際に、各データブ
ロック中のソート順位が最も高いデータレコード、すな
わち(各データブロックは個別にソートされているの
で)各データブロックの先頭のデータレコードに相当す
る代表レコード、つまりインデックスからなるインデッ
クス情報を作成する。それと同時に、前記データブロッ
クD1の生成時に、複数のソート済みデータストリング
を生成する。各ソート済みデータストリングでは、該デ
ータストリング内の前記インデックス順のデータブロッ
クを構成する全レコードが、全データブロックを通じ
て、前記ソート順位の順に配列されるように、各ブロッ
クのデータレコード列が形成される。なお、この場合、
異なるストリングのデータブロックをインデックス順に
並べてもその中のレコードは必ずしもソート順位の順に
ならない。
【0008】先に述べたブロックマージおよびバッファ
マージでは、これらソート済みストリングの各データブ
ロック中のデータレコードをマージする。ブロックマー
ジは、図11に一例を示すように、外部ファイルである
一時ファイルF4から、メインメモリ内の作業バッファ
B1にデータを読み込む際に、メインメモリ内の他の領
域に設定されるインデックス領域I1に、各データブロ
ックの先頭のデータレコードに相当する代表レコードか
らなるインデックス情報が格納される。
【0009】このインデックス情報は、前記ソート済み
データブロックおよびストリングを生成する際に、同時
に生成されるので、その直後にマージ処理を行う場合に
は、生成されたインデックス情報をメインメモリ内のイ
ンデックス領域に残しておく。もしも、前記ソート済み
データブロックおよびストリングの生成の直後以外にマ
ージ処理を行う場合には、生成されたインデックス情報
を、前記ソート済みのストリングとともに前記外部ファ
イルに格納しておき、マージ処理時に、これをメインメ
モリ内のインデックス領域に読み込む。
【0010】次に、図12を参照してこのブロックマー
ジにおけるマージ処理を説明する。このインデックス領
域I1内の全インデックスをソートし、このインデック
スの示す順に、一時ファイルF4から、メインメモリ内
の作業バッファB1に1ブロックのデータレコードを読
み込む(ステップS11)。次に、作業域内に、メイン
メモリ内のレコードセーブ領域(RSA)R1内のレコ
ードと作業バッファB1内のレコードをマージして並べ
る(ステップS12)。インデックス領域I1の前記イ
ンデックスを参照し、作業バッファB1内のレコードの
うち、次に読み込むべきブロックのインデックスよりも
ソート順位が高い出力可能なレコードをソート順位に従
って順次出力バッファB2(メインメモリ内の他の領
域)を介して出力ファイルF5(外部ファイル)に出力
する(ステップS13)。
【0011】出力すべきデータレコードが作業バッファ
B1内になくなると、前記レコードセーブ領域R1に空
きがあるか否かをチェックし(ステップS14)、空き
あれば、作業バッファB1内のデータレコードを、メイ
ンメモリ内のレコードセーブ領域(RSA)R1に移動
する(ステップS16)。レコードセーブ領域R1に既
にデータレコードが格納されている場合は、レコードセ
ーブ領域R1内のデータレコードにマージする形で、作
業バッファB1からのデータレコードの移動を行う。そ
して、一時ファイルF4にマージ出力すべきレコードの
データブロックが存在するか否かを調べ(ステップS1
7)、存在する場合には、ステップS11に戻り、作業
バッファB1に、一時ファイルF4から新たなレコード
を読み込み、作業バッファB1およびレコードセーブ領
域R1のデータについて、上述と同様の処理を行う。
【0012】ステップS14で、レコードセーブ領域R
1が一杯であったときは、レコードセーブ領域R1内の
データレコードを、ソート済みデータブロックまたはス
トリングとして、一時ファイルF4に書き戻し(ステッ
プS15)、ステップS16の処理に移行する。ステッ
プS17で、一時ファイルF4にマージ出力すべきレコ
ードのデータブロックが存在しないと判定された時点で
処理を終了する。
【0013】このようにして、全てのデータをマージし
て出力バッファB2を介して出力ファイルF5に出力す
る。しかしながら、このブロックマージは、データブロ
ックを読み込んでいる作業バッファB1と、ソート作業
域内のレコードセーブ領域R1との間でのレコード移動
回数が多いという問題がある。
【0014】これに対して、バッファマージは、図13
に一例を示すように、一時ファイルF6に格納されるソ
ート済みデータストリングの数に対応する数以上の作業
バッファB3をメインメモリに確保し、上述と同様のイ
ンデックス領域I2に、各データブロックの先頭のデー
タレコードに相当する代表レコードからなるインデック
ス情報を格納する。
【0015】次に、このインデックス領域I2内の全イ
ンデックスをソートし、このインデックスの示す順に、
一時ファイルF6から、メインメモリ内の作業バッファ
B3にデータブロックを読み込む。そして、次に読み込
むべきデータブロックのインデックスより、ソート順位
が高いデータを、全作業バッファB3からソート順位に
従って順次出力バッファB4(メインメモリ内の他の領
域)に出力する。この場合、ストリングの数に対応する
数以上の作業バッファB3を用意しているので、次に読
み込むべきデータブロックのインデックスより、ソート
順位が高いデータを全て出力した時点では、作業バッフ
ァB3のうちの1つに次のデータブロックを読み込むべ
き空きができることになる。
【0016】
【発明が解決しようとする課題】上述した従来のブロッ
クマージおよびバッファマージには、次のような問題が
ある。ブロックマージは、データブロックを読み込む作
業バッファB1と、ソート作業域内のレコードセーブ域
R1との間で、レコードを読み込むたびにレコードの移
動を行うので、レコード移動回数が多いという問題があ
る。また、バッファマージは、レコードの移動回数は少
なくて処理が行えるが、ソート済データストリングの数
が、用意できるバッファ数を超えると適用することがで
きず、多くのバッファを必要とする。
【0017】本発明の目的は、必要とするバッファが比
較的少なくて済み、作業域内でのレコード移動回数が少
なく、高速で効率よくマージ処理を行うことを可能とす
るソート処理方法および装置を提供することにある。
【0018】
【課題を解決するための手段】本発明の第1のソート処
理方法は、入力されたデータから複数のソート済みデー
タブロックを作成し、これらを複数の作業バッファに一
旦読み込んで、マージしながら前記複数の作業バッファ
から逐次データレコードを読出して出力することにより
全データをソートするにあたり、個々の前記データブロ
ック内で最もソート順位の高いデータからなる代表レコ
ードのソート順位に応じた順序で前記複数のデータブロ
ックを前記複数の作業バッファのうちの空きバッファに
逐次読み込むブロック読込ステップと、前記作業バッフ
ァに次に読み込むべきデータブロックの前記代表レコー
ド以上のデータレコードを、前記ソート順位に従って前
記作業バッファから取り出して順次出力するソート出力
ステップと、前記次に読み込むべきデータブロックの前
記代表レコード以上のデータレコードを全て前記作業バ
ッファから取り出して出力しても、前記空きバッファが
できない場合に、前記複数の作業バッファのうちの1つ
の作業バッファ内の全てのデータレコードを、前記複数
の作業バッファのうちの他の1以上の作業バッファに移
動させて前記空きバッファをつくるデータ移動ステップ
とを有することを特徴としている〔請求項1〕。
【0019】本発明の第2のソート処理方法は、入力さ
れたデータから複数のソート済みデータブロックを作成
し、これらを複数の作業バッファに一旦読み込んで、マ
ージしながら前記複数の作業バッファから逐次データレ
コードを読出して出力することにより全データをソート
するにあたり、個々の前記データブロック内で最もソー
ト順位の高いデータからなる代表レコードのソート順位
に応じた順序で前記複数のデータブロックを前記複数の
作業バッファのうちの空きバッファに逐次読み込むブロ
ック読込ステップと、前記作業バッファに次に読み込む
べきデータブロックの前記代表レコード以上のデータレ
コードを、前記ソート順位に従って前記作業バッファか
ら取り出して順次出力するソート出力ステップと、前記
次に読み込むべきデータブロックの前記代表レコード以
上のデータレコードを全て前記作業バッファから取り出
して出力しても、前記空きバッファができない場合に、
前記複数の作業バッファのうちの1つの作業バッファ内
の全てのデータレコードを、前記複数の作業バッファの
うちの他の1以上の作業バッファに移動させて前記空き
バッファをつくるデータ移動ステップと、前記データ移
動ステップで、前記複数の作業バッファのうちの1つの
作業バッファ内の全てのデータレコードを、前記複数の
作業バッファのうちの他の1以上の作業バッファに移動
させることができない場合に、前記複数の作業バッファ
からソート順位の低いデータを1データブロック分取り
出して、一時的に外部ファイルへ書き戻してから、再度
前記データ移動ステップに移行する書き戻しステップと
を有することを特徴としている〔請求項2〕。
【0020】上述した本発明の第1または第2のソート
処理方法において、データ移動ステップは、複数の作業
バッファのうちの最先にデータブロックの読み込みが行
われた作業バッファを、データレコードの移動元の作業
バッファに選定するステップを含んでいてもよく〔請求
項3〕、あるいは複数の作業バッファのうちの残りデー
タレコードの最少の作業バッファを、データレコードの
移動元の作業バッファに選定するステップを含んでいて
もよい〔請求項4〕。また、これらのいずれかにおい
て、データ移動ステップは、さらに、移動元の作業バッ
ファを除く複数の作業バッファからデータブロックの読
み込みが行われた順に1以上の作業バッファを、データ
レコードの移動先の作業バッファとして選定するステッ
プを含んでいてもよく〔請求項5〕、あるいは移動元の
作業バッファを除く複数の作業バッファから残りのデー
タレコードの少ない順に1以上の作業バッファを、デー
タレコードの移動先の作業バッファとして選定するステ
ップを含んでいてもよい〔請求項6〕。
【0021】さらに、上述した本発明の第2のソート処
理方法において、書き戻しステップは、前記複数の作業
バッファから所定量ずつ等分に各バッファ内のデータレ
コードのソート順位の低いデータレコードを取り出し
て、外部ファイルへの書き戻しに供するステップであっ
てもよい〔請求項7〕。
【0022】本発明の第1のソート処理装置は、入力さ
れたデータから複数のソート済みデータブロックを作成
するためのストリング作成手段と、前記複数のソート済
みデータブロックおよびソート結果出力データを格納す
るための外部ファイルと、前記ソート済みデータブロッ
クを外部ファイルから一旦格納するための複数の作業バ
ッファと、ソート結果出力データを一旦格納してから前
記外部ファイルに供給するための出力バッファと、個々
の前記データブロック内で最もソート順位の高いデータ
からなる代表レコードのソート順位に応じた順序で前記
複数のデータブロックを逐次読み込み、前記複数の作業
バッファのうちの空きバッファに格納するためのブロッ
ク読込手段と、前記作業バッファに次に読み込むべきデ
ータブロックの前記代表レコード以上のデータレコード
を、前記ソート順位に従って前記作業バッファから取り
出して順次前記出力バッファに出力するためのソート出
力手段と、前記次に読み込むべきデータブロックの前記
代表レコード以上のデータレコードを全て前記作業バッ
ファから取り出して出力しても、前記空きバッファがで
きない場合に、前記複数の作業バッファのうちの1つの
作業バッファ内の全てのデータレコードを、前記複数の
作業バッファのうちの他の1以上の作業バッファに移動
させるためのデータ移動手段とを具備することを特徴と
している〔請求項8〕。
【0023】本発明の第2のソート処理装置は、入力さ
れたデータから複数のソート済みデータブロックを作成
するためのストリング作成手段と、前記複数のソート済
みデータブロックおよびソート結果出力データを格納す
るための外部ファイルと、前記ソート済みデータブロッ
クを外部ファイルから一旦格納するための複数の作業バ
ッファと、ソート結果出力データを一旦格納してから前
記外部ファイルに供給するための出力バッファと、個々
の前記データブロック内で最もソート順位の高いデータ
からなる代表レコードのソート順位に応じた順序で前記
複数のデータブロックを逐次読み込み、前記複数の作業
バッファのうちの空きバッファに格納するためのブロッ
ク読込手段と、前記作業バッファに次に読み込むべきデ
ータブロックの前記代表レコード以上のデータレコード
を、前記ソート順位に従って前記作業バッファから取り
出して順次前記出力バッファに出力するためのソート出
力手段と、前記次に読み込むべきデータブロックの前記
代表レコード以上のデータレコードを全て前記作業バッ
ファから取り出して出力しても、前記空きバッファがで
きない場合に、前記複数の作業バッファのうちの1つの
作業バッファ内の全てのデータレコードを、前記複数の
作業バッファのうちの他の1以上の作業バッファに移動
させるためのデータ移動手段と前記データ移動手段が、
前記複数の作業バッファのうちの1つの作業バッファ内
の全てのデータレコードを、前記複数の作業バッファの
うちの他の1以上の作業バッファに移動させることがで
きない場合に、前記複数の作業バッファからソート順位
の低いデータを1データブロック分取り出して、一時的
に外部ファイルへ書き戻すための書き戻し手段とを具備
することを特徴としている〔請求項9〕。
【0024】上述した本発明の第1または第2のソート
処理装置において、データ移動手段は、複数の作業バッ
ファのうちの最先にデータブロックの読み込みが行われ
た作業バッファを、データレコードの移動元の作業バッ
ファに選定するための手段を含んでいてもよく〔請求項
10〕、あるいは複数の作業バッファのうちの残りデー
タレコードの最少の作業バッファを、データレコードの
移動元の作業バッファに選定するための手段を含んでい
てもよい〔請求項11〕。また、これらのいずれかにお
いて、データ移動手段は、移動元の作業バッファを除く
複数の作業バッファからデータブロックの読み込みが行
われた順に1以上の作業バッファを、データレコードの
移動先の作業バッファとして選定するための手段をさら
に含んでいてもよく〔請求項12〕、あるいは移動元の
作業バッファを除く複数の作業バッファから残りのデー
タレコードの少ない順に1以上の作業バッファを、デー
タレコードの移動先の作業バッファとして選定するため
の手段を含んでいてもよい〔請求項13〕。
【0025】上述した本発明の第2のソート処理装置に
おいて、書き戻し手段は、前記複数の作業バッファから
所定量ずつ等分に各バッファ内のデータレコードのソー
ト順位の低いデータレコードを取り出して、外部ファイ
ルへの書き戻しに供するための手段を含んでいてもよい
〔請求項14〕。
【0026】
【作用】本発明によるソート処理方法および装置は、入
力されたデータから作成した複数のソート済みデータブ
ロックを、複数の作業バッファに一旦読み込んで、マー
ジしながら前記複数の作業バッファから逐次データレコ
ードを読出して出力することにより全データをソートす
るにあたり、前記データブロック内で最もソート順位の
高いデータからなる代表レコードのソート順位に応じた
順序で前記複数のデータブロックを前記複数の作業バッ
ファのうちの空きバッファに逐次読み込み、次に前記作
業バッファに読み込むべきデータブロックの前記代表レ
コード以上のデータレコードを、前記ソート順位に従っ
て前記作業バッファから取り出して順次出力するととも
に、前記次に読み込むべきデータブロックの前記代表レ
コード以上のデータレコードを全て前記作業バッファか
ら取り出して出力しても、前記空きバッファができない
場合に、前記複数の作業バッファのうちの1つの作業バ
ッファ内の全てのデータレコードを、前記複数の作業バ
ッファのうちの他の1以上の作業バッファに移動させる
ことにより、少ない作業バッファを用いて、高効率で且
つ高速のマージ処理が行われる。
【0027】さらに、前記複数の作業バッファのうちの
1つの作業バッファ内の全てのデータレコードを、前記
複数の作業バッファのうちの他の1以上の作業バッファ
に移動させることができない場合には、前記複数の作業
バッファからソート順位の低いデータを1データブロッ
ク分取り出して、一時的に外部ファイルへ書き戻すこと
により、少ない作業バッファを用いて、作業バッファの
容量により処理可能データ量が制限されることなく、一
層高効率で且つ高速のマージ処理が行われる。
【0028】さらに、また、複数の作業バッファのうち
の最先にデータブロックの読み込みが行われた作業バッ
ファを、データレコードの移動元の作業バッファに選定
し、あるいは複数の作業バッファのうちの残りデータレ
コードの最少の作業バッファを、データレコードの移動
元の作業バッファに選定するようにすれば、処理の効率
が一層高められる。また、これらのいずれかにおいて、
移動元の作業バッファを除く複数の作業バッファからデ
ータブロックの読み込みが行われた順に1以上の作業バ
ッファを、データレコードの移動先の作業バッファとし
て選定し、あるいは移動元の作業バッファを除く複数の
作業バッファから残りのデータレコードの少ない順に1
以上の作業バッファを、データレコードの移動先の作業
バッファとして選定するようにすれば、処理の効率がさ
らに一層高められる。
【0029】また、上述した書き戻しに際し、前記複数
の作業バッファから所定量ずつ等分に各バッファ内のデ
ータレコードのソート順位の低いデータレコードを取り
出して、外部ファイルへの書き戻しに供するようにすれ
ば、処理の効率がより一層向上する。
【0030】
【実施例】以下、本発明に係るソート処理システムの実
施例を図面を参照して説明する。 〔実施例1〕図1は本発明の第1の実施例によるソート
処理システムの構成を示している。
【0031】図1のソート処理システムは、CPU(中
央処理装置)2、メインメモリ4および外部ファイル6
を具備している。外部ファイル6は、入力データファイ
ル、入力されたデータから作成された複数のソート済み
データブロックおよびソート結果の出力データファイル
を格納する。この場合、前記ソート済みデータブロック
の生成時に、各データブロック中のソート順位が最も高
いデータレコードに相当する代表レコードからなるイン
デックス情報が生成されていれば、このインデックス情
報も外部ファイル6に格納しておく。
【0032】メインメモリ4は、インデックス領域8、
出力バッファ10および複数の作業バッファ12を有す
る。複数の作業バッファ12は、前記外部ファイル6か
ら取り出したソート済みデータブロックをデータブロッ
ク毎に一旦格納する。すなわち、作業バッファ12の各
々は、1データブロック分の容量を有し、1つのデータ
ブロックを格納することができる。
【0033】出力バッファ10は、マージ処理により生
成されるソート結果の出力データを一旦格納する。この
出力バッファ10に一旦格納された出力データは、所定
量毎に外部ファイル6に出力される。
【0034】インデックス領域8は、外部ファイル6お
よび外部ファイル6から読出されてメインメモリ4の作
業バッファ12に保持される各データブロックの最もソ
ート順位の高いレコードからなる代表レコードを保持す
る。このインデックス領域8に格納される各データブロ
ック毎の代表レコードは、前記ソート済みデータブロッ
クの作成時に生成され、外部ファイル6に格納されてい
てもよく、予め生成されていない場合には、マージ処理
に先立って作成し、インデックス領域8に格納してもよ
い。いずれにせよ、前記各データブロック毎の代表レコ
ードは、予めソート順位に従ってソートされてインデッ
クス領域8に格納され、データの出力またはマージ等に
より代表レコードが変化したときは、随時必要に応じて
ソートされる。
【0035】CPU2は、ブロック読込み部14、ソー
ト出力部16、データ移動部18およびストリング作成
部19を有する。ストリング作成部19は、外部ファイ
ル6の入力データファイルから所定数ずつレコードを読
み込み、それをソートしてソート済みデータブロックを
作成し、そのソート済みデータブロックを外部ファイル
6に書き込む。
【0036】ブロック読込み部14は、インデックス領
域8に格納される前記代表レコードのソート順位に応じ
た順序で前記複数のデータブロックを読み込み、メイン
メモリ4中の複数の作業バッファ12のうちの空きバッ
ファに逐次格納する。
【0037】ソート出力部16は、作業バッファ12に
次に読み込むべきデータブロックの前記代表レコード以
上のソート順位のデータレコードを、該ソート順位に従
って作業バッファ12から取り出して、メインメモリ4
内の出力バッファ10に順次出力する。
【0038】データ移動部18は、前記次に読み込むべ
きデータブロックの前記代表レコード以上のソート順位
のデータレコードを、全て作業バッファ12から取り出
して出力しても、作業バッファ12に空きバッファがで
きない場合に、作業バッファ12のうちの1つの作業バ
ッファ12内の全てのデータレコードを、他の1つ以上
の作業バッファ12に移動させて、前記空きバッファを
つくる。このとき、データレコードの移動により、デー
タレコードが追加された1つ以上の作業バッファ12に
ついては、各作業バッファ12内のデータレコードを前
記ソート順位に従ってソートし、新たな代表レコードを
インデックス領域8に登録する。
【0039】次に、図1のように構成されたソート処理
システムの動作について、図2および図3に示すフロー
チャート、ならびに図4、図5および図6に示す模式図
を参照して説明する。
【0040】ソート処理は、ストリング作成処理(ステ
ップS41)と、マージ処理(ステップS42)とから
なる。ストリング作成処理は、入力データファイルから
所定数ずつレコードを読み込み、それをソートしてソー
ト済みデータブロックを作成する処理であるが、周知の
技術であるので、ここでは詳細な説明を省略する。
【0041】マージ処理が始まると、まず、初期入力処
理として、ブロック読込み部14が、各データブロック
の代表レコード、つまりインデックスを、メインメモリ
4内の代表レコード読み込み用のインデックス領域8に
読込み、このインデックス領域8内の代表レコードをソ
ート順位に従ってソートする(ステップS21)。
【0042】次に、ブロック読込み部14により、メイ
ンメモリ4内に予め確保した複数の作業バッファ12に
空きバッファがあるか否かがチェックされ(ステップS
22)、空きバッファがある場合には、インデックス領
域8の代表レコードのソート順位に従って、外部ファイ
ル6からデータブロックが読出され、前記空きバッファ
に順次格納される(ステップS24)。ここまでの様子
を図4に模式的に示している。
【0043】前記複数の作業バッファ12の全てにデー
タブロックが格納されると、ソート出力部16が、イン
デックス領域8を参照して、次に読み込むべきデータブ
ロックの代表レコードを調べ、ソート順位が該次に読み
込むべき代表レコードと等しいかそれよりもソート順位
の高いレコードを作業バッファ12から取り出して、マ
ージしながらメインメモリ4の出力バッファ10に順次
移動させる(ステップS25)。
【0044】前記次に読み込むべきデータブロックの代
表レコードよりもソート順位の高いレコードを全て出力
バッファ10に移動した時点で、ブロック読込み部14
が外部ファイル6内に処理されていないソート済みデー
タブロックが残っているか否かを調べ(ステップS2
6)、未処理データブロックが残っていれば、ステップ
S22に戻り、作業バッファ12の空きバッファの有無
を調べる。
【0045】直前のステップS25で、ある作業バッフ
ァ12内のデータレコードが全て出力バッファ10に移
動して、空きバッファとなったときには、ブロック読込
み部14は、ステップS24で、次の代表レコードに対
応するデータブロックを、外部ファイル6から、その作
業バッファ12に取り込む。
【0046】ステップS26からステップS22に戻っ
たときに、図5に模式的に示すように、作業バッファ1
2に空きバッファがない場合には、データ移動部18
が、作業バッファ12のうちの特定の作業バッファ12
を選択して、その作業バッファ12内のデータレコード
を他の作業バッファ12へ移動させて、その作業バッフ
ァ12を空きバッファとする(ステップS23)。この
とき、データレコードを他の作業バッファ12に移動さ
せるべき、移動元の作業バッファ12の選択は、最も残
りのデータレコードの少ない作業バッファ12を選択す
ることが望ましい。しかし、処理を簡略化するために、
残りデータレコードの量を調べる代わりに、作業バッフ
ァ12のうちで、最先にデータブロックを読み込んだ、
すなわち最も古いデータが格納された作業バッファ12
を移動元の作業バッファ12として選択してもよい。同
様に、データレコードの移動先の作業バッファ12の選
択にあたっても、他の作業バッファ12のうちの残りの
データレコードの少ない順に優先することが望ましい。
この場合も、処理を簡略化するために、他の作業バッフ
ァ12のうちのデータ格納が古い順に優先して移動先の
作業バッファ12を選択してもよい。データレコードの
移動先の作業バッファ12については、作業バッファ1
2内のデータレコードをソート順位に従ってソートし、
新たな代表レコードをインデックス領域8に登録する。
【0047】このようにして生成された空きバッファに
は、ステップS24で、次のソート順位の代表レコード
に対応するデータブロックを、図5に示すように、外部
ファイル6から転送する。
【0048】上述のようにして、レコードの移動はバッ
ファマージと同等か、最悪でもブロックマージよりは少
ない回数でマージ処理を行うことができる。なお、図6
を参照して、作業バッファ12におけるデータレコード
の取扱の一例を詳細に説明する。
【0049】図6のように、作業バッファ12を構成す
るバッファBF1〜BFn毎に、対応するバッファ1〜
n内のレコードを管理するレコード管理テーブルRAT
1〜RATnを設け、処理は全てそのレコード管理テー
ブルRAT1〜RATnを用いて行う。これらバッファ
BF1〜BFnには、データレコード群に加えて、図示
のように、直前の(つまり隣接する上位の)バッファの
ポインタアドレスと、直後の(つまり隣接する下位の)
バッファのポインタアドレスとが格納されることによっ
て、代表レコードのソート順位に従ってアドレスチェイ
ンされている。すなわち、直前のバッファのポインタア
ドレスは、昇順のアドレスチェインを構成し、直後のバ
ッファのポインタアドレスは、降順のアドレスチェイン
を構成している。
【0050】また、レコード管理テーブルRAT1〜R
ATnの各々は、対応するバッファBF1〜BFnの各
データレコードのアドレスを示すポインタと、ソート順
位で直前のレコードに対応するポインタアドレスと、ソ
ート順位で次のレコードに対応するポインタアドレスと
が、各レコード毎に格納されている。すなわち、ソート
順位で直前のレコードに対応するポインタアドレスは、
昇順のチェインを構成し、ソート順位で次のレコードに
対応するポインタアドレスは、降順のチェインを構成す
る。
【0051】したがって、この場合のバッファBF1〜
BFn内のデータレコードは、必ずしもソート順に配列
されている必要はなく、チェインによってソート順に連
結されている。
【0052】ソート出力に際しては、各バッファBF1
〜BFn内の先頭レコード(バッファ内で一番ソート順
位の高いレコード:これが代表レコードである)をポイ
ントするレコード管理テーブルRAT1〜RATnの情
報によって、比較処理を行い、バッファBF1〜BFn
内の先頭レコードのうちで、最もソート順位の高いレコ
ードを決定する。その最もソート順位の高いレコード
が、次に読み込むべきデータブロックの代表レコードと
比較してもソート順位が高いならば、そのレコードを出
力バッファへ出力する。レコードが1つ出力されると、
出力されたレコードが属していたバッファ(BF1〜B
Fnのうちの1つ)の次のレコードを比較対象レコード
として同様の処理を続ける。このような処理を続けて、
空となるバッファが出てきた場合は、その空のバッファ
へ次の代表レコードのデータブロックを読み込む。
【0053】もしも、バッファBF1〜BFnに出力す
べきデータがなくなった場合には、図5に示すように、
バッファ内のレコードを移動させることによって、次の
データブロックを読み込む空きバッファを作る。そのと
きは、先に述べたように、バッファ内に残っているレコ
ード数が最も少ない、または少ないと予想される(典型
的には格納データが最も古い)バッファ内のレコード
を、他のバッファへ移動することによって、レコード移
動回数の削減を実現する。このデータ移動の際には、該
当するレコード管理テーブルRAT1〜RATn内のチ
ェインおよびバッファBF1〜BFn間のチェインを修
正する。
【0054】外部ファイル6に新たに読み込むべきデー
タブロックがなくなった場合には、空きバッファを処理
の対象から外して処理を続ける。全てのバッファが空と
なったら、全レコードを出力したと判断して処理を終了
する。
【0055】上述のようなソート処理システムでは、各
作業バッファ12の容量およびソート済みデータブロッ
クの量によっては、次に読み込むべきデータブロックの
代表レコードよりもソート順位の高いレコードを全て出
力バッファ10に移動した時点で、作業バッファ12間
のデータレコードの移動を行うことができないことが生
じる。次に述べる本発明の第2の実施例は、このような
場合にも対処し得る。
【0056】〔実施例2〕図7は本発明の第2の実施例
によるソート処理システムの構成を示している。図7の
ソート処理システムは、CPU(中央処理装置)20、
ならびに図1の場合と同様のメインメモリ4および外部
ファイル6を具備している。
【0057】CPU20は、図1と実質的に同様のブロ
ック読込み部14、ソート出力部16、データ移動部1
8およびストリング作成部19に加えて、書き戻し処理
部22を有する。
【0058】データ移動部18が、前記次に読み込むべ
きデータブロックの前記代表レコード以上のソート順位
のデータレコードを、全て作業バッファ12から取り出
して出力しても、作業バッファ12に空きバッファがで
きないときに、作業バッファ12のうちの1つの作業バ
ッファ12内の全てのデータレコードを、他の1つ以上
の作業バッファ12に移動させて、前記空きバッファを
つくる。
【0059】書き戻し処理部22は、このようなデータ
レコードの移動が行えないときに、複数の作業バッファ
12からソート順位の低いデータを1データブロック分
取り出して、一時的に外部ファイル6へ書き戻す。この
書き戻しデータブロックは、ソートされ、代表レコード
がインデックス領域8にマージして登録されて、ソート
済みデータブロックの1つとして書き戻される。
【0060】次に、図7のように構成されたソート処理
システムの動作について、図8に示すフローチャート、
図4、図5、図6および図9に示す模式図を参照して説
明する。
【0061】ソート処理が、ストリング作成処理とマー
ジ処理とからなること、およびストリング作成処理につ
いては、図1のシステムの場合と同様である。マージ処
理が始まると、まず、初期入力処理として、ブロック読
込み部14が、各データブロックの代表レコード、つま
りインデックスを、メインメモリ4内の代表レコード読
み込み用のインデックス領域8に読込み、このインデッ
クス領域8内の代表レコードをソート順位に従ってソー
トする(ステップS31)。
【0062】次に、ブロック読込み部14により、メイ
ンメモリ4内に予め確保した複数の作業バッファ12に
空きバッファがあるか否かがチェックされ(ステップS
32)、空きバッファがある場合には、インデックス領
域8の代表レコードのソート順位に従って、外部ファイ
ル6からデータブロックが読出され、前記空きバッファ
に順次格納される(ステップS36)。ここまでの様子
は図4に模式的に示されている。
【0063】前記複数の作業バッファ12の全てにデー
タブロックが格納されると、ソート出力部16が、イン
デックス領域8を参照して、次に読み込むべきデータブ
ロックの代表レコードを調べ、ソート順位が該次に読み
込むべき代表レコードと等しいかそれよりもソート順位
の高いレコードを作業バッファ12から取り出して、マ
ージしながらメインメモリ4の出力バッファ10に順次
移動させる(ステップS37)。
【0064】前記次に読み込むべきデータブロックの代
表レコードよりもソート順位の高いレコードを全て出力
バッファ10に移動した時点で、ブロック読込み部14
が外部ファイル6内に処理されていないソート済みデー
タブロックが残っているか否かを調べ(ステップS3
8)、未処理データブロックが残っていれば、ステップ
S22に戻り、作業バッファ12の空きバッファの有無
を調べる。
【0065】直前のステップS37で、ある作業バッフ
ァ12内のデータレコードが全て出力バッファ10に移
動して、空きバッファとなったときには、ブロック読込
み部14は、ステップS36で、次の代表レコードに対
応するデータブロックを、外部ファイル6から、その作
業バッファ12に取り込む。
【0066】ステップS38からステップS32に戻っ
たときに、図5のように、作業バッファ12に空きバッ
ファがない場合には、書き戻し処理部22が、作業バッ
ファ12間でのデータ移動が可能か否かを調べ(ステッ
プS33)、データ移動が可能ならば、データ移動部1
8が、作業バッファ12のうちの特定の作業バッファ1
2を選択して、その作業バッファ12内のデータレコー
ドを他の作業バッファ12へ移動させることにより、そ
の作業バッファ12を空きバッファとする(ステップS
35)。このとき、データレコードを他の作業バッファ
12に移動させるべき、移動元の作業バッファ12の選
択は、最も残りのデータレコードの少ない作業バッファ
12を選択することが望ましい。しかし、処理を簡略化
するために、残りデータレコードの量を調べる代わり
に、作業バッファ12のうちで、最先にデータブロック
を読み込んだ、すなわち最も古いデータが格納された作
業バッファ12を移動元の作業バッファ12として選択
してもよい。同様に、データレコードの移動先の作業バ
ッファ12の選択にあたっても、他の作業バッファ12
のうちの残りのデータレコードの少ない順に優先するこ
とが望ましい。この場合も、処理を簡略化するために、
他の作業バッファ12のうちのデータ格納が古い順に優
先して移動先の作業バッファ12を選択してもよい。デ
ータレコードの移動先の作業バッファ12については、
作業バッファ12内のデータレコードをソート順位に従
ってソートし、新たな代表レコードをインデックス領域
8に登録する。
【0067】このようにして生成された空きバッファに
は、ステップS36で、次のソート順位の代表レコード
に対応するデータブロックを、図5に示すように、外部
ファイル6から転送する。
【0068】ステップS33で、書き戻し処理部22
が、作業バッファ12間でのデータ移動をすることがで
きないと判定した場合、書き戻し処理部22は、図9に
示すように、作業バッファ12の各バッファからソート
順位の低いデータレコードを1ブロック分選択して抽出
して、データブロックBLを作り、一時的に外部ファイ
ル6に書き戻す(ステップS34)。さらに、ステップ
S35でデータ移動部18による作業バッファ12間で
のデータの移動を行って、空きバッファを作る。外部フ
ァイル6に出力したソート順位の低いデータレコードの
ブロックについては、その代表レコードをインデックス
領域8の代表レコード列とマージして、インデックス領
域に登録し、必要に応じて再度他のソート済みデータブ
ロックと同様に入力されるようにする。
【0069】上述のようにして、バッファマージで問題
となっていた適用範囲の制限もなくなり、レコードの移
動はバッファマージと同等か、最悪でもブロックマージ
よりは少ない回数でマージ処理を行うことができる。
【0070】なお、図6を参照して、この場合の作業バ
ッファ12におけるデータレコードの取扱の一例を詳細
に説明する。図6のように、作業バッファ12を構成す
るバッファBF1〜BFn毎に、対応するバッファ1〜
n内のレコードを管理するレコード管理テーブルRAT
1〜RATnを設け、処理は全てそのレコード管理テー
ブルRAT1〜RATnを用いて行う。これらバッファ
BF1〜BFnには、データレコード群に加えて、図示
のように、直前のバッファのポインタアドレスと、直後
のバッファのポインタアドレスとが格納されることによ
って、代表レコードのソート順位に従ってアドレスチェ
インされている。すなわち、直前のバッファのポインタ
アドレスは、昇順のアドレスチェインを構成し、直後の
バッファのポインタアドレスは、降順のアドレスチェイ
ンを構成している。
【0071】また、レコード管理テーブルRAT1〜R
ATnの各々は、対応するバッファBF1〜BFnの各
データレコードのアドレスを示すポインタと、ソート順
位で直前のレコードに対応するポインタアドレスと、ソ
ート順位で次のレコードに対応するポインタアドレスと
が、各レコード毎に格納されている。すなわち、ソート
順位で直前のレコードに対応するポインタアドレスは、
昇順のチェインを構成し、ソート順位で次のレコードに
対応するポインタアドレスは、降順のチェインを構成す
る。
【0072】したがって、この場合のバッファBF1〜
BFn内のデータレコードは、必ずしもソート順に配列
されている必要はなく、チェインによってソート順に連
結されている。
【0073】ソート出力に際しては、各バッファBF1
〜BFn内の先頭レコード(代表レコード)をポイント
するレコード管理テーブルRAT1〜RATnの情報に
よって、比較処理を行い、バッファBF1〜BFn内の
先頭レコードのうちで、最もソート順位の高いレコード
を決定する。その最もソート順位の高いレコードが、次
に読み込むべきデータブロックの代表レコードと比較し
てもソート順位が高いならば、そのレコードを出力バッ
ファへ出力する。レコードが1つ出力されると、出力さ
れたレコードが属していたバッファ(BF1〜BFnの
うちの1つ)の次のレコードを比較対象レコードとして
同様の処理を続ける。このような処理を続けて、空とな
るバッファが出てきた場合は、その空のバッファへ次の
代表レコードのデータブロックを読み込む。
【0074】もしも、バッファBF1〜BFnに出力す
べきデータがなくなった場合には、図5に示すように、
バッファ内のレコードを移動させることによって、次の
データブロックを読み込む空きバッファを作る。そのと
きは、先に述べたように、バッファ内に残っているレコ
ード数が最も少ない、または少ないと予想される(典型
的には格納データが最も古い)バッファ内のレコード
を、他のバッファへ移動することによって、レコード移
動回数の削減を実現する。このデータ移動の際には、該
当するレコード管理テーブルRAT1〜RATn内のチ
ェインおよびバッファBF1〜BFn間のチェインを修
正する。
【0075】図9に示すように、全ての作業バッファ1
2の残りレコードが多く、レコードの移動ができない場
合、すなわち他のバッファ内に全レコードを移動しきれ
ない場合は、全作業バッファ12の中からソート順位の
低いデータレコードを1ブロック分抽出して、一時的に
外部ファイル6へ書き戻す処理を行う。この場合、作業
バッファ12の全てからソート順位の低いデータを等量
ずつ取り出してもよく、作業バッファ12のそれぞれに
よってデータレコードの抽出量が異なるようにして抽出
してもよい。その場合、例えばバッファ毎のデータレコ
ードの残量に応じて、残量の多いバッファから多量のデ
ータレコードを抽出するようにしたり、特定のバッファ
から多量のデータを抽出するようにしたりしてもよい。
この処理もレコード管理テーブルRAT1〜RATnを
用いて行うことになり、書き戻し処理によってできた作
業バッファ12の空き領域へレコードの移動を行い空き
バッファを作る。
【0076】この場合も、外部ファイル6に新たに読み
込むべきデータブロックがなくなった場合には、空きバ
ッファを処理の対象から外して処理を続ける。全てのバ
ッファが空となったら、全レコードを出力したと判断し
て処理を終了する。
【0077】
【発明の効果】以上説明したように、本発明によれば、
予め個別にソートしたデータ群からなる複数のソート済
みデータブロックを、複数の作業バッファに一旦読み込
んで、マージしながら前記複数の作業バッファから逐次
データレコードを読出して出力することにより全データ
をソートするにあたり、前記データブロック内で最もソ
ート順位の高いデータからなる代表レコードのソート順
位に応じた順序で前記複数のデータブロックを前記複数
の作業バッファのうちの空きバッファに逐次読み込み、
次に前記作業バッファに読み込むべきデータブロックの
前記代表レコード以上のデータレコードを、前記ソート
順位に従って前記作業バッファから取り出して順次出力
するとともに、前記次に読み込むべきデータブロックの
前記代表レコード以上のデータレコードを全て前記作業
バッファから取り出して出力しても、前記空きバッファ
ができない場合に、前記複数の作業バッファのうちの1
つの作業バッファ内の全てのデータレコードを、前記複
数の作業バッファのうちの他の1以上の作業バッファに
移動させるので、必要とするバッファが比較的少なくて
済み、作業域内でのレコード移動回数が少なく、高速で
効率よくマージ処理を行うことが可能なソート処理方法
および装置を提供することができる。
【0078】さらに、本発明のソート処理方法および装
置では、前記複数の作業バッファのうちの1つの作業バ
ッファ内の全てのデータレコードを、前記複数の作業バ
ッファのうちの他の1以上の作業バッファに移動させる
ことができない場合には、前記複数の作業バッファから
ソート順位の低いデータを1データブロック分取り出し
て、一時的に外部ファイルへ書き戻すので、一層少ない
作業バッファを用いて、作業バッファの容量により処理
可能データ量が制限されることなく、一層高効率で且つ
高速のマージ処理を行うことが可能となる。
【図面の簡単な説明】
【図1】本発明に係るソート処理システムの第1の実施
例の構成を示すブロック図である。
【図2】図1のシステムにおけるソート処理を説明する
ためのフローチャートである。
【図3】図1のシステムにおけるマージ処理を説明する
ためのフローチャートである。
【図4】図1のシステムにおけるマージ処理を説明する
ためのデータブロックの読込みを示す模式図である。
【図5】図1のシステムにおけるマージ処理を説明する
ための作業バッファ間のデータレコードの移動を示す模
式図である。
【図6】図1のシステムにおけるマージ処理を説明する
ための作業バッファの詳細な構成の一例を示す模式図で
ある。
【図7】本発明に係るソート処理システムの第2の実施
例の構成を示すブロック図である。
【図8】図7のシステムにおけるマージ処理を説明する
ためのフローチャートである。
【図9】図1のシステムにおけるマージ処理を説明する
ためのデータレコードの外部ファイルへの書き戻しを示
す模式図である。
【図10】従来のシステムにおけるソート処理の概略を
説明するための模式図である。
【図11】従来のシステムにおけるブロックマージによ
るソート処理の概略を説明するための模式図である。
【図12】従来のシステムにおけるブロックマージによ
るソート処理の概略を説明するためのフローチャートで
ある。
【図13】従来のシステムにおけるバッファマージによ
るソート処理の概略を説明するための模式図である。
【符号の説明】
2,20…CPU(中央処理装置) 4…メインメモリ 6…外部ファイル 8…インデックス領域 10…出力バッファ 12、BF1〜BFn…作業バッファ 14…ブロック読込み部 16…ソート出力部 18…データ移動部 19…ストリング作成部 22…書き戻し処理部 RAT1〜RATn…レコード管理テーブル

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 入力されたデータから複数のソート済み
    データブロックを作成し、これらを複数の作業バッファ
    に一旦読み込んで、マージしながら前記複数の作業バッ
    ファから逐次データレコードを読出して出力することに
    より全データをソートするにあたり、 入力されたデータから複数のソート済みデータブロック
    を作成するステップと、 個々の前記データブロック内で最もソート順位の高いデ
    ータからなる代表レコードのソート順位に応じた順序で
    前記複数のデータブロックを前記複数の作業バッファの
    うちの空きバッファに逐次読み込むブロック読込ステッ
    プと、 前記作業バッファに次に読み込むべきデータブロックの
    前記代表レコード以上のデータレコードを、前記ソート
    順位に従って前記作業バッファから取り出して順次出力
    するソート出力ステップと、 前記次に読み込むべきデータブロックの前記代表レコー
    ド以上のデータレコードを全て前記作業バッファから取
    り出して出力しても、前記空きバッファができない場合
    に、前記複数の作業バッファのうちの1つの作業バッフ
    ァ内の全てのデータレコードを、前記複数の作業バッフ
    ァのうちの他の1以上の作業バッファに移動させて前記
    空きバッファをつくるデータ移動ステップとを有するこ
    とを特徴とするソート処理方法。
  2. 【請求項2】 入力されたデータから複数のソート済み
    データブロックを作成し、これらを複数の作業バッファ
    に一旦読み込んで、マージしながら前記複数の作業バッ
    ファから逐次データレコードを読出して出力することに
    より全データをソートするにあたり、 入力されたデータから複数のソート済みデータブロック
    を作成するステップと、 個々の前記データブロック内で最もソート順位の高いデ
    ータからなる代表レコードのソート順位に応じた順序で
    前記複数のデータブロックを前記複数の作業バッファの
    うちの空きバッファに逐次読み込むブロック読込ステッ
    プと、 前記作業バッファに次に読み込むべきデータブロックの
    前記代表レコード以上のデータレコードを、前記ソート
    順位に従って前記作業バッファから取り出して順次出力
    するソート出力ステップと、 前記次に読み込むべきデータブロックの前記代表レコー
    ド以上のデータレコードを全て前記作業バッファから取
    り出して出力しても、前記空きバッファができない場合
    に、前記複数の作業バッファのうちの1つの作業バッフ
    ァ内の全てのデータレコードを、前記複数の作業バッフ
    ァのうちの他の1以上の作業バッファに移動させて前記
    空きバッファをつくるデータ移動ステップと、 前記データ移動ステップで、前記複数の作業バッファの
    うちの1つの作業バッファ内の全てのデータレコード
    を、前記複数の作業バッファのうちの他の1以上の作業
    バッファに移動させることができない場合に、前記複数
    の作業バッファからソート順位の低いデータを1データ
    ブロック分取り出して、一時的に外部ファイルへ書き戻
    してから、再度前記データ移動ステップに移行する書き
    戻しステップとを有することを特徴とするソート処理方
    法。
  3. 【請求項3】 データ移動ステップは、複数の作業バッ
    ファのうちの最先にデータブロックの読み込みが行われ
    た作業バッファを、データレコードの移動元の作業バッ
    ファに選定するステップを含むことを特徴とする請求項
    1または2に記載のソート処理方法。
  4. 【請求項4】 データ移動ステップは、複数の作業バッ
    ファのうちの残りデータレコードの最少の作業バッファ
    を、データレコードの移動元の作業バッファに選定する
    ステップを含むことを特徴とする請求項1または2に記
    載のソート処理方法。
  5. 【請求項5】 データ移動ステップは、移動元の作業バ
    ッファを除く複数の作業バッファからデータブロックの
    読み込みが行われた順に1以上の作業バッファを、デー
    タレコードの移動先の作業バッファとして選定するステ
    ップを含むことを特徴とする請求項3または4に記載の
    ソート処理方法。
  6. 【請求項6】 データ移動ステップは、移動元の作業バ
    ッファを除く複数の作業バッファから残りのデータレコ
    ードの少ない順に1以上の作業バッファを、データレコ
    ードの移動先の作業バッファとして選定するステップを
    含むことを特徴とする請求項3または4に記載のソート
    処理方法。
  7. 【請求項7】 書き戻しステップは、前記複数の作業バ
    ッファから所定量ずつ等分に各バッファ内のデータレコ
    ードのソート順位の低いデータレコードを取り出して、
    外部ファイルへの書き戻しに供するステップであること
    を特徴とする請求項2に記載のソート処理方法。
  8. 【請求項8】 入力されたデータから複数のソート済み
    データブロックを作成するためのストリング作成手段
    と、 前記複数のソート済みデータブロックおよびソート結果
    出力データを格納するための外部ファイルと、 前記ソート済みデータブロックを外部ファイルから一旦
    格納するための複数の作業バッファと、 ソート結果出力データを一旦格納してから前記外部ファ
    イルに供給するための出力バッファと、 個々の前記データブロック内で最もソート順位の高いデ
    ータからなる代表レコードのソート順位に応じた順序で
    前記複数のデータブロックを逐次読み込み、前記複数の
    作業バッファのうちの空きバッファに格納するためのブ
    ロック読込手段と、 前記作業バッファに次に読み込むべきデータブロックの
    前記代表レコード以上のデータレコードを、前記ソート
    順位に従って前記作業バッファから取り出して順次前記
    出力バッファに出力するためのソート出力手段と、 前記次に読み込むべきデータブロックの前記代表レコー
    ド以上のデータレコードを全て前記作業バッファから取
    り出して出力しても、前記空きバッファができない場合
    に、前記複数の作業バッファのうちの1つの作業バッフ
    ァ内の全てのデータレコードを、前記複数の作業バッフ
    ァのうちの他の1以上の作業バッファに移動させるため
    のデータ移動手段とを具備することを特徴とするソート
    処理装置。
  9. 【請求項9】 入力されたデータから複数のソート済み
    データブロックを作成するためのストリング作成手段
    と、 前記複数のソート済みデータブロックおよびソート結果
    出力データを格納するための外部ファイルと、 前記ソート済みデータブロックを外部ファイルから一旦
    格納するための複数の作業バッファと、 ソート結果出力データを一旦格納してから前記外部ファ
    イルに供給するための出力バッファと、 個々の前記データブロック内で最もソート順位の高いデ
    ータからなる代表レコードのソート順位に応じた順序で
    前記複数のデータブロックを逐次読み込み、前記複数の
    作業バッファのうちの空きバッファに格納するためのブ
    ロック読込手段と、 前記作業バッファに次に読み込むべきデータブロックの
    前記代表レコード以上のデータレコードを、前記ソート
    順位に従って前記作業バッファから取り出して順次前記
    出力バッファに出力するためのソート出力手段と、 前記次に読み込むべきデータブロックの前記代表レコー
    ド以上のデータレコードを全て前記作業バッファから取
    り出して出力しても、前記空きバッファができない場合
    に、前記複数の作業バッファのうちの1つの作業バッフ
    ァ内の全てのデータレコードを、前記複数の作業バッフ
    ァのうちの他の1以上の作業バッファに移動させるため
    のデータ移動手段と前記データ移動手段が、前記複数の
    作業バッファのうちの1つの作業バッファ内の全てのデ
    ータレコードを、前記複数の作業バッファのうちの他の
    1以上の作業バッファに移動させることができない場合
    に、前記複数の作業バッファからソート順位の低いデー
    タを1データブロック分取り出して、一時的に外部ファ
    イルへ書き戻すための書き戻し手段とを具備することを
    特徴とするソート処理装置。
  10. 【請求項10】 データ移動手段は、複数の作業バッフ
    ァのうちの最先にデータブロックの読み込みが行われた
    作業バッファを、データレコードの移動元の作業バッフ
    ァに選定するための手段を含むことを特徴とする請求項
    8または9に記載のソート処理装置。
  11. 【請求項11】 データ移動手段は、複数の作業バッフ
    ァのうちの残りデータレコードの最少の作業バッファ
    を、データレコードの移動元の作業バッファに選定する
    ための手段を含むことを特徴とする請求項8または9に
    記載のソート処理装置。
  12. 【請求項12】 データ移動手段は、移動元の作業バッ
    ファを除く複数の作業バッファからデータブロックの読
    み込みが行われた順に1以上の作業バッファを、データ
    レコードの移動先の作業バッファとして選定するための
    手段をさらに含むことを特徴とする請求項10または1
    1に記載のソート処理装置。
  13. 【請求項13】 データ移動手段は、移動元の作業バッ
    ファを除く複数の作業バッファから残りのデータレコー
    ドの少ない順に1以上の作業バッファを、データレコー
    ドの移動先の作業バッファとして選定するための手段を
    含むことを特徴とする請求項10または11に記載のソ
    ート処理装置。
  14. 【請求項14】 書き戻し手段は、前記複数の作業バッ
    ファから所定量ずつ等分に各バッファ内のデータレコー
    ドのソート順位の低いデータレコードを取り出して、外
    部ファイルへの書き戻しに供するための手段を含むこと
    を特徴とする請求項9に記載のソート処理装置。
JP19248094A 1994-08-16 1994-08-16 ソート処理方法および装置 Expired - Fee Related JP3515810B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP19248094A JP3515810B2 (ja) 1994-08-16 1994-08-16 ソート処理方法および装置
US08/460,690 US5659733A (en) 1994-08-16 1995-06-02 Sort processing method and apparatus for sorting data blocks using work buffer merge data records while sequentially transferring data records from work buffers

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP19248094A JP3515810B2 (ja) 1994-08-16 1994-08-16 ソート処理方法および装置

Publications (2)

Publication Number Publication Date
JPH0855013A true JPH0855013A (ja) 1996-02-27
JP3515810B2 JP3515810B2 (ja) 2004-04-05

Family

ID=16292000

Family Applications (1)

Application Number Title Priority Date Filing Date
JP19248094A Expired - Fee Related JP3515810B2 (ja) 1994-08-16 1994-08-16 ソート処理方法および装置

Country Status (2)

Country Link
US (1) US5659733A (ja)
JP (1) JP3515810B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012018510A (ja) * 2010-07-07 2012-01-26 Mitsubishi Electric Corp 文書処理装置、文書処理方法、文書処理プログラム、及び文書処理プログラムを記録したコンピュータ読み取り可能な記録媒体

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689623B1 (en) 2002-04-08 2010-03-30 Syncsort Incorporated Method for performing an external (disk-based) sort of a large data file which takes advantage of “presorted” data already present in the input
US20040003164A1 (en) * 2002-06-27 2004-01-01 Patrick Boily PCI bridge and data transfer methods
US7882113B2 (en) * 2003-03-28 2011-02-01 International Business Machines Corporation Method, apparatus, and system for formatting time data to improve processing in a sort utility
JP2005190047A (ja) * 2003-12-25 2005-07-14 Hitachi Ltd データソート機能を持つストレージシステム
US7885932B2 (en) * 2006-11-01 2011-02-08 Ab Initio Technology Llc Managing storage of individually accessible data units
US8229902B2 (en) * 2006-11-01 2012-07-24 Ab Initio Technology Llc Managing storage of individually accessible data units
US10089379B2 (en) * 2008-08-18 2018-10-02 International Business Machines Corporation Method for sorting data
US8868484B2 (en) 2010-07-08 2014-10-21 Oracle International Corporation Efficiently updating rows in a data warehouse
US20130013605A1 (en) 2011-07-08 2013-01-10 Stanfill Craig W Managing Storage of Data for Range-Based Searching

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3713107A (en) * 1972-04-03 1973-01-23 Ncr Firmware sort processor system
US4514826A (en) * 1981-05-18 1985-04-30 Tokyo Shibaura Denki Kabushiki Kaisha Relational algebra engine
JPS6254329A (ja) * 1985-05-22 1987-03-10 Hitachi Ltd フアイル装置へのデ−タの登録方法および検索方法
US5084815A (en) * 1986-05-14 1992-01-28 At&T Bell Laboratories Sorting and merging of files in a multiprocessor
US4873625A (en) * 1987-11-17 1989-10-10 International Business Machines Corporation Method and apparatus for extending collation functions of a sorting program
JPH02178730A (ja) * 1988-12-28 1990-07-11 Toshiba Corp 分割法を用いた内部ソート方式
JP3453757B2 (ja) * 1989-05-29 2003-10-06 株式会社日立製作所 バッファ管理方法
JPH0776906B2 (ja) * 1989-06-30 1995-08-16 ディジタル イクイプメント コーポレーション 分類加速装置のための速度及びメモリー制御
US5117495A (en) * 1990-03-07 1992-05-26 Syncsort Incorporated Method of sorting data records
US5369762A (en) * 1990-06-28 1994-11-29 Wolf; William M. Method for sorting data in a computer at high speed by using data word values for address locations
US5530855A (en) * 1992-10-13 1996-06-25 International Business Machines Corporation Replicating a database by the sequential application of hierarchically sorted log records

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012018510A (ja) * 2010-07-07 2012-01-26 Mitsubishi Electric Corp 文書処理装置、文書処理方法、文書処理プログラム、及び文書処理プログラムを記録したコンピュータ読み取り可能な記録媒体

Also Published As

Publication number Publication date
US5659733A (en) 1997-08-19
JP3515810B2 (ja) 2004-04-05

Similar Documents

Publication Publication Date Title
US8418053B2 (en) Division program, combination program and information processing method
CN101751406B (zh) 一种实现基于列存储的关系型数据库的方法及装置
US5117495A (en) Method of sorting data records
CN107038206A (zh) Lsm树的建立方法、lsm树的数据读取方法和服务器
JPH02178730A (ja) 分割法を用いた内部ソート方式
JP3515810B2 (ja) ソート処理方法および装置
US20020065793A1 (en) Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes
JP3251138B2 (ja) ハッシュ方式
JP2008065716A (ja) データ管理装置、データ管理方法及びデータ管理プログラム
WO2011099114A1 (ja) ハイブリッド型データベースシステム及びその動作方法
US7130857B2 (en) Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program
JP2001331353A (ja) データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体
JP5626561B2 (ja) 情報処理システム及びそのデータ管理方法
JP2923952B2 (ja) マージ処理方法
JP5354606B2 (ja) データ蓄積装置及び方法及びプログラム及びデータ検索装置及び方法及びプログラム
JP3293544B2 (ja) 補助記憶装置を用いたソート方式
JPH0752450B2 (ja) 辞書デ−タ検索装置
JP2604787B2 (ja) 二次元データ格納方式
JPS6266326A (ja) 日本語デ−タ整列処理方式
JPH0934899A (ja) 検索経路出力方法及び装置
JP3293551B2 (ja) ソート処理方法
JPH0291725A (ja) 併合処理方式
JP2012103936A (ja) ログ出力装置及びその出力ログの並べ替え方法
JPH0145648B2 (ja)
JPH0689160A (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: 20040113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040119

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080123

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090123

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100123

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110123

Year of fee payment: 7

LAPS Cancellation because of no payment of annual fees