عبدالفتاح الصلوي

ماذا تعرف عن نموذج ACID في قواعد البيانات

كتبها : عبدالفتاح الصلوي / في رصيف : قواعد البيانات

ماذا تعرف عن نموذج ACID في قواعد البيانات


يهدف نموذج ACID في قواعد البيانات إلى الحصول على نظام مستقر يحافظ على سلامة البيانات وأمنها . وبتطبيق جميع الجوانب والخصائص التي يشير إليها هذا النهج بطريقة صحيحة؛ فإننا سنحصل على قواعد بيانات آمنة ومستقرة و ذات قدر كبير من التكاملية لتخدم الأغراض التي استخدمت لأجلها بأفضل طريقة ممكنة. فمن المؤكد أن قاعدة البيانات التي تحتوي على بيانات تالفة تمثل مشكلات كبيرة قد تكون كلفتها باهضة . إذ تعتبر المخزن والسجل الذي تستند عليه المؤسسات والمشاريع في تعاملاتها اليومية وفي قياس النتائج واستخلاص التقارير بجميع أنواعها .

ماذا يقصد ب database transaction ؟

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

* في البرمجة و قواعد البيانات اذا تمت العمليات على البيانات في transaction  بنجاح فهذا يعني أنه حدث commit ، أما اذا حدث خلل ما فسيتم التراجع عنها من خلال rollback.

سيتم الإشارة في المقال الى المصطلحات التالية :

- النموذج أو النهج يقصد به ACID

- المعاملة أو الصفقة يقصد بها ال transaction

- العملية أو العمليات يقصد بها العملية أو العمليات التي تتم على البيانات مثل create,update وما الى ذلك وتتم في transaction واحد.


فماهو نموذج ال ACID ؟

يقصد به مجموعة من المعايير و المبادئ التوجيهية التي تضمن معالجة العمليات في ال( transactions ) التي تجري في قاعدة البيانات بشكل موثوق. ويشير المصطلح (ACID ) للحروف الأولى من :
- Atomicity
- Consistency
- Isolation
- Durability

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


 - Atomicity

تترجم حرفيا بـ(الذرية) ويقصد بها ( (الذرية) مكون غير قابل للتجزئة )، وفي قواعد البيانات تعني أن أي عمليات تعتمد على بعضها فعند حدوثها تعامل كصفقة أو وحدة واحدة فإما:
    - يتم تنفيذها جميعا بنجاح .
    - يتم الغاؤها جميعا في حال فشلت إحداها.

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

اذاً فـ atomicity تشير إلى ضمان إما إكمال المعاملة بالكامل بنجاح - أو الغاؤها بالكامل.

Consistency تناسق

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

- Isolation العزل

تشير إلى أن العمليات معزولة عن بعضها "قابلة للتسلسل" اثناء تنفيذها، مما يعني أن كل معاملة (transaction) تحدث بترتيب مميز دون حدوث أي معاملات بنفس اللحظة على بيانات معينة قبل انتهاء العملية الأولى ، وعادة يتم تحقيق ذلك عن طريق ما يسمى بآلية القفل (على مستوى صف البيانات أو على مستوى الجدول وما إلى ذلك) .
وبعبارات أخرى يهدف العزل من التأكد من أنه لن تتأثر أي عمليات قراءة أو كتابة يتم إجراؤها على قاعدة البيانات بعمليات القراءة والكتابة الأخرى للمعاملات (transactions) المنفصلة، التي تحدث في نفس قاعدة البيانات. يتم إنشاء ترتيب عام مع كل معاملة حيث تصطف في طابور لضمان اكتمال المعاملات بالكامل قبل أن تبدأ معاملة أخرى.
و هذا بالطبع لا يعني أن عمليتين لا يمكن أن تحدثا في نفس الوقت. بل يمكن أن تحدث معاملات متعددة طالما أن هذه المعاملات ليس لديها إمكانية للتأثير على المعاملات الأخرى التي تحدث في تلك الأثناء.
وذلك يمكن أن يحدث تأثيراً على سرعة الأداء لأنه قد يجبر العديد من العمليات على الانتظار قبل أن تبدأ. ومع ذلك ، فإن هذه المقايضة (التي توفرها خاصية العزل) مهمة لحماية البيانات .
يمكن تحقيق مبدأ العزل من خلال استخدام آلية متدرجة من السماح بحدوث عدة عمليات بنفس الوقت عن طريق تطبيق مبدأين تسمى المعاملات المتفائلة والمعاملات التشاؤمية:
• optimistic transaction schema  يفترض مخطط المعاملات المتفائل أن المعاملات الأخرى ستكتمل دون قراءة أو كتابة في نفس المكان . باستخدام المخطط المتفائل ، سيتم إلغاء كلتا العمليتين وإعادة المحاولة في حالة حدوث معاملة تصل إلى نفس المكان .
• pessimistic transaction schema يوفر مخطط المعاملات المتشائم قدرًا أقل من الحرية حيث يتم إغلاق الموارد على افتراض أن المعاملات ستؤثر على بعضها. ينتج عن هذا عدد أقل من عمليات الإلغاء (الإجهاض) وإعادة المحاولة ، ولكنه يعني أيضًا أن المعاملات تضطر إلى انتظار دورها  في طابور في كثير من الأحيان مقارنة بنهج المعاملات المتفائل.
في الغالب يمكن الحصول إلى افضل نتيجة من ناحية الأداء والسرعة من خلال إيجاد خليط بين المخططين (النهجين) السابقين.

- Durability

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

الخلاصة :

يضمن تطبيق معايير نموذج ACID سلامة البيانات بطريقة سليمة وأمنة من خلال تطبيق ال(Atomicity و  Consistency و Isolation و   Durability ) في العمليات التي تحدث في المعاملة الواحدة (transaction) وأن لا تؤثر على نتائج المعاملات الأخرى بصورة سلبية.

علامات ذات صلة :