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

x32x01
  • بواسطة x32x01 ||

سؤال انترفيو: ليه بنستخدم 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 بتحمي البيانات
🔹 بتمنع الأخطاء الكارثية
🔹 ضرورية لأي نظام حقيقي
لو فاهمها كويس؟ ✔ هتكتب كود أنضف ✔ هتنجح في الانترفيو ✔ وهتتجنب مشاكل ملهاش حل
 
المواضيع ذات الصلة
A
الردود
1
المشاهدات
155
lbebulk
lbebulk
x32x01
الردود
0
المشاهدات
195
x32x01
x32x01
x32x01
الردود
0
المشاهدات
602
x32x01
x32x01
x32x01
الردود
0
المشاهدات
9
x32x01
x32x01
x32x01
الردود
1
المشاهدات
1K
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
2,275
المشاركات
2,487
أعضاء أكتب كود
547
أخر عضو
exozonlyperson
عودة
أعلى