آشنایی با Borland Interbase و مقایسه اجمالی آن با MySQL و Micro$oft SQL Server
اینتربیس چیست ؟
اینتربیس یک 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
دوشنبه 5 مرداد 1388 12:30 PM
تشکرات از این پست