تراکنش(Transaction) در پایگاه داده چیست؟

پیش نیازهای این درس

بهتر است قبل از خواندن این درس، مباحث پایه پایگاه داده مانند SELECT، UPDATE یا DELETE و ساخت پایگاه داده های ساده را بلد باشید. برای این کار میتواند از w3schools کمک بگیرید

تراکنش ها تعاریف گوناگونی دارند. اما شاید یکی از بهترین و ساده ترین تعریف ها را وب سایت ماکروسافت ارائه داده باشد:

در پایگاه داده ها، تراکنش در واقع یک مجموعه ای از عملیات(مانند SELECT, UPDATE و…) است که مانند یک واحد منطقی عمل میکنند.

برای مثال فرض کنید، شما برای یک مهمانی آماده می شوید. یک برنامه ریزی ۳ ساعته برای مهمانی انجام می دهید که به این صورت است: ۱. به عابر بانک برم و مقداری پول بگیرم ۲. به فروشگاه بروم و مقداری مایحتاج خانه از فروشگاه بخرم ۳. به خانه برگردم و غذا را برای مهمان ها آماده کنم.

در مثال بالا، مجموعه ای از عملیات مختلف انجام شد، ولی شما به صورت منطقی(در ذهن خود) تمام این عملیات را، یک برنامه ریزی منسجم جهت آماده سازی برای مهمانی می دانستید. مثلا فرض کنید، اگر هر کدام از این سه مورد بالا انجام نمیشد، شما برای مهمانی آماده نبودید. مثلا اگر پولی از بانک نمیگرفتید، به تبع نمیتوانستید مایحتاج مهمانی را خریداری کنید.

در پایگاه داده ها نیز، تراکنش ها به همین صورت تعریف می شود. مثلا شما در یک تراکنش می توانید، SELECT انجام دهید. بعد چند سطر را UPDATE کنید. سپس دو سطر دیگر را DELETE کنید. ولی تمام این فرآیند در یک تراکنش باشد.

برای مثالی دیگر، این بار در حوزه پایگاه داده، فرض کنید در پایگاه داده یک بانک هستید و میخواهید مبلغ ۵۰هزار تومان را از حساب کاربری A به حساب کاربری B انتقال دهید. در یک مرحله باید ۵۰هزار تومان را از حساب کاربری A کم کرده و در مرحله بعد، ۵۰هزار تومان را به حساب کاربری B اضافه کنید. این دو مرحله، بایستی در یک تراکنش انجام شود تا بتوان از خاصیت های مختلف تراکنش ها استفاده کرد. در واقع در این مثال، دو عدد UPDATE(به هنگام سازی) انجام شده است.

مثلا اگر در مثال بالا، از تراکنش ها استفاده نشود، ممکن است بعد از کسر پول از حساب A، سیستم پایگاه داده دچار مشکل شود، پس در این لحظه ۵۰هزار تومان از حساب A کم شده ولی به حساب B هیچ پولی واریز نشده است. در مورد این مشکل ها که به Consistency پایگاه داده(یا همان ثبات) معروف است، بعدا بیشتر صحبت خواهیم کرد.

در کل تراکنش های باعث می شوند، که اگر عملیاتی در پایگاه داده به طور ناقص انجام شد، بتوان این مجموعه عملیات را بازگردانی(Rollback) کرد. در مثال بانک که در بالا گفته شد،  بعد از انجام عمل اول(یعنی برداشت ۵۰هزار تومان از حساب کاربری A) اگر سرور دچار مشکل شود(مثلا خاموش شود) – چون در یک تراکنش بوده است – میتوان حساب کاربری A را دوباره به ابتدای تراکنش برگرداند(یعنی ۵۰هزار تومان کسر شده را به حساب کاربری A برگرداند) و از مشکل غیرثبات شدن پایگاه داده جلوگیری کرد.

منابع این بحث و اطلاعات بیشتر
در صورت تمایل به یادگیری بیشتر، منابع بالا در نظر گرفته شده است. می توانید با خواندن این منابع، به یادگیری خود در این زمینه عمق ببخشید

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *