آی تی نرد

اشتراک اطلاعات و تجربیات در زمینه ی توسعه ی دات نت و البته شیرپوینت

مقایسه ی Sql Server با MySql با استفاده از گفته های هر دو طرف

شاید در ابتدا به ذهن اغلب افراد بیاد که چه لزومی واقعا به این مقایسه هست؟ خب معلومه که Sql Server بهتره یا حتی برعکس MySql بهتر هست.

معمولا دوستان از جمله خود بنده همیشه سمتی هستیم که تجربیاتمون هست برای مثال اگه بیشتر یا فقط با Sql کار کرده باشیم مطمئنا طرف Sql خواهیم بود و بالعکس. ولی واقعیت این هست که برای زندگی حرفه ای راحت تر همیشه باید طرف درست بود، خب البته این درست بودن بستگی به پارامترهای زیادی داره برای مثال بودجه، زمان، توانایی فنی و موارد دیگه که در نهایت طرف درست رو مشخص میکنه.

از مطالب بالا میشه استنباد کرد که هیچ مطلبی نمیتونه طرف درست رو برای همه ی افراد مشخص کنه به دلیل همون پارامترهایی که در همه ی افراد ممکن هست متفاوت باشه. اما با کنار گذاشتن این موارد میشه این مقایسه رو انجام داد.

برای انتخاب صحیح باید از هر دو طرف اطلاعات داشت از همین رو در ادامه من از منظر Microsoft و Oracle مطلب رو ادامه خواهم داد و در انتها انتخاب درست مشخص خواهد شد.

ابتدا از منظر مایکروسافت بررسی و قضاوت کنیم:
ابتدا باید به یک سوال اساسی پاسخ داد کدام یک Open Source یا Commercial ؟ برای پاسخ باید ویژگی های هر کدوم رو بررسی کرد.

نرم افزارهای سورس باز معمولا قیمت های خیلی کمتری و یا شاید هم رایگانی نسبت به تجاری داشته باشند البته کاربرانی که این نرم افزارها رو پیاده سازی میکنند احتمالا قبول دارند که رایگان همیشه به معنای بدون هزینه نیست. بدین مفهوم که ممکن هست هزینه های پیاده سازی و نگهداری از این نرم افزارها در نهایت بیشتر شود.

برای مثال خود اوراکل توصیه میکند که هزینه های پشتیبانی برنامه رو هم پرداخت کنید تا در صورت بروز مشکل بتوانند به شما کمک کنند و سریع تر ان را رفع کنید.

نکته ی دیگه ای که در مورد برنامه های سورس باز وجود دارد این هست که به دلیل اینکه تعداد برنامه نویسان داوطلب برروی این برنامه ها(البته برنامه های بزرگی مانند همین MySql) معمولا زیاد هست و شاید توانایی همه ی این برنامه نویسان در سطح مناسب نباشد به راحتی برنامه دارای باگ و یا حفره های امنیتی شود در صورتی که فرایند شروع کار برنامه نویس برروی برنامه های تجاری(پولی) مطمئنا سخت تر و دارای نظارت بیشتر می باشد.
برای مثال یکی از روزهای بد MySQL روزی بود که دیتابیس سایت Zappos.com هک شد و نزدیک به 25 میلیون اکانت در اختیار هکرها قرار گرفت.

همچنین پاسخگویی به تهدیدات امنیتی و سرعت در جلوگیری از آسیب دیدن برنامه در نسخه های تجاری مطمئنا بیشتر هست.

برای مثال براساس اعلام NIST در 10 سال اخیر در دسته ی محصولات دیتابیسی مایکروسافت کمترین رخنه ی امنیتی را داشته و در عوض Oracle بیشترین آن را، طوری که در یک روز اوراکل 27 پچ برای MySql ارائه داد.

مقایسه ی امکانات:
به دلیل وجود امکانات زیاد در هر دو برنامه، امکانات رو به 7 دسته ی: engine, enterprise, security, tools, data warehouse, business intelligence, and big data تقسیم بندی میکنیم.

از کلیدهای بصری زیر به منظور مشخص کردن وضعیت پشتیبانی امکان استفاده خواهیم کرد:
* : امکان به صورت کامل پشتیبانی شده است.
+ : امکان به صورت نصفه نیمه و ناقص پشتیبانی شده است.
- : امکان پشتیبانی نشده است.

ابتدا موتور دیتابیس:
موتور در ساختار دیتابیسی هسته ی پردازش داده را بر عهده دارد کارهایی از قبیل افزودن، ویرایش، حذف و به روز رسانی و همچنین بهینه سازی، ایندکسینگ و دیگر موارد پردازشی سطح پایین از وظایف موتور دیتابیس میباشد.

ویژگی/قابلیت

MySql 5.5

Sql 2012

توضیحات

میزان سازی خودکار

-

*

خودکاره سازی میزان سازی و بهینه سازی دیتابیس و برداشتن بار این مسئولیت از دوش مدیر دیتابیس

عملیات آبشاری داده

*

*

حذف و یا به روزرسانی داده ها در جداول به هم مرتبط در صورت تغییر در جدول سطح بالاتر

نماهای ایندکس شده

-

*

بهینه کردن کارایی نماها(Views)

نمونه های متعدد

*

*

قابلیت داشتن چندین نمونه از "دیتابیس سرور" در یک سرور(Multiple Instances)

چند زبانه

*

*

قابلیت نمایش پیغامها و همچنین تاریخ و زمان و مبلغ و رشته و مرتب سازی آنها در زبان های مختلف

قوائد(Rules)

*

*

قابلیت جلوگیری و تعیین نوع داده ی ورودی معتبر در ستون موجود در جداول

Stored Procedures

*

*

قابلیت کپسوله و فشرده سازی دستورات پیچیده درون یک پراسیجر و فراخوانی ان درون و خارج از محیط دیتابیس

Transactions

*

*

قابلیت در نظر گرفتن مجموعه ای از دستورات به عنوان یک فرایند کاری و اجرای همه ی ان دستورات یا هیچ کدام انها

Triggers

*

*

اطلاع و عکس العمل براساس رویداد تعیین شده در دیتابیس برای مثال تغییر داده در یک جدول

توابع تعریف شده توسط کاربر

*

*

روش ساده سازی مسائل و دستورات پیچیده با تعریف تابع و برگرداندن نتیجه و مقدار

نوع داده تعریف شده توسط کاربر

-

*

قابلیت ایجاد انواع داده هایی که به صورت پیشفرض در دیتابیس موجود نیست و میتواند پاسخگوی نیازهای تجاری بیشتر باشد

نماها(Views)

*

*

روشی برای خلاصه کردن و مخلوط کردن سطرها و ستونها و استفاده از ان به عنوان یک جدول در دستورات sql

لاجیک UPSERT

*

*

عملیات UPSERT ترکیبی از عملیات درج و به روزرسانی توسط دستور Merge

آبجکت Sequence

-

*

شبیه به خصوصیت Identity برروی ستونها اما به جای بدست اوردن شماره ی بعدی از دیسک از حافظه استفاده میشود.

کوئری موازی

+

*

بهینه سازی اجرای کوئری ها و عملیات ایندکس کردن

Distributed Federated Query

-

*

دسترسی کوئری ها به داده ها در منابع نامتناجنس مختلف

اتصالات دیتبایس

-

*

دسترسی Sql به جداول موجود در منابع نامتناجنس مختلف

پشتیبانی از XML و پردازش آن

+

*

ذخیره سازی داده های نوع XML به عنوان یک نوع داخلی که قابلیت استفاده از تکنولوژی هایی مانند XQuery را فراهم می سازد

دسترسی به صورت رایگان

*

+

تنها نسخه ی Express نرم افزار Sql رایگان می باشد

پشتیبانی از سیستم عاملهای مختلف

*

-

MySql برروی Unix,Linux و همچنین ویندوز اجرا خواهد شد ولی Sql تنها در ویندوز قابل استفاده خواهد بود

استراتژی ذخیره چندیدن سطر

*

*

ذخیره سازی داده به روشی با اطمینان و کارایی و سرعت بیشتر در محیطهایی که فعل و انفعالات بالا قابل انجام هست

Service Broker

-

*

قابلیت ارتباط با چندین برنامه به صورت ناهمگام(Asynchronous)

جستجوی نوع Full-Text

*

*

دسته بندی داده در یک ستون رشته ای به منظور کوئری راحت تر

جداول ایندکس شده ی سازماندهی شده

*

*

استفاده از ایندکس های خوشه ای برروی کلید پرایمری به صورت پیشفرض

ایندکس های فیلتر شده

-

*

قابلیت فراهم کردن لوک اپی به زیرمجموعه های داده با کارایی بالا

ستونهای محاسباتی

-

*

با توجه به دستوراتی که در ان میتوان از داده های ستون های دیگر در همان جدول استفاده کرد ستونهای محاسباتی شکل میگیرد

جدول فایل

-

*

قابلیت ذخیره سازی فایلهای برنامه های ویندوزی در Sql

نوع داده ی سلسله مراتبی

-

*

ذخیره سازی و کوئری راحت تر در بین داده های سلسه مراتبی(Hierarchical)

XEvents

-

*

سیستم کلی هندل کردن رویدادها برای Sql و ویندوز سرور

CLR Integration

-

*

CLR های هاست شده برروی Sql اجازه ی مدیریت و دسترسی به stored procedure ها، trigger ها و برخی موارد دیگر را کدهای مدیریت شده خواهد داد.

دیتابیس ایمیل ادقام شده

-

*

فراهم کردن ارسال دسته ای ایمیل ها از دیتابیس های Sql

امکانات و ویژگی های سطح بالا Enterprise:
امکانات سطح بالا یا Enterprise به قابلیت های پیشرفته ای اشاره دارد که معمولا در محیطهای Enterprise یا متوسط و بزرگ استفاده خواهد شد.

ویژگی/قابلیت

MySql 5.5

Sql 2012

توضیحات

پشتیبانی 64 بیتی

*

*

پشتیبانی از سیستم های 64 بیتی

نماهای پارتیشنبندی شده ی توزیعی

-

*

روشی برای موثرسازی دسترسی یکپارچه به دیتابیس ها

Failover Clustering

*

*

هر دو برنامه از کلاسترینگ ویندوز پشتیبانی میکنند

همیشه فعال

-

*

Sql از سرورهای ثانویه به صورت همگام و ناهمگام پشتیبانی میکند تا در صورت fail شدن یک سرور برنامه از کار نیافتد

جابه جایی لاگ

-

*

افزودن لاگ فعل و انفعالات در لاگ دیتابیس که در سرور دیگری قرار دارد

Replication

*

*

هردو برنامه از رپلیکیشن پشتیانی میکنند

پشتیبانی چند-دستگاه

*

*

هردو برنامه در سناریوهای ادغام شده قابل اجرا هستند

فشرده سازی پیشرفته

*

*

کمک به فشرده سازی داده در دیتابیس به منظور کاهش حجم و افزایش کارایی عملیات I/O در sql

بکاپ آنلاین

*

*

امکان پشتیبان گیری از دیتابیس بدون نیاز به آفلاین کردن آن

پشتیبانی از SAN

*

*

در حالی که در هردو برنامه این امکان وجود دارد اما Sql قابلیت ذاتی و داخلی پشتیبانی از SAN را دارد

پردازش رویدادهای پیچیده

-

*

قابلیت پردازش رویدادهای پیچیده به دلیل وجود امکان StreamInsight

کیفیت داده

-

*

سرویسهای Data Qualities در sql باعث تصحیح، غنی کردن، استاندارد کردن و تک سازی کردن داده را با استفاده از روش knowledge-driven دارد

مدیریت داده های مستر

-

*

سرویس های Master Data در Sql امکان فراهم کردن راهکارهایی برای مدیریت داده های مستر دارد

اضافه کردن حافظه و پردازشگر

-

*

Sql اجازه ی افزودن حافظه و پردازشگر را در حال اجرا میدهد

تغییر شما در حال اجرا

-

*

تغییر شمای دیتابیس در حال اجرا در sql

مسئول منابع

-

*

فراهم کردن حداقل و حداکثر محدودیت مدیریت منابع به منظور پایداری کارایی

امنیت Security:
امنیت یکی از اولین مسائلی هست که به ذهن افراد خطور خواهد کرد و باید گفت Sql Server دارای امکانات پیشرفته ی امنیتی ذاتی و داخلی بهتری می باشد.

ویژگی/قابلیت

MySql 5.5

Sql 2012

توضیحات

پشتیبانی از Active Directory

-

*

به منظور پشتیبانی از AD هردو برنامه با استفاده از ابراز هویت Kerberos میتوانند از AD استفاده کنند

Role-Based

-

*

استفاده از نقشها و قرار دادن کاربران درون آن و تخصیص مجوزها به این نقشها

رمزگذاری SSL

*

*

رمزگذاری کردن ارتباطات TCP/IP به دیتابیس به منظور امنیت بیشتر

امنیت Stored Procedure ها

-

*

امکان تخصیص مجوز به Stored Procedure ها

امنیت جداول

*

*

امکان تخصیص مجوز به جداول

امنیت نماها

*

*

امکان تخصیص مجوز به نماها

حسابرسی(Auditing)

-

*

امکانات حسابرسی ذاتی و داخلی در sql

Transparent Data Encryption

-

*

پشتیبانی از رمزگذاری و رمزنگاری بلادرنگ داده ها و لاگ ها

Centralized Key Management

-

*

ذخیره سازی رمزگذاری شده ی کلیدها در دستگاههای سخت افزاری ماژول های امنیتی

ابزارها:
ابزارها در سیستم دیتابیس باعث راحتی و افزایش سرعت در مدیریت و توسعه خواهد شد. Sql Server دارای ابزارهای زیادی برای مدیریت یک یا چند سرور دیتابیس می باشد.

ویژگی/قابلیت

MySql 5.5

Sql 2012

توضیحات

مدیریت متمرکز

+

*

مدیریت یک یا چند سرور به صورت متمرکز از طریق یک مکان صورت میگیرد

دیباگر Sql یکپارچه

*

*

دیباگر به صورت یکپارچه در محیط تولید و توسعه قرار دارد

Profiler

-

*

ابزاری برای ارزیابی و نظارت بر کارایی و سلامت سرور

ابزار گرافیکی کوئری

*

*

اینترفیس گرافیکی برای ایجاد کوئری در دیتابیس

Database Tuning Advisor

+

*

Sql از بارکاری و حجم کاری جاری به منظور تعیین بهترین میزان سازی برای دیتابیس استفاده میکند

پاسخ توزیع شده

-

*

ابزاری برای پاسخ گویی به شبیه سازی حجم زیاد کاری در محیطهای ازمایشی برای بررسی تاثیرگذاری سخت افزارهای ارتقا یافته

ویزاردهای گرافیکی

+

*

Sql دارای ویزاردهای زیادی به منظور انجام وظایف مدیریت می باشد در حالی که MySql دارای چند دیالوگ باکس هست که به آن ویزارد میگویند(اوپس)

بررسی فعالیتها به صورت گرافیکی

+

*

MySql ابزار یا اینترفیس پایه ای و داخلی به منظور مونیتور کردن دیتابیس ندارد و باید از برنامه ی جداگانه ی Enterprise Monitor استفاده کند

مدیریت متمرکز سرورها

+

*

MySql توانایی اجرای دستورات Sql را به صورت همزمان در گروههای سروری ندارد

ابزارها (Utilities)

-

*

مدیریت Sql Server به عنوان یک منبع مرکزی به همراه داده های خلاصه و با جزئییات برای توجه به مسئله ی سیاست های بهینه سازی با در نظر گرفتن پارامترهای مختلف از جمله فضای فایل یا پردازشگر

مدیریت سرورها توسط سیاست (Policy)

-

*

مدیریت های براساس پالیسی اجازه ی مدیریت یک یا چند نمونه از sql را برپایه ی سیاستهای گسترده و وسیع میدهد

Maintenance Plan Wizard

-

*

ابزار گردش کاری برای خودکاره سازی و مطمئن شدن از بهینه بودن دیتابیس، بکاپ های مداوم و موارد دیگر استفاده میشود

Dedicated Administrator Connection

-

*

فراهم کردن راه هایی برای اشکال زدایی دیتابیس های مشغول با حجم کاری زیاد

Data-tier Application

-

*

امکان فراهم کردن برنامه ها و آبجکت های دیتابیسی داخل یک بسته ی مجزا و مستقل

Data Warehouse, Bussiness Intelligence and Big Data:
به زبان ساده تر قابلیت هایی هستند که میتوان به راحتی تصمیمات تجاری بهتر براساس داده های موجود گرفت. کاربران معمولا به دنبال داده هایی هستند که بتوان از آن استفاده ی تجاری کرد.
هر چند که ممکن هست داده ی تجاری موجود باشد اما کاربر نداند کجا به دنبال آن بگردد. قابلیت استخراج داده از چندین منبع داده ی متفاوت و پردازش و آنالیز آنها از قابلیت های مهم Sql Server می باشد.

ویژگی/قابلیت

MySql 5.5

Sql 2012

توضیحات

Bitmap Index Joins

-

*

قابلیت افزایش سرعت کوئری ها در Data warehouse توسط Bitmap Join

Common Table Expressions

-

*

امکان ایجاد نتایج دسته ای موقتی از کوئری و ارجاع دادن به کوئری های درون همان اسکوپ

xVelocity in-memory column store index

+

*

ستونی موجود در حافظه که باعث ذخیره سازی عملیات انتقال ایندکس با 10 تا 100 برابر سرعت و کارایی بهتر در کوئری های Data Warehouse می شود

تغییر کپچر یا گیراندازی داده

-

*

فراهم کردن راهی به منظور گیرانداختن عملیات CRUD در جداول

متحد Data Warehouse

*

*

هردو برنامه متحد یا شریکی برای بازاریابی و فروش انباره سازی داده(Data Warehousing) در اختیار دارند

Data Warehouse Reference Architectures

+

*

Sql دارای چندین معماری ارجاعی انباره سازی داده از چندین فروشنده ی قطعات سخت افزاری می باشد در حالی که MySql دارای موتورهای جانبی برای انباره سازی داده می باشد.

دستگاه های ابناره سازی داده

+

*

Sql دارای چندین دستگاه انباره سازی داده از چندین فروشنده ی سخت افزاری می باشد

سرویسهای ادغامه کردن یا همان ETL

-

*

Sql دارای قابلیت های وسیع و عظیم ETL می باشد

درایورهای پرسرعت

-

*

Sql از مقصدهای پرسرعت و کارایی Teradata و Oracle پشتیبانی میکند

سرویسهای آنالیز(OLAP)

-

*

قابلیت ساخت مکعبهای دیتابیسی OLAP,ROLAP و MOLAP

Data Mining

-

*

قابلیت پشتیبانی از الگوریتم هایی به منظور معنایی و هوشمند کردن داده های ساختار یافته

Text Mining

-

*

قابلیت پشتیبانی از الگوریتم هایی به منظور معنایی و هوشمند کردن داده های متنی ساختار نیافته

کوئری انگلیسی

-

*

قابلیت کوئری زدن با استفاده از عبارات انگلیسی به جای عبارات Sql

سرویسهای گزارشی

-

*

Sql دارای راهکار گرافیکی گزارش گیری برای انواع کاربران مختلف می باشد

PowerPivot

-

*

Sql پشتیبانی و همکاری قوی با برنامه ی Excel برای کوئری و نمایش داده در دیتابیس های OLAP و OLTP را فراهم میکند

پشتیبانی از داده های بزرگ

-

*

Sql به همراه آداپترهای Hadoop به منظور پردازش بهتر داده های بزرگ ارائه خواهد شد

نتیجه گیری(فراموش نکنید که هنوز از منظر مایکروسافت داریم بررسی میکنیم):
برنامه ی Sql Server 2012 از تمام جهات دارای برتری نسبت به MySql می باشد. همچنین در تمامی دسته بندی های انجام شده دارای امکانات و مزیت های بیشتری می باشد. بنابراین Sql انتخابی کاملا واضح و مشخص برای تمامی جنبه های تجاری و انواع مختلف برنامه ها و اپلیکیشن ها می باشد مخصوصا مواردی که بسیار حساس می باشند.

انتهای بررسی و قضاوت از منظر مایکروسافت:
همان طور که مطالعه کردید مایکروسافت خیلی هم با احترام و شاید هم در برخی موارد کاملا منصفانه قضاوت نکرد و به قول احمدی نژاد از موضع غرور صحبت میکرد :)

در ادامه ی این مطلب به بررسی و مقایسه و قضاوت هردو محصول از منظر اوراکل و سان خواهیم پرداخت و در نهایت هم از منظر خودمان نتیجه گیری نهایی خواهیم کرد.

ادامه دارد…

Loading