مقایسه دیتابیسهای MySQL و MariaDB
۱۴ مهر ۱۳۹۹
دیتابیس یکی از بخشهای اصلی برنامههای تحت وب است، زیرا تمام اطلاعات مهم و حیاتی در آن ذخیره میشود. توسعهدهندگان زمان زیادی را برای ایجاد ساختار و تست عملکرد دیتابیس صرف میکنند تا مطمئن شوند که به درستی و بدون خطا، کار میکند. به همین دلیل آنها همچنان در انتخاب دیتابیس مناسب برنامههایشان نگران هستند، چرا که انتخابهای زیادی در بازار پیش روی آنها قرار دارد.
مقایسه دیتابیسهای MySQL و MariaDB یکی از پرمخاطبترین مقایسهها در دنیای توسعهدهندگان است، زیرا هر دو دیتابیسهای معروف و محبوبی هستند که به صورت گسترده در برنامههای تحت وب استفاده میشوند. علاوهبراینها، قابلیتهای زیادی در ایجاد کوئری و مرتبکردن جداول و اسکیمای دیتابیس، در اختیار توسعهدهندگان میگذارند.
در این مقاله بررسی اجمالی و مختصری در رابطه با این دیتابیسها خواهیم داشت. این بررسی را با مقایسه قابلیتها، سازگاری و هماهنگی آنها و … پیش خواهیم برد. در ابتدا مقاله را با بررسی کلی دیتابیسهای MySQL و MariaDB و قابلیتهای آنها، آغاز میکنیم.
MySQL چیست؟
MySQL یکی از دیتابیسهایی است که به صورت گسترده در میان برنامههای تحت وب استفاده میشود و اولین بار در سال ۱۹۹۵ توسط یک شرکت سوئدی با نام MySQL AB معرفی شد. این شرکت توسط Michael Monty Widenius که به عنوان سازنده اصلی MySQL شناخته میشود، بنیان گذاشته شد. وی اولین شخصی بود که ایده یک سیستم مدیریت دیتابیس متنباز را مطرح کرد. با توجه به این موضوع، جامعه کاربری MySQL روزبهروز بزرگتر میشود و افراد بعدها میتوانند در پیشرفت آن سهیم باشند.
در سال ۲۰۰۸ MySQL برای اولین بار توسط Sun Microsystems، یک برند تجاری مشهور، که در زمینههای مختلف در صنعت IT تحقیق میکند، خریداری شد. با این حال در سال ۲۰۱۰ سریعترین و مشهورترین غول امروزه، یعنی Oracle، شرکت Sun Microsystems و زیرمجموعههای آن از جمله MySQL را در دست گرفت و نظارت و کنترل آن را برعهده خود قرار داد. در واقع پایگاه داده خود را که بر روی همان ریشه و اساس SQL بنا شده است را به نام دیتابیس Oracle گسترش داد.
مهمترین موضوع در رابطه با MySQL این است که تحت لایسنس عمومی GNU، یعنی GPL ارائه میشود، که استفاده از آن را برای تمام کاربران ممکن میسازد. MySQL بر روی سیستمعاملهای مختلف نظیر لینوکس، یونیکس، MacOS، ویندوز و … پشتیبانی میشود.
دیتابیس یکی از بخشهای اساسی استک LAMP است که اصطلاحی رایج برای توسعه برنامههای تحت وب است. LAMP مخفف موارد زیر است:
استفاده از MySQL در PHPMyAdmin نشاندهنده اهمیت آن در برنامههای PHP است. این دیتابیس، اولین دیتابیسی است که برای برنامههای PHP ساخته شده است و بعدها به دنبال دیتابیسهای مختلف دیگر نظیر: MariaDB، PostgreSQL و .. برای استفاده در زمینههای تخصصی دیگر توسعه یافت.
MariaDB چیست؟
هنگامی گه Sun Microsystem در دست Oracle قرار گرفت، تضادهای زیادی میان مهندسان مختلف اصلی MySQL ایجاد شد. آنها میترسیدند که Oracle وضعیت MySQL اصلی را با توجه به طرح دیتابیس اصلی خودشان تغییر دهند. تغییرات کمی در کوئریهای اصلی، این نگرانی و ترس را بیشتر و قویتر کرد، به همین دلیل بالاخره برخی از آنها تصمیم گرفتند که خود را از Oracle جدا کنند. این جدایی باعث شد تا MariaDB ایجاد شود.
MariaDB که از MySQL فورک شده، در سال ۲۰۰۹ برای اولین بار در بازار عرضه و توسط بنیانگذار MySQL، یعنی Micheal Widenius معرفی شد. میتوان آن را به عنوان نسخه پیشرفته MySQL در نظر گرفت، چرا که داری ویژگیهای مختلف بهبود یافته در SQL است، که شامل پشتیبانی از APIهای براساس JSON، تکثیر و ایجاد رپلیکا (replica) از دادههای موازی، پشتیبانی از موتورهای ذخیرهسازی مختلف نظیر: InnoDB، Aria، ColumnStore، Casandra و غیره میشود.
این دیتابیس متعلق به شرکت MariaDB است که آموزش، سرویسهای مرتبط با migration، مدیریت دیتابیسها به صورت ریموت و سایر قابلیتهای تخصصی دیگر را در اختیار مشتریان و کاربران خود قرار میدهد. بدون بحث یکی از سریعترین دیتابیسهای موجود در بازار است که از جمله مشتریان آن میتوان به Nokia و Teleplan و … اشاره کرد.
تفاوتهای اصلی دیتابیسهای MySQL و MariaDB
در این بخش به بررسی تفاوتهای اصلی میان MariaDB و MySQL میپردازیم.
ساختار دیتابیس
MySQL به عنوان یک سیستم مدیریت دیتابیسهای رابطهای (RDBMS) دستهبندی میشود. با تمام ویژگیهای رایج دیتابیسهای رابطهای کار میکند، به طور مثال: ایجاد جداول، constraintها، viewها و … از فرایندها و مراحل دیتابیس اصلی برای اجرا و انجام کارهای مختلف، از جمله روشهای ذخیرهسازی، راهاندازها (triggers)، نقشها و موارد دیگر استفاده میکند. برای تعامل با جداول دیتابیس، از کلیدهای اصلی و خارجی (primary key & foreign key) به جهت ارتباط رکوردها با یکدیگر و مدیریت دقیق آنها استفاده میکند.
در حالی که MariaDB، همانطور که در بالا گفته شد، یک نسخه فورک شده از دیتابیس MySQL است، بنابراین شامل تمام ویژگیهای رابطهای از پیش تنظیم شده در آن است و از ساختار دیتابیس و ایندکسهای مشابه MySQL استفاده و کاملا مشابه یکدیگر نیز کار میکنند. خوبی این موضوع این است که وقتی برنامه خود را به MariaDB منتقل میکنید، به صورت پیشفرض با آن سازگار است و نیازی به ایجاد تنظیمات جدید در دیتابیس جدید نیست.
استقرار دیتابیس
MySQL توسط زبان برنامهنویسی سی و سیپلاسپلاس ساخته شده است و تقریبا بر روی همه سیستمعاملها کار میکند. همچنین نسخه باینری آن برای لینوکس، ویندوز، OS X، AIX، FreeBSD، HP-UX، BSDI، Novell Netware، NetBSD و … وجود دارد. برای دانلود MySQL به صفحه نصب آن مراجعه کنید که شامل دستورالعمل نصب برای سیستمعاملهای مختلف است.
MariaDB با زبانهای سی، سیپلاسپلاس، Bash و Perl نوشته شده است. به همین دلیل مزایای بیشتری نسبت به MySQL دارد. همچنین شامل فایلهای نصبی باینری برای ویندوز، لینوکس، OS X، FreeBSD، OpenBSD، Solaris و … میشود.
برای نصب MariaDB ابتدا باید MySQL را از سیستمتان حذف کنید، چرا که جایگزین MariaDB است و همچنین پس از حذف MySQL به یاد داشته باشید تا دستور mysql_upgrade
را اجرا کنید تا فایلهای اصلی سیستم به نسخه جدید MariaDB ارتقا پیدا کنند.
Data Replication
Replication یا تکثیر دادهها فرایندی است که به مدیران دیتابیس این اجازه را میدهد تا دادهها و یا رکوردها را از یک دیتابیس به دیتابیس دیگری کپی کنند. این فرایندی است که در آن یک دیتابیس نقش Master و دیگری نقش Slave را برعهده میگیرد. با استفاده از این قابلیت، مدیران دیتابیسها میتوانند به راحتی دادهها را بین دیتابیسهای مختلف تکثیر کنند.
MySQL تکثیر یا Replication را به صورت async ارائه میکند، این بدین معنی است که این فرایند یک طرفه است. این موضوع دیتابیسهای Master را برای کپی دیتا در دیتابیسهای Slave و با هدف تکثیر و کپی جداول و خصوصیتها به صورت همزمان مجاز میکند.
از طرف دیگر MariaDB، یک تغییر کوچک در این روند مشابه دارد. این دیتابیس نه تنها اجازه انتقال داده از Master به Slave را میدهد، بلکه اجازه انتقال داده از Master به Master را نیز میدهد. این موضوع به مدیران این امکان را میدهد تا به صورت همزمان با چندین دیتابیس Master کار کنند و در کنار آن انتقال دادهها را با قدرت بیشتری در دیتابیس Master انجام دهند.
Database Clustering
MySQL از یک تکنولوژی برای ایجاد کلاستر تحت عنوان MySQL Cluster استفاده میکند که ایجاد کلاستر و تقسیم و اشتراک خودکار میان دادههای مربوط به هم را فراهم میکند. همچنین به مدیران دیتابیسها این امکان را میدهد تا از طریق دو فاز، دادهها را در Nodeهای مختلف ذخیره کنند تا این اطمینان حاصل شود که خرابی فقط به یک Node بستگی ندارد.
در طرف دیگر MariaDB از Galera Cluster برای انجام تکثیر دادههای میان چندین Node که نقش Master را دارند، استفاده میکند. این قابلیت را میتوان از طریق پارامترهای کانفیگ و یا پیکربندی فعال کرد.
Indexها
هم MySQL و هم MariaDB، هر دو ایندکسها (PRIMARY KEY، UNIQUE، INDEX و FULLTEXT) در B-trees ذخیره میکنند. آنها همچنان دارای استثناهایی در indexها، نظیر: دادههای چند بعدی و ذخیرهسازی در R-trees هستند.
به غیر از این indexهای متداول، MySQL از indexهای hash پشتیبانی و از موتور InnoDB برای ذخیره indexهای لیست معکوس از FULLTEXT استفاده میکند.
پشتیبانی فنی
به عنوان بخشی از پشتیبانی مادام العمر Oracle، دیتابیس MySQL پشتیبانی کامل و فولتایمی را به کاربرانش ارائه میکند. تیم پشتیبانی آنها شامل توسعهدهندگان خبره MySQL است که بر روی تمام ویژگیها و قابلیتهای آن تسلط و تبحر دارند و به صورت شبانه روزی در دسترس هستند تا هر گونه مشکل بزرگ و یا کوچکی را برطرف کنند.
علاوهبراین Oracle برای تسهیل روند کار کاربران، با توجه به نیازهای پروژه، پشتیبانی MySQL Premier، گسترده و دائمیای را ارائه میکند.
در طرف دیگر MariaDB یک تیم پشتیبانی که شامل مهندسانی با مهارت است را ارائه میکند که در هر دو دیتابیس MariaDB و MySQL مهارت دارند. آنها همچنین پشتیبانی کاملی (24/7/365) را به همراه یک اشتراک تجاری تخصصی برای پروژههای حیاتی فراهم میکنند.
ایجاد دیتابیس MySQL و MariaDB روی سرور
شما میتوانید دیتابیسهای MySQL و MariaDB را فقط با چند کلیک روی سرور در لیارا تهیه کنید. پس از ایجاد حساب کاربری در لیارا، به قسمت دیتابیسها مراجعه کنید.
بر روی دکمه راهاندازی دیتابیس کلیک کنید و پس از انتخاب دیتابیس و نسخه مدنظرتان، یک نام برای دیتابیستان انتخاب کنید.
در نهایت بعد از انتخاب پلن مورد نیازتان، بر روی دکمه راهاندازی و نصب دیتابیس کلیک کنید.
بعد از ایجاد دیتابیس، از لیست دیتابیسها بر روی دیتابیستان کلیک کنید تا اطلاعات مورد نیاز برای اتصال به دیتابیستان را مشاهده کنید. از این اطلاعات میتوانید برای اتصال به دیتابیس از طریق برنامههایتان در لیارا و یا در لوکالتان استفاده کنید.
جمعبندی
در این مقاله دو دیتابیس MySQL و MariaDB را بررسی کردیم. با توجه به مسائلی که مطرح کردیم، MariaDB به دلیل ویژگیها و قابلیتهایی که به طور مثال در موتورهای ذخیرهسازی ارائه میکند، نسبت به MySQL برتر است.
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi