(57)【特許請求の範囲】
【請求項１】
少なくとも１つの可変長のフィールドを含むレコードを複数格納した元ファイルの管理を行うファイル管理方法において、
元ファイルに格納されたレコードを構成する各フィールドをそれぞれ、データの区切りを示す固定境界と区切りが合致する１つの内部フィールドに変換するフィールド変換ステップと、
変換された内部フィールドにより構成される全レコードを、複数の群に分割することによってレコードグループを生成するレコードグループ生成ステップと、
各レコードグループにおいて、各レコードにおける同一フィールドが同じグループに含まれるように分割することでブロックを生成するブロック生成ステップと、
レコ−ドグループ毎に、当該レコ−ドグループにおいて生成されたブロックを並べて含むグループを生成し、更にその生成したグループを並べて含むファイルを転置ファイルとして生成する転置ファイル生成ステップと、
を含み、元ファイルからのデータ読出し要求に対して転置ファイルにアクセスを行うことを特徴とするファイル管理方法。
【請求項２】
前記フィールド変換ステップは、内部フィールドに空き領域を付加することによって各内部フィールドの区切りを物理的な処理単位となる境界に合致させることを特徴とする請求項１記載のファイル管理方法。
【請求項３】
前記レコードグループ生成ステップは、各レコードグループに含まれるレコード数を可変とし、転置ファイルへのアクセス時には予め設定された各レコードグループに含まれるレコード数を参照することによってフィールドデータの格納位置を特定することを特徴とする請求項１記載のファイル管理方法。
【請求項４】
前記ブロック生成ステップは、小さいサイズのブロックに空き領域を付加することによって全ブロックの大きさを統一することを特徴とする請求項３記載のファイル管理方法。
【請求項５】
前記ブロック生成ステップは、各レコードにおいて同一位置にあるフィールドが複数含まれるようにブロックを生成することを特徴とする請求項１記載のファイル管理方法。
【請求項６】
前記ブロック生成ステップは、隣接していないフィールドによってブロックを生成することを特徴とする請求項５記載のファイル管理方法。
【請求項７】
前記ブロック生成ステップは、生成したブロックサイズが物理的な最小入出力単位の整数倍と一致しないときには、最小入出力単位の整数倍になるように当該ブロックに空き領域を付加することを特徴とする請求項１記載のファイル管理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はファイル管理方法、特にデータベース処理など大量に記憶されたデータから必要なデータだけを効率良く読み出すための改良されたファイル管理方法に関する。
【０００２】
【従来の技術】
データがレコード単位に格納されたファイルから所望するデータを取り出す場合、当該データを含むレコード全体を入出力バッファに書き込み、その入出力バッファの中から該当するフィールドのみを切り出す処理が必要であった。つまり、例えば５１２バイトで１レコードが形成されている場合には、所望するデータが４バイトであっても１レコードすなわち５１２バイト分をファイルから読み出さなければならなかった。例をあげて説明すると、社員データベースの中から氏名と住所だけを取り出して社員の住所録を作成する場合、上記のデータ読出し方法に従えば社員全員のレコードを入出力バッファへ読み出して、その中から氏名と住所だけを取り出さなければならない。このような方法だと必要以外のデータも読み出さなくてはならず、効率的でないし、処理負荷が無用に増大してしまう。
【０００３】
そこで、本願と同一の出願人は、データをレコード単位に読み出すのではなく各レコードにおいてフィールド単位で読み出すことができるようにしたファイル管理方法を提案した（特願平０９−３１９５２７号、以下「先行文献」）。
【０００４】
この管理方法について図９を用いて説明する。元ファイル１には複数のフィールド２から構成されるレコ−ド３が複数格納されているとき、レコード３を一定件数、例えばＮレコードずつ分割する。次に、分割した各グループにおいて各レコードの先頭から順に一フィールドずつ分割することによって同一位置のフィールドをまとめたブロック４を生成する。そして、分割した各グループにおいて分割したブロック４を先頭から行方向に順次連結してグループ５を再編成する。これをレコード３の全件について行い、その後グループ５を連結することで転置ファイル６を生成する。
【０００５】
このような構成の転置ファイル６を生成することにより、例えば、上記例において各レコード３に含まれる氏名のみを取り出したいときには氏名が記憶されたフィールド２を含むブロック４のみを順次読み出せば、社員番号や年齢など氏名以外のデータを社員データベースから読み出す必要がないので、入出力データ量の少ない効率的なデータ読出し処理を行うことができる。
【０００６】
ところで、先行文献においては、処理速度の高速化を実現するためにブロック４を構成する各フィールド（以下、「内部フィールド」）２を固定長としている。特に、内部フィールド長をワード境界などの固定境界と合致させることでディスク装置に対する物理的な入出力回数が増えないように配慮している。従って、元ファイル１を構成する各フィールド（以下、「論理フィールド」）が可変長である場合、図１０に示したように、論理フィールドを１乃至複数の固定境界に従った固定長の内部フィールドに変換していた。そして、論理フィールドのデータで満たされなかった内部フィールド内の領域に対してパディング（ｐａｄｄｉｎｇ）を施している。
【０００７】
なお、転置ファイルの生成処理の説明に関し、元ファイル１に含まれるフィールド２からブロック４が生成されるように図９を用いて上述したが、実際には、論理フィールドから固定長の内部フィールドに変換する処理と、内部フィールドを集めてブロック４を生成する処理という２段階の手順で構成されている。
【０００８】
【発明が解決しようとする課題】
しかしながら、先行文献では、内部フィールドを固定長としていたため、論理フィールドが内部フィールドを超えているときには、固定長の内部フィールド内に納まるように論理フィールドを複数に分割していた。この結果、分割された論理フィールドへの読出し処理は、複数の内部フィールドに対して読出し処理が発生してしまう。
【０００９】
また、ブロックも一定数の内部フィールドを集めて生成していたので、元ファイルに登録されるレコードの書き込みタイミングや登録数によっては物理的な入出力処理まで考慮すると必ずしも効率的な処理が行えなかった。
【００１０】
本発明は以上のような問題を解決するためになされたものであり、その目的は、より柔軟にかつ効率的にファイル管理を行うことのできる改良されたファイル管理方法を提供することにある。
【００１１】
【課題を解決するための手段】
以上のような目的を達成するために、本発明に係るファイル管理方法は、少なくとも１つの可変長のフィールドを含むレコードを複数格納した元ファイルの管理を行うファイル管理方法において、元ファイルに格納されたレコードを構成する各フィールドをそれぞれ、データの区切りを示す固定境界と区切りが合致する１つの内部フィールドに変換するフィールド変換ステップと、変換された内部フィールドにより構成される全レコードを、複数の群に分割することによってレコードグループを生成するレコードグループ生成ステップと、各レコードグループにおいて、各レコードにおける同一フィールドが同じグループに含まれるように分割することでブロックを生成するブロック生成ステップと、レコ−ドグループ毎に、当該レコ−ドグループにおいて生成されたブロックを並べて含むグループを生成し、更にその生成したグループを並べて含むファイルを転置ファイルとして生成する転置ファイル生成ステップとを含み、元ファイルからのデータ読出し要求に対して転置ファイルにアクセスを行うものである。
【００１２】
また、前記フィールド変換ステップは、内部フィールドに空き領域を付加することによって各内部フィールドの区切りを物理的な処理単位となる境界に合致させるものである。
【００１３】
また、前記レコードグループ生成ステップは、各レコードグループに含まれるレコード数を可変とし、転置ファイルへのアクセス時には予め設定された各レコードグループに含まれるレコード数を参照することによってフィールドデータの格納位置を特定するものである。
【００１４】
更に、前記ブロック生成ステップは、小さいサイズのブロックに空き領域を付加することによって全ブロックの大きさを統一するものである。
【００１５】
また、前記ブロック生成ステップは、各レコードにおいて同一位置にあるフィールドが複数含まれるようにブロックを生成するものである。
【００１６】
更に、前記ブロック生成ステップは、隣接していないフィールドによってブロックを生成するものである。
【００１７】
また、前記ブロック生成ステップは、生成したブロックサイズが物理的な最小入出力単位の整数倍と一致しないときには、最小入出力単位の整数倍になるように当該ブロックに空き領域を付加するものである。
【００１８】
【発明の実施の形態】
以下、図面に基づいて、本発明の好適な実施の形態について説明する。
【００１９】
実施の形態１．
図１は、本発明に係るファイル管理方法の実施の形態１に用いられる転置ファイルの生成方法を示すための模式図であり、図２は、元ファイルに含まれているレコードを構成する論理フィールドの構造と本実施の形態におけるファイル管理システムが取り扱う内部フィールドの構造並びに各フィールドの対応関係を示した図である。これらの図及び図３に示したフローチャートを用いて本実施の形態における転置ファイル生成処理について説明する。
【００２０】
本実施の形態におけるこの処理の手順自体は、先行文献に記載された手順と基本的には同様である。すなわち、元ファイルの論理フィールドを内部フィールドに変換し、同一の内部フィールドをまとめることでブロックを生成し、そのブロックを連結することで転置ファイルを生成する。以下、この各処理について詳述する。
【００２１】
ステップ１０１において、まず、図２に示したようにレコードを構成するＭ個の各論理フィールドField0,Field1,...,Field(M-1)をＭ個の内部フィールドField#0,Field#1,...,Field#(M-1)に変換する。本実施の形態においては、この変換を行う際、内部フィールドを可変長とすることで論理フィールドと内部フィールドとを１対１に対応付けできるようにしたことを特徴としている。すなわち、従来においては、全内部フィールドを同一長としていたので、可変長である論理フィールドは、その長さに応じて１乃至複数の内部フィールドに割り当てられていた。しかし、この方法だと、内部フィールド長より長い論理フィールドは複数に分断されてしまい、その結果、一つのフィールドデータを読み出すために物理的には複数の入出力処理が発生する場合があり必ずしも効率的でない。また、一般にメモリアクセスは隣接した連続するアドレスに対して一括して行うと効率的であることが多いため、一つのフィールドデータが格納されるバッファ上のメモリアドレスが物理的に分散すると、必ずしも効率的に処理を行うことができない。そこで、本実施の形態においては、内部フィールドを可変長とし、論理フィールドの長さに応じて内部フィールドの長さを決定するようにした。
【００２２】
また、本実施の形態においては、処理効率を向上させるために固定境界、例えばワード境界に内部フィールドの区切りを合致させることにしている。つまり、内部フィールドの区切りがワード境界に合致するように必要に応じて空き領域を設け、その空き領域に図２に示したようにｐａｄｄｉｎｇ（パディング）を挿入する。この空き領域の大きさは、論理フィールド長と固定境界を意識した内部フィールド長との差分に相当する。従って、図２におけるField1とField#1の関係から明らかなように、論理フィールドの対応する内部フィールドの長さがその論理フィールドと一致するとは限らない。なお、図２にはデータの後ろにパディングを挿入した例を示したが、一内部フィールド内におけるパディングの挿入箇所及び数はこの例に限定されるものではない。
【００２３】
以上のようにして元ファイルに含まれていたレコードが内部フィールドにより構成されるレコードへ変換されると、次に、変換されたレコードを複数の群に分割することによってレコードグループ１１を生成する（ステップ１０２）。本実施の形態の場合、先行文献と同様に元ファイルを予め決められたＮレコードずつに分割して等しい大きさのレコードグループ１１を生成するものとする。
【００２４】
続いて、各レコードグループ１１内においてブロック１２を生成する（ステップ１０３）。これは、各レコードグループ１１に対して同じように処理される。また、各レコードグループ１１における生成ブロック数は全て同じであり、本実施の形態の場合、レコードを先頭から一内部フィールドずつ行方向へ順番に分割する。そして、分割した同一の内部フィールドをまとめることによってブロック１２を生成する。つまり、一のレコードグループ１１における一のブロック１２は、図１に示したように、例えば１番目からＮ番目のレコードにおける同一内部レコードField#0により生成されることになる。端的に言うと、このブロック生成処理は、各レコードを行方向に一内部フィールドずつ分割した後、内部フィールドを列方向にまとめてブロックを生成することになる。結果として、内部フィールドの数と等しい個数のブロック１２が各レコードグループ１１において生成されることになる。本実施の形態のように、固定数Ｎのレコードで構成されるレコードグループを一内部グループずつに分割してブロックを生成する場合の処理自体は先行文献と同じである。
【００２５】
そして、最後に転置ファイルを生成するわけであるが（ステップ１０４）、ここでは、まず最初に各レコードグループ１１において生成されたブロック１２を先頭から順番に連結していくことによってグループ１３を新たに生成する。図１に基づけば、横（行）方向に並んでいるブロック１２をグループというファイルに順番（列方向）に追加登録していくようなイメージである。この処理ではレコードグループ数個のグループ１３が作成されることになる。各レコードグループ１１に対してブロック生成処理が行われると、各グループ１３を連結することで転置ファイル１４を生成する。なお、レコードグループ１１と、レコードグループ１１に対応するグループ１３とは、それぞれを構成する内部フィールドは同一であるが、内部フィールドの並び順の相違により内部構造が異なるので、異なる符号を付け異なる構成要素として示している。
【００２６】
以上のようにして、単一の元ファイルからフィールドが転置した単一の転置ファイル１４が生成される。
【００２７】
本実施の形態では、以上のようにして転置ファイル１４を事前に生成し、元ファイルからのデータ読出し要求に対して転置ファイル１４へアクセスを行うことで処理効率を向上させることを特徴としている。次に、本実施の形態におけるファイル管理方法に基づくレコードの読出し処理について説明する。
【００２８】
例えば、社員データベースの中から「氏名」という論理フィールドField1に格納されているフィールドデータのみを全て取り出したいという要求が送られてきた場合、本実施の形態においては、論理フィールドField1に対応した転置ファイル１４内の内部フィールドField#1からデータが取り出されることになる。このとき、内部フィールドField#1はブロック単位にまとめられて格納されているので、ファイル管理システムは、転置ファイル１４における各グループ１３から内部フィールドField#1を含むブロックのみを読み出せばよい。もし、元ファイルに対して内部フィールドField#1を読出しにいくのであれば、結果として元ファイル全体をアクセスしなければならないが、転置ファイル１４では、内部フィールドField#1をまとめてブロック化してあるので、不要なデータを読み出すことなく「氏名」を効率的に読み出すことができる。
【００２９】
また、本実施の形態において元ファイルから転置ファイルを生成する処理の流れは基本的には先行文献と同様であるが、内部フィールドを可変長にしたことによりフィールドデータが分断されて転置ファイル１４に格納されることはないので、物理的な入出力処理回数の増加を防止することができる。
【００３０】
一般に、論理フィールドに対して内部フィールドが極端に短い場合、記憶領域が分散するため処理効率が低下するおそれがある。また、論理フィールドに対して内部フィールドが極端に長い場合、従来においては記憶装置上に無駄な領域が生じる。論理フィールド長は様々であるのに対し、内部フィールド長を従来のように固定長にしていたのでは上記の問題が生じうる。そこで、本実施の形態によれば、内部フィールドを可変長にしたことによりこれらの両方の問題をバランス良く解決することができる。すなわち、短い論理フィールドに対しては短い内部フィールドを採用し、長い論理フィールドに対しては長い内部フィールドを採用するという適切な内部フィールド長の調整を行うことで処理効率の低下を防止し、また、無駄な記憶領域を極力削減することができる。この場合でも上述した固定境界に内部フィールド長を合致させるようにパディングを付加することは当然ながら可能である。
【００３１】
実施の形態２．
図４は、本発明に係るファイル管理方法の実施の形態２に用いられる転置ファイルの生成方法を示すための模式図である。
【００３２】
例えば、社員番号、氏名、入社日、所属、年齢、住所というフィールドデータの順番で構成されるレコードが社員データベースに登録されているとする。この社員データベースの中から氏名と住所だけを取り出して社員の住所録を作成する場合、氏名と住所を登録するために設けられた各フィールドは、レコード上の隣接していない位置に設けられているため、氏名と住所の各データは、上記実施の形態１に示した読出し処理を利用してもそれぞれ異なる物理的な入出力処理により別個に読み出される可能性が高い。
【００３３】
そこで、転置ファイルを生成する際、上記実施の形態１においては、元ファイルに格納されるレコードを一内部フィールドずつに分割し、そして内部フィールドの並び順にブロックを生成していたところを、本実施の形態では、元ファイル（社員データベース）に格納されるレコード上離れた位置にある内部フィールドを関連づけて、複数の内部フィールドが含まれるようにブロックを生成できるようにしたことを特徴としている。これにより、元ファイルでは離れた位置にあっても同時に利用される頻度が高いことが予めわかっている場合には、該当するフィールドを同一ブロック内にまとめて転置ファイルを生成することにより読出し処理の効率を向上させることができる。
【００３４】
本実施の形態における転置ファイル生成処理は、図３に示したブロック生成処理（ステップ１０３）においてレコードを先頭から一内部フィールドずつ行方向へ順番に分割した後、同一ブロック１２に含ませたい複数の内部フィールドを取り出してブロック化する。それ以外は実施の形態１と同じなので説明を省略する。
【００３５】
ところで、一般にファイルの検索効率を向上させる手段として索引を付加する方法がある。なお、本実施の形態においても索引技術は適用可能である。索引を付加することによって目的とするレコードを含まない入出力単位（例えばディスクのセクタ、クラスタ等）を読み飛ばすことができる。索引の効果を高めるには、入出力単位当たりのレコード数を少なくした方がよい。なぜなら、入出力単位の中に１つでも目的とするレコードが含まれているときには入出力単位全体を読み出さなくてはならないからである。入出力単位当たりのレコード数を少なくする方法として内部フィールドを長くする方法も考えられるが、内部フィールドを単純に長くするとパディングを書き込む領域が増えてしまい、記憶領域の利用効率が低下してしまう。
【００３６】
そこで、本実施の形態のように複数の内部フィールドをまとめてブロックを生成すれば、最小入出力単位当たりのレコード数を減らすことで索引の効果を高めることができるとともに記憶領域の利用効率の低下をも防止することができる。
【００３７】
なお、本実施の形態では、本実施の形態における効果をより顕著にするために一ブロックに含ませる内部フィールドを隣接していない位置にある場合を例にしたが、隣接した位置にある内部フィールドで一ブロックを生成するようにしてもよい。
【００３８】
実施の形態３．
上記実施の形態１では、各レコードグループに含まれるレコード数を固定としたが、本実施の形態では可変としたことを特徴としている。図５は、本発明に係るファイル管理方法の実施の形態３に用いられる転置ファイルの生成方法を示すための模式図である。本実施の形態では、各レコードグループに含まれるレコード数を管理するための手段として管理ファイル１５が必要になる。
【００３９】
例えば、販売に伴い発生する売上データを販売管理システムの販売実績データベース（元ファイル）に逐次蓄積していく場合、売上数は日々異なるため販売実績データベースへの登録レコード数は毎日同じにはならない。ここで、従来にようにレコードグループＡを登録データ数Ｎの固定数で生成するとする。例えばｄ日の登録レコード数がＮに満たない登録データ数ｐが発生したとすると、（ｄ＋１）日に発生した登録レコード数のうち登録データ数（Ｎ−ｐ）をレコードグループＡに付加することで充満する。この際、内部処理では、レコードグループＡに含まれる全レコードを所定の入出力バッファへ読み出し、その入出力バッファの空き領域に（Ｎ−ｐ）レコードを書き込んだ後に入出力バッファの内容をディスク装置に書き込む。いわゆるｒｅａｄ−ｍｏｄｉｆｙ−ｗｒｉｔｅの手順を踏む必要がある。つまり、所定のレコード数Ｎが書き込まれていないレコードグループにレコードを追加登録する際には登録済みのレコードを必ず読み出すことになり効率的でない。そこで、本実施の形態では、レコードグループに含まれるレコード数を可変としたことで、上記例において日毎にレコードグループを生成するようにすれば、登録済みのレコードを読み出す必要がなくなる。
【００４０】
以下、本実施の形態における転置ファイル生成処理について説明するが、本実施の形態における処理手順自体は実施の形態１と同じであり、図３に示したフローチャートに沿って処理が実行される。本実施の形態は、このうちレコードグループ生成処理（ステップ１０２）のみが実施の形態１と異なるので、この処理についてのみ説明する。
【００４１】
ステップ１０１において内部フィールドに変換された全レコードは、複数の群に分割されることによってレコードグループ１１が生成される。このとき、本実施の形態においては、管理ファイル１５に設定された各レコード数の値に基づき全レコードは複数の群に分割される。
【００４２】
管理ファイル１５には、各レコードグループに含まれることになるレコード数と各レコードグループにおけるブロックサイズがレコードグループを生成する前に予め設定されている。上記レコード数は、元ファイルに登録されたレコード数によって特定することができる。また、ブロックサイズはレコード数とレコードを構成する各フィールド長とを得ることで事前に求めることができる。また、本実施の形態では、各レコードグループ１１のブロックサイズが求まったときにその中で最大値のブロックサイズを管理ファイル１５に別途保持しておく。
【００４３】
ステップ１０２では、管理ファイル１５に設定されたレコード数Ｎ０，Ｎ１，．．．に基づき先頭のレコードから順次グループ分けを行うことでレコードグループ１１を生成する。このようにして、全レコードを複数のレコードグループに分割した後は、実施の形態１と同様にしてブロック１２を生成し、そのブロック１２を連結することでグループ１３を生成し、そのグループ１３を連結することで転置ファイル１４を生成する。
【００４４】
次に、本実施の形態におけるファイル管理方法に基づくフィールドデータの読出し処理について図６に示したフローチャートを用いて説明する。
【００４５】
ファイル管理システムは、要求されたフィールドデータを転置ファイル１４から読み出す。この際、内部処理では、要求されたデータを含むブロックを入出力バッファへ読み出すことになるが、ブロックサイズが可変の場合その読出し先となる入出力バッファをどのような大きさにするかが問題となる。そこで、本実施の形態では、最大ブロックサイズを管理ファイル１５に設定してあるので、その最大ブロックサイズに等しいあるいは読み出すフィールドデータの個数に応じて最大ブロックサイズの整数倍の大きさの入出力バッファを用意すればよい。
【００４６】
ファイル管理システムは、入出力バッファを確保すると（ステップ２０１）、その後は管理ファイル１５に設定されているレコード数を参照することによって要求されたフィールドデータの格納位置を特定して当該フィールドデータを順次読み出す。すなわち、ファイル管理システムは、管理ファイル１５の読出し位置を先頭グループに位置づけて（ステップ２０２）、当該グループに含まれる各ブロックの当該グループにおけるオフセットを得る（ステップ２０３）。レコードフォーマットは既知なので、そのオフセットは容易に求まる。
【００４７】
このように、管理ファイル１５に基づき各グループの先頭位置及び各グループ内における各ブロックのオフセット位置が求まると、読出し対象となるフィールドデータの格納位置を特定できるので（ステップ２０４）、後は転置ファイル１４の特定したグループにおいて特定したブロックから読出し対象とされたフィールドデータを順次読み出せばよい（ステップ２０５〜２１０）。本実施の形態では、転置ファイル１４からの読出し処理を非同期に行っている。そして、先頭のグループに対する処理が終了すると、次のグループに処理を移行し、最終的には転置ファイル１４に含まれる全グループに対して前述した読出し処理を施す（ステップ２１１，２１２）。
【００４８】
以上のようにして、各グループ１３へのデータ読出し処理が終了すると、この時点で入出力バッファを解放する（ステップ２１３）。
【００４９】
本実施の形態によれば、図６に示したデータ構造の管理ファイル１５を設けるだけで、各レコードグループ１１を可変としてもフィールドデータの読出しを容易に行うことができる。
【００５０】
なお、上記説明では、管理ファイル１５に最大ブロックサイズを設けることで読出し処理の開始前に必要なバッファサイズを確保することができるようにしたが、ブロックからフィ−ルドデータを読み出す度に必要なバッファの獲得と解放を繰り返し行うようにしてもよい。これにより、必要最小限のサイズのバッファでメモリを確保することができるので、メモリを効率的に使用することができる。必要なときにバッファの獲得と解放を繰り返し行うように処理することは、特にブロックサイズに極端なばらつきがある場合には効果的である。
【００５１】
また、本実施の形態では、管理ファイル１５を別個な構成として設けたが、転置ファイル１４の内部に組み込んでもよいし、障害対策としてレコード数等の情報を管理ファイル１５と転置ファイル１４の双方に持たせて二重化するようにしてもよい。
【００５２】
実施の形態４．
上記実施の形態３においては、各レコードグループ１１を構成するレコード数を可変にしたことによって各ブロックの大きさも一定ではない。しかし、ブロックサイズを固定にしておいた方が処理の都合上好ましい場合もある。そのような場合には、ブロックサイズを固定とするために転置ファイル１４において最大ブロックサイズではないブロックには空き領域を設けることで全ブロックサイズを統一するようにしたことを特徴としている。
【００５３】
図７は、本発明に係るファイル管理方法の実施の形態４に用いられる転置ファイルの生成方法を示すための模式図である。転置ファイル１４に示したように各ブロックを最大ブロックサイズに統一し、空き領域１６にはパディングを施す。このため、管理ファイル１５には、実施の形態３と異なって各グループに含まれるレコード数のみが設定されることになる。
【００５４】
なお、パディングを施すときには実際にデータを書き込まなくてもよい。ファイルシステムによっては、ディスク領域を消費せずに論理的に空き領域を確保することができる場合がある。このような場合は、データを書き込まずに空き領域を単に確保することによってディスク容量の節約を図ることができる。
【００５５】
実施の形態５．
図８は、本発明に係るファイル管理方法の実施の形態５に用いられる転置ファイルの生成方法を示すための模式図である。本実施の形態においては、ブロック１２の大きさが物理的な入出力単位の整数倍でないときに、その整数倍でないブロック１２にパディングを施すことによってその整数倍にすることで処理効率の低下を防止することを特徴としている。
【００５６】
すなわち、ディスク装置などの記憶装置では、物理的に入出力できる最小単位は固定されている場合が多い。この最小単位を以下セクタサイズと呼ぶ。ディスク装置に格納されているファイルにアクセスを行うときの入出力単位がセクタサイズの整数倍であれば、記憶装置と入出力バッファとの間で直接入出力を行うことができる。しかし、入出力単位がセクタサイズの整数倍でなければ、ディスク装置内のデータをメモリにいったん読み出した後、改めて入出力バッファにコピーを行うようにしなければ入出力を行えない場合がある。
【００５７】
このことは、本実施の形態においても同様なことがいえ、効率的な入出力を行うためにはブロック１２の大きさをセクタサイズの整数倍にすることが望ましい。上記各実施の形態においては、内部フィールド長をワード境界などの固定境界に合致させるようにはしたが、内部フィールドをまとめて生成するブロック１２の大きさが必ずしもセクタサイズの整数倍になるとは限らない。例えば、セクタサイズが５１２バイト、ワード境界が４バイトである場合、１０バイトの論理フィールドは１２バイトの内部フィールドに変換されるが、このとき１２×４２＋８＝５１２であるから１２バイト長の内部フィールドをまとめて生成されたブロック１２は、セクタサイズの整数倍にはならない。
【００５８】
そこで、本実施の形態においては、内部フィールドをまとめてブロック１２を生成した結果、そのブロック１２の大きさがセクタサイズの整数倍にならなかったときにはパディングを施してセクタサイズの整数倍となるように調整することになる（図３のステップ１０３）。このようなブロックサイズの調整を行うようにすることで入出力処理の効率化を図ることができる。
【００５９】
【発明の効果】
本発明によれば、内部フィールドを可変長としたことにより、元ファイルのレコードを構成する各論理フィールドを分断することなく内部フィールドと１対１に対応付けしてフィールド変換できるようにしたので、一フィールドデータの読出し処理に伴う物理的な入出力処理の増加を抑止することができる。これにより、データ読出し処理を高速化することができる。
【００６０】
また、空き領域を内部フィールドに付加することによって各内部フィールドの区切りを物理的な処理単位となる境界に合致させることができるので、効率的な読出し処理を実現することができる。
【００６１】
また、レコードグループに含まれるレコード数を固定とした場合において固定数のレコードで満たされていないレコードグループに対しては、ディスク装置からレコードバッファ全体を読み出し、レコードを書き込んだ後、レコードグループを書き戻さなくてはならなかった。つまり、使用しない登録済みのレコードまで読み出さなくてはならなかったが、本発明においては各レコードグループに含まれるレコード数を可変としたことで、登録したところまでのレコード数でレコードグループを生成することができるので、そのような登録済みのレコードまで読み出す必要がなくなる。
【００６２】
また、ブロックの大きさを統一できるようにしたので、処理効率の向上を図ることができる。
【００６３】
また、複数の内部フィールドをまとめてブロック化しておくことで複数のフィールドデータをより少ない入出力回数で効率よく読み出すことができる。
【００６４】
特に、元ファイルでは離れた位置にあっても同時に利用されることが予めわかっている場合には、該当する内部フィールドをまとめてブロックを生成することにより読出し処理をより効率的に行うことができる。
【００６５】
また、内部フィールドをまとめてブロックを生成した結果、そのブロックサイズが物理的な最小入出力単位の整数倍にならなかったときにはパディングを施してその最小入出力単位の整数倍となるように調整するようにしたので、入出力処理を効率的に行うことができる。
【図面の簡単な説明】
【図１】  本発明に係るファイル管理方法の実施の形態１に用いられる転置ファイルの生成方法を示すための模式図である。
【図２】  実施の形態１において元ファイルの論理フィールドと内部フィールドとの対応関係を示したレコード構造図である。
【図３】  実施の形態１における転置ファイル生成処理の流れを示したフローチャートである。
【図４】  本発明に係るファイル管理方法の実施の形態２に用いられる転置ファイルの生成方法を示すための模式図である。
【図５】  本発明に係るファイル管理方法の実施の形態３に用いられる転置ファイルの生成方法を示すための模式図である。
【図６】  実施の形態３におけるデータ読出し処理を示したフローチャートである。
【図７】  本発明に係るファイル管理方法の実施の形態４に用いられる転置ファイルの生成方法を示すための模式図である。
【図８】  本発明に係るファイル管理方法の実施の形態５に用いられる転置ファイルの生成方法を示すための模式図である。
【図９】  従来のファイル管理方法において転置ファイルの生成方法を示すための模式図である。
【図１０】  従来において元ファイルの論理フィールドと内部フィールドとの対応関係を示したレコード構造図である。
【符号の説明】
１１  レコードグループ、１２  ブロック、１３  グループ、１４  転置ファイル、１５  管理ファイル、１６  空き領域。
【図１】
0004251726.tif 000002
【図２】
0004251726.tif 000003
【図３】
0004251726.tif 000004
【図４】
0004251726.tif 000005
【図５】
0004251726.tif 000006
【図６】
0004251726.tif 000007
【図７】
0004251726.tif 000008
【図８】
0004251726.tif 000009
【図９】
0004251726.tif 000010
【図１０】
0004251726.tif 000011