Web教材一覧ハードウェアとソフトウェア

ファイル編成

キーワード

順次アクセス、直接アクセス、動的アクセス、ファイル編成、順編成ファイル、直接編成ファイル、索引順編成ファイル、VSAMファイル、区分編成ファイル


ここでの話題は、汎用コンピュータに限定されます。
 オープン系のOSでは、ファイル単位での格納やアクセスまでしか管理しておらず、ファイルのデータの構成やアクセスに関しては、それぞれのアプリケーションに任されています(ファイル名に拡張子があり、その拡張子がアプリケーションを指定しているのです)。そのため、あるアプリケーションで作成したデータを他のアプリケーションで使うときには、その互換性を確認したり、必要によっては変換を行う必要があります。
 それに対して、汎用コンピュータでは、ファイルのデータ編成やそのアクセス法をOSが管理していました。いうなれば、データの持ち方について標準化が行われていたといえます。ここでは、そのうち主要な標準形式に関する説明です。

ファイルのアクセス法

ファイルにデータ(レコード)を書きこんだり読み出したりすることをアクセスといい、その方式をアクセス法といいます。

順次アクセス(シーケンシャルアクセス)
ファイルの先頭のレコードから順にアクセスする方式です。
 レコードの順に関係なく処理する場合、あるいは既に処理に適した順にソートされている場合で、大量のレコードが対象になるときに適しています。しかし、ある特定のレコードを探索する場合には、時間がかかります。
直接アクセス(ランダムアクセス)
ある項目をキーにして、レコードの格納場所を決めて書き込み、指定したキーの値により、対象とするレコードを探索するアクセス方式です。大量のレコードを持つファイルを対象にして、少数のレコードをアクセスするときに向いています。
動的アクセス(ダイナミックアクセス)
順次アクセスと直接アクセスを組み合わせたアクセス方式です。例えば、売上ファイルが商品別にソートされている場合、指定した商品の先頭のレコードを直接アクセスで探索し、それ以降を順次アクセスするような場合です。

ファイル編成方式

ファイル内でのデータの配置方法には多様な形式があります。それをファイル編成方式といいます。この編成方式により、ファイルのアクセス法が限定されます。

順編成ファイル(シーケンシャルファイル)
順次アクセスを前提としたファイル編成です。順次アクセスしかできない媒体(磁気テープなど)では、順編成ファイルで持つことになります。
 最も基本的なファイル編成であり、レコードをそのまま連続して書き込むだけなので、記憶容量に無駄を生じません。
 しかし、レコードを挿入するときには、既存のファイルから、挿入直前のレコードまでを新しいファイルにコピーし、、挿入レコードを新ファイルに書き込んで、また既存ファイルから新ファイルにコピーする処理が必要になります。
直接編成ファイル(ダイレクトファイル)
直接編成ファイルは、直接アクセスに適した編成になっています。キーを指定して直接にそのレコードをアクセスできます。アクセスは高速になりますが、記憶領域が連続してとられないので無駄が生じます。
 キーの値と実際の記憶場所(磁気ディスクでの位置)との関係により、次のような種類に区分できます。
  • 実アドレス指定方式:磁気ディスクの物理アドレス(絶対位置)は、シリンダ番号、トラック番号、セクタ番号などで特定できます。その物理アドレスをキーとする方式です。記憶媒体が固定されるし、ファイルを移動することができません。そのため、一般の用途には利用されません。
  • 相対アドレス指定方式:ファイルの先頭位置のアドレスを0としたときの相対的な位置をキーとして持つ方式です。ファイル全体を移動しても、相対的な位置は変わらないので、管理が容易になるため、一般にはこの方式が用いられます。
     相対アドレスの指定方法により、次の2つの方式があります。
    • 直接アドレス指定方式:キーの値が、相対アドレスそのものの値にした方式です。
    • 間接アドレス指定方式ハッシュ編成方式):キーの値を、ある数学的な計算をした結果を相対アドレスとする方式です。一般に、その数学的変換方法として、ハッシュ関数によるハッシュ値を用いるので、ハッシュ編成方式ともいいます。
     直接アドレス指定方式では、キーの値を求めるのに、既存のレコードの状況を知る必要があるのに対して、間接アドレス指定方式では、その必要がありません。しかし、異なるキーなのに同一のハッシュ値になる(シノニムという)ことがあり、そのときの工夫が必要になります。
参照:「ハッシュ」(hs-file-hash
索引順編成ファイル(インデクスファイル、ISAMファイル)
索引順編成ファイルは、順編成ファイルに索引(インデクス)をつけることにより、直接アクセスもできるようにしたファイルです。
索引順編成ファイルは、次の3つの領域があります。
  • 索引域(インデクス域):キーと格納位置アドレスの対応表
  • 基本データ域(プライム域):レコードをキーの昇順で順編成ファイルの方式で格納する領域
  • あふれ域(オーバーフロー域):基本データ域に格納できないレコードを格納する領域。
基本データ域を大きく設定すると、格納領域に無駄が生じますし、小さく設定すると、多くのレコードがあふれ域に格納され処理効率が低下します。それで、必要に応じて再編成します。
VSAMファイル
VSAM(Virtual Storage Access Method)ファイルとは、順編成ファイル、直接編成ファイル、索引順編成ファイルなどのファイル編成法を統合して、効率的なアクセスを実現したものです。汎用コンピュータ時代では、商品マスタファイルや得意先マスタファイルなどのマスタファイルはVSAMファイルにするのが通常でした。そして、これがデータベースへと発展したのです。
区分編成ファイル
一つのファイルを、複数のメンバという順編成ファイルに区分し、メンバのアドレスを管理するメンバディレクトリ(登録簿域)で構成したファイルです。
 一般に、汎用コンピュータでは、個々のソースプログラムをメンバとして持ち、それらのプログラム群をまとめてプログラムライブラリとして、一つの区分編成ファイルにします。
 パソコンでは、メンバという概念はありません。パソコンのディレクトリやフォルダはOSが管理しています。それに対して、区分編成ファイルは、個々の物理的なファイルのなかで管理しているのです。