اينتربيس چيست ؟
اينتربيس يك RDBMS محصول شركت بورلند است كه بخاطر footprint كوچك ، هزينه پايين و نيازمندي به ادمينيستريشن !! در حد صفر ، از ساير DMMS ها مجزا ميشود.و در دو نسخه سرور و دسكتاپ ، توسط بورلند عرضه ميشود .
اينتربيس را كجاها ميتوان اجرا كرد ؟
اينتربيس را ميتوان بر روي سيستم عاملهاي ويندوز( 2000، 2003 ، NT ، XP ) ، لينكس ( Redhat, SUSE( ، سولاريس ( 7و8و9) و پلتفرمهاي جاوا و دات نت ، اجرا نمود.
چه IDE هايي از اينتربيس حمايت ميكنند ؟
Delphi , Kylix, CPP Builder, C sharp Builder, J Builder بطور درون ساخت و مجتمع ، از اينتربيس حمايت ميكنند . براي مثال ، تصويرهايي از كامپوننتهاي كار با اينتربيس را در محيط دلفي ميتوان مشاهده نمود :
علاوه بر آن ، حمايت اينتربيس از JDBC , ODBC باعث ميشود كه IDE هاي ديگري نيز از آن طريق بتوانند از آن استفاده كنند.
ويژگيها . مزايا :
اينتربيس داراي يك معماري MultiVersion است كه توسعه دهندگان را از نگراني درباره مسائل همزماني ، بازيابي از برخورد و مديريت حافظه ، رهايي ميبخشد.
اينتربيس براي جايي طراحي شده كه هيچ ديتابيس ادميني حضور نداره ! crash recovery هاي اتوماتيك ، بك آپ هاي آنلاين ، مديريت اتوماتيك كاربران از جمله اين موارد است . بهينه سازي مبتني بر هزينه ي كوئري ها ، garbage collection خودكار و rebalance كردن ايندكسها بصورت اتوماتيك ، از جمله مواردي ست كه نياز به حضور ادمين را تقليل ميدهد.
Cross Platform بودن ، از ديگر ويژگيهاي اينتربيس هست كه باعث ميشود بتوان آنرا در ويندوز ، جاوا ، دات نت ، لينكس و سولاريس ، اجرا نمود.
Foot print پايين ، اين امكان را فراهم ميسازد كه بتوان اينتربيس را حتي بر روي سيستمي با 32 مگابايت فضاي RAM و 15 مگابايت فضاي ديسك سخت هم نصب و استفاده نمود.
چه كساني از اينتربيس استفاده ميكنند ؟
شركتهايي مانند متورولا ، نوكيا ، بوئينگ و بخشهايي از ارتش ايالات متحده و سازمان فضايي ناسا ، از جمله مشتريان اينتربيس هستند.
اينتربيس و رقبا :
اينتربيس و MySQL :
مزاياي اينتربيس درمقابل MySQL را ميتوان بصورت فهرست وار زير ، ليست كرد كه در ادامه ، توضيح مختصري نيز درباره برخي از آنها ارائه خواهد شد :
- تريگرها
- Stored Procedure ها
- رخداد هاي سمت كلاينت
- پشتيبان گيري آنلاين
- Crash Recovery سريعتر
- ارائه انواع داده اي جهت محاسبات دقيقتر اعشاري
- كنترل دسترسي آسانتر توسط Role ها
- View ها
- ارائه انواع رشته اي ساده تر و سازگارتر با استانداردهاي ANSI
- Default Value هاي قدرتمندتر .
- ابزارهاي Performane Monitoring كاراتر
- Configuration Option هاي بسيار كمتر و ساده تر
- N-way Replication
پشتيبان گيري آنلاين :
InnoDB يك موتور ديتابيس MySQL است كه امكان پشتيبان گيري آنلاين را فراهم ميكند ( و فكر ميكنم تنها گزينه ي موجود باشد ) ، براي استفاده از آن ، بايستي InnoDB Hot Backup را به قيمت سالانه ي 450 دلار و يا دائمي 1150 دلار خريداري نماييد . اين درحاليست كه چنين امكاني بصورت درون ساخت در اينتربيس موجود هست . IBConsole براي چنين روزهايي در اينتربيس بوجود آمده !
سرعت ريكاوري :
مدت زمان لازم براي ريكاور كردن يا ريستارت كردن يك MySQL ، به سايز لاگهاي تراكنشهايي بستگي دارد كه بايستي رولبك ! و .. شوند بستگي دارد كه حتي آن هم به نحوه كانفيگ كردن ديتابيس توسط ادمين بستگي پيدا ميكند.
در حاليكه ريكاوري يا ريستارت بر روي اينتربيس ، بصورت * آني * صورت ميگيرد ، به اين دليل كه هيچ تغييري من جمله برگرداندن تراكنشها و ... لازم نيست كه بر روي ديتابيس صورت بگيرد . بلكه بجاي آن ، اينتربيس بسادگي يك بيت وضعيت را براي هر تراكنش ، ست ميكند ! و versioning engine بطور اتوماتيك ركوردهاي مزبور را درنظر نميگيرد . اين ركوردها هم در هنگام استفاده عادي از ديتابيس و بدون اينكه فشار جديدي به سيستم تحميل كنند ، بطور خودكار توسط Garbage Collector موجود در اينتربيس ، حذف ميشوند .
Domain ها :
موقعيتي را در نظر بگيريد كه ميخواهيد يكي از انواع داده اي فيلدهاي جداول را تغيير بدهيم . مثلا فيلدي براي شماره قطعات داشته ايم كه اكنون نياز به ذخيره اعداد بزرگتري داريم .... در هنگام استفاده از MySQL ، راه حل اين هست كه فيلد مزبور را در همه جدولهايي كه در آنها وجود دارد ، تغيير دهيم !
ولي اينتربيس ، نوع داده اي بنام Domain تعريف كرده كه آنرا ميتوانيم بر حسب يكي از انواع داده اي موجود در اينتربيس ،تعريف كنيم . مثلا در موقعيت بالا ، فرض كنيم كه فيلد اوليه ، 10 رقمي بوده باشد ، پس در اينتربيس ، چنين تعريف شده :
CREATE DOMAIN PART_NO_TYPE VARCHAR(1O) NOT NULL
و اكنون كه ميخواهيم براي مثال ، سايز آنرا به 14 كاراكتر تغيير دهيم ،كافيست كه چنين عمل كنيم :
ALTER DOMAIN PART_NO_TYPE VARCHAR(14)
همين ! ديگه لازم نيست به سراغ تك تك جداول برويد و تغييرات را اعمال كنيد !
ساير موارد :
اينتربيس علاوه بر پروتكولهاي TCP/IP و NetBEUI كه توسط MySQL نيز پشتيباني ميشود ، از IPX/SPX نيز پشتيباني ميكند.
ماكزيمم سايز ديتابيس در MySQL 4.1 alpha ، به ميزان 64000 گيگابايت ميباشد و اين سايز در اينتربيس ، * نامحدود * است
اينتربيس بر خلاف MySQL 4,1 alpha داراي انواع داده اي بولين ، نامريك ، دسيمال و كاراكتارهاي استاندارد Ansi نيز ميباشد .
اينتربيس بر خلاف MySQL 4.1 alpha ، از انواع Replication هاي N-way و سنكرون نيز حمايت ميكند.
اينتربيس و Micro$oft SQL Server :
مزاياي اينتربيس نسبت به MsSQLServer عبارتند از :
- Crash recovery سريعتر
- مديريت ايونت ساده تر
- سايز كوچكتر
- هزينه هاي مالكيت و آموزش كمتر
- نيازمنديهاي سيستمي كمتر
- پشتباني Cross Platform
- گزينه هاي Deployment متنوع تر
- همزماني بيشتر در محيطهاي read/write
هنگامي كه سرويسهاي data analysis به يك view يه با ثبات از ديتا در يك زمان خاص احتياج دارند ، مكانيزم SQL Server اين هست كه با فراهم كردن قفلها ، ساير كاربران را از دسترسي به اطلاعاته مورد تحليل باز ميدارد تا كار تحليل تمام شود . !!
در حاليكه در اينتربيس چنين امكاني را بدون نياز به قفل كردن داده ها و مانع شدن از دسترسي كاربران به داده ها ، در اختيار داريم ، بدين صورت كه اينتربيس از ديتاهاي مورد نظر snap shot تهيه ميكند ...( و اگر اشتباه نكنم ، اين همان ايده اي است كه ماكروسافت بالاخره در SQL Server 2005 از آن تقليد كرده ! ) .
نحوه رفتار با Lock ها :
موقعيتي را در نظر بگيريد كه كاربر الف ، ركوردي را آپديت ميكند و سپس بدون كاميت كردن تراكنش مربوطه ، براي نماز و ناهار!! اتاقش را ترك ميكند . در همين حال ، كاربر ب ، دستور select ي اجرا ميكند كه حاوي ركورد قفل شده ي كاربر الف باشد !
مواجه ي SQL Server : تراكنش كاربر ب ، تا هنگامي كه تراكنش كاربر الف ، آزاد نشده ، بايستي كه منتظر بماند !! راه حل ماكروسافت به اين مشكل ، اين بوده كه time out در نظر بگيرد كه توسط دستور SET LOCK_TIMEOUT اعمال ميشود . ولي نقطه ضعف اين راهكار در اين هست كه اين دستور ،همه تراكنشهاي كانكشن جاري را تحت تاثير قرار ميدهد .
مواجه ي اينتربيس : اينتربيس سطوح ايزولاسيون تراكنش snap shot را فراهم نموده كه هميشه آخرين version از از سطري كه در زمان آغاز تراكنش ، commit شده بوده را ميخواند. كه نتيجتا" اخيارات زير را ممكن ميسازد :
يك : ميتوان عليرغم وجود يك نسخه commit نشده ، آخرين نسخه ي commit شده از سطر مزبور را خواند.
دو : ميتوان صبر كرد تا تكليف نسخه ي commit نشده ،معلوم شود !
سه : ميتوان فورا يك وارنينگ! دريافت كرد كه ميگويد نسخه اي commit نشده از سطر مزبور ، موجود است .
تنظيمات بالا ، در *سطح تراكنش* قابل تنظيم هستند . بنابراين انتخابي كه براي يك تزاكنش ميكنيم ، ساير تزاكنشها و بدتر از آن ، كل كانكشن را تحت تاثير قرار نميدهد.
اينتربيس ، از تريگرهاي Before هم پشتيباني ميكند ، در حاليكه Sql Server چنين امكاني ندارد . در عوض ماكروسافت تريگرهاي Instead of را ارائه كرده كه باز هم دچار مشكلاتي ميشوند كه در صورتي كه علاقمند بوديد ، در فرصته بعدي ، يك مطالعه موردي در اين زمينه ، ارائه ميشود !
سرعت ريكاوري بالاتر :
ريكاوري ديتابيسهاي SQL Server ، بستگي به check point هايي داره كه ادمين تعريف كرده و يا بطور اتوماتيك توسط خوده ديتابيس ، لحاظ ميشه . در هرحال ، براي ريكاوري ، لاگهاي تراكنشها توسط Sql Server پردازش ميشه و هي اونقدر به عقب برميگرده تا به آخرين check point برسد كه امري ست زمان بر !
در حاليكه اينتربيس براي ريكاوري ، از مكانيزم خشنگي استفاده ميكرد كه در بحث مقايسه اش با Sql Server به آن اشاره شد .
هزينه ها :
با فراموش كردن اين مطلب كه در ايران ميتوان نرم افزارها را به قيمت 350 تومان از حراجيهاي حوالي ميدان انقلاب و شايد داخل گاري ! تهيه كرد و با يادآوري اين مطلب كه * نرم افزار* در اون ور دنيا ، چيزي لوكس و تجملي نيست و حساب ، حسابه دودوتا چهار تا هست ! ، يك كم هم آمار و ارقام و هزينه هاي مالكيت را بررسي كنيم:
براي مثال ، هزينه مالكيت اينتربيس براي 20 كاربر و دوپردازنده ، 3300 دلار و براي Sql Server ، 4500 دلار هست و يا براي مثال ، هزينه اينتربيس 200 كاربره و چهارپردازنده ، معادل 7200 دلار و براي Sql Server معادل 20000 دلار ميباشه .
Deploy كردن ::
مثلا در مورد MSDE :: معايب : در درون MSDE ، توسط كارمندان بشر دوست ماكروسافت ، چيزي گذاشته شده بنام concurrency workload governor كه لطف ميكنه و باعث ميشه كه اگر تعداد concurrent batch workload هاي شما از پنج عدد بيشتر شد ، عمدا باعث كند تر عمل كردن سيستم بشه !! و هرچي از پنج تا بيشتر بشه ، سرعت سيستمتون را پايين تر مياره و كندتر ميكنه تا اونقدر شاكي بشيد و اشكتون دربياد كه * پول * بدهيد و نسخه گرانقيمتي از ماكروسافت خريداري كنيد !
حداكثر سايز ديتابيس در MSDE ، 2 گيگ است ! همين ! تاكيد ميكنيم كه سايز كل ديتابيس ! نه فقط مثلا سايز جداول !
ساير موارد :
عدم وجود مشكل lock escalation در اينتربيس
عدم وجود مشكل conversion deadlock در اينتربيس
بهره مندي اينتربيس از تريگرهاي before
توانايي اينتربيس در تعيين و كنترل نوبت اجرا شدن تريگرها
Crash recovery آني در اينتربيس
15 مگابايت فضاي ديسك سخت جهت نصب اينتربيس ،در مقابل حدودا 250 مگابايت فضاي مورد نياز Sql Server