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

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

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

مدرس: مسعود کاویانی

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

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

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

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

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

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

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

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

7 دیدگاه دربارهٔ «تراکنش (Transaction) در پایگاه داده چیست؟»

  1. سلام از مطالبتون ممنونم-من دانشجوی کارشناسی ارشد رشته تجارت الکترونیک هستم اما رشته کارشناسیم مدیریت دولتی بوده و به خاطر همین تو این رشته خیلی ضعف اطلاعاتی در مورد مفاهیم کتاب دارم-اگه ممکنه چند تا منبع بهم معرفی کنید-ممنون

    1. با سلام
      کتاب در این حوزه بسیار زیاد است
      ولی دو کتاب پایگاه داده دکتر رانکوهی
      و کتاب پایگاه داده پیشرفته سیلبرشات توصیه می شود
      همچنین به صورت کاربردی کتاب آموزشی Sqlserver(ترجمه شده) هم در بازار پیدا می شود
      دروس آنلاین فارسی هم در سایت هایی مانند فرادرس و مکتب خونه پیدا می‌شود

  2. سلام ممنون از توضیحتون..ی سوالی.
    اگر تراکنشی داشته باشیم که بخواهیم با کاربر در ارتباط باشیم چه جوری ACID را پیاده کنیم..
    مثلا کاربر از ما سوال میپرسه بین تراکنش

  3. بسیار عالی ممنونم به خصوص برای من که کارشناسی مدیریت خوندم و ارشد ای تی و تو این رشته بسیار ضعیفم

  4. سلام بزرگوار خسته نباشید
    ببخشید یه مثال برای تراکنش تو در تو و چند سطحی (nested و multi-level)میتونید برای من تشریح کنید لطف می کنید.

دیدگاهتان را بنویسید

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