Part 2 · ডেটাবেস 📖 ১৩ মিনিট পড়া 📝 ২০টি কুইজ

CAP Theorem

তিনটির মধ্যে দুটি — distributed system-এর fundamental constraint।

📝 কুইজে যান

আপনার দুটি ব্যাংক branch — Dhaka ও Chittagong। প্রতি মুহূর্তে দুজনে account balance sync রাখতে চান। হঠাৎ Dhaka-Chittagong-এর internet line কেটে গেল। দুটো option:

  • (1) Consistency বজায় রাখুন — যতক্ষণ sync নেই, কাজ বন্ধ। সবাই অপেক্ষা করুক।
  • (2) Availability বজায় রাখুন — দুই branch আলাদা চলুক। পরে sync করব।

এটাই CAP Theorem-এর core trade-off।

CAP Theorem কী?

CAP Theorem (Brewer's theorem, ২০০০) — distributed system-এ একসাথে তিনটির মধ্যে শুধু দুটি সম্পূর্ণভাবে guarantee করা যায়:

  • Consistency (C): সব node সবসময় একই data return করবে।
  • Availability (A): প্রতিটি request response পাবে (success বা failure)।
  • Partition Tolerance (P): Network failure হলেও system চলবে।

কেন তিনটি একসাথে impossible?

Distributed system-এ network partition হবেই (cable cut, router fail, latency spike)। অর্থাৎ P non-negotiable। তাহলে আসল choice — partition-এর সময় C না A?

Partition-এর সময়

  • Node A ও Node B-এর মধ্যে network broken।
  • Client A-কে কিছু লিখলো।
  • Client B-কে read করল।
  • Choice 1 (CP): B response দেবে না — sync নেই, তাই wait/error।
  • Choice 2 (AP): B পুরাতন data return করবে — কিন্তু respond তো করবে।

CP Systems — Consistency + Partition Tolerance

Partition-এ Consistency চান, Availability ছেড়ে দিন।

উদাহরণ

  • Traditional RDBMS: PostgreSQL, MySQL (synchronous replication)।
  • MongoDB: Default config-এ majority write — partition-এ minority side write reject।
  • HBase: Strong consistency।
  • Zookeeper: Coordination service — must be consistent।

Use case

  • Banking ও finance।
  • E-commerce inventory।
  • Booking system।
  • Where stale data = harm।

AP Systems — Availability + Partition Tolerance

Partition-এ Availability চান, Consistency relax করুন।

উদাহরণ

  • Cassandra: Eventually consistent (tunable)।
  • DynamoDB: Default eventual consistency।
  • CouchDB।
  • Riak।
  • DNS: Probably internet-এর সবচেয়ে বড় AP system।

Use case

  • Social media feed।
  • Real-time chat।
  • Like/View count।
  • Where availability > perfect accuracy।

CA Systems — কেন আসলে নেই?

Theory-তে CA (Consistency + Availability, no Partition) আছে — কিন্তু বাস্তবে network partition অনিবার্য। তাই pure CA system মাত্র single-node DB। Distributed হলে P আবশ্যক — তাই pick CP বা AP।

⚠️ ভুল ধারণা সংশোধন: অনেকে বলেন "MySQL একটি CA system" — ভুল। Single-node MySQL CA, কিন্তু যেকোনো replication যোগ করলেই P-র সাথে deal করতে হবে।

বাস্তবে — Tunable Consistency

Modern সিস্টেম strict CP/AP-এ আবদ্ধ নয়। Per-operation choose করা যায়:

Cassandra Consistency Levels

  • ONE: এক replica responded → AP-leaning।
  • QUORUM: Majority responded → balanced।
  • ALL: সব replica → CP-like।

DynamoDB

  • Eventually consistent read: Default, fast।
  • Strongly consistent read: Latency বেশি।

Triangle Visualization

Consistency (C) /\ / \ / CP \ /------\ / CA(❌)\ AP / \ /-----------\ Availability Partition (A) Tolerance (P)

Real distributed system-এ আপনি বাম পাশ (CP) বা ডান পাশ (AP) — top corner (CA) reachable না।

বাস্তব উদাহরণ

  • Banking transfer: CP — partition-এ better wait than wrong।
  • Facebook newsfeed: AP — slight delay OK, must show something।
  • Amazon shopping cart: AP — শেষে reconcile।
  • Stock trading: CP — wrong price = loss।
  • Booking.com: Mostly CP — double booking nay।

CAP-এর সীমাবদ্ধতা — PACELC

CAP শুধু partition-এর কথা বলে। Normal-time-এ কী? PACELC সম্পূর্ণ চিত্র দেয় — পরের chapter-এ বিস্তারিত।

সাধারণ ভুল ধারণা

  1. "তিনটিই একসাথে পাওয়া যায়": না — Brewer-এর প্রমাণিত theorem।
  2. "CAP system permanently choose": Modern DB tunable — query-level choose করা যায়।
  3. "P optional": না — distributed system-এ network partition অনিবার্য।
  4. "CP > AP": ভুল — use case dependent।

Best Practices

  • Use case define — তারপর CP/AP choose।
  • Tunable consistency embrace — per-operation choose।
  • Application-এ inconsistency handle — UI level-এ "syncing" indicator।
  • Conflict resolution strategy — CRDT, last-write-wins, vector clock।
  • CAP মুখস্থ করার চেয়ে partition-এ behavior বুঝুন।

📌 চ্যাপ্টার সারমর্ম

  • CAP = Consistency, Availability, Partition Tolerance — ৩-এর মধ্যে ২।
  • P avoid possible না — তাই pick CP বা AP।
  • CP: RDBMS, MongoDB; AP: Cassandra, DynamoDB।
  • Pure CA pretty single-node-এ মাত্র।
  • Modern DB tunable consistency দেয়।