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

ما هو التحكم في التزامن؟
التحكم التزامني في نظام إدارة قواعد البيانات، تُعدّ إدارة العمليات المتزامنة إجراءً لإدارة العمليات المتزامنة دون تعارض بينها. فهي تضمن تنفيذ معاملات قاعدة البيانات بشكل متزامن ودقيق لإنتاج نتائج صحيحة دون الإخلال بسلامة بيانات قاعدة البيانات المعنية.
يُعدّ الوصول المتزامن سهلاً للغاية إذا كان جميع المستخدمين يقرؤون البيانات فقط، إذ لا توجد طريقة لتداخلهم مع بعضهم البعض. مع ذلك، تحتوي أي قاعدة بيانات عملية على مزيج من عمليات القراءة والكتابة، ولذا يصبح التزامن تحديًا.
تُستخدم خاصية التحكم في التزامن في أنظمة إدارة قواعد البيانات لمعالجة هذه التعارضات، التي تحدث غالبًا في الأنظمة متعددة المستخدمين. ولذلك، يُعد التحكم في التزامن أحد أهم العناصر لضمان الأداء السليم لقاعدة البيانات، حيث يتم تنفيذ عمليتين أو أكثر في وقت واحد وتتطلبان الوصول إلى البيانات نفسها. وهو يعمل جنبًا إلى جنب مع ادارة العمليات التجارية، والذي يحدد وحدات العمل التي يجب أن يدمجها التحكم في التزامن بشكل آمن.
المشاكل المحتملة للتزامن
فيما يلي بعض المشكلات التي من المحتمل أن تواجهها في حال عدم وجود تحكم مناسب في التزامن في نظام إدارة قواعد البيانات:
- التحديثات المفقودة يحدث ذلك عندما تقوم عدة معاملات بتحديد نفس الصف وتحديثه بناءً على القيمة المحددة.
- تبعية غير ملتزمة (قراءة غير نظيفة) يحدث عندما تقوم معاملة ثانية بتحديد صف تم تحديثه بواسطة معاملة أخرى لم يتم الالتزام بها بعد.
- قراءة غير قابلة للتكرار يحدث ذلك عندما تقوم معاملة ثانية بالوصول إلى نفس الصف عدة مرات وتقرأ بيانات مختلفة في كل مرة.
- ملخص غير صحيح يحدث هذا عندما تقوم معاملة واحدة بحساب ملخص لقيمة جميع نسخ عنصر بيانات متكرر، بينما تقوم معاملة ثانية بتحديث بعض هذه النسخ. ولا يعكس الملخص الناتج نتيجة صحيحة.
لماذا نستخدم أسلوب التزامن؟
أسباب استخدام أسلوب التحكم في التزامن في أنظمة إدارة قواعد البيانات:
- تطبيق العزل من خلال الاستبعاد المتبادل بين المعاملات المتضاربة.
- لحل مشكلات تعارض القراءة والكتابة والكتابة والكتابة.
- للحفاظ على اتساق قاعدة البيانات من خلال فرض قيود التنفيذ باستمرار.
- للتحكم في التفاعل بين المعاملات المتزامنة، يتم ذلك باستخدام مخططات التحكم في التزامن.
- للمساعدة في ضمان إمكانية التسلسل.
مثال
افترض أن شخصين ذهبا إلى أكشاك إلكترونية في نفس الوقت لشراء تذكرة فيلم لنفس الفيلم وفي نفس وقت العرض.
مع ذلك، لم يتبقَّ سوى مقعد واحد لهذا العرض في السينما. وبدون نظام التحكم في التزامن، من المحتمل أن يشتري كلا المشاهدين تذكرة. يمنع نظام التحكم في التزامن حدوث ذلك. سيظل بإمكان كلا المشاهدين الوصول إلى معلومات قاعدة بيانات مقاعد السينما، لكن نظام التحكم في التزامن لا يمنح التذكرة إلا للمشتري الذي يُكمل عملية الشراء أولاً.
بروتوكولات التحكم في التزامن
تُقدّم بروتوكولات التحكم بالتزامن المختلفة مفاضلاتٍ متباينة بين حجم التزامن المسموح به والعبء الإضافي الذي تفرضه. أهم تقنيات التحكم بالتزامن في أنظمة إدارة قواعد البيانات هي:
- البروتوكولات القائمة على القفل
- بروتوكول القفل ثنائي الطور
- البروتوكولات القائمة على الطابع الزمني
- البروتوكولات القائمة على التحقق من الصحة
يتم فحص كل منها بدوره أدناه، بدءًا من البروتوكولات الأكثر استخدامًا والقائمة على القفل.
البروتوكولات القائمة على القفل
بروتوكولات قائمة على القفل في أنظمة إدارة قواعد البيانات، تُعدّ الأقفال آليةً تمنع أي عملية من قراءة أو كتابة عنصر بيانات حتى تحصل على القفل المناسب. وتساعد بروتوكولات الأقفال في التخلص من مشكلة التزامن عن طريق قفل أو عزل عنصر بيانات معين لمعاملة واحدة.
القفل هو متغير بيانات مرتبط بعنصر بيانات، ويحدد العمليات المسموح بتنفيذها عليه. تساعد الأقفال على مزامنة الوصول إلى عناصر قاعدة البيانات من خلال المعاملات المتزامنة. تُرسل جميع طلبات القفل إلى مدير التحكم بالتزامن، ولا تُنفذ المعاملات إلا بعد الموافقة على طلب القفل.
الأقفال الثنائية: يمكن أن يكون القفل الثنائي على عنصر البيانات في حالة مقفلة أو غير مقفلة.
مشترك/حصري: تُصنّف آلية القفل هذه الأقفال بناءً على استخدامها. فإذا تم الحصول على قفل لإجراء عملية كتابة، يُطلق عليه قفل حصري.
1. القفل المشترك (S): يُطلق على القفل المشترك أيضًا اسم قفل القراءة فقط. باستخدام القفل المشترك، يمكن مشاركة عنصر البيانات بين المعاملات، لأنه لا يملك أي منها إذنًا بتحديث العنصر. على سبيل المثال، إذا كانت معاملتان تقرآن رصيد حساب شخص ما، فإن قاعدة بيانات يُمكّنهم ذلك من القراءة عن طريق وضع قفل مشترك. إذا أرادت معاملة أخرى تحديث هذا الرصيد، فإن القفل المشترك يمنعها حتى تنتهي عملية القراءة.
2. القفل الحصري (X): باستخدام القفل الحصري، يمكن قراءة عنصر البيانات وكتابته. وهو قفل حصري لا يمكن استخدامه في الوقت نفسه مع عنصر بيانات آخر. يُطلب القفل الحصري باستخدام تعليمة lock-x. على سبيل المثال، عندما تحتاج معاملة إلى تحديث رصيد حساب، يُسمح لها بذلك عن طريق وضع قفل حصري؛ وبالتالي تُمنع أي معاملة أخرى ترغب في القراءة أو الكتابة.
3. بروتوكول القفل البسيط: يُمكّن هذا المعاملات من الحصول على قفل على كل عنصر قبل بدء العملية. ويمكن للمعاملات إلغاء قفل عنصر البيانات بعد الانتهاء من عملية الكتابة.
4. قفل المطالبة المسبقة: يقوم هذا البروتوكول بتقييم العمليات وإنشاء قائمة بعناصر البيانات اللازمة لبدء التنفيذ. عند منح جميع الأقفال، يتم تنفيذ المعاملة، ويتم تحرير جميع الأقفال بمجرد انتهاء عملياتها.
مجاعة: يُعرَّف التجويع بأنه حالة انتظار المعاملة لفترة غير محددة للحصول على قفل. وتشمل الأسباب سوء إدارة نظام الانتظار للعناصر المقفلة، أو تسرب الموارد، أو استهداف المعاملة نفسها بشكل متكرر.
مأزق: يشير مصطلح "الجمود" إلى حالة تنتظر فيها عمليتان أو أكثر بعضهما البعض لتحرير مورد ما، مما يشكل سلسلة دائرية.
بروتوكول القفل ثنائي الطور (2PL)
استخدم بروتوكول القفل ثنائي الطور، والمعروف أيضًا باسم 2PL، هو أسلوب للتحكم في التزامن يضمن قابلية التسلسل من خلال تطبيق قفل على بيانات المعاملة، مما يمنع المعاملات الأخرى من الوصول إلى نفس البيانات في وقت واحد.
يسمح بروتوكول القفل ثنائي المرحلة لكل معاملة بتقديم طلب قفل أو فتح في خطوتين:
- مرحلة النمو: في هذه المرحلة، قد تحصل المعاملة على أقفال ولكنها قد لا تتمكن من تحرير أي أقفال.
- مرحلة الانكماش: في هذه المرحلة، قد تقوم المعاملة بتحرير الأقفال ولكنها قد لا تحصل على أي قفل جديد.
صحيح أن بروتوكول التغليف ثنائي المستوى (2PL) يوفر إمكانية التسلسل. مع ذلك، فهو لا يضمن عدم حدوث حالات التعطل. في الرسم التوضيحي أعلاه، تقوم أدوات كشف التعطل المحلية والعالمية بالبحث عن حالات التعطل وحلها عن طريق استئناف المعاملات إلى حالاتها الأولية.
طريقة قفل صارمة على مرحلتين
بروتوكول Strict 2PL يكاد يكون مطابقًا لبروتوكول 2PL. الفرق الوحيد هو أن بروتوكول Strict-2PL لا يُحرر أي قفل بعد استخدامه. فهو يحتفظ بجميع الأقفال حتى نقطة الالتزام، ثم يُحررها جميعًا دفعة واحدة عند انتهاء العملية.
مركزية 2PL
في نظام إدارة قواعد البيانات المركزي (2PL)، يكون موقع واحد مسؤولاً عن عملية إدارة الأقفال. ويحتوي هذا الموقع على مدير أقفال واحد فقط لنظام إدارة قواعد البيانات بأكمله.
النسخة الأساسية 2PL
في آلية النسخ الأساسي ثنائي التغليف، يتم توزيع العديد من مديري الأقفال على مواقع مختلفة، ويتولى مدير قفل معين مسؤولية إدارة القفل لمجموعة من عناصر البيانات. عند تحديث النسخة الأساسية، يتم نشر التغيير إلى النسخ التابعة.
توزيع 2PL
في هذه الآلية، يتم توزيع مديري الأقفال على جميع المواقع، وهم مسؤولون عن إدارة أقفال البيانات في كل موقع. إذا لم يتم نسخ أي بيانات، فإن ذلك يُعادل آلية النسخ الأساسي 2PL. وتكون تكاليف الاتصال في آلية النسخ الموزع 2PL أعلى بكثير من تكاليف الاتصال في آلية النسخ الأساسي 2PL.
البروتوكولات القائمة على الطابع الزمني
استخدم بروتوكول قائم على الطابع الزمني في أنظمة إدارة قواعد البيانات، تُستخدم خوارزمية تستخدم وقت النظام أو عدادًا منطقيًا كطابع زمني لتسلسل تنفيذ المعاملات المتزامنة. وتضمن هذه الخوارزمية تنفيذ كل عملية قراءة وكتابة متعارضة وفقًا لترتيب الطابع الزمني.
تُعطى الأولوية دائمًا للمعاملة الأقدم في هذه الطريقة. وتستخدم وقت النظام لتحديد الطابع الزمني للمعاملة، وهي بروتوكول التزامن الأكثر شيوعًا. أما البروتوكولات القائمة على الأقفال فتُدير ترتيب المعاملات المتضاربة عند تنفيذها، بينما تُدير البروتوكولات القائمة على الطابع الزمني التضاربات فور إنشاء العملية.
على سبيل المثال:
Suppose there are three transactions T1, T2, and T3. T1 has entered the system at time 0010 T2 has entered the system at 0020 T3 has entered the system at 0030 Priority will be given to transaction T1, then T2 and lastly T3.
المزايا:
- الجداول قابلة للتسلسل، تمامًا مثل بروتوكولات 2PL.
- لا حاجة لانتظار إتمام المعاملة، مما يلغي إمكانية حدوث حالات الجمود.
العيوب: من الممكن حدوث مجاعة إذا تم إعادة تشغيل نفس العملية وإجهاضها باستمرار.
بروتوكول قائم على التحقق
استخدم بروتوكول قائم على التحقق في أنظمة إدارة قواعد البيانات، تُعرف هذه التقنية أيضًا باسم تقنية التحكم التفاؤلي في التزامن، وهي طريقة لتجنب تعارضات التزامن في المعاملات. في هذا البروتوكول، يتم تحديث النسخ المحلية من بيانات المعاملة بدلاً من البيانات نفسها، مما يقلل من التداخل أثناء التنفيذ.
يتم تنفيذ البروتوكول القائم على التحقق في ثلاث مراحل:
- قراءة المرحلة
- مرحلة التحقق
- كتابة المرحلة
قراءة المرحلة
في مرحلة القراءة، يمكن قراءة قيم البيانات بواسطة معاملة، ولكن عمليات الكتابة أو التحديثات يتم تطبيقها فقط على نسخ البيانات المحلية، وليس على قاعدة البيانات الفعلية.
مرحلة التحقق
في مرحلة التحقق، يتم فحص البيانات للتأكد من أن تطبيق التحديثات لن ينتهك قابلية التسلسل.
كتابة المرحلة
في مرحلة الكتابة، يتم تطبيق التحديثات على قاعدة البيانات إذا نجح التحقق؛ وإلا يتم تجاهل التحديثات ويتم التراجع عن المعاملة.
مقارنة بروتوكولات التحكم في التزامن
تُقدّم عائلات البروتوكولات الأربعة رهانات مختلفة حول مدى تكرار تعارض المعاملات. يلخص الجدول أدناه موقع كل منها.
| بروتوكول | النهج | مأزق | # متى |
|---|---|---|---|
| قائم على القفل | متشائم، يغلق الأبواب قبل الدخول | ممكن | النزاعات متكررة |
| قفل ثنائي الطور | مراحل التشاؤم والنمو والانكماش | ممكن | يُشترط إمكانية التسلسل |
| يعتمد على الطابع الزمني | الطلبات حسب الطابع الزمني | خالٍ من حالات الجمود | الترتيب مهم، والانتظار مكلف. |
| التحقق القائم على التحقق | متفائل، تحقق قبل الكتابة | خالٍ من حالات الجمود | النزاعات نادرة |
باختصار، تفترض البروتوكولات القائمة على القفل وبروتوكولات 2PL أن التعارض شائع وتمنعه مسبقًا، بينما تفترض بروتوكولات الطابع الزمني والتحقق أن التعارض نادر ولا تحله إلا عند ظهوره.
خصائص بروتوكول التزامن الجيد
تتمثل الأهداف المثالية لآلية التحكم في التزامن فيما يلي:
- يجب أن يكون النظام قادراً على الصمود في وجه أعطال الموقع والاتصالات.
- يسمح بالتنفيذ المتوازي للمعاملات لتحقيق أقصى قدر من التزامن.
- وينبغي أن تكون آليات التخزين والأساليب الحسابية الخاصة بها متواضعة لتقليل النفقات العامة.
- يجب أن يفرض بعض القيود على بنية الإجراءات الذرية للمعاملات.

