دسته بندی | آمار |
بازدید ها | 0 |
فرمت فایل | doc |
حجم فایل | 79 کیلو بایت |
تعداد صفحات فایل | 16 |
پروژه آماری الگوریتمهای کنترل همروندی در 16 صفحه ورد قابل ویرایش
چکیده : در این گزارش ما به بررسی ویژگی های الگوریتمهای کنترل همروندی توزیعی که بر پایه مکانیزم قفل دو مرحله ای(2 Phase Locking) ایجاد شده اند خواهیم پرداخت. محور اصلی این بررسی بر مبنای تجزیه مساله کنترل همروندی به دو حالت read-wirte و write-write میباشد. در این مقال، تعدادی از تکنیکهای همزمان سازی برای حل هر یک از قسمتهای مساله بیان شده و سپس این تکنیکها برای حل کلی مساله با یکدیگر ترکیب میشوند.
در این گزارش بر روی درستی و ساختار الگوریتمها متمرکز خواهیم شد. در این راستا برای ساختار پایگاه داده توزیعی یک سطحی از انتزاع را در نظر میگیریم تا مساله تا حد ممکن ساده سازی شود.
1. مقدمه : کنترل همروندی فرآیندی است که طی آن بین دسترسی های همزمان به یک پایگاه داده در یک سیستم مدیریت پایگاه داده چند کاربره هماهنگی بوجود میآید. کنترل همروندی به کاربران اجازه میدهد تا در یک حالت چند برنامگی با سیستم تعامل داشته باشند در حالیکه رفتار سیستم از دیدگاه کاربر به نحو خواهد بود که کاربر تصور میکند در یک محیط تک برنامه در حال فعالیت است. سخت ترین حالت در این سیستم مقابله با بروز آوری های آزار دهنده ای است که یک کاربر هنگام استخراج داده توسط کاربر دیگر انجام میدهد. به دو دلیل ذیل کنترل همروندی در پایگاه داده های توزیعی از اهمیت بالایی برخوردار است:
کاربراان ممکن است به داده هایی که در کامپیوترهای مختلف در سیستم قرار دارند دسترسی پیدا کنند.
یک مکانیزم کنترل همروندی در یک کامپیوتر از وضعیت دسترسی در سایر کامپیوترها اطلاعی ندارد.
مساله کنترل همروندی در چندین سال قبل کاملا مورد بررسی قرار گفته است و در خصوص پایگاهدادههای متمرکز کاملا شناخته شده است. در خصوص این مسال در پایگاه داده توزیعی با توجه به اینکه مساله در حوزه مساله توزیعی قرار میگیرد بصورت مداوم راهکارهای بهبود مختلف عرضه میشود. یک تئوری ریاضی وسیع برای تحلیل این مساله ارائه شده و یک راهکار قفل دو مرحله ای به عنوان راه حل استاندارد در این خصوص ارائه شده است. بیش از 20 الگوریتم کنترل همروندی توزیعی ارائه شده است که بسیاری از آنها پیاده سازی شده و در حال استفاده میباشند.این الگوریتمها معمولا پیچیده هستند و اثبات درستی آنها بسیار سخت میباشد. یکی از دلایل اینکه این پیچیدگی وجود دارد این است که آنها در اصطلاحات مختلف بیان میشوند و بیان های مختلفی برای آنها وجود دارد. یکی از دلایل اینکه این پیچدگی وجود دارد این است که مساله از زیر قسمتهای مختلف تشکیل شده است و برای هر یک از این زیر قسمتها یک زیر الگوریتم ارائه میشود. بهترین راه برای فائق آمدن بر این پیچدگی این است که زیر مساله ها و الگوریتمهای ارائه شده برای هر یک را در ی.ک سطح از انتزاع نگاه داریم.
با بررسی الگوریتمهای مختلف میتوان به این حقیقت رسید که این الگوریتمها همگی ترکیبی از زیر الگوریتمهای محدودی هستند. در حقیقت این زیر الگوریتمها نسخههای متفاوتی از دو تکنیک اصلی در کنترل همروندی توزیعی به نامهای قفل دو مرحله ای و ترتیب برچسب زمانی میباشند.
همانطور که گفته شد، هدف کنترل همروندی مقابله با تزاحمهایی است که در اثر استفاده چند کاربر از یک سری داده واحد برای کاربران بوجود میآید است. حال ما با ارائه دو مثال در خصوص این مسائل بحث خواهیم نمود. این دو مثال از محک معروف TPC_A مقتبس شده اند. در این مثالها، یک سیستم اطلاعات را از پایگاه داده ها استخراج کرده و محاسبات لازم را انجام داده و در نهایت اطلاعات را در پایگاه داده ذخیره مینماید.
حالت اول را میتوان بروزآوری از دست رفته نامید. حالتی را تصور کنید که دو مشتری از دو سیستم مجزا بخواهند از یک حساب مالی برداشت نمایند. در این حالت فرض کنید در غیاب سیستم کنترل همروندی، هر دو با هم اقدام به خواندن اطلاعات و درج اطلاعات جدید در سیستم میکنند. در این حالت در غیاب سیستم کنترل همروندی تنها آخرین درج در سیستم ثبت میشود. این حالت در شکل 1 نشان داده شده است.
6-قفل دو مرحلهای با نسخه اولیه : قفل دو مرحلهای با نسخه اولیه یک تکنیک از نوع قفله دو مرحلهای است که که به افزونگی داده توجه خاصی دارد. یک کپی از هر داده منطقی به عنوان یک کپی یا نسخه اولیه از داده مزبور مطرح میشود. قبل از دسترسی به هر گونه کپی از داده های منطقی، قفل صحیح باید از کپی اولیه اخذ شود.
برای قفلهای خواندنی این روش تعامل و ارتباطات بیشتری را نیاز دارد.فرض کنید که T یک تراکنش باشد که بخواهد داده x را بخواند. در اینصورت اگر X1 کپی اولیه از x باشد و xi برای خواندن توسط تراکنش در دسترس باشد، تراکنش بایستی با x1 که کپی اولیه داده است تعامل داشته و قفل خود را بدست آورد و پس از آن نیز با تعامل با xi داده مورد نظر خود را از Xi بخواند. برای قفلهای نوشتنی بر عکس پیاده سازی پایه قفل دو مرحله ای تراکنش احتیاجی به تعامل بیشتر با سایر dm ها ندارد. در پیاده سازی پایه قفل دو مرحله ای، اگر یک تراکنش میخواست داده x را بروز کند، لازم بود تا بر تمامی نسخه های x قفل نوشتنی بزند و سپس عمل نوشتن را بر روی تمامی نسخه های x انجام دهد اما در اینجا فقط لازم است که تراکنش قفل نوشتن را بر روی کپی اولیه قرار دهد و در صورت بدست آوردن قفل، باید عملیات نوشتن را مانند روش قبل بر روی تمامی نسخه های x انجام دهد.
6-قفل دو مرحلهای با رای گیری : قفل دو مرحله ای با رای گیری پیادهسازی دیگری از روشهای قفل دو مرحله ای است که در آن افزونگی داده بیشتر مد نظر قرار گرفته است. این روش شکل تغییر یافته الگوریتم توافق اکثریت توماس است و تنها برای همزمان سازیهای ww مناسب است.
برای فهم بهتر این روش بهتر است آنرا در داخل روش two phase commit توصیف کنیم. فرض کنید یک تراکنش بخواهد بر روی داده x مقدار جدیدی را بنویسد، در اینصورت درخواست قفل به تمامی نسخه های داده x ارسال شود. در صورتیکه قفل قابل تخصیص باشد، DM دریافت کننده قفل بایستی یک پیام تخصیص قفل صادر نماید. در صورتیکه قفل قابل تخصیص نباشد نیز یک پیام بلوکه شدن در خواست قفل ارسال میگردد. در صورتیکه پیامها از dm های مختلف برگشت داده شد، حال tm ارسال کننده درخواست قفل اقدام به تصمیمگیری مینماید. در صورتیکه تعداد قفلهای اخذ شده دارای اکثریت باشند، آنگاه tm دقیقا مانند حالتی عمل میکند که قفلهای لازم را بر روی نسخه داده ای مزبور بدست آورده است. در این حالت tm باقی عملیات یعنی نوشتن بر روی داده مزبور را انجام میدهد. در صورتیکه قفلهای لازم بر روی داده مورد نظر به تعداد اکثریت نباشد، Tm منتظر دریافت پاسخ تخصیص قفل از dm هایی که پاسخ بلوکه شدن قفل را ارسال نمودند، میشود. در این حالت با دریافت پاسخ جدید از dm هایی که قبلا درخواست را بلوکه کردند، tm تعداد قفلهای لازم را بررسی میکند. در صورت اخذ اکثریت آرا، اجرای خود را ادامه میدهد. از آنجائیکه فقط یک تراکنش میتواند در هر لحظه اکثریت قفلهای نوشتن را بدست آورد در نتیجه فقط در هر لحظه فقط بک تراکنش میتواند بر روی اطلاعات تغییرات اعمال نماید. در هر لحظه فقط یک تراکنش میتواند در فاز نوشتن خود قرار داشته باشد. در نتیجه تمامی نسخه های x دارای یک ترتیب مشخص و مشترک از مقادیر میباشند. نقطه قفل یک تراگنش جایی است که یک تراکنش توانسته است اکثریت قفلهای لازم را برای نوشتن برای هر آیتم دادهای در مجموعه نوشتاری خود بدست آورد. برای بروز آوری های با حجم بالا ، تراکنش بایستی اکثریت قفلهای نوشتن را بر روی تمامی آیتمهای داده ای نوشتنی خود قبل از ارسال دستورات نوشتن بدست آورد.
در حقیقت، قفل دو مرحله ای با رای گیری میتواند برای همزمان سازی عملیات های rw سازگار شود. برای اینکار برای خواندن یک نسخه دادهای بایستی قفل خواندن از تمامی نسخه های داده ای درخواست شود. در صورتیکه اکثریت قفل خواندن از dm ها بدست آید میتواند اطلاعات مورد نظر را بخواند. این روش روش بسیار خوب و قدرتمندی است ولی در این روش برای خواندن یک آیتم داده ای بایستی از تمامی سایتهایی که دارای یک نسخه از آیتم دادهای مذکور هستند قفل خواندن اخذ شود که عملا سیستم را بسیار کند میکند.
7- قفل دو مرحلهای متمرکز : بجاری توزیع نمودن زمانبندها بر روی سایتهای مختلف، همه زمانبندها را بر روی یک سایت متمرکز خواهیم نمود. در این خالت اگر یک تراکنش بخواهد به یک داده x دسترسی پیدا کند باید از سایت مذکور درخواست قفل مناسب بر روی داده مذکور نماید. در این وضعیت داده ممکن است بر روی یک سایت غیر از سایت زمانبند مرکزی قرار داشته باشد.
فرض کنید تراکنشt بخواهد داده x را بخواند در اینصورت بایستی t یک قفل خواندن را از سایت مرکزی درخواست نماید. در این حالت اگر قفل تخصیص داده شود تراکنش میتواند اطلاعات را از یکی از سایتهایی که دارای xهستند درخواست نماید. در غیر اینصورت باید منتظر دریافت مجوز تخصیص ثقفل خواندن از سوی سایت زمانبند مرکزی باشد. در حالتی که داده x بر روی سایت مرکزی زمانبند نیز باشد، درخواست قفل و داده بطور مشترک به سایت مرکزی ارسال میشود، در صورتیکه قفل قابل تخصیص باشد، عملیات خواندن به همراه تخصیص قفل انجام میشود. برای عملیات بروز آوری و نوشتن نیز فرآیند تخصیص قفل به همین نحو است با این تفاوت که بعد از تخصیص قفل و اعلام به درخواست کننده از سوی سایت مرکزی زمانبندی، سایت درخواست کننده موظف است تمامی کپی های نسخه های اطلاعاتی را بروز نماید. این روش نیز مانند قفل دو مرحلهای کپی اولیه مستلزم نقل و انتقال مضاعف پیام میباشد.