একটি আদর্শ ডিস্ট্রিবিউটেড সিস্টেমে সমস্ত ডেটা তাৎক্ষণিকভাবে বিশ্বের সব সার্ভারে সিঙ্ক্রোনাইজড থাকার কথা। কিন্তু বৈশ্বিক ক্লাউড প্ল্যাটফর্মে নেটওয়ার্ক বিচ্ছিন্নতা এবং আলোর গতিসীমার ল্যাটেন্সির কারণে প্রতিটি ট্রানজ্যাকশনে কঠোর সিনক্রোনাস রেপ্লিকেশন সিস্টেমের গতি অসম্ভব ধীর করে দেয়। ২০০৭ সালে অ্যামাজন তাদের বিখ্যাত ডায়নামো (Dynamo) সিস্টেমের আর্কিটেকচার প্রকাশ করে। তাদের লক্ষ্য ছিল চরম বিপর্যয়ের মধ্যেও কোনো অবস্থাতেই ব্যবহারকারীর রিকোয়েস্ট যেন ব্যর্থ না হয়—বিশেষ করে কেনাকাটার শপিং কার্টে আইটেম যুক্ত করার রাইট অপারেশন যেন সব সময় সফল হয়। ডায়নামো আধুনিক কোরাম রেপ্লিকেশন (Quorum Replication), স্লপি কোরাম, হিন্টেড হ্যান্ডঅফ এবং মারকেল ট্রি অ্যান্টি-এনট্রপির দিগন্ত উন্মোচন করে।
১. কোরাম ইন্টারসেকশন সমীকরণ: $R + W > N$
কোরাম সিস্টেমে যেকোনো ডেটা কী-কে ক্লাস্টারের $N$ সংখ্যক নির্বাচিত সার্ভারে (Preference List) রেপ্লিকেট করা হয়। পুরো সিস্টেম মূলত দুটি সংখ্যার ওপর নির্ভর করে:
- $W$ (Write Quorum): ক্লায়েন্টকে রাইট সফল জানানোর পূর্বে ন্যূনতম কতটি রেপ্লিকেশনে ডেটা সংরক্ষিত হতে হবে।
- $R$ (Read Quorum): ডেটা পড়ার সময় ক্লায়েন্টকে উত্তর দেওয়ার পূর্বে ন্যূনতম কতটি সার্ভার থেকে ডেটা যাচাই করতে হবে।
সিস্টেমে স্ট্রং কনসিস্টেন্সি (Strong Consistency) নিশ্চিত করতে হলে রিড ও রাইট কোরামের যোগফল মোট রেপ্লিকা সংখ্যার চেয়ে বড় হতে হবে:
$$R + W > N$$
পিজিয়নহোল নীতি অনুযায়ী, যদি $R + W > N$ হয়, তবে যেকোনো রিড কোরাম এবং রাইট কোরামের মধ্যে অন্তত একটি সার্ভার সাধারণ (Common Intersection) থাকবেই:
$$|mathcal{Q}_{ ext{read}} cap mathcal{Q}_{ ext{write}}| ge 1$$
যেহেতু সেই সাধারণ সার্ভারটিতে সর্বশেষ রাইটের ডেটা সংরক্ষিত রয়েছে, তাই রিড অপারেশন করার সময় ক্লায়েন্ট সর্বদা সেই সর্বশেষ ডেটাটি খুঁজে পায়।
২. স্লপি কোরাম (Sloppy Quorum) ও হিন্টেড হ্যান্ডঅফ
কঠোর কোরাম ব্যবস্থায় নির্ধারিত $N$ টি সার্ভারের মধ্যে $W$ সংখ্যক সার্ভার সচল না থাকলে রাইট রিকোয়েস্ট বাতিল হয়ে যায়। কিন্তু অ্যামাজনের মতো বিশাল ই-কমার্সে রিকোয়েস্ট ব্যর্থ হওয়ার অর্থ কোটি ডলারের ক্ষতি। তাই ডায়নামো চালু করে স্লপি কোরাম (Sloppy Quorum):
যদি নির্ধারিত সার্ভারগুলো নেটওয়ার্ক ত্রুটির কারণে বিচ্ছিন্ন থাকে, তবে সিস্টেম রিকোয়েস্ট বাতিল না করে হ্যাশ রিংয়ের পরবর্তী যেকোনো সচল পার্শ্ববর্তী সার্ভারে ডেটা লিখে নেয়। এই বিকল্প সার্ভারটি ডেটার সাথে একটি বিশেষ ট্যাগ (“হিন্ট”) লাগিয়ে রাখে। পরবর্তীতে মূল সার্ভার যখন সুস্থ হয়ে নেটওয়ার্কে ফিরে আসে, তখন বিকল্প সার্ভারটি হিন্টেড হ্যান্ডঅফ (Hinted Handoff) প্রক্রিয়ার মাধ্যমে ডেটা মূল সার্ভারকে বুঝিয়ে দিয়ে নিজের কাছ থেকে ডেটা মুছে ফেলে।
৩. ভেক্টর ক্লক ও কনকারেন্ট ডেটা সমাধান
নেটওয়ার্ক পার্টিশনের সময় স্লপি কোরামের কারণে ডেটার একাধিক রূপ তৈরি হতে পারে। কেন্দ্রীয় ঘড়ি ছাড়া কোন সংস্করণটি আগে আর কোনটি পরে তা নির্ধারণ করতে ডায়নামো প্রতিটি ডেটার সাথে ভেক্টর ক্লক (Vector Clock) যুক্ত করে। যদি দুটি সংস্করণের মধ্যে স্পষ্ট কার্যকারণ সম্পর্ক (Causal Order) না থাকে, তবে সিস্টেম ডেটা মুছে না ফেলে দুটি সংস্করণকেই ক্লায়েন্টের কাছে পাঠায়। অ্যাপ্লিকেশন লেয়ার (যেমন শপিং কার্ট) তখন আইটেমগুলোর সমন্বয় করে গ্রাহককে সঠিক তালিকা প্রদর্শন করে।
৪. মারকেল ট্রি (Merkle Tree) এবং ব্যাকগ্রাউন্ড অ্যান্টি-এনট্রপি
যদি কোনো সার্ভার হঠাৎ পুড়ে যায় বা হিন্টেড হ্যান্ডঅফ দেওয়ার আগেই ক্র্যাশ করে, তবে সার্ভারগুলোর ডেটা মিসম্যাচ দূর করতে ব্যাকগ্রাউন্ডে নিয়মিত অ্যান্টি-এনট্রপি (Anti-Entropy) সিঙ্ক চলে। কোটি কোটি ডেটা নেটওয়ার্কের মধ্য দিয়ে পাঠিয়ে তুলনা করা অসম্ভব। তাই ডায়নামো ব্যবহার করে ক্রিপ্টোগ্রাফিক হ্যাশ ট্রি বা মারকেল ট্রি (Merkle Tree):
- প্রতিটি নোড তাদের সংরক্ষিত ডেটার হ্যাশ দিয়ে একটি বাইনারি ট্রি তৈরি করে, যার শীর্ষে থাকে একটি মাত্র রুট হ্যাশ (Root Hash)।
- দুটি নোড একে অপরের সাথে শুধুমাত্র এই রুট হ্যাশটি বিনিময় করে ($mathcal{O}(1)$ ট্র্যাফিক)।
- যদি রুট হ্যাশ মিলে যায়, তবে কোটি কোটি ডেটা সম্পূর্ণ এক। আর যদি অমিল থাকে, তবে নোড দুটি ট্রির শাখা ধরে নিচে নেমে মাত্র $mathcal{O}(log M)$ ধাপে সুনির্দিষ্ট যে ডেটাটিতে গরমিল আছে ঠিক সেটুকুই একে অপরের সাথে আদান-প্রদান করে সিঙ্ক করে নেয়।