التحكم التفاؤلي في التزامن

التحكم التفاؤلي بالتزامن ( OCC )، المعروف أيضًا باسم القفل التفاؤلي ، هو أسلوب للتحكم بالتزامن لا يعتمد على القفل، ويُطبق على الأنظمة المعاملاتية مثل أنظمة إدارة قواعد البيانات العلائقية وذاكرة المعاملات البرمجية . يفترض OCC إمكانية إتمام معاملات متعددة بشكل متكرر دون تداخل فيما بينها. أثناء التشغيل، تستخدم المعاملات موارد البيانات دون الحصول على أقفال عليها. قبل الالتزام، تتحقق كل معاملة من عدم قيام أي معاملة أخرى بتعديل البيانات التي قرأتها. إذا كشف الفحص عن تعديلات متعارضة، تتراجع المعاملة الملتزمة ويمكن إعادة تشغيلها. [ 1 ] طُرح التحكم التفاؤلي بالتزامن لأول مرة عام 1979 من قِبل إتش تي كونغ وجون تي روبنسون. [ 2 ]

يُستخدم التحكم في التزامن المفتوح (OCC) عادةً في بيئات ذات تنازع منخفض على البيانات . عندما تكون التعارضات نادرة، يمكن إتمام المعاملات دون تكلفة إدارة الأقفال ودون انتظار المعاملات الأخرى لإلغاء أقفالها، مما يؤدي إلى إنتاجية أعلى من طرق التحكم الأخرى في التزامن. مع ذلك، إذا كان التنازع على موارد البيانات متكررًا، فإن تكلفة إعادة تشغيل المعاملات بشكل متكرر تؤثر سلبًا على الأداء بشكل كبير، وفي هذه الحالة قد تكون طرق التحكم الأخرى في التزامن أنسب. لكن حتى الطرق القائمة على الأقفال ("التشاؤمية") قد تُؤدي إلى أداء ضعيف لأن الأقفال قد تُحدّ بشكل كبير من التزامن الفعال حتى عند تجنب حالات الجمود.

مراحل التحكم التفاؤلي في التزامن

تتضمن معاملات التحكم المتفائل في التزامن هذه المراحل: [ 2 ]

  • البداية : سجل طابعًا زمنيًا يحدد بداية المعاملة.
  • التعديل : قراءة قيم قاعدة البيانات، وكتابة التغييرات بشكل مبدئي.
  • التحقق : التحقق مما إذا كانت معاملات أخرى قد عدّلت البيانات التي استخدمتها هذه المعاملة (قراءةً أو كتابةً). يشمل ذلك المعاملات التي اكتملت بعد وقت بدء هذه المعاملة، واختيارياً، المعاملات التي لا تزال نشطة وقت التحقق.
  • الالتزام/التراجع : في حال عدم وجود تعارض، يتم تطبيق جميع التغييرات. أما في حال وجود تعارض، فيتم حله، عادةً بإلغاء العملية، مع إمكانية وجود طرق حل أخرى. يجب توخي الحذر لتجنب حدوث خطأ في وقت التحقق من وقت الاستخدام ، خاصةً إذا لم يتم تنفيذ هذه المرحلة والمرحلة السابقة لها كعملية ذرية واحدة .

استخدام الإنترنت

إن طبيعة بروتوكول HTTP غير المعتمدة على الحالة تجعل آلية القفل غير عملية في واجهات المستخدم على الويب. فمن الشائع أن يبدأ المستخدم بتعديل سجل ثم يغادر دون النقر على رابط "إلغاء" أو "تسجيل الخروج". وفي حال استخدام آلية القفل، يتعين على المستخدمين الآخرين الذين يحاولون تعديل السجل نفسه الانتظار حتى تنتهي مهلة قفل المستخدم الأول.

يوفر بروتوكول HTTP شكلاً من أشكال التحكم في الوصول المضمنة. يمكن أن تتضمن الاستجابة لطلب GET الأولي علامة ETag لاستخدامها في طلبات PUT اللاحقة في ترويسة If-Match. وبالتالي، يمكن رفض أي طلبات PUT تحتوي على علامة ETag قديمة في ترويسة If-Match. [ 3 ]

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

أمثلة

انظر أيضاً

مراجع

  1. جونسون، روهيت (2003). "مشكلات الوصول الشائعة إلى البيانات" . تصميم وتطوير تطبيقات J2EE من خلال جلسات فردية مع خبراء . دار نشر Wrox. رقم ISBN 978-0-7645-4385-2تمت أرشفة هذا النص من المصدر الأصلي في 8 أكتوبر 2011.
  2. 1 2 هـ. ت. كونغ، ج. ت. روبنسون (1981). "حول الأساليب التفاؤلية للتحكم في التزامن" (ملف PDF) . معاملات ACM لأنظمة قواعد البيانات. مؤرشف (ملف PDF) من الأصل في 31 أغسطس 2019.
  3. "تحرير الويب - اكتشاف مشكلة التحديث المفقود باستخدام عملية السحب غير المحجوزة" . ملاحظة W3C . 10 مايو 1999.
  4. مساعدة: تحرير التعارض
  5. "باغزيلا: الأسئلة الشائعة: أسئلة إدارية" . موزيلا ويكي . 11 أبريل 2012.
  6. "وحدة ActiveRecord::Locking" . وثائق إطار عمل Rails .
  7. "رسم خرائط الكائنات العلائقية (GORM)" . وثائق إطار عمل Grails . مؤرشف من الأصل بتاريخ 15-08-2014.
  8. "معالجة المعاملات" . دليل مبرمجي GT.M، إصدار يونكس .
  9. "معالجة تعارضات التزامن" . مركز توثيق Entity Framework . 5 يوليو 2023.
  10. "تزامن المعاملات - التحكم التفاؤلي في التزامن" . مطورو Mimer - الميزات . تم الاطلاع عليه بتاريخ 22 ديسمبر 2023 .
  11. "مخزن البيانات" . ما هو محرك تطبيقات جوجل؟ 27 أغسطس 2010.
  12. "تحديث أجزاء من المستندات" . تم الاطلاع عليه بتاريخ 28-06-2018 .
  13. "التحكم التفاؤلي في التزامن" . Elastic . تم الاسترجاع في 2024-02-05 .
  14. "نظرة عامة تقنية" . وثائق Apache CouchDB . تم الاطلاع عليها بتاريخ 2024-02-06 .
  15. "المعاملات - MonetDB" . 16 يناير 2013.
  16. "المعاملات في Redis" .
  17. "العمل مع العناصر والخصائص - عمليات الكتابة المشروطة" . تم الاطلاع عليه بتاريخ 2 نوفمبر 2020 .
  18. "نظرة عامة على واجهة برمجة التطبيقات - عمليات الموارد" . تم الاطلاع عليه بتاريخ 3 نوفمبر 2020 .
  19. فريق Yugabyte. "القفل الصريح | وثائق YugabyteDB" . docs.yugabyte.com . مؤرشف من الأصل بتاريخ 4 يناير 2022. تم الاطلاع عليه بتاريخ 4 يناير 2022 .
  • كونغ، إتش تي؛ جون تي. روبنسون (يونيو 1981). "حول الأساليب التفاؤلية للتحكم في التزامن". معاملات ACM لأنظمة قواعد البيانات . 6 (2): 213-226 . CiteSeerX 10.1.1.101.8988 . doi : 10.1145/319566.319567 . S2CID 61600099 .  
  • Enterprise JavaBeans، الإصدار 3.0، تأليف بيل بيرك وريتشارد مونسون-هايفل، الفصل 16: المعاملات، القسم 16.3.5: القفل التفاؤلي، الناشر: أورايلي، تاريخ النشر: 16 مايو 2006، رقم ISBN المطبوع 0-596-00978-X،
  • هولمان، أندرياس (مايو 2009). "العزل المتعدد: مزاياه وقيوده" (ملف PDF) . العزل المتعدد (ما الفرق بين القفل التشاؤمي والقفل التفاؤلي) . 01069 غوتزكوفشتراسه 30/F301.2، دريسدن: شركة هابي غايز سوفتوير. ص  8. تاريخ الاسترجاع: 16 مايو 2013 .{{cite conference}}: CS1 maint: location ( link )