Navigation

شرح sql بالعربي شرح transaction في الداتا بيس

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

موضوعنا اليوم شرح transaction او يمكن تسميتها بالمناقلات.

هل سبق لك وفكرت ما الذي سيحدث في حال انقطاع التيار الكهربائي أو حدوث خلل متعلق بالعتادالصلب أو البرمجيات أثناء عملية تحويل مصرفي الكتروني أو عملية شراء عبر الانترنتفغالبًا ماتتكون هذه العمليات ككل من أكثر من عملية جزئيةهل خطر لك ما الذي سيحدث إذا فشلت إحدى تلكالعمليات الجزئية؟ لنأخذ حالة شخص أراد شراء سلعة بسعر $ 200 عبر موقع تجارة الكتروني عنطريق بطاقته الائتمانية.
أبسط سيناريو لتلك العملية سيكون سحب المبلغ من حسابه وإيداعه في الحساب الخاص بموقع التجارةالالكتروني وإذا أردنا التعبير عن هذا بصيغة SQL :
UPDATE creditAccount set creditBalance=creditBalance - 200 where creditNumber=’345276778543’;

UPDATE SiteAccount set SiteBalance=SiteBalance + 200 where accountNumber=345231;

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

مالمقصود بالمناقلة او ماهو ال Transaction ؟

الـTransactions  هي وحدة عمل منطقية تتألف من سلسلة متتابعة من العمليات المنفصلة التي تحول النظام من وضعية استقرار الى وضعية استقرار اخرى, او هي مجموعة من العمليات تُنفذ كحزمة واحدة اما ان تنجح كلها او تفشل كلها دفعة واحدة . ومن اشهر الامثلة لها عملية تحويل الاموال من حساب جاري الى حساب توفير في البنوك لأن هذه العملية تتطلب عمليتين وهي عملية خصم الرصيد من الحساب الجاري وعملية اضافة الرصيد الى حساب التوفير لذلك لابد ان تنجح العمليتين معاً والا سيحدث خطأ كبير وفادح يؤدي الى خسارة اموال العملاء, ولذلك يجب ان تكون البيانات في كل المراحل في وضعية مستقرة .

ملاحظات:

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


خصائص transaction :

المناقلات بشكل عام وليس فقط المطبقة في قواعد البيانات يجب ان تحقق مجموعة من الخصائص هذه الخصائص تسمى خصائص ACID وهي :
  • الذرية Atomicity: تعود الى طبيعة الكل او اللاشي الخاصة بالمناقلة أي اما ان يتم تطبيق المناقلة كاملة او لا تتم ابداً وتعتبر هذه الخاصية الخاصية الرئيسية للمناقلات والاكثر تعبيراً عن طبيعة وظيفتها .
  • الثباتية او التماسك Consistency: تعني ان المناقلة يجب ان تنقل النظام من وضع مستقر ومتسق الى وضع اخر مستقر ومتسق .
  • العزل Isolation : تعني ان كل مناقلة يجب ان تعمل بشكل مستقل تماماً عن اية  مناقلة اخرى او عمليات اخرى تتم في نفس الوقت 
  • الاستمرارية Durability : تعني يجب ان تكون نتائج المناقلة الناجحة قادرة على الصمود ومقاومة الاحداث حتى المتعلقة بانهيار النظام  ككل.

كيف تعمل المناقلة TRANSACTION :

طريقة عمل المناقلة تختلف تبعاً لنظام قواعد البيانات المستخدم ولكن المبادئ والمراحل موحدة لجميع انواع قواعد البيانات وهي كالاتي :

تحديد بداية مناقلة :

بحسب المعيار SQL99 يتم ذلك بالتعبير START TRANSACTION لكن هذا التعبير غير مستخدم في قواعد بيانات   DB2 و Oracle و SQL Server  و MySQL  حيث ان صيغة البدء في SQL Server  تكون كما يلي :
BEGIN TRANSACTION transaction_name;

وفي MySQL تكون الصيغة :

BEGIN;

اما في Oracle 

يتم بدء المناقلة عند بدء تنفيذ اول استعلام كذلك الامر في DB2 إذاً لن تحتاج الى تعبير بدء المناقلة فيها .
أما قواعد بيانات Access فلا تدعم المناقلات.
متى نستخدم المناقلات TRANSACTIONS:
اذا اردنا ادخال او تعديل او حذف اكثر من صف دفعة واحدة
اذا اردنا التعديل على اكثر من قاعدة بيانات بشكل متزامن.
في حالات العمليات الموزعة على اكثر من قاعدة على اكثر من خادم .
مشاركة

أضف تعليق:

0 comments: