در دنیای متنباز، داستانهای کمی به اندازهٔ تولد MariaDB جذاب هستند: وقتی نگرانیها دربارهٔ آیندهٔ MySQL بعد از خرید آن توسط Oracle بالا گرفت، بنیانگذار اصلی خود MySQL دست به کار شد و یک فورک کامل ساخت.
MariaDB یک دیتابیس رابطهای متنباز است که به صورت drop-in با MySQL سازگار است و امکانات و موتورهای ذخیرهسازی بیشتری ارائه میدهد. در این مقاله نسخهٔ MariaDB 11.4 را بررسی میکنیم: پیشینه، امکانات، مقایسه با رقبا، موارد استفاده و محدودیتها.
MariaDB چیست؟
MariaDB در سال ۲۰۰۹ توسط Michael "Monty" Widenius — خالق اصلی MySQL — به عنوان فورکی از MySQL ساخته شد. انگیزهٔ اصلی این کار، نگرانی از آیندهٔ MySQL بعد از خرید شرکت Sun Microsystems (مالک وقت MySQL) توسط Oracle بود. نام MariaDB از اسم دختر Monty، یعنی Maria، گرفته شده است.
امروزه MariaDB توسط MariaDB Foundation — یک بنیاد غیرانتفاعی — و جامعهٔ جهانی توسعهدهندگان نگهداری میشود و تضمین میدهد که همیشه نسخهای متنباز و بدون مالک تجاری وجود داشته باشد. نسخهٔ MariaDB 11.4 که در مه ۲۰۲۴ منتشر شد، یک نسخهٔ LTS با پشتیبانی پنج ساله است.
سازگاری کامل با MySQL
مهمترین ویژگی MariaDB سازگاری کامل آن با MySQL است: APIها، پروتکلها و دستورات اصلی یکساناند، بنابراین اپلیکیشنهایی که برای MySQL نوشته شدهاند بدون تغییر روی MariaDB اجرا میشوند. در اغلب توزیعهای لینوکس، بستهٔ mysql در واقع به MariaDB اشاره میکند و ابزار خط فرمان mysql هم به همین شکل کار میکند. همین سازگاری، مهاجرت از MySQL را به یک فرآیند ساده تبدیل کرده.
امکانات اصلی MariaDB
موتورهای ذخیرهسازی متنوع
MariaDB علاوه بر InnoDB که موتور پیشفرض است، موتورهای ذخیرهسازی اختصاصی خودش را دارد:
- Aria — نسخهٔ پیشرفتهٔ MyISAM با قابلیت بازیابی امن بعد از crash، بدون نیاز به فلش کامل جدول
- ColumnStore — موتور ذخیرهسازی ستونی (Columnar) برای بارهای کاری تحلیلی و انبار داده با مقیاس بالا
- CONNECT — امکان کوئری زدن مستقیم به فایلهای خارجی مثل CSV، JSON و XML و حتی دیتابیسهای دیگر
- Spider — پارتیشنبندی توزیعشده روی چند سرور (Sharding داخلی)
Galera Cluster — نسخهبرداری همگام داخلی
MariaDB معروف به یکپارچهسازی عمیق با Galera Cluster است؛ یک راهکار نسخهبرداری همگام (Synchronous) چندمستری (Multi-Master) که در آن هر نود میتواند بنویسد و داده بلافاصله در همهٔ نودها همگام میشود. این یعنی دسترسپذیری بالا و تحمل خطا، بدون از دست دادن داده و با failover خودکار — همه به صورت بومی و بدون ابزار اضافی.
Thread Pool
یکی از تفاوتهای عمدهٔ MariaDB با MySQL، Thread Pool است که در حالت پیشفرض فعال است. در این مدل، تعداد کمی رشتهٔ کاری بین هزاران اتصال به اشتراک گذاشته میشود. نتیجه: پایداری بسیار بهتر در بار کاری بالا با تعداد اتصال زیاد، بدون تخریب عملکرد.
بهبودهای SQL و ذخیرهسازی موقت
MariaDB بهینهساز کوئری خود را دارد و قابلیتهایی مثل WITH (CTE)، Window Function و دستور DELETE ... RETURNING را سالها زودتر از MySQL اضافه کرد. موتور ذخیرهٔ موقت MEMORY هم با موتور Aria جایگزین شده که از دادهٔ بزرگتر و بازیابی crash پشتیبانی میکند.
پیشینهٔ TokuDB و MyRocks
MariaDB سالها موتور TokuDB را برای فشردهسازی بالا و ایندکسهای درختی فرکتال ارائه میداد و بعدها MyRocks (بر پایهٔ RocksDB از فیسبوک) را هم اضافه کرد. این موتورها برای دادههای حجیم با ضریب فشردهسازی بالا جذاب بودند، اما با تغییر رویکرد بنیاد MariaDB، هر دو به تدریج از نسخههای جدید حذف شدند و تمرکز به سمت موتورهای مدرنتر مثل InnoDB با فشردهسازی پیشرفته و ColumnStore رفت.
کاهش هزینهٔ داده در آینده
MariaDB قابلیت ALTER TABLE آنی و ایندکسهای نامرئی (Invisible Index) دارد و در نسخههای اخیر بر بهینهسازی حافظهٔ مشترک و عملکرد در هستههای زیاد تمرکز کرده — مناسب اجرا روی سرورهای مدرن با CPUهای پرتعداد.
شروع کار با MariaDB
راهاندازی MariaDB تقریباً مشابه MySQL است و ابزارهای آن هم یکساناند. بعد از نصب، با دستور زیر وارد میشوید:
mysql -u root -p -h localhostهر درایوری که با MySQL کار میکند (mysqli در PHP، mysql2 در Node.js و ...) بدون تغییر روی MariaDB هم کار میکند. ابزار مدیریتی گرافیکی محبوب phpMyAdmin و DBeaver هم کاملاً با آن سازگارند.
مقایسه MariaDB با رقبا
رقبای اصلی MariaDB، MySQL (پدر آن) و PostgreSQL هستند. جدول زیر این سه را از جنبههای کلیدی مقایسه میکند:
| ویژگی | MariaDB | MySQL | PostgreSQL |
|---|---|---|---|
| توسعهدهنده | MariaDB Foundation (متنباز خالص) | Oracle | PostgreSQL Global Development Group |
| سازگاری با MySQL | کامل (drop-in) | — | خیر |
| موتورهای ذخیرهسازی | InnoDB، Aria، ColumnStore و ... | InnoDB (اصلی) | یک موتور + اکستنشن |
| کلاستر چندمستری | Galera (همگام، داخلی) | Group Replication (پیکربندی اضافی) | Logical Replication + ابزار خارجی |
| Thread Pool | بله (پیشفرض) | فقط در Enterprise | معماری متفاوت (Process-based) |
| قابلیتهای پیشرفتهٔ SQL | خوب | متوسط | بسیار بالا |
موارد استفادهٔ MariaDB
۱. جایگزینی مستقیم MySQL
سادهترین کاربرد MariaDB، جایگزینی drop-in برای MySQL است: درایورها و کدها هماناند، اما موتورها و بهینهسازیهای بیشتری در اختیار دارید و خیالتان از آیندهٔ متنباز بودن پروژه راحت است.
۲. کلاسترهای با دسترسپذیری بالا
با Galera Cluster میتوانید بدون ابزارهای خارجی، یک کلاستر چندنودی با failover خودکار و نوشتن همزمان روی همهٔ نودها بسازید — گزینهٔ عالی برای سرویسهایی که downtime برایشان حیاتی است.
۳. وباپلیکیشنها و CMS
همهٔ اپلیکیشنهای MySQL — از وردپرس تا لاراول — روی MariaDB بدون تغییر اجرا میشوند. بسیاری از توزیعهای لینوکس آن را به عنوان MySQL پیشفرض ارائه میدهند.
۴. بارهای کاری با اتصالهای بسیار زیاد
به لطف Thread Pool، MariaDB در سناریوهایی که هزاران اتصال همزمان به دیتابیس دارید (مثلاً از سوی Pool اتصال اپلیکیشنها) پایدارتر از MySQL رفتار میکند.
چه زمانی MariaDB انتخاب مناسبی است؟
- به جایگزین متنباز خالص برای MySQL با سازگاری کامل نیاز دارید
- به کلاستر چندمستری با نسخهبرداری همگام و راهاندازی ساده نیاز دارید
- به موتورهای ذخیرهسازی متنوع (تحلیلی، فایل خارجی و ...) نیاز دارید
- بار کاری شما اتصالهای همزمان زیادی دارد و نیاز به پایداری دارید
- تیم شما با MySQL آشناست و میخواهد بدون یادگیری جدید امکانات بیشتری بگیرد
برای چه چیزهایی مناسب نیست؟
- دادهٔ پیچیده با کوئریهای تحلیلی سنگین — اگر به قابلیتهای پیشرفتهٔ SQL مثل JSONB، اکستنشن و ایندکسهای متنوع نیاز دارید، PostgreSQL قدرتمندتر است
- جستجوی تماممتن پیشرفته و دادهٔ مکانی — برای این کارها PostgreSQL (با PostGIS) یا Elasticsearch انتخاب بهتریاند
- محیطهای کاملاً سازمانی مایکروسافت — اگر زیرساخت شما ویندوز و .NET است، SQL Server با ابزارهای مایکروسافت هماهنگتر است
- دادهٔ بدون اسکیما — MariaDB همچنان یک دیتابیس رابطهای است؛ برای مدل دادهٔ کاملاً سندی، MongoDB مناسبتر است
- نیاز به پشتیبانی تجاری رسمی از MySQL — اگر سازمان شما قرارداد پشتیبانی Oracle برای MySQL دارد، نگهداشتن MySQL منطقی است
لکسویا این دیتابیس را به عنوان سرویس دیتابیس ابری (DBaaS) ارائه میدهد — با چند کلیک نمونهٔ تکنمونهای یا کلاستر با دسترسپذیری بالا راه بیندازید و بدون دغدغهٔ نگهداری، از قابلیتهای MariaDB 11.4 استفاده کنید.
نتیجهگیری
MariaDB بیش از یک فورک ساده است؛ یک پروژهٔ مستقل با هویت و مسیر توسعهٔ خودش. سازگاری کامل با MySQL، موتورهای ذخیرهسازی متنوع و یکپارچگی عمیق با Galera آن را به گزینهای جذاب برای تیمهایی تبدیل کرده که به متنباز بودن واقعی اهمیت میدهند.
اگر امروز از MySQL استفاده میکنید و به دنبال امکانات بیشتر و آیندهای بدون دغدغهٔ مالکیت تجاری هستید، MariaDB 11.4 نقطهٔ شروع مناسبی است.