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

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