1 . مقدمه: شي گرائي از همان روزهاي اوليه ظهورش به عنوان يک الگو برنامه نويسي قوي و مفيد شناخته شد. بيشترين قدرت شي گرائي ناشي از قابليت ان در مدلسازي پديدهاي دنياي واقعي مي باشد. قدرت ديگر شي گرائي استفاده مجدد کد( code reusable ) مي باشد که باعث مي شود ميزان کد مورد نياز به شدت کاهش يابد.زبانهاي برنامه نويسي بانکهاي اطلاعاتي شي گرا قدرت زبانهاي شي گرا و سيستم هاي ذخيره و بازيابي اطلاعات را ترکيب کرده و به سيستم هاي بسيار قدرتمندي تبديل مي شوند.ما در اين تحقيق سعي مي کنيم خصوصيات يک سيستم شي گرا را بررسي کرده و نقاط قوت و ضعف بانکهاي شي گرا را بيان مي کنيم.
2. موفقيتهاي بانک اطلاعات شيئ گرا
OODB به نسبت سيستم رابطه اي، نمايش اشيائ مختلط و مرکب را بسيار اسان کرده است.در اين قسمت ما در باره بعضي از موفقيت هاي OODB صحبت مي کنيم :
OODB به افراد اجازه تعريف تجريد را مي دهد، توسعه بعضي از ارتباطات را اسان مي کند، نياز به کليد هاي تعريف شده توسط کاربر را از بين مي برد ،مجموعه جديدي از تساوي مستندات را توسعه داده است، در بعضي موارد نياز به پيوند را حذف مي کند ، در بعضي موارد کارايي بيشتري نسبت به مدل رابطه اي دارد، براي versioning (تغييرات چند نسخه اي) و تراکنش بلند مدت پشتيباني مي شودو در نهايت جبر شيئ گرا توسعه يافته است.
OODB به افراد اجازه تعريف تجريد را مي دهد
OODB قابليت تعريف مجردات جديد و کنترل پياده سازي انها را داراست.مجردات جديد ميتوانند ساختمان داده مورد نياز براي کارهاي پيچيده را تطبيق دهند.به همين خاطر ، بسته هاي OODB به کاربران اجازه تعريف کلاسهاي جديد با متد ها وصفات خاص خود را مي دهند ، کلاسهايي دارند که صفات ومتد هاي خود را از کلاسهاي اصلي به ارث مي برند،هر نمونه از کلاس را با يک شناسه واحد مي سازد،نمونه ها را تکي يا دسته جمعي بازيابي مي کندو متد ها را بار و اجرا ميکند.OODB همچنين تعريف يک شيئ به عنوان مجموعه اي از اشيائ ديگر را مجاز مي شمارد و اين مجموعه ها مي توانند در چندين مرحله تودرتو بيايند. همچنين خاصيت ها نيز ساختار مختلط دارند و مي توانند با استفاده از سازنده مجموعه تعريف شوند. بعلاوه ،مي توانند اشياء غير اصلي را به عنوان مقدار داشته داشته باشند ، که ساختار عميق اشياء تودرتو را ميسر مي سازد.
خواص چند مقداري در OODB براي شرح ساختمان داده هاي مختلط بکار مي روند.در مدل رابطه اي اين کار با استفاده از پيوندها و روابط اضافي انجام مي گيرد.يک مثال از OODB که شامل تمام ترکيب بالا باشد ENCORE مي باشد.مدل داده ها در ENCORE بر پايه داده مجرد مي باشد. ENCORE به ما اجازه استفاده از زيرنوع (وراثت) ، بسته بندي ، ساختارهاي مختلط ، شناسايي اشياء و متد هاي late binding را مي دهد. ENCOREهمچنين توانايي برقراري ارتباط بين اشياء بوسيله خاصيت ها را فراهم مي کند. در ENCORE ، يک خاصيت مي تواند بدون هيچ دستوري بين يک شيئ و مجموعه اي از اشيائ ارتباط برقرار کند ، که اين ممکن است بوسيله ارجاع مستقيم به شناسه مجموعه صورت گيرد يا با يکسان قرار دادن مقادير بعضي از خاصيت ها (پيوند) انجام شود.
OODB توسعه بعضي از ارتباطات را اسان مي کند
OODB طرحي براي ارتباط معکوس پيشنهاد مي کند، که نقش ارتباط دو طرفه بين دو شيئ را ايفا مي کند . اين درستي ارجاعات را با ايجاد يک ارجاع مشابه به محض ساخته شدن ان ، تضمين مي کند . يک مثال از OODB که به طور اتوماتيک از ارتباط معکوس پشتيباني مي کند ObjectStore مي باشد.
OODB نياز به کليد هاي تعريف شده توسط کاربر را از بين مي برد
مدل OODB يک OID دارد که بطور اتوماتيک توسط سيستم ساخته مي شود و يکتايي هر شيئ را تضمين مي کند.اين خاصيت بهمراه حذف نياز به کليد هاي تعريف شده توسط کاربر مزاياي ديگري براي OODB به ارمغان اورده است :
1) OID نمي تواند بوسيله برنامه هاي کاربردي اصلاح شود.
2) شناسه اشياء ، يک شناسه سازگار و جداگانه را فراهم مي کند که به چگونگي دسترسي يا ايجاد شيئ بستگي دارد.
بنابر اين دو شيئ متفاوتند اگر OID هاي متفاوتي داشته باشند، اگرچه آنها ساختار يکساني داشته باشند و براي همه خواص ، مقادير يکسان باشد.
توسعه مجموعه جديدي از تساوي مستندات
در مدل رابطه اي تساوي هميشه بر پايه مقدار بود ، انجا دو تاپلي زماني يکي مي شدند که تمام صفات کليد انها مقادير يکساني داشته باشند . بهرحال در OODB انواع مختلف تساوي ها تعريف و توسعه داده شده اند :
1. تساوي شناسه اشياء :دو شيئ وقتي برابرند که OID يکساني داشته باشند
2. تساوي مقدار اشياء: اين به دو صورت تعيين مي گردد.
• دو شيئ اوليه برابرند اگر مقادير يکساني داشته باشند.
• دو شيئ غير اصلي برابرند اگر داراي تعداد خواص برابر باشند و براي هر خاصيت مقدار برابر داشته باشند.
3. برابري مقادير خواص.
4. برابري شناسه هاي خواص.
OODB نياز به پيوند را کاهش مي دهد
قابليت هدايت از طريق ساختار اشياء و بدست اوردن عبارات مسير در صفات شيئ ، يك ديد كلي از پيوند ها در OODB را به ما مي دهد . پيوند رابطه اي يك مكانيزم براي ارتباط دو رابطه بر پايه مقادير متناظر يا صفات روابط مي باشد.از انجائيكه در OODB ممكن است جفت متناظري از صفات داشته باشيم ، هنوز پيوند رابطه اي ضروري بنظر مي رسد. براي مثال فرض كنيد ما يك كلاس student و يك كلاس school داريم و هر دوي اينها صفات name و age را دارند كه دامنه اين دو در دو كلاس متفاوت مي باشد و حال مي خواهيم بر پايه مقادير اين صفات ارطباطي بين دو كلاس برقرار كنيم ! ( تمام دانش اموزاني كه سن شان از سن مدرسه شان كمتر باشد ) .
ولي همانطور كه در بالا اشاره شد ، عبارات مسير در مقايسه با مدل رابطه اي بطور چشمگيري نياز به پيوند كلاس ها را كاهش مي دهند.اين همانوقتي است كه نياز به پيوند رابطه اي حذف مي شود. براي مثال وقتي دامنه صفات كلاس A ،B باشد، اوردن OID اشياء در يك كلاس كه به عنوان مقادير يك صفت در كلاس ديگر ذخيره شده اند ، نياز به يك پيوند ضمني را از بين مي برد.
بنابراين در OODB بين پيوند ضمني كه وراثت تودرتوي اشياء سرچشمه مي گيرد و پيوند صريح كه شبيه پيوند رابطه اي ، دو شيئ صريحا با تساوي مقادير يا شناسه با هم مقايسه مي شوند ، تفاوتي وجود دارد . بعلاوه تمام پيوند هاي صريح نمي توانند در زبان رابطه اي تعريف شوند ، زيرا هر گزاره در مدل رابطه اي تنها ميتواند با صفات تجزيه ناپذير درگير شود. Union شيئي را که در مجموعه P ياQ يا هر دو باشد بر مي کرداند. Diffrence اشيائي که در P باشند ودر Q نباشند را باز مي گرداند.select يک زير مجموعه از ورودي را باز مي گرداند. Generate اشيائي از مجموعه هاي ورودي مي سازد. Map مجموعه اشياء نتايج هر برنامه کاربردي را بر مي گرداند.
OODB در بعضي موارد کارايي بيشتري نسبت به مدل رابطه اي دارد
اگر چه اكثر OODB هاي موجود سيستم هاي بانك اطلاعات كاملا مستعدي در قياس با RDB هاي كنوني نيستند ، ولي به نسبت چند منبع بهره كارائي دارند :
1. در يك OODB ، مقدار يك صفت يك شيئ X كه دامنه اش شيئ Y ميباشد، OID مربوط به Y است. بنابراين اگر يك برنامه كاربردي X را بازيابي كرده باشد و بخواهد Y را هم بازيابي كند، سيستم بانك اطلاعات ممكن است شيئ Y را با نگاه به OID ان بازيابي كند. اگر OID يك ادرس فيزيكي يك شيئ باشد، شيئ ممكن است مستقيما بازيابي شود واگر ادرس منطقي باشد ، شيئ ممكن است با مراجعه به hash table بدست ايد (فرض كنيد سسيستم يك hash table را براي نگاشت OID به ادرس فيزيكي نگهداري مي كند). ازانجائيكه RDB ها OID ها را نگه داري نمي كنند، اين كار براي انها غير ممكن است.
2.دومين منبع كارائي بهتر OODB ها به نسبت RDB ها اين است كه اكثر انها زمانيكه شيئ در حافظه بار مي شود، OID هاي ذخيره شده در شيئ را به اشاره گر حافظه تبديل ميكنند. از انجائيكه RDB ها OID ها را ذخيره نمي كنند ، انها نمي توانند اشاره گر هاي حافظه را در تاپلي هاي ديگر ذخيره كنند.سهولت هدايت از طريق اشياء مقيم حافظه ، چهره غايب اصلي RDB مي باشدو اشكال بزرگ ان نميتواند با داشتن فضاي بافر بزرگتر در حافظه رفع شود. بنابر اين براي برنامه هاي كاربردي كه به هدايت مكرر از طريق اشيائ متصل بار شده در حافظه نياز دارند، OODB بهتر عمل مي كند.
3.همچنين، اگرچه OODB ها شاخص گذاري نشده اند، شايد بهترباشد پرسش هاي دلخواه متناسب با ساختار شيئ را اجرا كنيم كه بوسيله مرور ترتيبي، مسير ارجاع بين اشياء را استخراج مي كند. زمانيکه پرسش بطوريکه با ارجاع پشتيباني نشود ، فرمول بندي شود ، پرسش بصورت مرور ترتيبي پردازش مي شود. بهرحال پرسش هايي که در روابط شيئ فرمول بندي شده اند و کاملا با ارجاع مدل شده اند ، با بي کفايتي اجرا شده اند.
OODB براي versioning و تراکنش بلند مدت پشتيباني مي شود
تغييرات چند کاربره و تراکنش بلند مدت در مدل رابطه اي حضور نداشت ولي بعضي ازOODB ها ان را با تسهيلات خيلي محدود ارائه مي کنند.
OODB جبر شيئ گرا توسعه يافته است
نه به اندازه پيشرفت جبر رابطه اي ، جبر شيئ گرا انقدر بهبود يافته که پنج شيئ نگه دار را تعريف کرده : union , diffrence , select , generate ,map . بقيه عملگر ها مانند intersection ممکن است با همين عملگر هاي پايه تعريف شوند. در حالي که پردازه نگاشت براي عملگر هاي union , diffrence , map يک به يک مي باشد ، نگاشت عملگر هاي select , generate يک به چند هستند . نگه داري شيئ بدين معناست که عملگر هاي جبر اشيائي را برمي گردانند که که منطبق بر کلاسهاي از پيش تعريف شده بانک اطلاعات باشد و شيئ جديد نمي سازد.
3. ضعف هاي بانک اطلاعات مدل شيئ گرا
انتظار مي رود که فناوري شيئ گرا يک پرش کوانتومي به در فناوري بانک اطلاعات را بهمراه داشته باشد ولي مدل OODB بخاطر نقاط ضعفي که هنوز در ان هست قادر به انجام ان نيست
در OODB فقدان يک طرح پايه که کاربران سيستم هاي بانک اطلاعات به ان عادت داشته باشند ، به چشم مي خورد.طرح شامل اينهاست: فقدان همکاري بين RDB ها و OODB ها، کمبود بهينه سازي پرسش ها ، فقدان جبر پرسش استاندارد ، فقدان سهولت پرسش ، عدم پشتيباني از نما ، نگراني امنيت ، عدم پشتيباني از تغييرات تعريف کلاس پويا ، پشتيباني محدود از قيود ثابت ، امکانات محدود انجام ميزان سازي ، پشتيباني اندک از اشياء مختلط ، يکپارچگي محدودد
با سيستم هاي برنامه نويسي شيئ گراي موجود ، بازدهي محدود .
RDB ها و OODB فقدان همکاري بين
براي اينکه OODB ها يک تاثیراساسي به بازار بانک اطلاعات وارد کنند ،بايد اين موارد انجام شود :
1. OODBهآ بايد سيستم هاي بانک اطلاعات کاملا مستعد و به اندازه کافي سازگار با مدل رابطه اي بشوند ، يک مسير بسوي همزيستي و مهاجرت تدريجي از محصولات جاري به محصولات جديد نياز است.
2. ابزار دستيابي به بانک اطلاعات و ابزار توسعه برنامه ها بايد براي اينگونه بانک هاي اطلاعات توسعه يابند.
3. بايد معماري OODB وRDB يکپارچه شود.
4. بايد مدل هاي داده OODB و RDB يکپارچه شود.
کمبود بهينه سازي پرسش ها
يکي از بزرگترين مسائل OODB ها بهينه کردن اعلان پرسش ها مي باشد. پيچيدگي هاي اضافي مدل داده شيئ گرا بهينه سازي پرسش هايOODB را دشوار ساخته است. اين پيچيدگي اضافي بدين دلايل مي باشد :
1. انواع داده اضافي – کلاس هاي مشتق شده و انواع تعريف شده توسط کاربر مي توانند هم به بهينه سازي پرسش ها کمک کرده وهم ان را خنثي کنند.
2 . تعويض گوناگوني نوع ها- پرسش ها ممکن است بر پايه عملگر هاي روي مجموعه باشند ولي بهينه سازي که به مجموعه ها ( يا مجموعه هاي چند گانه يا ليست يا..) بستگي دارد ، به ترکيب با بهينه سازي انواع اشياء درون مجموعه ها ، نياز دارد.يک بهينه ساز پرسش شيئ گرا بايد قادر به بکار بردن بهينه سازي ويژه انواع و بهينه سازي ارتباط اشياء انواع مختلف باشد.
3.اشياء مختلط ، متد ها و بسته بندي به پيچيدگي پردازش پرسش درOODB اضافه مي کنند. اشياء مختلط عبارات مسير هايي مي سازند که پردازش پرسش ها را پيچيده مي کند.ساختمان شاخص هاي عبارات مسير بويژه در بخش متد هاي دلخواه در مسير ، پردازش پرسش ها را پيچيده مي کند. اين مشکل بدتري است اگر متد ها تاثيرات جانبي داشته باشند. مشکل ديگر عبارات مسير اين است که پيچيدگي زماني به اندازه متد هاي مسير را پيشنهاد مي کند که مکن است خيلي ناکارامد باشد.
4.زبان هاي پرسش OODB استفاده از ساختار هاي تودرتو را پشتيباني مي کنندکه ممکن است پيچيدگي پردازش بهينه سازي را خيلي بيافزايد و ان را از يک مشکل محلي به يک مشکل سراسري تبديل کند که به دانش کل عبارات پرسش نيازمند است.
5. هويت شيئ – وقتي که اشياء هويت داشته باشند ، چه چيزي تساوي دو شيئ را تشکيل مي دهد. اين به زبان واگذار مي شود ، جائيکه عملگر هاي تساوي در گزاره ها استفاده مي شوند و يک تصميم در خصوص ساخت اشياء جديد با يک پرسش بايد اتخاذ شود. بهينه سازي مدل هاي شيئ گرا بايد قادر به درگيري با ساخت اشياء جديد و تعاريف گوناگون تساوي باشد.بدليل مسائلي که در بالا بحث شد ،بهينه سازي پرسش هاي شيئ گرا خيلي دشوار است و هنوز در مرحله تحقيق قرار دارد. OODB هاي امروزه استراتژي بهينه سازي ساده تر را پيشنهاد مي کنند. همچنين بهينه سازي پيوند ها موضوعي است که بايد بيشتر مورد توجه قرار گيرد.
فقدان جبر پرسش استاندارد
فقدان جبر پرسش استاندارد يکي ديگر از ضعف هاي اصلي OODB مي باشد و همچنين بهينه سازي پرسش ها را هم خراب مي کند . در مدل رابطه اي شباهت نزديکي بين عملگر هاي جبر و سيستم فيزيکي سطح پائين وجود دارد. ولي در OODB ها بين اين دو هيچ شباهتي وجود ندارد
فقدان سهولت پرسش
اکثر OODB ها از فقدان سهولت پرسش رنج مي برند . در چند سيستمي هم که مفاهيم سهولت پرسش را فراهم کرده اند، زبان پرسش با ANCI SQL سازگار نمي باشند. سهولت پرسش شامل اينها نمي باشد : پرسش هاي تودرتو ، پرسش هاي مجموعه (union intersection , difference) ، تجمع توابع ، GROUP BY وپيوند کلاس هاي چندگانه.همچنين هيچ شيئ پرسش استانداردي وجود ندارد و هنوز سعي و تلاش زيادي براي مطرح شدن object SQL نياز مي باشد.
عدم پشتيباني از نما
OODB ها از نما ها پشتيباني نمي کنند . ولي اگر چه مشکلات بسياري وجود دارد، توافقاتي براي چگونگي اجراي مکانيزم نما ها براي OODB صورت گرفته است.توسعه نماهاي شيئ گرا با طرح هايي مانند هويت شيئ بسيار پيچيده است.( هويت شيئ در يک نما چيست ؟). از طرف ديگر ، دلايلي دارند که بسته بندي و وراثت ، تعريف نماي صريح را غير ضروري مي کند.OODB نگراني امنيت در زمانيکه مدل رابطه اي Athorization را پشتيباني مي کردند اکثر زبان هاي OODB از ان پشتيباني نمي کردند.مدل رابطه اي به کاربران اين اجازه را مي دهند که امتيازخواندن يا تغيير تعاريف و تاپلي ها در روابط و نماها را Revoke , Grant کنندبعضي از OODB ها نياز دارند که کاربر صريحا قفل ها را قرار داده و مدیریت کنند ولي در مدل رابطه اي اين عمل بصورت خودکار انجام مي شود.
عدم پشتيباني از تغييرات تعريف کلاس پويا
علاوه بر اين حقيقت که هنوز هيچ مدل داده استاندارد تنهايي براي OODB ها وجود ندارد ، بيشترOODB ها تغيرات پويا را در شماي بانک اطلاعات مجاز نمي دانند، مانند : اضافه کردن يک صفت يا متد جديد در يک کلاس،اضافه کردن يک ابر کلاس به يک کلاس، حذف يک ابر کلاس از يک کلاس ، اضافه کردن يک کلاس، حذف کردن يک کلاس . ولي مدل رابطه اي اين را با دستور Alter در اختيار کاربران ميگذارد.اکثر OODB ها مديريت خودکار بسط کلاس را ارائه نمي دهند و اگر يک بسط کلاس لازم باشد ، کابر بايد يک مجموعه براي ان تعريف کند و ان را در insertion , deletion به روز نگه دارد.
پشتيباني محدود از قيود ثابت
هيچ مکانيزمي براي مواردزير وجود ندارد:
اعلان صفات کليدي يا قيود يکتا ، قيود ثابت صريح ، پيش شرط و پس شرط متد ها . اگر چه تمام اين موارد مي توانند با استفاده از متد ها انجام شوند ولي قيود ثابت صريح کاربردوستانه ترند و براحتي براي بازرسي و تبديل قابل دسترسند.
امکانات محدود انجام ميزان سازي
اکثر OODB ها امکانات محدودي براي انجام ميزان سازي ارائه مي کنند.ولي در مدل رابطه اي با فراهم اوردن تعداد بسيار زيادي از پارامتر ها که مي توانند بوسيله مدير سيستم تنظيم شوند ، اجازه انجام ميزان سازي سيستم را مي دهد.
پشتيباني اندک از اشياء مختلط
اشياء مختلط هنوز کاملا پشتيباني نمي شود. همه ارجاعات براي اشياء مستقل مي باشند و مفاهيم ارنباطات ويژه بين اشياء مختلط در عمليات تدارک داده شده توسط کاربران نهفته است.
يکپارچگي محدودد با سيستم هاي برنامه نويسي شيئ گراي موجود
بازنويسي برنامه هاي شيئ گرا براي مديريت داده هاي مانا بسيار مشکل است . چندين مشکل پيش مي ايد :
1) برخورد نام گذاري.
2) سلسله مراتب کلاس ها بايد باز نويسي شود.
3) OODB ها تمايل به باز نويسي عمليات سيستم دارند.
بازدهي محدود
اگر همه برنامه هاي بانک اطلاعات فقط به مراجعه به OID نياز داشتند ، اشاره گرهاي حافظه يا اشياء بانک اطلاعات بقيه اشياء را با بازدهي دو يا سه برابر در حاافظه قرار مي دهند. بهرحال اکثر برنامه ها يي که به مرجعه به OID نياز دارند ، به بانک اطلاعات نيز دسترسي دارندو تجهيزات را به روز مي کنند. اين تجهيزات شامل اين موارد مي باشند : بار کردن بدنه بانک اطلاعات ، ساخت و بروز رساني و حذف اشياء منحصر به فرد ( همه در يک زمان) ، بازيابي يک يا چند شيئ از يک کلاس که شرايط جستجوي معين را قانع کند ، پيوند بيش از يک کلاس ، انجام تراکنش و…
OODB براي اينگونه برنامه ها هيچ گونه بازدهي نسبت به مدل رابطه اي ندارد.
منابع :
1. Achievement and weaknesses of object oriented databases , Sikha Bagui, Department of Computer Science, University of West Florida, U.S.A.
2. On type systems for object oriented database programming language, Yuri Leontiev , M. Tammer Ozsa , Duane Szafron,
استاد راهنما : دکتر رهگذر