JP2923952B2 - マージ処理方法 - Google Patents

マージ処理方法

Info

Publication number
JP2923952B2
JP2923952B2 JP63227908A JP22790888A JP2923952B2 JP 2923952 B2 JP2923952 B2 JP 2923952B2 JP 63227908 A JP63227908 A JP 63227908A JP 22790888 A JP22790888 A JP 22790888A JP 2923952 B2 JP2923952 B2 JP 2923952B2
Authority
JP
Japan
Prior art keywords
block
record
key
records
processing
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
JP63227908A
Other languages
English (en)
Other versions
JPH0275018A (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 JP63227908A priority Critical patent/JP2923952B2/ja
Publication of JPH0275018A publication Critical patent/JPH0275018A/ja
Application granted granted Critical
Publication of JP2923952B2 publication Critical patent/JP2923952B2/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

【発明の詳細な説明】 〔概 要〕 計算機における、データのソートマージ処理に関し、 マージ処理の処理効率を改善するマージ処理方法を目
的とし、 データのレコードを、該レコードごとに定まるキーの
値の所定の強さに従うキー順に配列するために、該キー
順に配列した所定数の該レコードからなるブロックを、
ストリングごとに1以上の該ブロックにわたって該レコ
ードの該キー順が維持されるようにして、1以上の該ス
トリングを順次生成するソート処理の結果を入力として
マージ処理を行うに際し、所要個数のバッファを設け、
該バッファを読み込んでない該ブロックがある限り、前
記ストリングの個数より少なくない個数の該バッファ
に、該ブロックの該レコードが保持されているように、
空きの該バッファ及びすべての該レコードをマージ結果
として出力した該バッファごとに、該ブロックごとの該
レコードのキーのうちの最強のキーが強い順に、該ブロ
ックを当該バッファに順次読み込み、該レコードを保持
するすべての該バッファから、該レコードを該キー順に
取り出して該マージ結果とするように構成する。
〔産業上の利用分野〕
本発明は、計算機のデータのソートマージ処理におけ
る、マージ処理方法に関する。
〔従来の技術〕
データの複数のレコードを、各レコードに定まるキー
の値の大小順等の所要のキー順に従って並べ換えるため
の処理は、よく知られているように、レコードをキー順
に配列した複数のグループに分類するソート処理と、そ
れらのグループのレコードをキー順に混ぜ合わせて、1
本のキー順配列にするマージ処理によって構成される。
例えばソート処理では、主記憶上に設けたバッファ
に、磁気ディスク記憶装置等の外部記憶装置に格納され
ているデータのブロックを読み込み、そのブロックから
適当数のレコードを作業域に転送して、それらのレコー
ドの中で最も強いキー(所要のイー順で優先されるキ
ー、例えば小さい順に配列する場合にはより小さいキ
ー)の順にレコードを取り出して順に配列し、一定個数
のレコードでブロックを構成して、外部記憶装置の作業
ファイルに書き出す。
作業域から1つのレコードを取り出すと、その場所に
バッファから次のレコードを転送して、再び前記のよう
に処理するが、その際後のレコードのキーが直前に取り
出したレコードのキーより強かった場合には、後のレコ
ードの保留状態として以後の処理対から外す。従ってこ
のようにして処理を続けると、一般に全レコードがソー
トされてソート処理が終了するか、又は作業域の全レコ
ードが保留状態になって処理が中断する。
そこで後者の場合には、それまでソートされたレコー
ドのブロックの列を1ストリングとして、改めてストリ
ングの処理を開始する。即ち作業域の全レコードの保留
状態を解除して、前記のように強いキーのレコードから
順に取り出して、前と同様に全レコードが保留状態とな
るまで第2のストリングを形成し、このようにして1又
は複数のストリングを生成してソート処理を完了し、ソ
ート結果のブロックには各ブロックの最強のキー(即ち
各ブロックの先頭のレコードのキー)の値によるインデ
ックスが作成される。
以上の処理方法により、生成された各ストリングで
は、全ブロックを通じて全レコードがキー順に配列され
ている(他方、異なるストリングのブロックをインデッ
クス順に並べても、その中のレコードは必ずしもキー順
にならない)。
マージ処理は第4図に示すよう、計算機のマージ処理
部1が前記ソート処理結果の作業ファイル2とソート処
理で作成した各ブロックのインデックスからなるインデ
ックス3を受け取って以下のように処理を行う。
マージ処理部1はバッファ4と適当な大きさのレコー
ド格納領域5を設け、例えば第5図の処理の流れに従
い、処理ステップ10でインデックス3に従って強いキー
の順に1ブロックをバッファ4に読み込み、処理ステッ
プ11でバッファ4内のレコードとレコード格納領域5の
レコード(最初は空)をキー順にマージする。
次に処理ステップ12で、マージしたレコードから次の
インデックスより強いキーのレコードを出力バッファ6
に取り出し、1ブロックになればマージ結果として出力
ファイル7に書き出す。
処理ステップ13で識別して、未処理データが無けれ
ば、マージ処理を終了し、そうでなけば処理ステップ14
に進んで、出力されずにバッファに残ったレコードを、
すべてレコード格納領域5に移してバッファを空けるた
めに、レコード格納領域5に空き領域があるか識別す
る。
空き領域があれば、処理ステップ15でバッファ4に残
るレコードをレコード格納領域5に転送して追加した
後、処理ステップ10に戻って次のインデックス順のブロ
ックをバッファを読み込み、このような処理を繰り返し
て、出力バッファにマージ処理結果を得る。
レコード格納領域5の空き領域が不足した場合には処
理ステップ16に進み、レコード格納領域5内のレコード
を作業ファイルにい書き戻してレコード格納領域5を空
けた後、前記処理ステップ15に進む。このようにして書
き戻したレコードのブロックには前記と同様の最強のキ
ー値をインデックスとしてインデックス3に追加し、以
後他のソート結果のブロックと同様に扱って処理する。
〔発明が解決しようとする課題〕
前記のマージ処理によれば、処理ステップ11における
バッファとレコード格納領域のレコードのマージのため
に、レコードをチェインし、レコードを取り出した後に
バッファを空けるために、処理ステップ15でレコード格
納領域へレコードの転送を要し、又はレコード格納領域
が不足した場合には処理ステップ16の作業ファイルへの
ブロックの書き戻し処理を要する等、レコード処理の管
理が複雑になって処理効率が上がらないという問題があ
る。
本発明は、マージ処理の処理効率を改善するマージ処
理方法を目的とする。
〔課題を解決するための手段〕
第1図は、本発明の構成を示す処理の流れ図である。
図はマージ処理の処理の流れを示し、20〜26は処理ス
テップである。
〔作 用〕
データのレコードを、レコードごとに定まるキーの値
の所定の強さの順によるキー順に配列するために、ソー
ト処理によってキー順に配列した所定数のレコードから
なるブロックを、ストリングごとに1以上のブロックに
たって全レコードのキー順が維持されるようにして、1
以上のストリングを順次生成し、その結果を入力してマ
ージ処理を行う。
マージ処理では、先ず処理ステップ20では、ブロック
ごとのレコードのキーのうちの最強のキーが強い順に、
ブロックを所要数の全バッファに順次読み込む。
処理ステップ23〜25において、読み込んだブロックの
すべてのレコードをマージ結果として出力したバッファ
ごとに、前記の読み込み順位の次のブロックを読み込ん
で、バッファに読み込んでないブロックがある限り、前
記ストリングの個数より少なくない個数のバッファに出
力されていないレコードがあるようにしておいて、処理
ステップ21、22により、すべてのバッファから、レコー
ドをキー順に取り出してマージ結果とする。
以上の処理方法によれば、バッファに読み込んだレコ
ードが出力されて空きになり、そのバッファ上へ次に読
み込まれる順位のブロックには、それ以前にマージ処理
済の何れのレコードのキーよりも強いキーが無いこと、
即ちそのバッファに直前にあったブロックの最も弱いキ
ーより強いキーが無いことが必要であるが、この条件は
バッファの個数を、ソート処理の結果のストリング個数
より少なくならないようにすることによって満足され
る。
この処理方法により、マージ処理のためのレコード管
理が単純になって、作業ファイルへのレコード書き戻し
も不要となり、マージ処理の処理効率を向上することが
できる。
〔実施例〕
マージ処理は第2図に示すよう、計算機のマージ処理
部30がソート処理結果の作業ファイル2とインデックス
3を受け取り、又生成したストリングの個数の通知を受
けとって、以下のように処理を行う。
マージ処理部30は少なくともストリングの個数n個の
バッファ31−1〜31−nを設け、第1図の処理の流れに
従い、処理ステップ20でインデックス3に従って強いキ
ーの順にnブロックをバッファ31−1〜31−nに読み込
み、各バッファ31−1〜31−nに対して設けるポインタ
をそれぞれ先頭のレコード(即ち、各ブロック内の最強
キーのレコード)に合わせる。
処理ステップ21で、各バッファ31−1〜31−nのポイ
ンタが指すレコードのキーを比較し、例えば公知のトー
ナメント法で最強のキーのバッファを決定すると、処理
ステップ22でそのバッファのポインタが指すレコードを
出力バッファ6に取り出し、ポインタを次のレコードに
移す。
処理ステップ23で、上記処理の結果全レコードを取り
出して、そのバッファが空きになったか識別し、未処理
のレコードがある場合には処理ステップ21に戻り、前記
の処理を繰り返す。又、バッファが空きになったとき
は、処理ステップ24で作業ファイル2にデータのブロッ
クが残っているかを識別する。
未処理のブロックがある場合には、処理ステップ25に
より、次に強いインデックスのブロックをインデックス
3で決定して作業ファイル2から、空きになったバッフ
ァ31−1、31−2、……又は31−nに読み込んで、その
ポインタを先頭のレコードに戻し、処理ステップ21へ戻
る。
作業ファイル2に未処理ブロックが無い場合には、処
理ステップ26で識別して、全レコードの処理を終わった
場合はマージ処理終了とし、バッファに未処理レコード
が残っている場合には処理ステップ21に戻り、バッファ
31−1〜31−nのレコードの残っているものについて前
記の処理を行う。
以上において、バッファ31−1〜31−nの個数は前記
のとおりストリングの個数より少なくないようにし、通
常はストリング個数に等しくする。
バッファの個数が問題になるのは、バッファに読み込
んだレコードが出力されて空きになったとき、そのバッ
ファへ次に読み込まれる順位のブロックには、そのバッ
ファに直前にあったブロックの最も弱いキーより強いキ
ーが無いという条件を満足するためであり、ストリング
個数のバッファを設けることによりこの条件が満足され
る理由は次のとおりである。
即ち、例えば第3図(a)に示すように、4個のスト
リング(S1〜S4とする)が生成され、図に長方形で示す
ブロックが各ストリングにあるとし、各ブロックに、
等でしめす順にインデックスが強いとする。
このときバッファを4個設けて、インデックスの順に
〜のブロックを読み込んで処理した結果、何れかの
バッファが空きになりのブロックがそこへ読み込まれ
る場合を考える。
前記ソート処理の方法から明らかなように、〜の
ブロックの各先頭レコードはこの順に強いキーであり、
各ブロックにおいて末尾のレコードのキー(図のREC1〜
REC4)はそれぞれ最高も弱いキーであるが、他のストリ
ングのブロックとの間での強弱は決まらないので、何れ
のブロックを読み込んでバッファが先に空くかは言えな
い。
そこで、ブロックのバッファが最初に空きになった
とすると、この場合には前記のストリングの生成過程か
ら明らかなように、同じストリングの次の順位のブロッ
クであるブロックの先頭のレコードのキー(図のREC
5)は、前位のブロックであるブロックの末尾のキーR
EC1より弱く、従って前記条件を満足する。
又他のストリングのブロックのバッファが最初に空き
になる場合の例として、バッファが最初に空いたとす
ると、これはREC2がREC1より強いということを示し、他
方前記のとおりREC1はREC5より強いので、従ってREC2は
REC5より強く、前記条件を満足する。
この例の場合に、例えばバッファを3個にすると、ブ
ロック〜が最初に読み込まれて処理され、次に読み
込まれるのはブロックになる。ブロックの先頭のキ
ーが、ブロック〜の末尾のキーREC1〜REC3より常に
弱いということは、ソート処理過程から言うことができ
ず、前記条件を満足できない場合が生じ得る。
又、第3図(b)のようにストリングS1に強いインデ
ックスのブロックが2個連続していたとすると、この場
合に4個のバッファには最初にストリングS4のブロック
は読み込まれない。このときストリングS1でブロック
にが続いていることから、ブロックの末尾のキー
(REC1)はブロックの先頭のキー(即ちインデック
ス)より強い。
従ってブロックよりインデックスの弱いブロック
、の先頭のキー(インデックス)より強いので、ブ
ロックのバッファが最初に空きになることは明らかで
あり、そのバッファに読み込まれるブロックの先頭の
キーもREC1より弱く、前記条件を満足できる。
この場合にはバッファを3個にしても、ブロックの
後にブロックが読み込まれるので、前記と同様の理由
で条件を満足するが、次にブロックが読み込まれる場
合において、ブロックの先頭のキーと、ブロック、
又はの末尾のキーとの強弱関係を保証できなくな
る。
〔発明の効果〕
以上の説明から明らかなように本発明によれば、計算
機におけるデータのソートマージ処理において、マージ
処理のためのレコード管理が単純になって、作業ファイ
ルへのレコード書き戻しも不要となり、処理効率を改善
するという著しい工業的効果がある。
【図面の簡単な説明】
第1図は本発明の構成を示す処理の流れ図、 第2図は本発明の構成例を示すブロック図、 第3図はストリングの構成例の説明図、 第4図は従来の構成例を示すブロック図、 第5図は従来の処理の流れ図である。 図において、 1、30はマージ処理部、2は作業ファイル、 3はインデックス、4、31−1〜31−nはバッファ、 5はレコード格納領域、6は出力バッファ、 7は出力ファイル、 10〜16、20〜26は処理ステップを示す。

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】指定キー項目の大小関係により複数レコー
    ドをソート処理した結果得られた複数のストリングを単
    一ストリング化するマージ処理方法であって、 補助記憶装置の読み書きの単位であるブロックに分割さ
    れて補助記憶装置上に書かれた前記複数のストリング
    と、各ストリングのレコードを記憶した各ブロックの最
    強キーを持つ先頭レコードのインデックスと、前記複数
    のストリング数とを入力情報として、 指定キーで順序付けられた全ストリングのブロックに対
    する前記インデックスに従って、補助記憶装置上のスト
    リング・ブロックを、少なくとも前記ストリング数だけ
    設けられた主記憶装置上の複数の空バッファに順次読み
    込み、読み込まれたバッファ間のレコードキーを比較
    し、指定の大小関係に従って当該レコードを出力バッフ
    ァ経由で補助記憶装置に書き出すことを特徴とするマー
    ジ処理方法。
JP63227908A 1988-09-12 1988-09-12 マージ処理方法 Expired - Fee Related JP2923952B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP63227908A JP2923952B2 (ja) 1988-09-12 1988-09-12 マージ処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP63227908A JP2923952B2 (ja) 1988-09-12 1988-09-12 マージ処理方法

Publications (2)

Publication Number Publication Date
JPH0275018A JPH0275018A (ja) 1990-03-14
JP2923952B2 true JP2923952B2 (ja) 1999-07-26

Family

ID=16868185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63227908A Expired - Fee Related JP2923952B2 (ja) 1988-09-12 1988-09-12 マージ処理方法

Country Status (1)

Country Link
JP (1) JP2923952B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH02254536A (ja) * 1989-03-29 1990-10-15 Mitsubishi Electric Corp マージデータ送信制御方式
DE4210070C2 (de) * 1992-03-27 1996-10-17 Daimler Benz Ag Brennkraftmaschine mit kombinierter Aufladung

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS54107641A (en) * 1978-02-10 1979-08-23 Fujitsu Ltd Data processor
JPS61275935A (ja) * 1985-05-31 1986-12-06 Toshiba Corp マ−ジシステム
JPS62179026A (ja) * 1986-01-31 1987-08-06 Nec Corp ソ−トブロツク先読み方式
JPS6381526A (ja) * 1986-09-25 1988-04-12 Nec Corp ソ−ト入出力バツフア管理方式

Also Published As

Publication number Publication date
JPH0275018A (ja) 1990-03-14

Similar Documents

Publication Publication Date Title
JPH02178730A (ja) 分割法を用いた内部ソート方式
JP3515810B2 (ja) ソート処理方法および装置
JP2923952B2 (ja) マージ処理方法
JPH0581337A (ja) データ処理装置
JPS6172333A (ja) 複数ファイルのマージ方法
US6173281B1 (en) Method and computer program product for processing and combining data sets including bitmaps
JPS59121436A (ja) デ−タ群のソ−ト方法
JP2636806B2 (ja) インデックス更新方式
JP2586610B2 (ja) ファイル作成方式
JP2615046B2 (ja) レコード追加処理方法
JPS62121532A (ja) デ−タ検索方法
JP2926803B2 (ja) ソート処理方法
JPS62287350A (ja) インデツクス一括更新方式
JP3785766B2 (ja) マージ処理装置
JPH0291725A (ja) 併合処理方式
JPH0145648B2 (ja)
JPH0580977A (ja) データ処理装置
JPH0664587B2 (ja) 検索処理装置における検索条件判定方法
JPS6266326A (ja) 日本語デ−タ整列処理方式
JPH0581339A (ja) データ処理装置
JPH06103459B2 (ja) ソート処理方法および装置
JPS63253431A (ja) インバ−テツド構造のデ−タベ−ス検索方式
JPH01147720A (ja) 分類処理方式
JPH0581338A (ja) データ処理装置
JPH02257284A (ja) データ処理装置

Legal Events

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