معاملات یک مفهوم اساسی از تمام سیستم های پایگاه داده است. نکته اساسی یک معامله این است که چندین مرحله را در یک عملیات واحد و همه یا هیچ انجام می دهد. کشورهای میانی بین مراحل برای سایر معاملات همزمان قابل مشاهده نیستند و اگر برخی از شکست ها رخ دهد که مانع از تکمیل معامله شود هیچ یک از مراحل بر پایگاه داده تاثیر نمی گذارد.
به عنوان مثال یک پایگاه داده بانکی را در نظر بگیرید که شامل مانده حساب های مختلف مشتری و همچنین کل مانده سپرده برای شعب است. فرض کنید که ما می خواهیم برای ثبت پرداخت $100.00 از حساب الیس به حساب باب. ساده ظالمانه, دستورات اس کیو ال برای این ممکن است مانند نگاه:
نکته مهم این است که چندین به روز رسانی جداگانه برای انجام این عملیات نسبتا ساده وجود دارد. افسران بانک ما می خواهند اطمینان حاصل کنند که یا همه این به روزرسانی ها اتفاق می افتد یا هیچ کدام اتفاق نمی افتد. این قطعا نمی خواهد برای یک شکست سیستم منجر به باب دریافت do 100.00 بود که از الیس بدهکار نیست. و نه الیس طولانی باقی می ماند یک مشتری خوشحال اگر او بدون باب بودن اعتبار بدهکار شد. ما نیاز به یک تضمین می کنند که اگر چیزی را اشتباه پاره راه از طریق عملیات می رود, هیچ یک از مراحل اجرا تا کنون اثر را. گروه بندی به روزرسانی ها در یک معامله این ضمانت را به ما می دهد. گفته می شود یک معامله اتمی است : از نظر سایر معاملات یا به طور کامل اتفاق می افتد یا اصلا اتفاق نمی افتد.
ما همچنین می خواهیم تضمین کنیم که پس از اتمام تراکنش و تصدیق توسط سیستم پایگاه داده, در واقع برای همیشه ثبت شده است و حتی اگر به زودی خرابی رخ دهد از بین نخواهد رفت. مثلا, اگر ما در حال ضبط یک خروج پول نقد توسط باب, ما هیچ شانس که بدهی به حساب خود را در یک تصادف ناپدید می شوند فقط پس از او پیاده می رود از درب بانک را نمی خواهم. یک پایگاه داده تراکنش تضمین می کند که تمام به روزرسانی های انجام شده توسط یک تراکنش قبل از گزارش کامل تراکنش در ذخیره سازی ثابت (یعنی روی دیسک) وارد می شوند.
یکی دیگر از ویژگیهای مهم پایگاه دادههای معاملاتی ارتباط تنگاتنگی با مفهوم بهروزرسانیهای اتمی دارد: زمانی که تراکنشهای متعدد به صورت همزمان اجرا میشوند هر یک نباید بتواند تغییرات ناقص ایجاد شده توسط دیگران را ببیند. مثلا اگر یک تراکنش در مجموع تمام تراکنشهای شعبه را مشغول کند شامل بدهی شعبه الیس نمیشود بلکه اعتبار شعبه باب را شامل نمیشود و برعکس. بنابراین تراکنش ها نه تنها از نظر اثر همیشگی بر روی پایگاه داده بلکه از نظر دید نیز باید همه یا هیچ باشند. به روزرسانی هایی که تاکنون توسط یک تراکنش باز انجام شده است برای سایر تراکنش ها قابل مشاهده نیست تا زمانی که تراکنش کامل شود و در نتیجه همه به روزرسانی ها به طور همزمان قابل مشاهده می شوند.
یک معامله با احاطه دستورات اس کیو ال معامله با دستورات شروع و متعهد تنظیم می شود. بنابراین معامله بانکی ما در واقع به نظر می رسد:
اگر, بخشی از طریق معامله, ما تصمیم می گیرید ما نمی خواهیم به ارتکاب (شاید ما فقط متوجه شدم که تعادل الیس منفی رفت), ما می توانیم عقبگرد فرمان به جای ارتکاب صدور , و تمام به روز رسانی ما تا کنون لغو خواهد شد.
در واقع هر بیانیه اس کیو ال را به عنوان یک معامله اجرا می کند. اگر شما شروع به کار نمی کنید, سپس هر یک از بیانیه های فردی دارای یک ضمنی شروع و (اگر موفق) مرتکب پیچیده در اطراف خود. گروهی از اظهارات احاطه شده توسط شروع و مرتکب گاهی اوقات بلوک معامله نامیده می شود .
برخی از کتابخانه های مشتری به طور خودکار دستورات را شروع و مرتکب می شوند تا بتوانید اثر بلوک های معامله را بدون درخواست دریافت کنید. اسناد مربوط به رابط کاربری مورد استفاده خود را بررسی کنید.
این امکان وجود دارد که اظهارات را در یک معامله به صورت دانه ای تر از طریق استفاده از نقاط ذخیره کنترل کنید . نقاط ذخیره به شما این امکان را می دهد که به طور انتخابی بخش هایی از معامله را کنار بگذارید و در عین حال بقیه را مرتکب شوید. پس از تعریف یک نقطه ذخیره با نقطه ذخیره , شما می توانید در صورت نیاز رول به نقطه ذخیره با عقبگرد به . تمام تغییرات پایگاه داده تراکنش بین تعریف نقطه ذخیره و برگشت به نقطه ذخیره دور انداخته می شوند اما تغییرات زودتر از نقطه ذخیره حفظ می شوند.
پس از بازگشت به یک نقطه ذخیره, همچنان تعریف می شود, بنابراین می توانید چندین بار به عقب برگردید. برعکس, اگر اطمینان دارید که دیگر نیازی به بازگشت به یک نقطه ذخیره خاص ندارید, می تواند منتشر شود, بنابراین سیستم می تواند برخی منابع را رایگان کند. به خاطر داشته باشید که یا رها کردن یا بازگشت به یک نقطه ذخیره به طور خودکار تمام نقاط ذخیره ای را که بعد از این تعریف شده اند رها می کند.
همه اینها در بلوک تراکنش اتفاق میافتد بنابراین هیچکدام از این بخشها برای سایر جلسات پایگاه داده قابل مشاهده نیستند. هنگامی که و اگر شما مرتکب بلوک معامله, اقدامات متعهد به عنوان یک واحد به جلسات دیگر قابل مشاهده تبدیل, در حالی که اقدامات نورد تماس هرگز قابل مشاهده در همه تبدیل.
به یاد پایگاه داده بانک, فرض کنید ما بدهکار 1 100.00 از حساب الیس, و حساب اعتباری باب, تنها برای پیدا کردن بعد که ما باید حساب والی اعتبار. ما می توانیم این کار را با استفاده از نقاط ذخیره مانند این انجام دهیم:
این مثال البته بیش از حد ساده شده است اما کنترل زیادی در یک بلوک تراکنش از طریق استفاده از نقاط ذخیره وجود دارد. علاوه بر این, عقبگرد به تنها راه برای بازگرداندن کنترل یک بلوک معامله است که توسط سیستم به دلیل خطا در حالت سقط قرار داده شده است, کوتاه از نورد به طور کامل و دوباره شروع.
قبلی | Up | بعدی |
3.3. کلیدهای خارجی | خانه | 3.5. توابع پنجره |
ثبت تصحیح
اگر شما هر چیزی را ببینید در اسناد و مدارک است که درست نیست, تجربه خود را با ویژگی های خاص مطابقت ندارد و یا نیاز به روشن شدن بیشتر, لطفا با استفاده از این فرم به گزارش یک موضوع اسناد و مدارک.