ACID特性
Atomicity
これがないと、多様なエラーケースが存在するから大変
Consistency
Isolation
独立性、並列実行は直列実行と同じ結果(等価)を保証 同一データを同時に参照/更新したくない
どうするか
今自分が最新データーを操作しているか否かを判断できれば良い
最新データーの版を一つに限定(ロック)
並列実行しにくいので効率は上がりにくいが、失敗することは少ない
ぶつかり合う可能性が高い場合に良い
データ参照/更新時刻を記録しておいて、トランザクションが終わった時にもう一度チェックして他の人がアクセスしていない事を確認
もし他の人がアクセスしていたら、アボート(失敗)となる
(原子性を保証するために全取り消し)
ぶつかり合う可能性が低い場合に良い
もしくは、変わったDBMSとして最新版が複数存在しても良いという考え方のDMBSもある(git的) MVCC (更新時だけ、最新版を一つに限定)
複数の最新版を許容
自動マージを試みる(失敗したら手動でマージ)
マージして失敗したら手動マージ、なんてやってられない
Durability
故障が生じても永続性を担保