• トランザクションが提供するSafetyの保証
  • Atomicity: All or Nothing
    • ACIDの文脈におけるAtomicityは並行性とは関係なくて(それはIsolation)、クライアントがトランザクションの中で複数のデータの書き込みをしたときに、Commitしたのにどこか一部が反映されていないみたいなことにならないという保証
  • Consistency
    • データが不変条件を守っている、という意味
      • 不変条件はアプリケーションによって異なる。ACIDの中でCだけは、データベースの特性ではなくアプリケーションの特性
      • ACIDの中で、Cは頭字語を成立させるために付け加えられたものであり、本来ACIDに属するものではない
    • CAP, PACELC theoremのCとは違うので注意
  • Isolation: Concurrency Control
    • 並行で実行されるトランザクションがあっても、あたかもそれぞれが順番に処理されている(=同時に実行されているトランザクションはない)かのように(Seriallyに)振る舞うことを保証する
    • 並行性が問題になるのは、1つのトランザクションが他のトランザクションから並行して変更されているデータを読み込む場合(read-write)、あるいは2つのトランザクションが同じデータを変更する場合(write-write)。read-readは安全
  • Durability
    • データが失われないという性質
    • WALとか
    • 完全な永続性は存在しない
      • 地球が破壊されたらおしまいなので