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 早稲田大学 丸山不二夫