تحقیق در مورد الگوریتم های تخصیص داده پویا در سیستم های پایگاه داده توزیعی


در حال بارگذاری
23 اکتبر 2022
فایل ورد و پاورپوینت
2120
4 بازدید
۷۹,۷۰۰ تومان
خرید

توجه : به همراه فایل word این محصول فایل پاورپوینت (PowerPoint) و اسلاید های آن به صورت هدیه ارائه خواهد شد

 تحقیق در مورد الگوریتم های تخصیص داده پویا در سیستم های پایگاه داده توزیعی دارای ۲۴ صفحه می باشد و دارای تنظیمات در microsoft word می باشد و آماده پرینت یا چاپ است

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

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


بخشی از متن تحقیق در مورد الگوریتم های تخصیص داده پویا در سیستم های پایگاه داده توزیعی :

الگوریتم های تخصیص داده پویا
در سیستم های پایگاه داده توزیعی

مقدمه
پیشرفت در تکنولوژیهای شبکه و پایگاه داده در دهه های اخیر منجر به ایجاد سیستم های پایگاه داده توزیع شده گشته است .یک سیستم پایگاه داده توزیع شده مجموعه ای از سایتها می باشد که از طریق شبکه به هم متصل شده اند که هر کدام از سایت ها پایگاه داده مخصوص به خود دارد اما می توانند با یکدیگر کار کنند بنابراین هر کاربری در هر سایتی می تواند به همه داده های موجود در شبکه دسترسی داشته باشد درست مانند اینکه همه داده ها در سایت کاربر ذخیره شده است .

دغدغه اصلی سیستم های پایگاه داده توزیع شده قطعه قطعه کردن و تخصیص پایگاه داده اصلی می باشد واحد قطعه داده می تواند یک فایل باشد که در این حالت موضوع تخصیص همان تخصیص فایل خواهد بود مشکل تخصیص داده یک مسئله NP-complete می باشد بنابراین نیاز به هیوریستیکهای سریع برای تولید راه حل های موثر می باشد علاوه بر اینها تخصیص بهینه اشیا پایگاه داده به طور شدید بستگی به استراتژی اجرای پرس وجو که به وسیله پایگاه داده توزیع شده پیاده سازی شده دارد .

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

الگوریتم های استاتیک :
مسئله تخصیص داده به طور کلی یک مسئله NP-complete می باشد و نیازمند هیوریستکهایی میباشد که راه حل سریع و با کیفیت بالا تولید کند. گسترش یک هیوریستیک موثر بستگی به استراتژی اجرای پرس و جویی دارد که توسط سیستمهای پایگاه داده توزیع شده بکار گرفته می شود که به این دلیل است که استراتژی مختلف اجرای پرس و جو الگو های مختلف انتقال داده متفاوت دارند[۱۰] . الگوریتم تخصیص داده پارامترهای زیر را به عنوان ورودی می گیرد : ۱ – گراف وابستگی قطعه داده ۲- هزینه انتقال واحد داده ای بین سایتها ۳ – محدودیتهای تخصیص روی تعداد قطعه داده که می تواند به سایت تخصیص داده شود ۴ – تعداد تکرار اجرای پرس و جو از سایتها[۴]
گراف وابستگی قطعه داده یک گراف بدون سیکل جهت دار می باشد که در ریشه آن سایت اجرای پرس و جو قرار دارد و سایر نودها نودهای قطعه داده می باشد که ممکن است توسط پرس و جو مورد دسترسی قرار گیرد و این گراف وابستگی قطعه داده وابستگی بین قطعه داده و مقدار داده ای که بایستی موقع اجرای پرس و جو منتقل شود را مدل می کند .

شکل ۱ : گراف وابستگی قطعه داده

الگوریتم ژنتیک

فرض کنید ri,j نشان دهنده نیازمندی سایت i به قطعه داده j می باشد ، و هر قطعه داده i بوسیله اندازه اش مشخص می شود که با si نشان داده می شود و ti,j نشان دهنده هزینه ای است که سایت i متحمل می شود تا به قطعه داده که در سایت j وجود دارد دسترسی پیدا کند مشکل تخصیص در سیستم های پایگاه داده توزیع شده پیدا کردن راه حلی است که داده ها طوری در سایت های موجود استقرار یابند که برای دسترسی به آنها کمترین هزینه را متحمل شویم . این بدین معناست که ما عمل جایگزینی

P = {p1, p2, p3,..,pj, ;,pn} ( که pj=i نشان دهنده قطعه داده j است که در سایت i واقع شده است) برای n قطعه داده پیدا می کنیم بنابراین هر سایتی از ظرفیت خودش سرریز نمی شود و
ri,j sj <= ci,j i | 1<=i<=m و ri,j ti,pj کمینه می شود.
با محدود کردن استفاده از نیازمندیهای ماتریس و هزینه انتقال صفر مسئله تخصیص پایگاه داده توزیع شده به مسئله bin packing تبدیل می شود که یک مسئله NP-complete می باشد.

الگوریتم ژنتیک یک تکنیک جستجوی تطابقی می باشد که بر پایه اصول و مکانیزمهای انتخاب طبیعی و survival of the fittest از سیر تکاملی تدریجی می باشد با شبیه سازی سیر تکاملی طبیعی الگوریتم ژنتیک می تواند به طور موثر حوزه مسئله را جستجو کند و به راحتی مسائل مشکل را حل کند . الگوریتم ژنتیک با تولید یک population اولیه شروع به کار می کند ، P (t = 0) ، و هر کدام از اعضای خود را با تابع هدف ارزیابی می کند تا موقعی که شرایط پایانی فراهم نشود یک قسمت از population انتخاب ، ارزیابی و برگردانده میشود به population.[12]

الگوریتم ژنتیک برای مسئله تخصیص داده به صورت زیر می باشد :
۱- population را مقداردهی اوایه کن هر کدام از population های انفرادی اتصال نمایش دودویی تخصیص تصادفی اولیه هر قطعه داده می یاشد.
۲- Population را ارزیابی کن.
۳- تعداد generation=0

۴- تا وقتی که no of generation < MAX GENERATION انجام بده
۵- Individual ها را از population بعدی انتخاب کن

۶- Crossover و Mutation را برای Individual ها انتخاب شده انجام بده
۷- Population را ارزیابی کن
۸- تعداد generation را یکی اضافه کن
۹- اتمام حلقه While

۱۰- تخصیص نهایی را با انتخاب fittest individual مشخص می کند اگر تخصیص نهایی قابل امکان نباشد سایتی که از نظر قطعه داده بار اضافی دارد بار آن را به سایتی منتقل می کند که کمترین هزینه انتقال را دارد .

الگوریتم ژنتیک نسبت به استفاده از هیوریستیک حریصانه روی مسئله اختصاص قطعه داده با سایزهای مختلف کارایی بیشتری دارد . هیوریستیک حریصانه زمان و تلاش زیادی برای پیاده سازی نیاز دارد در حالیکه الگوریتم عمومی ساده می باشد .[۱۲]

الگوریتم Simulated Evolution :
تفاوت اصلی الگوریتم ژنتیک با الگوریتم Simulated Evolution این است که اولی روی crossover دارد که یک مکانیزم احتمالی می باشد و که برای تبادل اطلاعات بین راه حلها برای شناسایی بهترین راه حل مناسب می باشد در حالیکه دومی از mutation به عنوان مکانیزم جستجوی اولیه استفاده می کند. علاوه بر اینها در شمای مطرح شده نمایش chromosomal بر پایه مشکل داده می باشد و راه حل با استفاده از هیوریستیک کدگذاری ( هیوریستیک نگاشت ) به منظور نگاشت از حوزه مسئله به حوزه راه حل تولید شده است . این الگوریتم به صورت زیر است :[۷]

۱- اولین chromosome را براساس مسئله داده تولید کن و این chromosome را برای تولید population اولیه تغییر بده.
۲- از هیوریستیک نگاشت برای تولید راه حل برای هر chromosome استفاده کن.
۳- راه حل بدست آمده را ارزیابی کن
۴- تعداد generation=0
۵- تا وقتی که no of generations < MAX GENERATION انجام بده

۶- Chromosome ها را برای population بعدی انتخاب کن
۷- برای این مجموعه کروموزوم ها crossover و mutation انجام بده
۸- از هیوریستیک نگاشت برای تولید راه حل برای هر chromosome استفاده کن.

۹- راه حل بدست آمده را ارزیابی کن
۱۰- تعداد generation ها را یکی اضافه کن
۱۱- پایان حلقه While
۱۲- بهترین راه حل پیدا شده تاکنون را به خروجی ببر

هیوریستیک نگاشت
برای هر کروموزوم یک راه حل با تخصیص قطعه داده j با الویت بالا برای سایت i پیدا می کنیم طوریکه u’i j برای تمام u’x j, 1<x <m کوچکترین باشد. اگر حد تخصیص موثر برای یک ژن موجود در قسمت a کروموزوم برای یک سایت فراتر رود ما این قطعه داده را به سایتی اختصاص می دهیم که u’ij اش کمترین مقدار بعدی ( هزینه تخصیص قطعه داده j به سایت i ) برای تمام u’yj, 1< y <m, y x باشد.این واقعیت که هر قطعه داده به یک سایت تخصیص داده می شود گارانتی می شود برای اینکه هر بار چک می شود حد تخصیص کلی بزرگتر یا مساوی تعداد قطعه های داده برای هر نسل از کروموزوم ها باشد. سپس می توانیم این فرایند را برای هر قطعه داده با الویت بالا بین قطعه داده های دیگر که هنوز به سایتی تخصیص داده نشده ادامه پیدا می کند.[۹]

الگوریتم The Mean Field Annealing (MFA) :
تکنیک Mean Field Annealing ویژگی محاسباتی بهم پیوسته شبکه عصبی Hopfield را با
simulated annealing ترکیب می کند .MFA ابتدا برای حل مشکل فروشنده دوره گرد به جای استفاده از الگوریتم HHN که نمی توانست مسئله با اندازه بزرگ را حل کند مطرح گردید MFA یک راه حل عمومی است که می تواند برای حل مسئله های بهینه سازی ترکیبی مختلف استفاده شود.

شبکه عصبی Hopfield

الگوریتم MFA به صورت زیر است :
۱ temperature اولیه را بدست آور قرار بده T=T0
۲. میانگین spin ها را مقداردهی اولیه کن s = [s00, s01, . . . , sk1,m1 هر si j با یک عدد تصادفی بین ۰ و ۱ مقداردهی اولیه می شود
۳ تا وقتی که temperature در بازه cooling می باشد انجام بده
۴ تا وقتی که E کاهش می یابد انجام بده
۵ قطعه داده i را به صورت تصادفی انتخاب کن
۶ Mean field ، spin ها را در ردیف i محاسبه کن برای مثال : i j , j
۷. مجموع روبرو را محاسبه کن: eij/T
۸. مقدار spin جدید را در ردیف i محاسبه کن

۹ تغییرات انرژی را به خاطر این بروزرسانی های جدید محاسبه کن
۱۰ پایان حلقه While
۱۱. temperature ، T را مطابق با زمانبندی cooling بروز کن
۱۲ پایان حلقه While

۱۳ تخصیص نهایی را با تخصیص هر قطعه داده به سایت با توجه به مقدار spin بزرگ مشخص کن . اگر تخصیص نهایی قابل امکان نباشد سایتی که قطعه داده اضافی دارد این قطعه داده را به سایتی منتقل کن که کمترین هزینه را داشته باشد.[۳]

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

د را موقعی به اتمام می رساند که یا تعداد قدمهای جستجوی آن به یک مقدار مشخص برسد و یا اینکه بعد از تعدادی قدم بهبودی حاصل نشود کیفیت راه حل در الگوریتم جستجوی همسایگی بطور شدیدی بستگی به راه حل همسایگی دارد الگوریتم برای مسئله تخصیص داده به صورت زیر می باشد:
۱ از Divisive-Clustering برای پیدا کردن تخصیص اولیه Initial Alloc استفاده کن

۲ Best Alloc = Initial Alloc
۳. New Alloc = Best Alloc; iteration = 0
تکرار کن
۴ searchstep = 0; counter = 0
تکرار کن
۵ به طور تصادفی دو سایت از Initial Alloc انتخاب کن
۶ به طور تصادفی دو قطعه داده از هر سایت انتخاب کن
۷ این دو قطعه داده را با هم تبادل کن
۸ اگر هزینه کاهش پیدا کرد آنگاه

خود را با این تبادل انطباق بده و counter را مساوی صفر قرار بده
در غیر این صورت undo کن و counter را یکی اضافه کن
تا وقتی که ++searchstep > MAXSTEP OR counter > MARGIN

۹ اگر cost(New Alloc) < cost(Best Alloc) آنگاه
Best Alloc = New Alloc

۱۰ دو قطعه داده از دو سایت مجزا که به طور تصادفی از New Alloc انتخاب شده اند را با هم تبادل کن
تا وقتی که iteration > MAXITERATION [10]

به طور کلی SE و GA راه حلهای بهتری نسبت به RS و MFA تولید می کنند الگوریتم RS پیچیدگی زمانی کمتری دارد بنابراین الگوریتم سریعی می باشد ولی الگوریتم SE کند می باشد برای حوزه هایی که بایستی سریع عمل کنیم و جواب بهینه مدنظر نمی باشد الگوریتم RS گزینه مناسبی می باشد ولی اگر کارایی و کیفیت راه حل اهمیت داشته باشد الگوریتم GA گزینه مناسب می باشد بنابراین داشتن همه این الگوریتم ها در

سیستم پایگاه داده توزیع شده باعث می شود که راه حلهای متنوع داشته باشیم و این راه حلها یک trade-off بین پیچیدگی و کیفیت می باشد.
در [۱۰] برای تخصیص قطعه داده یک متدی طراحی شده که نیازمندیهای خوشه کردن سایتها و تعیین تخ

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

الگوریتم تخصیص پویا :

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

الگوریتم شمارنده ساده
در این الگوریتم با استفاده از یک شمارنده که تعداد دسترسی از هر سایت به هر بلاک را نگهداری می کند استفاده می شود برای اینکه مشخص شود کی تخصیص مجدد مورد نیاز می باشد شمارنده برای هر بلاک فقط در یکی از سایتهای موجود در سیستم پایگاه داده توزیع شده نگهداری می شود
برای مثال فرض کنید پارتیشن A در سایت ۱ قرار دارد در سیستمی با تعداد سایتهای N ، سایت ۱ N شمارنده برای پارتیشن A نگهداری می کند . الگوریتم شمارنده ساده سایتهایی که به این قطعه داده دسترسی پیدا می کنند را رتبه بندی می کند و بهترین سایت را انتخاب می کند این الگوریتم به صورت زیر می باشد:[۳]

الگوریتم شمارنده ساده :
۱ یک فرایند state در بازه های زمانی منظم شمارنده ها را برای هر بلاک چک میکند
۲ سطرهای یک بلاک در صورتی که شمارنده مربوط به آن بلاک در یک سایت بیشتر از سایتی باشد که بلاک هم اکنون در آن قرار دارد به آن سایت منتقل می شود
۳ بعد از چک کردن شمارنده بلاک ها ، فرایند state قبل از چک کردن دوباره شمارنده ها برای تعداد t-check از تراکنشها که قرار است کامل شوند صبر می کند

شکل ۲ : الگوریتم شمارنده ساده

در این الگوریتم فرایند وضعیت فرایندی می باشد که برای هر تراکنش اطلاعات آماری مانند توان عملیاتی و میانگین زمان پاسخ و قسمتی از تراکنش کهنیازمند دسترسی به داده ای که در سایت دیگر ذخیره شده را نگهداری می کند بایستی توجه داشته باشیم که مقدار t-check به اندازه کافی کوچک باشد تا سیستم در مقابل تغییرات بار واکنش سریع نشان دهد همچنین باید به اندازه کافی بزرگ باشد تا این تعداد تکرار دسترسی به یک بلاک که در یک سایت مشخص قرار دارد به یک مقدار ثابت برسد و بتوان از روی آن تصمیم گیری کرد که بلاک باید به کدام سایت منتقل شود . مشخص کردن اینکه آیا یک بلاک بایستی به سایت دیگر منتقل شود یا نه یک تصمیم محلی می باشد به همین دلیل شمارنده هر بلاک در سایتی قرار داده می شود که بلاک هم در همان سایت قرار دارد . این الگوریتم بر الگوریتم های تخصیص داده استاتیک برتری دارد.[۳]

الگوریتم Load Sensitive counter :
الگوریتم شمارنده ساده وقتی که توزیع قطعه های داده در سایتها متعادل باشد خوب کار می کند ولی اگر یک سایت به تعداد بلاک های زیادی دسترسی پیدا کند این الگوریتم همه این بلاکها را در این سایت قرار می دهد و باعث می شود بخاطر بار اضافی پردازنده و دیسک موجود در این سایت کارایی پایین بیاید الگوریتم Load Sensitive counter با در نظر گرفتن شرایط بار این مشکل را حل می کند بدون این الگوریتم اگر بلاکهای زیادی در یک سایت قرار گیرد همزمانی اجرای بین تراکنشها کاهش پیدا می کند و توان عملیاتی کاهش پیدا می کند . این الگوریتم بر الگوریتم شمارنده ساده و الگوریتم های استاتیک برتری دارد و به صورت زیر می باشد:[۵]

الگوریتم Load Sensitive counter :
۱. هم بر تعداد دسترسی ها و هم بر بار (توازن داده) در سیستم نظارت کن
۲ اینکه بلاک داده بایستی منتقل شود یا نه مانند الگوریتم شمارنده ساده می باشد با این تفاوت که بلاک ها در صورتی منتقل می شوند که مقدار بلاک ذخیره شده در آن سایت از یک مقدار آستانه ای بالاتر نرود . پارامترهای الگوریتم عبارتند از : مقدار بلاک داده بیشینه ای که یک سایت می تواند در خود ذخیره کن و مقدار آستانه ای بار
شکل ۳ : الگوریتم Load Sensitive counter

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

شکل ۴ :چهارچوب incremental growth

الگوریتم Threshold
در این روش قطعه داده افقی ، عمودی یا ترکیبی از اینها می تواند استفاده شود و واحدهای تخصیص می تواند به اندازه رکورد یا صفت باشد.
همانطور که قبلاً گفتیم در سیستم های پایگاه داده توزیع شده با قرار دادن قطعه داده ها در سایتهایی که بیشترین دسترسی به این قطعه داده دارند کارایی افزایش پیدا می کند . مشکل اساسی ما این است که برای یک قطعه داده بتوانیم سایت مناسب را پیدا کنیم یک راه حل این مشکل این است که برای یک

قطعه داده خاص تعداد دسترسی تمام سایتها را بشماریم آن سایتی که بیشترین دسترسی به این قطعه داده را داشته باشد اولین کاندید برای ذخیره سازی آن می باشد. برای این کار یک ماتریس m*n در نظر می گیریم که m نشان دهنده تعداد قطعه های داده و n نشان دهنده تعداد سایتها می باشد که در این ماتریس هر عنصر sij از S نشان دهنده تعداد دسترسی های سایت j به نود i می باشد.[۸]

ابتدا همه قطعه های داده با استفاده از یکی از روشها بین نودها توزیع می شوند سپس هر نود j الگوریتم optimal را برای هر قطعه داده i که در آن نود ذخیره شده اجرا می کند.
الگوریتم optimal به صورت زیر می باشد:

الگوریتم optimal :
۱. برای هر قطعه داده که به صورت محلی ذخیره شده سطر شمارنده دسترسی را برابر ۰ قرار بده ( Sik=0 که k=1,2,…,n )
۲. درخواست دسترسی به قطعه داده ذخیره شده را پراسس کن
۳ شمارنده دسترسی نودی که به این قطعه داده دسترسی پیدا کرده را یکی افزایش بده ( اگر نود x به قطعه داده i دسترسی پیدا کند قرار بده six=six+1 )
۴. اگر نودی که به آن دسترسی شده همان نود جاری باشد که قطعه داده در آن قرار دارد برو به مرحله ۲ ( دسترسی محلی )
۵ اگر شمارنده نود دور بیشتر از نودی باشد که قطعه داده در آن قرار دارد مالکیت این قطعه داده همراه با آرایه مربوط به آن را به نود دور منتقل کن ( اگر نود x به قطعه داده i دسترسی پیدا کند و six>sij باشد قطعه داده i را به نود x بفرست )
۶ برو به مرحله ۲

شکل ۵ : الگوریتم Optimal

مزیت الگوریتم Optimal استقلال نود مرکزی می باشد بدین معنا که چون هر نود الگوریتم را به طور خودکار اجرا می کند هیچ وابستگی به نود مرکزی وجود ندارد و تمامی نودها اهمیت یکسان دارند. هر زمان که یک نود خراب شود الگوریتم می تواند به عملیات خود به عملیات خود البته بدون وجود قطعه داده موجود در این سایت ادامه دهد.[۶]
الگوریتم optimal دارای دو عیب می باشد : اول اینکه مشکل ذخیره سازی بالقوه وجود دارد با کاهش اندازه قطعه داده یا افزایش تعداد نودها اندازه ماتریس شمارنده دسترسی افزایش پیدا می کند و این افزایش سایز ماتریس باعث می شود که به فضای ذخیره سازی زیادی نیاز داشته باشیم. مشکل دوم مشکل مقیاس بندی برای نوع داده ای است که مقادیر شمارنده دسترسی را ذخیره می کنند . چون مقدار شمارنده دسترسی بطور مداوم افزایش پیدا می کند ممکن است موجب ناهنجاری شود . مشکل بالقوه وقت یعنی زمان انتقال قطعه های داده از یک سایت به سایت دیگر نیز وجود دارد و ممکن است به صورت نمایی افزایش پیدا کند . در الگوریتم Threshold فقط یک شمارنده برای برای هر قطعه داده ذخیره می شود در مقایسه با الگوریتم Optimal این الگوریتم فضای ذخیره سازی کمتری نیاز دارد چون برای هر قطعه داده فقط یک شمارنده ذخیره می شود دو استراتژی برای انتخاب سایت ای که قرار است یک قطعه داده در آن قرار گیرد وجود دارد : یا این به صورت تصادفی انتخاب شود و یا نودی که آخرین دسترسی را داشته است انتخاب شود در استراتژی اولین نودی که انتخاب می شود ممکن است نودی باشد که قبلاً هرگز به این قطعه داده دسترسی نداشته بود بنابراین استفاده از استراتژی دوم منطقی تر می باشد .
در ابتدا قطعه های داده به طور تصادفی با استفاده از یک متد در بین نودها توزیع می شود. یک مقدار آستانه t انتخاب می شود ، سپس هر نود j برای هر قطعه داده i که در آن ذخیره شده است الگوریتم Threshold را اجرا می کند این الگوریتم به صورت زیر می باشد:[۴]

الگوریتم Threshold :
۱. برای هر قطعه داده که به صورت محلی ذحیره شده مقدار شمارنده را برابر صفر قرار بده ( برای هر قطعه داده i قرار بده si=0 )
۲. درخواست دسترسی به قطعه داده را پراسس کن.
۳ اگر این دسترسی یک دسترسی محلی باشد مقدار شمارنده این قطعه داده را دوباره صفر کن ( اگر نود j به قطعه داده i دسترسی پیدا کند قرار بده si=0 ) برو به مرحله ۲
۴ اگر این دسترسی یک دسترسی دور باشد شمارنده مربوط به این قطعه داده را یکی افزایش بده ( اگر قطعه داده i به صورت دور دسترسی شود قرار بده si=si+1
۵. اگر شمارنده این قطعه داده از مقدار حد آستانه بیشتر باشد این شمارنده را صفر کن و آن را به نود دور منتقل کن ( اگر si>t قرار بده si=0 و قطعه داده را به نود دور منتقل کن)
۶ برو به مرحله ۲

شکل ۵ : الگوریتم Threshold

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

الگوریتم Near Neighborhood Allocation با حد آستانه نسبی (RTNNA):
الگوریتمNNA حالت خاصی از الگوریتم Optimal می باشد در الگوریتم optimal تمام قطعه های داده با استفاده از یک متد استاتیک بین تمام سایتها توزیع می شود سپس هر نود j برای قطعه داده i الگوریتم optimal را مطابق شکل ۴ اجرا می کند . مشکل این الگوریتم ( optimal ) این است که اگر الگوهای تکرار دسترسی به قطعه های داده زیاد باشد زمان زیادی برای انتقال قطعه های داده به نودهای مختلف صرف می شود بنابراین زمان پاسخ و تاخیر افزایش پیدا می کند در الگوریتم NNA این مشکل حل می شود در الگوریتم NNA شرایط لازم برای اینکه قطعه داده منتقل شود درست مانند الگوریتم optimal می باشد اما مقصد یعنی محلی که قرار است داده به آن منتقل شود فرق می کند در این روش توپولوژی شبکه و مسیریابی برای مشخص کردن مقصد در نظر گرفته می شود به عبارت دیگر مقصد قطعه داده ای که می خواهد منتقل شود نودی می باشد که همسایه نود مبدا است و این نود همسایه یعنی نودی که قرار است قطعه داده به آن منتقل شود در مسیری قرار دارد که نودهای موجود در این مسیر بیشترین دسترسی به این قطعه داده را دارند در این الگوریتم ( NNA ) از الگوریتم link state برای مسیربابی استفاده شده است با استفاده از این روش انتقال مکرر قطعه های داده به دلیل اینکه این قطعه های داده در نودی قرار می گیرد که برای همه نودهایی که به این قطعه داده دسترسی دارند هزینه دسترسی میانگین دارد کاهش مییابد بنابراین تاخیر این انتقالات کاهش می یابد و زمان پاسخ بهتر می شود [۱۱]در الگوریتم NNA یک حد آستانه ای که مقدار آن برابر ۵ بود برای انتقال قطعه های داده در نظر گرفته می شد یعنی اگر شمارنده مربوط به یک قطعه داده که توسط نودهای دیگر دسترسی می شد مساوی ۵ می شد این قطعه داده با استفاده از الگوریتم های مسیر یابی به یکی از نودهای همسایه منتقل می شد در حالیکه در الگوریتم RTNNA این مقدار آستانه نسبی می باشد بدین معنا که با توجه به مرحله دوم الگوریتم شمارنده ساده ( Simple Counter Algorithm ) تصمیم گیری درباره انتقال قطعه داده به این صورت انجام می شود که سطرهای یک بلاک در صورتی که شمارنده مربوط به آن بلاک در یک سایت بیشتر از سایتی باشد که بلاک هم اکنون در آن قرار دارد تصمیم گیری درباره انتقال قطعه داده با استفاده از الگوریتم های مسیر یابی انجام می شود که در این پروژه ما مانند الگوریتم NNA از الگوریتم link state استفاده کردیم برای اینکه مشخص کنیم که قطعه داده بایستی در کدام نود قرار گیرد که میانگین دسترسی نودهای دیگر به این قطعه داده کمترین مقدار را داشته باشد در این الگوریتم ( RTNNA ) بهبود قابل ملاحظه ای نسبت به الگوریتم NNA حاصل شد که نتایج آن در ادامه آورده شده است .
با توجه به شکل ۶ فرض کنید نود G ،H ،I وE به طور مکرر برای قطعه داده i که در نود A قرار دارد درخواست می فرستند با توجه به الگوریتم RTNNA هنگامی که شمارنده مربوط به یکی از این نودها بالاتر از بقیه نودها و نود مبدا باشد قطعه داده i به نود C منتقل می شود اگر این درخواستها بعد از انتقال قطعه داده ادامه پیدا کند قطعه داده به نود B منتقل می شود این روش ادامه پیدا می کند تا وقتی که قطعه داده به نود G منتقل شود . با قرار گرفتن این قطعه داده در نود G ، درخواستها از نودهای G ،H ،I و E با کمترین تاخیر و نه تاخیر کمینه جواب داده می شود در این مرحله داده در یک وضعیت پایدار قرار می گیرد بعد از این مرحله اگر یکی از نودهای H ،G وE بیشتر از دیگران درخواست قطعه داده بدهند این قطعه داده در این نود قرار می گیرد .

شکل ۶ : توپولوژی آزمایش

در آزمایشات انجام شده ما دو فاکتور در نظر می گیریم : تاخیر متوسط برای دریافت پاسخ از درخواست یک قطعه داده ( زمان پاسخ ) و زمان سپری شده برای انتقال داده از یک نود به نود دیگر ( زمان انتقال قطعه داده ) .

  راهنمای خرید:
  • در صورتی که به هر دلیلی موفق به دانلود فایل مورد نظر نشدید با ما تماس بگیرید.