Sektörden Haberler

CAP (Consistency + Availability + Partition Tolerance) Teoremi Nedir?

1 Eylül 2025 Pazartesi


CAP Teoremi, dağıtık sistemlerde aynı anda üç özelliği birden sağlamak imkânsızdır der: Tutarlılık (Consistency), Erişilebilirlik (Availability) ve Bölünme Toleransı (Partition Tolerance). Teorem, 2000 yılında Eric Brewer tarafından ortaya atılmış ve sonrasında kanıtlanmıştır.

  • Tutarlılık (Consistency): Sistemdeki tüm kullanıcılar aynı anda aynı veriyi görmesi.
  • Erişilebilirlik (Availability): Sisteme yapılan her isteğe mutlaka bir yanıt alınması (başarılı ya da hata, ama yanıtsız kalmaz).
  • Bölünme Toleransı (Partition Tolerance): Dağıtık bir sistemde farklı sunucular arasındaki iletişim koptuğunda bile sistemin çalışmaya devam etme yeteneği. Yani ağda bir “bölünme” olsa bile, sistem tamamen durmaz; kısıtlı da olsa hizmet vermeyi sürdürür.

Bu nedenle bazı sistemler CP (Consistency + Partition Tolerance) yaklaşımını seçer (örn. HBase, MongoDB), bazıları ise AP (Availability + Partition Tolerance) yaklaşımını seçer (örn. Cassandra, DynamoDB). CAP Teoremi, modern dağıtık veritabanlarının tasarımında yapılan tercihlerin nedenlerini anlamak için temel bir pusula görevi görür.

CAP Teoremi pratikte, sistem tasarımcılarının ihtiyaçlarına göre bilinçli tercihler yapmasını sağlar. Örneğin, finansal işlemler yapan bir sistemde tutarlılık (Consistency) kritik olduğu için genellikle CP yaklaşımı tercih edilir. Öte yandan sosyal medya akışları gibi her zaman en güncel veriye ulaşmak zorunlu olmayan, fakat kesintisiz hizmetin önemli olduğu sistemlerde AP yaklaşımı daha uygundur. Yani CAP, sadece teorik bir kural değil, gerçek dünyada mimari kararları şekillendiren bir pusuladır.

Gerçek Dünya Örnekleri:

CP Sistemleri (Tutarlılık + Bölünme Toleransı):
 

  • MongoDB → Varsayılan ayarlarda tutarlılığı ön planda tutar.
  • HBase → Büyük veri işleme için tasarlanmıştır, erişilebilirlikten ödün verebilir.
  • Zookeeper → Dağıtık koordinasyon için tutarlılığı garanti eder.

AP Sistemleri (Erişilebilirlik + Bölünme Toleransı):

  • Cassandra → Her zaman erişilebilirlik sağlar, veriler sonradan tutarlı hale gelir.
  • DynamoDB → Amazon’un yüksek erişilebilirlik için geliştirdiği NoSQL veritabanı.
  • Riak → Yüksek erişilebilirlik odaklı, eventually consistent bir sistem.