・トランザクション処理とは、データベース内で複数の操作がからみ合った際にデータの整合性を保つための重要な仕組みのことを指します。
銀行では、口座残高の減少と引き出し金額の記録が1つのトランザクションとして取り扱われます。
・トランザクション処理にはACID特性という、データベースの安定性と整合性を確保するための基本的な要件があり、具体的には下記4つの条件を提供します。
ACID特性について下記に記載しました。
①原子性(Atomicity)
原子性は、トランザクション内の操作が「完全に実行」するか「まったく実行しない」かのいずれかであることを確保します。
この原子性により、途中で何か問題が発生した場合でも、トランザクションは一部だけが実行されることはありません。
もしエラーが起きれば、トランザクションは元の状態に戻され、データベースは変更されることなく保たれます。
例: 銀行口座間の資金移動
口座Aから引き出し、口座に
100入金。
途中でエラーが発生した場合、どちらの操作もキャンセルされ、最初の状態に戻ります。
②一貫性(Consistency)
一貫性は、トランザクションの実行前後でデータベースが整合性を持つことを確認する条件のことを指します。
この一貫性により、トランザクションによる変更がデータベース内で正しく反映され、データの状態が矛盾しないように保たれます。具体的には、関連するデータが適切に更新され、整合性が維持されることが求められます。
③独立性(Isolation)
独立性は、複数のトランザクションが同時に実行されても、お互いに影響を及ぼさないことを確認します。
これにより、一つのトランザクションが他のトランザクションによって中断されることなく、互いに干渉しないように管理されます。その結果、トランザクション同士の相互干渉を防ぎ、データの一貫性が保たれます。
例: 商品の在庫管理
同じ商品を同時に購入するトランザクションがあっても、在庫数が適切に更新されるようにします。
④永続性(Durability)
永続性は、トランザクションが完了した後もその結果が失われないことを確認します。
これにより、トランザクションの結果は、特別なログに記録され、データベース障害が発生した場合でも復元可能です。その結果、データの安定性が保たれ、信頼性のある状態が維持されます。
例: データの永続化
トランザクションがコミットされた後、サーバーがクラッシュしても、データベースはそのトランザクションの変更を保持します。
◆参考文献