Transaction در پایگاه داده چیست ؟
ذخیرهسازی اطلاعات در پایگاه داده در بسیاری موارد شامل چند تراکنش موازی و مرتبط با هم است. برای مثال به موارد زیر توجه کنید:
- ذخیرهسازی سند حسابداری یک ردیف برای بدهکار و یک ردیف برای بستانکار
- ذخیرهسازی انتقال وجه از حساب بانکی A به حساب بانکی B شامل یک ردیف برای کسر پول و یک ردیف برای اضافه کردن پول
- ذخیرهسازی یک فاکتور فروش شامل یک ردیف برای سربرگ فاکتور و چندین ردیف برای اجناس خریداری شده
- ذخیرهسازی یک خبر در پایگاه داده یک سایت خبری شامل یک ردیف اطلاعات کلی خبر و چندین ردیف جزئیات دیگر مانند کامنتها، گالری تصاویر، ...
در تمامی موارد بالا و بسیاری کاربردهای دیگر، اگر ذخیرهسازی اطلاعات به دلایل مختلف نیمه کاره بماند، ممکن است باعث ایجاد خطاهای جبرانناپذیر و غیرقابل ردیابی باشد.
یکی از دلایل استفاده از Transaction یا ترنزکشن برای حل این مشکل است. Transaction در پایگاه داده تضمین میکند که چندین تراکنش روی پایگاه داده همگی به صورت موازی و قطعی انجام شوند و اگر هر یک از تراکنشها به دلایل مختلف از جمله خطاهای فنی، خطاهای سختافزاری یا نرمافزاری نیمه کاره بمانند، بقیهی تراکنشهای موازی نیز انجام نخواهند شد.
کاربردهای دیگر Transaction
استفاده از ترنزکشن برای افزایش سرعت در فعالیتهای متعدد
ترنزکشن علاوه بر کاربرد فوق، کاربردهای دیگری نیز دارد. پایگاه داده برای تضمین ذخیرهسازی کامل هر ردیف به تنهایی یک Transaction ضمنی ایجاد میکند و به این وسیله از ذخیرهسازی نیمهکارهی یک رکورد در پایگاه داده جلوگیری میکند.
ایجاد هر Transaction مستلزم انجام فعالیتهای مختلف است که موجب اتلاف زمان و افزایش استهلاک دیسک میشوند.
هنگامی که قصد درج تعداد زیادی ردیف به پایگاه داده را داریم، میتوانیم با ایجاد یک Transaction به صورت صریح، از ایجاد دهها ترنزکشن ضمنی و اتلاف زمانی زیاد جلوگیری کنیم.
استفاده از ترنزکشن برای اطمینان از انجام فعالیتهایی خارج از پایگاه داده
یک ترنزکشن روی پایگاه داده میتواند باز بماند تا زمانی که یک فعالیت خارج از پایگاه داده مانند ذخیرهسازی یک فایل روی دیسک به پایان برسد و پس از ثبت شدن، ترنزکشن اجرا شود.
برای مثال ممکن است برای طراحی سایت بخواهیم تصویر کاربر را هنگام ثبت نام از وی دریافت نماییم و با شمارهی شناسهی کاربری روی دیسک ذخیره کنیم. برای پیشگیری از ذخیره شدن اطلاعات بدون تصویر میتوانیم ذخیرهسازی اطلاعات کاربر را درون یک ترنزکشن انجام دهیم، سپس تصویر را ذخیره کنیم و به پروفایل نسبت دهیم. اگر ذخیرهسازی تصویر با مشکل مواجه شد، کافی است ترنزکشن را به عقب برگردانیم تا تمامی اطلاعات ذخیره شده از بین بروند و خطای لازم را به کاربر نشان دهیم.