1. مهمان گرامی، جهت ارسال پست، دانلود و سایر امکانات ویژه کاربران عضو، ثبت نام کنید.
    بستن اطلاعیه

آشنایی با Borland Interbase و مقایسه آن با MySQL و Micro$oft SQL Server

شروع موضوع توسط para3to ‏11/10/11 در انجمن Delphi

  1. کاربر ارزشمند❤

    تاریخ عضویت:
    ‏17/5/11
    ارسال ها:
    39,257
    تشکر شده:
    47,235
    امتیاز دستاورد:
    170
    آشنایی با Borland Interbase و مقایسه آن با MySQL و Micro$oft SQL Server
    ​
    [HR][/HR] اینتربیس چیست ؟

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