اينتربيس چيست ؟

اينتربيس يك 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