CAP Theorem Software Engineer
CAP Theorem
----------------------------------------------------
ধরেন, আপনি একটা প্রজেক্ট বানাতে যাচ্ছেন। এখন আপনি MySQL, PostgreSQL বা MongoDB অথবা ব্লা ব্লা কিছু একটাতে expert , সেটাকেই বেছে নিলেন।
ভাবার প্রশ্ন, তাই না?
Well, আমরা আমাদের প্রজেক্টের জন্য কখন, কোন ডেটাবেস ব্যবহার করবো, সেটা ঠিক করার জন্য CAP Theorem নামে কিছু একটা আছে। এখন প্রশ্ন হচ্ছে - ভাই, এই CAP Theorem টা আসলে কী?
CAP Theorem হচ্ছে, একটা distributed system একই সময়ে Consistency, Availability এবং Partition Tolerance এই তিনটি সুবিধার মধ্যে সর্বোচ্চ দুইটা বজায় রাখতে পারে। তিনটিই একসাথে পাওয়া যায় না।
তাহলে, এই Consistency, Availability আর Partition Tolerance এর মানে কী?
----------------------------
Consistency : ধরেন, আপনার সিস্টেমে একাধিক নোড (server) আছে। সব নোডে যেন একই সময়ে একই ডেটা থাকে।
Availability : আপনার সিস্টেমে অনেকগুলো নোড আছে। যেকোনো সময় ইউজার যখন request করবে, সে নতুন বা পুরনো যেকোনো একটা ডেটা হলেও পাবে।
Partition Tolerance : ধরেন, কোনো নোডের সাথে অন্য নোডগুলোর সংযোগ বিচ্ছিন্ন (network fail) হয়ে গেছে। তারপরও যেন ইউজার ডেটা পেতে পারে এবং সিস্টেম কাজ করে।
এখন দেখি, বিভিন্ন পরিস্থিতিতে আমরা কিভাবে CAP-এর priority দেবো:
-------------------------
১. Consistency + Partition Tolerance (CP)
সিস্টেম বলবেঃ “আমি সবসময় সঠিক ডেটা চাই। যদি দরকার হয়, কিছু সময়ের জন্য সার্ভিস বন্ধ থাকুক”। অর্থাৎ, এখানে Availability ত্যাগ করতে হবে।
Use Case: ব্যাংকিং সিস্টেম, অর্ডার ম্যানেজমেন্ট , ইনভেন্টরি ম্যানেজমেন্ট।
Database Exampple : MongoDB (CP মোডে) , Hbase ,PostgreSQL (distributed ভার্সনে)
২. Availability + Partition Tolerance (AP)
সিস্টেম বলবেঃ “দ্রুত রেসপন্স দিতে হবে, ডেটা একটু পুরনো হলেও চলবে।” অর্থাৎ, এখানে Consistency ত্যাগ করতে হবে।
Use Case ঃ সোশ্যাল মিডিয়া ফিড, ক্যাশিং, মেসেজিং সিস্টেম।
Database Examples: Cassandra , CouchDB , DynamoDB etc
৩. Consistency + Availability (CA)
এইটা শুধু তখনই সম্ভব যখন network partition ঘটে না।
Use Case: ছোট বা লোকাল সিস্টেম, single-node অ্যাপ্লিকেশন।
Database Examples: MySQL (non-distributed) , Sqlite ।
Application Scenario :
---------------------------------
Banking App:
Priority: একটুও ভুল চলবে না।
Choose: CP → PostgreSQL বা MongoDB (strong consistency সহ)
Messaging App (যেমন WhatsApp):
Priority: দ্রুত মেসেজ পৌঁছানো।
Choose: AP → Cassandra বা DynamoDB
অ্যাপের ধরন অনুযায়ী CAP পছন্দ করার কারণ :
-------------------------------
- Banking App -> CP -> ডেটা সঠিক থাকা জরুরি
- Social Media -> AP -> দ্রুত এক্সেস প্রয়োজন, consistency কম জরুরি
- Chat/Messaging -> AP -> দ্রুত ডেলিভারি দরকার
তাই, প্রজেক্ট বানানোর সময় শুধু এই দেখে ডেটাবেস বেছে নিয়েন না যে আপনি কোনটাতে এক্সপার্ট। আপনাকে ভাবতে হবে, আপনার প্রজেক্টের structure এবং প্রয়োজন অনুযায়ী কোনটা সবচেয়ে উপযুক্ত? যেমন: Consistency দরকার, না Availability ? আপনার সিস্টেম কি distributed? network fail করলে system কীভাবে behave করবে, এগুলা ভাবতে হবে।
এই প্রশ্নগুলোর উত্তর খুঁজে পেতেই আমাদের CAP Theorem বুঝা উচিত। সঠিক Technology বেছে নিন আপনার প্রজেক্টের ধরন বুঝে, নিজের পছন্দ অনুযায়ী নয়। CAP Theorem বুঝলে সিস্টেমের জন্য ডাটাবেজ Select করা সহজ হবে।
No comments