アトミック性とは

アトミック性は、データベースやトランザクション管理において、一連の操作が完全に実行されるか、あるいは全く実行されないかのどちらか一方の状態になることを保証する特性のことであり、トランザクションに含まれる全ての操作を不可分(原子性)な一つの単位として扱い、システム障害時にもデータの一貫性と信頼性を維持するための根本的な要件のことです。

アトミック性の概要とACID特性

アトミック性(Atomicity、原子性)は、トランザクションの信頼性を保証するための4つの主要な特性(ACID特性)の一つであり、その頭文字「A」に相当します。

データベース管理システム(DBMS)において、トランザクションとは、一連の読み書き操作(例:口座Aから口座Bへ送金する処理)を論理的に一つのまとまりとして扱う単位です。アトミック性が保証されることで、このトランザクション内のすべての操作は、以下の二つの結果のいずれかのみを取ることが保証されます。

  1. コミット(Commit): トランザクション内のすべての操作が成功し、その変更がデータベースに永続的に反映される。
  2. アボートまたはロールバック(Abort / Rollback): トランザクション内の操作のどれか一つでも失敗した場合、またはシステム障害が発生した場合、トランザクション全体が中止され、それまでに行われた全ての変更が取り消され、データベースはトランザクション開始前の状態に戻される。

これにより、部分的または中途半端な変更がデータベースに残ることを防ぎます

主な目的は、システムが故障したり、予期せぬエラーが発生したりした場合でも、データが不整合な状態になるのを防ぐことです。

アトミック性の具体的な動作例

アトミック性の必要性は、特に複数の操作が連続して行われる必要がある金融取引などのケースで明確になります。

例:銀行の口座間送金トランザクション

口座Aから10,000円を口座Bに送金する処理は、以下のステップで構成される一つのトランザクションです。

  1. 口座Aから10,000円を引き落とす($A = A – 10000$)。
  2. 口座Bに10,000円を入金する($B = B + 10000$)。
  3. トランザクションをコミットする。

アトミック性が保証されていない場合、ステップ1の後にシステム障害が発生すると、口座Aからは引き落とされたが、口座Bには入金されていないデータ不整合の状態が発生し、10,000円が消失してしまいます。

アトミック性が保証されている場合、システム障害が発生すると、トランザクションがロールバックされ、口座Aの引き落とし処理も取り消され、トランザクション開始前の状態(両口座に変更なし)に戻されます。

アトミック性を保証する実装メカニズム

DBMSは、主に以下のメカニズムを用いてアトミック性を保証します。

1. ロギング(トランザクションログ)

DBMSは、トランザクションがデータベースに加える変更を、実際のデータ変更とは独立したトランザクションログ(Write-Ahead Log, WAL)に書き込みます。

  • 障害発生時: ログは不揮発性のストレージに保存されているため、システムが再起動した後、ログを読み取ることで、コミットが完了したトランザクションは再度適用(ロールフォワード)され、コミットされていない(未完了の)トランザクションはログを基に取り消し(ロールバック)処理が行われます。

2. シャドウページング

一部のシステムでは、トランザクションが変更を加える際に、元のデータページ(シャドウページ)をそのまま残し、変更後の新しいデータページを別の場所に作成します。

  • コミット時: 新しいデータページが有効であると宣言する操作がアトミックに行われます。
  • アボート時: 新しいデータページを破棄し、シャドウページをそのまま利用し続けることで、ロールバックが完了します。

アトミック性は、データの完全な信頼性を実現するための基盤であり、特に可用性(システムの停止中にデータが不整合になるリスク)と密接に関連する、DBMSの最も基本的な設計原則の一つです。

関連用語

ACID特性| 今更聞けないIT用語集
トランザクション | 今更聞けないIT用語集
APPSWINGBYシステム開発

お問い合わせ

システム開発・アプリ開発に関するご相談がございましたら、APPSWINGBYまでお気軽にご連絡ください。

APPSWINGBYの

ソリューション

APPSWINGBYのセキュリティサービスについて、詳しくは以下のメニューからお進みください。

システム開発

既存事業のDXによる新規開発、既存業務システムの引継ぎ・機能追加、表計算ソフトによる管理からの卒業等々、様々なWebシステムの開発を行っています。

iOS/Androidアプリ開発

既存事業のDXによるアプリの新規開発から既存アプリの改修・機能追加まで様々なアプリ開発における様々な課題・問題を解決しています。


リファクタリング

他のベンダーが開発したウェブサービスやアプリの不具合改修やソースコードの最適化、また、クラウド移行によってランニングコストが大幅にあがってしまったシステムのリアーキテクチャなどの行っています。