التصارع على تحديث البيانات Update
Concurrency:
عند
التعامل مع قاعدة بيانات يستخدمها أكثر من موظف في نفس الوقت، ستواجهك مشكلة
رئيسية، وهي إمكانية حدوث تضارب بين التعديلات التي يجريها أكثر من موظف على نفس
السجل.. تخيل هذه الحالة:
- قام
مستخدم برنامجك بتحميل سجلات الكتب، وقام بتعديل سعر كتاب "عصا الحكيم"
من 15 جنيها إلى 20 جنيها.
- عند
محاولة برنامجك حفظ هذه التغييرات في قاعدة البيانات، كان مستخدم آخر قد غير عدد
النسخ المتاحة المتاحة من كتاب "عصا الحكيم" من 200 إلى 300.
السؤال الآن هو: ماذا نفعل في هذه الحالة؟
لو
حفظ برنامجك سجل الكتاب "عصا الحكيم" فسيعدل سعره إلى 20 جنيها، لكنه
سيعيد عدد النسخ المتاحة منه إلى 200!
أما
لو أبقينا على التعديلات التي أجراها المستخدم الآخر، فهذا معناه الإبقاء على
التعديل الذي حدث في عدد النسخ، لكن السعر سيظل 15 جنيها!
طبعا
في كلتا الحالتين ستحدث مشكلة في العمل.. وعندما سيحاول المدير معاقبة مسئول
المخازن في الحالة الأولى فسيقسم له بأغلظ الأيمان إنه غير عدد النسخ المتاحة،
وعندما سيحاول معاقبة مسئول المبيعات في الحالة الثانية، فسيقسم له إنه غير ثمن
النسخة، وكلاهما صادق في قسمه، وأنت الذي خربت بيته!
(ملحوظة: المثال لتقريب المفهوم،
ولكن عمليا، يمكن كتابة استعلام تحديث خانة واحدة فقط في الصف بدون المساس بباقي
الخانات.. لكن ما زالت المشكلة ستحدث لو غير موظفان من نفس القسم قيمة نفس الخانة
في نفس التوقيت).
تسمّى هذه المشكلة باسم مشكلة التطابق (التحديث المتزامن) Concurrency Problem.. ويمكن علاجها بأحد الحلين التاليين:
تسمّى هذه المشكلة باسم مشكلة التطابق (التحديث المتزامن) Concurrency Problem.. ويمكن علاجها بأحد الحلين التاليين:
1- التطابق المتشائم Pessimistic Concurrency:
وفيه نقوم بعمل إغلاق
Lock لسجلات قاعدة البيانات التي قام أي مستخدم
بتحميلها، ما يمنع أي مستخدم آخر من تغييرها إلى أن يغلق المستخدم الأول الاتصال ويلغى
الإغلاق.. لمزيد من التفاصيل:
2- التطابق المتفائل Optimistic
Concurrency:
وفيه تلغي تسمح لأحد المستخدمين بفرض التعديل
الخاص به، وإلغاء تعديل المستخدم الآخر.. وله ثلاثة طرق.. لمزيد من التفاصيل:
3- التطابق الواقعي Realistic Concurrency:
هذا الحل من ابتكاري، وفيه أعرض للمستخدم سجل
قاعدة البيانات الذي حدث معه التضارب وأوضح له سبب التضارب، وأعرض له اختيارات
مختلفة لحل هذا التضارب، بحيث يتحمل هو مسئولية اتخاذ القرار.. .. لمزيد من التفاصيل:
من
كتاب: من الصفر إلى الاحتراف برمجة قواعد البيانات في فيجوال بيزيك دوت نت ADO .NET.. للتنزيل:
ليست هناك تعليقات:
إرسال تعليق
ملحوظة: يمكن لأعضاء المدونة فقط إرسال تعليق.