شنو هي DATABASE TRANSACTION ؟؟
هي مجموعة من العمليات ( Queries ) اللي كايدارو في قاعدة البيانات, و كايتم التعامل معاهم كعملية واحدة, بمعنى أنه إلى شي عملية فشلات لسبب ما, جميع العمليات الأخرى كايتم إلغائها, هاد عملية الإلغاء معروفة أيضا بإسم Rollback
.كاينين العديد من الإستعمالات ل Database Transaction
لكن أفضل مثال هو عملية تحويل الأموال في الأبناك, بحيث إلى شي شخص حول المال إلى شخص أخر خاص النظام يقوم بهاد العمليات:
- يتأكد بلي داك الشخص كايتوفر على المبلغ اللي باغي إحول.
- يتم خصم مبلغ التحويل من الحساب ديالو.
- إضافة المبلغ في حساب الشخص الأخر.
لنفترض أن 2 عمليات اللولين تمو بنجاح و العملية الثالثة فشلات, خاص العمليات اللي قبل إتلغاو, أي أنه خاصنا نردو للمرسل المبلغ اللي تخصم من الحساب ديالو.
مثال أخر هو النظام الخاص بالمتابعة في المنصات بحال Facebook
, مثلا ملي شي مستخدم كايقوم بمتابعة مستخدم أخر خاص يتم حفض المتابعة و أيضا تحديث معلومات الشخص اللي قام بالمتابعة و الشخص لي تمت متابعته, باش المعلومات تكون دقيقة و صحيحة خاصنا نلغيو جميع العمليات إلى شي عملية فشلات.
خصائص Transaction الناجحة ACID
باش Transaction
تكون ناجحة خاصها تتوفر على 4 خصائص اللي هي Atomicity - Consistency Isolation - Durability المعروفين بإختصار ACID.
Atomicity :
كيف ما قلنا سابقا, transaction
كاتكون من عدة Queries
, ملي كانقولو Atomicity
كانعنيو أنه إلى شي Query
فشلات, خاص جميع ل Queries
الأخرين يتلغاو, أي أن transaction خاصها تنجح %100 أو تفشل.
Consistency :
بالعربية كاتعني التطابق, أي أنه خاص المعلومات اللي في قاعدة البيانات تكون متطابقة, باش هادشي يتحقق خاص ل Queries
اللي تمو بنجاح يتم عكسهم إلى Transaction
فشلات.
Isolation :
كاتعني أن كل Transaction
خاصها تكون معزولة على Transactions
الأخرين و حتى وحدة ما تأثر على العمل اللي كاتقوم بيه الأخرى.
Durability :
كاتعني أن النتيجة ديال هاد Transaction
خاص إتم حفظها بصورة دائمة, أي أنه إلى طفينا قاعدة البيانات و عاودنا شعلناها خاصنا نلقاو التغييرات اللي قامت بيهم transaction
إكونو مزالين.
معلومات مهمة :
الناس اللي مختصين بعلم قواعد البيانات كاينصحو بإستعمال SQL Databases
مثال (MySQL, Postgresql, oracleDB ...) في حالة كنتي باغي تستعمل هاد Transactions
, و السبب هو أن قواعد البيانات لي NoSQL
كايفتاقرو ل consistency
لأنهم مكايفرضوش SCHEMA
. أي أنه مايمكنش نحافضو على التطابق بين المعلومات فواحد قاعدة البيانات اللي ما عندهاش خطاطة اللي كاتشرح كيفاش هاد المعلومات خاصهوم إكونو. و حتا إلى كانت هاد الخطاطة, مكايتمش التقيد بها.
أغلبية ديال NoSQL Databases
مكايدعموش هاد Transactions
, لكن كاين لي كايدعمهم مثل MongoDB
, و الناس اللي جربوهوم كايقولو بلي كايخدمو مزيان, مع ذلك لا ينصح بها في التعامل مع المعلومات اللي حساسة بزاف بحال الأموال.
خلاصة :
من خلال هادشي نقدرو نقولو أن إختيار قاعدة البيانات اللي غاتستخدم في المشروع ديالك خاصو البحث و الإختيار العقلاني, لأن المعلومات هي أهم جزء من أي نظام, و كاتطلب دراية كبيرة فالتعامل معاها. و دائما خد بعين الإعتبار أن واحد التكنلوجيا اللي قديمة و ثبتات النجاح ديالها على مدة طويلة, أفضل من تكنلوجيا جديدة واخا تكون عليها الهضرة بزاف و كولشي كايشكرها.