ما هي Database Transaction و ما معنى ACID

ما هي Database Transaction و ما معنى ACID

27 شتنبر 2022|دقيقتين قراءة

شنو هي 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, و الناس اللي جربوهوم كايقولو بلي كايخدمو مزيان, مع ذلك لا ينصح بها في التعامل مع المعلومات اللي حساسة بزاف بحال الأموال.

خلاصة :

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