آشنایی با تفاوت MariaDB و MySQL؛ کدام دیتابیس را انتخاب کنیم؟
مفهوم دیتابیس یکی از مفاهیم بسیار حیاتی در دنیای وب است. بدون دیتابیس عملاً هیچ وبسایت یا سرویسی موجودیت نخواهد داشت. دراینمیان، انتخاب دیتابیس مناسب نیز یکی از چالشهایی است که باید به آن توجه کرد. دو نمونه از دیتابیسهای بسیار معروف MariaDB و MySQL نام دارند. در این مقاله از بلاگ پارس پک، میخواهیم درباره تفاوتهای میان این دو دیتابیس صحبت و به نکات مهمی اشاره کنیم که هنگام انتخاب آنها باید مدنظر قرار دهید.
MySQL چیست؟
MySQL پایگاهداده رابطهای (RDBMS) است که سال ۱۹۹۵، مایکل مونتی و دیوید آکسمارک آن را ایجاد کردند. این دیتابیس زمانی پا به عرصه رقابت گذاشت که بازار زیر سلطه فیچرهای ارائهشده و البته گرانقیمت مایکروسافت و اوراکل بود.
امروزه، MySQL بهعنوان یکی از برندهای قدیمی دیتابیس در حوزه اینترنت شناخته میشود. نقش این دیتابیس در صنعت اینترنت بسیار مهم بود. MySQL با استفاده از مجوز دوگانه و GNU GPL برای نسخه رایگان آن، راه را برای بسیاری از فروشندگان نرمافزاری باز کرد که بعداً متولد شدند.
مایکل وایدنس، نویسنده اصلی پایگاهداده MySQL، درباره مجوزهای دوگانه میگوید:
باتوجهبه اینکه MySQL محصولی زیرساختی است که بهراحتی قابلیت قرارگیری در محصولات دیگر را دارد، این امکان وجود دارد که لایسنس فقط به افرادی فروخته شود که قصد دارند از MySQL در محصولات خود استفاده کنند. بدینترتیب، آنان میتوانند علاوهبر استفاده از MySQL در محصولاتشان، آنها را نیز منبعباز نکنند.
وباپلیکیشنهای قرارگرفته روی سرور از MySQL بهعنوان بخشی از پشته LAMP استفاده نمیکنند؛ بنابراین، هرکسی آزادانه میتواند از MySQL برای محصولات وب خود استفاده کند. کمتر از یک دهه پس از انتشار MySQL، این پایگاهداده توانست روی بازار دیتابیسهای Open Source مسلط شود. نتایج Google Trends نشان میدهد که بیشترین میزان جستوجوی واژه MySQL بین سالهای ۲۰۰۴ تا ۲۰۰۵ اتفاق افتاده است.
برخی از شرکتهای مهمی که از MySQL بهعنوان پایگاهداده استفاده کردهاند، عبارتاند از:
- فیسبوک: MySQL تقریباً تمامی تعاملات کاربران ازجمله لایکها، بهاشتراکگذاری مطالب، بهروزرسانی Statusها، Alertها و Requestهای کاربران در فیسبوک را مدیریت میکند.
- نتفلیکس: بخش مالی Netflix را MySQL مدیریت میکند.
- یوتیوب
- Booking.com
- Airbnb
همچنین، نباید فراموش کرد یکی از عواملی که به ظهور و پذیرش MySQL کمک کرد، phpMyAdmin بود. phpMyAdmin ابزار مدیریت پایگاهداده مبتنیبر وب است که در سال ۱۹۹۸ طراحی و معرفی شد. این ابزار خیلی سریع توانست راهش را برای ورود به کنسولهای مدیریتی ارائهدهندگان هاستهای اشتراکی مانند cPanel باز کند. phpMyAdmin که با استفاده از زبان PHP نوشته شده، مدیریت پایگاهداده MySQL را روی سرورهای LAMP بسیار آسان کرده است.
ایجاد ورودی و تهیه خروجی، ایجاد Queryهای پیچیده، ایجاد جداول و حذف آنها، Queryهای پیچیده و… تنها برخی از کارهایی است که انجامشان بدون استفاده از ترمینال لینوکس و با phpMyAdmin برای کاربران امکانپذیر است.
وردپرس و MySQL
بیشک یکی از عوامل مؤثر بر محبوبیت MySQL وردپرس است. درحالحاضر، این CMS حدود ۶۰درصد از کل سیستمهای CMS دنیا و تقریباً ۳۴درصد از کل وبسایتها را زیر پوشش خود دارد. در سال ۲۰۰۳، Matt Mullenweg و Mike Little وردپرس را با استفاده از زبان برنامهنویسی PHP بهعنوان فورک پروژهای دیگر طراحی کردند. این سیستم از MySQL بهعنوان پایگاهداده خود استفاده میکرد؛ بههمیندلیل، پس از رونمایی وردپرس، MySQL نیز بهشدت در حوزه نت گسترده شد.
یکی دیگر از عواملی که باعث محبوبیت بیشتر MySQL شد، لایسنسهای سمت GPL آن بود. این قابلیت باعث میشد که این پایگاهداده با لینوکس سازگار شود؛ بههمیندلیل، MySQL در بسیاری از توزیعهای مهم لینوکس مانند اوبونتو بهعنوان دیتابیس پیشفرض قرار داده شد.
مروری کوتاه بر مدل پایگاهداده رابطهای و MySQL
همانطورکه پیشتر گفتیم، MySQL پایگاهدادهای است که از مدل رابطهای استفاده میکند. تاریخ تولد این پایگاهداده به دهه ۱۹۷۰ بازمیگردد. بهطورخلاصه، مدل RDBMS دادهها را در جداول متشکل از یک سری سطر و ستون قرار میدهد. هر ردیف نیز بهصورت منحصربهفرد با یک کلید مشخص خواهد شد. این کلیدهای اصلی میتوانند برای تعریف رابطه (Relation) با ردیفی خاص تعریف شوند. بهعبارتدیگر، ستون Foreign Column در یک جدول پایگاهداده میتواند به ستون Foreign Column در جدولی دیگر اشاره و رابطه بین ردیفها را در جداول مختلف تعریف کند.
Essential SQL در توضیح این قابلیت میگوید:
کلید اولیه شامل یک یا چند ستون است که دادههای موجود در آن برای شناسایی منحصربهفرد هر ردیف در جدول استفاده میشود. دادهها در ستونهای کلید اصلی باید منحصربهفرد باشند و خالی یا تهی نیز نباشند. در پایگاهداده رابطهای، جدول فقط یک کلید اصلی دارد و تعریف آن نیز اجباری است. درعینحال، کلید خارجی مجموعهای از یک یا چند ستون در جدول است که به کلید اصلی در جدول دیگر اشاره میکنند.
تصویر زیر مدل پایگاهداده رابطهای در MySQL را نشان میدهد:
همانطورکه در تصویر بالا مشاهده میکنید، با استفاده از سیستم پایگاهداده رابطهای میتوان دادهها را به روشهای پیچیده مدلسازی و ارتباط بین قطعات مختلف داده را تعریف کرد. نکته دیگر اینکه در این نوع از دیتابیس، امکان Queryزدن در دیتابیس براساس هدف موردنیازتان بهراحتی فراهم است. باتوجهبه تمام این نکات، پایگاههای داده ازجمله پایگاهداده رابطهای، از زبانهای مخصوصی استفاده میکنند که SQL (مخفف Structured Query Language) رایجترین این زبانها در دیتابیسهای RDBMS است.
چه کسی MySQL را جابهجا کرد؟
در سال ۲۰۰۸، سان میکروسیستمز (Sun Microsystems) شرکت MySQL AB، سازنده MySQL را خرید. این شرکت سیستمعامل سولاریز یونیکس (Solaris Unix) و جاوا (JAVA) را طراحی و بهطورخلاصه، مشارکت بسیاری نیز در فناوریهای کامپیوتری کرده بود. براساس گزارش Business Wire، رقم این قرارداد یکمیلیارد دلار بوده است. اگرچه این خرید هم باعث نشد که Sun Microsystems ورشکست نشود، همین رقم عظمت این دیتابیس را بهخوبی نشان میدهد. سان میکروسیستمز دو سال مالک MySQL بود و در سال ۲۰۱۰، اوراکل توانست این شرکت و البته MySQL را باهم بخرد و رقیب دیرینه دیتابیسهای اوراکل را ازآنِ خود کند.
MariaDB چیست؟
MariaDB درواقع فورکی از MySQL است. هنگامیکه MariaDB اولین حضور خود را در اکتبر۲۰۰۹ با نسخه بتای ۵.۱.۳۸ اعلام کرد، این نگرانی وجود داشت که آیا این دیتابیس با هدف ازبینبردن کامل MySQL پا به عرصه گذاشته است یا خیر. البته این نگرانی کمی بعد و با روشنترشدن موضوع، کاملاً از بین رفت.
MariaDB سیستم مدیریت پایگاهداده رابطهای منبعبازی (DBMS) است که بهعنوان جایگزینی سازگار برای فناوری پایگاهداده MySQL شناخته میشود. این دیتابیس بهعنوان فورک نرمافزار MySQL و بهدست توسعهدهندگانی ساخته شد که خود در ساخت MySQL نقش اساسی ایفا کرده بودند. این متخصصان MariaDB را در سال ۲۰۰۹ و در پاسخ به فروش MySQL به Oracle Crop طراحی کردند.
از دیدگاه تکنیکال، MariaDB مبتنیبر SQL طراحی شده است و از پردازش داده با روش ACID برای تراکنشها پشتیبانی میکند. همچنین، این پایگاهداده از APIهای JASON و تکثر دادههای موازی و موتورهای ذخیرهسازی متعدد نظیر InnoDB ،MyRocks ،Spider ،Aria ،TokuDB ،Cassandra و ColumnStore پشتیبانی میکند.
حجم زیادی از فرایندهای انجامشده برای توسعه MariaDB، روی دستیابی به ویژگیهای برابر بین MariaDB و MySQL متمرکز بوده است؛ بههمیندلیل بهگفته توسعهدهندگان ارشد MariaDB، این دیتابیس با تمام اهداف عملی تعیینشده MySQL سازگار است. این ویژگی باعث میشود با خیال راحت MySQL را از روی سیستم خود حذف کنید و MariaDB را بهجای آن قرار دهید. فراموش نکنید که همچنان ناسازگاریهای جزئی میان برخی نسخههای این دو دیتابیس وجود دارد. بهعنوان مثال، در نسخههای ۱۰.۱ و جدیدتر MariaDB، دادههای JSON در قالبی متفاوت از MySQL نسخه ۵.۷ ذخیره میشود؛ البته راهکارهایی نیز برای این منظور پیشبینی شده است.
بررسی سازگاری MariaDB درمقابل MySQL
همانطورکه گفتیم، تمرکز ویژهای روی انطباقپذیری در مهاجرت از MySQL بهسمت MariaDB شد؛ بههمیندلیل، مهاجرت از MySQL به MariaDB تقریباً راحت است. همچنین، به این نکته باید دقت کرد که جایگزینی MySQL با MariaDB برای بسیاری از نرمافزارها مانند وردپرس، باعث یکپارچهسازی فرایند میشود. نرمافزارهای CMS موجود ازجمله WordPress و نرمافزارهایی مانند phpMyAdmin با MariaDB کار میکنند و بهسادگی میتوان دیتاها را بدون هیچ تغییری از MySQL به MariaDB انتقال داد.
براساس وبسایت رسمی نرمافزار MariaDB:
- دادهها و فایلهای تعریف این جداول با یکدیگر سازگارند.
- تمامی APIهای سمت کلاینت و تمامی پروتکلها در این دو دیتابیس با یکدیگر سازگارند.
- اسامی فایل و باینریها و مسیرها در MySQL و MariaDB با یکدیگر یکی هستند.
- پورتها و سوکتها در این پایگاههای داده باهم یکسان است.
- تمامی کانکتورهای JAVA ،Python ،Perl ،PHP و… بهسادگی با MariaDB کار میکنند.
- کلاینت پکیج MySQL دقیقاً مانند MySQL با MariaDB نیز کار میکند.
دلایلی که به فورکینگ MariaDB انجامید
برای فورک MariaDB دلایل متعددی وجود دارد. بهعنوان نمونه، یکی از دلایل مهم ترس از این مسئله بود که اوراکل رقبای در حال رشد و جوان خود را از میدان رقابت بهدر کند تا محصول خود بهعنوان تنها محصول در بازار باقی بماند. با این کار کاربران ممکن بود محصولی عالی و رایگان را از دست بدهند.
یکی دیگر از دلایل این بود که توسعهدهندگان بسیار مشتاق بودند که MySQL همچنان رایگان و منبعباز باقی بماند. امروزه، MariaDB لایسنس کامل GPL را دارد که با همین مجوز توانسته است بسیاری از ویژگیها را در خود جای دهد. این در حالی است که MySQL همچنان سیاست لایسنس دوگانه را حفظ کرده است؛ موضوعی که در ابتدای همین مقاله نیز دربارهاش توضیح دادیم.
رویهمرفته، باید بگوییم که MariaDB باتوجهبه لایسنس GPL مزایای رقابتی بسیاری درمقایسهبا MySQL دارد. همچنین باتوجهبه کد پایه اختصاصی، Oracle نمیتواند از کدهای MariaDB استفاده کند و آنها را در محصولش قرار دهد. این نشان میدهد که این اختلاف تا وقتی مسائل بین Oracle و MariaDB کاملاً حل نشود، همچنان باقی خواهد ماند.
جامعه؛ یکی دیگر از تفاوتهای MySQL و MariaDB
یکی دیگر از دلایلی که باعث بهوجودآمدن فورک MariaDB شد، بازنگهداشتن جامعه توسعهدهندگان مانند پروژه جامعهمحور وردپرس بود. شایان ذکر است باتوجهبه گزارشهای Commit، بسیاری از کدهای MySQL را توسعهدهندگان داخلی تولید کردهاند. توسعهدهندگان اوراکل گاهوبیگاه از Community برای توسعه MySQL تشکر میکنند؛ اما چه کسی نمیداند که این تفکر با تفکری که MariaDB روی آن استوار است و حتی تفکر قدیمی حاکم بر خودِ MySQL، چقدر فاصله دارد.
ذکر مثالی میتواند همهچیز را در این زمینه روشن کند. در زمان نگارش این مقاله، ریپوزیتوری MariaDB بیشتر از ۱۸۶هزار Commit و بیشتر از ۳۷۰هزار Branch و ۲۰۰ مشارکتکننده یا Contributor دارد. این در حالی است که MySQL حدود ۱۴۸هزار Commit و ۹ Branch و ۷۲ مشارکتکننده دارد. نکته دیگر اینکه بحث و تبادلنظر درباره توسعه MariaDB، ویژگیهای مدنظر و… در فهرستی که دردسترس عموم قرار دارد، انجام میشود. بدینترتیب، میتوانید مطمئن باشید فیچرهایی که به MariaDB اضافه میشوند، کاربردیترین و پرتقاضاترین فیچرها بودهاند.
در پایان سال ۲۰۱۲، بنیاد MariaDB برای نظارت بر سیستم توسعه MariaDB تأسیس شد. تمامی نکات یادشده بیانگر این واقعیت بود که MariaDB بر بسته Oracle کاملاً برتری دارد؛ بههمیندلیل، بسیاری از توسعهدهندگان سیستمعامل لینوکس مانند Red Hat ،CentOS ،Arch Linux ،Debian و OpenSuse، پس از این فورک به MariaDB پیوستند. غولهای تجاری دیگری نیز نظیر Alibaba Cloud ،Tencent ،IBM ،Microsoft و Booking.com نیز از حامیان نسخه پلاتینیوم ماریا دیبی شدند. نتایج Google Trends نیز نشاندهنده این است که از زمان انتشار اولین نسخه MariaDB، علاقمندی به جایگزینی آن پیوسته در حال افزایش بوده است.
تفاوتهای مهم میان MariaDB و MySQL
اگرچه درحالحاضر MariaDB کاملاً با MySQL سازگار است، میتوان انتظار داشت که در آینده، راه این دو دیتابیس از یکدیگر جدا شود.
Thread Pool
MySQL به هر اتصال کلاینت رشتههایی اختصاص میدهد. این موضوع را میتوان با بوتکردن برنامهای کامل در کامپیوتر مقایسه کرد. مشخص است که این سیستم کاملاً ناکارآمد است. مشابه چنین مشکلی در سرور Nginx نیز وجود داشت؛ اما MariaDB راهحل خود را برای این مشکل در نسخه ۵.۵ معرفی کرد. ویژگی انحصاری MariaDB ستونهای نامرئی یا Invisible Columns بود که از نسخه ۱۰.۳.۳ به این دیتابیس اضافه شد. بدینترتیب، نتایج در دستور SELECT * بازگردانده نمیشود و به تخصیص مقدار در دستور INSERT نیز نیازی نیست. همچنین، MariaDB مفهوم میکروثانیهها را در انواع دادههای زمانی خود معرفی میکند.
در جدول زیر، برخی دیگر از تفاوتهای مهم میان این دو دیتابیس را مشاهده میکنید:
MariaDB |
MySQL |
با زبانهای C ،C++ ،Perl و زبانهای Bash نوشته شده است. |
با زبانهای C و C++ نوشته شده است. |
برای اولینبار در سال ۲۰۰۹ منتشر شد. |
برای اولینبار در سال ۱۹۹۵ منتشر شد. |
کارایی زیادی دارد. |
درمقایسهبا MariaDB کارایی چندانی ندارد. |
جایگزین مناسبی برای MySQL است. |
نمیتواند جایگزینی برای MariaDB باشد. |
در این دیتابیس، پوشش دادهای یا Data Masking وجود ندارد. |
در این دیتابیس، Data Masking پوشش داده میشود. |
در MariaDB، کد اختصاصی دردسترس نیست. |
در نسخه سازمانی MySQL، کد اختصاصی پیشبینی شده است. |
از فضای جدول موقت و رمزگذاری باینری پشتیبانی میکند. |
از گزارش باینری یا فضای جدول موقت پشتیبانی نمیکند. |
امکان مدیریت کلاندادهها بهراحتی فراهم است. |
مدیریت و ساماندهی کلاندادهها بهآسانی فراهم نیست. |
جمعبندی
نقش پایگاههای داده در فناوری وب بر هیچکسی پوشیده نیست. هیچ وبسایت یا وبسرویس یا وباپلیکیشنی بدون استفاده از دیتابیس موجودیت نخواهد داشت. دراینبین، انتخاب دیتابیس مناسب هم یکی از چالشهای همیشگی بر سر راه توسعهدهندگان وب است. باتوجهبه اهمیت این موضوع، در مقاله حاضر تصمیم گرفتیم درباره تاریخچه و تفاوتهای میان دو دیتابیس بسیار معروف MySQL و MariaDB صحبت کنیم تا بتوانید بهترین گزینه را از میان این دو برگزینید.
سؤالات متداول
۱. دیتابیس چیست؟
ازنظر تئوریکال، پایگاهداده مجموعهای سازماندهیشده از دادههای ذخیره شده است.
۲. سیستم DBMS چیست؟
پایگاهداده مجموعهای از اطلاعات مرتبط درباره افراد، مکانها و… است. سیستم مدیریت پایگاهداده (DBMS) مجموعهای از نرمافزارهایی است که امکان ایجاد و مدیریت و راهاندازی پایگاهداده را برایتان فراهم میکند.
۳. چرا دیتابیس مهم است؟
سیستم پایگاهداده تمامی دادههای ضروری و ارزشمند کسبوکار را ذخیره میکند. با تحلیل این دادهها، میتوانید به اطلاعات بسیار ارزشمندی درباره کسبوکار دست پیدا کنید و همین مسئله میتواند به شما در رشد و توسعه کسبوکارتان کمک زیادی کند.
۴. آیا MariaDB و MySQL یکی هستند؟
MariaDB فورکی از MySQL است؛ اما تفاوتهایی ساختاری در بین این دو دیتابیس وجود دارد. برای مثال، MariaDB از لایسنس GPL برخوردار است؛ اما MySQL رویکردی با لایسنس دوگانه دارد.
دیدگاهتان را بنویسید