複数索引順編成ファイルについてもう少し詳しく
- 1.どんなファイルか
-
索引順編成ファイルが1つのキーしか扱えないのに対して、複数索引順編成ファイルは最大8個までのキーを扱える多重索引ファイルになります。
他の編成ファイルが1個のファイルから構成されているのに対して、複数索引順編成ファイルはデータファイルとキーの種類分のキーファイルから構成されています。
データファイルの構造はほぼ相対編成ファイルと同じ形、キーファイルはほぼ索引順編成ファイルの索引部と同じ構成(B+ツリー構造)になっています。
データが格納されていく順番は、順編成ファイルと同様に入力順にレコードに書き込まれていきます。
キーが1個の場合は索引順編成とほぼ同じになりますが、索引順編成ファイルが1個のファイルの中にキー領域とデータ領域が作られるのに対して、複数索引順編成ファイルはキーファイルとデータファイルの2個のファイルになるのが異なります。また索引順編成ファイルは最大でも1,048,575セクタのサイズまでしか作ることができませんが、複数索引順編成ファイルはその4倍のサイズの大きさのファイルを作ることができます。
複数索引順編成ファイルは、リレーショナル型データベースのファイルとしてそのまま利用することができます。
この複数索引順編成ファイルは、他のファイル編成と比べて比較的あとに出来た種類のファイルです。このため他のオフコンメーカーにも同様のファイル編成がありますが、名称が若干異なっていたり、仕様(使えるキーの数など)が異なっていたりします。
- 2.レコード(データ)の削除とファイル再編成
-
レコードを削除すると、次のように処理されます。
<データファイル>
レコードの先頭に削除コードが書き込まれ、削除レコードとなります。
<キーファイル>
キー情報は削除され、キーファイルは再編成される。
索引順編成ファイルと異なり、削除レコードは自動では再利用されません。(順編成ファイルや相対編成ファイルと同じ。)つまりデータの追加削除を繰り返していくと、使用可能なレコードが減っていき、そのうちにファイルがオーバーフローになるということになります。
このような場合は単に削除レコードが増えているだけなので、ファイルの再編成を行って、削除レコードを未使用状態のレコードに戻せば、オーバーフローという問題を解決することができます。
複数索引順編成ファイルの場合は、データファイルと共に複数のキーファイルも同時に再編成する必要があり複雑なため、ファイルの再編成を行うための機能がシステムユーティリティの中に用意されています。(順編成ファイルや相対編成ファイルは簡単にファイル再編成可能なので用意されていない。)
一般的にファイルの再編成には、システムメニュー画面から「データ操作支援−H/再編成」か#ABCというユーティリティを使用します。古いユーティリティである#MIXGNというものも使用できますが、これは#ALLOCというやはり古いタイプのユーティリティで作られた複数索引順編成ファイルの場合のみにした方がよいそうです。
順編成ファイルのようにいったん削除したレコード(データ)を復活させるのは非常に難しいです。キー経由でのデータの直接参照はできませんが、#ABCなどのユーティリティでデータファイルを直接アクセスすることによって、削除レコードの読み込みは可能です。#ABCのファイル変換で削除レコードのパラメータをYESにします。
- 3.複数索引順編成ファイルのオーバーフロー
-
複数索引順編成ファイルのオーバーフローの原因はいくつかの種類があります。
・データファイルがオーバーフローした
データファイルがオーバーフローするのは、削除レコードがたくさんできてしまい単に使用できるレコードが無くなってしまっただけのものと、ファイルの全レコードが使用されて本当にオーバーフローしている場合とがあります。
削除レコードをまた使用できるようにするには上に書いたようにファイルの再編成を行います。 本当にオーバーフローしているならば、エクステントの拡張/追加を行ってファイルサイズを拡大します。
・キーファイルがオーバーフローした
キーファイルはエクステントの拡張/追加は行うことができません。一旦オーバーフローしたキーファイルを削除して、同名のもっと大きなキーファイル(ファイルサイズ以外は以前と全く同じ属性のファイル)をアロケートしてからファイルの再編成を行います。
- 4.ファイルの更新
-
データファイル内のデータを追加したり削除したりするのは、当然キー経由でも行えますが、複数索引”順編成”ファイルというぐらいなので、順編成ファイル的に追加/削除を行うこともできます。
この場合はキーファイルを経由しないのため、データファイルの内容とキーファイルの内容が不一致となってしまいます。(つまり順編成ファイル的にデータを追加した情報がキーファイル内に入っていない)
もう1つ困ったことには、あるキーファイルを経由してデータを追加したり削除した場合、他のキーファイル内の情報が更新されないということです。
例えばあるキーを使ってデータを追加したとします。この後別のキーを使って追加したデータを検索しても、見つからないということです。このように複数のキーファイルの情報を常にデータファイルと一致させるために、定期的に「ファイルの再編成」という作業が必要となります。
- 5.キーファイルの同時更新機能
-
ファイルの更新のところで書いたように、通常はあるキーファイルを経由してデータを追加したり削除したりした場合、他のキーファイル内の情報が更新されません。
これだと困る場合もあるので、あるキーファイルを経由してデータを追加したり削除したりしたときに、他のキーファイルも同時に更新する機能もあります。
ただしこの機能を利用するといくつものファイルを更新することになるため、データの更新時に更新処理が遅くなります。
- 6.ファイルの削除
-
複数索引順編成ファイルを削除する場合は、順番があります。まずキーファイルを削除していき、最後にデータファイルを削除します。