تراکنش ها (Transactions) Dr. Fatemeh Ahmadi-Abkenari February 2013 Advanced Database تراکنش ( )Transaction 2 تعاريف تراکنش عبارت است از واحد اجرای برنامه ای که به داده های ذخيره شده.
Download
Report
Transcript تراکنش ها (Transactions) Dr. Fatemeh Ahmadi-Abkenari February 2013 Advanced Database تراکنش ( )Transaction 2 تعاريف تراکنش عبارت است از واحد اجرای برنامه ای که به داده های ذخيره شده.
تراکنش ها
(Transactions)
Dr. Fatemeh Ahmadi-Abkenari
February 2013
Advanced Database
تراکنش ()Transaction
2
تعاريف
تراکنش عبارت است از واحد اجرای برنامه ای که به داده های ذخيره شده دستيابی دارد و ممکن است آنها را تغيير
دهد.
تراکنش عبارت است از عمل های مرتبط به يکديگر که اجرای آنها تغييری در پايگاه داده ها ايجاد می کند و دارای
خواص ACIDباشد( .خواص ACIDدر ادامه مورد بحث قرار خواهد گرفت).
تراکنش عبارت است از واحد منطقی کار در پايگاه داده ها .اين واحد لزوما يک عمل ساده ()single action
نيست بلکه می تواند دنباله ای از عمل های ساده باشد .اما انجام درست اين واحد منطقی کار سبب می شود تا
پايگاه داده ها از يک حالت سازگار به حالت سازگار ديگر درآيد.
تراکنش عبارت است از يک اجرای برنامه که از دنباله ای از عمل های خواندن و نوشتن تشکيل شده است.
پايگاه داده پيشرفته
بيان رسمی تراکنش
3
در تراکنش مفروض ، Tiعمل ) Oij(Dنشان دهنده ی عمل Ojاز تراکنش Tiروی داده ذخيره شده ی Dدر
پايگاه داده است .با فرض در نظر گرفتن عمل های تراکنش Tiبه خواندن و نوشتن و صرف نظر از عمليات پردازش ی
خواهيم داشت:
}Oij ε {R, W
حال اگر OSiمجموعه ی همه ی عمل های تراکنش Tiباشد خواهيم داشت:
اگر Niنشان دهنده ی وضع پايان تراکنش Tiباشد خواهيم داشت:
}OSi = {Oij : j>=0
}Ni ε {A, C
)(A: Abort, C: Commit
برای سادگی نمايش رسمی تراکنش ،گاه تراکنش را فقط با مجموعه ی عمل هايش نمايش می دهند:
}Ti = {R(D1), R(D2), W(D1), C
)Sequence( ) و توالیSchedule( برنامه زمانی،تراکنش ها
4
op1,1 op1,2
T1
Local
Variables
T2
op2,1 op2,2
Local
Variables
Transaction Schedule
op1,1 op2,1 op2,2 op1,2
DBMS
Sequence: an arbitrary merge
of two sequences or the order
of operations arriving at the
database
پايگاه داده پيشرفته
خواص ACIDتراکنش
5
خواص ACIDتراکنش عبارت اند از:
Atomicity
(تجزيه ناپذيری)
Consistency
(سازگاری)
Isolation
(جدايي)
Durability
(ماندگاری)
پايگاه داده پيشرفته
تجزيه ناپذيری ()Atomicity
6
سيستم بايد اطمينان حاصل کند که تراکنش يا با موفقيت به انتها رسيده و کامل شده است و يا در
صورت کامل نشدن ،هيچ تغيير و تاثيری در سيستم نداشته به صورتی که انگار هرگز آغاز نشده بود.
اجرای يک تراکنش با خصوصيت تجزيه ناپذيری به اين اصل داللت دارد که يک تراکنش يا تثبيت
( )Commitمی شود و کامل می گردد و يا طرد و دچار خاتمه غير عادی ( )Abortمی گردد.
خصوصيت تجزيه ناپذيری به اصل يا همه يا هيچ داللت دارد به اين معنا که اگر در حين اجرای تراکنش،
بروز مشکلی سبب توقف اجرای آن شود بخش اجرا شده ی تراکنش ،اجرانشده تلقی می_ شود.
پايگاه داده پيشرفته
تجزيه ناپذيری ()Atomicity
7
زمانی که يک تراکنش با خاتمه ی غير عادی ( )Abortمواجه می شود سيستم پايگاه داده بايد اطمينان
حاصل کند که هر تغييری که تراکنش مزبور در پايگاه ايجاد کرده بود (عملياتی مانند نوشتن و بهنگام
سازی) خنثی شده ( )Undoو يا واگردانده ( )Rolled backمی شود که سيستم پردازش تراکنش با
عمليات با مکانيزم های پيچيده ای برای اين منظور سروکار دارد.
خصوصيت تجزيه ناپذيری به اصل داللت دارد که وضعيت ميانه در سيستم بی معنی است به اين
مفهوم که در يک سيستم ثبت نام دانشجويان ،يک دانشجو برای يک درس يا ثبت نام کرده است و يا
ثبت نام نکرده است .در اين حالت ،ثبت نام نيمه کامل ( )Partial Registrationبی معنی است و
پايگاه را در وضعيت ناسازگار ( )Inconsistent Stateقرار می دهد.
پايگاه داده پيشرفته
سازگاری ()Consistency
8
پايگاه داده زمانی در حالت سازگار ( )Consistentبه سر می برد که تمام قواعد و محدوديت
های جامعيتی ( )Integrity Constrainsدر آن رعايت شده باشد .از اين رو اجرای کامل يک
تراکنش و تثبيت آن بايد منجر به نتيجه ای درست و سازگار شود و پايگاه را از يک وضعيت سازگار
به يک وضعيت سازگار ديگر ببرد.
بنابراين پايگاه داده درست پس از اجراشدن يک تراکنش (قطعی شدن و تثبيت تراکنش و اجرای
دستور )Commitبايد در حالت سازگار قرار داشته باشد .از اين رو اجرای دستور Commit
توسط تراکنش به معنای سازگار بودن نتيجه حاصل از اجرای آن است.
پايگاه داده پيشرفته
جدايی ()Isolation
9
اين خصوصيت داللت بر استقالل کامل تراکنش ها از يکديگر دارد حتی اگر چند تراکنش بطور همروند
( )Concurrentاجرا شوند .بنابراين تا زمانی که يک تراکنش به مرحله ی تثبيت ( )Commitنرسيده
باشد وضعيت داخلی و ميانی آن ( )Intermediate Stateبرای تراکنش های ديگر مخفی باقی خواهد
ماند.
بنا براين اصل حتی اگر تراکنش ها به صورت همروند اجرا شوند تاثير آنها بر روی سيستم مانند اين
خواهد بود که تراکنش ها به صورت سريال اجرا شده باشند.
معموال اين خصوصيت با وادار کردن تراکنش ها به اخذ قفل ( )Lock Obtainingبر روی آيتم های
پايگاه محقق می شود .بنابراين تا زمان رها کردن قفل توسط تراکنش دارنده قفل ،تراکنش های ديگر نمی
توانند به آيتم قفل شده دسترس ی داشته باشند .بديهی است کارايی سيستم در صورتی که يک آيتم به
مدت طوالنی توسط يک تراکنش قفل شود کاهش می يابد.
پايگاه داده پيشرفته
ماندگاری ()Durability
10
سيستم بايد اطمينان حاصل کند که زمانی که يک تراکنش با موفقيت به انتها رسيده و تثبيت شده است
تاثير عمل های آن در سيستم پايگاه داده باقی می ماند حتی اگر دستگاهی که داده ها بر روی آن ذخيره
شده دچار مشکل ( )Failشود.
ماندگاری تراکنش ها می تواند از طريق ذخيره ی همراه با افزونگی داده ها ( )Data Redundancyبر
روی دستگاه های پشتيبان بدست آيد.
به عنوان مثال اگر يک دانشجو برای يک درس ثبت نام کرد و تراکنش تثبيت شد انتظار می رود که
سيستم پايگاه داده اين اصل را حتی علی رغم مشکالت و شکست های سخت افزاری و يا نرم افزاری به
خاطر داشته باشد.
پايگاه داده پيشرفته
مدل های تراکنش
11
فاکتورهای گوناگونی برای رده بندی تراکنش ها وجود دارد از جمله:
مدت زمان اجرا
ترتيب خواندن و نوشتن
تعداد سطوح
از نظر مدت زمان اجرا ،تراکنش ها به دو دسته ی تراکنش های کوتاه ()Short Life Transaction
و تراکنش های طوالنی ( )Long Life Transactionتقسيم بندی می شوند .تراکنش کوتاه دارای
زمان اجرا و زمان پاسخ دهی کوتاهی است که در حدود چند ثانيه يا چند دقيقه است مانند عمليات
بانکی از دستگاه های خودپرداز .در حالی که تراکنش های طوالنی دارای زمان اجرای حداقل چند دقيقه
تا چند ساعت هستند مانند برنامه های پردازش صوت و تصوير.
پايگاه داده پيشرفته
مدل های تراکنش – بر اساس ترتيب خواندن و نوشتن
12
به منظور رده بندی تراکنش ها بر اساس ترتيب خواندن و نوشتن ،تراکنش ها به انواع زير طبقه بندی
می شوند:
تراکنش عمومی
تراکنش دو مرحله ای
)(Two steps
تراکنش محدود شده
)(Restricted
تراکنش دو مرحله ای محدود
شده
)(Restricted two steps
پايگاه داده پيشرفته
مدل های تراکنش – بر اساس ترتيب خواندن و نوشتن
13
تراکنش عمومی تراکنش ی است که در آن دستورهای خواندن و نوشتن از ترتيب خاص ی پيروی نمی کند.
مانند
}T1 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), W(D4), C
تراکنش دو مرحله ای تراکنش ی است که در آن تمام دستورهای خواندن پيش از عمل های نوشتن اجرا
می شوند .مانند
}T2 = {R(D1), R(D2), R(D3), W(D1), W(D3), W(D2), W(D4), C
تراکنش محدودشده (يا نوشتن مقيد( ))Constrained Writeتراکنش ی است که در آن هر فقره
داده ی Dبايد پيش از بهنگام شدن خوانده شود .مانند
}T3 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), R(D4), W(D4), C
پايگاه داده پيشرفته
مدل های تراکنش – بر اساس ترتيب خواندن و نوشتن
14
تراکنش می تواند دو مرحله ای و محدودشده نيز باشد .مانند
}T4 = {R(D1), R(D2), R(D3), R(D4), W(D1), W(D3), W(D2), W(D4), C
تراکنش ممکن است براساس مدل عمل ( )Action Modelکار کند در آن هر جفت عمل خواندن و
نوشتن يک فقره داده بايد بی فاصله و در پی هم انجام شود .مانند
}T5 = {[R(D1), W(D1)], [R(D2), W(D2)], [R(D3), W(D3)], [R(D4), W(D4)], C
اگر تراکنش ی بی آنکه داده ای را بخواند آنرا بنويسد می گوييم نوشتن کور ( )Blind Writeانجام
شده است .مانند نوشتن فقره داده ی .D4
}T6 = {R(D1), R(D2), W(D2), R(D3), W(D1), W(D3), W(D4), C
پايگاه داده پيشرفته
مدل های تراکنش – بر اساس تعداد سطوح
15
به منظور رده بندی تراکنش ها بر اساس تعداد سطوح ،تراکنش ها به انواع زير طبقه بندی می
شوند:
تراکنش مسطح
)(Flat Transaction
تراکنش تودرتو
)(Nested Transaction
تراکنش توزيع شده
)(Distributed Transaction
تراکنش بسيار بلند
)(Saga Transaction
تراکنش مسطح ،که خود شامل هر تعداد عمل ( )Actionمی تواند باشد يک نقطه آغاز و يک نقطه
پايان دارد .اين نوع تراکنش برای عمليات پيچيده مناسب نيست.
BEGIN TRANSACTION
مانند:
پايگاه داده پيشرفته
action 1
action 2
…..
action i
END TRANSACTION
مدل های تراکنش – بر اساس تعداد سطوح
16
در تراکنش تودرتو هر تراکنش از تعدادی زيرتراکنش مرتبط به هم تشکيل شده است بنابراين
تراکنش اصلی در واقع درخت يا سلسله مراتبی از تراکنش ها را تشکيل می دهد .از اين رو چند نقطه
آغاز و پايان به چشم می خورد .زير تراکنش ها به صورت همروند ( )Concurrentانجام می
شوند .تراکنش های تودرتو به عنوان مبنايی برای مدل های پيچيده تر تراکنش بکار می رود.
پايگاه داده پيشرفته
BEGIN TRANSACTION T1
…..
BEGIN TRANSACTION T2
…..
BEGIN TRANSACTION T3
…..
) END TRANSACTION T3 (COMMIT T3
…..
BEGIN TRANSACTION T4
…..
) END TRANSACTION T4 (COMMIT T4
…..
) END TRANSACTION T2 (COMMIT T2
…..
) END TRANSACTION T1 (COMMIT T1
مدل های تراکنش – بر اساس تعداد سطوح
17
تراکنش توزيع شده يک تراکنش از نوع مسطح است که در محيطی توزيع شده اجرا می گردد .در يک تراکنش
تودرتو ،وظايف مابين زيرتراکنش ها ( )Sub Transactionsتقسيم می شود حال آنکه در تراکنش توزيع
شده ،داده ها در سايت های گوناگون توزيع می شوند.
تراکنش بسيار بلند يک تراکنش از نوع تودرتو است که بر مفهوم تراکنش جبرانگر ( Compensating
)Transactionمبتنی است .به اين صورت که در اثر عدم اجرای کامل تراکنش ها ،تراکنش های جبرانگر
که به ازای هر زيرتراکنش وجود دارند اجرا می شوند .تراکنش های جبرانگر قادرند اثر اجرای تراکنش های
ناکامل و طرد شده ( )Abortedرا خنثی کنند .در اين نوع از تراکنش ،خاصيت جدايی برقرار نيست و تراکنش
می تواند نتيجه بينابينی خود را در اختيار ساير تراکنش های همروند قرار دهد.
يک نوع ديگر از تراکنش ها به تراکنش های زنجيره ای ( )Chainedموسوم هستند .اين ها مجموعه ای از
تراکنش ها هستند که در پی هم اجرا شده به گونه ای که کامل شدن يک تراکنش و شروع تراکنش بعدی يک
عمل تجزيه نشدنی تلقی می گردد و بنابراين از سربار دستور شروع تراکنش اجتناب می شود.
پايگاه داده پيشرفته
تکنيک نقطه نگهداشت ()Save Point
18
اين اصل که بايد يا همه ی تراکنش تا پايان انجام شود و يا در صورت ناکامل بودن تراکنش ،سيستم به
شرايطی برگردد که انگار تراکنش اصال شروع نشده است در بعض ی از کاربردها به ويژه زمانی که تراکنش های
يک دامنه ،طوالنی هستند مفيد نيست .برای حل اين مشکل ،راهکار save pointيا نقطه نگهداشت معرفی
شده است.
برای ايجاد نقطه نگهداشت ،تابعی مانند Save Work Functionتوسط سيستم اجرا شده و وضعيت
جاری داده های سيستم را ذخيره می سازد که دارای يک شناسه است .برنامه می تواند با درخواست
Rollback Workو دادن شناسه به Save Pointمورد نظر برگردد که اين واگرد ممکن است جزيی
( )Partialو يا سراسری ( )Globalباشد .می توان نقاط Save Pointرا در حافظه ماندگار نگهداشت که
در اين صورت به آن نقطه نگهداشت پايا ( )Persistent Save Pointمی گويند.
پايگاه داده پيشرفته
19
برای مطالعه بيشتر
1- Database Systems An Application Oriented Approach
Chapter 18, ACID Properties of Transactions.
Chapter 19, Models of Transactions.
Michael Kifer, Arthur Bernstein, Philip M. Lewis
Pearson Addison Wesley Publication, 2006.
.) سيستم مديريت پايگاه داده ها (مفاهيم و تکنيک ها-2
. تراکنش،فصل اول
. سيد محمد تقی روحانی رانکوهی:تاليف
.1386 ،13 مجموعه دانش و فن کامپيوتر،انتشارات جلوه
پايگاه داده پيشرفته