07.データセットの種類とアクセス法

By 神居 - Posted: 2008/10/21 Last updated: 2011/05/12 - 4 Comments

DASDやTAPEなどのデバイス・ボリューム内に格納されるデータセットが、どのような形式でどのように構成されるかの概要について紹介します。

レコードとブロック、レコード形式

MVSではデータセットを構成する最小の単位をレコードと呼びます。すべてのデータセットはこのレコードによって構造化されると言う特徴を持っています。またレコードはプログラムから見たI/Oの最小単位でもあって、通常はレコード単位にファイルを読み書きします。レコードはさらにフィールドに細分化されますが、これにはMVSは一切関与しません。あくまでもプログラム側の処理によって行われます。

MVSのファイルシステムがレコードを基本にデータを構成するのは歴史的な背景によります。コンピュータ以前のPCS(パンチカード・システム)では紙カードを媒体にしたデータ処理を行っており、1枚のカード上のデータが処理の単位になっていました。やがてコンピュータが生まれ、さまざまな記憶装置が使われるようになり、紙の代わりにこれらの装置上にデータをカードのイメージで保存したことに始まります。

複数のレコードをまとめたものをブロックと呼びます。ブロックはデータセットがディスクやテープなどの記憶装置に記録されるときの単位であり、物理レコードとも呼ばれます。これに対してブロック内の各レコードは論理レコードとなります。ブロックの中にいくつのレコードが格納できるかを示す数値をブロック化因数(Blocking Factor)と言います。複数の論理レコードをブロックにまとめることをブロッキングと呼び、逆にブロックから論理レコードにばらすことをデブロッキングと呼びます。ブロッキングとデブロッキングは通常のアクセスであればMVSによって行われます。

なぜレコードをブロック化するかと言うと、記憶装置のスペースを節約するためと、データの転送効率を高めるためです。ディスクでもテープでも装置内に物理レコードを記録する時、レコードとレコードの間にギャップ(GAP)またはインターレコードギャップ(IRG)と呼ばれる隙間が置かれます。ギャップはデバイス上でのレコードの区切りでもあってハードウェアによって自動的に書き込まれます。またギャップは高速で回転する磁気媒体から正確にデータを読み取るためにも必要なものです。ギャップも記録媒体上のスペースを占めるため、小さなレコードを数多く書くと無駄なスペースが増え、実際のデータを書き込める量が少なくなってしまいます。
したがってデバイスの使用効率を上げるためには物理レコードを可能な限り(デバイスが許す限り)長くする必要があります。またデバイスは物理レコード単位にデータを読み書きしますので、物理レコードが長ければI/O回数を減らすことができます。I/O回数が減ればMVS側の入出力処理のオーバーヘッドも減りますから転送効率は上がります。反面ブロック(物理レコード)が大きくなると、それだけ転送用のメモリー領域は増えることになります。初期のMVSではメモリーは貴重な資源でしたからやたら大きくすればよいわけではなく、処理内容と資源量のバランスを考えちょうどよい頃合いを見つける必要がありました。現在のMVSでは実記憶もGB単位になり、また仮想メモリーもふんだんに使えるので、そのような気を使う必要はなく、どちらかと言えば大きければ大きい方がよいと言う考え方に変っています。

MVSで扱うレコードにはいくつかの形式が用意されています。また扱える長さにも取り決めがあります。レコード形式はRECFM、ブロック長はBLKSIZE、レコード長はLRECLで示されます。MVSのデータ管理機能ではレコード長、ブロック長いずれも最大32760バイトまでの長さを扱うことができます。物理レコード長の最大値はハードウェアであるDASDの特性に依存し実際にはもっと長いレコードも可能です。例えば3390型DASDであれば56664バイトです。しかしこのような長さをプログラムで直接扱うにはアセンブラー言語で直接デバイスのI/Oを行う必要があります。一般的には32Kが最大値と覚えていいでしょう。

レコードとブロック

レコードとブロック


ブロック化因数の違いによる比較

ブロック化因数の違いによる比較




データセットの種類とアクセスメソッド

MVSのデータセットにはレコードの配列方法によって複数の種類があり、編成(DSORG:Dataset Organization)と呼ばれます。アクセスメソッド(AM:Access Method:アクセス法)はプログラムでデータセットの読み書きを行うためのMVSのプログラミング・インタフェースで、データセット編成に応じたアクセス法がデータ管理によって提供されています。これはアセンブラー言語で使用するためのAPIで、COBOLやPL/Iではファイル定義やファイルアクセス・ステートメントを介して間接的に使用されます。どのような言語でプログラムを作成するにせよ、あるいはプログラム作成には直接携わらないにせよ、データセット編成とアクセス法(の概要)を理解することは、MVSでデータセットを作成し、編集し、操作する上で必要かつ重要です。複数のデータセット編成がありますが、現在でもよく使われる代表的なものに限定して紹介します。

アクセスメソッドはOSのデータ管理に属する機能(API)です。MVSでデータ管理の機能を提供するのが「DFP」(Data Facility Product )と呼ばれるコンポーネントでした。現在ではDFSMSdfpとしてDFSMSに統合されています。MSPとVOS3では「データ管理」です。


Posted in ..基礎編 • • Top Of Page

4 Responses to “07.データセットの種類とアクセス法”

Comment from shok
Time 2013年7月13日 at 17:29

直接データセットについて、、

私が20年以上昔に担当していたシステムにはDBにModel204(c)を採用していました。
当時のModel204ではVOS3のXDMがデータスペースとして採用しているVSAMデータセットではなくて、直接データセットを使っていました。

VOS3のXDMが市場に出る前の話です。

Model204はComputer Corporation of America (CCA) 社の商標です

Comment from shok
Time 2013年7月20日 at 19:23

VOS3のも、PDSEのように区分データセットの欠点を補うデータセット編成として、LIME(ライム)があります。

区分データセットの改良をしていますが、実体はVSAMデータセット(ESDS)です。

無効領域ができない事、メンバの同時更新ができること、メンバの更新の世代管理、ファイル圧縮、データセットとメンバで異なるセキュリティが設定できる、ロードモジュールの格納できるなど多くの利点を持っています

お時間がありましたら、詳しい情報を掲載します

Comment from shok
Time 2013年7月20日 at 20:10

上記のLIMEで書いたファイル圧縮ですが、無効領域の圧縮(コンデンス)ではなくて、データ自体の圧縮です。

Comment from shok
Time 2013年7月24日 at 09:11

一つ訂正です

メンバの同時更新はできません。壊れてしまいます。
LIMEデータセットの別メンバの同時更新は可能です
特に必要がなければ、DISP=OLDにしなくてもメンバの更新は可能です