میخواستم کمی راجع به اینتربیس بدونم ، چند تا مقاله پیدا کردم ( از بورلند و ویکی پدیا و اینا !) و خوندم ، این خلاصه چیزهایی هست که یاد گرفتم ! برای صفرکیلومترهایی مثل خودم ، شاید جالب باشه

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


اینتربیس یک 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