دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۷
  • اردیبهشت

جلسه ۲۰ : آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS )

  • دسته‌بندی‌ها :
جلسه ۲۰ : آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS )
    • جزئیات
    • نوع محتواآموزشی

      سلام به همه پی وی لرنی های عزیز!
      به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
      Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
      درر جلسه گذشته به آشنایی با Hashing در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ برای یک ساختار بزرگ پایگاه داده؛ جستجو برای یافتن تمام مقادیر index از طریق تمام سطح آن و سپس رسیدن به بلوک داده مقصد برای بازیابی اطلاعات مورد نظر؛ تقریباً کار خیلی خیلی سختی است. اما دست ما آنچنان هم خالی نیست! Hashing یک تکنیک مؤثر برای محاسبه محل مستقیم رکورد داده بر روی دیسک بدون استفاده از ساختار index است.
      این جلسه را به آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) اختصاص داده ایم.

      آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS )

      Transaction را می توان به عنوان گروهی از وظایف (tasks) تعریف کرد. یک وظیفه یا task واحد حداقل واحد پردازش است که نمی تواند بیشتر از آن چه هست تقسیم شود.
      بیایید با یک مثال ساده، Transaction را درک کنیم؛ فرض کنید یک کارمند بانک مبلغ ۵۰۰ تومان را از حساب A به حساب B منتقل کند. این معامله بسیار ساده و کوچک شامل چندین کار سطح پایین است.

      A’s Account

      مثال : 

      B’s Account

      مثال : 

      به عنوان نخستین موضوع در ” آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) ” بیایید با ACDI آشنا شویم و بدانیم که ACDI چیست و از چه واژه هایی ساخته شده است.

      ویژگی های ACID

      می توان به زبانی دیگر یک transaction را یک واحد کوچک از یک برنامه در نظر گرفت که ممکن است وظایف یا tasks های سطح پایینی را دربر بگیرد. یک transaction در یک سیستم پایگاه داده باید شامل ظرفیت اتمی Atomicity، ثبات Consistency، جداسازی Isolation و دوام و ماندگاری Durability باشد تا از سلامت و کامل بودن و یکپارچه بودن داده ها در آن مطمئن شد.

      • Atomicity – این ویژگی بیان می کند که یک transaction باید به عنوان یک واحد اتمی رفتار شود ، یعنی یا تمام عملیات آن انجام می شود یا هیچ کدام از آنها. در یک پایگاه داده که یک transaction تا حدی به پایان رسیده باشد؛ هیچ States نباید وجود داشته باشد. States ها باید قبل از اجرای transaction یا بعد از execution/abortion/failure انجام transaction تعریف شود.
      • Consistency – پایگاه داده باید پس از هرگونه transaction در حالت پایدار بماند. هیچ transaction نباید روی داده های ساکن در پایگاه داده اثر منفی بگذارد. اگر پایگا هداده قبل از اجرای transaction در وضعیت ثابتی قرار داشته باشد، باید پس از اجرای transaction نیز پایدار بماند.
      • Durability – پایگاه داده باید به اندازه کافی بادوام باشد تا بتواند آخرین به روزرسانی های خود را حتی در صورت عدم موفقیت و یا راه اندازی مجدد سیستم نگه دارد. اگر یک transaction یک تکه از داده ها را در یک پایگاه داده به روز کند و commits شود، آنگاه داده پایگاه داده، داده های اصلاح شده را نگه می دارد. اگر یک transaction به commits بپردازد اما سیستم قبل از نوشتن اطلاعات روی دیسک خراب شود، پس از شروع به کار سیستم ، این داده ها به روز می شوند.
      • Isolation – در سیستم پایگاه داده که بیش از یک transaction همزمان انجام می شود، ویژگی Isolation بیان می کند که کلیه transaction انجام می شود و به گونه ای انجام می شود که گویی تنها transaction در سیستم است و هیچ transaction بر وجود دیگر transaction ها تأثیر نمی گذارد.

      موضوع بعدی که در آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) آن را بررسی می کنیم؛ Serializability یا قابلیت تسلسل است.

      Serializability قابلیت تسلسل

      هنگامی که transaction های متعددی توسط یک سیستم عامل در یک محیط چند برنامه ریزی انجام می شود، این امکان وجود دارد که دستورالعمل های یک transaction با برخی transaction های دیگر در هم تنیده شود.

      • Schedule – دنباله ای از زمان اجرا از یک transaction یک برنامه Schedule نام دارد. یک Schedule می تواند transaction زیادی را در آن انجام دهد که هرکدام شامل تعدادی instructions/tasks است.
      • Serial Schedule – Serial Schedule برنامه ای است که در آن transaction به گونه ای تنظیم می شوند که ابتدا یک transaction انجام شود. وقتی transaction اول چرخه خود را کامل می کند، transaction بعدی انجام می شود. transaction ها یکی پس از دیگری ترتیب داده می شوند. به این نوع برنامه، Serial Schedule گفته می شود ، زیرا transaction ها به صورت سریالی انجام می شوند.

      در یک محیط که در آن چندین transaction حاکم است؛ Serial Schedule ها به عنوان معیار در نظر گرفته می شوند. دنباله اجرای یک دستورالعمل در یک transaction قابل تغییر نیست، اما دو transactions می توانند دستورالعمل های خود را به روشی تصادفی اجرا کنند. اگر دو transactions مستقل از یکدیگر باشند و در بخشهای مختلفی از داده ها کار کنند، این اجرا هیچ ضرری ندارد. اما اگر این دو transactions بر روی داده های یکسان کار کنند، نتایج ممکن است متفاوت باشد. این نتیجه متغیر ممکن است پایگاه داده را به وضعیت ناسازگار برساند.

      برای برطرف کردن این مشکل، اگر transactions به صورت سریالی serializable باشد یا بین آن ها رابطه معادل سازی و تعادل برقرار باشد؛ آنگاه ما اجزای اجرای، اجرای parallel execution یا اجرای موازی را می دهیم.

      در ادامه آشنایی با Transaction در سیستم مدیریت پایگاه داده بیایید برنامه معادل سازی یا Equivalence Schedules را بشناسیم.

      Equivalence Schedules برنامه های معادل سازی

      یک برنامه معادل سازی می تواند شامل موارد زیر باشد.

      Result Equivalence

      اگر دو schedule بعد از اجرا نتیجه یکسانی داشته باشند ، به آنها Result Equivalence می گویند. آنها ممکن است برای برخی از ارزش ها و نتایج متفاوت برای مجموعه ای دیگر از مقادیر نتیجه مشابه داشته باشند. به همین دلیل این معادل سازی آن ها معمولاً قابل توجه تلقی نمی شود.

      View Equivalence

      اگر transactions در هر دو schedules ، اقدامات مشابه را با روشی مشابه انجام دهند، دو برنامه می توانند برابر باشند.

      برای مثال :

      • اگر T داده های اولیه را در S1 بخواند ، سپس داده های اولیه را نیز در S2 می خواند.
      • اگر T مقادیری را که توسط J در S1 نوشته شده است بخواند، آنگاه مقداری را که توسط J در S2 نوشته شده است نیز می خواند.
      • اگر T نوشتن نهایی را روی مقدار داده در S1 انجام دهد، آنگاه نوشتن نهایی را روی مقدار داده در S2 نیز انجام می دهد.

      Conflict Equivalence معادل تعارض

      در صورت داشتن ویژگی های زیر، دو schedules متناقض محسوب می شوند.

      • هر دو متعلق به transactions های جداگانه باشند.
      • هر دو به یک مورد داده مشابه دسترسی داشته باشند.
      • حداقل یکی از آنها عملیات “write” باشد.

      گفته می شود دو schedulesکه دارای چندین transactions با عملیات متضاد هستند، conflict equivalent (معادل تعارض) نامیده می شوند اگر و فقط اگر:

      • هر دو schedules شامل مجموعه ای از Transactions ها باشند.
      • ترتیب عملیات جفت های متضاد در هر دو schedules حفظ شود.

      نکته

      schedules های View equivalent در حقیقت view serializable هستند و schedules های conflict equivalent در حقیقت conflict serializable هستند. همه schedules های conflict serializable نیز می توانند view serializable محسوب شوند.

      و به عنوان آخرین موضوع در آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) بیایید با States ها یا حالات در Transaction ها آشنا شویم.

      استیت ها یا Transactions یا States of Transactions

      یک transaction در پایگاه داده در یکی از استیت های زیر قرار بگیرد:

      آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS )

      • Active – در این استیت transaction انجام می شود. این state اولیه هر معامله است.
      • Partially Committed – هنگامی که یک transaction عملیات نهایی خود را انجام می دهد، گفته می شود که در یک در یک استیت partially committed قرار می گیرد.
      • Failed – گفته می شود که اگر هر یک از بررسی های انجام شده توسط سیستم بازیابی پایگاه داده انجام نشود ، یک transaction در حالت Failed یا خراب قرار گرفته است. یک transaction شکست خورده دیگر نمی تواند ادامه یابد.
      • Aborted – در صورتی که هر یک از بررسی ها و transaction ها به حالت failed برسد؛ در آن صورت recovery manager عملیات نوشتن خود را در پایگاه داده باز می گرداند تا پایگاه داده را به حالت اولیه خود برگرداند. منظور از حالت اولیه نیز حالتی است که پایگاه داده قبل از transaction بوده است. ماژول بازیابی پایگاه داده می تواند یکی از دو transaction را پس از قطع transaction انتخاب کند. در آن صورت:
        – transaction را دوباره آغاز کنید.
        – transaction را از بین ببرید!
      • Committed – اگر transaction تمام عملیات خود را با موفقیت انجام دهد، گفته می شود که committed است و اکنون تمام تأثیرات این transaction به طور دائم در سیستم پایگاه داده برقرار شده است.

      سخن پایانی

      در این جلسه مفصلاً به آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ Transaction را می توان به عنوان گروهی از وظایف (tasks) تعریف کرد. یک وظیفه یا task واحد حداقل واحد پردازش است که نمی تواند بیشتر از آن چه هست تقسیم شود. می توان به زبانی دیگر یک transaction را یک واحد کوچک از یک برنامه در نظر گرفت که ممکن است وظایف یا tasks های سطح پایینی را دربر بگیرد. یک transaction در یک سیستم پایگاه داده باید شامل ظرفیت اتمی Atomicity، ثبات Consistency، جداسازی Isolation و دوام و ماندگاری Durability باشد تا از سلامت و کامل بودن و یکپارچه بودن داده ها در آن مطمئن شد.
      در جلسه بعدی قرار است شما را با مفهوم Concurrency Control یا کنترل هم زمانی در سیستم مدیریت پایگاه داده آشنا نماییم.
      با پی وی لرن همراه باشید.

      QR:  جلسه ۲۰ : آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS )
      به اشتراک بگذارید


      دیدگاه کاربران

      دیدگاه ها بسته شده اند.