যখন Consistency বেশি জরুরি
টাকার হিসাব
বল্টু ভাই মন্টুর দিকে তাকিয়ে বললেন, “ধর তুই তোর কোম্পানির সবার জন্য সিলেট থেকে চা পাতা আনিস। চা পাতার সাপ্লায়ারকে তোর ১০ হাজার টাকা পাঠাতে হবে। তুই ব্যাংকের অ্যাপে ঢুকে ১০ হাজার টাকা সেন্ড মানি করলি।”
“করলাম,” মন্টু মাথা নাড়ল।
“ঠিক যেই মুহূর্তে তুই 'Send' বাটনে চাপ দিলি, ওই মুহূর্তেই ব্যাংকের ঢাকা সার্ভার আর সিলেট সার্ভারের মাঝখানের নেটওয়ার্ক কেবল কাটা পড়ল! অর্থাৎ, Partition (P) ঘটে গেল। ঢাকার সার্ভার এখন কোনোভাবেই সিলেট সার্ভারের সাথে কথা বলতে পারছে না।”
মন্টু মনোযোগ দিয়ে শুনছে।
“এখন সিস্টেম যদি নেটওয়ার্ক বিচ্ছিন্ন থাকা অবস্থাতেই কোনো সমন্বয় ছাড়াই শুধু Availability (A)-কে প্রায়োরিটি দিত, তাহলে ঝামেলা পাকিয়ে যেত। ধর, ঢাকা সার্ভার তোর একাউন্ট থেকে টাকা ঠিকই কেটে নিল, কিন্তু সিলেট সার্ভার যেহেতু অফলাইন, সে জানতে পারল না। ফলে দুই সার্ভারের খাতার হিসাব আলাদা হয়ে যেত। তোর টাকাও মাঝপথে হাওয়া হয়ে যেত, আর সাপ্লায়ারও টাকা পেত না!”
মন্টু আঁতকে উঠল, “আরে সর্বনাশ! তাহলে তো আমি ব্যাংকের নামে মামলা করে দেব!”
“ঠিক এই কারণেই,” বল্টু ভাই হেসে বললেন, “টাকা-পয়সার লেনদেনের ক্ষেত্রে Availability-র চেয়ে Consistency (C) সবার আগে দরকার। একটা সঠিক CP সিস্টেমে যখনই নেটওয়ার্ক পার্টিশন (P) হয়, সিস্টেম কোনো রিস্ক নেয় না। ঢাকা সার্ভার যখন দেখল সিলেট সার্ভারের সাথে যোগাযোগ করা যাচ্ছে না, তখন সে ট্রানজ্যাকশনটা ফাইনাল করার আগেই সাথে সাথে অপারেশনটা ক্যানসেল করে দেয় এবং স্ক্রিনে 'Service Unavailable' বা এরর দেখিয়ে দেয়। ফলে ডেটার কোনো গড়মিল হয় না, হিসাব একদম ১০০% সেইফ থাকে। যেহেতু সিস্টেম পার্টিশনের সময় Availability বাদ দিয়ে Consistency-কে বেছে নিয়েছে, তাই ব্যাংকিং হলো একটা পাকা CP সিস্টেম।”

“বুঝলাম ভাই, তাহলে এটাই তো ভালো সিস্টেম, কোনো ডাটার এদিক সেদিক হবে না। AP সিস্টেমের আবার কী দরকার?” খুশি মনে প্রশ্ন করলো মন্টু।