ファイル編成法
ファイル編成法(— へんせいほう)とはコンピュータがディスク装置やテープ装置などの2次記憶装置上に、レコードをどのように配置しアクセスするかについての方式である。
概要
汎用コンピュータ(メインフレーム)や一部のオフィスコンピュータの専用オペレーティングシステム(OS)では、各ファイル(データセット)内の、レコードの属性(固定長/可変長/非定型、固定長の場合のレコード長、格納・検索方法など)を定義する。
なお、いわゆるオープンシステムではバイトストリームが基本であり、ファイル編成法は存在しない(詳細は後述)。
また、汎用コンピュータでUNIX系などのOSを使用する場合は、直接稼動の場合はファイル編成法は無関係だが、UNIX互換環境など間接稼動の場合は(専用OSの側では)格納方式(器)として使用されている場合がある。
種類
代表的なメインフレーム専用OSであるMVS系の場合、大きく分けて次の5種類がある。(富士通、日立製作所のIBM互換OSもほぼ同様である。)
- 順編成ファイル(PS)
- シーケンシャルファイル(Sequential file)とも言う。
- 特徴:
- レコードを一次元的に配置する方式。順次アクセスしかできない。もっとも基本的で単純な方式。
- オープンシステムの用語で言えば、フラットファイルに近く、1つのデータセットが1つのファイルに相当する。複数レコードが収められている場合は、上から順に読んでいく必要があり、一部レコードのみの更新はできない。
- ファイル内に格納するレコードは固定長/可変長が選択できる。固定長レコードの場合は改行コードは存在しない。非定型はバイナリーなどに使用する。
- ディスク装置上にもテープ装置にも全く同じ形式で作成できるため、バッチ処理で多用されている。(汎用コンピュータではバッチとテープを多用し、オープンシステムではRDBMSを多用する理由のひとつ。)
- 区分編成ファイル(PDS)
- メンバーという単位に分割し、メンバごとにアクセスできるようにしている。
- 特徴:
- 直接編成ファイル
- レコードキー値によって、格納するアドレスを計算して、レコードを直接にこのアドレスに格納する。現在ではあまり使われない。
- 特徴:
- 直接記憶媒体に適応する。
- 直接アクセス法に向く。
- 媒体の記憶効率が低い。
- 順次アクセス法に向かない。
- 索引順編成ファイル
- ISAM編成ファイル。現在ではあまり使われない。
- 仮想記憶編成ファイル
- VSAM編成ファイル。
- 特徴:
- OS付属のユーティリティ(IDCAMS)を使用しディスク装置上に作成できる。KSDS、ESDS、RRDSなどがある。
- KSDSはキーと索引(インデックス)を使用して、レコード単位の追加・変更・削除ができる。
- オープンシステムの用語で言えば、OS標準の簡易データベースといえる(メインフレームではDBMSを必要最低限しか使わず、オープンシステムではDBMSを多用する理由のひとつ)。
- メインフレーム用のDB2 などのデータ物理格納場所(器)としても使われている。
レガシーシステムとオープンシステムの比較
初期のメインフレームは、プログラムや業務データをレコード単位でパンチカード等で入力し、レコード単位でプリンター等に出力する形が基本だった経緯もあり、オペレーティングシステム標準で多様なレコード管理機能を持っている。
プログラマーやアプリケーションプログラムと、システムの管理運用が分離されているといえる(管理者やオペレーターはデータセットの定義を参照してJCLを修正するだけで、格納先をディスク装置からテープ装置に変えたり、ブロックサイズ変更による最適化などができる)。
これに対してMS-DOS、Windows、UNIX系などのOSでは、OSによる管理はファイルシステムまでであり、各ファイル内部のフォーマット(ファイル構造)は、各アプリケーションに任されている。(OS自身の使用するファイルも含めて、テキストファイル・CSV・XMLなど各アプリケーション間の標準化は各種あるが、OSが直接に管理をしているものではない。)
このためOSから見たファイルは1形式(バイトストリーム)に標準化され、各アプリケーションはファイルを自由なフォーマットで扱える反面、各アプリケーションごとのファイル形式は標準化されておらず、各アプリケーションに精通していないとレコード編集は困難である(リスクを伴う)。
言い換えると、レガシーシステムは定型業務中心・OS中心・管理運用重視、オープンシステムはプログラマ中心(自由自在、自由放任)、という経緯・文化の相違の1つとも言える。
レガシーシステムとオープンシステムの相互運用
オープンシステムのファイルをレガシーシステムで扱う場合は、可読ファイルは順編成ファイル(可変レコード長)に変換し、バイナリーは非定型フォーマットとする場合が多い。改行コードの有無と文字コードには別途注意が必要。
レガシーシステムのファイル(データセット)をオープンシステムで扱う場合は、可読ファイルはフラットテキストファイルに変換し、バイナリーはそのままバイナリーファイルとする場合が多い。VSAM KSDSなどは必要に応じてRDBMS上のテーブル化を、テープ装置上の順編成ファイルは直接読めないのでディスク装置への移動やツールの活用を検討する必要がある。改行コードの有無と文字コードには別途注意が必要。