次の方法で共有


トランザクションとは

トランザクションは、アトミック、一貫性、分離、持続性 (ACID) というプロパティを持つ操作のグループです。 トランザクションのサポートにより、新しい種類のアプリケーションを開発できる一方で、開発プロセスが簡素化され、アプリケーションの堅牢性が高まります。 このトピックの残りの部分では、これらのプロパティの必要性を示すシナリオと、各プロパティを定義するテーブルについて説明します。

操作の アトミック グループでは、グループ内のすべての操作が成功するか、すべての操作の影響を元に戻す必要があります ( ロールバックとも呼ばれます)。 たとえば、銀行送金は、1 つの口座からの借方と別の口座へのクレジットという 2 つの操作のアトミック セットである必要があります。 借方とクレジットは、アトミック グループとして実装する必要があります。 これら 2 つの操作が両方とも成功しない場合、譲渡は銀行または口座所有者に不公平に有利になります。

整合性の要件は、トランザクションの後にデータが一貫性があることを意味します (トランザクションの前に一貫性のあるシステムで開始したと仮定)。 銀行送金の例では、一貫性は、2 つの口座の結合口座残高を一定にするように定義できます。 銀行送金の例で一貫性を実装するには、借方操作とクレジット操作を同じ金額にする必要があります。

トランザクションのもう 1 つの例は、Web サイトの更新です。 電子商取引サイトでは、新しい製品カテゴリのナビゲーション ページを、新しい製品を説明する製品詳細ページとまったく同じタイミングで表示する必要があります。 この場合、トランザクションの制御下に複数のディレクトリ エントリを更新して追加する必要があります。 更新プログラムをアトミックにする必要があるだけでなく、現在買い物をしているお客様が進行中の更新プログラムを表示しないようにする必要もあります。 これは、トランザクションの 分離 プロパティの例です。

持続性の プロパティを使用するには、更新が完了した後も、システムが応答を停止した場合でも、その効果が持続する必要があります。 前の例では、十分なデータ回復を確保するだけで持続性を実現できるため、システムの応答が停止した後に、サイトへの新製品の追加を表すすべての新しいファイル システム エントリが表示されます。 これには、データ バックアップ、回復、高可用性メカニズムを備えたシステムが必要です。

トランザクションのアトミック性と他のプロパティの保証は、前の障害の復旧フェーズ中に発生した障害を含め、任意の数の障害が発生した場合に発生します。 最終的に、システムは 2 つの状態のいずれかに達します。すべての操作が適用されたか、どの操作も適用されていません。

トランザクションのプロパティを次の表にまとめます。

期間 説明
原子
トランザクション内のすべての操作が成功するか、どの操作も保持されません。
一貫 した
トランザクションが開始される前にデータが一貫している場合、トランザクションの完了後に一貫性が保たれます。
分離
進行中のトランザクションの影響は、他のすべてのトランザクションからは非表示になります。
耐久 性
トランザクションが完了すると、その結果は永続的であり、システムクラッシュ後も存続します。

これらのプロパティを使用すると、予期しない状況で正常に完了できない場合にトランザクションを中止する可能性があるため、ソフトウェアで予期しないエラーを処理できます。 トランザクション インフラストラクチャにより、中止されたトランザクションのすべての影響がロールバックされ、データが一貫した状態に戻ります。 したがって、トランザクション システムを使用すると、システム障害からの正常な復旧が可能になります。

ACID プロパティを保証するには、トランザクションをサポートするシステムに、必要に応じてトランザクションのコミットまたはロールバックに使用できる堅牢なログ機能が必要です。 詳細については、「 共通ログ ファイル システム」を参照してください。