جدول معاملات قواعد البيانات هو نموذج تجريدي لوصف ترتيب تنفيذ مجموعة من المعاملات الجارية في النظام. والذي غالبًا ما يكون عبارة عن قائمة عمليات (أفعال) مرتبة زمنيًا، تُنفذها مجموعة من المعاملات التي تُنفذ معًا في النظام. وإذا لم يُحدد النظام الترتيب الزمني بين عمليات معينة، فسيتم ترتيبها جزئيًا. ومن الأمثلة على هذه العمليات طلب عملية قراءة، أو القراءة، أو الكتابة، والإلغاء، والتضمين، وطلب القفل، والقفل، وما إلى ذلك. غالبًا ما يُدرج الجدول مجموعة فرعية فقط من أنواع عمليات المعاملات.
تُعد جداول المعاملات من المفاهيم الأساسية في نظرية التحكم في تزامن قواعد البيانات. عمليًا، تستخدم معظم أنظمة قواعد البيانات العامة جداول مُعاملات قابلة للتسلسل في حالة التعارض وقابلة للاسترداد بشكل صارم.[1][2][3]
الترميز
يتضمن ترميز الشبكة ما يلي:
- الأعمدة: المعاملات المختلفة في الجدول.
- الصفوف: الترتيب الزمني للعمليات (أو الإجراءات).
وتتضمن العمليات (أو الإجراءات) ما يلي:
- دالة R(X): تقوم هذه المعاملة بقراءة الكائن X (أي أنها تسترجع البيانات المخزنة في الكائن X) لتعديل البيانات (مثل X = X + 4) أثناء عملية الكتابة بدلاً من مجرد الكتابة فوقها. وعند تمثيل الجدول كقائمة بدلاً من تمثيله كشبكة، يُمثل هذا الإجراء على النحو التالي حيث هو رقم يقابل معاملة محددة.
- دالة W(X): تقوم المعاملة المقابلة بالكتابة في الكائن X، أي أنها تعدل البيانات المخزنة في X. عند تمثيل الجدول كقائمة بدلاً من تمثيله كشبكة، يُمثل الإجراء على النحو التالي حيث هو رقم يُقابل معاملة مُحددة.
- Com.: يُمثل هذا عملية تأكيد الإجراء حيث تكون المعاملة المُقابلة قد أكملت إجراءاتها السابقة بنجاح، وجعلت جميع التغييرات والتعديلات التي أجرتها في قاعدة البيانات دائمة.
يُمكن بدلًا من ذلك تمثيل الجدول برسم بياني مُوجه خالي من الحلقات، حيث يكون هُناك بيان مُوجه بين كل زوج مُرتب من العمليات.
مثال
فيما يلي مثال على جدول المعاملات في قواعد البيانات:
T3 | T2 | T3 |
---|---|---|
R(X) | ||
W(X) | ||
Com. | ||
R(Y) | ||
W(Y) | ||
Com. | ||
R(Z) | ||
W(Z) | ||
Com. |
في هذا المثال، تُمثل الأعمدة المعاملات المختلفة في الجدول D. يتكون الجدول D من ثلاث معاملات، وهي: T1 - T2 - T3، بحيث تقرأ T1 أولاًا وتكتب إلى الكائن X، ثم تُجري عمليات تأكيد.ها، ثم تقرأ T2 وتكتب إلى الكائن Y وتُجري عمليات تأكيدها، وأخيرًا، تقرأ T3 وتكتب إلى الكائن Z وتُجري عمليات تأكيدها. ويمكن تمثيل الجدول السابق كقائمة بالطريقة التالية:
D = R1(X) W1(X) Com1 R2(Y) W2(Y) Com2 R3(Z) W3(Z) Com3
مدة وترتيب الإجراءات
عادةً، ولغرض دراسة التحكم في التزامن في قواعد البيانات، تُصاغ العملية على أنها ذرية، تحدث في نقطة زمنية محددة، دون مدة محددة، بينما العمليات الفعلية المُنفذة دائمًا ما يكون لها مدة محددة. ويمكن أن تتداخل عمليات المعاملات في جدول (أي أنه يمكن تنفيذ المعاملات بشكل متزامن)، ولكن يجب أن تبقى ترتيبات الوقت بين العمليات في كل معاملة دون تغيير. يكون الجدول مُرتّبًا جزئيًا عندما تتداخل عمليات المعاملات في الجدول (أي عندما يكون الجدول قابلًا للتسلسل في حالة التعارض ولكنه غير مُتتالي). ويكون الجدول مُرتّبًا كليًا عندما لا تتداخل عمليات المعاملات في الجدول (أي عندما يكون الجدول مُتتاليًا).
مراجع
- ^ Philip A. Bernstein, Vassos Hadzilacos, Nathan Goodman (1987): Concurrency Control and Recovery in Database Systems (free PDF download), Addison Wesley Publishing Company, (ردمك 0-201-10715-5) نسخة محفوظة 2016-06-09 على موقع واي باك مشين.
- ^ جيرهارد وايكوم, Gottfried Vossen (2001): Transactional Information Systems, Elsevier, (ردمك 1-55860-508-8) نسخة محفوظة 2012-07-15 على موقع واي باك مشين.
- ^ موريس هيرلي and J. Eliot B. Moss. Transactional memory: architectural support for lock-free data structures. Proceedings of the 20th annual international symposium on Computer architecture (ISCA '93). Volume 21, Issue 2, May 1993.