CAP定理

システムのCAP (分散耐性と可用性と一貫性) のうち、同時には2つまでしか満たすことはできない、という (Prof. Eric Brewer (UC Berkeley)の) 主張。

  • Consistency (一貫性(整合性))
  • Availability (可用性)
  • Partition Tolerance(分散耐性)

※ITにおけるConsistencyの略は整合性の方が一般的の様だけど、個人的には一貫性の方が意味を良く表していて良い思います。

 


BASEトランザクション

CAP定理に対して、「Eventual Consistency(結果的な一貫性(整合性)) を満たせば、Availability(可用性)とPartition Tolerance(分散耐性)も満たせるよ」という新たな主張とそれを踏まえたトランザクションのACID属性を見直していこうという概念の基本。

個人的には「DNS」や「Active Directory」をイメージすれば理解が早まりました。

  • Basically Available (楽観ロックやキューなどで可用性を高めましょう)
  • Soft-State (分散したノード間のデータ同期を終つことを許容しましょう)
  • Eventual Consistency (一時的に一貫性(整合性)が崩れても最後に帳尻があえば善としましょう (結果一貫性/結果整合性))

 


従来のACID -> 新しいACID

GoogleのGregor Hohpe氏は、クラウドにおいてACIDは次のような意味になると言った

  • Atomic(原子性) -> Associative(結合の)
  • Consistent(一貫性(整合性)) -> Commutative(相互の)
  • Isolated(独立性) -> Idempotent(べき等の)
  • Durable(永続性) -> Distributed(分散の)

 


RDBマンセー、Coddラブなワタシとしては、にわかに受け入れがたい概念だけど、スケールするウェブシステム作りには必要になっていくと思う。そろそろパラダイムシフトが必要かもしれない。

参考サイト

{Fight the Future => じゅくのblog}-クラウドでの新しいACID、そしてBASEトランザクションとCAP定理

ScalabilityとAvailability 早稲田大学 丸山不二夫

BrewersCapTheorem – ブリュワーの CAP 定理

CAPとBASEとEventually Consistent