السلام
عليكم ورحمة الله وبركاته في البداية نعتذر عن توقفنا عن النشر لظروف خاصة , نلتقي
مجدداً في موضوعنا دورة في SQL بالعربي لمتابعة الدروس يمكنك زيارة الرابط
التالي :
موضوعنا
اليوم شرح 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:
اذا اردنا ادخال او تعديل او حذف اكثر من صف دفعة واحدة
اذا اردنا التعديل على اكثر من قاعدة بيانات بشكل متزامن.
في حالات العمليات الموزعة على اكثر من قاعدة على اكثر من خادم .
نكتفي بهذا ونلتقي في درس اخر بإذن الله .
رائع جداً . .
ردحذفلكن نريد تكملة الموضوع مع الامثلة
شرحك ممتاز ومبسط اكمل باقي الدروس
ردحذفانا فخور جداً بذلك لقد اسعدتني كثيراً بتعليقك هذا لك فائق احترامي ومودتي ياغالي ,,, تشرفت بتواجدك في الموقع
حذفشكرا لكم جزيل الشكر شرح أكثر من رائع كم تعبت وانا ابحاول فهم عذا الموضوع لاكن الان فهمته بكشل ممتاز ولكم الفضل بعد الله تعالى
ردحذفlike
ردحذف