MySQL یک سیستم مدیریت پایگاه داده رابطه ای منبع باز (RDBMS) است. درست مانند سایر بانکهای اطلاعاتی رابطه ای ، MySQL از (tables, constraints, triggers, roles, stored procedures) استفاده می کند. یک جدول از ردیف ها تشکیل شده است و هر ردیف شامل ستون های یکسانی است. MySQL از کلیدهای اصلی برای شناسایی منحصر به فرد هر سطر (رکورد a.k.a) در یک جدول و کلیدهای خارجی برای اطمینان از یکپارچگی مرجع بین دو جدول مرتبط استفاده می کند.
MariaDB از آنجا که یک fork از MySQL است ، ساختار بانک اطلاعاتی و شاخص های MariaDB همان MySQL است. شما می توانید بدون نیاز به تغییر برنامه های خود ، بانک اطلاعاتی را از MySQL به MariaDB تغییر دهید زیرا ساختار داده و داده ها نیازی به تغییر ندارند.
Mariadb همان mysql سابق است در حالی که بعد از خرید mysql توسط oracle بنیانگذار mysql تصمیم گرفت که هویت Open Source بودن این نرم افزار را حفظ کند از این جهت نام جدید Mariadb را جایگزین Mysql سابق کرد. بر اساس ادعای سازنده MariaDB ، نسخه های مختلف Mariadb ، براساس قابلیت "Drop-in Replacement for MySQL" یعنی جایگزینی مناسب و بدون مشکل برای نسخه های مختلف mysql می باشد که قادر است تا دیتابیس های Mysql را به Mariadb سوئیچ نماید و این سازگاری به دلیل یکسان بودن API ها ، ساختارها ، پورت ها و سوکت ها است.
برای اطمینان از اینکه MariaDB از سازگاری کاملی برخوردار است ، توسعه دهندگان MariaDB کد MariaDB را با کد MySQL ادغام کرده اند. حتی با این وجود ، اختلافاتی بین MariaDB و MySQL وجود دارد که می تواند برخی از مشکلات سازگاری جزئی را ایجاد کند.
سازگاری نسخه های خاص MariaDB و Mysql
-
MariaDB 10.3 ، MariaDB 10.2 و MariaDB 10.4 به عنوان Drop-in Replacement for MySQL برای دیتابیس MySQL 5.7 عمل می کنند. با این حال ، نسخه های جدیدتر MariaDB در حال پیاده سازی است و در هر نسخه هم رشد بیشتری خواهد داشت.
-
MariaDB 10.0 و MariaDB 10.1 جایگزینی مناسب برای MySQL 5.6 هستند. با این حال برخی از تفاوت های اجرایی در برخی از ویژگی ها وجود دارد.
-
MariaDB 5.5 به عنوان جایگزینی برای MySQL 5.5 عمل می کند.
-
MariaDB 5.1 ، MariaDB 5.2 و MariaDB 5.3 به عنوان جایگزین برای MySQL 5.1 عمل می کنند.
✅: پشتیبانی می شود.
⛔: پشتیبانی نمی شود.
مقایسه عملکرد MariaDB و MySQL
MariaDB دارای چندین بهینه سازی است که باعث بهبود عملکرد در مقایسه با MySQL شده است. در حقیقت، هنگامی که MariaDB توسط مایکل ویدنیوس ، بنیانگذار اصلی MySQL و همچنین MariaDB آغاز شد ، دقیقاً این دیدگاه را در ذهن داشت.
Database Views یا view دیتابیس
بهینه سازی در عملکرد View دیتابیس ها اولین موردی می باشد که می توان به آن اشاره کرد . “View” در واقع جداول پایگاه داده های مجازی هستند که می توانند مانند جداول معمولی بانک اطلاعاتی، مورد پرسش قرار گیرند، ضمن اینکه وجود view ها می تواند منجر به بهبود عملکرد سرور شود. در MySQL، هنگامی که یک view را اجرا می کنید ، صرف نظر از این واقعیت که ممکن است پرس و جو نیازی به برخی از view ها داشته باشد یا نه، تمام جداول مرتبط با view را نمایش می دهد اما این مورد در mariadb بهبود داده شده است و تنها جداولی نمایش داده می شوند که توسط پرس و جو مورد نیاز است.
ColumnStore یا ذخیره سازی ستونی
به عنوان نمونه دیگر، Mariadb عملکرد دیگری را تحت عنوان ColumnStore معرفی می کند که یک معماری توزیع داده شده است که کارایی Query های قابل اجرا روی دیتابیسهای با حجم داده ای بسیار بالا را بهبود بخشیده است. برخلاف ذخیره سازی Row Store، در ذخیره سازی Column Store، دادهها بصورت ستونی ذخیره میشوند، در این روش داده ها، فشرده سازی شده و این کار باعث میشود در زمان درخواست یک Query، نیاز به Disk I/O به حداقل برسد. در نتیجه، زمان و سرعت پاسخگویی به پرس و جوها بسیار افزایش مییابد.
عملکرد بهتر در ذخیره سازی فلش
MariaDB همچنین موتور ذخیره MyRocks را در اختیار شما قرار می دهد که پایگاه داده RocksDB را به آن اضافه می کند. RocksDB یک پایگاه داده است که با ارائه سطح بالاتری از فشرده سازی داده ها برای عملکرد بهتر در ذخیره سازی فلش طراحی شده است.
Segmented Key Cache یا مجموعه ای از ساختارهای بخش بندی شده
MariaDB پیشرفت دیگری را در عملکرد خود، تحت عنوان Segmented Key Cache ارائه داده است. به عنوان مثال در mysql چنانچه یک thread اجرا شود مابقی thread ها قفل می شوند تا طی آن query به انجام برسد. سپس یک thread دیگر اجرا شود و بدین شکل تاخیر در اجرای این threads منجر به کند عمل کردن بانک اطلاعاتی می شود. بنابراین در Segmented Key Cache نیازی به قفل کردن thread ها نیست و می توانند بطور موازی اجرا شوند که این مورد باعث می شود عملکرد بانک اطلاعاتی بهبود یابد.
Virtual Columns یا ستون های مجازی
ویژگی جالب دیگری که MariaDB از آن پشتیبانی می کند Virtual Columns یا ستون های مجازی است. این ستون ها قادر به انجام محاسبات در سطح بانک اطلاعاتی هستند. در واقع این ستون های مجازی می توانند مقداری را که از یک یا چند فیلد دیگر برگرفته شده است در همان جدول در یک قسمت جدید ذخیره کنند. این یک روش بسیار خوب برای ایجاد یک شاخص عملکردی است. این ویژگی منجر می شود که بسیاری از برنامه ها به همان ستون دسترسی پیدا کنند و نیازی به نوشتن محاسبه در هر برنامه نباشد. و اما این قابلیت هم در Mariadb و هم در mysql 5.7 ارائه شده است.
Parallel Execution of Queries یا اجرای موازی چندین پرس و جو
یکی از نسخه های اخیر MariaDB - 10.0 امکان اجرای موازی چندین query را می دهد. ایده ای که امکان همانند سازی query ها را از Master به slave می دهد. بنابراین می توانند به صورت موازی اجرا شوند. این موازی بودن در اجرای query ، مطمئناً MariaDB را از MySQL پیش می اندازد.
Thread Pooling
MariaDB همچنین مفهوم جدیدی با عنوان "Thread Pooling" را معرفی می کند. thread pool جایی است که تعداد مشخصی thread قرار گرفتهاند تا تعدادی وظیفه (task) را که غالباً در یک صف قرار دارند، انجام دهند. پیش از این ، وقتی چندین اتصال به یک دیتابیس وجود داشت، برای هر اتصال ، یک Thread باز می شد که این مورد منجر به معماری مبتنی بر "one thread per connection" می شود. با استفاده از "Thread Pooling" ، مجموعه ای از Thread های باز وجود خواهد داشت که یک اتصال جدید می تواند عمل پرس و جو در پایگاه داده را انجام دهد. به این ترتیب ، برای هر درخواست اتصال جدید که منجر به نتایج سریعتر پرس و جو شود ، نباید Thread جدیدی باز شود. این ویژگی در نسخه Enterprise از MySQL موجود است اما متاسفانه در نسخه Community در دسترس نیست.
Storage Engines یا موتور ذخیره سازی
موتورهای ذخیره سازی ابزارهایی هستند که کار ذخیره و بازیابی اطلاعات را برای جداول انجام میدهند. پرکاربردترین موتور ذخیره سازی InnoDB است که استفاده از آن بصورت ویژه تری توصیه می شود.
MariaDB از چندین موتور ذخیره سازی قدرتمند هم استفاده می کند که توسط MySQL در دسترس نمی باشد. به عنوان مثال ، XtraDB ، Aria ، و … که برای راه اندازی این موتورهای ذخیره سازی در MySQL، باید آنها را به صورت دستی نصب کنید که شاید کار مناسبی نباشد.
Compatibility یا سازگاری
تیم MariaDB اطمینان می دهد که MariaDB می تواند جایگزین MySQL در برنامه های موجود باشد. در واقع ، برای هر نسخه از MySQL ، آنها نسخه MariaDB را هم منتشر می کنند تا نشان دهند که MariaDB به طور کلی با نسخه MySQL مربوطه سازگار است. حال بدین شکل امکان تغییر دیتابیس، بدون تغییر در کد برنامه کاربردی فراهم می شود.
نتیجه گیری
لایسنس : MySQL کد خود را به عنوان منبع باز تحت GPL ارائه می دهد و گزینه توزیع تجاری غیر GPL را در قالب MySQL Enterprise فراهم می کند. MariaDB فقط می تواند از GPL استفاده کند.
پشتیبانی : Oracle پشتیبانی فنی ، آموزش ، صدور گواهینامه و مشاوره را برای MySQL ارائه می دهد ، در حالی که MariaDB خدمات پشتیبانی خاص خود را دارد. برخی افراد ترجیح می دهند کار با شرکت های کوچکتر را انجام دهند ، زیرا به طور سنتی این امر به آنها به عنوان یک مشتری امکان بیشتری را می دهد.