データ保全機能
-
正直な話、私はA−VX/RDBのトランザクション機能やジャーナル機能の設定をしたり、ジャーナル機能を使って復旧作業をしたりしたことはないので、この辺りはあまりノウハウはありません。NECの説明書の内容を流用して適当に流していきます。
- 1 A−VX/RDBのトランザクション機能
-
A−VX/RDBにも当然トランザクション機能が備わっています。
今更言うまでもないことですが、トランザクションとはデータベースで一連のデータ操作を1つのまとまりにして取り扱う仕組みです。
NECの公式のリレーショナル型データベース説明書には次のように書いてあります。
トランザクションとは、データベースに対する処理の集まりであり、トランザクションの範囲で、処理するデータ間の一貫性を保障するものです。トランザクション機能とは、データベースに対する個々の処理をトランザクションとして意味のある、一貫性を持った処理とする機能です。
トランザクションの範囲は、最新のCOMMIT/ROLLBACK命令からCOMMIT命令、またはROLLBACK命令までです。トランザクションの範囲で更新された複数のレコードは、COMMIT/ROLLBACK命令によってそのトランザクションが終了するまでの間ロック状態が保持され,他のタスクからの参照/更新が禁止されます。
[リレーショナル型データベース説明書(2009年11月版)−第7部 データ保全編−1.2 トランザクション機能]より下の図のように、COMMITから次のCOMMITまたはROLLBACKまでが1つのトランザクションの範囲です。
またもNECの説明書からの引用します。
トランザクション機能を利用することにより、プログラム実行中に何らかの異常が発生した場合に、トランザクション単位で処理を取り消してトランザクション開始時点の状態までデータベースファイルを復旧することができます。また、プログラムが何らかの原因で異常終了した場合にもトランザクションは自動的に取り消され、トランザクション開始時点の状態まで復旧されます。電源断等のシステムダウンの場合にも、更新前ジャーナルファイルからデータベースをトランザクション開始時点の状態に戻すことが出来るので、プログラムがデータベースに与えた影響を速やかに回復してプログラムの再実行を容易に行うことができます。
[リレーショナル型データベース説明書(2009年11月版)−第7部 データ保全編−1.2 トランザクション機能]よりA−VX/RDBのトランザクション機能は、普通一般的なデータベースのトランザクション機能とほぼ同様のものです。
これは私見ですが、A−VXの世界において、トランザクション機能はあまり使用されていないようです。私の見たところ、A−VX/RDBを採用しているシステムのうち、トランザクション機能は利用しているのは1,2割程度かなという感触です。オフコンの上位モデルを使用していたり何台も入れている大規模なシステムを導入しているところが使用しているというイメージです。
理由はいろいろあるでしょうが、オフコンの主要ユーザが中小、中堅企業ということもあると思います。このくらいの企業規模であればトランザクションまで組み込まなくてもだいたい用は足せる、トランザクションやジャーナルなどを運用するにはそれなりに専任要員が必要だったりするが、このくらいの規模だとそういう人員がいないことも多いなどの理由です。
あとはトランザクション機能やジャーナル機能が実装されたのが1994年発売のA−VX2 R3.0という、NECのオフコンの歴史としては結構後半であるというのも理由かもしれません。このころはもうバリバリCOBOLでプログラムを開発という感じではなく、今まで蓄積してきた業務プログラムを小改造して使い続けていくのが主流となっていました。 - 2 ジャーナル機能
-
ジャーナル機能について、NEC公式の説明書は次のように書いています。
ジャーナルとは、データベースに対しておこなわれた処理の履歴であり、任意の時点からの更新情報を保持するものです。ジャーナル機能とは、更新後ジャーナルファイルに採取された更新履歴とデータベースのバックアップを利用しデータベースの内容を復元する機能です。
したがって、ある時点でのデータベースのバックアップとそれ以降の更新履歴さえあれば、媒体不良や装置障害などの異常時に、データベースをバックアップ以降で障害発生前までの任意の時点の状態に復元することが容易にできます。
[リレーショナル型データベース説明書(2009年11月版)−第7部 データ保全編−2.2 ジャーナル機能]よりロールフォワード復旧ユーティリティを使ってロールフォワード復旧を行ったりできます。
私の経験上、A−VXの世界ではジャーナル機能もあまり使われていないようです。A−VXシステムでもかなり大規模なシステムでのみ使われているように思います。