JP3774324B2 - ソート処理システムおよびソート処理の方法 - Google Patents

ソート処理システムおよびソート処理の方法 Download PDF

Info

Publication number
JP3774324B2
JP3774324B2 JP21925398A JP21925398A JP3774324B2 JP 3774324 B2 JP3774324 B2 JP 3774324B2 JP 21925398 A JP21925398 A JP 21925398A JP 21925398 A JP21925398 A JP 21925398A JP 3774324 B2 JP3774324 B2 JP 3774324B2
Authority
JP
Japan
Prior art keywords
sort
node
storage device
external storage
nodes
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
JP21925398A
Other languages
English (en)
Other versions
JP2000056947A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP21925398A priority Critical patent/JP3774324B2/ja
Priority to EP99114942A priority patent/EP0978782B1/en
Priority to DE69913050T priority patent/DE69913050T2/de
Priority to US09/366,320 priority patent/US6424970B1/en
Publication of JP2000056947A publication Critical patent/JP2000056947A/ja
Application granted granted Critical
Publication of JP3774324B2 publication Critical patent/JP3774324B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99937Sorting

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)
  • Multi Processors (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、コンピュータシステムによって行うソート処理に関し、特に、複数のコンピュータを利用したソート処理に関する。
【0002】
【従来の技術】
コンピュータシステムによって行う情報処理のうち基本的な処理の1つにソート処理がある。最も一般的なソート処理とは、1つまたは複数のキーを含む複数のレコードを、前記キーに基づいてある順序(例えば、昇順または降順)に並べ替える処理である。
【0003】
比較的少量の入力データ(レコードの集合)についてソート処理を行う場合、コンピュータは与えられた入力データを全てコンピュータ内のメモリ上のバッファに読み込み、各レコードのキーを参照、比較し、各レコードを並べ替えることで、ソートした結果を得る。このような、コンピュータ内のメモリ上のバッファのみをデータの格納場所とするソート処理を内部ソートと呼ぶ。
【0004】
これに対し、バッファの容量に比べて大量の入力データについてソート処理を行う場合は、入力データをバッファに全て読み込むことができないため、コンピュータは入力データを分割してその一部をバッファに読み込み、バッファに読み込んだ分について内部ソートを行い、バッファに読み込んだデータについてのソート結果(以下、ソート列と呼ぶ)を生成し、当該ソート列を外部記憶装置に格納する。以上のような入力データの読み込み、内部ソート、及びソート列の格納を、入力データの分割数分だけ行う。その結果、外部記憶装置には前記分割数分の、個々にはソート済みのソート列が格納されることになる。
【0005】
次いで、コンピュータは、複数のソート列全てについて、その一部分ずつを外部記憶装置からバッファに読み込み、バッファに読み込まれたレコードのキーを相互に比較することで、全ソート列の各一部分について総合してソートした結果を得る。このような全ソート列の各一部分についての処理を、各ソート列の先頭から終わりまで行うことによって、入力データ全体に対する最終的なソート結果が得られる。このような各ソート列から最終的なソート結果を得る処理をマージと呼ぶ。また、上述したような、コンピュータ内のバッファに加え、外部記憶装置をデータの格納場所とするソート処理を外部ソートと呼ぶ。なお、外部記憶装置としては、例えば、磁気ディスクや磁気テープなどが利用される。
【0006】
一方、コンピュータシステムによって行う情報処理の高速化手法の1つに処理の並列化がある。並列化とは、情報処理に必要な資源を複数用意して、同時に複数の処理を行うことで、処理時間の削減を図ろうとするものである。ソート処理に並列化を適用した場合の例として、特開平8−272545号公報には、外部ソートにおける外部記憶装置として複数の磁気ディスクからなるディスクアレイを用い、ディスクアレイ上のデータの格納場所を工夫して処理の並列性を向上させる技術が開示されている。
【0007】
また、ソート処理に並列化を適用する別の形態として、複数のコンピュータをネットワークで相互接続して1つのコンピュータシステムとし、そのような複数のコンピュータで並列に、大量の入力データのソート処理を行うことも考えられる。すなわち、複数のコンピュータのうちの一部または全てのコンピュータ(以下、入力ノードと呼ぶ)に入力データを分配して割り当て、各入力ノードは、割り当てられた入力データについて外部ソートをそれぞれ行い、更に、各コンピュータのうちのあるコンピュータ(以下、出力ノードと呼ぶ)に各入力ノードにおける外部ソートの結果をネットワーク経由で転送し、出力ノードにおいては、各入力ノードから送られてくる、各入力ノードにおけるソート結果をそれぞれ外部ソート時のソート列と同様に扱って、マージを行うことで、出力ノードにおいて、入力データ全体に対するソート結果を得ることができる。
【0008】
【発明が解決しようとする課題】
しかしながら、このように、ソート処理を、複数のコンピュータからなるコンピュータシステムで並列に行う場合、入力ノードと出力ノードの両方でマージ処理を行う必要があるため、ソート処理に要する時間には、入力ノードにおけるマージ処理の時間が加わっていた。また、入力ノードにおけるマージ処理により、入力ノードで実行されうる他の処理が遅延したり、阻害される可能性もあった。
【0009】
更に、入力ノードにおける外部ソートの結果を、出力ノードへネットワーク経由で転送するようにすると、コンピュータの相互接続に用いるネットワークがあまり高速でない場合は、その転送時間が問題となりうる。例えば、ネットワークとして100Base−T等の100Mビット/秒のLANを用いた場合は、データ転送速度は、毎秒12.5Mバイト以下程度となり、パーソナル・コンピュータ(PC)やワークステーションで一般的に用いられるI/O規格であるウルトラワイドSCSIの毎秒40Mバイト以下程度と比べて転送時間が約3倍かかることになる。このため、複数のコンピュータがあまり高速でないネットワークで相互接続されている場合は、上記のようなソート処理についての処理時間のうち、データ転送時間が占める割合は大きなものとなり得る。
【0010】
本発明の目的は、複数のコンピュータによってソート処理を並列に行う際に、ソート処理に要する処理時間を削減して高速なソート処理を実現できるソート処理システムおよびソート処理方法を提供することである。
【0011】
【課題を解決するための手段】
本発明に係る第1のソート処理システムは、複数の入力ノードと、一つの出力ノードと、前記各入力ノードと前記出力ノードとの間に共用外部記憶装置とを備えることを特徴とする。そして、前記入力ノードは、それぞれ、第一のバッファと、該第一のバッファにソート対象データを読み込む手段と、前記第一のバッファ内のデータに対して、所定のソート規則に従い内部ソートを行う手段と、当該内部ソートの結果をソート列として前記共用外部記憶装置に格納する手段とを有することを特徴とする。また、前記出力ノードは、第二のバッファと、前記共用外部記憶装置に格納されたソート列を前記第二のバッファに読み込む手段と、前記第二のバッファに読み込んだ複数のソート列に対し前記ソート規則に基づきマージを行う手段と、当該マージの結果をソート結果として出力する手段とを有することを特徴とする。
【0012】
本発明に係る第2のソート処理システムは、複数の入力ノードと、複数の出力ノードと、前記各入力ノードと前記各出力ノードとの間に共用外部記憶装置とを備えたことを特徴とする。そして、前記入力ノードは、それぞれ、第一のバッファと、該第一のバッファにソート対象データを読み込む手段と、前記第一のバッファ内のデータに対し、所定のソート規則に従い内部ソートを行う手段と、前記第一のバッファ内のデータに対し、所定の分類規則に従った分類をする手段と、前記分類に基づいた内部ソートの結果を、ソート列として前記共用外部記憶装置に格納する手段とを有することを特徴とする。また、前記出力ノードは、それぞれ、第二のバッファと、前記共用外部記憶装置に格納されたソート列を第二のバッファに読み込む手段と、前記第二のバッファに読み込んだ複数のソート列に対し前記ソート規則に基づきマージを行う手段と、前記マージの結果をソート結果として出力する手段とを有することを特徴とする。
【0013】
前記第1及び第2のシステムにおいて、前記入力ノードは、前記出力ノードにマージ指示を通知する手段を更に有し、前記出力ノードは、当該マージ指示を受領する手段を更に有するようにしてもよい。
【0014】
本発明に係る第3のソート処理システムは、複数のノードと、該複数のノードの各ノードに対して設けられた専用外部記憶装置と、前記複数のノードの各ノード間に設けられた共用外部記憶装置と備えたことを特徴とする。そして、前記複数のノードの少なくとも一つのノードは、第一のバッファと、該第一のバッファにソート対象データを読み込む手段と、前記第一のバッファ内のデータに対し、所定のソート規則に従い内部ソートを行う手段と、当該内部ソートの結果をソート列として、前記専用外部記憶装置に格納する手段と、第二のバッファと、前記共用外部記憶装置および専用外部記憶装置に格納されたソート列を第二のバッファに読み込む手段と、前記第二のバッファに読み込んだ複数のソート列に対し前記ソート規則に基づきマージを行う手段と、当該マージの結果をソート結果として出力する手段とを有することを特徴とする。
【0015】
本発明に係る第4のソート処理システムは、複数のノードと、該複数のノードの各ノードに対して設けられた専用外部記憶装置と、前記複数のノードの各ノード間に設けられた共用外部記憶装置と備えたことを特徴とする。そして、前記複数のノードの少なくとも一つのノードは、第一のバッファと、該第一のバッファにソート対象データを読み込む手段と、前記第一のバッファ内のデータに対し、所定のソート規則に従い内部ソートを行う手段と、前記第一のバッファ内のデータに対し、所定の分配規則に従った分類を行う手段と、内部ソートの結果を、前記分類に基づいて、ソート列として前記専用外部記憶装置又は共用外部記憶装置に格納する手段と、第二のバッファと、前記専用外部記憶装置及び共用外部記憶装置に格納されたソート列を第二のバッファに読み込む手段と、前記第二のバッファに読み込んだ複数のソート列に対し前記ソート規則に基づきマージを行う手段と、当該マージの結果をソート結果として出力する手段とを有することを特徴とする。
【0016】
前記第3及び第4のソート処理システムにおいて、前記第一のバッファと前記第二のバッファは、同一のバッファであるようにしてもよい。また、前記複数のノードの少なくとも一つのノードは、他のノードにマージ指示を通知する手段と、他のノードからのマージ指示を受領する手段とを更に有してもよい。
【0017】
本発明に係る第1のソート処理の方法は、複数の入力ノードと、一つの出力ノードと、前記各入力ノードと前記出力ノードとの間に共用外部記憶装置とを備えたソート処理システムにおけるソート処理の方法である。そして、ソート対象データを、前記入力ノードに読み込んで、所定のソート規則に従い内部ソートを行い、当該内部ソート結果をソート列として前記共用外部記憶装置に格納し、前記共用外部記憶装置からソート列を、前記出力ノードに読み込み、前記ソート規則に基づきマージすることを特徴とする。
【0018】
本発明に係る第2のソート処理の方法は、複数の入力ノードと、複数の出力ノードと、前記各入力ノードと前記各出力ノードとの間に共用外部記憶装置とを備えたソート処理システムにおけるソート処理の方法である。そして、ソート対象データを、前記各入力ノードに読み込み、当該読み込んだソート対象データについて、所定のソート規則と所定の分配規則に基づいて、内部ソート及び分類を行い、当該結果を、各出力ノードと共用している共用外部記憶装置に前記分類に従ってソート列として分配格納し、前記読み込みから分配格納までの処理を、すべてのソート対象データについて行い、その後、各出力ノードに、各入力ノードと共用している共用外部記憶装置からソート列を読み込んで、前記ソート規則に基づきマージすることを特徴とする。
【0019】
本発明に係る第3のソート処理の方法は、複数のノードと、該複数のノードの各ノードに対して設けられた専用外部記憶装置と、前記複数のノードの各ノード間に設けられた共用外部記憶装置と備えたソート処理システムにおけるソート処理の方法である。そして、各ノードに分配されたソート対象データを、各ノードに読み込み、所定のソート規則に従った内部ソートを行い、当該内部ソート結果を、ソート列として前記専用外部記憶装置又は前記共用外部記憶装置に格納し、前記内部ソート及びソート列の格納を、ソート対象データのすべてについて行い、その後、前記複数のノードのうちの一つのノードにおいて、前記専用外部記憶装置及び共用外部記憶装置から、各ソート列を読み込んで、前記ソート規則に基づきマージすることを特徴とする。
【0020】
本発明に係る第4のソート処理の方法は、複数のノードと、該複数のノードの各ノードに対して設けられた専用外部記憶装置と、前記複数のノードの各ノード間に設けられた共用外部記憶装置と備えたソート処理システムにおけるソート処理の方法である。そして、ソート対象データを、前記複数のノードのうちの少なくとも一部のノードに、読み込み、当該読み込まれたソート対象データについて、所定のソート規則及び所定の分配規則に基づいて、内部ソート及び分類を行い、当該結果を、前記分類に基づいて、専用外部記憶装置又は共用外部記憶装置に、ソート列として分配格納し、前記読み込みから分配格納までの処理を、ソート対象データすべてについて行い、その後、前記複数のノードのうちの少なくとも一部のノードにおいて、専用外部記憶装置及び共用外部記憶装置からソート列を、読み込んで、前記ソート規則に基づきマージすることを特徴とする。
【0021】
前記第3および第4の方法において、少なくとも一つのノードは、前記ソート対象データの読み込みと、前記ソート列の読み込みに同一のバッファを使用するようにしてもよい。
【0022】
なお、前記入力ノード、出力ノード、及びノードには、例えば、通常のコンピュータが該当する。また、前記専用外部記憶装置及び共用外部記憶装置には、例えば、磁気ディスク装置が該当する。また、前記第一のバッファおよび前記第二のバッファ並びにバッファとしては、例えば、各コンピュータの主記憶の一部が利用される。
【0023】
【発明の実施の形態】
以下、本発明の実施の形態について、図面を参照しつつ、詳細に説明する。
【0024】
≪第一実施形態≫
図1は、本発明による第1のソート処理システムのブロック図である。同図に示すように、本システムは、入力ノード100と、入力ローカルディスク200と、出力ノード300と、出力ローカルディスク400と、共用ディスク500とからなる。入力ノード100および出力ノード300は、通常のコンピュータ、例えば、PCやワークステーションである。また、入力ローカルディスク200、出力ローカルディスク400、および共用ディスク500は、通常の外部記憶装置、例えば、磁気ディスク装置である。
【0025】
本システムでは、入力ノード100は、複数台存在し、出力ノード300は1台存在する。共用ディスク500は、各入力ノード100と出力ノード300の間に1台ずつ存在する。すなわち、共用ディスク500は、入力ノード100と同じ数存在する。
【0026】
入力ノード100は、入力ノードCPU101と、入力管理情報整合手段102と、データ読み込み手段103と、内部ソート手段104と、共用ディスク・ライト手段105と、マージ指示手段106と、内部ソートバッファ110と、IOバス・インタフェース(I/F)600と、ネットワーク・インタフェース(I/F)700とを有する。入力ローカルディスク200は、IOバス610によって、入力ノード100のIOバスI/F600と接続されている。
【0027】
ここで、入力管理情報整合手段102、データ読み込み手段103、内部ソート手段104、共用ディスク・ライト手段105、及びマージ指示手段106は、例えば、入力ノードCPU101が、不図示のメモリに記憶されたソフトウェアを実行することによって実現される。また、内部ソートバッファ110は、例えば、入力ノード100において入力ノードCPU101がソフトウェアを実行するために使用するメモリの一部を利用したり、専用のメモリを用意することで実現される。
【0028】
出力ノード300は、出力ノードCPU301と、出力管理情報整合手段302と、マージ指示受領手段303と、共用ディスク・リード手段304と、マージ手段305と、ソート結果出力手段306と、マージバッファ310と、IOバスI/F600と、ネットワークI/F700とを有する。出力ローカルディスク400は、IOバス610によって、出力ノード300のIOバスI/F600と接続されている。
【0029】
ここで、出力管理情報整合手段302、マージ指示受領手段303、共用ディスク・リード手段304、マージ手段305、及びソート結果出力手段306は、例えば、出力ノードCPU301が、不図示のメモリに記憶されたソフトウェアを実行することで実現される。また、マージバッファ310は、例えば、出力ノード300において出力ノードCPU301がソフトウェアを実行するために使用するメモリの一部を利用したり、専用のメモリを用意することで実現される。
【0030】
複数台の入力ノード100と1台の出力ノード300のそれぞれは、ネットワークI/F700を介して、ネットワーク710に接続されている。また、共用ディスク500は、各入力ノード100と出力ノード300の双方のIOバスI/F600にIOバス610によって接続される。
【0031】
本システムでは、ソート処理の対象となるデータ(ソート対象データ)は、複数の入力ノード100に分配して割り当てられ、各入力ノード100の入力ローカルディスク200に格納される。なお、各入力ローカルディスク200に格納されているソート対象データの量は、各入力ノード100の内部ソートバッファ110の容量より大きいとする。また、ソート対象データは、ソート処理に用いる1つまたは複数のキーを含むレコードの集合である。また、本システムでは、ソート処理の最終的な結果は、出力ノード300の出力ローカルディスク400に格納される。
【0032】
次に、本システムがソート処理を行う場合の処理について説明する。
【0033】
まず、本システムにおけるソート処理の概要について説明し、各処理の詳細については後述する。図2は、本システムにおけるソート処理の概要を示す図である。まず、ユーザ等から本ソート処理システムに対してソート処理開始が指示されると、実際のソート処理に先立ち、入力ノード100と出力ノード300は、ソート処理に必要な管理情報の生成と整合を行う(S1010)。
【0034】
次に、各入力ノード100は、それぞれ、各入力ローカルディスク200に格納されているソート対象データを分割しつつ、内部ソートバッファ110に読み込む(S1020)。そして、読み込んだデータに対し内部ソートを行ってソート結果(ソート列)を生成し(S1030)、得られたソート列を共用ディスク500に格納する(S1040)。そして、自分に割り当てられたソート対象データを全て処理・格納したか否かを判断する(S1050)。その結果、未処理のデータがある場合は、各入力ノード100は、それぞれ、上記処理S1020〜S1040を繰り返す。そして、自分に割り当てられたソート対象データすべてについて処理が終了すると、各入力ノード100は、出力ノード300にマージを指示する(S1060)。
【0035】
出力ノード300は、全ての入力ノード100からマージ指示を受領すると(S1070)、共用ディスク500にそれぞれ格納されているソート列について、複数のソート列の各々一部分ずつをマージバッファ310へ読み込む(S1080)。そして、マージバッファ310に読み込んだレコードについて、キーを比較し、マージバッファ310に読み込まれたレコードについて総合してソートした結果を得て(S1090)、その結果を出力ローカルディスク400に格納していく(S1100)。そして、各出力ノード300は、共用ディスク500に格納されているソート列の全データについて、処理を終了したか否かを判断し(S1110)、未処理のデータがある場合は、上記の処理S1080〜S1100を繰り返す。以上のような入力ノード100および出力ノード300の処理によって、複数の入力ローカルディスク200に分かれて格納されていたソート対象データ全体についてのソート処理結果が得られる。
【0036】
以下、上記各処理について詳細に説明する。
【0037】
まず、管理情報整合処理について説明する。管理情報整合処理は、実際のソート処理に先立ち、ソート処理に必要な管理情報の生成と整合を行う処理である。
【0038】
各入力ノード100の入力管理情報整合手段102と出力ノード300の出力管理情報整合手段302は、ユーザ等によって予め設定された情報、および入力管理情報整合手段102と出力管理情報整合手段302がネットワーク710を介してやり取りした情報を用いて、ソート処理に必要な情報を、それぞれ生成、整合し、保持する。ソート処理に必要な情報としては、ソート処理システムのシステム構成に関するデータを格納するシステム構成情報テーブルや、ソート対象となるレコードに関する情報を格納するレコード情報テーブル等がある。
【0039】
図3は、システム構成情報テーブルの例を示す図である。同図において、「ノード名」は、各ノードに与えられた名前を表す。各ノードにおける「項目」および「内容」は、ソート処理に利用される各ノードの構成情報を示す。例えば、「入力ノード#1」における「ネットワーク番号」は、ネットワーク710における入力ノード#1の識別番号を示す(図3の例では、N1)。また、「出力ノードに接続する共用ディスク番号」は、入力ノード#1の有するディスクのうち、出力ノードに接続しているディスクの識別番号を示す(図3の例では、D1)。また、「入力ローカルディスク番号」は、入力ノード#1の有するディスクのうち、ソート対象データを格納しているディスクの識別番号を示す(図3の例では、D4)。また、「ソート対象データファイル名」は、入力ローカルディスクにファイルとして格納されているソート対象データのファイル名を示す(図3の例では、AAA)。また、「レコード名」は、ソート対象データのレコード形式に与えられた名前を示す(図3の例では、XXX)。また、「出力ノード」における「入力ノード#1に接続する共用ディスク番号」は、出力ノードに接続されたディスクのうち、入力ノード#1に接続しているディスクの識別番号を示す(図3の例では、D1)。また、出力ノードについての「出力ローカルディスク番号」は、出力ノードが有するディスクのうち、ソート処理結果を格納するディスクの識別番号を示す(図3の例では、D7)。
【0040】
図4は、レコード情報テーブルの例を示す図である。同図において、「レコード名」は、レコード形式に与えられた名前を示す。図3に示したシステム構成情報テーブルの「レコード名」の欄には、このレコード(形式)名が格納される。このレコード情報テーブルにおいて、「レコードの大きさ」は、レコード単位の大きさ(バイト数)を示す。また、「レコードの項目数」は、レコード単位を構成する項目の数を示す。また、「項目#1」から「項目#5」における、「項目の大きさ」は、各項目の大きさ(バイト数)を示す。また、「項目の形式」は、各項目のデータとしての形式を示す。また、「キーとして使用」は、ソートの際のレコード単位の並べ替えにおいて、当該項目をキーとして使用するか否か、すなわち、当該項目の内容に基づいて並べ替えを行うか否かを示す。また、「キー優先順位」は、キーとして並べ替えに使用する項目が複数ある場合の、項目間の優先順位を示し、優先順位の高い項目順に、並べ替えが行われる。なお、図4のレコード情報テーブルで示されるレコードは、固定長レコードであり、1つのレコード単位は、「16」バイトの「項目#1」、「32」バイトの「項目#2」、各「4」バイトの「項目#3」、「項目#4」、「項目#5」の5つの項目からなる60バイトのデータである。
【0041】
上述した管理情報整合処理によってソート処理に必要な管理情報の準備が整うと、次に、ソート対象データの読み込み処理が行われる。図5は、ソート対象データの読み込み処理の流れを示す図である。各入力ノード100において、データ読み込み手段103は、まず、ソート対象データの読み込みを開始するに当たって、ソート対象データのファイル名を既に取得しているか否かを調べ(S1130)、取得していなければ、システム構成情報テーブルからソート対象データのファイル名を取得する(S1140)。
【0042】
次に、入力ローカルディスク200に格納されているソート対象データの未処理量を確認し(S1150)、当該未処理量が内部ソートバッファ110の容量より大きいか否かを調べる(S1160)。その結果、ソート対象データの未処理量が内部ソートバッファ110の容量より大きい場合は、未処理のソート対象データを、内部ソートバッファ110の容量分だけ、入力ローカルディスク200から内部ソートバッファ110に読み込む(S1170)。一方、データの未処理量が内部ソートバッファ110の容量以下の場合は、未処理のソート対象データを全て入力ローカルディスク200から内部ソートバッファ110に読み込む(S1180)。
【0043】
以上のようにして、ソート対象データの内部ソートバッファ110への読み込みが行われると、次に、内部ソートバッファ110に読み込まれたデータについて内部ソート処理が行われる。各入力ノード100において、内部ソート手段104は、内部ソートバッファ110に読み込んだソート対象データについて、レコードに含まれる1つまたは複数のキーに基づいて、レコードを並べ替える内部ソートを行い、内部ソートバッファ110に読み込んだデータについてソート結果を得る。前記並べ替えは、レコードの順序をキーに基づくある順序、例えば昇順または降順にするといった所定のソート規則を用いて行う。
【0044】
上記のようにして、内部ソートバッファ110に読み込んだデータについて内部ソート処理が終了すると、次に、内部ソートバッファ110内の内部ソート結果をソート列として、共用ディスク500へ格納するソート列格納処理を行う。図6は、共用ディスク500へのソート列格納処理の流れを示す図である。各入力ノード100において、共用ディスク・ライト手段105は、まず、ソート列格納ヘッダを生成し(S1200)、当該ヘッダと共に、内部ソートバッファ110内の内部ソート結果をソート列として、共用ディスク500にライトし(S1210)、共用ディスク500上のソート列格納情報を更新する(S1220)。
【0045】
図7は、ソート列格納ヘッダの例を示す図である。同図に示すように、ソート列格納ヘッダは、「出力先ノード名」、「ソート列格納番号」、「生成日時」、「レコード数」とから構成される。「出力先ノード名」は、共用ディスク500に接続する出力ノード300の名前を示す。「ソート列格納番号」は、ソート列を生成・ライトする際に、各ソート列毎に順次付けられる番号を示す。「生成日時」は、各ソート列が生成された日時を示す。「レコード数」は、ソート列が含むレコード数を示す。
【0046】
図8は、ソート列格納情報の例を示す図である。このソート列格納情報は、共用ディスク500に書き込まれたソート列に関する情報であって、各共用ディスク500ごとに設けられる。同図に示すように、ソート列格納情報は、「出力先ノード名」と、「更新日時」と、「ソート列格納数」とから構成される。「出力先ノード名」は、当該ソート列格納情報が置かれている共用ディスク500に接続する出力ノード300の名前を示す。「更新日時」は、ソート列のライトに伴ってソート列格納情報が更新された日時を示す。「ソート列格納数」は、出力先ノードに向けて共用ディスク500に格納されているソート列の数を示す。
【0047】
各入力ノード100は、上記のソート対象データの読み込み処理から共用ディスク500へのソート列の格納処理までを、入力ローカルディスク200に格納されているソート対象データの全てを処理するまで繰り返す。各入力ノード100が入力ローカルディスク200に格納されているソート対象データの全てを処理し、ソート列として共用ディスク500に格納し終えると、入力ノード100のマージ指示手段106は、ネットワーク710を介して、出力ノード300にマージ指示を通知する。
【0048】
次に、出力ノード300がすべての入力ノード100からマージ指示を受領すると実行される、ソート列の読み込み処理について説明する。図9は、共用ディスク500からのソート列読み込み処理の流れを示す図である。出力ノード300において、マージ指示受領手段303は、入力ノード100からのマージ指示を、ネットワーク710を介して受領すると(S1240)、全ての入力ノードからマージ指示を受領したか否かについて確認し(S1250)、まだ、マージ指示を受領していない入力ノード100がある場合は、全ての入力ノードからマージ指示が届くのを待つ。そして、全ての入力ノード100からマージ指示を受領すると、共用ディスク・リード手段304は、出力ノード300に接続されている各共用ディスク500上のソート列格納情報をリードして(S1260)、共用ディスク500に格納されているソート列の総本数を確認する。そして、マージバッファ310の容量をソート列の総本数で割った商を求め、それを、各ソート列に対し割り当てるマージバッファ310の容量とする(S1270)。
【0049】
以上のようにして、各ソート列に割り当てるマージバッファの容量が求まると、共用ディスク・リード手段304は、処理対象となるソート列のなかから一つのソート列を選択し、当該ソート列についてソート列格納ヘッダを参照して、当該ソート列の大きさを確認し、それを、ソート列の未処理量の初期値とする。そして、ソート列の未処理量が前記のバッファ割り当て量より大きいか否かを調べる(S1290)。その結果、ソート列の未処理量がバッファ割り当て量より大きい場合は、ソート列の未処理分のうち、バッファ割り当て量だけ共用ディスク500からマージバッファ310に読み込む(S1300)。一方、ソート列の未処理量がバッファ割り当て量以下の場合は、ソート列の未処理分を全て、共用ディスク500からマージバッファ310に読み込む(S1310)。ここでの未処理分の読み込みは、ソート列の先頭から終端までソートされている順に行う。なお、読み込んだ未処理分はソート列の一部をなすので、当該未処理分をソート列のソート片(へん)と以下呼ぶことにする。
【0050】
あるソート列についてソート片のマージバッファ310への読み込みが終了すると、処理対象となるソート列すべてについて、ソート片の読み込みを終了したか否かを判断し(S1320)、ソート片の読み込みが終了していないソート列がある場合は、そのソート列について、上記した処理S1280〜S1310を繰り返す。以上のようにして、全ての共用ディスク500に格納されている全てのソート列に対して、ソート片のマージバッファ310への読み込みが行われる。
【0051】
以上のようにして、ソート片のマージバッファ310への読み込みが終了すると、次に、マージバッファ310へ読み込まれたデータについて、マージ処理および最終的なソート結果出力処理が行われる。図10は、このマージ/ソート結果出力処理の流れを示す図である。出力ノード300において、マージ手段305は、まず、マージバッファ310に読み込まれた各ソート列のソート片について、各ソート片内のレコードを指すポインタを用意する(S1330)。なお、各ソート片読み込み直後のポインタの初期値は、ソート片の先頭レコードとする。
【0052】
次に、マージ手段305は、マージバッファ310内のソート片全てについて、各ポインタの指す各レコードのキーを所定のソート規則に基づいて比較し、当該ソート規則で最も先になるレコードのポインタをソート結果出力手段306に渡す(S1340)。ソート結果出力手段306は、渡されたポインタに対応するレコードを、出力ローカルディスク400に書き出して出力する(S1350)。そして、マージ手段305は、出力したレコードの属するソート片について、マージバッファ310に読み込まれたすべてのレコードの出力が済んだか否かを調べる(S1370)。その結果、当該ソート片について、マージバッファ310内に比較対象となるレコードが未だ残っている場合は、当該ソート片についてのポインタを1つ進めて後続のレコードを指すようにし、上述した処理S1340、S1350を繰り返す。このようにして、マージ手段305とソート結果出力手段306は、マージバッファ310内に格納されたソート片についてのソート処理の結果を出力ローカルディスク400に出力していく。
【0053】
そして、マージ手段305とソート結果出力手段306が、マージバッファ310に格納された1つのソート片に含まれる全てのレコードを出力した場合(S1370:Y)、マージ手段305は、共用ディスク・リード手段304に、当該ソート片の属するソート列を通知する(S1380)。
【0054】
この通知を受けて、共用ディスク・リード手段304は、当該ソート列について、未処理分を確認し(S1390)、当該ソート列について、未処理のソート片が存在するか否かを判断する(S1410)。その結果、未処理のソート片が存在すれば、未処理分のソート片を共用ディスク500から読み出して(S1420)、マージバッファ310内の出力済みのソート片に上書き格納し(S1420)、マージ手段305は、新たに格納したソート片についてポインタを初期化して、格納したソート片の先頭レコードを指すようにする(S1430)。そして、マージ手段305とソート結果出力手段306は、上記の処理S1340〜S1390を繰り返す。なお、共用ディスク500からマージバッファ310への読み込みに際して、ソート列の未処理量は、適宜更新される。
【0055】
一方、当該ソート列について、未処理分が無ければ(S1410:Y)、続けて、複数の共用ディスク500に格納されている全てのソート列について、処理が終了しているか否かを調べ(S1440)、未処理のソート列が存在する場合は、共用ディスク・リード手段304は、当該ソート列についての処理完了をマージ手段305に通知し(S1450)、マージ手段305は、当該ソート列のソート片を比較対象から除外し(S1460)、上記の処理S1340〜S1430を繰り返す。
【0056】
以上のような処理により、共用ディスク500に格納されているソート列が全てマージされ、ソート処理が完了する。すなわち、複数台の入力ローカルディスク200に格納されているソート対象データ全てについてのソート処理結果が、出力ノード300に接続されている出力ローカルディスク400に得られる。
【0057】
本システムでは、上記のようにソート列を共用ディスク500に格納蓄積して処理するので、入力ノード100においてマージ処理を行う必要がなく、ソート処理に要する処理時間を削減して高速なソート処理を実現することができる。また、入力ノード100においてマージ処理を行う必要がないので、その分、入力ノード100で実行されうる他の処理に与える遅延や阻害などの影響を低減することも可能になる。
【0058】
更に、上記のようにソート列を共用ディスク500に格納蓄積して処理するので、入力ノードから出力ノードに対しソート対象データやソート列をネットワーク経由で転送する必要がなく、ネットワーク710が高速でない場合であっても、高速なソート処理を実現することができる。
【0059】
≪第二実施形態≫
図11は、本発明による第2のソート処理システムのブロック図である。第1のシステムと異なる点は、出力ノード300(および出力ローカルディスク400)が複数存在し、入力ノード100が出力ノード決定手段107を有する点である。また、本システムにおいては、共用ディスク500は、各入力ノード100と各出力ノード300の双方のIOバスI/F600にIOバス610で接続されて、各入力ノード100のそれぞれと各出力ノード300のそれぞれの間に1台ずつ存在する。すなわち、本システムでは、入力ノード及び出力ノードの数をそれぞれ、i、jとすると、共用ディスク500は(i×j)台存在する。以上の点を除き、第1のシステムと同様の構成を有する。
【0060】
本システムは、出力ノードを複数用意し、各出力ノードにおいて、入力データ全体に対するソート結果を、所定の分配規則に基づいて分配した結果として得ようとするものである。
【0061】
出力ノード決定手段107は、入力ノード100における内部ソート処理において、内部ソートの対象となっているレコードを最終的に出力する出力ノード300を決定する。なお、出力ノード決定手段107は、例えば、入力ノードCPU101が不図示のメモリに記憶されたソフトウェアを実行することによって実現される。
【0062】
以下に、本システムによって行うソート処理について説明する。
【0063】
まず、実際のソート処理に先立って、ソート処理に必要な管理情報の生成と整合を行う管理情報整合処理が行われる。この処理は、第1のシステムについて説明したのとほぼ同様であり、各入力ノード100の入力管理情報整合手段102と各出力ノード300の出力管理情報整合手段302が、ソート処理に必要な情報を、それぞれ生成、整合し、保持する。
【0064】
図12は、第2のソート処理システムにおけるシステム構成情報テーブルの例を示す図である。同図に示すように、システム構成情報テーブルは、入力ノードについて、「出力ノードに接続する共用ディスク番号」が複数用意されていることと、出力ノードに関する情報が、複数用意されていることを除いて、図3に示したシステム構成情報テーブルと同様の構成をしている。
【0065】
管理情報整合処理によってソート処理に必要な管理情報の準備が整うと、各入力ノード100において、ソート対象データの読み込み処理が行われるが、この処理は、第1のシステムと同様にして行われる。
【0066】
次に、第2のシステムにおける内部ソート処理について説明する。図13は、第2のシステムにおける内部ソート処理の流れを示す図である。各入力ノード100において、各入力ローカルディスク200に格納されているソート対象データが内部ソートバッファ110に読み込まれると、出力ノード決定手段107は、内部ソートバッファ110に読み込んだ各レコードについて、各レコードが持つキーや他の情報を利用した所定の決定規則に基づいて、当該レコードを出力する出力ノードを決定する(S2010)。ここでの所定の決定規則とは、レコード(ソート対象データ)を複数の出力ノード300間で分配するための分配規則のことであり、例えば、連続する値のキーを持つレコードは、各出力ノード300に巡回的に割り当てるといったものや、特定の値のキーをもつレコードは、当該特定の値を所定の計算式やテーブルに適用することで求まる特定の出力ノード300に割り当てるといったものが考えられる。
【0067】
以上のようにして各レコードについて出力ノードが決定すると、次に、内部ソート手段104は、出力ノード決定手段107が決定した出力ノード300毎に、内部ソートバッファに読み込まれたレコードを分類してまとめ(S2020)、分類したレコード集合内でレコードの順序を所定のソート規則を用いて並べ替える(S2030)。
【0068】
以上のような処理によって、内部ソートバッファ110に読み込まれたデータについて、所定の決定規則に基づき決定した出力ノード300毎に分類し、さらに、分類された中で所定のソート規則に基づき並び替えられたレコードの集合が得られる。
【0069】
以上のようにして、内部ソート処理が終了すると、次に、共用ディスク500へのソート列の格納処理が行われる。図14は、共用ディスク500へのソート列格納処理の流れを示す図である。各入力ノード100において、共用ディスク・ライト手段105は、内部ソートバッファ110内の出力ノード300毎に分類された内部ソート結果を、出力ノード300毎にソート列とし、当該ソート列が格納されるべき出力ノード300に接続されている共用ディスク500を選択する(S2040)。そして、選択された各共用ディスク500に対して、第1のシステムで説明したのと同様に、ソート列格納ヘッダを生成し(S2050)、当該ヘッダと共にソート列を、選択された各共用ディスク500にライトし(S2060)、各共用ディスク500上のソート列格納情報を更新する(S2070)。
【0070】
各入力ノード100は、上記のソート対象データの読み込み処理から共用ディスク500へのソート列の格納処理までを、入力ローカルディスク200に格納されているソート対象データの全てを処理するまで繰り返す。各入力ノード100が、入力ローカルディスク200に格納されているソート対象データの全てを処理し、ソート列として共用ディスク500に格納し終えると、入力ノード100のマージ指示手段106は、全ての出力ノード300に、ネットワーク710を介して、マージ指示を通知する。
【0071】
すべての入力ノード100からマージ指示を受けた各出力ノード300は、第1のシステムで説明したのと同様にして、共用ディスク500からのソート列の読み込み処理と、マージおよびソート結果出力処理とを行う。全ての出力ノード300において、自分に接続されている複数台の共用ディスク500のソート列を全てマージし、出力ローカルディスク400に出力し終えることによって、ソート処理は完了し、複数台の入力ローカルディスク200に格納されているソート対象データ全てについて、所定の決定規則に基づき複数台の出力ノード300に分配されたソート処理結果が、各出力ノード300の各出力ローカルディスク400に得られる。
【0072】
本システムにおいても、第1のシステムと同様に、ソート列を共用ディスク500に格納蓄積して処理するので、入力ノード100においてマージ処理を行う必要がなく、ソート処理に要する処理時間を削減して高速なソート処理を実現することができる。また、入力ノード100においてマージ処理を行う必要がないので、入力ノード100で実行されうる他の処理に与える遅延や阻害などの影響を低減することもできる。更に、入力ノード100から出力ノード300に対しソート対象データやソート列をネットワーク経由で転送する必要がないので、ネットワーク710が高速でない場合であっても、高速なソート処理を実現することができる。
【0073】
なお、以上説明した2つの実施形態では、ソート対象データが入力ローカルディスク200に格納されている場合について説明したが、他の格納場所を用いる場合、例えば、ネットワーク710に接続されている任意のコンピュータのディスク、すなわち、リモートディスクに格納されているソート対象データを、入力ノード100がネットワーク710経由で読み込むようにしてもよい。同様に、上記2つの実施形態では、ソート対象データに対するソート処理結果を、出力ローカルディスク400に出力する場合について説明したが、例えば、リモートディスクにソート処理結果を、出力ノード300がネットワーク710経由で出力するようにしてもよい。
【0074】
また、上記2つの実施形態では、ソート対象データが、ファイル名で識別される1つのファイルとして各入力ローカルディスク200に格納されている場合について説明したが、例えば、入力ローカルディスク200上の論理アドレスまたは物理アドレスを直接的に指定してソート対象データを入力ローカルディスク200から、入力ノード100が読み込むようにしてもよい。また、1台の入力ノード100についてソート対象データが2つ以上のファイルとして存在してもよい。
【0075】
また、上記2つの実施形態においては、共用ディスク500は、入力ノード100と出力ノード300の両方に接続され、両者からアクセスされることになるが、入力ノード100が共用ディスク500へのソート列格納処理を終了し、マージ指示の通知による入力ノード100と出力ノード300との間の同期の後、出力ノード300が共用ディスク500からのソート片読み出し処理を行っているので、共用ディスク500に対するリード/ライトが同時に行われることはない。よって、共用ディスク500の格納内容に対し、当該ディスクに接続されているノード間で排他制御をことさら行うことなく、上記の処理を不整合なく行うことができる。
【0076】
≪第三実施形態≫
図15は、本発明による第3のソート処理システムのブロック図である。本システムは、ノード800と、ローカルディスク900と、共用ディスク500とからなる。
【0077】
ノード800は、CPU801と、バッファ810と、入力モジュール820と、出力モジュール830と、IOバスI/F600と、ネットワークI/F700とを備える。入力モジュール820は、入力管理情報整合手段102と、データ読み込み手段103と、内部ソート手段104と、共用ディスク・ライト手段105と、マージ指示手段106と、出力ノード決定手段107とからなる。出力モジュール830は、出力管理情報整合手段302と、マージ指示受領手段303と、共用ディスク・リード手段304と、マージ手段305と、ソート結果出力手段306とからなる。ローカルディスク900は、IOバス610でIOバスI/F600と接続されている。
【0078】
ここで、入力管理情報整合手段102、データ読み込み手段103、内部ソート手段104、共用ディスク・ライト手段105、マージ指示手段106、及び出力ノード決定手段107、並びに、出力管理情報整合手段302、マージ指示受領手段303、共用ディスク・リード手段304、マージ手段305、及びソート結果出力手段306は、例えば、CPU801が、不図示のメモリに記憶されたソフトウェアを実行することによって実現される。また、バッファ810は、例えば、CPU801がソフトウェアを実行するために使用するメモリの一部を利用したり、専用のメモリを用意することで実現される。
【0079】
本システムでは、ノード800は複数台(以下、n台とする)存在する。この複数台のノード800は、それぞれのネットワークI/F700を介して、ネットワーク710に接続されている。すなわち、複数台のノード800は、ネットワーク710で相互に接続されている。また、共用ディスク500は、各ノード800の間に1台ずつ存在し、各ノード800のIOバスI/F600にIOバス610で接続される。すなわち、各ノード800には、(n−1)台の共用ディスク500が接続されており、本システムでは、共用ディスク500は、(n×(n−1)/2)台存在する。また、共用ディスク500は、領域A510と領域B520の少なくとも2つの格納領域を持つ。
【0080】
本システムでは、複数台のノード800のうち、一部または全部(以下、i台とする)のノード800(以下、入力系ノードと呼ぶ)は、配下のローカルディスク900にソート対象データを格納しており、また、n台のノード800のうちの一部または全部(以下、j台とする)のノード800(以下、出力系ノードと呼ぶ)は、配下のローカルディスク900にソート処理の結果の一部または全部を格納する。ここで、iは、2以上n以下、jは、1以上n以下の整数であり、更に、(i+j)は、n以上となる。すなわち、本システムでは、同一のノード800が、入力系ノードの集合と出力系ノードの集合の両集合に含まれうる。入力系ノードの各ローカルディスク900は、それぞれ、自ノード格納領域910と、ソート対象データが格納されるソート対象データ格納領域920を有する。また、出力系ノードの各ローカルディスク900は、自ノード格納領域910と、ソート処理結果を出力するソート結果格納領域930を有する。なお、入力系ノードであり、出力系ノードでもあるノード800の各ローカルディスク900は、自ノード格納領域910と、ソート対象データ格納領域920と、ソート結果格納領域930を持つ。
【0081】
本システムでは、ソート対象データは、複数の入力系ノードに分配して割り当てられ、入力系ノードのローカルディスク900のソート対象データ格納領域920に、それぞれ格納される。また、入力系ノードのそれぞれにおいてローカルディスク900に格納されているソート対象データの量は、各入力系ノードのバッファ810の容量より大きいとする。また、本システムでは、ソート処理の結果は出力系ノードのローカルディスク900のソート結果格納領域930に格納する。
【0082】
以下に、本システムによるソート処理について説明する。
【0083】
まず、本システムにおけるソート処理の概要について説明する。図16は、本システムにおけるソート処理の全体の流れを示す図である。ソート処理システムにソート処理が指示されると、実際のソート処理に先立ち、各ノード800の入力モジュール820と出力モジュール830は、ソート処理に必要な管理情報の生成と整合を行う(S3010)。例えば、複数のノード800のうち、ローカルディスク900にソート対象データを格納している入力系ノードと、ローカルディスク900にソート処理結果の一部または全部を格納する出力系ノードを確認する。
【0084】
次に、入力系ノードの入力モジュール820は、それぞれ、ローカルディスク900に格納されているソート対象データを分割しつつ、バッファ810に読み込む(S3020)。そして、バッファ810に読み込んだデータに対し、所定の決定規則に基づいて、ソート結果を出力するノード800を決定しつつ(出力系ノードが複数存在する場合)、内部ソートを行ってソート結果(ソート列)を生成し(S3030)、各ソート列を、決定した出力先のノード800に接続する共用ディスク500または配下のローカルディスク900に格納する(S3040)。そして、入力モジュール820は、それぞれ、ローカルディスク900に格納されているソート対象データをすべて処理したか否かを調べ(S3050)、未処理のデータがある場合は、処理S3020〜S3040を繰り返す。一方、全ソート対象データの処理が終了すると、入力系ノードの入力モジュール820は、それぞれ、出力系ノードの出力モジュール830にマージを指示する(S3060)。
【0085】
入力系ノードの入力モジュール820全てからマージ指示を受領すると(S3070)、出力系ノードの出力モジュール830は、合計i台となる共用ディスク500およびローカルディスク900にそれぞれ格納されているソート列について、複数のソート列の各々一部分ずつ(ソート片)をバッファ810へ読み込む(S3080)。そして、出力モジュール830は、バッファ810に読み込んだレコードの間でキーを比較して、バッファ810に読み込まれたデータについて総合してソートした結果を求め(S3090)、その結果をローカルディスク900に格納していく(S3100)。そして、出力モジュール830は、対象となるソート列をすべて処理したか否かを調べ(S3110)、未処理データが存在する場合は、処理S3080〜S3100を繰り返す。このような各ノード800の処理によって、i台のローカルディスク900に格納されているソート対象データ全てについての、j台のノード800に分配されたソート処理結果が、j台のノード800の各ローカルディスク900に得られる。
【0086】
以下、上記各処理について詳細に説明する。
【0087】
まず、実際のソート処理に先立ち、管理情報整合処理が行われる。各ノード800の入力管理情報整合手段102と出力管理情報整合手段302は、ユーザによって予め設定された情報、および入力管理情報整合手段102と出力管理情報整合手段302がネットワーク710を介して他のノードとやり取りした情報を用いて、ソート処理に必要な情報をそれぞれ生成、整合し、保持する。ソート処理に必要な情報としては、システム構成情報テーブルや、レコード情報テーブル等があげられる。
【0088】
この管理情報整合処理によって、入力管理情報整合手段102と出力管理情報整合手段302は、各ノード800の間に1台ずつ存在する共用ディスク500について、各共用ディスク500が持つ領域A510および領域B520を、ノード800間のデータ転送における二方向のいずれかに割り当てる。例えば、任意の1台の共用ディスク500に接続された2台のノード800のうち、第一のノード800は、領域A510にデータを書き込み、領域B520からデータを読み込むこととし、第二のノード800は、領域B520にデータを書き込み、領域A510からデータを読み込むこととする。すなわち、共用ディスク500の領域A510を第一から第二のノード800へのデータ移送用領域として設定し、領域B520を第二から第一のノード800へのデータ移送用領域として設定して、それぞれ片方向の経路として静的に割り当てる。
【0089】
また、入力管理情報整合手段102と出力管理情報整合手段302は、複数のノード800のうち、ローカルディスク900にソート対象データを格納している入力系ノードと、ローカルディスク900にソート処理結果を格納する出力系ノードを確認する。
【0090】
図17は、第3のシステムにおけるシステム構成情報テーブルの例を示す図である。同図において、「ノード名」は、各ノードに与えられた名前を示し、各ノードにおける「項目」と「内容」はソート処理に関連する各ノードの構成情報を示す。例えば、「ノード#1」における「ネットワーク番号」は、ネットワーク710においてノード#1を識別する番号を示している。また、「ノード#1」における他の各ノードに接続する共用ディスクの項目では、ノード#1の有するディスクのうち、他の各ノードに接続する共用ディスクを識別する番号を示し、加えて、共用ディスク500において、他ノードへ渡すソート列を格納する領域に関する情報(例えば、その領域名や領域の範囲等。以下、同じ)と、他ノードからソート列を得る領域に関する情報を示す(図17の例では、「領域A」及び「領域B」)。また、ローカルディスクの項目では、ノード#1の有するディスクのうち、自ノードのためのローカルディスクの識別番号を示し、加えて、ローカルディスクにおいてソート列を格納する領域に関する情報と、ソート列を得る領域に関する情報も示す。なお、ローカルディスクの場合は、両領域は同一にすることができる。また、「ソート対象データ」の項目では、当該ノードのローカルディスクにソート対象データが格納されているか否か(ソート対象データの「有」「無」)と、ローカルディスクにソート対象データが格納されている場合は、更に、その格納領域に関する情報と、ソート対象データのファイル名とレコード名を示す。また、「ソート処理結果格納の可能性」の項目では、ソート処理結果を自ノードが得て、ローカルディスクに格納する可能性の「有」「無」と、ソート処理結果をローカルディスクに格納する場合は、その格納領域に関する情報を示す。
【0091】
上述した管理情報整合処理によってソート処理に必要な管理情報の準備が整うと、ソート対象データの読み込み処理が行われる。すなわち、ローカルディスク900にソート対象データを格納している入力系ノードにおいて、データ読み込み手段103は、図5に示した方法と同様の方法で、ローカルディスク900からソート対象データをバッファ810に読み込む。
【0092】
次に、内部ソート処理について説明する。入力系ノードにおいて、ソート対象データがバッファ810に読み込まれると、図13に示した方法と同様にして、バッファ810に読み込んだ各レコードについて、所定の決定規則に基づいて、当該レコードを出力する出力系ノードが決定され、出力系ノード毎に、内部ソートバッファに読み込まれたレコードを分類してまとめ、分類したレコード集合内でレコードの順序を所定のソート規則を用いて並べ替える。なお、出力系ノードが、一つしかない場合は、レコードの分類は行われず、内部ソートのみが行われる。
【0093】
以上のような処理によって、バッファ810に読み込まれたデータについて、所定の決定規則に基づき決定した出力系ノード毎に分類し、さらに、分類された中で所定のソート規則に基づき並び替えられたレコードの集合が得られる。
【0094】
次に、共用ディスク500またはローカルディスク900へのソート列の格納処理について説明する。この処理は、図14に示した処理と同様の流れで行われる。入力系ノードにおいて、共用ディスク・ライト手段105は、前記決定規則に基づき決定された出力系ノード毎に分類してまとめたバッファ810内の内部ソート結果を、前記決定した出力系ノード毎にソート列とし、当該ソート列が格納されるべき領域を、各共用ディスク500の領域A510及び領域B520並びにローカルディスク900の自ノード格納領域910から選択する。そして、当該ソート列を、ソート列格納ヘッダと共に、選択された領域にライトし、共用ディスク500の領域A510及び領域B520並びにローカルディスク900の自ノード格納領域910のそれぞれのソート列格納情報を更新する。すなわち、出力先が他ノードであれば、共用ディスク500にソート列を格納し、出力先が自ノードであれば、ローカルディスク900の自ノード格納領域910にソート列を格納する。共用ディスク500にソート列を格納する場合、共用ディスク・ライト手段105は、システム構成情報テーブルを参照等することにより、共用ディスク500の領域A510及び領域B520のいずれが自ノードから他ノードへの経路としてとして割り当てられているかを確認し、前記2つの領域のうち自ノードから他ノードへの経路として割り当てられた領域にソート列を格納する。
【0095】
入力系ノードは、上述したソート対象データの読み込み処理からソート列の格納処理までを、ローカルディスク900に格納されているソート対象データの全てを処理するまで繰り返す。入力系ノードにおいて、入力モジュール820が、ローカルディスク900に格納されているソート対象データの全てを処理し、ソート列として共用ディスク500またはローカルディスク900に格納し終えると、マージ指示手段106は、出力系ノード全ての出力モジュール830に、ネットワーク710を介してマージ指示を通知する。
【0096】
次に、共用ディスク500およびローカルディスク900からのソート列の読み込み処理について説明する。この処理は、図9に示した処理と同様の流れで行われる。出力系ノードにおいて、出力モジュール830のマージ指示受領手段303は、入力系ノードの入力モジュール820からのマージ指示をネットワーク710等を介して受領する。マージ指示を全ての入力系ノードから受領すると、共用ディスク・リード手段304は、自ノードに接続している合計i台となる共用ディスク500およびローカルディスク900から、ソート列格納情報をリードし、共用ディスク500およびローカルディスク900に格納されているソート列の総本数を確認する。そして、バッファ810の容量をソート列の総本数で割った商を求め、それを、各ソート列に対し割り当てるバッファ810の量とする。
【0097】
共用ディスク・リード手段304は、各ソート列のそれぞれについて、ソート列格納ヘッダを参照し、ソート列の大きさを確認し、それを、ソート列の未処理量の初期値とする。そして、ソート列の未処理量が前記のバッファ割り当て量より大きいか否かを調べ、その結果に応じて、適当な量のソート片を共用ディスク500およびローカルディスク900からバッファ810に読み込む。前記の未処理分の読み込みはソート列の先頭から終端までソートされた順に行う。上記のソート片の読み込みを、全ての共用ディスク500およびローカルディスク900に格納されている全てのソート列に対して行うことによって、共用ディスク・リード手段304は、処理対象の全ソート列について、ソート片をバッファ810に格納する。
【0098】
なお、上記において、共用ディスク500からソート列格納情報やソート片をリードする場合には、共用ディスク・リード手段304は、システム構成情報テーブルを参照等し、共用ディスク500の領域A510及び領域B520のいずれが他ノードから自ノードへの経路として割り当てられているのかを確認し、前記2つの領域のうち他ノードから自ノードへの経路として割り当てられた領域からソート列格納情報やソート片をリードする。
【0099】
最後に、マージ/ソート結果出力処理について説明する。出力系ノードがそれぞれ行うマージ/ソート結果出力処理は、図10に示した処理と同様の処理となる。出力系ノードにおいて、マージ手段305は、バッファ810に読み込まれた各ソート列のソート片について、各ソート片内のレコードを指すポインタを用意し、バッファ810内のソート片全てについて、各ポインタの指す各レコードを所定のソート規則により比較し、ソート規則で最も先になるレコードのポインタをソート結果出力手段306に渡す。ソート結果出力手段306は、渡されたポインタに対応するレコードをローカルディスク900のソート結果格納領域930に書き出して出力する。マージ手段305は、出力したレコードの属するソート片についてポインタを1つ進めて後続のレコードを指すようにし、上記のレコードの比較と出力すべきレコードの決定を再度繰り返す。このようにして、マージ手段305とソート結果出力手段306は、バッファ810内に格納された各ソート列のソート片についてのソート処理の結果をローカルディスク900のソート結果格納領域930に出力していく。
【0100】
その結果、バッファ810に格納された1つのソート片に含まれる全てのレコードが出力されると、マージ手段305は、共用ディスク・リード手段304に、当該ソート片の属するソート列を通知する。この通知を受けて共用ディスク・リード手段304は、当該ソート列について、未処理のソート片が存在すれば、未処理分のソート片を共用ディスク500またはローカルディスク900から読み込み、バッファ810内の出力済みのソート片に上書き格納する。マージ手段305は、新たに格納したソート片についてポインタを初期化して、格納したソート片の先頭レコードを指すようにして、マージ手段305とソート結果出力手段306は、上記のマージ処理を再度行う。一方、当該ソート列について、未処理分が無ければ、共用ディスク・リード手段304は、当該ソート列についての処理完了をマージ手段305に通知し、マージ手段305は、当該ソート列を比較対象から除外し、残りのソート列についてマージ処理を行う。
【0101】
出力系ノードは、上記のソート列の読み込みからマージ/ソート結果出力までの処理を、出力系ノードのそれぞれに接続されている共用ディスク500およびローカルディスク900に格納されている全てのソート列を処理するまで繰り返す。以上のような処理により、各出力系ノードにおいて、各出力系ノードに接続されている共用ディスク500およびローカルディスク900に格納されているソート列が全てマージされ、入力系ノードのローカルディスク900のソート対象データ格納領域920に格納されているソート対象データ全てについてのソート処理は完了し、各出力系ノードに分配されたソート処理結果が、出力系ノードに接続されている各ローカルディスク900のソート結果格納領域930に得られる。
【0102】
本システムにおいても、第1及び第2のシステムと同様に、ソート列を共用ディスク500に格納蓄積して処理するので、入力系ノードにおいてマージ処理を行う必要がなく、ソート処理に要する処理時間を削減して高速なソート処理を実現することができる。また、内部ソート処理を行う入力系ノードで実行されうる他の処理に与える遅延や阻害などの影響を低減することもできる。更に、ソート対象データに対し内部ソート処理を行う入力系ノードから出力系ノードへソート対象データやソート列をネットワーク経由で転送する必要がなくなり、ネットワーク710が高速でない場合であっても、高速なソート処理を実現することができる。
【0103】
なお、本システムでは、ソート対象データがローカルディスク900のソート対象格納領域920に格納されている場合について説明したが、例えば、リモートディスクに格納されているソート対象データを、入力系ノードがネットワーク710経由で読み込むようにしてもよい。同様に、リモートディスクにソート処理結果を、出力系ノードがネットワーク710経由で出力するようにしてもよい。
【0104】
また、本システムでは、ひとつのローカルディスク900中に、自ノード格納領域910や、ソート対象データ格納領域920や、ソート結果格納領域930等を有する場合について説明したが、例えば、各ノード800が、複数のローカルディスク900を有し、自ノード格納領域910、ソート対象データ格納領域920、およびソート結果格納領域930は、複数のローカルディスク900の1台ずつにそれぞれ別個に存在するようにしてもよい。また、各共用ディスク500は、領域A510と領域B520の少なくとも2つの領域を有するとしたが、例えば、共用ディスク500が各ノード800の間に2台ずつ存在し、この2台の共用ディスク500のそれぞれを、ノード800間の双方向経路における片方向の経路として静的に割り当てて使用するようにしてもよい。
【0105】
本システムでは、ソート対象データが、ファイル名で識別される1つのファイルとして各ローカルディスク900のソート対象データ格納領域920にそれぞれ格納されている場合について説明したが、例えば、ローカルディスク900上の論理アドレスまたは物理アドレスを直接的に指定してソート対象データをローカルディスク900から、ノード800が読み込むようにしてもよい。また、1台のノード800についてソート対象データが2つ以上のファイルとして存在してもよい。
【0106】
また、本システムにおいては、各共用ディスク500は、2つのノード800間に接続され、両者からアクセスされることになるが、共用ディスク500が持つ領域A510と領域B520は、当該共用ディスク500に接続するノード800間の双方向経路におけるそれぞれ片方向の経路に静的に割り当てて使用され、入力系ノードの入力モジュール820は、共用ディスク500の割り当てられたいずれかの領域にソート列を格納(ライト)し、マージ指示の通知による各入力系ノードの入力モジュール820と各出力系ノードの出力モジュール830との間の同期の後、出力系ノードの出力モジュール830が共用ディスク500の前記領域からソート片を読み出すため、前記領域に対するリード/ライトが同時に行われることはない。よって、共用ディスク500の格納内容に対しノード間で排他制御をことさら行うことなく、上記の処理を不整合なく行うことができる。
【0107】
また、上述したソート対象データの読み込み処理、内部ソート処理、並びにソート列の格納処理では、各ノード800において、入力モジュール820がバッファ810を使用している。また、ソート列の読み込み処理及びマージ/ソート結果出力処理では、各ノード800において、出力モジュール830がバッファ810を使用している。そして、ソート対象データの読み込み処理、内部ソート処理、及び、ソート列の格納処理と、ソート列の読み込み処理、及びマージ/ソート結果出力処理は、全てのノード800において、マージ指示の通知による入力モジュール820と出力モジュール830との間の同期によって時間的に分離されているので、各ノード800において、バッファ810が入力モジュール820と出力モジュール830によって同時に使用されることはない。よって、各ノード800において入力モジュール820と出力モジュール830に別個のバッファ領域を用意しなくても、バッファ810を入力モジュール820と出力モジュール830が共用できる。
【0108】
なお、以上説明した実施形態においては、各処理で扱うソート対象データ、ソート列、ソート片等のデータの量は、レコードを単位とする。よって、ソート対象データの読み込み処理で、ソート対象データを内部ソートバッファ110やバッファ810に読み込む場合や、共用ディスク500やローカルディスク900からのソート列の読み込み処理で、ソート片をマージバッファ310やバッファ810に読み込む場合などの読み込み量は、レコード単位となり、レコードからなる境界にそって読み込まれる。
【0109】
【発明の効果】
以上詳細に説明したように、本発明によれば、複数のコンピュータからなるコンピュータシステムで、複数のコンピュータがソート処理を並列に行う場合に必要となるマージ処理を削減し、高速なソート処理を実現することができる。また、コンピュータシステムで実行されうる他の処理に対しソート処理が与える遅延や阻害などの影響を低減することもできる。
【0110】
更に、ネットワークを介したデータ転送時間を削減し、ソート処理に要する処理時間を短縮して高速なソート処理を実現することができる。
【図面の簡単な説明】
【図1】 本発明による第1のソート処理システムのブロック図である。
【図2】 第1のシステムによるソート処理の概要を示すフローチャートである。
【図3】 第1のシステムにおけるシステム構成情報テーブルの例を示す図である。
【図4】 レコード情報テーブルの例を示す図である。
【図5】 ソート対象データの読み込み処理の流れを示すフローチャートである。
【図6】 第1のシステムにおける共用ディスク500へのソート列の格納処理の流れを示すフローチャートである。
【図7】 ソート列格納ヘッダの例を示す図である。
【図8】 ソート列格納情報の例を示す図である。
【図9】 第1のシステムにおけるソート列の読み込み処理の流れを示すフローチャートである。
【図10】 第1のシステムにおけるマージおよびソート結果出力処理の流れを示すフローチャートである。
【図11】 本発明による第2のソート処理システムのブロック図である。
【図12】 第2のシステムにおけるシステム構成情報テーブルの例を示す説明図。
【図13】 第2のシステムにおける内部ソート処理の流れを示すフローチャートである。
【図14】 第2のシステムにおけるソート列の格納処理の流れを示すフローチャートである。
【図15】 本発明による第3のソート処理システムのブロック図である。
【図16】 第3のシステムにおけるソート処理の概要を示すフローチャートである。
【図17】 第3のシステムにおけるシステム構成情報テーブルの例を示す図である。
【符号の説明】
100 入力ノード
101 入力ノードCPU
102 入力管理情報整合手段
103 データ読み込み手段
104 内部ソート手段
105 共用ディスク・ライト手段
106 マージ指示手段
107 出力ノード決定手段
110 内部ソートバッファ
200 入力ローカルディスク
300 出力ノード
301 出力ノードCPU
302 出力管理情報整合手段
303 マージ指示受領手段
304 共用ディスク・リード手段
305 マージ手段
306 ソート結果出力手段
310 マージバッファ
400 出力ローカルディスク
500 共用ディスク
510 領域A
520 領域B
600 IOバスI/F
610 IOバス
700 ネットワークI/F
710 ネットワーク
800 ノード
801 CPU
810 バッファ
820 入力モジュール
830 出力モジュール
900 ローカルディスク
910 自ノード格納領域
920 ソート対象データ格納領域
930 ソート結果格納領域

Claims (24)

  1. ソート処理システムであって、
    複数の入力ノードと、
    一つの出力ノードと、
    前記各入力ノードと前記出力ノードとの間にそれぞれ共用外部記憶装置とを備え、
    前記各入力ノードと前記出力ノードは第一の通信路によって接続され、
    前記各入力ノードと前記共用外部記憶装置、及び、前記出力ノードと前記共用外部記憶装置は第二の通信路によって接続され、
    前記入力ノードは、
    第一のバッファと、
    前記第一のバッファにソート対象データを読み込む手段と、
    前記第一のバッファ内のデータに対して、第一のソート規則に従いソートを行う手段と、
    ソートの結果をソート列として前記共用外部記憶装置に格納する手段とを有し、
    前記出力ノードは、
    第二のバッファと、
    前記共用外部記憶装置に格納された前記ソート列を前記第二のバッファに読み込む手段と、
    前記ソート列に対し、第二のソート規則に基づきマージを行う手段とを有することを特徴とするソート処理システム。
  2. 請求項 1 に記載のソート処理システムであって、
    前記複数の各入力ノードは、前記第一の通信路を介して、前記出力ノードにマージ指示を送信し、
    前記出力ノードは、前記第二の通信路を介して、前記共用外部記憶装置から前記ソート列を受信することを特徴とするソート処理システム。
  3. 請求項 1 に記載のソート処理システムであって、
    前記第一の通信路は、前記複数の入力ノードと前記出力ノードを接続する通信路であり、
    前記第二の通信路は、前記共用外部記憶装置と前記出力ノードを一対一で接続する通信路であることを特徴とするソート処理システム。
  4. 請求項3に記載のソート処理システムであって、
    前記第一の通信路は、ネットワークであり、
    前記第二の通信路は、 I/O バスであることを特徴とするソート処理システム。
  5. ソート処理システムであって、
    複数の入力ノードと、
    複数の出力ノードと、
    前記各入力ノードと前記各出力ノードとの間にそれぞれ共用外部記憶装置とを備え、
    前記各入力ノードと前記各出力ノードは第一の通信路によって接続され、
    前記各入力ノードと前記共用外部記憶装置、及び、前記各出力ノードと前記共用外部記憶装置は第二の通信路によって接続され、
    前記入力ノードは、
    第一のバッファと、
    前記第一のバッファにソート対象データを読み込む手段と、
    前記第一のバッファ内のデータに対し、所定の分配規則に従った分類をする手段と、
    前記分類をする手段によって分類された前記第一のバッファ内のデータに対し、第一の ソート規則に従いソートを行う手段と、
    ソートの結果を、ソート列として前記分類に基づき前記共用外部記憶装置に格納する手段とを有し、
    前記出力ノードは、
    第二のバッファと、
    前記共用外部記憶装置に格納された前記ソート列を第二のバッファに読み込む手段と、
    前記ソート列に対し、第二のソート規則に基づきマージを行う手段とを有することを特徴とするソート処理システム。
  6. ソート処理システムであって、
    複数のノードと、
    前記複数のノードの各ノードに対して設けられた専用外部記憶装置と、
    前記複数のノードの各ノード間にそれぞれ設けられた共用外部記憶装置とを備え、
    前記複数の各ノード間は第一の通信路によって接続され、
    前記複数の各ノードと前記共用外部記憶装置、及び、前記複数の各ノードと前記専用外部記憶装置は第二の通信路によって接続され、
    前記複数のノードの少なくとも一つのノードは、
    第一のバッファと、
    前記第一のバッファにソート対象データを読み込む手段と、
    前記第一のバッファ内のデータに対し、第一のソート規則に従いソートを行う手段と、
    ソートの結果をソート列として、前記共用外部記憶装置または前記専用外部記憶装置に格納する手段と、
    第二のバッファと、
    前記共用外部記憶装置または前記専用外部記憶装置に格納された前記ソート列を第二のバッファに読み込む手段と、
    前記ソート列に対し、第二のソート規則に基づきマージを行う手段とを有し、
    前記共用外部記憶装置は、
    接続される二つのノードのうち、第一のノードから第二のノードに送信するデータを格納する第一の格納領域と、前記第二のノードから前記第一のノードに送信するデータを格納する第二の格納領域を有することを特徴とするソート処理システム。
  7. ソート処理システムであって、
    複数のノードと、
    前記複数のノードの各ノードに対して設けられた専用外部記憶装置と、
    前記複数のノードの各ノード間にそれぞれ設けられた共用外部記憶装置とを備え、
    前記複数の各ノード間は第一の通信路によって接続され、
    前記複数の各ノードと前記共用外部記憶装置、及び、前記複数の各ノードと前記専用外部記憶装置は第二の通信路によって接続され、
    前記複数のノードの少なくとも一つのノードは、
    第一のバッファと、
    前記第一のバッファにソート対象データを読み込む手段と、
    前記第一のバッファ内のデータに対し、所定の分配規則に従った分類をする手段と、
    前記分類をする手段によって分類された前記第一のバッファ内のデータに対し、第一のソート規則に従いソートを行う手段と、
    ソートの結果を、ソート列として前記分類に基づき前記共用外部記憶装置または前記専用外部記憶装置に格納する手段と、
    第二のバッファと、
    前記共用外部記憶装置または前記専用外部記憶装置に格納された前記ソート列を第二のバッファに読み込む手段と、
    前記ソート列に対し、第二のソート規則に基づきマージを行う手段とを有することを特 徴とするソート処理システム。
  8. 請求項6または7の何れか一項に記載のソート処理システムであって、
    前記第一のバッファと前記第二のバッファは、同一のバッファであることを特徴とするソート処理システム。
  9. 請求項1、5、6、または7の何れか一項に記載のソート処理システムであって、
    前記第一のソート規則または前記第二のソート規則は、
    前記ソート対象データに含まれる複数のレコードが有するキーに基づき、前記キーを比較して前記複数のレコードが昇順または降順に並べ替えられるように規定された規則であることを特徴とするソート処理システム。
  10. 請求項9に記載のソート処理システムであって、
    前記キーには優先順位が指定され、
    前記第一のソート規則または前記第二のソート規則は、
    優先順位の高い前記キーの順に、前記複数のレコードが並べ替えられるように規定された規則であることを特徴とするソート処理システム。
  11. 請求項5または7の何れか一項に記載のソート処理システムであって、
    前記所定の分配規則は、
    前記ソート対象データに含まれる複数のレコードが有するキーに基づき、前記複数のレコードのそれぞれが出力される前記ノードが規定される規則であることを特徴とするソート処理システム。
  12. 請求項1、5、6、または7の何れか一項に記載のソート処理システムであって、
    前記第一のソート規則と前記第二のソート規則は、同一の規則であることを特徴とするソート処理システム。
  13. 複数の入力ノードと、
    一つの出力ノードと、
    前記各入力ノードと前記出力ノードとの間にそれぞれ共用外部記憶装置とを備えたソート処理システムにおけるソート処理方法であって、
    当該ソート処理システムは、
    前記各入力ノードと前記出力ノードを接続する第一の通信路と、
    前記各入力ノードと前記共用外部記憶装置、及び、前記出力ノードと前記共用外部記憶装置を接続する第二の通信路とを有し、
    前記入力ノードは、ソート対象データを読み込み、第一のソート規則に基づいてソートを行い、
    ソートの結果をソート列として前記共用外部記憶装置に格納し、
    前記格納が完了した前記入力ノードは、前記第一の通信路を介して、前記出力ノードにマージ指示を送信し、
    前記マージ指示を受信した前記出力ノードは、前記第二の通信路を介して、前記ソート列が格納された前記共用外部記憶装置から該ソート列を読み込み、第二のソート規則に基づきマージを行うことを特徴とするソート処理方法。
  14. 請求項 1 3に記載のソート処理方法であって、
    前記第一の通信路は、前記複数の入力ノードと前記出力ノードを接続する通信路であり、
    前記第二の通信路は、前記共用外部記憶装置と前記出力ノードを一対一で接続する通信路であることを特徴とするソート処理方法。
  15. 請求項 1 4に記載のソート処理方法であって、
    前記第一の通信路は、ネットワークであり、
    前記第二の通信路は、 I/O バスであることを特徴とするソート処理方法。
  16. 複数の入力ノードと、
    複数の出力ノードと、
    前記各入力ノードと前記各出力ノードとの間にそれぞれ共用外部記憶装置とを備えたソート処理システムにおけるソート処理方法であって、
    当該ソート処理システムは、
    前記各入力ノードと前記各出力ノードを接続する第一の通信路と、
    前記各入力ノードと前記共用外部記憶装置、及び、前記各出力ノードと前記共用外部記憶装置を接続する第二の通信路とを有し、
    前記入力ノードは、ソート対象データを読み込み、所定の分配規則に基づいて分類し、
    前記分類されたソート対象データに対し、第一のソート規則に基づいてソートを行い、
    ソートの結果を、前記分類に基づき決定された共用外部記憶装置に、ソート列として分配し、
    前記分配が完了した前記入力ノードは、前記第一の通信路を介して、前記出力ノードにマージ指示を送信し、
    前記マージ指示を受信した前記出力ノードは、前記第二の通信路を介して、前記ソート列が格納された前記共用外部記憶装置から該ソート列を読み込み、第二のソート規則に基づきマージを行うことを特徴とするソート処理方法。
  17. 複数のノードと、
    前記複数のノードの各ノード間にそれぞれ設けられた共用外部記憶装置とを備えたソート処理システムにおけるソート処理方法であって、
    当該ソート処理システムは、
    前記複数の各ノード間を接続する第一の通信路と、
    前記複数の各ノードと前記共用外部記憶装置、及び、前記複数の各ノードと前記専用外部記憶装置を接続する第二の通信路とを有し、
    前記共用外部記憶装置は、
    接続される二つのノードのうち、第一のノードから第二のノードに送信するデータを格納する第一の格納領域と、前記第二のノードから前記第一のノードに送信するデータを格納する第二の格納領域を有し、
    前記第一のノードは、ソート対象データを読み込み、第一のソート規則に基づいてソートを行い、
    ソートの結果を、ソート列として前記共用外部記憶装置が有する第一の格納領域に格納し、
    マージ指示を、前記第一の通信路を介して、前記第二のノードに送信し、
    前記マージ指示を受信した前記第二のノードは、前記ソート列を、前記第二の通信路を介して、前記共用外部記憶装置が有する第一の格納領域から読み込み、第二のソート規則に基づきマージを行うことを特徴とするソート処理方法。
  18. 請求項17に記載のソート処理方法であって、
    前記第一のノードは、
    前記第二のノードによって前記共用外部記憶装置の第二の格納領域に格納された前記ソート列を読み込むことを特徴とするソート処理方法。
  19. 複数のノードと、
    該複数のノードの各ノードに対して設けられた専用外部記憶装置と、
    前記複数のノードの各ノード間にそれぞれ設けられた共用外部記憶装置とを備えたソート処理システムにおけるソート処理方法であって、
    当該ソート処理システムは、
    前記複数の各ノード間を接続する第一の通信路と、
    前記複数の各ノードと前記共用外部記憶装置、及び、前記複数の各ノードと前記専用外部記憶装置を接続する第二の通信路とを有し、
    前記複数のノードのうちの少なくとも一つのノードは、ソート対象データを読み込み、
    所定の分配規則に基づいて分類を行い、
    前記分類されたソート対象データに対し、第一のソート規則に基づいて、ソートを行い、
    ソートの結果を、前記分類に基づき決定された前記共用外部記憶装置または前記専用外部記憶装置に、ソート列として分配し、
    前記分配が完了した前記少なくとも一つのノードは、前記第一の通信路を介して、前記複数のノードのうちの少なくとも一つの他のノードにマージ指示を送信し、
    前記マージ指示を受信した前記少なくとも一つの他のノードは、前記第二の通信路を介して、前記ソート列が格納された前記共用外部記憶装置または前記専用外部記憶装置から、該ソート列を読み込み、第二のソート規則に基づきマージを行うことを特徴とするソート処理方法。
  20. 請求項17または請求項19の何れか一項に記載のソート処理方法であって、
    前記少なくとも一つのノードは、
    前記ソート対象データの読み込みと、前記ソート列の読み込みに同一のバッファを使用することを特徴とするソート処理方法。
  21. 請求項13、16、17、または19の何れか一項に記載のソート処理方法であって、
    前記第一のソート規則または前記第二のソート規則は、
    前記ソート対象データに含まれる複数のレコードが有するキーに基づき、前記キーを比較して前記複数のレコードが昇順または降順に並べ替えられるように規定された規則であることを特徴とするソート処理方法。
  22. 請求項21に記載のソート処理方法であって、
    前記キーには優先順位が指定され、
    前記第一のソート規則または前記第二のソート規則は、
    優先順位の高い前記キーの順に、前記複数のレコードが並べ替えられるように規定された規則であることを特徴とするソート処理方法。
  23. 請求項16または19の何れか一項に記載のソート処理方法であって、
    前記所定の分配規則は、
    前記ソート対象データに含まれる複数のレコードが有するキーに基づき、前記複数のレコードのそれぞれが出力される前記ノードが規定される規則であることを特徴とするソート処理方法。
  24. 請求項13、16、17、または19の何れか一項に記載のソート処理方法であって、
    前記第一のソート規則と前記第二のソート規則は、同一の規則であることを特徴とするソート処理方法。
JP21925398A 1998-08-03 1998-08-03 ソート処理システムおよびソート処理の方法 Expired - Fee Related JP3774324B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP21925398A JP3774324B2 (ja) 1998-08-03 1998-08-03 ソート処理システムおよびソート処理の方法
EP99114942A EP0978782B1 (en) 1998-08-03 1999-07-30 Sorting system and method
DE69913050T DE69913050T2 (de) 1998-08-03 1999-07-30 Sortierungssystem und Methode
US09/366,320 US6424970B1 (en) 1998-08-03 1999-08-02 Sorting system and method executed by plural computers for sorting and distributing data to selected output nodes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP21925398A JP3774324B2 (ja) 1998-08-03 1998-08-03 ソート処理システムおよびソート処理の方法

Publications (2)

Publication Number Publication Date
JP2000056947A JP2000056947A (ja) 2000-02-25
JP3774324B2 true JP3774324B2 (ja) 2006-05-10

Family

ID=16732631

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21925398A Expired - Fee Related JP3774324B2 (ja) 1998-08-03 1998-08-03 ソート処理システムおよびソート処理の方法

Country Status (4)

Country Link
US (1) US6424970B1 (ja)
EP (1) EP0978782B1 (ja)
JP (1) JP3774324B2 (ja)
DE (1) DE69913050T2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6272486B1 (en) * 1998-04-16 2001-08-07 International Business Machines Corporation Determining the optimal number of tasks for building a database index
NO992269D0 (no) * 1999-05-10 1999-05-10 Fast Search & Transfer Asa S°kemotor med todimensjonalt skalerbart, parallell arkitektur
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
AU2003231521A1 (en) * 2002-04-26 2003-11-10 Nihon University School Juridical Person Parallel merge/sort processing device, method, and program
US20050050113A1 (en) * 2003-08-21 2005-03-03 International Business Machines Corporation System and method for facilitating data flow between synchronous and asynchronous processes
JP2005190047A (ja) 2003-12-25 2005-07-14 Hitachi Ltd データソート機能を持つストレージシステム
US7454420B2 (en) * 2004-11-08 2008-11-18 Sas Institute Inc. Data sorting method and system
CN101057386B (zh) * 2004-11-12 2011-02-02 Nxp股份有限公司 电源变换器
JP5276392B2 (ja) * 2007-09-21 2013-08-28 住友電気工業株式会社 切削工具、及び切削工具の製造方法
US10089379B2 (en) * 2008-08-18 2018-10-02 International Business Machines Corporation Method for sorting data
US8311987B2 (en) * 2009-08-17 2012-11-13 Sap Ag Data staging system and method
US20110131033A1 (en) * 2009-12-02 2011-06-02 Tatu Ylonen Oy Ltd Weight-Ordered Enumeration of Referents and Cutting Off Lengthy Enumerations
US8949249B2 (en) 2010-06-15 2015-02-03 Sas Institute, Inc. Techniques to find percentiles in a distributed computing environment
KR101465447B1 (ko) * 2014-03-31 2014-12-10 성균관대학교산학협력단 외부 병합 정렬 방법, 외부 병합 정렬 시스템 및 외부 병합 정렬을 위한 분산 처리 시스템
RU2667385C2 (ru) * 2014-05-30 2018-09-19 Хуавей Текнолоджиз Ко., Лтд. Параллельная сортировка слиянием
JP6380952B2 (ja) 2014-12-12 2018-08-29 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 多数の要素からなる配列をソートする装置、方法およびプログラム
US20160188643A1 (en) * 2014-12-31 2016-06-30 Futurewei Technologies, Inc. Method and apparatus for scalable sorting of a data set
US11734155B2 (en) * 2021-07-22 2023-08-22 Disney Enterprises, Inc. Fully traceable and intermediately deterministic rule configuration and assessment framework

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5084815A (en) * 1986-05-14 1992-01-28 At&T Bell Laboratories Sorting and merging of files in a multiprocessor
US5410689A (en) * 1991-06-13 1995-04-25 Kabushiki Kaisha Toshiba System for merge sorting that assigns an optical memory capacity to concurrent sort cells
US5794240A (en) * 1992-05-26 1998-08-11 Fujitsu Limited Multi-threaded sorting system for a data processing system
JP3202074B2 (ja) * 1992-10-21 2001-08-27 富士通株式会社 並列ソート方式
JP3415914B2 (ja) * 1993-10-12 2003-06-09 富士通株式会社 並列マージソート処理方法
US5613085A (en) 1994-12-27 1997-03-18 International Business Machines Corporation System for parallel striping of multiple ordered data strings onto a multi-unit DASD array for improved read and write parallelism
US5671405A (en) * 1995-07-19 1997-09-23 International Business Machines Corporation Apparatus and method for adaptive logical partitioning of workfile disks for multiple concurrent mergesorts
US5852826A (en) * 1996-01-26 1998-12-22 Sequent Computer Systems, Inc. Parallel merge sort method and apparatus

Also Published As

Publication number Publication date
JP2000056947A (ja) 2000-02-25
DE69913050T2 (de) 2004-07-29
US6424970B1 (en) 2002-07-23
DE69913050D1 (de) 2004-01-08
EP0978782B1 (en) 2003-11-26
EP0978782A1 (en) 2000-02-09
US20020065793A1 (en) 2002-05-30

Similar Documents

Publication Publication Date Title
JP3774324B2 (ja) ソート処理システムおよびソート処理の方法
US4817036A (en) Computer system and method for data base indexing and information retrieval
US7103596B2 (en) Data sort method, data sort apparatus, and data sort program
JP3415914B2 (ja) 並列マージソート処理方法
JP3250861B2 (ja) ディスク装置システム
CN107729135A (zh) 按序进行并行数据处理的方法和装置
JP4758429B2 (ja) 共有メモリ型マルチプロセッサシステム及びその情報処理方法
JPH1097544A (ja) データベース処理システム
JP4511469B2 (ja) 情報処理方法及び情報処理システム
WO2005106713A1 (ja) 情報処理方法及び情報処理システム
JP6006740B2 (ja) インデックス管理装置
CN109241058A (zh) 一种向b+树批量插入键值对的方法和装置
Nodine et al. Greed sort: An optimal external sorting algorithm for multiple disks
JPH0581337A (ja) データ処理装置
Pinotti et al. Conflict-free template access in k-ary and binomial trees
JP7481787B2 (ja) インデックス管理装置
Mansour et al. Passing through a stack k times
Botelho et al. Distributed perfect hashing for very large key sets
JP2024058778A (ja) データ処理システム、データ処理プログラム、およびデータ処理方法
Teich et al. Data Handling and Dedicated Hardware for the Sort Problem
JPS62118435A (ja) 複数インデツクス生成方式
Kim et al. A new parallel signature file method for efficient information retrieval
JPS6134626A (ja) 外部分布分類を実行する方法
Mitani et al. Towards Realizing Topology Mutation for Iterative Graph Processing on a GPU
Li A computer implementation of the Yates-Grundy draw by draw procedure

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050805

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20050805

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20050805

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20060214

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060217

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

Free format text: PAYMENT UNTIL: 20090224

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20100224

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100224

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110224

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120224

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130224

Year of fee payment: 7

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees