CAP থিওরি কী?

CAP Theory

🔹 CAP থিওরি কী?

CAP থিওরি (বা Brewer’s theorem) হলো এক ধরনের তত্ত্ব যেটা বলে, কোনো Distributed System (যেমন Distributed Database) একই সাথে নিচের তিনটি জিনিস পুরোপুরি দিতে পারবে না:

  1. C – Consistency (সঙ্গতি/একই রকম ফলাফল)
    👉 সিস্টেমের সব নোডে (server/database copy) ডেটা একদম একই থাকবে।
    উদাহরণ: তুমি যদি একটি ডাটাবেজে নতুন ডেটা লেখো, অন্য নোড থেকেও তা সঙ্গে সঙ্গে দেখতে পাবে।

  2. A – Availability (উপলভ্যতা)
    👉 সিস্টেম সবসময় অনলাইন থাকবে এবং ইউজারের রিকোয়েস্টের জবাব দেবে।
    উদাহরণ: সার্ভারের কোনো সমস্যা হলেও ইউজার খালি হাতে ফিরবে না; কিছু না কিছু রেসপন্স পাবে।

  3. P – Partition Tolerance (বিভাজন সহনশীলতা)
    👉 নেটওয়ার্কে সমস্যা হলেও (server একে অপরের সাথে যোগাযোগ করতে না পারলেও) সিস্টেম কাজ চালিয়ে যাবে।
    উদাহরণ: সার্ভারের কিছু অংশ বিচ্ছিন্ন হলেও বাকি অংশ ইউজারকে সার্ভিস দিবে।


🔹 CAP থিওরির মূল বক্তব্য

তুমি একই সাথে তিনটা (C, A, P) একসাথে পাবেই না।
তুমি সর্বোচ্চ ২টা পেতে পারো।
মানে, কোনো Distributed Database ডিজাইন করার সময় তোমাকে বেছে নিতে হয় – কোন দুটি বেশি দরকার, আর কোনটা ছাড় দিতে হবে।


🔹 Distributed Database-এ এর প্রয়োগ

ধরি, নেটওয়ার্কে সমস্যা হলো (Partition ঘটল)। তখন তোমাকে ঠিক করতে হবে:

  1. CP (Consistency + Partition tolerance)

    • নেটওয়ার্ক সমস্যা হলেও ডেটা সব নোডে একই রাখবে।

    • কিন্তু Availability কমে যাবে; ইউজার হয়তো কিছু সময় রেসপন্স পাবে না।

    • উদাহরণ: HBase, MongoDB (এক্সট্রা কনফিগ সহ), Redis Sentinel mode

    • ব্যবহার হয়: Banking system, payment gateway (এখানে ডেটার মিল না থাকলে বড় সমস্যা হবে)।

  2. AP (Availability + Partition tolerance)

    • নেটওয়ার্ক সমস্যা হলেও সবসময় রেসপন্স পাবে।

    • তবে Consistency কমে যেতে পারে; কিছু সময়ের জন্য আলাদা নোডে আলাদা ডেটা দেখা যেতে পারে (eventual consistency)।

    • উদাহরণ: Cassandra, DynamoDB, CouchDB

    • ব্যবহার হয়: Social Media, E-commerce site (একটু mismatch হলেও চলবে, কিন্তু সাইট বন্ধ থাকা চলবে না)।

  3. CA (Consistency + Availability)

    • Consistency আর Availability দুইটাই রাখা সম্ভব।

    • কিন্তু Partition tolerance রাখা যাবে না (মানে, নেটওয়ার্ক সবসময় ঠিক আছে বলে ধরা হয়)।

    • আসলে বাস্তব Distributed System-এ নেটওয়ার্ক failure হবেই, তাই pure CA system প্রায় অসম্ভব

    • উদাহরণ: সাধারণ single-node relational DB (MySQL, PostgreSQL)


🔹 সুবিধা ও অসুবিধা

সুবিধা

  • CAP থিওরি আমাদের System Design-এ বেছে নিতে সাহায্য করে — কোন জায়গায় Consistency বেশি দরকার, আর কোথায় Availability বেশি দরকার।

  • এর মাধ্যমে প্রকল্পভেদে সঠিক Database বা Architecture নির্বাচন সহজ হয়।

  • Developer দের বুঝতে দেয় যে Distributed System-এ সব পাওয়া সম্ভব না।

অসুবিধা

  • এটি অনেকটা high-level theoretical model; বাস্তবে Database-গুলো অনেক সময় মিশ্রিত approach ব্যবহার করে (যেমন eventual consistency)।

  • কখনো কখনো CAP থিওরি decision নিতে সহজ করে না, কারণ বাস্তবে latency, throughput, user-experience ইত্যাদিও গুরুত্বপূর্ণ ফ্যাক্টর।

  • Pure CA সিস্টেম বাস্তবে কাজ করে না, কারণ network partition অস্বাভাবিক কিছু নয়।


🔹 সহজ উদাহরণ

ধরো তুমি একটা Social Media বানালে –

  • যদি Consistency (C) দাও → সবাই একই post একসাথে দেখবে, কিন্তু অনেক সময় post লোড হতে দেরি হতে পারে।

  • যদি Availability (A) দাও → সবাই post দেখতে পাবে, কিন্তু কিছু user পুরোনো data দেখতে পারে।

  • যদি Partition Tolerance (P) না দাও → নেটওয়ার্কে সামান্য সমস্যা হলে সিস্টেমই ডাউন হয়ে যাবে।

তাই Facebook/Instagram এর মতো সিস্টেম সাধারণত AP (Availability + Partition tolerance) বেছে নেয়।
আর Bank system বেছে নেয় CP (Consistency + Partition tolerance)


Mohammad Zubair

I'm Mohammad Zubair, a passionate software engineer working in the dynamic world of IT. Currently, I'm proud to be a part of HawarIT, a thriving Dutch-Bangladeshi joint venture company, where I contribute my expertise and enthusiasm to the field of software engineering.

Leave a Reply

Your email address will not be published. Required fields are marked *