چکیده

اجرای همزمان تراکنش ها در سیستم های توزیع شده می تواند موجب بروز ناسازگاری میان آن ها شود .الگوریتم های کنترل همروندی برای اطمینان از صحت اجرای موازی چندین تراکنش که بر روی یک داده مشترک کار می کنند مورد استفاده قرار می گیرند کنترل همروندی یکی از مسائل مهم در پایگاه های داده توزیع شده به حساب می آید.در این مقاله ما راهبردی برای پایگاه داده های پارتیشن بندی شده و پایگاه داده های حافظه اصلی مطرح کرده ایم و همچنین یک معیار درستی و یک پروتکل کنترلی همروندی پیشنهاد می دهیم که قابلیت کار با حجم زیادی از داده در شبکه را داردو درمقایسه کلی این راهبردها در هر سه این پایگاه داده ها از استفاده بهینه از cpuو،سرعت تراکنش ووابستگی تراکنش ها به هم به عنوان معیار مصحت این راهبردها استفاده نموده ایم.

کلمات کلیدی:کنترل همروندی،پایگاه داده ها

.۱ مقدمه

پایگاه داده ها به کنترل همروندی برای نمایش اجرای سریال تراکنش ها تکیه می کنند در حالیکه چند تراکنش را به صورت همزمان اجرا کنند

.در این گزارش ما به بررسی کنترل همروندی تراکنش ها بر روی پایگاه داده های مختلف و همچنین کنترل همروندی بر روی پایگاه داده های توزیع شده بر روی یک شبکه می پردازیم.

در بخش دوم این گزارش تراکنشهایی را بررسی می کنیم که به پارتیشن هایی مسیریابی می شوند که شامل داده هایی هستند که باید به آنها دسترسی پیدا کنند.اگر هر تراکنش تنها در یک پارتیشن اجرا شود تراکنش می تواند بدون کنترل همروندی اجرا شود اما اگر تعدادی تراکنش داشته باشد که چند پارتیشن را در برگیرد به شکلی از کنترل همروندی نیاز می باشد که دو طرح را در این خصوص بررسی نموده ایم اولی روش حدسی است که قفل گذاری ندارد وزمانی این تراکنش حدسی اجرا می شود که یک تراکنش چند پارتیشنیt دریک پارتیشن خاتمه یابد اما منتظر تکمیل پارتیشن های شرکت کننده دیگر باشد طرح دوم قفل گذاری دو مرحله ایست که فقط تراکنش های چند پارتیشنی فعال را در بر می گیردو داده را به هنگام دسترسی، قفل و آزاد می کند.]۶[در بخش سوم به بررسی کنترل همروندی برای حجم کارهای OLTPدر پایگاه داده های حافظه اصلی که از روش های کنترل همروندی چند ورژنی MVCC که شامل دو مکانیسم می باشد یکی خوش بین که به تایید تاکید دارد و دیگری بدبین و به قفل گذاری تاکید دارد،می پردازیم.[۹]

پایگاه داده توزیع شده، یک مجموعه شامل چندین پایگاه داده می باشد که این پایگاه داده ها از نظر منطقی با یکدیگر برروی یک شبکه همبستگی دارند. سیستم مدیریت DBMS باید به طور دوره ای پایگاه های پراکنده را همگام سازد تا مطمئن شود که داده ها با همه آنها سازگارند در واقع در بخش چهارم یک معماری کلی از چگونگی تعامل پایگاه داده ها در یک شبکه ارائه می شود.استفاده از پروتکل های قدیمی برای این سایتها غیر ممکن است و نیاز به معماری جدید بوسیله زیر ساختهای شبکه می باشد که چالش های مربوط به این پروتکل شامل هماهنگ سازی و وجود ناهمگنی است زیرا برخی سایتها ممکن است برای کنترل همروندی پیاده سازی قفل را انجام دهند در حالیکه سایت های دیگر ممکن است بر

اساس پروتکل خوش بین پیاده سازی شوند بنابراین عدم تجانس و هماهنگی تراکنش ها، یک مساله پیچیده در معماری شبکه می شود.که مایک پروتکل همروند به عنوان معیار و استاندارد شبکه کنترل همروندی معرفی می کنیم[۷] راهبردهای کنترل همروندی در موقعیت ها ی با رقابت بالا و یا پایین هریک از این محیط ها با مزایا و معایبی نسبت بهم همراه می باشد که در بخش پنجم به مقایسه کلی آنها می پردازیم و در بخش آخر به نتیجه گیری و بحث می پردازیم.

۰۲کنترل همروندی درتراکنش های پارتیشن بندی شده:

برای بهره گیری از چند ماشین فیزیکی و چند CPU، داده ها را باید به پارتیشن های مجزا تقسیم کرد. هر پارتیشن، تراکنش ها را به طور مستقل اجرا می کند. چالش، تقسیم داده های کاربرد به گونه ای است که هر تراکنش تنها به یک پارتیشن دسترسی داشته باش، اما اگر طرح پارتیشن بندی%۱۰۰ کارایی داشته باشد یعنی کاری کند همه تراکنش ها تنها به یک پارتیشن دسترسی داشته باشند، آنگاه هماهنگی میان چند پارتیشن برای تراکنش های چند پارتیشنی باعث واماندگی دیتابیس می شود .[۱۰,۸,۳] وقتی یک مشتری تعیین می کند که یک درخواست ،یک تراکنش تک پارتیشنی است، آن را به پارتیشن اصلی که مسئول داده هاست ارسال می کند. پارتیشن اصلی از یک پروتوکل تکرار پشتیبانی اصلی برای تضمین استفاده می کند. در موارد بدون خرابی، پارتیشن اصلی، درخواست دیتابیس را می خواند و یک کپی به پشتیبان ها ارسال می کند. پارتیشن اصلی درحال انتظار برای تایید، تراکنش را اجرا می کند. از آنجایی که یک تراکنش تک پارتیشنی است، مسدود نمی شود. وقتی همه تاییدهای پشتیبان ها دریافت شدند، نتیجه تراکنش به مشتری ارسال می شود. بنابراین به هیچ کنترل همروندی برای اجرای تراکنش های تک پارتیشنی نیست. به طور کلی، تراکنش چند پارتیشنی می تواند وابستگی های داده اختیاری بین قطعات تراکنش ها داشته باشد. برای مثال، ممکن

است نیاز باشد یک تراکنش یک مقدار ذخیره شده در پارتیشن

P1

را بخواند تا یک مقدار در پارتیشن

P2

بروز شود.

برای تضمین اینکه تراکنش های چند پارتیشنی به صورت سریالی و بدون بن بست اجرا می شوند، آنها را به هماهنگ کننده مرکزی ارسال می کنیم، که به آنها یک ترتیب سراسری تخصیص می دهد. هنگام اجرای تراکنش های چند پارتیشنی، واماندگی های دیتابیس می تواند هنگام انتظار برای پارتیشن های دیگر اتفاق بیفتد. بنابراین به نوعی کنترل همروندی برای اینکه موتور، کار مفید انجام دهد نیاز است دو طرح کنترل همروندی که برای اشاره به این موضوع توسعه داده ایم را توصیف می کنیم.[۱]

۱-۲ اجرای حدسی

این طرح کنترل همروندی، تراکنش هایی که به صف شده اند را به صورت حدسی اجرا می کند به بیان دقیق تر وقتی آخرین قطعه یک تراکنش چند پارتیشنی اجرا شد، پارتیشن باید منتظر بماند و ببیند آیا تراکنش خاتمه می یابد یا قطع می شود. در اکثر موارد، خاتمه می یابد. بنابراین هنگام انتظار برای تکمیل ، می توانیم تراکنش هایی که به صف شده اند را اجرا کنیم. نتایج این تراکنش ها که به صورت حدسی اجرا شده اند را نمی توان به خارج از پایگاه داده ارسال کرد، زیرا اگر تراکنش اول قطع شود، نتایج تراکنش هایی که به صورت حدسی اجرا شده اند ممکن است نادرست باشد. اطلاعات پوچ و خراب را باید برای معاملات حدسی ثبت کرد، بنابراین در صورت نیاز می توان آنها را به عقب کشید. اگر اولین تراکنش خاتمه یابد همه تراکنش هایی که حدسی اجراا شده فورا خاتمه میابد.

۲-۲ قفل سازی

در طرح قفل سازی، تراکنش ها به قفل های رید و رایت در آیتم های داده هنگام اجرا نیاز دارند، و اگر یک درخواست، قفل مغایر بگیرد، معلق می شوند. تراکنش ها باید اطلاعات خراب را ثبت کنند تا در موارد بن بست، به عقب کشیده شوند. قفل سازی اجازه می دهد یک پارتیشن، تراکنش های غیرمغایر را طی واماندگی های دیتابیس برای تراکنش های چند پارتیشنی اجرا و خاتمه دهد. قفل ها تضمین می کنند که نتایج معادل اجرای تراکنش به ترتیب سریالی هستند.وقتی سیستم قفل سازی ما هیچ تراکنش فعالی ندارد و یک تراکنش تک پارتیشنی دریافت می کند،

تراکنش را می توان بدون قفل و اطلاعات خراب اجرا کرد،زیرا هیچ تراکنش فعالی وجود ندارد که بتواند باعث مغایرت شود، طرح قفل سازی ما پروتوکل دو مرحله ای را دنبال می کند. از آنجایی که تضمین می شود این یک تراکنش سریال که می توان مرتب کرد تولید می کند، مشتریان، تراکنش های چند پارتیشنی را مستقیما به پارتیشن ها ارسال می کنند، بدون اینکه وارد هماهنگ کننده مرکزی شوند. وقتی هیچ مغایرت قفلی وجود ندارد، این کارآمدتر است، زیرا نهفتگی دیتابیس را کاهش می دهد و یک فرایند اضافی را از سیستم حذف می کند. اما امکان بن بست توزیع شده را به وجود می آورد. که از شناسایی چرخه برای رفع بن بست های محلی استفاده می کند و از وقفه برای رفع بن بست توزیع شده استفاده می کند.