تراکنش یا انتقال پایگاه داده مجموعهای از عملیاتی پایگاه دادهها است که یا بایستی به طور کامل انجام شود یا در صورت بروز مشکل وضعیت به حالت قبلی بازگردانده شود.[۱] حالات میانی بین گامها توسط تراکنشهای همزمان دیده نمیشوند، و اگر خطایی رخ دهد که از اتمام تراکنش ممانعت کند، هیچکدام از گامها پایگاه داده را تغییر نمیدهند.
یک انتقال پایگاه داده بخشی از یک عملکرد است با یک نظام مدیریت پایگاه یا چیزی مشابه آن که قابل اطمینان است و غیر وابسته به هر انتقال دیگری. بهطور کلی یک انتقال باید اتمی باشد، یعنی باید کامل و خودمختار باشد. بهطور ایدهآل، یک سیستم پایگاه باید اتمی بودن، دوام، ایزوله بودن و استحکام را ضمانت کند. در عمل این مشخصات مشخصاتی هستند برای اجرای بهتر.[۲]
هدف از تراکنش
در محصولات پایگاه داده قابلیت کنترل تراکنش کاربر را از درستی پایگاه مطمئن میکند.
یک تراکنش ممکن است از Queryهای زیادی تشکیل شده باشد که هر کدام آنها هم میخوانند، هم مینویسند. وقتی تراکنش صورت میگیرد باید مطمئن بود که چیزی از Queryها جا نمانده است. مثلاً در تراکنش مادی وقتی پول از یک حساب نقد میشود باید در حساب دیگر نیز ایجاد شود. تراکنشها نباید با هم تداخل داشته باشند. اطلاعات دقیق تر در بحث ACID میباشد.
یک انتقال ساده معمولاً با سیستم پایگاهی و در زبانی چون SQL به این شکل صورت میگیرد:
شروع انتقال
اجرای تعدادی Query (علیرغم اینکه بروز رسانی داخل پایگاه از خارج آن دیده نمیشود)
واگذاری انتقال (بروز رسانیها در صوری درستی انتقال دیده میشوند)
اگر یکی از Queryها ناموفق باشد، سیستم بازمیگردد. این عملکرد بستگی به نوع و نحوه نصب DBMS دارد. تراکنش در هر مرحله قبل از واگذاری قابلیت بازگشت دارد.
پایگاههای تراکنشی
پایگاههایی که عملیات تراکنش را Support میکنند، را گویند. بسیاری از DBMSهای جدید این امکان را دارند.
سیستمفایلهای اتراکنشی
سیستمفایل Namesys Reiser۴ برای[۳] Linux و ورژن جدید سیستمفایل Microsoft[۴] NTFS هر دو عملیات تراکنش را Support میکنند، ولی از سیستمفایلهای تراکنشی به دلیل کمی سازگاری با سیستمهای قدیمی استفاده نمیشود.