(57)【特許請求の範囲】
【請求項１】
複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するファイルを圧縮するコンピュータによるデータ圧縮方法において、
前記コンピュータの圧縮手段が、前記ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索し、
前記コンピュータの圧縮手段が、検索された前記コラム番号の数を基に前記ファイル内における圧縮可能なレコード数を算出し、
前記コンピュータの圧縮手段が、前記圧縮可能なレコード数の算出結果から、前記ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、
前記コンピュータの圧縮手段が、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、
前記コンピュータの圧縮手段が、検索されたコラム番号に対応する、前記圧縮非対象レコード内の第２レコードのコラム番号にフラグを立て、
前記コンピュータの圧縮手段が、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記圧縮対象レコードのコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動する各ステップを備えたことを特徴とするデータ圧縮方法。
【請求項２】
複数のコラムからなるフィールドを複数有してなり所定のフォーマットで作成されたレコードを複数有するファイルを圧縮するコンピュータによるデータ圧縮方法において、
前記コンピュータの圧縮手段が、前記ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号を検索し、
前記コンピュータの圧縮手段が、検索された前記フィールド番号の数を基に前記ファイル内における圧縮可能なレコード数を算出し、
前記コンピュータの圧縮手段が、前記圧縮可能なレコード数の算出結果から、前記ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、
前記コンピュータの圧縮手段が、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、
前記コンピュータの圧縮手段が、検索されたフィールド番号に対応する、前記圧縮非対象レコード内の第２レコードのフィールド番号にフラグを立て、
前記コンピュータの圧縮手段が、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記圧縮対象レコードのフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動する各ステップを備えたことを特徴とするデータ圧縮方法。
【請求項３】
複数のコラムからなり所定のフォーマットで作成されたレコードを複数有する第１ファイルを圧縮した第２ファイルを第１ファイルに復元するコンピュータによるデータ復元方法であって、
前記第２ファイルは、
前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、
前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号にフラグを立てたデータを持つ第２レコードと、
前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮対象レコードにおけるコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動した復元非対象レコードとからなり、
前記コンピュータの復元手段が、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたコラム番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたコラム番号以外のコラム番号の記憶部に移動し、
前記コンピュータの復元手段が、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたコラム番号の記憶部に前記第１レコードの対応するコラム番号の記憶部に格納されたデータを複写する各ステップを備え、
第１ファイルを圧縮した第２ファイルを第１ファイルに復元することを特徴とするデータ復元方法。
【請求項４】
複数のコラムからなるフィールドを複数有してなり所定のフォーマットで作成されたレコードを複数有する第１ファイルを圧縮した第２ファイルを第１ファイルに復元するコンピュータによるデータ復元方法であって、
前記第２ファイルは、
前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、
前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号にフラグを立てたデータを持つ第２レコードと、
前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮対象レコードにおけるフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動した復元非対象レコードとからなり、
前記コンピュータの復元手段が、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたフィールド番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたフィールド番号以外のフィールド番号の記憶部に移動し、
前記コンピュータの復元手段が、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたフィールド番号の記憶部に前記第１レコードの対応するフィールド番号の記憶部に格納されたデータを複写する各ステップを備え、
第１ファイルを圧縮した第２ファイルを第１ファイルに復元することを特徴とするデータ復元方法。
【請求項５】
複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、
所定数のレコード毎に所定のキーに従ってソートする手段と、
ソートしたレコード群を蓄える第１バッファと、
第１バッファに蓄えられたレコード群を圧縮するレコード群圧縮手段と、
圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、
転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、
前記第２バッファに蓄えられたレコード群を復元する復元手段と、
復元した複数のレコード群をマージして１本のレコード列を生成する手段と、
マージして生成された１本のレコード列を出力ファイルに出力する手段と、
を備え、
前記レコード群圧縮手段は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを圧縮する手段であって、
前記レコード群の第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索し、
検索された前記コラム番号の数を基に前記レコード群の第１ファイル内における圧縮可能なレコード数を算出し、
前記圧縮可能なレコード数の算出結果から、前記レコード群の第１ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、
前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、
検索されたコラム番号に対応する、前記圧縮非対象レコード内の第２レコードのコラム番号にフラグを立て、
前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記圧縮対象レコードのコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動する各ステップを備える、
ことを特徴とするソートマージ処理装置。
【請求項６】
複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、
所定数のレコード毎に所定のキーに従ってソートする手段と、
ソートしたレコード群を蓄える第１バッファと、
第１バッファに蓄えられたレコード群を圧縮する圧縮手段と、
圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、
転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、
前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、
復元した複数のレコード群をマージして１本のレコード列を生成する手段と、
マージして生成された１本のレコード列を出力ファイルに出力する手段と、
を備え、
前記レコード群復元手段は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを請求項５に記載のレコード群圧縮手段により圧縮した第２ファイルを復元する手段であって、
前記第２ファイルは、
前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、
前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号にフラグを立てたデータを持つ第２レコードと、
前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮対象レコードにおけるコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動した復元非対象レコードとからなり、
前記レコード群復元手段は、
前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたコラム番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたコラム番号以外のコラム番号の記憶部に移動し、
前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたコラム番号の記憶部に前記第１レコードの対応するコラム番号の記憶部に格納されたデータを複写する各ステップを備える、
ことを特徴とするソートマージ処理装置。
【請求項７】
複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、
所定数のレコード毎に所定のキーに従ってソートする手段と、
ソートしたレコード群を蓄える第１バッファと、
第１バッファに蓄えられたレコード群を圧縮するレコード群圧縮手段と、
圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、
転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、
前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、
復元した複数のレコード群をマージして１本のレコード列を生成する手段と、
マージして生成された１本のレコード列を出力ファイルに出力する手段と、
を備え、
前記レコード群圧縮手段は、複数のフィールドからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを圧縮する手段であって、
前記レコード群の第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号を検索し、
検索された前記フィールド番号の数を基に前記レコード群の第１ファイル内における圧縮可能なレコード数を算出し、
前記圧縮可能なレコード数の算出結果から、前記レコード群の第１ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、
前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、
検索されたフィールド番号に対応する、前記圧縮非対象レコード内の第２レコードのフィールド番号にフラグを立て、
前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記圧縮対象レコードのフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動する各ステップを備える、
ことを特徴とするソートマージ処理装置。
【請求項８】
複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、
所定数のレコード毎に所定のキーに従ってソートする手段と、
ソートしたレコード群を蓄える第１バッファと、
第１バッファに蓄えられたレコード群を圧縮する圧縮手段と、
圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、
転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、
前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、
復元した複数のレコード群をマージして１本のレコード列を生成する手段と、
マージして生成された１本のレコード列を出力ファイルに出力する手段と、
を備え、
前記レコード群復元手段は、複数のフィールドからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを請求項７に記載のレコード郡圧縮手段により圧縮した第２ファイルを復元する手段であって、
前記第２ファイルは、
前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、
前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号にフラグを立てたデータを持つ第２レコードと、
前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮対象レコードにおけるフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動した復元非対象レコードとからなり、
前記レコード群復元手段は、
前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたフィールド番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたフィールド番号以外のフィールド番号の記憶部に移動し、
前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたフィールド番号の記憶部に前記第１レコードの対応するフィールド番号の記憶部に格納されたデータを複写する各ステップを備える、
ことを特徴とするソートマージ処理装置。
【請求項９】
複数のレコードを格納する入力ファイルからコンピュータに入力されるレコードを順次読取り、これらレコードをソートマージするコンピュータによるソートマージ処理方法において、
前記コンピュータのソート手段が、所定数のレコード毎に所定のキーに従ってソートする第１ステップと、
前記コンピュータの一時蓄積手段が、ソートしたレコード群を前記コンピュータの主記憶装置内の第１バッファに蓄える第２ステップと、
前記コンピュータの圧縮手段が、前記第１バッファに蓄えられたレコード群を圧縮する第３ステップと、
前記コンピュータの転送手段が、圧縮されたレコード群を前記第１バッファから前記コンピュータの外部記憶装置内の一時ファイルに転送し、転送された複数のレコード群を個別に前記一時ファイルから前記コンピュータの主記憶装置内の第２バッファに転送する第４ステップと、
前記コンピュータの復元手段が、前記第２バッファに蓄えられたレコード群を復元する第５ステップと、
前記コンピュータの生成手段が、復元した複数のレコード群をマージして１本のレコード列を生成する第６ステップと、
前記コンピュータの出力手段が、マージして生成された１本のレコード列を前記コンピュータの外部の出力ファイルに出力する第７ステップと、
を備え、
前記第３ステップは、請求項１に記載のデータ圧縮方法を用いて前記第１バッファに蓄えられたレコード群を圧縮することを特徴とするソートマージ処理方法。
【請求項１０】
複数のレコードを格納する入力ファイルからコンピュータに入力されるレコードを順次読取り、これらレコードをソートマージするコンピュータによるソートマージ処理方法において、
前記コンピュータのソート手段が、所定数のレコード毎に所定のキーに従ってソートする第１ステップと、
前記コンピュータの一時蓄積手段が、ソートしたレコード群を前記コンピュータの主記憶装置内の第１バッファに蓄える第２ステップと、
前記コンピュータの圧縮手段が、前記第１バッファに蓄えられたレコード群を圧縮する第３ステップと、
前記コンピュータの転送手段が、圧縮されたレコード群を前記第１バッファから前記コンピュータの外部記憶装置内の一時ファイルに転送し、転送された複数のレコード群を個別に前記一時ファイルから前記コンピュータの主記憶装置内の第２バッファに転送する第４ステップと、
前記コンピュータの復元手段が、前記第２バッファに蓄えられたレコード群を復元する第５ステップと、
前記コンピュータの生成手段が、復元した複数のレコード群をマージして１本のレコード列を生成する第６ステップと、
前記コンピュータの出力手段が、マージして生成された１本のレコード列を前記コンピュータの外部の出力ファイルに出力する第７ステップと、
を備え、
前記第５ステップは、前記第２バッファに蓄えられたレコード群を請求項３に記載のデータ復元方法を用いて復元することを特徴とするソートマージ処理方法。
【請求項１１】
複数のレコードを格納する入力ファイルからコンピュータに入力されるレコードを順次読取り、これらレコードをソートマージするコンピュータによるソートマージ処理方法において、
前記コンピュータのソート手段が、所定数のレコード毎に所定のキーに従ってソートする第１ステップと、
前記コンピュータの一時蓄積手段が、ソートしたレコード群を前記コンピュータの主記憶装置内の第１バッファに蓄える第２ステップと、
前記コンピュータの圧縮手段が、前記第１バッファに蓄えられたレコード群を圧縮する第３ステップと、
前記コンピュータの転送手段が、圧縮されたレコード群を前記第１バッファから前記コンピュータの外部記憶装置内の一時ファイルに転送し、転送された複数のレコード群を個別に前記一時ファイルから前記コンピュータの主記憶装置内の第２バッファに転送する第４ステップと、
前記コンピュータの復元手段が、前記第２バッファに蓄えられたレコード群を復元する第５ステップと、
前記コンピュータの生成手段が、復元した複数のレコード群をマージして１本のレコード列を生成する第６ステップと、
前記コンピュータの出力手段が、マージして生成された１本のレコード列を前記コンピュータの外部の出力ファイルに出力する第７ステップと、
を備え、
前記第３ステップは、請求項２に記載のデータ圧縮方法を用いて前記第１バッファに蓄えられたレコード群を圧縮することを特徴とするソートマージ処理方法。
【請求項１２】
複数のレコードを格納する入力ファイルからコンピュータに入力されるレコードを順次読取り、これらレコードをソートマージするコンピュータによるソートマージ処理方法において、
前記コンピュータのソート手段が、所定数のレコード毎に所定のキーに従ってソートする第１ステップと、
前記コンピュータの一時蓄積手段が、ソートしたレコード群を前記コンピュータの主記憶装置内の第１バッファに蓄える第２ステップと、
前記コンピュータの圧縮手段が、前記第１バッファに蓄えられたレコード群を圧縮する第３ステップと、
前記コンピュータの転送手段が、圧縮されたレコード群を前記第１バッファから前記コンピュータの外部記憶装置内の一時ファイルに転送し、転送された複数のレコード群を個別に前記一時ファイルから前記コンピュータの主記憶装置内の第２バッファに転送する第４ステップと、
前記コンピュータの復元手段が、前記第２バッファに蓄えられたレコード群を復元する第５ステップと、
前記コンピュータの生成手段が、復元した複数のレコード群をマージして１本のレコード列を生成する第６ステップと、
前記コンピュータの出力手段が、マージして生成された１本のレコード列を前記コンピュータの外部の出力ファイルに出力する第７ステップと、
を備え、
前記第５ステップは、前記第２バッファに蓄えられたレコード群を請求項４に記載のデータ復元方法を用いて復元することを特徴とするソートマージ処理方法。
【請求項１３】
コンピュータに請求項１又は２に記載の各ステップを備えたデータ圧縮方法を実行させるためのプログラムを記録した媒体。
【請求項１４】
コンピュータに請求項３又は４に記載の各ステップを備えたデータ復元方法を実行させるためのプログラムを記録した媒体。
【請求項１５】
コンピュータに請求項９乃至１２の何れか１項に記載の各ステップを備えたソートマージ処理方法を実行させるためのプログラムを記録した媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はデータ圧縮方法とデータ復元方法およびソートマージ処理装置とソートマージ処理方法およびこれら方法のプログラムを記録する媒体に関する。
【０００２】
【従来の技術】
数字、アルファベット、漢字等の文字から構成されるデータを圧縮する方法に辞書型符号化方式が知られている。辞書型符号化方式は、所定の文字列に対してコードを割り振った辞書を用いてデータ中に現れる連続する文字列をコードに置換して圧縮し、同一文字が連続する箇所を制御文字でさらに圧縮するものである。この方式は事前に所定の文字列を辞書に登録する必要があり、事前の準備に時間と労力を要し、登録漏れがあれば圧縮できない。また圧縮時に辞書を逐次検索する処理に時間を要する。そこで、特開平７−２３９７７１号公報に記載されたデータレコード圧縮方法は、辞書の作成等の特別な作業なしでデータファイル中の連続するデータレコード間に同一値のフィールドが存在する場合にデータレコードを圧縮する方法を開示している。
【０００３】
上記データレコード圧縮方法は、連続する２つのデータレコードの同一箇所に同一文字が予め定められた文字数にわたって連続して現れた部分を垂直圧縮し、さらに、該垂直圧縮したレコードに対し同一文字が予め定められた文字数にわたって連続している部分を水平圧縮するものである。
ところで、一般に大量のデータレコードをソートする場合、ソートマージ処理が行われるが、このソートマージ処理は、入力ファイルに格納された複数のデータレコードを１つづつ入力バッファに読込み、入力バッファに読込んだデータレコードを作業域が一杯になるまで作業域に転送し、作業域に転送されたデータレコード群内でソートした後一時バッファに転送し、一時バッファから一時ファイルに転送する。この一連の処理をソート対象の全てのデータレコード対し繰り返し実行し、しかる後に、一時ファイルに蓄えられたソート後の複数のデータレコード群を個別の一時バッファに転送し、これら一時バッファから作業域に転送し、マージして１本のレコード列を生成して該レコード列を出力ファイルに出力する処理を行っている。
【０００４】
【発明が解決しようとする課題】
しかしながら、上記特開平７−２３９７７１号公報に記載の圧縮方法は、連続する２つのデータレコード間の圧縮に止まり、連続する３つ以上のデータレコードを一括して圧縮できず、圧縮効率が十分でないという問題がある。
一方、上記従来技術によるソートマージ処理は、大量のデータレコードをソートする場合、外部記憶装置の一時ファイルと主記憶装置内の一時バッファとの間のデータ転送に時間を要し、かつ外部記憶装置に退避させるデータ量が増大し、その結果ソートマージ処理時間が増大し、外部記憶装置内のディスクスペースが確保できないという問題がある。
【０００５】
それゆえ、本発明は前記問題を解決し、連続する複数のデータレコードを一括して圧縮することにより圧縮効率を向上させたデータ圧縮方法およびデータ復元方法を提供することを目的とする。
また、本発明はソートマージ処理時間を短縮するとともに外部記憶装置内の記憶部使用エリア（ディスクスペース）を節約するソートマージ処理装置と方法を提供することを他の目的とする。
【０００６】
【課題を解決するための手段】
図１は本発明によるデータ圧縮方法の原理図である。前記問題を解決する本発明の第１態様によるデータ圧縮方法は、複数１〜ｍのコラムからなり所定のフォーマットで作成された複数ｎ個のレコード１〜ｎを有するファイルを圧縮するデータ圧縮方法において、ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号２、５、…を検索して記憶する。次いで、検索されたコラム番号の数からファイル内における圧縮可能なレコード数を算出し、圧縮可能なレコード数の算出結果から、ファイル内のレコードの内、圧縮対象レコードｋ＋１、…、ｎと圧縮非対象レコード１、２、３、…、ｋとを決定し、圧縮非対象レコード１、２、３、…、ｋの内、第１レコードのデータはそのまま記憶し、第２レコードは前記コラム番号２、５、…を記憶するために使用し、圧縮対象レコードｋ＋１、…、ｎにおけるコラム番号２、５、…以外のコラム番号１、３、４、…の記憶部に格納されたデータを、圧縮非対象レコード３、４、…、ｋにおけるコラム番号２、５、…の記憶部に移動する各ステップを備えたことを特徴とする。
【０００７】
上記本発明の第１態様によるデータ圧縮方法は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するファイルを圧縮するコンピュータによるデータ圧縮方法において、前記コンピュータの圧縮手段が、前記ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索し、前記コンピュータの圧縮手段が、検索された前記コラム番号の数を基に前記ファイル内における圧縮可能なレコード数を算出し、前記コンピュータの圧縮手段が、前記圧縮可能なレコード数の算出結果から、前記ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、前記コンピュータの圧縮手段が、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、前記コンピュータの圧縮手段が、検索されたコラム番号に対応する、前記圧縮非対象レコード内の第２レコードのコラム番号にフラグを立て、前記コンピュータの圧縮手段が、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記圧縮対象レコードのコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動する各ステップを備えたことを特徴とする。
【０００８】
本発明の第２態様によるデータ圧縮方法は、複数のコラムからなるフィールドを複数有してなり所定のフォーマットで作成されたレコードを複数有するファイルを圧縮するコンピュータによるデータ圧縮方法において、前記コンピュータの圧縮手段が、前記ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号を検索し、前記コンピュータの圧縮手段が、検索された前記フィールド番号の数を基に前記ファイル内における圧縮可能なレコード数を算出し、前記コンピュータの圧縮手段が、前記圧縮可能なレコード数の算出結果から、前記ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、前記コンピュータの圧縮手段が、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、前記コンピュータの圧縮手段が、検索されたフィールド番号に対応する、前記圧縮非対象レコード内の第２レコードのフィールド番号にフラグを立て、前記コンピュータの圧縮手段が、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記圧縮対象レコードのフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動する各ステップを備えたことを特徴とする。
【０００９】
本発明の第３態様によるデータ復元方法は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有する第１ファイルを圧縮した第２ファイルを第１ファイルに復元するコンピュータによるデータ復元方法であって、前記第２ファイルは、前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号にフラグを立てたデータを持つ第２レコードと、前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮対象レコードにおけるコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動した復元非対象レコードとからなり、前記コンピュータの復元手段が、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたコラム番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたコラム番号以外のコラム番号の記憶部に移動し、前記コンピュータの復元手段が、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたコラム番号の記憶部に前記第１レコードの対応するコラム番号の記憶部に格納されたデータを複写する各ステップを備え、第１ファイルを圧縮した第２ファイルを第１ファイルに復元することを特徴とする。
【００１０】
本発明の第４態様によるデータ復元方法は、複数のコラムからなるフィールドを複数有してなり所定のフォーマットで作成されたレコードを複数有する第１ファイルを圧縮した第２ファイルを第１ファイルに復元するコンピュータによるデータ復元方法であって、前記第２ファイルは、前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号にフラグを立てたデータを持つ第２レコードと、前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮対象レコードにおけるフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動した復元非対象レコードとからなり、前記コンピュータの復元手段が、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたフィールド番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたフィールド番号以外のフィールド番号の記憶部に移動し、前記コンピュータの復元手段が、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたフィールド番号の記憶部に前記第１レコードの対応するフィールド番号の記憶部に格納されたデータを複写する各ステップを備え、第１ファイルを圧縮した第２ファイルを第１ファイルに復元することを特徴とする。
【００１１】
前記問題を解決する本発明の第５態様によるソートマージ処理装置は、複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、所定数のレコード毎に所定のキーに従ってソートする手段と、ソートしたレコード群を蓄える第１バッファと、第１バッファに蓄えられたレコード群を圧縮するレコード群圧縮手段と、圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、前記第２バッファに蓄えられたレコード群を復元する復元手段と、復元した複数のレコード群をマージして１本のレコード列を生成する手段と、マージして生成された１本のレコード列を出力ファイルに出力する手段と、
を備え、前記レコード群圧縮手段は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを圧縮する手段であって、前記レコード群の第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索し、検索された前記コラム番号の数を基に前記レコード群の第１ファイル内における圧縮可能なレコード数を算出し、前記圧縮可能なレコード数の算出結果から、前記レコード群の第１ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、検索されたコラム番号に対応する、前記圧縮非対象レコード内の第２レコードのコラム番号にフラグを立て、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記圧縮対象レコードのコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動する各ステップを備える、ことを特徴とする。
【００１２】
上記本発明の第５態様によるソートマージ処理装置は、一時ファイルと第１バッファおよび第２バッファとの間で転送されるデータ長が圧縮により短くなっているので、Ｉ／Ｏ処理時間が短縮されるとともに一時ファイルで使用するディスクスペースが節約できる。
【００１３】
本発明の第５形態によるソートマージ処理装置は、複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、所定数のレコード毎に所定のキーに従ってソートする手段と、ソートしたレコード群を蓄える第１バッファと、第１バッファに蓄えられたレコード群を圧縮する圧縮手段と、圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、復元した複数のレコード群をマージして１本のレコード列を生成する手段と、マージして生成された１本のレコード列を出力ファイルに出力する手段と、を備え、前記レコード群復元手段は、複数のコラムからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを請求項５に記載のレコード群圧縮手段により圧縮した第２ファイルを復元する手段であって、前記第２ファイルは、前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号にフラグを立てたデータを持つ第２レコードと、前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないコラム番号に対応する前記第１ファイルの圧縮対象レコードにおけるコラム番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるコラム番号の記憶部に移動した復元非対象レコードとからなり、前記レコード群復元手段は、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたコラム番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたコラム番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたコラム番号以外のコラム番号の記憶部に移動し、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたコラム番号の記憶部に前記第１レコードの対応するコラム番号の記憶部に格納されたデータを複写する各ステップを備える、ことを特徴とする。
【００１４】
本発明の第５形態によるソートマージ処理装置は、複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、所定数のレコード毎に所定のキーに従ってソートする手段と、ソートしたレコード群を蓄える第１バッファと、第１バッファに蓄えられたレコード群を圧縮するレコード群圧縮手段と、圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、復元した複数のレコード群をマージして１本のレコード列を生成する手段と、マージして生成された１本のレコード列を出力ファイルに出力する手段と、を備え、前記レコード群圧縮手段は、複数のフィールドからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを圧縮する手段であって、前記レコード群の第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号を検索し、検索された前記フィールド番号の数を基に前記レコード群の第１ファイル内における圧縮可能なレコード数を算出し、前記圧縮可能なレコード数の算出結果から、前記レコード群の第１ファイル内のレコードの内、圧縮対象レコードと圧縮非対象レコードとを決定し、前記圧縮非対象レコードの内、第１レコードのデータはそのまま記憶し、検索されたフィールド番号に対応する、前記圧縮非対象レコード内の第２レコードのフィールド番号にフラグを立て、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記圧縮対象レコードのフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する第１および前記第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動する各ステップを備える、ことを特徴とする。
【００１５】
本発明の第５形態によるソートマージ処理装置は、複数のレコードを格納する入力ファイルから順次レコードを受け、これらレコードをソートマージするソートマージ処理装置において、所定数のレコード毎に所定のキーに従ってソートする手段と、ソートしたレコード群を蓄える第１バッファと、第１バッファに蓄えられたレコード群を圧縮する圧縮手段と、圧縮したレコード群を前記第１バッファから一時ファイルに転送する手段と、転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファと、前記第２バッファに蓄えられたレコード群を復元するレコード群復元手段と、復元した複数のレコード群をマージして１本のレコード列を生成する手段と、マージして生成された１本のレコード列を出力ファイルに出力する手段と、を備え、前記レコード群復元手段は、複数のフィールドからなり所定のフォーマットで作成されたレコードを複数有するレコード群であって前記第１バッファに蓄えられたレコード群の第１ファイルを請求項７に記載のレコード郡圧縮手段により圧縮した第２ファイルを復元する手段であって、前記第２ファイルは、前記第１ファイル内の圧縮非対象レコード内の第１レコードのデータと同じデータを持つ第１レコードと、前記第１ファイル内の圧縮非対象レコード内の第２レコードにおいて、該第１ファイル内の各レコードの同一フィールド番号のデータが全て一致するフィールド番号にフラグを立てたデータを持つ第２レコードと、前記第１ファイル内の第１および第２レコードを除く前記圧縮非対象レコードにおいて、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮非対象レコードのデータと、前記第２レコードにおける記憶部にフラグが立てられていないフィールド番号に対応する前記第１ファイルの圧縮対象レコードにおけるフィールド番号の記憶部に格納されたデータを、前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記圧縮非対象レコードにおけるフィールド番号の記憶部に移動した復元非対象レコードとからなり、前記レコード群復元手段は、前記第２ファイル内の前記第２レコードにおける記憶部にフラグが立てられたフィールド番号に対応する前記第１および第２レコードを除く前記復元非対象レコードにおける前記フラグが立てられたフィールド番号の記憶部に格納されたデータを、前記第２ファイルを前記第１ファイルに復元する復元ファイル内の前記圧縮対象レコードに対応する復元対象レコードにおける前記フラグが立てられたフィールド番号以外のフィールド番号の記憶部に移動し、前記復元ファイルの前記第２レコード以降の全てのレコードにおける前記フラグが立てられたフィールド番号の記憶部に前記第１レコードの対応するフィールド番号の記憶部に格納されたデータを複写する各ステップを備える、ことを特徴とする。
【００１６】
本発明の第６態様によるソートマージ処理方法は、複数のレコードを格納する入力ファイルからコンピュータに入力されるレコードを順次読取り、これらレコードをソートマージするコンピュータによるソートマージ処理方法において、前記コンピュータのソート手段が、所定数のレコード毎に所定のキーに従ってソートする第１ステップと、前記コンピュータの一時蓄積手段が、ソートしたレコード群を前記コンピュータの主記憶装置内の第１バッファに蓄える第２ステップと、前記コンピュータの圧縮手段が、前記第１バッファに蓄えられたレコード群を圧縮する第３ステップと、前記コンピュータの転送手段が、圧縮されたレコード群を前記第１バッファから前記コンピュータの外部記憶装置内の一時ファイルに転送し、転送された複数のレコード群を個別に前記一時ファイルから前記コンピュータの主記憶装置内の第２バッファに転送する第４ステップと、前記コンピュータの復元手段が、前記第２バッファに蓄えられたレコード群を復元する第５ステップと、前記コンピュータの生成手段が、復元した複数のレコード群をマージして１本のレコード列を生成する第６ステップと、前記コンピュータの出力手段が、マージして生成された１本のレコード列を前記コンピュータの外部の出力ファイルに出力する第７ステップと、を備え、前記第３ステップは、請求項１に記載のデータ圧縮方法を用いて前記第１バッファに蓄えられたレコード群を圧縮することを特徴とする。
【００１７】
本発明の第６態様によるソートマージ処理方法において、第３ステップのデータ圧縮処理は、前記第１態様又は第２態様に記載の各ステップを備える。
本発明の第６態様によるソートマージ処理方法において、第５ステップのデータ復元処理は、前記第３態様又は第４態様に記載の各ステップを備える。
本発明の第７態様による媒体は、前記第１態様又は第２態様に記載の各ステップを備えたデータ圧縮方法を実行させるためのプログラムを記録した媒体である。
【００１８】
本発明の第８態様による媒体は、コンピュータに前記第３態様又は第４態様に記載の各ステップを備えたデータ復元方法を実行させるためのプログラムを記録した媒体である。
本発明の第９態様による媒体は、コンピュータに前記第６態様に記載の各ステップを備えたソートマージ処理方法を実行させるためのプログラムを記録した媒体である。
【００１９】
【発明の実施の形態】
図２は本発明によるソートマージ処理装置の概略構成図である。前記問題を解決する本発明の第５態様によるソートマージ処理装置は、複数のレコードを格納する入力ファイル１から順次レコードを入力バッファ２で受け、これらレコードを第１作業域３に展開してソートマージするソートマージ処理装置１０において、所定数のレコード毎に所定のキーに従ってソートするソート手段と、ソートしたレコード群を一時的に蓄える第１バッファ４と、第１バッファ４に蓄えられたレコード群を圧縮する圧縮手段と、圧縮したレコード群を第１バッファ４から一時ファイル５に転送する転送手段と、転送された複数のレコード群を個別に一時ファイル５から受ける複数の第２バッファ６と、第２バッファ６に一時的に蓄えられたレコード群を第２作業域７に展開して復元する復元手段と、復元した複数のレコード群を第２作業域で展開してマージし、１本のレコード列を生成する第１列生成手段と、マージして生成された１本のレコード列を出力ファイルに出力する第１出力手段と、転送された複数のレコード群を個別に一時ファイルから受ける複数の第２バッファ６と、第２バッファ６に格納されたレコード群を復元する復元手段と、復元した複数のレコード群をマージして１本のレコード列を生成する第２列生成手段と、マージして生成されたレコード列を出力ファイルに出力する第２出力手段と、を備えたことを特徴とする。
【００２０】
上記各手段はソートマージ処理装置１０におけるメモリ（図示せず）内に格納された各々のプログラムを実行することにより達成される。
また、ソートマージ処理装置１０には補助記憶装置（図示せず）が接続されており、この補助記憶装置を介してソートマージ処理装置１０のＣＰＵは、媒体２０に記録された種々のプログラムを読取り、各種の処理を実行する。媒体２０には、本発明のデータ圧縮方法を実行させるためのプログラムを記録した媒体、本発明のデータ復元方法を実行させるためのプログラムを記録した媒体および本発明のソートマージ処理方法を実行させるためのプログラムを記録した媒体、等が記録される。
【００２１】
図２に示す本発明のソートマージ処理装置は、一時ファイルと第１バッファおよび第２バッファとの間で転送されるデータ長が圧縮により短くなっているので、Ｉ／Ｏ処理時間が短縮されるとともに一時ファイルで使用するディスクスペースが節約できる。
図３〜５は本発明による実施例のソートマージ処理のフローチャートである。本実施例は、図２に示すソートマージ処理装置を用いて１８個のレコードをソートマージする例を示す。図３〜５において各ブロックの左上にステップ番号を示す。以下、図２と図３〜５を相互に参照しつつ説明する。先ず、ステップ１では、入力ファイル１にソートマージする１８個のレコードを設定する。
【００２２】
ステップ２では、入力ファイル２から主記憶装置（以下メモリと記す）内の入力バッファ２に３個のレコード０、７、６を読込む。ステップ３では、入力バッファ２内のデータをレコード単位にメモリ上の第１作業域３へ移動する。ステップ４では、メモリ上の第１作業域３に空きがあるのでさらに入力ファイル１からレコード１１、３、１４を読込み、第１作業域３に移動する。その結果、第１作業域３には、レコード０、７、６、１１、３、１４が書込まれる。
【００２３】
次に、ステップ５では、第１作業域３が一杯になったら、昇順にソートする。そのソート結果は０、３、６、７、１１、１４となる。ステップ６では、入力ファイル１にまだデータが残っているので、ソート済のレコードを一時的に使用する第１バッファ４に３レコード分詰める。この第１バッファ４は３レコード分だけデータを蓄えることができる。
【００２４】
次に、図４に示すステップ７では、第１バッファ４内のデータ０、３、７を圧縮した後、一時ファイル５へ移動（転送）する。ステップ６、７を繰り返すと、第１バッファ４内のデータは、０、３、６、７、１１、１４となる。次いで、ステップ８では、ステップ１で設定した入力ファイル２内のデータが全て入力バッファ２に読込まれるまでステップ１〜７を繰り返す。その結果、一時ファイル５内には図示の様にデータが書込まれる。
【００２５】
次に、図５に示すステップ９では、一時ファイル５内の各ストリングＩ、II、III の先頭ブロック（３レコード分）、すなわちストリングＩからはレコード列０、３、６がストリングIIからはレコード列２、５、８が、ストリングIII からはレコード列１、４、９が、それぞれ内部メモリ内の３個の第２バッファ６ａ、６ｂ、６ｃに読込まれる。次いで、ステップ１０では、一時的にデータを蓄える３個の第２バッファ６ａ、６ｂ、６ｃに読込まれたレコード列を復元する。ステップ１１では、復元したレコード列をメモリ上の第２作業域７に移動し、第２作業域７上で展開してマージし、その結果を出力バッファ８を介して出力ファイル９に書込む。
【００２６】
次に、本発明のデータ圧縮方法について以下に説明する。
図６は本発明による実施例のデータ圧縮方法における初期処理の説明図であり、（Ａ）は圧縮前の９つのレコードからなるバッファを示す図であり、（Ｂ）はバッファ内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索した後の状態を示す図である。図６以降において、第１レコードから第９レコードの各レコードは３２文字からなり、１文字１バイトであるのでレコード長は３２バイトである。したがって、図６に示すバッファ長は２８８バイトである。
【００２７】
実施例のデータ圧縮方法の初期処理は以下の手順で実行される。
１）第１レコード目と第２レコード目の同一オフセットの文字をレコードの先頭から順に比較する。ここで、オフセットとは、先頭から何コラム離れているかを示すもので、例えば第１レコードのオフセット３は文字１、オフセット５は文字Ｈ、オフセット２０は文字７である。このように、各レコードはオフセット０〜３１の位置に１つの文字データを有する。
【００２８】
２）上記ステップ１）の結果、同一文字のときは、第２レコード目の同一オフセットの位置（同一コラム番号）にフラグ＊を立てる。このフラグ＊は、第２レコード内の文字情報として使用されないものから適宜選択して決定する。
３）次に、第１レコードと第３レコードの同一オフセットの文字を比較し、同一文字であれば第４レコードの同一オフセットの文字と比較し、順次第９レコードまでこの比較を繰り返す。
【００２９】
４）上記ステップ３）の途中で、同一オフセットの文字の比較結果、異なる文字のときは、第２レコードのフラグを第１レコードの同一オフセット位置の文字に複写して元に戻し、比較を中断する。
５）さらに、第１レコード目と第２レコード目の同一オフセットの文字の比較を繰り返し実行し、レコード長だけ、すなわちオフセット３１まで行う。
【００３０】
図６の（Ｂ）は、上記ステップ１）〜５）を終了した後のバッファを示す。図示するように第２レコードのフラグ＊の位置では、各レコードの同一オフセットの文字が全て同一であることが判る。
図７は本発明による実施例のデータ圧縮方法における圧縮可能レコード数の計算処理の説明図である。図示するように、１レコードの長さをＲＬ、１バッファ中のレコード数（ブロッキングファクタ）をＢＦ、初期処理でマークされたフラグ＊の数をＡ、圧縮後のレコード数をＸ、圧縮対象のレコード数をＹとすると、下記の式が成立する。
【００３１】
Ｙ  ＝ＢＦ  −  Ｘ          ………  （１）
ここで、ＲＬ＝３２バイト、ＢＦ＝９レコード、Ａ＝１４個である。
また、圧縮（移動）元バイト数と圧縮（移動）先バイト数との関係は、圧縮（移動）元バイト数≦圧縮（移動）先バイト数であり、これは下式で表される。
Ｙ（ＲＬ−Ａ）≦（Ｘ−２）Ａ  ……  （２）
式（２）の右辺で−２と減算するのは、第１レコードが同一オフセットの文字を記憶しておくために使用され、第２レコードが全てのレコードにおいて同一文字が書込まれたオフセットの位置を記憶しておくために使用されることから、この２レコード分を圧縮の対象から除外するためである。本実施例では下記の式が成立する。
【００３２】
Ｙ  ＝９  −  Ｘ                  ………  （１’）
Ｙ（３２−１４）≦（Ｘ−２）１４  ………  （２’）
（２’）は次式で表される。
９Ｙ≦（Ｘ−２）７                ………  （２”）
したがって、Ｙ≦３．０６２５となり、Ｙの最も大きい整数３が圧縮（移動）可能なレコード数となる。
【００３３】
次に、本発明による実施例のバッファ圧縮処理について図８と図９を参照しつつ以下に説明する。
図８は本発明による実施例のバッファ圧縮処理における文字データの移動の説明図であり、（Ａ）は移動対象レコードを示す図であり、（Ｂ）は移動対象部分を示す図である。上述したように、圧縮（移動）レコード数が決定した後、圧縮非対象レコードの内、第１レコードが同一オフセットの文字を記憶しておくために使用され、第２レコードが全てのレコードにおいて同一文字が書込まれたオフセットの位置を記憶しておくために使用され、他の圧縮非対象レコード、すなわち第３〜第６レコードにおけるフラグ＊の位置に、圧縮対象レコード、すなわち第７〜９レコードにおけるフラグ＊の位置以外のオフセットの位置の記憶部に格納されたデータを移動する。図８の（Ａ）に示すように、移動対象レコードは、第７〜９レコードであり、図８の（Ｂ）に示すように、移動対象部分は、第７〜９レコードにおけるフラグ＊のないオフセット位置、すなわちオフセット３、５〜１３、１８、２０、２１、２３〜２６および３１である。
【００３４】
図９は本発明による実施例のバッファ圧縮処理における文字データの移動の説明図であり、（Ａ）は圧縮非対象レコード内の記憶場所を示す図であり、（Ｂ）は圧縮後のバッファ内のデータ配列を示す図である。図９の（Ａ）に示すように、図８の（Ｂ）で示した移動対象部分の文字データは、第３レコードから第６レコードにおけるフラグ＊の下のオフセット位置に移動される。すなわち、これらの位置が圧縮非対象レコード内の記憶場所である。図９の（Ｂ）に示すように、圧縮後のバッファ内のデータ配列は、本発明により９レコードが６レコードに圧縮されたことを示している。次に、本発明による実施例のバッファ圧縮処理の手順を図１０に示すフローチャートを用いて以下に説明する。
【００３５】
図１０は本発明による実施例のバッファ圧縮処理のフローチャートである。図８と図９を参照しつつ本バッファ圧縮処理を説明する。先ず、ステップ１００１では、初期設定する。すなわち、Ｉ＝０、ＢＦ＝（Ｘ＋Ｙ）＝９、Ｘ＝６、Ｃ＝（レコード長−フラグの数）×（ＢＦ−Ｘ）＝（３２−１４）×（９−６）＝５４、移動元レコード番号のカウンタＪ＝Ｘ＋１＝７、移動先のレコード番号のカウンタＫ＝３にそれぞれ設定する。ここで、Ｉは本処理ルーチンの終了判定に使用するカウンタで移動対象文字数Ｃ（＝５４）までカウントして終了する。ＢＦは圧縮前のレコード数で９、Ｘは圧縮後のレコード数で６、ＹはＢＦ−Ｘ（＝９−６）で３である。ステップ１００２では、移動元を第Ｊ（７、８、９、７、８、…）レコード上の第２レコードのフラグ以外の位置と同一オフセットに決定する。ステップ１００３では、移動先を第Ｋ（３、４、５、６、３、４、…）レコード上で第２レコードのフラグの位置と同一オフセットに決定する。
【００３６】
次いで、ステップ１００４では、移動元から移動先へ複写する。ステップ１００５では、Ｉ、Ｊ、Ｋにそれぞれ１を加算する。次に、ステップ１００６では、カウンタＩがＣまでカウントしたか否かを判別し、その判別結果がＹＥＳのときは圧縮処理を終了し、ＮＯのときはステップ１００７へ進む。ステップ１００７では、移動元のレコード番号ＪがＢＦより小（Ｊ≦ＢＦ）か否かを判別し、Ｊ≦ＢＦのときはステップ１００８へ進み、Ｊ＞ＢＦのときはステップ１００９へ進み、ステップ１００９ではＪ＝Ｘ＋１を計算する。ステップ１００８では移動元を第Ｊレコードの同一オフセットに変更し、ステップ１０１１へ進む。ステップ１０１０では移動元を第Ｊレコード上で第２レコードの次のフラグ以外の位置と同一オフセットに変更し、ステップ１０１１へ進む。
【００３７】
ステップ１０１１では、Ｋ≦Ｘか否かを判別し、Ｋ≦Ｘのときはステップ１０１２へ進み、Ｋ＞Ｘのときはステップ１０１３へ進む。ステップ１０１２では移動先を第Ｋレコードの同一オフセットに変更する。ステップ１０１３では、Ｋ＝３に設定し、次いでステップ１０１４へ進む。ステップ１０１４では、移動先を第Ｋレコード上で第２レコードの次のフラグの位置と同一オフセットに変更する。ステップ１０１２およびステップ１０１４実行後は再びステップ１００４へ戻り、ステップ１００６でＩ＝Ｃとなるまでステップ１００４から１０１４を繰り返す。
【００３８】
次に、本発明による実施例のバッファ復元処理について図１１と図１２を参照しつつ以下に説明する。
図１１は本発明による実施例のバッファ復元処理における文字データの移動の説明図であり、（Ａ）は復元対象部分を示す図であり、（Ｂ）は復元により圧縮された文字が元の位置に戻される復元部分を示す図である。図１１の（Ａ）に示す復元対象部分は、図９の（Ａ）で示した圧縮非対象レコード内の記憶場所に対応する。図１１の（Ｂ）に示す復元により圧縮された文字が元の位置に戻される部分は図８の（Ｂ）で示す移動対象部分に対応する。
【００３９】
図１２は本発明による実施例のバッファ復元処理における文字データの移動の説明図であり、（Ａ）はフラグのオフセット列を除き復元により圧縮された文字が元の位置に戻された状態を示す図であり、（Ｂ）はフラグのオフセット列を含めた圧縮後のバッファ内のデータ配列を示す図である。図１２の（Ａ）は、図１１の（Ａ）に示す復元対象部分を図１１の（Ｂ）に示す復元部分に移動した後のバッファのデータ配列を示す。図１２の（Ｂ）はレコード番号２以降のレコード番号２にフラグ＊があるオフセットの列を同一オフセットに相当する第１レコードの文字データを複写した後の復元終了後のバッファ内のデータ配列を示す図である。次に、本発明による実施例のバッファ復元処理の手順を図１３に示すフローチャートを用いて以下に説明する。
【００４０】
図１３は本発明による実施例のバッファ復元処理のフローチャートである。先ず、ステップ１３０１では、初期設定する。すなわち、Ｉ＝０、ＢＦ＝（Ｘ＋Ｙ）＝９、Ｘ＝６、Ｃ＝（レコード長−フラグの数）×（ＢＦ−Ｘ）＝（３２−１４）×（９−６）＝５４、移動元レコード番号のカウンタＪ＝３、移動先のレコード番号のカウンタＫ＝Ｘ＋１＝６＋１＝７にそれぞれ設定する。ここで、Ｉは本処理ルーチンの終了判定に使用するカウンタで移動対象文字数Ｃ（＝５４）までカウントして終了する。ＢＦは復元後のカウント数で９、Ｘは復元前のレコード数で６、ＹはＢＦ−Ｘ（＝９−６）で３である。ステップ１３０２では、移動先を第Ｋ（７、８、９、７、８、…）レコード上の第２レコードのフラグ以外の位置と同一オフセットに決定する。ステップ１３０３では、移動元を第Ｊ（３、４、５、６、３、４、…）レコード上で第２レコードのフラグの位置と同一オフセットに決定する。
【００４１】
次いで、ステップ１３０４では、移動元から移動先へ複写する。ステップ１３０５では、Ｉ、Ｊ、Ｋにそれぞれ１を加算する。次に、ステップ１３０６では、カウンタＩがＣまでカウントしたか否かを判別し、その判別結果がＹＥＳのときはステップ１３０８へ進み、第１レコード上で第２レコードのフラグ位置と同一オフセットの文字を第２レコードから第ＢＦ（＝９）レコード上の同一オフセットに複写し、第２レコード上の全てのフラグに対して上記複写を実行し、復元処理を終了する。一方、ステップ１３０６の判別結果がＮＯのときはステップ１３０７へ進む。ステップ１３０７では、移動先のレコード番号ＫがＢＦより小（Ｋ≦ＢＦ）か否かを判別し、Ｋ≦ＢＦのときはステップ１３０９へ進み、Ｋ＞ＢＦのときはステップ１３１０へ進み、ステップ１３１０ではＫ＝Ｘ＋１を計算する。ステップ１３０９では移動元を第Ｋレコードの同一オフセットに変更し、ステップ１３１２へ進む。ステップ１３１１では移動元を第Ｋレコード上で第２レコードの次のフラグ以外の位置と同一オフセットに変更し、ステップ１３１２へ進む。
【００４２】
ステップ１３１２では、Ｊ≦Ｘか否かを判別し、Ｊ≦Ｘのときはステップ１３１３へ進み、Ｊ＞Ｘのときはステップ１３１４へ進む。ステップ１３１３では移動先を第Ｊレコードの同一オフセットに変更する。ステップ１３１４では、Ｊ＝３に設定し、次いでステップ１３１５へ進む。ステップ１３１５では、移動先を第Ｊレコード上で第２レコードの次のフラグの位置と同一オフセットに変更する。ステップ１３１３およびステップ１３１５実行後は再びステップ１３０４へ戻り、ステップ１３０６でＩ＝Ｃとなるまでステップ１３０４から１３１５を繰り返す。
【００４３】
次に、本発明のソートマージ処理手順を図２を参照しつつ以下に説明する。
図１４は本発明のソートマージ処理におけるソート処理のフローチャートであり、図１５は本発明のソートマージ処理におけるマージ処理のフローチャートである。先ず、ステップ１４０１では入力ファイル１から入力バッファ２にレコードデータを順次読込む。ステップ１４０２では、入力バッファ２から第１作業域３にレコードを移動する。ステップ１４０３では、第１作業域３に空きが有るか否かを判別する。その判別結果がＹＥＳのときはステップ１４０１へ戻り、ステップ１４０１、１４０２を繰り返し実行する。その判別結果がＮＯのときはステップ１４０４へ進み、第１作業域３上のレコードをソートする。ステップ１４０５では、入力ファイル１内のレコードの読込みが完了したか否かを判別し、その判別結果がＹＥＳのときはステップ１４０６へ進み、ＮＯのときは１４０７へ進む。ステップ１４０６では、一時ファイル５を使用したか否かを判別し、その判別結果がＹＥＳのときはステップ１４０７へ進み、ＮＯのときはステップ１４０８へ進み、ステップ１４０８では、第１作業域３上でソートしたレコードを図示しない出力バッファを介して出力ファイル９へ書込み、本ソートマージ処理を終了する。
【００４４】
次に、ステップ１４０７では、第１作業域３上のレコードを第１バッファ４に移動し、ステップ１４０９へ進む。ステップ１４０９では、第１バッファ４がレコードで一杯になったか否かを判別し、その判別結果がＹＥＳのときはステップ１４１０へ進み、ＮＯのときはステップ１４０７へ戻り、ステップ１４０７を繰り返し実行する。ステップ１４１０では、第１バッファ４を圧縮し一時ファイル５に書込む（転送する）。次いで、ステップ１４１１では、第１作業域３は全て空きか否かを判別し、その判別結果がＹＥＳのときはステップ１４１２へ進み、ＮＯのときはステップ１４０７へ戻り、ステップ１４０７を繰り返し実行する。
【００４５】
ステップ１４１２では、一時ファイル５に転送されたストリング（レコード列）をカウントする。ステップ１４１３では、入力ファイル５内のレコードの読込みが完了したか否かを判別し、その判別結果がＹＥＳのときはステップ１４１４へ進み、ＮＯのときはステップ１４０１へ戻る。
ステップ１４１４では、各ストリングの先頭から順に１ブロック分づつ一時ファイル５から第２バッファに読込む。ステップ１４１５では、第２バッファ６を復元し、ステップ１４１６では、各第２バッファ６の先頭レコードから順に第２作業域７へ展開してマージし、出力バッファ８に書込む。ステップ１４１７では、出力バッファ８から出力ファイル９へレコードを書込む。ステップ１４１８では、全てのマージ処理が完了したか否かを判別し、その判別結果がＹＥＳのときは本ソートマージ処理を終了し、ＮＯのときはステップ１４１４へ戻り、ステップ１４１４〜１４１８を繰り返し実行する。
【００４６】
以上、説明した実施例は、複数のレコード間の同一コラム番号の文字データが全て一致するコラム番号を検索し、これらのコラムを圧縮に利用するものであるが、本発明はこのコラムに代えて複数のコラムからなるフィールド単位で圧縮することもできる。すなわち、コラム同様に、複数のフィールドからなる所定のフォーマットで作成したレコード間の同一フィールド番号のデータが全て一致するフィールド番号を検索し、これらのフィールドの記憶部を圧縮に利用することによりさらに大容量の圧縮が可能である。
【００４７】
【発明の効果】
本発明のデータ圧縮方法とデータ復元方法によれば、複数ｎのレコード内の同一コラム又は同一フィールドのデータの一致を検索し、複数（ｎ−ｋ）個の圧縮対象レコードにおけるデータが一致したコラム又はフィールドと異なるコラム又はフィールドのデータを、圧縮対象レコードｋ個の内、（ｋ−２）個のレコードにおける前記コラム又はフィールドの記憶部に移動して圧縮するので、圧縮効率が大幅に向上する。
【００４８】
本発明のソートマージ処理装置またはソートマージ処理方法によれば、外部記憶装置（一時ファイル）と主記憶装置（バッファ）との間で転送されるデータ長が圧縮により短くなるので、Ｉ／Ｏ処理時間を短縮できるとともにディスクスペースが節約できる。
【図面の簡単な説明】
【図１】本発明によるデータ圧縮方法の原理図である。
【図２】本発明によるソートマージ処理装置の概略構成図である。
【図３】本発明による実施例のソートマージ処理のフローチャート前半部である。
【図４】本発明による実施例のソートマージ処理のフローチャート中半部である。
【図５】本発明による実施例のソートマージ処理のフローチャート後半部である。
【図６】本発明による実施例のデータ圧縮方法における初期処理の説明図であり、（Ａ）は圧縮前の９つのレコードからなるファイルを示す図であり、（Ｂ）はファイル内の各レコードの同一コラム番号のデータが全て一致するコラム番号を検索した後の状態を示す図である。
【図７】本発明による実施例のデータ圧縮方法における圧縮可能レコード数の計算処理の説明図である。
【図８】本発明による実施例のバッファ圧縮処理における文字データの移動の説明図であり、（Ａ）は移動対象レコードを示す図であり、（Ｂ）は移動対象部分を示す図である。
【図９】本発明による実施例のバッファ圧縮処理における文字データの移動の説明図であり、（Ａ）は圧縮非対象レコード内の記憶場所を示す図であり、（Ｂ）は圧縮後のバッファ内のデータ配列を示す図である。
【図１０】本発明による実施例のバッファ圧縮処理のフローチャートである。
【図１１】本発明による実施例のバッファ復元処理における文字データの移動の説明図であり、（Ａ）は復元対象部分を示す図であり、（Ｂ）は復元により圧縮された文字が元の位置に戻される部分を示す図である。
【図１２】本発明による実施例のバッファ復元処理における文字データの移動の説明図であり、（Ａ）はフラグのオフセット列を除き復元により圧縮された文字が元の位置に戻された状態を示す図であり、（Ｂ）はフラグのオフセット列を含めた圧縮後のバッファ内のデータ配列を示す図である。
【図１３】本発明による実施例のバッファ復元処理のフローチャートである。
【図１４】本発明のソートマージ処理におけるソート処理のフローチャートである。
【図１５】本発明のソートマージ処理におけるマージ処理のフローチャートである。
【符号の説明】
１…入力ファイル
２…入力バッファ
３…第１作業域
４…第１バッファ
５…一時ファイル
６…第２バッファ
７…第２作業域
８…出力バッファ
９…出力ファイル
１０…ソートマージ処理装置
２０…記録媒体
【図１】
0004036514.tif 000002
【図２】
0004036514.tif 000003
【図３】
0004036514.tif 000004
【図４】
0004036514.tif 000005
【図５】
0004036514.tif 000006
【図６】
0004036514.tif 000007
【図７】
0004036514.tif 000008
【図８】
0004036514.tif 000009
【図９】
0004036514.tif 000010
【図１０】
0004036514.tif 000011
【図１１】
0004036514.tif 000012
【図１２】
0004036514.tif 000013
【図１３】
0004036514.tif 000014
【図１４】
0004036514.tif 000015
【図１５】
0004036514.tif 000016