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

マージ処理方法

Info

Publication number
JPH0275018A
JPH0275018A JP22790888A JP22790888A JPH0275018A JP H0275018 A JPH0275018 A JP H0275018A JP 22790888 A JP22790888 A JP 22790888A JP 22790888 A JP22790888 A JP 22790888A JP H0275018 A JPH0275018 A JP H0275018A
Authority
JP
Japan
Prior art keywords
records
block
buffer
order
key
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
JP22790888A
Other languages
English (en)
Other versions
JP2923952B2 (ja
Inventor
Yoshikazu Masamura
政村 佳計
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)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

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

Claims (1)

  1. 【特許請求の範囲】 データのレコードを、該レコードごとに定まるキーの値
    の所定の強さに従うキー順に配列するために、該キー順
    に配列した所定数の該レコードからなるブロックを、ス
    トリングごとに1以上の該ブロックにわたって該レコー
    ドの該キー順が維持されるようにして、1以上の該スト
    リングを順次生成するソート処理の結果を入力としてマ
    ージ処理を行うに際し、 所要個数のバッファを設け、 該バッファに読み込んでない該ブロックがある限り、前
    記ストリングの個数より少なくない個数の該バッファに
    、該ブロックの該レコードが保持されているように、 空きの該バッファ及びすべての該レコードをマージ結果
    として出力した該バッファごとに、該ブロックごとの該
    レコードのキーのうちの最強のキーが強い順に、該ブロ
    ックを当該バッファに順次読み込み(20、23〜26
    )、 該レコードを保持するすべての該バッファから、該レコ
    ードを該キー順に取り出して該マージ結果とする(21
    、22)ように構成されていることを特徴とするマージ
    処理方法。
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 true JPH0275018A (ja) 1990-03-14
JP2923952B2 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)

Cited By (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 マージデータ送信制御方式
US5335500A (en) * 1992-03-27 1994-08-09 Mercedes-Benz Ag Internal combustion engine with combined pressure charging

Citations (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 ソ−ト入出力バツフア管理方式

Patent Citations (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 ソ−ト入出力バツフア管理方式

Cited By (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 マージデータ送信制御方式
US5335500A (en) * 1992-03-27 1994-08-09 Mercedes-Benz Ag Internal combustion engine with combined pressure charging

Also Published As

Publication number Publication date
JP2923952B2 (ja) 1999-07-26

Similar Documents

Publication Publication Date Title
EP0066061A2 (en) Relational algebra engine
O'Neil et al. Bitmap index design choices and their performance implications
JPH02178730A (ja) 分割法を用いた内部ソート方式
JP3515810B2 (ja) ソート処理方法および装置
JPH0275018A (ja) マージ処理方法
JPS6142031A (ja) ソ−ト処理装置
Leu et al. An efficient external sorting algorithm
WO2011099114A1 (ja) ハイブリッド型データベースシステム及びその動作方法
JPH0581337A (ja) データ処理装置
JPH0782429B2 (ja) 複数ファイルのマージ方法
JPH03202934A (ja) データ処理装置
Lin Sorting with associative secondary storage devices
JPS6266326A (ja) 日本語デ−タ整列処理方式
EP3940571A1 (en) Data substitution device, data substitution method, and program
JP2926803B2 (ja) ソート処理方法
JPS62121532A (ja) デ−タ検索方法
JPH0580977A (ja) データ処理装置
JPH0581339A (ja) データ処理装置
JP3785766B2 (ja) マージ処理装置
JP2002297897A (ja) データ格納方法及びデータ格納プログラム
JP2895892B2 (ja) データ処理装置
JP2989962B2 (ja) ベクトル処理装置
JPH02257284A (ja) データ処理装置
JPS62186328A (ja) ソ−ト処理方式
JPS60128529A (ja) マ−ジ処理器

Legal Events

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