Database Transactions ليه مهمة في البرمجة؟

x32x01
  • بواسطة x32x01 ||
  • #1

سؤال انترفيو: ليه بنستخدم Database Transactions؟ 🤔💾​

من أكتر أسئلة الانترفيو اللي بتيجي لأي Backend Developer 👇
ليه بنستخدم Database Transactions؟
الإجابة المختصرة: عشان نحافظ على سلامة وتكامل البيانات (Data Integrity) خصوصًا في العمليات اللي فيها أكتر من خطوة.



يعني إيه Transaction ببساطة؟ 🧠​

الـ Transaction معناها: مجموعة أوامر في قاعدة البيانات يا إمّا تنجح كلها… يا إمّا تفشل كلها ❗ مفيش حل وسط.
📌 فكّر فيها كده: زرار Save واحد يضبط كل حاجة أو يلغي كل حاجة.



مثال عملي: تحويل رصيد بين حسابين 💰​

أوضح مثال دايمًا في الانترفيو 👇
عندك:
  • مستخدم (A)
  • مستخدم (B)
عايز:
  • تخصم 100 جنيه من (A)
  • وتضيفهم لـ (B)
❌ من غير Transaction:
  • اتخصم المبلغ من (A)
  • السيستم وقع قبل ما يضيف لـ (B)
📉 النتيجة؟ فلوس ضاعت ومشكلة كبيرة



دور الـ Transaction هنا 🔒​

الـ Transaction بتقول:
  • يا تنفذ العمليتين مع بعض
  • يا تلغي الاتنين لو واحدة فشلت
📌 مفيش خصم من غير إضافة
ومفيش إضافة من غير خصم



استخدام Transactions في Laravel بسهولة 🚀​

Laravel مريح جدًا في النقطة دي.

مثال بسيط باستخدام DB::transaction:​

PHP:
DB::transaction(function () {
    DB::table('users')
        ->where('id', 1)
        ->decrement('balance', 100);

    DB::table('users')
        ->where('id', 2)
        ->increment('balance', 100);
});
✔ لو كل الأوامر نجحت → Commit
❌ لو أي حاجة فشلت → Rollback تلقائي



إمتى أحتاج تحكم يدوي في Transaction؟ 🛠️​

في العمليات المعقدة شوية:
  • شروط كتير
  • Try / Catch
  • أكتر من خطوة Logic
ساعتها بتستخدم التحكم اليدوي.

مثال:​

PHP:
DB::beginTransaction();

try {
    DB::table('users')->where('id', 1)->decrement('balance', 100);
    DB::table('users')->where('id', 2)->increment('balance', 100);

    DB::commit();
} catch (\Exception $e) {
    DB::rollBack();
}
📌 كده انت المتحكم الكامل في:
  • إمتى تعمل Commit
  • وإمتى تعمل Rollback



استخدامات Transactions غير الفلوس 💡​

مش بس تحويل رصيد، كمان:
  • إنشاء Order + Order Items
  • تسجيل مستخدم + Profile
  • حجز منتج + تقليل المخزون
  • أي عملية مترابطة
📌 أي حاجة فيها أكتر من Query مرتبطين ببعض = Transaction.



ليه السؤال ده مهم في الانترفيو؟ 🎯​

لأنه يوضح:
  • فهمك للـ Database
  • وعيك بالمخاطر
  • تفكيرك في الـ Edge Cases
  • احترافيتك في كتابة Backend Code
الـ Recruiter بيشوف هل انت: ❌ بتكتب Queries وخلاص ✔ ولا فاهم سيستم شغال ازاي



الخلاصة 👇🔥​

🔹 Database Transactions بتحمي البيانات
🔹 بتمنع الأخطاء الكارثية
🔹 ضرورية لأي نظام حقيقي
لو فاهمها كويس؟ ✔ هتكتب كود أنضف ✔ هتنجح في الانترفيو ✔ وهتتجنب مشاكل ملهاش حل
 

المواضيع ذات الصلة

x32x01
الردود
0
المشاهدات
94
x32x01
x32x01
x32x01
الردود
0
المشاهدات
174
x32x01
x32x01
x32x01
الردود
0
المشاهدات
344
x32x01
x32x01
x32x01
الردود
0
المشاهدات
61
x32x01
x32x01
x32x01
الردود
0
المشاهدات
221
x32x01
x32x01
الوسوم : الوسوم
acid backend development commit rollback data integrity database transactions laravel mysql php قواعد البيانات مقابلات برمجية
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟

آخر المشاركات

إحصائيات المنتدى
المواضيع
2,388
المشاركات
2,601
أعضاء أكتب كود
574
أخر عضو
الياس
عودة
أعلى