سلام به همه پی وی لرنی های عزیز!
به دوره آموزش دوره آموزش سیستم مدیریت پایگاه داده DBMS خوش آمدید.
Database Management System یا سیستم مدیریت پایگاه داده که به صورت خلاصه به آن DBMS می گویند؛ به فناوری ذخیره و بازیابی اطلاعات کاربران با حداکثر کارآیی در کنار اقدامات امنیتی مناسب اشاره دارد. در این آموزش اصول اولیه سیستم مدیریت پایگاه داده یا DBMS مانند معماری آن، مدل های داده، طرحواره داده ها، استقلال داده ها، مدل E-R، مدل رابطه، طراحی بانک اطلاعاتی رابطه ای، و ذخیره سازی و ساختار پرونده و موارد دیگر را می آموزیم.
در جلسه گذشته به آشنایی با Transaction در سیستم مدیریت پایگاه داده ( DBMS ) پرداختیم؛ Transaction را می توان به عنوان گروهی از وظایف (tasks) تعریف کرد. یک وظیفه یا task واحد حداقل واحد پردازش است که نمی تواند بیشتر از آن چه هست تقسیم شود. می توان به زبانی دیگر یک transaction را یک واحد کوچک از یک برنامه در نظر گرفت که ممکن است وظایف یا tasks های سطح پایینی را دربر بگیرد. یک transaction در یک سیستم پایگاه داده باید شامل ظرفیت اتمی Atomicity، ثبات Consistency، جداسازی Isolation و دوام و ماندگاری Durability باشد تا از سلامت و کامل بودن و یکپارچه بودن داده ها در آن مطمئن شد.
در این جلسه به بررسی موضوع هم زمانی در سیستم مدیریت پایگاه داده ( DBMS ) می پردازیم.
در یک محیط چند برنامه ای در آن چندین transactions به طور همزمان قابل اجرا هستند، کنترل همزمانی transactions ها بسیار مهم است. این جاست که از پروتکل های کنترل همزمانی یا Concurrency Control را برای اطمینان از ظرفیت اتمی atomicity و جداسازی isolation و قابلیت تسلسل serializability برای transactions های همزمان استفاده می کنیم. پروتکل های کنترل همزمان می توانند به طور گسترده به دو دسته تقسیم شوند.
سیستم های پایگاه داده مجهز به پروتکل های مبتنی بر قفل از مکانیسمی استفاده می کنند که با استفاده از آن هر transactions ای قادر به خواندن یا نوشتن داده ها نیست تا زمانی که قفل مناسبی را روی آن بدست آورد قفل ها از دو نوع هستن:
چهار نوع پروتکل قفل در دسترس است:
پروتکل های مبتنی بر قفل ساده اجازه می دهد تا transactions قبل از انجام کار نوشتن، قفل را روی هر شیء بدست آورند. transactions ممکن است بعد از انجام عملیات “نوشتن”، قفل داده را باز کنند.
Pre-claiming Lock Protocol عملیات های خود را ارزیابی می نمایند و لیستی از موارد داده را که نیاز به قفل دارند، ایجاد می کنند. قبل از شروع اجرای این دستور، transactions از قبل سیستم را برای کلیه قفله ای مورد نیاز خود درخواست می کند. اگر به همه آنها قفل ها اعطا شود ، transactions تمام قفل ها را با تمام شدن کار خود آزاد می کند. اما اگر به همه آن ها قفل اعطا نشود، transactions برگشت می یابد و منتظر می ماند تا تمام قفل ها اعطا شوند.
این پروتکل قفل کردن مرحله اجرای یک transactions را به سه قسمت تقسیم می کند. در قسمت اول ، هنگامی که transactions شروع به کار کرد ، به دنبال اجازه قفل های مورد نیاز خود می باشد. بخش دوم جایی است که transactions تمام قفل ها را بدست می آورد. به محض اینکه transactions قفل اول خود را آزاد کرد، مرحله سوم شروع می شود. در این مرحله، transaction نمی تواند قفل جدیدی را طلب کند و فقط قفل های اکتسابی را آزاد می کند.
این پروتکل دو مرحله دارد، یکی در حال رشد است یعنی جایی که همه قفل ها توسط transaction به دست می آیند. مرحله دوم در حال کاهش است یعنی جایی که قفل های transaction آزاد می شوند.
مرحله اول Strict-2PL همان ۲PL است. پس از دستیابی به تمام قفل ها در مرحله اول، transactions همچنان به صورت عادی اجرا می شود. اما برخلاف ۲PL ، Strict-2PL پس از استفاده از آن، قفل را رها نمی کند. Strict-2PL تمام قفل ها را تا زمان تعهد نگه می دارد و همه قفل ها را به طور همزمان آزاد می کند.
متداول ترین پروتکل همزمانی پروتکل مبتنی بر timestamp است. این پروتکل از system time یا logical counter به عنوان زمان سنج استفاده می کند.
پروتکل های مبتنی بر قفل Lock-based protocols، ترتیب بین جفت های متضاد را در بین transactions در زمان اجرای انجام می دهند در حالی که پروتکل های مبتنی بر Timestamp به محض ایجاد یک transactions شروع به کار می کنند.
هر transaction دارای یک بازه زمانی همراه است و ثبت ها با توجه به سن transaction تعیین می شود. transaction ایجاد شده در ساعت ۰۰۰۲ از سایر transaction های متعاقب آن قدیمی تر خواهد بود. به عنوان مثال، هر transaction ‘y’ که وارد سیستم در ۰۰۰۴ می شود دو ثانیه جدیدتر محسوب می شود. ترتیب اولویت برای transaction قدیمی تر است.
بعلاوه ، به هر مورد داده جدیدترین نشانگر زمان خواندن و نوشتن داده می شود. این به سیستم اجازه می دهد تا آخرین عملکرد “read and write” را در مورد داده انجام دهد.
پروتکل ترتیب Timestamp، مرتب سازی ، قابلیت اطمینان از serializability بودن transactions ها را در عملیات خواندن و نوشتن متناقض آنها تضمین می کند. این وظیفه سیستم پروتکل است که جفت متضاد task ها باید مطابق مقادیر زمانی transactions انجام شود.
پروتکل ثبت ترتیب Timestamp به شرح زیر عمل می کند:
این قانون در صورت بیان (TS (Ti) <W-timestamp (X، پس از آن عملیات رد می شود و Ti به عقب برگردانده می شود.
قوانین ترتیب Time-stamp را می توان اصلاح کرد تا نمای schedule مربوط به serializable شود.
در این قانون به جای این که Ti را به عقب برگردد، عملیات “write” خود نادیده گرفته می شود.
در این جلسه به بررسی موضوع هم زمانی در سیستم مدیریت پایگاه داده پرداختیم؛ از پروتکل های کنترل همزمانی یا Concurrency Control را برای اطمینان از ظرفیت اتمی atomicity و جداسازی isolation و قابلیت تسلسل serializability برای transactions های همزمان استفاده می کنیم.
در جلسه بعدی می خواهیم به کار با Deadlock در DBMS بپردازیم.
با پی وی لرن همراه باشید.