Skip to content

Consistency vs Availability (কন্সিস্টেন্সি বনাম অ্যাভেইল্যাবিলিটি)

ডিস্ট্রিবিউটেড সিস্টেমে যখন নেটওয়ার্ক ফেইল করে বা পার্টিশন হয়, তখন আমাদের একটি কঠিন সিদ্ধান্ত নিতে হয়: আমরা কি ডেটার সঠিকতা (Consistency) চাই, নাকি সিস্টেম সবসময় চালু (Availability) রাখতে চাই? এটি CAP Theorem-এর মূল কথা।

মূল ধারণা

Consistency (কন্সিস্টেন্সি)

সিস্টেমের যেকোনো নোড (Node) থেকে ডেটা রিড করলে সবসময় একই এবং লেটেস্ট ডেটা পাওয়া যাবে।

  • যদি একটি নোডে ডেটা আপডেট হয়, তবে অন্য নোড থেকে রিড করার আগে সেই আপডেটটি সব জায়গায় ছড়িয়ে পড়তে হবে।
  • আপডেট শেষ না হওয়া পর্যন্ত সিস্টেম রিড রিকোয়েস্ট ব্লক করে রাখতে পারে বা এরর দিতে পারে।

Availability (অ্যাভেইল্যাবিলিটি)

সিস্টেম সবসময় সচল থাকবে এবং প্রতিটি রিকোয়েস্টের রেসপন্স দেবে (সফল বা বিফল)।

  • এমনকি যদি কিছু নোড ডাউন থাকে বা নেটওয়ার্ক সমস্যা থাকে, তবুও ইউজার সিস্টেম ব্যবহার করতে পারবে।
  • তবে, রেসপন্সে পাওয়া ডেটাটি লেটেস্ট নাও হতে পারে (Stale Data)।

Tradeoff: কোনটি বেছে নেবেন?

CAP Theorem অনুযায়ী, নেটওয়ার্ক পার্টিশন (P) হলে আমরা C এবং A-এর মধ্যে যেকোনো একটি বেছে নিতে পারি।

1. CP (Consistency & Partition Tolerance) -> Consistency over Availability

এই ডিজাইনে আমরা ডেটার সঠিকতা বা কন্সিস্টেন্সিকে অগ্রাধিকার দিই। যদি সিস্টেম নিশ্চিত করতে না পারে যে ডেটা সব নোডে সিঙ্ক হয়েছে, তবে সে রিকোয়েস্ট রিজেক্ট করে বা অপেক্ষা করায়।

  • কখন ব্যবহার করবেন:
    • Banking & Financial Systems: আপনার অ্যাকাউন্ট ব্যালেন্স ভুল দেখানো যাবে না। টাকা ট্রান্সফারের সময় সিস্টেম ডাউন থাকলেও ভুল ব্যালেন্স দেখানো গ্রহণযোগ্য নয়।
    • Ticket Booking: একই ট্রেনের সিট দুজনকে বুক করতে দেওয়া যাবে না।
    • Inventory Management: স্টক শেষ হয়ে গেলে অর্ডার নেওয়া যাবে না।

2. AP (Availability & Partition Tolerance) -> Availability over Consistency

এই ডিজাইনে আমরা সিস্টেমকে সবসময় সচল রাখতে চাই। যদি নেটওয়ার্ক সমস্যার কারণে সব নোডে ডেটা আপডেট নাও হয়, তবুও সিস্টেম পুরোনো ডেটা দিয়ে রেসপন্স দেবে। সঠিক ডেটা পরে সিঙ্ক হবে (Eventual Consistency)।

  • কখন ব্যবহার করবেন:
    • Social Media Likes: ফেসবুকে একটি পোস্টে লাইক দিলে সেটি সাথে সাথে আপনার বন্ধুর কাছে না দেখালেও সমস্যা নেই। কয়েক সেকেন্ড পর আপডেট হলেও চলে।
    • E-commerce Product Catalog: অ্যামাজনে প্রোডাক্টের দাম বা রেটিং আপডেট হতে একটু দেরি হলেও ইউজার প্রোডাক্ট দেখতে বা কার্টে অ্যাড করতে পারলেই হলো।
    • DNS (Domain Name System): ওয়েবসাইট ভিজিট করার সময় সবসময় রেজাল্ট পাওয়া জরুরি, আইপি আপডেট হতে একটু দেরি হলেও চলে।

তুলনা

বৈশিষ্ট্যConsistency (CP)Availability (AP)
ফোকাসডেটার নির্ভুলতা (Accuracy)সিস্টেমের আপটাইম (Uptime)
ফেইলিয়র হলেসিস্টেম এরর দেবে বা ব্লক হবেসিস্টেম পুরোনো ডেটা দেখাবে
ল্যাটেন্সিবেশি (সিঙ্ক হওয়া পর্যন্ত অপেক্ষা করতে হয়)কম (লোকাল নোড থেকে রেসপন্স দেয়)
Best ForBanking, Payments, Stock MarketSocial Media, Blogs, Reviews

সিদ্ধান্ত

ডিজাইন করার সময় নিজেকে প্রশ্ন করুন: "আমার সিস্টেমে কি ৫ সেকেন্ডের জন্য ভুল ডেটা দেখালে বড় কোনো ক্ষতি হবে?"

  • উত্তর "হ্যাঁ" হলে -> Consistency বেছে নিন।
  • উত্তর "না" হলে -> Availability বেছে নিন।

Released under the MIT License.