بانكهاي اطلاعاتي توزيع شده
(گزارش شماره 3)
پدرام قدس نيا
اشكان بياتي
دانشکده مهندسی برق و کامپيوتر
دانشگاه تهران
فهرست مطالب
1.بررسي الگوريتمهاي انتخاب چندگانه در سيستم هاي همتا به همتا 1
2-1.مشكلات موجود در استفاده از بانكهاي اطلاعاتي توزيع شده مبتني بر P2P.. 2
2-2.الگوريتم توزيع شده انتخاب چندگانه. 3
2-3-مراحل الگوريتم.. 4
2-4.محاسبات پيچيدگي الگوريتم.. 8
2-5.آزمايشات تجربي.. 9
3.الگوريتم پوياي Replication براي Data Grid هاي چند لايه. 11
3-1.انواع الگوريتمهاي موجود. 11
3-2.معماري سيستم.. 12
3-3.پيشنهاد بهبود معماري.. 13
3-4.الگوريتمهاي replication به صورت پويا 14
3-4-1.روش SBU... 14
3-4-2.روش ABU... 15
4.منابع. 15
در بخش اول اين گزارش در مورد الگورتمهاي انتخاب چندگانه در سيستمهاي توزيع شده همتا به همتا صحبت خواهيم نمود. عمده مطالب اين بخش از مقاله [1] برگرفته شده است.
امروزه بحث محاسبات همتا به همتا (peer-to-peer) يكي از مباحث داغ در زمينه سيستم هاي توزيع شده به شمار ميرود. به كمك معماري هاي موجود در اين زمينه مي توان قدرت پردازش و همچنين اطلاعات موجود در تعداد زيادي كامپيوتر را كه در گستره جغرافيايي پهناوري وجود دارند و تنها از طريق شبكه و يا اينترنت به هم متصل هستند به اشتراك گذاشت و در نتيجه سيستم توزيع شده اي داشت كه به كمك آن بتوان به قدرت پردازشي بالايي دست يافت و يا به حجم عظيمي از اطلاعات توزيع شده در سيستم هاي مختلف دسترسي پيدا نمود. در سالهاي گذشته بيش از نيم بيليون دلار در شركتهايي كه در اين زمينه فعاليت مي كنند سرمايه گذاري شده است. شدت علاقه به اينگونه سيستمها از موفقيت چشمگير نرم افزارهاي شناخته شده و معروفي مثل Napster (نرم افزار به اشتراك گذاري فايل هاي موزيك) و يا پروژه ضد سرطان دانشگاه آكسفورد(به اشتراك گذاري قدرت پردازش براي شركت در محاسبات لازم براي تحقيقات بيولوژيك در زمينه سرطان) نشات مي گيرد. به دنبال محبوبيت اين نرم افزار ها تعدادي پروژه به اشتراك گذاري فايل و پردازش ديگر هم شكل گرفت كه از جمله آنها مي توان به نرم افزار هاي Kaza، Emull، Edonkey و ... براي به اشتراك گذاري فايل و پروژه شبيه سازي ژنتيكي گوگل براي استفاده از قدرت پردازش كامپيوتر هاي دنيا در انجام تحقيقات ژنتيكي نام برد.
از كاربردهاي ديگري كه مي توان براي اينگونه سيستم ها در نظر گرفت به اشتراك گذاشتن اطلاعات مفيد بين كمپاني هاي مختلف است. تعدادي كمپاني كه رقيب هم هستند براي به دست آوردن اطلاعات آماري كه منافع مشتركي را براي همه آنها در بر دارد مي توانند از سيستمهاي همتا به همتا مابين كامپيوتر هاي يكديگر استفاده كنند. تفاوت اين مورد را با موارد قبلي مي توان در موارد زير خلاصه كرد :
- نياز به امنيت اطلاعات بيشتر براي جلوگيري از فاش شدن اطلاعات خصوصي كمپاني در هنگام به اشتراك گذاري فايلها و قدرت پردازش.
- كمتر بودن تعداد كامپيوتر هاي شركت كننده در كل سيستم
- پيچيده تر بودن دستورالعملهاي بانك اطلاعاتي و نياز به الگوريتمهاي توزيع شده بهينه
- تعلق كامپيوتر هاي شركت كننده به كمپاني به جاي افراد حقيقي
اين تغييرات مواردي هستند كه مشكلات جديدي را مطرح مي كنند كه براي حل آنها پنجره جديدي از تحقيقات باز شده است.
اگر چه سيستم هاي P2P موفقيت چشمگيري داشته اند ولي هنوز به كار بردن آنها در بعضي از كاربردها با مشكلاتي روبروست. يكي از جدي ترين اين مشكلات در حوزه عمليات بانك اطلاعاتي حاكم است. بسياري از دستورالعملهاي بانك اطلاعاتي در روي يك كامپيوتر در زمان كوتاهي قابل اجرا هستند ولي اجراي همين دستورالعملها در يك بانك اطلاعاتي توزيع شده ممكن است به رد و بدل شدن پيامهاي ارتباطي زيادي نياز داشته باشد و در نتيجه زمان بيشتري ببرد.
يكي از اين دستورالعملهاي زمانبر Selection است مثالي براي عمل Selection در [1] آمده است.
يك راه حل براي اين مشكل اين است كه همه اطلاعات را روي يك كامپيوتر بياوريم و سپس عمل Select را به شكل بهينه اي روي آن كامپيوتر اعمال كنيم. ولي اين راه حل مشكلات زير را دارد :
- امنيت : انتقال همه اطلاعات به يك كامپيوتر ممكن است مشكل امنيتي به دنبال داشته باشد. همانطور كه در مثال قبلي گفتيم ممكن است يك كمپاني علاقه اي به ارسال همه اطلاعات خود به كامپيوتر كمپاني رقيبش نداشته باشد ولي ارائه نتيجه يك جستجو يا select بدون دادن جزئياتي كه اين نتيجه را حاصل كرده به رقيب مشكلي برايش ايجاد نكند. مثلا شايد فيلدهاي خاصي از ركوردهاي مشتريانش داراي اهميت امنيتي باشند ولي ارائه ساير فيلدها مشكلي در بر نداشته باشد ويا ارائه برخي ركوردها به رقيب مشكل امنيتي داشته باشد و ارائه بقيه آنها مشكلي نداشته باشد.
- ظرفيت ذخيره سازي كامپيوترها : ممكن است حجم اطلاعاتي كه عمل select روي آنها انجام مي شود آنقدر زياد باشد كه امكان انتقال همه آنها به يك كامپيوتر وجود نداشته باشد.
- پهناي باند مصرفي : انتقال حجم زيادي از اطلاعات در شبكه مي تواند بار زيادي را به شبكه تحميل كند و ترافيك شبكه را به شدت بالا ببرد.
با توجه به دلايلي كه گفته شد انتقال همه اطلاعات روي يك كامپيوتر و انجام عمل select روي آن مقرون به صرفه نمي باشد. در اين مقاله الگوريتم بهتري ارائه شده است كه از اين روش و ساير روشهايي كه تا كنون ارائه شده اند بسيار بهينه تر عمل مي كند.
الگوريتم توضيح داده شده در اين مقاله از الگوريتم انتخاب تكي اي گرفته شده است كه توسط نويسنده همين مقاله قبلا ارائه شده است. نكته حائز اهميت اين است كه اين الگوريتم از لحاظ پيچيدگي و بازدهي مقدار كمي با الگوريتم قبلي تفاوت دارد و از اين لحاظ بهبود قابل توجه اي صورت گرفته است.
از آنجايي كه قبل از شروع عمليات الگوي آماري توزيع كليدهاي مورد جستجو مشخص است لذا از دانش آماري موجود مي توان در جهت افزايش سرعت اين الگوريتم استفاده نمود. به عبارت ديگر مي توان با تغييرات مختصري در الگوريتم با توجه به چگونگي توزيع كليدها در سايت هاي مختلف به سرعت بالاتري دست يافت.
در الگوريتم انتخاب تكي، هدف پيدا كردن يك كليد در فايل بزرگي است كه در سايت هاي مختلف توزيع شده است. براي نمونه پيدا كردن 30 امين كوچكترين كليد. از آنجايي كه در كاربرد هاي واقعي اصولا نياز به پيدا كردن سلسله وار تعداد بيشتري كليد است، لذا وجود يك الگوريتم بهينه بسيار پرفايده مي باشد.
يك مورد خاص از پيدا كردن(انتخاب) كليدهاي چند گانه كه در اين مقاله مورد بحث قرار گرفته و مثالهاي ارائه شده از اين الگو پيروي مي كنند به اين صورت است كه هدف پيدا كردن p-1 كليد است (كليدهايي با مرتبه هاي n/p، 2n/p، ... و (p-1)n/p ) در سيستمي با n ركورد و p كامپيوتر (سايت). براي مثال پيدا كردن 30 امين و 60 امين كليد در سيستمي با 90 ركورد و 3 كامپيوتر.
شرايط و فرضياتي كه در نظر گرفته شده است عبارتند از :
- همه كامپيوتر ها با قابليت broadcast/multicast به يكديگر متصل شده اند.(مثلا در يك LAN)
- يك فايل بزرگ به صورت فيزيكي مابين p كامپيوتر توزيع شده است و تعداد n ركورد به صورت تقريبا uniform بين اين n كامپيوتر تقسيم شده است(يعني n/p ركورد در هر كامپيوتر)
- كليدهاي موجود در فايل به صورت X(i,k) نمايش داده مي شوند كه k عددي بين 1 و n/p است و i شماره كامپيوتر را مشخص مي كند. كليدها در هر كامپيوتر مرتب شده اند و لذا داريم :
X(i,1) < X(i,2) < ...< X(i, k) < ... < X(i, n/p)
- هيچ ترتيبي مابين كليدها در سايت هاي مختلف وجود ندارد. يعني مثلا دليلي ندارد كه كليد اول سايت اول از كليد اول سايت دوم كوچكتر باشد.
- نحوه توزيع كليدها در كامپيوتر هاي مختلف مي تواند از هر توزيع آماري دلخواهي پيروي كند ولي در اين مقاله براي راحت تر شدن فهم مثالها از توزيع ساده uniform استفاده شده است.
هدف اين الگوريتم پيدا كردن p-1 كليد هدف است. مرتبه كليدهاي مورد نظر در كل فايل jn/p است به طوري كه (1 . براي مثال پيد اكردن 30 امين و 60 امين كليد در سيستم 90 ركوردي با 3 كامپيوتر.
اين الگوريتم قابليت پيدا كردن تعداد بيشتري كليد را هم دارد ولي براي راحتي فهم مثالها و از آنجايي كه كاربرد واقعياي براي اين مورد وجود داشته است از اين تعداد خاص استفاده شده است.
فاز اول :
مرحله اول : يك كامپيوتر به عنوان coordinator انتخاب مي شود. هر كامپيوتري بزرگترين و كوچكترين كليد خود را به coordinator اعلام مي كند. coordinator از روي مقادير دريافت شده MAX (بزرگترين كليد كل فايل) و MIN (كوچكترين كليد كل فايل) را پيدا مي كند و از روي آنها با استفاده از فرمول زير مقادير آغازين جدا كننده ها را پيدا مي كند:
DELIMITERj = MIN + (MAX-MIN)j / p (1 <= j <= p-1)
مرحله دوم :
coordinator مقادير p-1 جداكننده را به همه كامپيوتر ها ارسال مي كند.
مرحله سوم :
هر كامپيوتر p-1 محور (pivot) انتخاب مي كند. Pivot i,j بزرگترين مقدار در كامپيوتر iام است كه از DELIMITERj كوچكتر است(يا با آن برابر است).
مراحل اول و دوم در صورتي كه MIN و MAX از قبل براي همه كامپيوتر ها مشخص باشد اختياري است و لذا ارسال پيامهاي مربوط به اين دو مرحله قابل كاهش است. در شكل زير مراحل 1 و 2 را مشاهده مي كنيد.
فاز دوم :
در اين فاز هر كامپيوتر به طور همزمان دو وظيفه را بر عهده دارد. اين دو وظيفه عبارتند از محاسبه محور و محاسبه رتبه. در هر مرحله هر كامپيوتر محور و رتبه محاسبه شده توسط خودش را منتشر مي كند. اين كار به صورت نوبتي و پشت سر هم انجا مي شود.
محاسبه رتبه :
r[i,j] را به صورت تعداد كليدهاي كوچكتر از محور i,j در كامپيوتر i تعريف مي كنيم. هر كامپيوتر p-1 محور از ساير كامپيوتر ها به صورت broadcast دريافت مي كند. و كامپيوتر ها مقادير كليدهاي محلي خود را با اين كليدها مقايسه مي كنند و به ترتيب و پشت سرهم كامپيوتر ها رتبه خود را نسبت به اين محور هاي اعلام شده به همه منتشر ميكنند.
محاسبه محور:
همانطور كه مشخص است هر كامپيوتر (p-1)2 رتبه از ساير كامپيوتر ها دريافت مي كند. بعد از دريافت اين رتبه ها با استفاده از رابطه زير رتبه خود را در فايل سراسري محاسبه مي كند. در اين رابطه رتبه همه كامپيوتر ها با هم جمع ميشود و به راحتي رتبه سرتاسري به دست مي آيد. چنانچه رتبه به دست آمده همان رتبه مورد نظر بود كه كليد پيدا شده و كار تمام است. در اين شرايط با پيغام خاصي پيدا شدن كليد به اطلاع همه خواهد رسيد و از اين پس كسي به دنبال آن كليد خاص نخواهد گشت.
در صورتي كه كليد پيدا نشده باشد هر كامپيوتر محور جديدي با استفاده از متدي كه در زير معرفي شده است محاسبه مي كند.
محاسبه محور جديد :
در واقع بعد از هر مرحله هر فايل محلي به دو زير فايل تقسيم مي شود. همه كليدهاي موجود در زير فايل اول كوچكتر يا مساوي با محور i,j هستند در حالي كه همه كليدهاي موجود در زير فايل دوم از اين مقدار بزرگتر هستند.
اگر رنگ سرتاسري محاسبه شده از محور كوچكتر باشد فايل اول مورد استفاده قرار مي گيرد و در غير اين صورت فايل دوم مورد استفاده قرار مي گيرد. محور جديد به طريق زير محاسبه مي شود :
كه Offsetj به صورت زير محاسبه مي شود.
كوچكترين كليد در زير فايل دوم كه بزرگتر يا مساوي با NP باشد به عنوان محور جديد در نظر گرفته مي شود. در صورتي كه به سراغ فايل اول رفته باشيم بزرگترين كليد در فايل اول كه كوچكتر يا مساوي با NP باشد به عنوان محور جديد در نظر گرفته مي شود.
در واقع الگويتم به صورت لگاريتمي عمل مي كند و هر دفعه فايل هاي محلي كامپيوتر ها را به دو قسمت تقسيم ميكند و در واقع مجازا در كل فايل چنين عملي در حال انجام است.
براي روشن تر شدن موضوع به مثال زير توجه كنيد :
مثال :
در شكل زير سه جدول Table1، Table2و Table3 كه در كامپيوتر هاي 1 و 2 و3 قرار دارند به همراه كليدهاي موجود در هر كدام مشاهده مي كنيد.
پيغام هاي رد و بدل شده بين كامپيوتر هاي مختلف در مراحل اجراي الگوريتم را در جدول زير مشاهده مي نماييد.
همانگونه كه مشاهده مي كنيد 30 امين كليد بعد از سه مرحله پيدا شد و از آنجا به بعد با ارسال حرف E به ديگران گفته مي شود كه عمليات پيدا كردن اين كليد به پايان رسيده و نيازي به ادامه محاسبات روي اين كليد نيست. ولي همانگونه كه مشاهده مي كنيد كليد 60 ام هنوز پيدا نشده است، لذا عمليات براي پيدا كردن آن همچنان ادامه مي يابد تا اينكه در 5 مرحله اين كليد هم پيدا ميشود و عمليات كلا به پايان مي رسد.
در شكل زير نحوه انتقال پيغام ها بين كامپيوتر ها را در اولين مرحله مشاهده مي كنيد.
در ادامه مقاله به بررسي پيچيدگي زماني اين الگوريتم و همچنين تعداد پيامهاي رد و بدل شده لازم بين كامپيوتر ها پرداخته شده است. در قسمت سلسله اي از ادعا ها به همراه اثبات آنها آورده شده است. براي نمونه ثابت شده است كه حد بالاي همه پيامهاي ارسالي عبارت است از :
حد بالاي تعداد كل مراحل عبارت است از :
حد بالاي مجموع كليدهايي كه هر كامپيوتر نياز دارد تا براي ساير كامپيوتر ها در حين پروسه الگوريتم اعلام كند عبارت است از :
همچنين در مورد سيستمي كه قابليت Broadcast ندارد نيز محاسبات پيچيدگي زماني و تعداد پيامها صورت گرفته است.
براي مثال حد بالاي تعداد پيغامهاي لازم براي پيدا كردن كليدي با رتبه J در سيستمي بدون قابليت Broadcasting به صورت زير است :
در بخش بعدي مقاله در ابتدا كارهاي مشابه انجام شده به صورت مختصر معرفي شده اند و سپس نتايج تجربي اين الگوريتم به صورت تعدادي نمودار بيان شده است. در اين نمودارها نشان داده شده است كه در تجربه نتيجه بهتري از محاسبات تئوري انجام شده در مورد پيچيدگي به دست آمده است. البته اين بدان دليل است كه در محاسبات تئوري حد بالا براي پيچيدگي ها محاسبه شده بود. در زير نمودارهاي مربوطه حاصل از نتايج تجربي را مشاهده مي نماييد :
نمودار تعداد مراحل بر حسب تعداد كامپيوتر ها
همانطور كه مشاهده مي كنيد بالا رفتن تعداد كامپيوتر ها تاثيري بر تعداد مراحل ندارد.
نمودار تعداد پيغامها بر حسب تعداد كامپيوتر ها
همانگونه كه مشاهده مي كنيد با بالا رفتن تعداد كامپيوترها تعداد پيغامها به صورت خطي بالا مي رود.
نمودار تعداد مراحل بر اساس حجم فايل (تعداد ركوردها) در تعداد كامپيوتر هاي مختلف
نمودار تعداد پيامها بر حسب حجم فايل (تعداد ركوردها) در تعداد كامپوتر هاي مختلف
نمودار زمان بر حسب تعداد ركوردها در تعداد كامپيوتر هاي مختلف
در ادامه مقايسه اي صورت گرفته است مابين روشهاي قبلي و اين روش آماري ارائه شده.
همانگونه كه در اين نمودار مشاهده مي كنيد از لحاظ تعداد مراحل، پيشرفت قابل توجهي در اين الگوريتم نسبت به روشهاي قبلي حاصل شده است. نكته ديگري كه وجود دارد اين است كه برعكس الگوريتمهاي قبلي تعداد كامپيوتر ها در اين الگوريتم تاثيري در تعداد مراحل ايجاد نمي كند.
3.الگوريتم پوياي Replication براي Data Grid هاي چند لايه
الگوريتم Dynamic Replication اي كه در اين قسمت معرفي مي شود برگرفته از [2] است. با اين حال براي بهبود كارايي الگوريتم پيشنهادهايي ارائه شده است كه در ادامه ذكر خواهيم نمود. data grid ساختاري براي نگهداري فايلهاي اطلاعاتي با ابعاد بزرگ است و قابليت محاسباتي قدرتمندي براي سازمانهاي بزرگ و يا سيستمهاي اطلاعاتي مبتني بر community بزرگ فراهم مي كند. در data grid اصولا كپي هاي متعددي از هر داده نگهداري مي شود و كاربران براي دسترسي به اطلاعات به در دسترس ترين و نزديك ترين و سريعترين كپي هدايت مي شوند. براي مديريت data grid ها مكانيزمهاي مختلفي تا كنون پيشنهاد شده است. يكي از مهمترين مسائلي كه در مديريت data grid ها مطرح است ، چگونگي سيستم برخورد با replicate ها است. اينكه از كدام فايلها replicate بسازيم، چه موقع از داده ها replicate ايجاد كنيم و اين replicate را در كجاي سيستم قرار دهيم تا بازدهي كلي data grid بالا برود از جمله مسائلي است كه پيرامون آنها بحث و تبادل نظر و تحقيقات وسيعي در جريان است. همچنين رعايت سازگاري ميان كپي هاي مختلف داده ها در سيستم هاي مبتني بر replication ازجمله مسائلي است كه تحقيقاتي براي حل مشكلات مربوط به آن صورت گرفته است [3].
با نگاهي به سوابق تحقيقاتي در اين زمينه روشهاي replication را به دو دسته كلي تقسيم كرده اند.
دسته اول Static Replication است كه در آن سياست Replication از ابتدا به صورت ثابت و ايستا مشخص مي گردد و در واقع جزئي از پيكربندي سيستم محسوب مي شود. مسلما با تغيير توپولوژي شبكه data grid و يا تغيير الگوي درخواستها تغييري در اين سياست داده نخواهد شد. لذا بازدهي سيستم به شدت پايين مي آيد و ممكن است از منابع به شكل مناسب و مطلوب استفاده نشود. به عنوان مثال ممكن است تعداد استفاده كنندگان از سيستم در زمان تعيين سياست ها به صورت ايستا 50 عدد در نظر گرفته شده باشد، در حالي كه پس از گذشت مدتي تعداد كاربران به 500 عدد برسد و يا تعداد كاربران متصل به يك نود خاص بيشتر از بقيه بوده باشد و بعد از گذشت مدتي اين الگو تغيير كند و ترافيك نود ديگري بالا برود.
در مقابل اين روش، روش دايناميك وجود دارد كه در آن data grid با توجه به تغيير الگوهاي دسترسي و موارد متغير ديگر به صورت اتوماتيك در زمان نياز به ساخت replicate مي پردازد و آن را در جاي مناسب قرار مي دهد تا فركانس دسترسي به آن بهينه باشد و باعث بالا رفتن هزينه نگردد.
معماري سيستمي را كه از replication به صورت پويا استفاده مي كند در شكل زير مشاهده مي كنيد.
همانطور كه در شكل مشاهده مي كنيد، وقتي يك كاربر مي خواهد به يك فايل داده اي دسترسي داشته باشد، براي دسترسي به آن فايل نام آن را به RS(Replica Selector) ارسال مي دارد. وظيفه RS انتخاب يك replica مناسب براي سرويس دهي با درخواست اين كاربر است. معيارهايي كه براي انتخاب replica مناسب در نظر گرفته مي شود عموما نزديكي replica به كاربري كه درخواست داده است و همچنين ميزان ترافيك فعلي replica ها براي دسترسي است. يعني بايد replica اي كه نزديكتر است و سرش خلوت تر است انتخاب شود. به اين ترتيب پهناي باند شبكه كمتر مصرف خواهد شد و زمان پاسخگويي به درخواست هم بالا خواهد رفت.
وقتي كه RS مكان درست فايل داده اي را به درخواست كننده اعلام كرد، درخواست كننده با LRM(Local Replica Manager) مربوط به آن نود ارتباط برقرار مي كند. وظيفه LRM مديريت replica هاي موجود در يك سايت است.
براي هر انتقال فايل موفقيت آميزي كه صورت مي گيرد، LRM ، DRS(Dynamic Replica Scheduler) را صدا ميزند و اين انتقال موفق را به او خبر مي دهد.
DRS مسوول زمانبندي Replication است. يعني تعيين مي كند كه چه زماني نياز است يك replication جديد از فايل داده اي خاصي ايجاد شود. هرگاه كه خبر انتقال موفقيت آميزي به DRS داده مي شود، اين خبر را log مي كند. درواقع شمارنده تعداد دسترسي هاي انجام شده به آن فايل داده اي را يكي افزايش مي دهد.
در واقع DRS وظيفه دارد كه اين log ها را نگهداري كند و در بازه هاي زماني خاصي فايلهاي داده اي با محبوبيت بيشتر را شناسايي كند و براي آنها يك مكان كناسب در نظر بگيرد و دستور ساخت replica از آنها را صادر نمايد و سپس تعداد دسترسي هاي انجام شده را صفر كند و اين كار را دوباره ادامه بدهد. هر گاه DRS تشخيص بدهد كه بايد جابجايي صورت بگيرد دستور لازم را به LRM سايت مربوطه ارسال مي كند و LRM خودش ساخت Replica جديد را انجام مي دهد و نتيجه را به DRS خبر مي دهد. DRS با شنيدن خبر ساخت موفقيت آميز يك replica جديد موضوع را به RC (Replica Catalogue) خبر مي دهد تا خود را بروزرساني كند و ظهور replica جديد را در سيستم در نظر بگيرد. RC همانند يك name server عمل مي كند و نگاشتي مابين فايلهاي منطقي و مكان فيزيكي آنها اعمال مي كند. براي اطمينان از سازگاري سيستم، خبر ساخت و يا حذف replica ها بايد به RC اعلام شود. توجه داشته باشد كه lock ها هم در RC نگهداري مي شود ولي توسط DRS مديريت مي شوند. هنگامي كه عمل نوشتن در يكي از replica ها مي خواهد صورت بگيرد، DRS روي داده Lock مي گذارد و بعد از اينكه نوشتن به پايان رسيد DRS همه replica هاي متناظر را با تغيير داده شده هماهنگ مي كند و پس از اطمينان از اينكه كپي هاي مختلف نگهداري شده در سيستم با هم سازگار شدند، Lock را از روي داده بر مي دارد.
از آنچه كه تا كنون گفتيم اينگونه مي توان نتيجه گرفت كه وظايف DRS، RS و RC روي يك نود قرار گرفته است و همانطور كه مشخص است، سيستم وابستگي زيادي به اين اجزا دارد. لذا از بين رفتن يا خراب شدن هر كدام از اين اجزا مي تواند كل سيستم را از كار بيندازد. براي رفع اين مشكل پيشنهاد مي كنيم معماري ارائه شده در اين مقاله به صورت زير تغيير كند.
همانطور كه مشاهده مي كنيد در اين معماري بهبود يافته براي اين اجزاي حساس، كپي هاي متعددي در نظر گرفته شده و به كمك اين كي ها سيستم توزيع شده تر مي گردد. اين كپي ها در بازه هاي زماني خاصي نسخه فعلي را بررسي مي كنند و چنانچه متوجه شوند كه از كار افتاده است با استفاده از الگوريتم توزيع شده bully [4] از بين خود يكي را انتخاب مي كنند و از اين پس وظيفه بر عهده كپي منتخب خواهد بود. به اين ترتيب تحمل سيستم در برابر خرابي بالا خواهد رفت سيستم توزيع شده تر عمل خواهد نمود.
حال كه با معماري سيستم آشنا شديم به بررسي الگوريتم هاي ارائه شده براي زمانبندي replication خواهيم پرداخت.
اولين روشSBU يا Single Bottom Up نام دارد. ايده اصلي نهفته در اين الگوريتم قرار دادن replica ها تا جايي كه ممكن است، نزديك نودهايي است كه استفاده بيشتري از اين replica دارند.
وقتي كه تعداد درخواستهاي كاربران از حد آستانه مشخصي مي گذرد، عمل replication صورت مي گيرد. در واقع الگوريتم در DRS انجام مي شود و در دوره هاي زماني خاصي log هاي گرفته شده جستجو مي شوند و دسترسي هايي كه از حد آستانه خود گذشته اند براي انتقال replica به سمت آنها در نظر گرفته مس شوند. در اين الگوريتم ساده در ساختار درختي data grid سعي بر اين است كه replica دقيقا در والد نودي كه درخواست كننده بيش از حد آستاده داشته قرار داده شود. ولي چنانچه اين نود پر بود و جا نداشت به سراغ والد آن مي رويم و اين كار را تا ريشه درخت ادامه مي دهيم. چنانچه در حال حاضر replica در والد نود مورد نظر قرار داشت از انجام عمليات replication خودداري مي كنيم و به صفر كردن تعداد دسترسي ها در فايل log مبادرت مي ورزيم.
در اين روش به جاي اينكه تعداد دستيابي هاي كاربران مختلف متصل به يك والد را به يك فايل داده اي مشخص به صورت مجزا شمارش كنيم، آنها را با هم در نظر مي گيريم.
شكل زير را در نظر بگيريد :
همانگونه كه در اين شكل مشاهده مي كنيد نود C1 به فايل داده اي x تعداد 10 بار دستيابي كرده است و نود c2 به فايل داده اي Y تعداد 9 بار دستيابي كرده و فايل داده اي y توسط C3 تعداد 8 بار مورد دستيابي قرار گرفته است. همانگونه كه مي بينيد فايل داده اي y مجموعا توسط نودهايي كه به والد S1 متصل هستند 17 بار مورد دستيابي قرار گرفته شده است. پس انتقال Y به S1 ضروري به نظر مي رسد. چنانچه از روش SBU با حد آستانه 10 استفاده كنيم، فايل X به S1 منتقل مي شود در حالي كه نود Y كه انتقال آن ضروري تر به نظر مي رسد منتقل نخواهد شد. به همين منظور از روش ABU به عنوان روش بهبود يافته SBU استفاده مي شود. در اين روش دسترسي هايي كه به فايل دادهاي يكساني انجام شده است با هم جمع مي شوند حد آستانه براي مجموع در نظر گرفته مي شود. به اين ترتيب معيار بهتري براي تشخيص زمان و مكان replication به دست مي آيد كه كارايي سيستم را بالاتر خواهد برد.
- A. Loo, “Distributed multiple selection algorithm for peer-to-peer systems” Elsevier, 25 Agust 2004
- M. Tang, B. Lee, C. Yeo, X. Tang, “Dynamic Replication Algorithms For The Multitier Data Grid” Elsevier, October 2004.
- A. Domenici, F. Donnob,G. Pucciani, H. Stockingerc,K. Stockinger, “Replica consistency in a Data Grid” Elsevier, July 2004
- Ramkrishnan, Gehrke, “Database Management Systems Third Edition”