একটি সাধারণ একক কম্পিউটার প্রসেসরে মেমোরি কনসিস্টেন্সি অত্যন্ত সোজা: মেমোরিতে একটি ভ্যালু লেখার পর যেকোনো রিড অপারেশন সর্বশেষ লেখা মানটিই ফেরত দেয়। কিন্তু যখন হাজার হাজার সার্ভারে ডেটা রেপ্লিকেট করা থাকে এবং প্রতিটি সার্ভার নেটওয়ার্কের ভিন্ন ভিন্ন ল্যাটেন্সিতে চলে, তখন “সর্বশেষ রাইট” কথাটির কোনো বস্তুনিষ্ঠ অস্তিত্ব থাকে না। এই জটিল বাস্তবতায় ক্লায়েন্ট ও ডেটাবেসের মধ্যে যোগাযোগের সুনির্দিষ্ট গাণিতিক প্রতিশ্রুতি নির্ধারণ করে কনসিস্টেন্সি মডেল (Consistency Models)। এর শীর্ষে অবস্থান করে লিনিয়ারাইজেবিলিটি (Linearizability)—যা বিশ্বজুড়ে ছড়িয়ে থাকা শত শত সার্ভারকে বাহ্যিক দর্শকের কাছে এমনভাবে উপস্থাপন করে যেন পুরো ক্লাস্টারটি একটি একক অতি-দ্রুত মেমোরি সেলের মতো তাৎক্ষণিকভাবে কাজ করছে।
১. এক্সিকিউশন হিস্ট্রি এবং বাস্তব সময় ক্রম ($t_{ ext{inv}}$ ও $t_{ ext{res}}$)
ডিস্ট্রিবিউটেড অ্যালগরিদমে নির্ভুলতা পরিমাপের জন্য প্রতিটি অপারেশনকে একটি আহ্বায়ক ইভেন্ট $ ext{inv}(op)$ এবং ফলাফল ইভেন্ট $ ext{res}(op)$-এর সমন্বয়ে প্রকাশ করা হয়। প্রতিটি অপারেশন একটি বাস্তব সময়ের ব্যাপ্তির মধ্যে কার্যকর হয়:
$$op in [t_{ ext{inv}}(op), t_{ ext{res}}(op)]$$
যদি অপারেশন $op_1$-এর সমাপ্তি ($t_{ ext{res}}$) অপারেশন $op_2$-এর শুরুর ($t_{ ext{inv}}$) পূর্বে ঘটে থাকে, তবে বিশ্বজনীন বাস্তব সময়ের নিয়মে:
$$op_1 prec_{mathcal{H}} op_2 iff t_{ ext{res}}(op_1) < t_{ ext{inv}}(op_2)$$
২. লিনিয়ারাইজেবিলিটি বা অ্যাটমিক কনসিস্টেন্সি (Linearizability)
১৯৯০ সালে মরিস হার্লিহি এবং জিনেট উইং লিনিয়ারাইজেবিলিটির আনুষ্ঠানিক সংজ্ঞা দেন। একটি কনকারেন্ট এক্সিকিউশন হিস্ট্রি $mathcal{H}$-কে তখনই লিনিয়ারাইজেবল বলা হবে যদি এমন একটি বৈধ ক্রমানুযায়ী হিস্ট্রি $mathcal{S}$ পাওয়া যায় যা তিনটি শর্ত পূরণ করে:
- সিকোয়েনশিয়াল সমতুল্যতা: $mathcal{S}$-এ মূল হিস্ট্রির সমস্ত অপারেশন অপরিবর্তিত থাকবে এবং প্রতিটির পর তার উত্তর ধারাবাহিকভাবে সাজানো থাকবে।
- অবজেক্টের সঠিকতা: ডেটাবেসের প্রতিটি রিড অপারেশন ঠিক তার আগের রাইটের মান ফেরত দেবে।
- বাস্তব সময়ের সংরক্ষণ: যদি বাস্তব সময়ে $op_1 prec_{mathcal{H}} op_2$ হয়, তবে ক্রমানুযায়ী তালিকায় অবশ্যই $op_1$ আগে এবং $op_2$ পরে থাকবে।
লিনিয়ারাইজেশন পয়েন্ট (Linearization Point)
লিনিয়ারাইজেবিলিটির মূল কথা হলো প্রতিটি অপারেশন তার শুরু ও শেষের মধ্যবর্তী কোনো একটি সুনির্দিষ্ট ক্ষণে ($ au(op)$) পলকের মধ্যে কার্যকর হয়। একে বলা হয় লিনিয়ারাইজেশন পয়েন্ট। এর সবচেয়ে বড় সুবিধা হলো কম্পোজেবিলিটি (Composability): যদি সিস্টেমের প্রতিটি অবজেক্ট আলাদাভাবে লিনিয়ারাইজেবল হয়, তবে সম্পূর্ণ সিস্টেমটিও সামগ্রিকভাবে স্বয়ংক্রিয়ভাবে লিনিয়ারাইজেবল থাকে।
৩. সিকোয়েনশিয়াল কনসিস্টেন্সি বনাম লিনিয়ারাইজেবিলিটি
১৯৭৯ সালে লেসলি ল্যামপোর্ট সিকোয়েনশিয়াল কনসিস্টেন্সি (Sequential Consistency) প্রস্তাব করেন। এতে বাস্তব সময়ের গ্লোবাল ঘড়ির বাধ্যবাধকতা তুলে নেওয়া হয়। এখানে কেবল প্রতিটি স্বতন্ত্র ক্লায়েন্টের নিজস্ব কাজের ক্রম বজায় রাখলেই চলে। ফলে এক প্রান্তে সম্পন্ন হওয়া কোনো কাজ অন্য প্রান্তে কয়েক মিনিট পর দৃশ্যমান হলেও সিস্টেম সিকোয়েনশিয়াল কনসিস্টেন্ট থাকতে পারে—যতক্ষণ পর্যন্ত সব সার্ভার একই কাল্পনিক ক্রমে একমত হয়।
৪. দুর্বল কনসিস্টেন্সি মডেলের স্তরবিন্যাস
- স্ট্রিক্ট সিরিয়ালাইজেবিলিটি (Strict Serializability): এটি হলো ডিস্ট্রিবিউটেড ট্রানজ্যাকশনের সর্বোচ্চ চূড়া। এটি একই সাথে মাল্টি-অবজেক্ট ACID ট্রানজ্যাকশনকে সিরিয়ালাইজেবল এবং বাস্তব সময়ের নিরিখে লিনিয়ারাইজেবল রাখে।
- কজাল কনসিস্টেন্সি (Causal Consistency): নেটওয়ার্ক বিচ্ছিন্ন হলেও সার্বক্ষণিক সচল (Highly Available) সিস্টেমের ক্ষেত্রে গাণিতিকভাবে সম্ভাব্য সবচেয়ে শক্তিশালী কনসিস্টেন্সি মডেল। এটি কার্যকারণ সম্পর্কযুক্ত ইভেন্টগুলোকে ক্রমানুসারে রাখে, কিন্তু সম্পর্কহীন ইভেন্টগুলোকে সমান্তরালে চলতে দেয়।
- সেশন গ্যারান্টি: রিড-ইউর-রাইটস (ব্যবহারকারী নিজের করা পরিবর্তন নিজেই দেখতে পাবে), মোনোটোনিক রিডস (ব্যবহারকারী কখনোই পুরনো সংস্করণে ফিরে যাবে না), এবং মোনোটোনিক রাইটস।