تعداد صفحات : 19 صفحه -
قالب بندی : word
کنترل همروندی توزیعی که بر پایه مکانیزم قفل دو مرحله ای(2 Phase Locking) ایجاد شده اند خواهیم پرداخت. محور اصلی این بررسی بر مبنای تجزیه مساله کنترل همروندی به دو حالت read-wirte و write-write میباشد. در این مقال، تعدادی از تکنیکهای همزمان سازی برای حل هر یک از قسمتهای مساله بیان شده و سپس این تکنیکها برای حل کلی مساله با یکدیگر ترکیب میشوند.
در این گزارش بر روی درستی و ساختار الگوریتمها متمرکز خواهیم شد. در این راستا برای ساختار پایگاه داده توزیعی یک سطحی از انتزاع را در نظر میگیریم تا مساله تا حد ممکن ساده سازی شود.
- مقدمه : کنترل همروندی فرآیندی است که طی آن بین دسترسی های همزمان به یک پایگاه داده در یک سیستم مدیریت پایگاه داده چند کاربره هماهنگی بوجود میآید. کنترل همروندی به کاربران اجازه میدهد تا در یک حالت چند برنامگی با سیستم تعامل داشته باشند در حالیکه رفتار سیستم از دیدگاه کاربر به نحو خواهد بود که کاربر تصور میکند در یک محیط تک برنامه در حال فعالیت است. سخت ترین حالت در این سیستم مقابله با بروز آوری های آزار دهنده ای است که یک کاربر هنگام استخراج داده توسط کاربر دیگر انجام میدهد. به دو دلیل ذیل کنترل همروندی در پایگاه داده های توزیعی از اهمیت بالایی برخوردار است:
- کاربراان ممکن است به داده هایی که در کامپیوترهای مختلف در سیستم قرار دارند دسترسی پیدا کنند.
- یک مکانیزم کنترل همروندی در یک کامپیوتر از وضعیت دسترسی در سایر کامپیوترها اطلاعی ندارد.
مساله کنترل همروندی در چندین سال قبل کاملا مورد بررسی قرار گفته است و در خصوص پایگاهدادههای متمرکز کاملا شناخته شده است. در خصوص این مسال در پایگاه داده توزیعی با توجه به اینکه مساله در حوزه مساله توزیعی قرار میگیرد بصورت مداوم راهکارهای بهبود مختلف عرضه میشود. یک تئوری ریاضی وسیع برای تحلیل این مساله ارائه شده و یک راهکار قفل دو مرحله ای به عنوان راه حل استاندارد در این خصوص ارائه شده است. بیش از 20 الگوریتم کنترل همروندی توزیعی ارائه شده است که بسیاری از آنها پیاده سازی شده و در حال استفاده میباشند.این الگوریتمها معمولا پیچیده هستند و اثبات درستی آنها بسیار سخت میباشد. یکی از دلایل اینکه این پیچیدگی وجود دارد این است که آنها در اصطلاحات مختلف بیان میشوند و بیان های مختلفی برای آنها وجود دارد. یکی از دلایل اینکه این پیچدگی وجود دارد این است که مساله از زیر قسمتهای مختلف تشکیل شده است و برای هر یک از این زیر قسمتها یک زیر الگوریتم ارائه میشود. بهترین راه برای فائق آمدن بر این پیچدگی این است که زیر مساله ها و الگوریتمهای ارائه شده برای هر یک را در ی.ک سطح از انتزاع نگاه داریم.
با بررسی الگوریتمهای مختلف میتوان به این حقیقت رسید که این الگوریتمها همگی ترکیبی از زیر الگوریتمهای محدودی هستند. در حقیقت این زیر الگوریتمها نسخههای متفاوتی از دو تکنیک اصلی در کنترل همروندی توزیعی به نامهای قفل دو مرحله ای و ترتیب برچسب زمانی میباشند.
همانطور که گفته شد، هدف کنترل همروندی مقابله با تزاحمهایی است که در اثر استفاده چند کاربر از یک سری داده واحد برای کاربران بوجود میآید است. حال ما با ارائه دو مثال در خصوص این مسائل بحث خواهیم نمود. این دو مثال از محک معروف TPC_A مقتبس شده اند. در این مثالها، یک سیستم اطلاعات را از پایگاه داده ها استخراج کرده و محاسبات لازم را انجام داده و در نهایت اطلاعات را در پایگاه داده ذخیره مینماید.
حالت اول را میتوان بروزآوری از دست رفته نامید. حالتی را تصور کنید که دو مشتری از دو سیستم مجزا بخواهند از یک حساب مالی برداشت نمایند. در این حالت فرض کنید در غیاب سیستم کنترل همروندی، هر دو با هم اقدام به خواندن اطلاعات و درج اطلاعات جدید در سیستم میکنند. در این حالت در غیاب سیستم کنترل همروندی تنها آخرین درج در سیستم ثبت میشود. این حالت در شکل 1 نشان داده شده است.
حالت دوم حالتی است که در آن اطلاعات صحیح از پایگاه داده استخراج نمیشود. در این حالت فرض کنید دو مشتری بخواهند کارهای ذیل را انجام دهند.
- مشتری 1: بخواهد یک چک 1 میلیونی را به حساب X واریز و از حساب Y برداشت نماید.
- مشتری 2: بخواهد بیلان حساب مالی X و Y شامل کل موجودی را نمایش دهد.
در غیاب کنترل همروندی همانطور که در شکل 2 نشان داده شدهاست، تزاحم بین پروسس ها بوجود خواهد آمد. فرض کنید در زمانی که مشتری 1 اطلاعات را از حساب Y خوانده و اطلاعات حساب X را دریافت نموده و 1 میلیون از حساب Y برداشت نموده ولی هنوز 1 میلیون به حساب X و اریز نکرده مشتری 2 اطلاعات کل دو حساب را دریافت نموده و نتیجه را چاپ نماید. در این حالت مشتری شماره 2 اطلاعاتی را که به عنوان بیلان نمایش میدهد 1 میلیون از مقدار واقعی کمتر است. این حالت یک فرق اساسی با حالت اول دارد و آن این است که در این حالت نتیجه نهایی در پایگاه داده درست خواهد بود در حالیکه اطلاعات دریافت شده بصورت موقت غلط خواهند بود.
مساله کنترل همروندی در پایگاه داده های توزیعی تا حدودی شبیه مساله دوبهدو ناسزگاری در سیستم عامل میباشد. در مساله دوبهدو ناسازگاری، هماهنگی جهت دسترسی به منابع سیستم ائم از حافظه، ابزارهای ورودی و خروجی و CPU و .... بوجود میآید. در این حالت راه حلهای گوناگونی ائم از قفلها، سمافورها، مونیتورها و ... پیشنهاد شده است.
کنرتل همروندی و دوبهدو ناسگاری از این جهت که هر دو دسترسی به منابع مشترک را کنترل میکنند با هم شباهت دارند. با این حال راه حلی که برای یکی بکار میرود قابل بهره برداری برای دیگری نیست. فرض کنید پردازه های P1 و P2 بخواهند از نقاط مختلف کدهای خود به منابع R1 و R2 دسترسی پیدا کنند. در سیستم عامل دسترسی مجزای ذیل قابل قبول است. P2 از R1 استفاده کند، P2 از R1 استفاده کند، P2 از R2 استفاده نموده و سپس P1 از R2 استفاده نماید. در پایگاه داده این روند اجرا مورد قبول نیست و مشکلاتی را ایجاد میکند. فرض کنید P1 بخواهد از R1 مبلغی را به R2 انتقال دهد. در این حالت اگر P2 مقادیر R1 وR2 را چک کند مقادیر غیر صحیح را دریافت میکند.
- مدل پردازش تراکنش: برای اینکه روند اجرای عملیات در سیستمهای پایگاه داده های توزیعی برای خواننده مشخص شود ما در اینجا یک مدل از پایگاه دادههای توزیعی را ارائه میدهیم. سپس نحوه عملکرد مکانیزم کنترل همروندی را در این مدل بیان خواهیم نمود. در این مدل پایگاه داده، یک پایگاه داده توزیعی مجموعه از سایتهاست که توسط یک شبکه به هم متصل شدهاند. هر سایت یک کامپیوتر است که یکی یا هر دوی برنامه های ذیل را اجرا میکند. برنامهها شامل یک مدیر تراکنش یا TM و یک مدیر داده یا DM است. TM مسئول مدیریت تعامل کاربر با پایگاه داده است و DM مسئول نگهداری دادهها است. شبکه نیز یک وسیله ارتباطی کامپیوتر – کامپیوتر است. فرض بر این است که شبکه کاملا امن میباشد و پیامها را با همان ترتیبی که وارد سیستم میشوند به مقصد ارسال میشود. فرض بر این است که تعداد داده های موجود در سیستم شامل X ، Y و Z است که داده های منطقی موجود در سیستم را تشکیل میدهند. داده های ذکر شده فقط واحد داده های منطقی هستند و ما با سایز و قالب و جزئیات آنها کاری نخواهیم داشت. هر پایگاه داده در این سیستم یک نسبت دهی مقادیر بصورت منطقی به این داده های منطقی است. هر داده منطقی میتواند در یک یا بیشتر از یک DM ذخیره شود. افزونگی داده در اثر ذخیره داده در چندین DM برای افزایش دسترسی به دادهها است. هر کپی از داده ذخیره شده آیتم داده نامیده میشود. نسخه های متعدد داده X را بصورت X1,X2,... نشان داده میشوند. کاربران با DDBMS از طریق اجرای تراکنشها تعامل دارند. تراکنشها میتوانند پرس و جو های on-line باشند که با زبان استاندارد پرس و جو ارسال شده اند. از طرفی تراکنشها میتوانند عملیاتی باشند که از طریق برنامه های نوشته شده به سیستم داده میشوند. الگوریتمهای کنترل همروندی، کاری با نوع تراکنشهای موجود در سیستم ندارند و محاسبات انحام شده در این تراکنشها تاثیری در روند این الگوریتمها ندارد. بر خلاف اینها این الگوریتمها تمام تصمیم گیری های خود را بر اساس داده هایی که این تراکنشها به آنها دسترسی پیدا میکنند انجام میدهند. دسترسی ها میتوانند از نوع خواندن یا نوشتن باشند. فرض بر این است که محاسبات در تراکنشها کامل بوده و اگر تراکنش در یک پایگاه داده به تنهایی اجرا شود، پایگاه داده در حالت صحیح و مانا قرار گرفته و نتایج کاملا صحیحی در بر خواهد داشت. مجموعه منطقی خواندنی یک تراکنش مجموعه ای از آیتمهای داده ای است که تراکنش میخواند. این امر در شکل 3 نمایش داده شده است.
صحت یک الگوریتم کنترل همروندی بر اساس نیاز کاربران به اجرای تراکنشها تعریف میشود. در اینجا میتوان دو شرط اساسی را میتوان برای اجرای صحیح تراکنشها میتوان در نظر گرفت. شرط اول این است که کاربران انتظار دارند تراکنشهایی را که در سیستم ثبت میکنند، نهایتا اجرا شود. شرط دو م این است که کاربران انتظار دارند تراکنشهای ارسالی دقیقا مانند زمانی که تراکنش در یک سیستم مجزا یا در یک محیط موازی چند برنامه، اجرا میشود اجرا شود و نتایج آن در هر دوحالت کاملا مشابه باشد. تحقق این شرایط دقیقا اهداف یک الگوریتم کنترل همروندی را مشخص میکنند. یک سیستم DDBMS چهار جزء اصلی را در برخواهد داشت: تراکنش، TM، DM و دادهها. تراکنشها با TM ارتباط دارند. TM ها با DM ها ارتباط برقرار میکنند و DM ها داده ها را مدیریت میکنند. TM ها با سایر TM ها ارتباط برقرار نمیکنند.
TM ها بر ترکانش ها و اجرای آنها نظارت میکنند. هر تراکنش در پایگاه داده های توزیعی فقط با یک TM در ارتباط است. این بدین معنا است که هر تراکنش تمام عملیات پایگاه داده خود را به TM مربوط به خود ارسال میکنند. تمامی عملیاتهای توزیعی که بایستی توسط تراکنش انجام شود توسط TM مزبور مدیریت میشود. چهار عملیات مختلف توسط واسط TM برای تراکنشها قابل تعریف است. read(x) مقدار جاری x را در وضعیت فعلی پایگاه داده های منطقی برمیگرداند. write(x,newvalue) مقدار x را در حالت جاری پایگاه دادههای منطقی به مقدار Newvalue تغییر میدهد. همچنین با استفاده از begin و end ابتدا و انتهای یک تراکنش برای یک TM مشخص میشود.
دانلود تحقیق بررسی ویژگی های الگوریتمهای کنترل همروندی توزیعی که بر پایه مکانیزم قفل دو مرحله ای