في هذه الصفحة
ما هو الـLocking ؟
يعتبر الـLocking من أهم الآليات التي تعتمد عليها قواعد البيانات بشكل أساسي للتحكم في الـConcurrent Access للبيانات من خلال أكثر من Transactions، فإذا كان هناك عدد من الـTransactions تحاول الوصول لتلك البيانات في نفس الوقت فلاشك أنه سينشأ عن ذلك تضارب بينهم يعرف بالـConflicts.
يمكنك تخيل أن الـLocking يشبه القفل الذي تغلق به أي شيء لتمنع وصول الآخرين لهذا الشيء أثناء استعمالك له. فأنت تقوم بغلق الباب وراءك حتى لا يستطيع أحد الدخول للغرفة وأنت موجود بها وتستعملها. ولكن بمجرد انتهائك من عملك وخروجك من الغرفة ستقوم بفتحه حتى يتسنى لغيرك استعمال الغرفة.
ولكي نمثل هذا في قواعد البيانات، فعند وجود Transaction يحاول استخدام Row أو Record من البيانات، تقوم قاعدة البيانات بعمل Lock أحيانًا على هذا Row أو Record حتى تمنع أية Transactions أخرى من محاولة الوصول أو التعديل فيه لحين انتهاء الـTransaction أولًا.
لماذا نحتاج إلى الـLocking؟
نحن في أشد الحاجة إلى تلك الآلية وذلك لإنها تضمن لنا العديد من الفوائد المهمة كالـData Consistency and Integrity وهو ما يعرف بصحة واتساق البيانات. كما أنه يعمل على منع حدوث أية مشاكل أو أخطاء للبيانات ناتجة عن حدوث أية Conflicts. وأبسط مثال يوضح هذا التعارض هو أنه من الممكن لـ Two Transactions أن يحاولوا تغيير قيمة Column في نفس الوقت لقيم مختلفة، فالـLocking قادر على منع حدوث هذا النوع من التعارض والتحكم في محاولة الوصول للبيانات بين أكثر من Transactions.
ولكن على الرغم من فوائد الـLocking التي تناولناها إلا أنه يضم باستعماله بعض التحديات والمشاكل التي يجب ذكرها، فيجب أن تكون على دراية كاملة به وبكيفية عمله حتى تحسن استعماله. وهذه المشاكل والتحديات سنتناولها لاحقًا بعد حديثنا عن الـOptimistic Vs Pessimistic Locking.
يمكننا تشبيه الـPessimistic Locking هو شخص متشائم نزل من بيته مرتديًا معطفا لخوفه من هطول الأمطار في أي وقت… مما سيبطئ من حركته بالتأكيد لأن المعطف ثقيل وسيجعله يشعر بالحر في حين أن الـOptimistic Locking هو شخص متفائل سينزل من منزله دون معطف ولو هطل المطر سيبدأ بالتفكير في استعمال مظلة أو معطف من أي مصدر قريب فالـOptimistic سيقوم بالتصرف عند حدوث المشكلة… ولكن الـPessimistic سيأخذ إجراءً قبل حدوثها وسيفترض أسوأ الظروف نظرًا لتشائمه.