آبجی
3rd June 2010, 05:46 PM
قسمت اول
بانک اطلاعاتي گريد در واقع مجموعهاي است از يک يا چند بانک اطلاعات توزيع شده ناهمگون, داراي تکرار که از طريق سيستم گريد با يکديگر تعامل و ارتباط منطقي پيدا ميکنند و به سادگي نميتوانند سرويسهاي سراسري شفاف ارائه کنند.
به بياني ساده بانک اطلاعات گريد بسيار شبيه بانک اطلاعات چندگانه است با اين تفاوت اصلي که در بانک اطلاعات چندگانه به هر حال يک کنترل کننده مرکزي عملکرد سيستم را کنترل ميکند اما در بانک گريد چنين کنترل کنندهاي وجود ندارد[9].
1.2. قرار دادن پايگاههاي داده در معماري گريد
در اين قسمت سعي بر توصيف چارچوبي داريم که پايگاههاي داده را به معماري گريد بيافزايد به طوري که نيازمنديهاي خاص پايگاههاي داده را علاوه بر نيازمنديهاي گريد پشتيباني کند.
اين چارچوب براساس سرويس[1] طراحي شده است. بدين صورت که هر سيستم پايگاه دادهاي که خود را با گريد منطبق کرده است, ليستي از سرويسهايي را که پشتيباني ميکند به گريد ميدهد که بر اساس استانداردهاي گريد معرفي ميشوند. البته واضح است که تعريف استانداردي که تمام سرويسهاي ممکن را پشتيباني کند غير ممکن است زيرا پايگاههاي داده خاصي وجود دارند که دستورات خاصي را شامل ميشوند که در هيچ بانک اطلاعاتي ديگري وجود ندارد. در چنين حالتي بايد به سيستم اجازه داده شود که سرويسهاي مورد نظر خود را براي گريد تعريف کند. يکي از مزاياي استفاده از سيستم مبتني بر سرويس اين است که پايگاه داده ميتواند در بخش مربوط به معرفي دادگان خود تمام سرويسهايي را که ميتواند پشتيباني کند را مشخص نمايد تا در هنگام کار با ساير پايگاههاي داده به مشکلي برخورد نداشته باشد.
در چنين گريدهايي, صاحب بانک اطلاعاتي مشخص مينمايد که کدام سرويسها در گريد قابل استفاده باشند.
حال به بررسي تک تک سرويسهاي مشخص شده در اين شکل ميپردازيم:
1.1.2. دادگان
اين سرويس دسترسي به دادگان فني پايگاه داده و سرويسهايي که توسط آن پشتيباني ميشوند را فراهم ميآورد. براي مثال اطلاعات مربوط به نام فيزيکي و منطقي بانک اطلاعاتي, مالکيت آن, تعداد نسخهها و نحوهي دسترسي به اطلاعات آن در اين سرويس آورده خواهد شد.
همچنين دادگان مربوط به توصيف يک سرويس تمام اطلاعات دربارهي کيفيت سرويس, نحوه تبادل اطلاعات آن و تمام قابليتهاي آن را شامل ميشود. اين اطلاعات توسط توسعهدهندگان نرمافزارهاي کاربردي گريد و ابزارهايي که نياز به دانستن نحوهي تبادل داده با پايگاههاي داده را دارند استفاده ميشود. اين داده براي نرمافزارهاي کاربردي پويا بسيار حائز اهميت ميشوند. در يک دسترسي دو مرحلهاي به بانک اطلاعاتي (ابتدا دسترسي به منابع گريد و سپس دسترسي به خود پايگاه داده از طريق DBMS آن) نياز است که يک سري عمليات ويژه با استفاده از اين دادگان قبل از دسترسي به پايگاه داده انجام شود تا بانک اطلاعاتي مزبور به منابع گريد اضافه شود.
2.1.2. پرس و جو[1]
با وجود اينکه هستهي تمام زبانهاي پرس و جو يکسان است, اين زبان به طور خاص به پايگاه دادهاي که بر روي آن قرار ميگيرد وابسته است. بنابراين در سرويسي که بر روي يک پايگاه داده قرار ميگيرد نوع زبان پرس و جوي قابل پشتيباني بايد مشخص شود. براي زمان بندي کارها و نيز ايجاد بستري براي بهينه سازي توزيع منابع, نياز به فرايندي که تخمين زماني از اجراي پرس و جوها را به سيستم بدهد بسيار احساس ميشود.
واضح است که سرويسي که براي انجام پرس و جوها به خدمت گرفته ميشود بايد از امکانات بسياري از ديگر نرمافزارها براي تبادل داده با ساير بخشهاي گريد استفاده کند تا بتواند نتايج را به نقاط مختلف گريد انتقال دهد.
آخرين قابليتي که بايد وجود داشته باشد, امکان انتقال نتيجه به هر نقطهاي به جز فرستندهي درخواست است. اين قابليت باعث ميشود سيستم از حالت خادم-مشتري صرف خارج شده و امکاناتي براي انجام تعاملات پيشرفته را داشته باشد.
3.1.2. تراکنشها
اين عملياتها قابليت انجام تراکنش بر روي يک پايگاه داده تنها و نيز توزيع شده در سطح گريد را ممکن ميسازد. انواع مختلف تراکنش وجود دارد که به وسيلهي DBMSهاي مختلف پشتيباني ميشوند براي مثال در بعضي از آنها تراکنشهاي تودرتو گنجانده شده است, در حالي که ساير پايگاههاي داده آن را پشتيباني نميکنند. به همين دليل سرويس دادگان تعريف شده بايد تعريفي از نوع تراکنش قابل پشتيباني ارائه دهد.
4.1.2. بارگذاري با حجم زياد[2]
پشتيباني از بارگذاري دادههاي حجيم در پهنهي گريد يکي از مهمترين نيازهاي پايگاههاي داده گريد ميباشد که براي برخي نرمافزارهاي کاربردي عاملي حياتي محسوب ميشود. به عبارت ديگر سرويس بايد قادر باشد که با استفاده از مکانيزمهاي انتقال داده و بهينه سازي آنها حجم بسيار زياد داده را در سرتاسر گريد منتقل کند.
5.1.2. اخطار[3]
اين مکانيزم به مشتريها اجازه ميدهد تا نواحي مورد علاقهي خود در گريد را انتخاب کنند و هنگامي که تغييري در آنها به وجود آمد پيام اخطاري مبني بر تغيير اين ناحيه ارسال شود. پشتيباني از اين سرويس خود شامل دو بخش ميشود که در بخش اول کاربر بايد اعلام نمايد که به چه بخشي علاقه مند است براي مثال درج, حذف, به روز رساني و غيره و در بخش دوم بايد متدي را پياده سازي نمايد که عمليات مربوط به آن تغيير را انجام دهد. پشتيباني از چنين مکانيزمي در مواردي که DBMSهاي مربوطه از زبان محلي مشترکي مثل محرکها استفاده ميکنند بسيار ساده تر خواهد شد. در چنين سيستمي, هنگامي که يک پيام اخطار توليد ميشود به سرويس رويداد گريد عمومي ارسال ميشود تا تصميم گرفته شود که چه عملياتي بر روي آن بايد انجام شود و سپس اين سرويس در ادامهي کار خود عمليات مورد نظر را انجام ميدهد؛ براي مثال يک ايميل به شخص خاصي ارسال ميکند و يا عمليات خاصي را انجام ميدهد.
6.1.2. زمان بندي[4]
اين سرويس به کاربران اجازه ميدهد که استفاده از پايگاه داده خود را زمان بندي کنند که در اين حالت پهناي باند شبکهاي هم که به اين پايگاه داده متصل است بايد از پيش تخصيص داده شود. از آنجايي که دسترسي اختصاصي به يک پايگاه داده غير عملي است مکانيزمهايي لازم است که بر اساس آن منابعي مانند حافظه, پردازنده و ديسک در لحظاتي خاص در اختيار گريد قرار گيرد تا به انجام درخواست رسيده همت گمارد.
ادعايي بر اين مبنا وجود ندارد که سرويسهاي ارائه شده در اين بخش تماما نيازهاي گريد و پايگاههاي دادهي آن را پشتيباني ميکنند. بلکه اين سرويسها فقط بنابر تجربيات سيستمهاي مبتني بر پايگاه داده طراحي شدهاند و واضح است که با گسترش گريد نياز به توليد سرويسهاي بيشتري احساس خواهد شد. سرويسهايي که در اين بخش نام برده شدند تقريبا سطح پايين و عمومي هستند و سرويسهاي سطح بالاتر در نرمافزارهاي کاربردي گريد قرار خواهند گرفت.
2.2. مجتمع کردن پايگاههاي داده در گريد
يکي از مزاياي مهم گريدهاي داده امکان مجتمع سازي منابع توزيع شده است. در اين بخش نشان خواهيم داد سيستم مبتني بر سرويس بخش قبل چگونه در اين مجتمع سازي به ما کمک خواهد کرد.
در روشي که ارائه خواهيم کرد از يک ميانافزار مبتني بر گريد استفاده خواهيم کرد که به وسيلهي آن يک پايگاه داده مجتمع شدهي مجازي خواهيم داشت که از اين پس نرمافزارهاي کاربردي به جاي استفاده مستقيم از پايگاههاي داده با اين ميانافزار به تعامل خواهند پرداخت. با چنين کاري يک سيستم مديريت پايگاه داده مجازي خواهيم داشت که دقيقا همان سرويسهايي را که در بخش قبل اشاره کرديم پشتيباني ميکند اما در واقع هيچ نوع دادهاي را در خود ذخيره نمي کند و از ساير منابع ذخيره سازي استفاده ميکند. براي انجام فعاليت بر روي چنين پايگاه داده مجتمع شدهي مجازي از يک ميانافزار سرويسهاي مجتمع[5] استفاده ميشود که با پايگاههاي داده مستقيما تبادل داده انجام ميدهد
حالت ايده آل براي ساخت چنين سيستمي استفاده از ابزاري است که بتواند مجموعهاي از پايگاههاي داده را بگيرد و با استفاده از آنها يک پايگاه داده مجازي بسازد. حال بايد به توصيف پيامدهاي چنين ابزاري بپردازيم.
روش مبتني بر سرويسي که در بخش قبل بررسي کرديم با قرار دادن استانداردهايي بر تعريف سرويسها در راه مجتمع کردن پايگاههاي داده به ما کمک بسياري خواهد نمود. هرچند به علت ناهمگوني منابع امکان استانداردسازي کامل وجود ندارد, اما اين ابزار ميتواند به شکل زير اقدام به ساختن پايگاه داده مجازي نمايد:
اين ابزار, براي هر سرويس بايد در تمام دادگان پايگاههاي داده موجود در گريد به جستجو پردازد تا قابليتهاي آنان را شناسايي کند. سپس با اطلاع از ميانافزار مورد استفاده و امکاناتي که توسط آن قابل استفاده هستند گزينههاي مختلف براي مجتمع سازي سرويسها به دست ميآيند. اگر تعداد گزينهها بيشتر از يک باشد يکي از آنها انتخاب شده و در ليست سرويسهاي گريد قرار ميگيرد ولي اگر تعداد گزينهها صفر باشد, به کاربر اطلاع داده ميشود که عمليات مورد نظر قابل انجام نيست و بايد نمي تواند از سرويس مورد نظر استفاده کند.
پياده کردن تمام سرويسهايي که در بخش قبل اشاره شد پيامدهاي خاصي را به دنبال خواهد داشت که در ادامه توضيح داده خواهند شد.
[1] Query
[2] Bulk Loading
[3] Notification
[4] Scheduling
[5] Service Federation Middleware
بانک اطلاعاتي گريد در واقع مجموعهاي است از يک يا چند بانک اطلاعات توزيع شده ناهمگون, داراي تکرار که از طريق سيستم گريد با يکديگر تعامل و ارتباط منطقي پيدا ميکنند و به سادگي نميتوانند سرويسهاي سراسري شفاف ارائه کنند.
به بياني ساده بانک اطلاعات گريد بسيار شبيه بانک اطلاعات چندگانه است با اين تفاوت اصلي که در بانک اطلاعات چندگانه به هر حال يک کنترل کننده مرکزي عملکرد سيستم را کنترل ميکند اما در بانک گريد چنين کنترل کنندهاي وجود ندارد[9].
1.2. قرار دادن پايگاههاي داده در معماري گريد
در اين قسمت سعي بر توصيف چارچوبي داريم که پايگاههاي داده را به معماري گريد بيافزايد به طوري که نيازمنديهاي خاص پايگاههاي داده را علاوه بر نيازمنديهاي گريد پشتيباني کند.
اين چارچوب براساس سرويس[1] طراحي شده است. بدين صورت که هر سيستم پايگاه دادهاي که خود را با گريد منطبق کرده است, ليستي از سرويسهايي را که پشتيباني ميکند به گريد ميدهد که بر اساس استانداردهاي گريد معرفي ميشوند. البته واضح است که تعريف استانداردي که تمام سرويسهاي ممکن را پشتيباني کند غير ممکن است زيرا پايگاههاي داده خاصي وجود دارند که دستورات خاصي را شامل ميشوند که در هيچ بانک اطلاعاتي ديگري وجود ندارد. در چنين حالتي بايد به سيستم اجازه داده شود که سرويسهاي مورد نظر خود را براي گريد تعريف کند. يکي از مزاياي استفاده از سيستم مبتني بر سرويس اين است که پايگاه داده ميتواند در بخش مربوط به معرفي دادگان خود تمام سرويسهايي را که ميتواند پشتيباني کند را مشخص نمايد تا در هنگام کار با ساير پايگاههاي داده به مشکلي برخورد نداشته باشد.
در چنين گريدهايي, صاحب بانک اطلاعاتي مشخص مينمايد که کدام سرويسها در گريد قابل استفاده باشند.
حال به بررسي تک تک سرويسهاي مشخص شده در اين شکل ميپردازيم:
1.1.2. دادگان
اين سرويس دسترسي به دادگان فني پايگاه داده و سرويسهايي که توسط آن پشتيباني ميشوند را فراهم ميآورد. براي مثال اطلاعات مربوط به نام فيزيکي و منطقي بانک اطلاعاتي, مالکيت آن, تعداد نسخهها و نحوهي دسترسي به اطلاعات آن در اين سرويس آورده خواهد شد.
همچنين دادگان مربوط به توصيف يک سرويس تمام اطلاعات دربارهي کيفيت سرويس, نحوه تبادل اطلاعات آن و تمام قابليتهاي آن را شامل ميشود. اين اطلاعات توسط توسعهدهندگان نرمافزارهاي کاربردي گريد و ابزارهايي که نياز به دانستن نحوهي تبادل داده با پايگاههاي داده را دارند استفاده ميشود. اين داده براي نرمافزارهاي کاربردي پويا بسيار حائز اهميت ميشوند. در يک دسترسي دو مرحلهاي به بانک اطلاعاتي (ابتدا دسترسي به منابع گريد و سپس دسترسي به خود پايگاه داده از طريق DBMS آن) نياز است که يک سري عمليات ويژه با استفاده از اين دادگان قبل از دسترسي به پايگاه داده انجام شود تا بانک اطلاعاتي مزبور به منابع گريد اضافه شود.
2.1.2. پرس و جو[1]
با وجود اينکه هستهي تمام زبانهاي پرس و جو يکسان است, اين زبان به طور خاص به پايگاه دادهاي که بر روي آن قرار ميگيرد وابسته است. بنابراين در سرويسي که بر روي يک پايگاه داده قرار ميگيرد نوع زبان پرس و جوي قابل پشتيباني بايد مشخص شود. براي زمان بندي کارها و نيز ايجاد بستري براي بهينه سازي توزيع منابع, نياز به فرايندي که تخمين زماني از اجراي پرس و جوها را به سيستم بدهد بسيار احساس ميشود.
واضح است که سرويسي که براي انجام پرس و جوها به خدمت گرفته ميشود بايد از امکانات بسياري از ديگر نرمافزارها براي تبادل داده با ساير بخشهاي گريد استفاده کند تا بتواند نتايج را به نقاط مختلف گريد انتقال دهد.
آخرين قابليتي که بايد وجود داشته باشد, امکان انتقال نتيجه به هر نقطهاي به جز فرستندهي درخواست است. اين قابليت باعث ميشود سيستم از حالت خادم-مشتري صرف خارج شده و امکاناتي براي انجام تعاملات پيشرفته را داشته باشد.
3.1.2. تراکنشها
اين عملياتها قابليت انجام تراکنش بر روي يک پايگاه داده تنها و نيز توزيع شده در سطح گريد را ممکن ميسازد. انواع مختلف تراکنش وجود دارد که به وسيلهي DBMSهاي مختلف پشتيباني ميشوند براي مثال در بعضي از آنها تراکنشهاي تودرتو گنجانده شده است, در حالي که ساير پايگاههاي داده آن را پشتيباني نميکنند. به همين دليل سرويس دادگان تعريف شده بايد تعريفي از نوع تراکنش قابل پشتيباني ارائه دهد.
4.1.2. بارگذاري با حجم زياد[2]
پشتيباني از بارگذاري دادههاي حجيم در پهنهي گريد يکي از مهمترين نيازهاي پايگاههاي داده گريد ميباشد که براي برخي نرمافزارهاي کاربردي عاملي حياتي محسوب ميشود. به عبارت ديگر سرويس بايد قادر باشد که با استفاده از مکانيزمهاي انتقال داده و بهينه سازي آنها حجم بسيار زياد داده را در سرتاسر گريد منتقل کند.
5.1.2. اخطار[3]
اين مکانيزم به مشتريها اجازه ميدهد تا نواحي مورد علاقهي خود در گريد را انتخاب کنند و هنگامي که تغييري در آنها به وجود آمد پيام اخطاري مبني بر تغيير اين ناحيه ارسال شود. پشتيباني از اين سرويس خود شامل دو بخش ميشود که در بخش اول کاربر بايد اعلام نمايد که به چه بخشي علاقه مند است براي مثال درج, حذف, به روز رساني و غيره و در بخش دوم بايد متدي را پياده سازي نمايد که عمليات مربوط به آن تغيير را انجام دهد. پشتيباني از چنين مکانيزمي در مواردي که DBMSهاي مربوطه از زبان محلي مشترکي مثل محرکها استفاده ميکنند بسيار ساده تر خواهد شد. در چنين سيستمي, هنگامي که يک پيام اخطار توليد ميشود به سرويس رويداد گريد عمومي ارسال ميشود تا تصميم گرفته شود که چه عملياتي بر روي آن بايد انجام شود و سپس اين سرويس در ادامهي کار خود عمليات مورد نظر را انجام ميدهد؛ براي مثال يک ايميل به شخص خاصي ارسال ميکند و يا عمليات خاصي را انجام ميدهد.
6.1.2. زمان بندي[4]
اين سرويس به کاربران اجازه ميدهد که استفاده از پايگاه داده خود را زمان بندي کنند که در اين حالت پهناي باند شبکهاي هم که به اين پايگاه داده متصل است بايد از پيش تخصيص داده شود. از آنجايي که دسترسي اختصاصي به يک پايگاه داده غير عملي است مکانيزمهايي لازم است که بر اساس آن منابعي مانند حافظه, پردازنده و ديسک در لحظاتي خاص در اختيار گريد قرار گيرد تا به انجام درخواست رسيده همت گمارد.
ادعايي بر اين مبنا وجود ندارد که سرويسهاي ارائه شده در اين بخش تماما نيازهاي گريد و پايگاههاي دادهي آن را پشتيباني ميکنند. بلکه اين سرويسها فقط بنابر تجربيات سيستمهاي مبتني بر پايگاه داده طراحي شدهاند و واضح است که با گسترش گريد نياز به توليد سرويسهاي بيشتري احساس خواهد شد. سرويسهايي که در اين بخش نام برده شدند تقريبا سطح پايين و عمومي هستند و سرويسهاي سطح بالاتر در نرمافزارهاي کاربردي گريد قرار خواهند گرفت.
2.2. مجتمع کردن پايگاههاي داده در گريد
يکي از مزاياي مهم گريدهاي داده امکان مجتمع سازي منابع توزيع شده است. در اين بخش نشان خواهيم داد سيستم مبتني بر سرويس بخش قبل چگونه در اين مجتمع سازي به ما کمک خواهد کرد.
در روشي که ارائه خواهيم کرد از يک ميانافزار مبتني بر گريد استفاده خواهيم کرد که به وسيلهي آن يک پايگاه داده مجتمع شدهي مجازي خواهيم داشت که از اين پس نرمافزارهاي کاربردي به جاي استفاده مستقيم از پايگاههاي داده با اين ميانافزار به تعامل خواهند پرداخت. با چنين کاري يک سيستم مديريت پايگاه داده مجازي خواهيم داشت که دقيقا همان سرويسهايي را که در بخش قبل اشاره کرديم پشتيباني ميکند اما در واقع هيچ نوع دادهاي را در خود ذخيره نمي کند و از ساير منابع ذخيره سازي استفاده ميکند. براي انجام فعاليت بر روي چنين پايگاه داده مجتمع شدهي مجازي از يک ميانافزار سرويسهاي مجتمع[5] استفاده ميشود که با پايگاههاي داده مستقيما تبادل داده انجام ميدهد
حالت ايده آل براي ساخت چنين سيستمي استفاده از ابزاري است که بتواند مجموعهاي از پايگاههاي داده را بگيرد و با استفاده از آنها يک پايگاه داده مجازي بسازد. حال بايد به توصيف پيامدهاي چنين ابزاري بپردازيم.
روش مبتني بر سرويسي که در بخش قبل بررسي کرديم با قرار دادن استانداردهايي بر تعريف سرويسها در راه مجتمع کردن پايگاههاي داده به ما کمک بسياري خواهد نمود. هرچند به علت ناهمگوني منابع امکان استانداردسازي کامل وجود ندارد, اما اين ابزار ميتواند به شکل زير اقدام به ساختن پايگاه داده مجازي نمايد:
اين ابزار, براي هر سرويس بايد در تمام دادگان پايگاههاي داده موجود در گريد به جستجو پردازد تا قابليتهاي آنان را شناسايي کند. سپس با اطلاع از ميانافزار مورد استفاده و امکاناتي که توسط آن قابل استفاده هستند گزينههاي مختلف براي مجتمع سازي سرويسها به دست ميآيند. اگر تعداد گزينهها بيشتر از يک باشد يکي از آنها انتخاب شده و در ليست سرويسهاي گريد قرار ميگيرد ولي اگر تعداد گزينهها صفر باشد, به کاربر اطلاع داده ميشود که عمليات مورد نظر قابل انجام نيست و بايد نمي تواند از سرويس مورد نظر استفاده کند.
پياده کردن تمام سرويسهايي که در بخش قبل اشاره شد پيامدهاي خاصي را به دنبال خواهد داشت که در ادامه توضيح داده خواهند شد.
[1] Query
[2] Bulk Loading
[3] Notification
[4] Scheduling
[5] Service Federation Middleware