断電対応
断電回復機能は、Empressを採用している100%のユーザが使用している機能です。データベースを使用しているデバイスで急な断電が発生している最中にデータの更新があると、データベース内でレコード、ヘッダー、インデックス、データベース情報に不整合が発生します。データベースの不整合をそのまま放置し、システムの運用をし続けると、この不整合が原因でデータベースが稼働しなくなる可能性があります。これが断電によりシステム再稼働しない最大の原因です。
Empressは断電が発生し、再度通電されると時にデータベースの不整合を自動的に修復します。修復はEmpressのmsdbmaintainという1つの関数をコールするだけで自動的に完了します。Empressの修復は2段階で実行されます。通電時にmsdbmaintain lightをコールします。msdbmaintain lighはデバイスが正常に終了したか否かを0秒で回答します。もし、急な断電がなければシステムは普通に起動させます。もし、デバイスが異常に終了し、データベースの修復が必要な場合はmsdbmaintain fulをコールし修復します。修復は、テーブルの構造、データの量、OSにより異なります。Empressを採用されたユーザからは10数万曲の楽曲データを1秒以内に修復しているという報告を受けています。また、他のユーザからは自動的にデバイスのON、OFFを10数万回繰り返してもシステムは問題なく起動できたという報告を受けています。
例えばデータの登録時に断電が発生しテーブルの最後のデータが登録に失敗しました。トランザクションをかけていればトランザクションログからデータを復元します。これは他のデータベースと同様にEmpressも同機能を有しています。トランザクションがかかっていない場合は、Empressは独自のセーブポイントからデータを復元します。テーブルの復元後、復元されたテーブル情報をもとにインデックス、ヘッダーを作成し直し、データベースの全体の修復を可能にします。
Empressはマルチファイル構造のデータベースです。テーブル、インデックスごとに別ファイルを持っていますので、正常に修復したファイルから他のファイルを修復します。