スタートページWeb教材一覧データベース

ACID特性(とBASE特性)


ACID特性とは

信頼性のあるトランザクションシステムが持つべき要件としてACID特性があります。ACIDとは
  Atomicity:原子性(不可分性)
  Consistency:一貫性
  Isolation:独立性(隔離性)
  Durability:耐久性(永続性)
の頭文字をとったものです。

Atomicity

トランザクションの更新処理がすべて完全に処理されるか,全く処理されない(全体が取り消される)かのどちらかの結果になることを保証する特性です。
 例えば、「倉庫Aから倉庫Bに商品を10個送る」というトランザクションは
  1 倉庫Aの在庫を10個減じる
  2 倉庫Bの在庫を10個増やす
の二つの処理はセットになっており、分けることができない(不可分)ことから原子性といいます。
 Atomicityとは、「1と2の両方が実行される」か、「どちらも実行されない」のどちらかだけで、「一方だけが実行されることはない」ことを保証することです。

Consistency

トランザクションの実行前後でデータの整合性が保たれ、矛盾の無い状態が継続される特性です。
  倉庫Aには10個の在庫がなく、出荷することができない
  倉庫Bでは在庫が多く、10個増やすだけのスペースがない
のどちらかであれば、この処理はできなくなります。
 Consistencyとは、トランザクションに関係するすべての条件が満足されることを保証する特性です。

2相コミットメントは、AtomicityとConsistencyを満足させることだといえます。

Isolation

あるトランザクションの実行中に他のトランザクションによる影響を受けないこと、あるトランザクションが他の実行中のトランザクションに影響を与えないことを保証することです。すなわち他の処理と隔離され独立していることです。
 排他制御はIsolationを保証する手段だといえます。

Durability

トランザクションが完了したら、その結果は記録され、システムにトラブルが発生しても失われることがないという特性です。
 これを完全に保証することは困難ですが、ログを採取してバックアップとリカバリーすることがこれにあたります。

BASE特性

ACID特性は、トランザクションがデータベースの信頼性を保証する基本的な性質をまとめたもので、データの整合性と信頼性が最重要なシステムでは必須な性質です。従来のRDBMSではこれをベースにしていました。
 それが近年では、大規模な分散環境下で多数の利用者が利用する環境でリアルタイムでの厳密な整合性が必須ではないシステムが普及してきました、このようなシステムでは、パフォーマンスやスケーラビリティのほうがが優先されるようになり、ACID特性は厳密ではあるが効率が悪い欠点があります。
 そこのようなシステムでは、NoSQLをDBMSにしていますが、ここではACID特性に代わりBASE特性に立脚しています。
  ・Basically Available
  ・Soft state
  ・Eventually consistent


本シリーズの目次へ