VSAM論理削除の実装:1991年、汎用機システムでの信頼性向上の挑戦
概要
1991年、私は富士通の汎用機 FACOM Mシリーズ上で稼働する業務システムの保守と改善を担当していました。データストレージには VSAM(Virtual Storage Access Method)の KSDS(キー順編成データセット)が採用されており、複数のバッチ処理および CICS を用いたオンラインシステムの基盤として機能していました。
このシステム運用の中で、物理削除による復元ミスやデータ整合性の問題が繰り返し発生していたため、私は VSAM の設計を見直し、「論理削除方式」と「ON/OFFフラグによる明示的な状態管理」を導入。これにより、復旧時の誤処理や監査不整合といった重大リスクを解消し、信頼性・保守性の高いデータ基盤を構築しました。
課題:物理削除によるデータ復活と監査不整合
VSAMの物理削除は、インデックスやポインタを更新することでレコードを見えなくするだけで、実際のデータ本体はディスク上に残存します。ファイル破損時には、ダンプを取得し新たに VSAM ファイルを作り直し、テキストファイルからデータを再インポートするのが一般的な手順でした。
しかし、このプロセスでは削除状態の情報が失われるため、すでに削除されたはずのレコードが「有効データ」として復活してしまう事例が頻発。ときには削除済みのマスターデータが業務に誤投入され、トランザクションが不整合を起こすなど、システム信頼性を大きく損なう要因になっていました。
解決策:論理削除 + ON/OFFフラグによる明示的状態管理
この問題に対し、私は物理削除を廃止し、論理削除方式を導入しました。具体的には、各 VSAM レコードに3バイトの「有効無効フラグ(VALID-FLAG)」を追加し、レコードの状態を ON
(有効)または OFF
(削除済み)として管理する設計です。
VSAMレコード構造(改修後):
KEY-FIELD (10 bytes) | DATA-FIELDS (100 bytes) | VALID-FLAG (3 bytes) |
---|---|---|
001 | 取引データ… | ON |
002 | 取引データ… | OFF |
この方式により、復旧時に削除済みレコードが誤って復活するリスクを完全に回避できるようになりました。また、「OFF → ON」による復活処理も意図的に制御でき、保守・監査対応にも高い柔軟性を確保できました。
なぜ「ON/OFF」だったのか?
当時、1/0 や Y/N のようなビット的フラグが一般的でしたが、私はあえて ON/OFF
という人間にとって直感的な表現を採用しました。
- テキストダンプや16進ダンプ上でも意味が一目で分かる
- 電源スイッチと同様のメタファーで、誰でも意図を理解できる
- 後任の技術者が意図を誤解せずに即時判断できる
この命名は、現代の UX 設計や DevOps の考えにも通じる「運用性」や「可読性」を意識したものであり、「人間中心の設計」の実践でもありました。
モジュール設計:全参照を一元管理する設計が変化を容易にした
VSAM へのアクセスは、すべて専用モジュール(現代で言うリポジトリ)に集約されており、10以上のバッチ・オンライン処理はすべてこのモジュールを経由する設計でした。
[呼び出し構造] 各種処理システム → VSAM-ACCESS-MODULE → VSAMファイル
この構成により、論理削除への切り替えはモジュール内部のロジック変更だけで完了。外部の参照システムには一切手を入れず、稼働中の大規模システムにも影響を与えずに導入できたのです。
テンプレートファイルと中央更新:運用効率も飛躍的に向上
VSAM に登録されるレコードには、使用目的ごとにパターンがあることに気づき、最大構成のテンプレートファイルをあらかじめ用意し、すべて OFF
状態でインポート。CICS のオンライン処理から ON
に切り替える方式を採用しました。
- ファイル破損時はテンプレートを再投入すれば即復旧
- 全国拠点のリモート更新が可能に
- 出張による保守作業が不要に
上司は出張がなくなり少し残念そうでしたが(笑)。
現代との接続点
この経験は、単なるトラブル対応にとどまらず、次のような普遍的な設計思想を体感的に学んだ機会でもありました。
- 状態管理の一貫性 → 現代の
is_deleted
フラグやdeleted_at
に通じる - モジュールによる責務分離 → MVCやリポジトリパターンの原型
- 命名による意図伝達 → UXデザインやコードの可読性に直結
- テンプレートによる標準化 → DevOps や IaC(Infrastructure as Code)にも通じる
数年後、フィンランドの核廃棄物施設「オンカロ」を紹介するドキュメンタリーを見たとき、私はこの「ON/OFFフラグ」を思い出しました。誤解されない明示的なメッセージを、長期間にわたり安全に伝えるという思想は、まさに当時の私が目指した方向と重なっていたのです。
最後に
私はこの設計変更を通じて、保守性・可読性・意図伝達の重要性を実感しました。そしてそれは、レガシー環境においても、人間中心の設計を意識すれば、将来の誰かを助ける設計ができるという確信につながりました。
現代の技術者が読んでも共感できる「普遍的な設計の原理」は、汎用機時代にも確かに存在していたのです。