トランザクション NTFS の使用に代わる方法

概要

Microsoft では、今後のバージョンの Windows では利用できない可能性がある API プラットフォームを採用するのではなく、説明されている代替手段 (または場合によっては、他の方法で他の方法を調査することもあります) を利用することを

はじめに

TxF は、Windows にアトミックファイルトランザクションを導入する手段として Windows Vista で導入されました。 これにより、Windows の開発者は、1つのファイル、複数のファイルに関連するトランザクション、および (txr を使用した) データベース (SQL など) の複数のソースにまたがるトランザクションで、ファイル操作のトランザクションの原子性を実現できます。 TxF は強力な api セットですが、この api Windows プラットフォームには、開発者がアプリケーション開発の一部として考慮する必要がある複雑さとさまざまな微妙な違いがあるため、開発者の関心が非常に限られています。 その結果、Microsoft は今後のバージョンの Windows で非推奨 TxF api を検討して、より多くの顧客にとって価値のある他の機能や api に対する開発と保守の取り組みに注力しています。 次のセクションでは、複数の種類のアプリケーションシナリオで TxF と同様の結果を得るための別の方法について説明します。

シナリオ別の TxF の代替

前述の制限事項により、開発者は txf に代わるものを調査して、TxF では満たされないアプリケーションシナリオをカバーする必要があります。 ここでは、開発者が検討する必要のある TxF の一般的な使用方法について、提案します。 この一覧は完全でも完全でもないことに注意してください。

"ドキュメントのような" データを使用して1つのファイルを更新するアプリケーション

"ドキュメントのような" データを処理する多くのアプリケーションでは、ドキュメント全体をメモリに読み込み、それを操作してから、変更を保存するために書き戻す傾向があります。 ここで必要な原子性は、変更が完全に適用されるか、適用されないことです。不整合な状態によってファイルが破損してしまうためです。 一般的な方法として、ドキュメントを新しいファイルに書き込んでから、元のファイルを新しいファイルに置き換えます。 これを行う1つの方法は、 Replacefile API を使用することです。

複数のファイルまたはレジストリハイブへの更新を実行するアプリケーション

一連のファイルとレジストリへの更新をアトミックに実行する必要があるアプリケーションは多数あります。 このシナリオは、通常、Windows インストーラーなどのインストーラーアプリケーションを使用して実現されます。 Windows インストーラーの詳細については、 Windows インストーラーを参照してください。

構造化データのセットを管理するアプリケーション

多くのアプリケーションでは、データを格納する手段として、さまざまな種類の独自のデータ構造の一部を管理しています。 これらのアプリケーションの重要な課題は、更新操作中にエラーが発生した場合に、内部ポインター/参照の整合性を維持するプロセスです。 このメカニズムを作成することは、実際には "ハードな問題" なので、ほとんどのアプリケーションはデータセットを管理するために、実際のデータベースサーバーに依存します。

構造化データの管理に役立つ2つの推奨事項を次に示します。

  • Microsoft では、アプリケーションがトランザクションデータの更新および取得操作を実行できるように、Windows の拡張可能な Storage エンジン (ESE) 受信トレイを提供しています。 拡張 Storage エンジン (ESE) の詳細については、「」を参照してください https://msdn.microsoft.com/library/gg269259.aspx
  • より強力で信頼性の高い、スケーラブルなデータベースプロバイダーを必要とするアプリケーションでは、Microsoft SQL Server で使用できる Filestream 機能の使用を検討することをお勧めします。 SQL filestream の詳細については、「」を参照してください https://technet.microsoft.com/library/bb933993.aspx

ローカルの NTFS ボリューム上のファイルと外部 SQL データベースのテーブルに関連するトランザクションを含むアプリケーション

大規模なデータセットが必要なアプリケーションや、外部データベースとローカルストレージに関連する操作でトランザクションの原子性を持つ必要があるアプリケーションのクラスがあります。 このシナリオでは、開発者が SQL filestream を使用してトランザクションファイル操作を実行することを検討することを強くお勧めします。 SQL filestream の詳細については、「」を参照してください https://technet.microsoft.com/library/bb933993.aspx

TxF は、サードパーティのアプリケーションで一般的に使用されない複雑で微妙なな Api のセットです。 これらの api が今後のバージョンの Windows では利用できない可能性があります。また、txf が向けに開発されたさまざまなシナリオを実現するためのより簡単な方法があるということは、開発者がアプリケーションで txf に依存するのではなく、これらの代替手段を調査することを強くお勧めします。