ডিস্ট্রিবিউটেড সিস্টেমের তাত্ত্বিক জগতে শারীরিক ঘড়িকে (Physical Clock) দীর্ঘদিন ধরে অবিশ্বস্ত বিবেচনা করা হতো, কারণ নেটওয়ার্ক ট্র্যাফিক এবং তাপমাত্রার তারতম্যে সার্ভারের ঘড়ি প্রতিনিয়ত কয়েক সেকেন্ড পর্যন্ত এগিয়ে বা পিছিয়ে যায়। কিন্তু ২০১২ সালে গুগল তাদের বিখ্যাত স্প্যানার (Spanner) ডেটাবেসের গবেষণাপত্র প্রকাশ করে বিশ্বকে চমকে দেয়। স্প্যানার বিশ্বের প্রথম গ্লোবালি ডিস্ট্রিবিউটেড মাল্টি-ভার্সন ডেটাবেস যা সমগ্র পৃথিবী জুড়ে এক্সটার্নাল কনসিস্টেন্সি (External Consistency) নিশ্চিত করে। গুগলের এই সাফল্য কেবল সফটওয়্যার অ্যালগরিদমের নয়; এটি মূলত ক্লাউড সফটওয়্যারকে ডেটাসেন্টারের হার্ডওয়্যারের সাথে একীভূত করার এক বিস্ময়কর নিদর্শন, যার কেন্দ্রে রয়েছে TrueTime API এবং অ্যাটমিক ঘড়ির মাধ্যমে নিয়ন্ত্রিত কমিট ওয়েট (Commit Wait) নিয়ম।

১. সাধারণ ঘড়ির ত্রুটি ও ডিস্ট্রিবিউটেড ট্রানজ্যাকশনের সংকট

সাধারণ সার্ভারগুলো সময়ের জন্য NTP (Network Time Protocol) ব্যবহার করে। ইন্টারনেটের অনিয়মিত ল্যাটেন্সির কারণে NTP ঘড়ির অনিশ্চয়তা কয়েকশ মিলি-সেকেন্ড পর্যন্ত হতে পারে। এই ঘড়ির ওপর ভিত্তি করে ডেটাবেস ট্রানজ্যাকশনের ক্রম নির্ধারণ করলে গুরুতর বিভ্রান্তি সৃষ্টি হয়: ধরা যাক, ঢাকায় সম্পন্ন হওয়া একটি ট্রানজ্যাকশন $T_1$-এর পর নিউইয়র্কে একজন ব্যবহারকারী $T_2$ চালালেন, কিন্তু নিউইয়র্কের ঘড়ি পিছিয়ে থাকার কারণে ডেটাবেস ভাবল $T_2$ আগে ঘটেছে! এর ফলে ডেটাবেসের সিরিয়ালাইজেবিলিটি পুরোপুরি ধ্বংস হয়ে যায়।

২. TrueTime আর্কিটেকচার ও অনিশ্চয়তার সীমা ($epsilon$)

গুগল প্রতিটি ডেটাসেন্টারে নিজস্ব টাইম মাস্টার সার্ভার স্থাপন করেছে। প্রতিটি টাইম মাস্টারে সরাসরি স্যাটেলাইট জিপিএস অ্যান্টেনা অথবা অত্যন্ত নির্ভুল রুবিডিয়াম অ্যাটমিক ক্লক (Rubidium Atomic Clock) সংযুক্ত রয়েছে।

একটি নির্দিষ্ট সময়ের পরিবর্তে TrueTime API একটি সময় ব্যবধান প্রদান করে:

$$TT.text{now}() = [t_{text{earliest}}, t_{text{latest}}]$$

যেখানে প্রকৃত নিখুঁত বৈশ্বিক সময় $t_{text{absolute}}$ সর্বদা এই সীমার ভেতরেই অবস্থান করতে বাধ্য। এই সীমার অর্ধ-প্রস্থ হলো ঘড়ির অনিশ্চয়তা $epsilon$:

$$epsilon = frac{t_{text{latest}} – t_{text{earliest}}}{2}$$

গুগলের ডেটাসেন্টারগুলোতে এই অনিশ্চয়তা $epsilon$ মাত্র ১ থেকে ৭ মিলি-সেকেন্ডের মধ্যে সীমাবদ্ধ থাকে। যদি জিপিএস সংযোগ বিচ্ছিন্নও হয়, তবে রুবিডিয়াম অ্যাটমিক ঘড়ির বিচ্যুতি দিনে ১ মাইক্রো-সেকেন্ডের কম হওয়ায় সিস্টেম নিরাপদে অনিশ্চয়তার উইন্ডো বৃদ্ধি করে কাজ চালিয়ে যায়।

৩. এক্সটার্নাল কনসিস্টেন্সি ও কমিট ওয়েট (Commit Wait) নিয়ম

স্প্যানার নিশ্চিত করে যে পৃথিবীর যেকোনো প্রান্তে যদি একটি ট্রানজ্যাকশন $T_1$ শেষ হওয়ার পর অন্য একটি ট্রানজ্যাকশন $T_2$ শুরু হয়, তবে $T_2$-এর টাইমস্ট্যাম্প অবশ্যই $T_1$-এর চেয়ে বড় হবে ($s_2 > s_1$)। এটি অর্জনের জন্য স্প্যানার কমিট ওয়েট নিয়ম (Commit Wait Rule) প্রয়োগ করে:

  1. কোঅর্ডিনেটর ট্রানজ্যাকশনের জন্য একটি কমিট টাইমস্ট্যাম্প $s$ নির্বাচন করে যা বর্তমান সময়ের সম্ভাব্য সর্বোচ্চ মানের সমান বা বড় ($s ge t_{text{latest}}$)। অর্থাৎ টাইমস্ট্যাম্পটি নিশ্চিতভাবে ভবিষ্যতের একটি ক্ষণ।
  2. কমিট ওয়েট: কোঅর্ডিনেটর ক্লায়েন্টকে উত্তর না দিয়ে এবং ডেটাবেসের লক না খুলে ঠিক ততক্ষণ পর্যন্ত অপেক্ষা করে, যতক্ষণ না ঘড়ির সর্বনিম্ন মান $t_{text{earliest}}$ সেই $s$-এর চেয়ে বড় হয়:
    $$TT.text{now}().t_{text{earliest}} > s$$
  3. এই অপেক্ষার ব্যাপ্তি হয় প্রায় $2epsilon$ (প্রায় ২ থেকে ১৪ মিলি-সেকেন্ড)।

এই সামান্য সময় অপেক্ষা করার ফলে ক্লায়েন্ট যখন প্রথম ট্রানজ্যাকশনের ফলাফল দেখতে পায়, ততক্ষণে সমগ্র মহাবিশ্বের প্রকৃত সময় $s$-কে অতিক্রম করে গেছে। ফলে এর পরবর্তীতে শুরু হওয়া যেকোনো ট্রানজ্যাকশন $T_2$ নিশ্চিতভাবেই $s$-এর চেয়ে বড় টাইমস্ট্যাম্প পাবে, যা নিখুঁত গ্লোবাল লিনিয়ারাইজেবিলিটি নিশ্চিত করে।

৪. লক-মুক্ত স্ন্যাপশট রিড (Lock-Free Snapshot Reads)

TrueTime-এর সবচেয়ে বৈপ্লবিক সুবিধা হলো স্প্যানারে রিড কোয়েরি চালানোর জন্য কোনো লক নেওয়ার প্রয়োজন হয় না। একটি নির্দিষ্ট অতীত টাইমস্ট্যাম্প ($t_{text{read}}$) উল্লেখ করে বিশ্বের যে কোনো সার্ভার থেকে ডেটার MVCC স্ন্যাপশট পড়ে নেওয়া যায়, যা চলমান রাইট ট্রানজ্যাকশনকে কোনোভাবে বাধাগ্রস্ত করে না।