ACID特性とは:トランザクションがみたすべき特性
トランザクションは、データベースに対する操作をまとめて一つの処理として扱う仕組みです。 トランザクションがみたすべき特性を ACID 特性といいます。 ACID 特性は、トランザクションが正しく動作するために必要な4つの特性を指します。
目次
ACID 特性は、トランザクションが正しく動作するために必要な4つの特性を指します。 (ちなみに、ACID の読み方は「アシッド」です)
ACID は、次の4つの特性から成り立っています:
- Atomicity(原子性)
- Consistency(一貫性)
- Isolation(隔離性 / 分離性)
- Durability(耐久性 / 永続性)
Atomicity:原子性
トランザクションは、全ての操作が成功するか、全てが失敗するかのどちらかであるべきです。
例えば、銀行口座間の送金処理を考えてみましょう。 送金処理は、送金元の口座からお金を引き出し、送金先の口座にお金を振り込むという2つの操作から成り立っています。 この2つの操作は、どちらも成功するか、どちらも失敗するかのどちらかであるべきです。 送金元の口座からお金を引き出す操作が成功しても、送金先の口座にお金を振り込む操作が失敗すると、お金が消えてしまうことになります。
Consistency:一貫性
トランザクションの実行前後でデータベースの整合性が保たれるべきです。
例えば、銀行口座間の送金処理を考えてみましょう。 送金処理の前後で、送金元の口座と送金先の口座の残高の合計が変わってはいけません。 送金元の口座からお金を引き出す操作が成功した場合、送金先の口座にお金が振り込まれる操作も成功しているはずです。 このように、トランザクションの実行前後でデータベースの整合性が保たれることが重要です。
Isolation:隔離性
トランザクションは、他のトランザクションと独立して実行されるべきです。
例えば、銀行口座間の送金処理を考えてみましょう。 複数のユーザーが同時に送金処理を実行した場合、それぞれのトランザクションが互いに影響を及ぼさないようにする必要があります。 送金処理の途中で他のユーザーが同じ口座に対して送金処理を実行してしまうと、データの整合性が保たれなくなります。
Durability:耐久性
トランザクションが正常に終了した場合、その結果は永続的であるべきです。
例えば、銀行口座間の送金処理を考えてみましょう。 送金処理が正常に終了した場合、送金元の口座からお金を引き出し、送金先の口座にお金を振り込む操作が永続的に保存されるべきです。 データベースの障害や電源の問題が発生しても、送金処理の結果が失われないようにする必要があります。
まとめ
ACID 特性は、トランザクションが正しく動作するために必要な4つの特性を指します。 トランザクションは、原子性、一貫性、隔離性、耐久性の4つの特性を満たすことで、データベースの整合性を保ち、信頼性の高い処理を実現します。