الخلاصة

  • لا يصوّت المشارك بنعم إلا بعد حفظ حالة دائمة تكفي لإعادة عمله أو التراجع عنه؛ وبذلك يفقد حرية الحسم منفردًا من دون أن يعرف النتيجة العامة بعد.
  • قرار المنسق الدائم حقيقة مستقلة في البروتوكول. فإذا تعذر على المشارك المستعد معرفته، كان الانتظار أكثر أمانًا للذرية من اختراع نتيجة محلية.
  • ينظم الالتزام مديري الموارد المشاركين في المعاملة، ولا يثبت وحده أن رسالة بريد أو مهمة بشرية أو حركة جهاز خارجي نُفذت مرة واحدة فقط.

يعود خادم مشارك بعد عطل فيجد في سجله قيد prepare مكتوبًا كتابة إجبارية. نجح العمل المحلي، ويتذكر الخادم أنه أرسل «نعم»، لكنه لم يتلق الحكم النهائي. وصف الحالة بأنها «تكاد تكون committed» يخلط بين الاستعداد وسلطة القرار. الوصف الدقيق هو prepared، أي مستعد ومعلّق على قرار مجهول.

تكمن قوة كتابات Jim Gray عن المعاملات في أنها تجعل هذا الفرق أداة للتفكير. تنشئ المرحلة الأولى القدرة على طاعة نتيجتين محتملتين، وتقيّد التصرف المنفرد. أما المرحلة الثانية فتنقل قرارًا دائمًا أنشأته جهة أخرى مخولة.

الاستعداد وعد مسجل لا حكم نهائي

في بحث Gray الصادر عام 1978، Notes on Data Base Operating Systems، يطلب المنسق من كل مشارك بلوغ حالة يستطيع منها إعادة الجزء الذي نفذه أو إلغاءه. وقبل الرد بـAGREE، يجب وضع معلومات UNDO وREDO اللازمة في مخزن آمن.

قبل «نعم» يستطيع المشارك الرفض والإجهاض. وبعدها يجب أن يحتفظ بالسجل والأقفال أو النسخ التي تتيح له تنفيذ commit أو abort. النجاح المحلي لا يصبح قرارًا عامًا؛ بل يصبح التزامًا دائمًا ومشروطًا.

يحدد C. Mohan وBruce Lindsay وRon Obermarck هذا الحد بوضوح في دراستهم لنظام IBM R*. يفرض المشارك التابع كتابة سجل الاستعداد، ويرسل YES، ويدخل حالة prepared، ثم لا يعود مخولًا بالالتزام أو الإجهاض من تلقاء نفسه.

نقطة الالتزام موجودة لدى المنسق

يجمع المنسق الأصوات المطلوبة. وعندما تتحقق شروط البروتوكول، يفرض كتابة سجل commit العام ثم يعلن النتيجة. تسمي ورقة R* هذه الكتابة «نقطة الالتزام». ولذلك يسبق صوت المشارك الفردي الحقيقة التي سيتعين عليه تنفيذها لاحقًا.

من دون هذا الفصل، قد تتحول نجاحات محلية متعددة إلى حقائق متعارضة. فقد يعرض مشارك تغييراته لأنه اعتبر «نعم» التزامًا، بينما يفشل مشارك آخر قبل الاستعداد ويضطر إلى التراجع. الغرض من المرحلتين هو إخضاع القدرات المحلية لقرار دائم واحد.

حتى معرفة أن الآخرين صوّتوا بنعم لا تمنح المشارك تلقائيًا سلطة المنسق. المعرفة بالأصوات والحق في إنشاء النتيجة شيئان مختلفان. الاستعادة تبحث عن القرار الأصلي الموثوق، لا عن النتيجة الأكثر احتمالًا.

الاستعادة تعيد بناء معرفة البروتوكول

قاعدة Gray متحفظة عمدًا. إذا لم يجد المشارك سجل موافقة مكتوبًا كتابة إجبارية، جاز له الإجهاض لأن وعدًا دائمًا لم يخرج منه. وإذا وجده، فعليه سؤال المنسق أو مسار استعادة مخول، ثم تنفيذ REDO أو UNDO وفق الإجابة.

لذلك ينبغي لشاشة التشغيل أن تفصل بين working وprepared/in-doubt وcommitted وaborted. جمع prepared وcommitted تحت كلمة «نجاح» يمحو أهم نقطة غموض. قد تكون الخدمة سليمة والبيانات المحلية محفوظة، فيما تبقى النتيجة العامة مجهولة.

تشمل الأدلة المفيدة معرّف المعاملة، والمنسق أو جهة الاستعادة، ووقت كتابة prepare، وآخر اتصال مؤكد، والموارد التي ما زالت محتجزة. إعادة العملية التجارية لا تحل حالة العملية الأولى، بل قد تنشئ أثرًا ثانيًا.

التعطل ثمن الامتناع عن اختراع قرار

إذا تعطل المنسق بعد صوت «نعم» وقبل وصول الحكم إلى المشارك، فقد يتوقف بروتوكول 2PC التقليدي. ينطلق Gray وLeslie Lamport من هذا القيد في Consensus on Transaction Commit: يكفي منسق واحد للمسار العادي، لكن تعطله قد يوقف التقدم.

للانتظار تكلفة، إذ تبقى الأقفال والقدرة مشغولة وتتأخر الأعمال التالية. لكنه يحفظ حقيقتين: المشارك لا يعرف القرار ولا يملك سلطة إنشائه. افتراض commit قد يشطر النتائج، وافتراض abort قد يخالف التزامًا صار دائمًا في مكان آخر.

تناقش ورقة R* قرارات المشغل الاستدلالية في الحالات القصوى، وتحذر كذلك من مخالفتها للنتيجة العامة الحقيقية. لذا يجب إظهار القرار القسري بوصفه استثناءً يستلزم المطابقة والإصلاح، لا باعتباره طريقة خفية لجعل 2PC غير معطل.

تنتهي المعاملة عند حد المشاركة

يميز Gray في “The Transaction Concept: Virtues and Limitations” بين الأفعال المحمية و«الأفعال الواقعية». يستطيع السجل إعادة البيانات، لكنه لا يسترد مالًا خرج من آلة، ولا يسحب بريدًا وصل، ولا يعكس قرار إنسان أو حركة جهاز لم يشارك أصلًا في المعاملة.

تحتاج هذه الآثار إلى تصميم مستقل: تأخيرها إلى ما بعد commit، أو منحها مفتاحًا يمنع التكرار، أو تسجيل طلب دائم للتسليم لاحقًا، أو تحديد فعل تعويضي. والتعويض فعل تجاري جديد، لا rollback مثاليًا.

قد تكون قاعدة البيانات committed فيما تظل الرسالة الخارجية معلقة أو مكررة أو فاشلة. وقد يتحرك الجهاز ثم تنتهي المعاملة بـabort. الحالة الصادقة تسجل حكم المعاملة ودليل الأثر الخارجي كلًا على حدة.

تاريخ شارك في صنعه أكثر من مؤلف

وضوح Gray لا يبرر نسب ابتكار 2PC إليه وحده. فملاحظته التاريخية تسمي أعمال Ron Obermarck وEarl Jenner وSteve Weick السابقة، وتذكر اكتشاف Butler Lampson وHoward Sturgis المستقل للبروتوكول. كتب Mohan وLindsay وObermarck دراسة R* وتحسيناتها. وشارك Andreas Reuter في الكتاب المرجعي اللاحق، كما شارك Lamport في بحث Paxos Commit.

يحافظ هذا الإسناد الدقيق على جوهر مساهمة Gray: أن نسأل بصورة منفصلة ماذا يعرف النظام، وماذا وعد، ومن يملك القرار، وأي نتائج ما زالت خارج سيطرته.

المصادر