トランザクション NTFS を使用するタイミング

アプリケーションでは、トランザクション NTFS (TxF) を使用して、予期しないエラー状態の間にディスク上のデータの整合性を保持できます。 一般に、アプリケーションがファイルをフラッシュし、他の手法を使用してデータの整合性を維持する場合は、アプリケーションで TxF の使用を検討する必要があります。 TxF を使用すると、エラーの回復と信頼性を向上させながら、アプリケーションのエラー処理コードのパフォーマンスを向上させ、簡素化できます。 このトピックの次のセクションでは、TxF を使用するためのシナリオの例を示します。

ファイルの更新

ファイルの更新は、一般的で通常は簡単な操作です。 ただし、アプリケーションがディスク上の情報を更新しているときにシステムまたはアプリケーションが失敗した場合、部分的に完了したファイル更新操作によってユーザー データが破損する可能性があるため、結果は致命的になる可能性があります。 堅牢なアプリケーションは、多くの場合、システムが失敗した場合にデータが破損しないように、ファイル のコピーとファイル名の複雑なシーケンスを実行します。

TxF を使用すると、アプリケーションがシステムまたはアプリケーションの障害からファイル更新操作を簡単に保護できます。 ファイルを安全に更新するために、アプリケーションはトランザクション モードでファイルを開き、必要な更新を行い、トランザクションをコミットします。 ファイルの更新中にシステムまたはアプリケーションが失敗した場合、TxF は、ファイルの更新が開始される前の状態にファイルを自動的に復元し、ファイルの破損を回避します。

複数ファイルの更新

1 つの論理操作が複数のファイルに影響を与える場合、TxF はさらに重要です。 たとえば、ツールを使用して Web サイト上の HTML ページまたは ASP ページの名前を変更する場合、適切に設計されたツールによって、新しいファイル名を使用するすべてのリンクも修正されます。 ただし、この操作中にエラーが発生すると、Web サイトは一貫性のない状態になります。一部のリンクは引き続き古いファイル名を参照しています。 ファイル名変更操作とリンク修正操作を 1 つのトランザクションにすることで、TxF はファイルの名前変更とリンクの修正が 1 回の操作として成功または失敗することを保証します。

一貫性のある同時実行更新

TxF は同時トランザクションを分離します。 あるアプリケーションがトランザクションの読み取り用にファイルを開き、別のアプリケーションがトランザクション更新用に同じファイルを開いている場合、TxF は 2 つのトランザクションの影響を相互に分離します。 言い換えると、トランザクション リーダーは、ファイルが別のトランザクションによって更新処理中であっても、常に 1 つの一貫性のあるバージョンのファイルを表示します。

アプリケーションでは、この機能を使用して、他のお客様が更新を行っている間にファイルを表示できます。 たとえば、トランザクション Web サーバーは、ファイルの 1 つの一貫性のあるビューを提供し、別のツールでそれらのファイルを同時に更新できます。

注意

TxF では、異なるトランザクション内の複数のライターによる同時更新はサポートされていません。 TxF では、複数の同時リーダーと一貫性のあるリーダーを持つ 1 つのライターのみがサポートされます。

 

他の Transacted Resource Manager との調整

トランザクション ファイル システムで使用されるトランザクションは、トランザクション レジストリでも使用できます。 ファイルに更新し、レジストリは 1 つのトランザクションと調整されます。

分散トランザクション コーディネーター (DTC) トランザクションまたは System.Transactions を使用すると、SQL、MSMQ、およびその他のトランザクション リソースに対する更新を、トランザクションファイルの更新と連携させることができます。 詳細については、「DTC の IKernelTransaction」を参照してください。

サポートされていないシナリオ

TxF では、次のトランザクション シナリオはサポートされていません。

  • ファイル共有など、ネットワーク ボリューム上のトランザクション。 TxF は、CIFS/SMB プロトコルではサポートされていません。
  • NTFS 以外のファイル システム上のトランザクション。
  • クライアント側キャッシュによってキャッシュされたファイルに対するトランザクション操作。
  • オブジェクト ID を使用したファイル アクセス。
  • 共有ライターのシナリオ。
  • ファイルが長期間 (数日または数週間) 開かれる状況。