07
مهاگه بخوام خیلی ساده بگم، پایگاه داده متن باز MariaDB یه جور سیستم مدیریت پایگاه داده (یا همون DBMS) هست که میتونی باهاش دادههات رو ذخیره کنی، مدیریت کنی و هر وقت لازم داشتی، بهشون دسترسی پیدا کنی. حالا فکر کن یه کتابخونه بزرگ داری، پر از کتابهای مختلف. پایگاه داده متن باز MariaDB مثل یه کتابدار زرنگه که میتونه خیلی سریع برات هر کتابی رو پیدا کنه، مرتبشون کنه و حتی اگه بخوای، یه سری اطلاعات جدید بهش اضافه کنه. این سیستم متنبازه، یعنی کدش برای همه در دسترسه و میتونی به دلخواه خودت تغییرش بدی. تازه، چون از MySQL جدا شده، خیلی از کسایی که قبلاً با MySQL کار کردن، راحت میتونن با پایگاه داده متن باز MariaDB هم کنار بیان.
این پایگاه داده برای هر چیزی از یه وبسایت کوچیک گرفته تا سیستمهای سازمانی غولپیکر کاربرد داره. حالا بیایم یه کم عمیقتر بشیم و ببینیم این پایگاه داده متن باز MariaDB از کجا پیداش شده و چرا اینقدر طرفدار داره.
برای این که داستان MariaDB رو بفهمیم، باید اول یه کم درباره MySQL حرف بزنیم. MySQL تو دهه ۱۹۹۰ یه انقلاب تو دنیای پایگاه دادهها بود. یه سیستم مدیریت پایگاه داده رابطهای (RDBMS) متنباز که هم سریع بود، هم ساده و هم برای همه در دسترس. این پروژه کارش رو سال ۱۹۹۵ شروع کرد و خیلی زود شد یکی از محبوبترین ابزارها برای برنامهنویسها و شرکتهایی که میخواستن دادههاشون رو مدیریت کنن.
پشت MySQL چند تا آدم کلیدی بودن، از جمله مایکل ویدنیوس (Michael Widenius)، که بهش میگفتن “مونتی”. مونتی و تیمش MySQL رو با عشق و علاقه ساختن و هدفشون این بود که یه پایگاه داده بسازن که هم قوی باشه، هم برای همه قابل استفاده. تا اوایل دهه ۲۰۰۰، MySQL حسابی جا افتاده بود و از وبسایتهای کوچیک گرفته تا شرکتهای بزرگ مثل فیسبوک و گوگل ازش استفاده میکردن.
اما یه اتفاق بزرگ تو سال ۲۰۰۸ همهچیز رو تغییر داد. شرکت Sun Microsystems که صاحب MySQL بود، توسط Oracle، یکی از غولهای فناوری، خریداری شد. این خرید مثل یه زلزله بود برای جامعه متنباز. خیلیها نگران شدن که Oracle قراره MySQL رو تجاریتر کنه یا محدودیتهایی روش بذاره. اینجاست که داستان MariaDB شروع میشه.
مونتی ویدنیوس، که MySQL براش مثل بچه خودش بود، از خرید Oracle اصلاً خوشحال نبود. حس میکرد پروژهای که سالها براش زحمت کشیده، ممکنه مسیرش عوض بشه و دیگه اون روح متنباز و آزادش رو از دست بده. پس تصمیم گرفت دست به کار بشه. تو سال ۲۰۰۹، مونتی یه شاخه (Fork) از کد MySQL درست کرد و اسمش رو گذاشت MariaDB، به اسم یکی از دخترهاش، ماریا.
این حرکت مونتی فقط یه تصمیم احساسی نبود. اون میخواست یه پایگاه داده متنباز بسازه که نهتنها همه خوبیهای MySQL رو داشته باشه، بلکه بهتر و آزادتر هم باشه. MariaDB از همون اول با هدف سازگاری کامل با MySQL شروع شد، یعنی اگه کسی قبلاً با MySQL کار کرده بود، میتونست بدون دردسر به MariaDB مهاجرت کنه. اما مونتی و تیمش فقط به کپی کردن MySQL راضی نبودن؛ اونا میخواستن چیزای جدید و باحالی بهش اضافه کنن.
وقتی MariaDB تو سال ۲۰۰۹ لانچ شد، کارش اصلاً ساده نبود. فکرش رو بکن، داری یه پروژه جدید راه میندازی که قراره با غولی مثل MySQL رقابت کنه، اونم تو دنیایی که MySQL سالهاست همهجا استفاده میشه. اما مونتی و تیمش روحیه جنگجویی داشتن. اونا شروع کردن به اضافه کردن ویژگیهای جدید و بهینهسازیهایی که MySQL نداشت.
یکی از اولین کارایی که کردن، این بود که موتور ذخیرهسازی Aria رو معرفی کردن. این موتور برای کارایی مثل تحلیل دادهها طراحی شده بود و سرعتش از موتورهای قدیمی MySQL بهتر بود. یه چیز دیگه که MariaDB رو خاص کرد، این بود که تیمش خیلی روی بهینهسازی کوئریها (Query Optimization) کار کرد. این یعنی MariaDB میتونست درخواستهای پیچیده رو سریعتر از MySQL اجرا کنه.
ولی خب، یه پروژه جدید همیشه چالش داره. تو سالهای اولیه، MariaDB باید خودش رو به جامعه متنباز ثابت میکرد. خیلیها میگفتن: “چرا باید از MySQL که امتحانش رو پس داده، بریم سراغ یه پروژه جدید؟” برای همین، تیم MariaDB حسابی تلاش کرد که مستندات خوبی ارائه بده، باگها رو سریع فیکس کنه و نشون بده که MariaDB نهتنها یه جایگزینه، بلکه یه گزینه بهتره.
تا سال ۲۰۱۰، MariaDB داشت کمکم جاش رو تو دنیای فناوری باز میکرد. یه سری شرکت و پروژه شروع کردن به استفاده ازش. مثلاً ویکیپدیا، که یکی از بزرگترین سایتهای دنیاست، تصمیم گرفت از MariaDB استفاده کنه. این یه برد بزرگ برای تیم MariaDB بود، چون نشون میداد که حتی پروژههای عظیم هم بهش اعتماد دارن.
یه چیز باحال درباره MariaDB اینه که جامعه متنباز خیلی سریع دورش جمع شد. چون کدش کاملاً باز بود و تحت مجوز GPLv2 منتشر میشد، توسعهدهندهها از سراسر دنیا شروع کردن به همکاری باهاش. این همکاری باعث شد MariaDB به سرعت رشد کنه و ویژگیهای جدیدی مثل پشتیبانی از دادههای JSON، فشردهسازی بهتر و ابزارهای امنیتی پیشرفته بهش اضافه بشه.
تا سال ۲۰۱۲، MariaDB به نسخه ۵.۵ رسید و دیگه کاملاً خودش رو بهعنوان یه رقیب جدی برای MySQL جا انداخته بود. شرکتهای بیشتری شروع کردن به مهاجرت به MariaDB، بهخصوص اونایی که نگران سیاستهای Oracle بودن. مثلاً گوگل اعلام کرد که داره بخشهاییش رو از MySQL به MariaDB منتقل میکنه. این خبر مثل یه بمب بود و باعث شد خیلیها بیشتر به MariaDB توجه کنن.
حالا که MariaDB داشت معروف میشد، رقابتش با MySQL هم داغتر میشد. اما این رقابت یه جورایی دوستانه بود، چون MariaDB در اصل از کد MySQL ساخته شده بود. خیلی از توسعهدهندههایی که قبلاً روی MySQL کار میکردن، حالا داشتن برای MariaDB کد مینوشتن. این باعث شد که MariaDB بتونه خیلی از خوبیهای MySQL رو نگه داره و در عین حال چیزای جدید بهش اضافه کنه.
یکی از بزرگترین تفاوتهای MariaDB با MySQL این بود که MariaDB کاملاً متعهد به متنباز موند. Oracle یه سری ویژگیهای تجاری به MySQL اضافه کرد که فقط تو نسخههای پولیش در دسترس بود، ولی MariaDB همهچیز رو رایگان و باز نگه داشت. این باعث شد خیلی از توسعهدهندهها و شرکتهای کوچیک که بودجه زیادی نداشتن، به سمت MariaDB بیان.
یه تفاوت دیگه هم تو عملکرد بود. MariaDB تو یه سری بنچمارکها نشون داد که میتونه کوئریهای پیچیده رو سریعتر اجرا کنه. مثلاً تو تستهایی که سال ۲۰۱۳ انجام شد، MariaDB تو بعضی سناریوها تا ۲۰٪ از MySQL سریعتر بود. این برای شرکتهایی که با دادههای بزرگ کار میکردن، یه امتیاز بزرگ بود.
حالا که یه کم با ریشههای پایگاه داده متن باز MariaDB آشنا شدیم، بریم سراغ این که چرا این پایگاه داده اینقدر تو دل همه جا باز کرده. یه چند تا دلیل اصلی داره که باعث شده MariaDB از یه پروژه تازهکار به یه ستاره تو دنیای فناوری تبدیل بشه:
یکی از بزرگترین دلیلای محبوبیت MariaDB اینه که کاملاً متنبازه و تحت مجوز GPLv2 منتشر میشه. این یعنی نهتنها میتونی رایگان ازش استفاده کنی، بلکه میتونی کدش رو ببینی، تغییر بدی و حتی بهش قابلیتهای جدید اضافه کنی. برای برنامهنویسایی که دوست دارن کنترل کامل رو دستشون باشه، این یه امتیاز طلاییه.
برخلاف MySQL که بعد از خرید Oracle یه سری ویژگیهای تجاری بهش اضافه شد و فقط تو نسخههای پولی در دسترس بود، MariaDB همهچیز رو رایگان و باز نگه داشت. این باعث شد خیلی از شرکتهای کوچیک و استارتاپها که بودجه زیادی نداشتن، به سمت MariaDB بیان.
یکی دیگه از چیزایی که MariaDB رو محبوب کرد، اینه که عملاً میتونی بذاریش جای MySQL بدون این که لازم باشه کد برنامهات رو عوض کنی. دستورات SQL، ابزارها و حتی درایورهای MySQL با MariaDB کار میکنن. این یعنی اگه یه پروژه داری که با MySQL کار میکنه، میتونی با یه مهاجرت ساده به MariaDB بیای و از خوبیهاش استفاده کنی.
این سازگاری برای خیلی از برنامهنویسا و شرکتها یه نعمت بود، چون میتونستن بدون دردسر و هزینه زیاد، پایگاه دادهشون رو ارتقا بدن. فکر کن بخوای یه ماشین قدیمی رو با یه مدل جدید عوض کنی، ولی لازم نباشه رانندگی رو از اول یاد بگیری. MariaDB دقیقاً همچین چیزیه!
MariaDB فقط یه کپی از MySQL نیست؛ تو خیلی از زمینهها ازش بهتر عمل میکنه. تیم توسعهدهنده MariaDB یه سری بهینهسازیهای حسابی روی موتورهای ذخیرهسازی و اجرای کوئریها کردن. مثلاً موتور Aria که اختصاصی برای MariaDB ساخته شده، برای کارایی مثل تحلیل دادهها خیلی سریعتر از موتورهای قدیمی MySQL مثل MyISAMه.
تو یه سری تستهای بنچمارک که تو سالهای ۲۰۱۳ تا ۲۰۱۵ انجام شد، MariaDB تو خیلی از سناریوها تا ۲۰٪ از MySQL سریعتر بود. این برای پروژههایی که با حجم داده زیاد سروکار دارن، مثل وبسایتهای بزرگ یا سیستمهای تحلیل داده، یه مزیت خیلی بزرگه.
MariaDB فقط به بهتر کردن MySQL راضی نبود؛ کلی قابلیت جدید بهش اضافه کرد که باعث شد از رقیبش متمایز بشه. چند تا از این ویژگیها رو براتون میگم:
پشتیبانی از JSON: MariaDB میتونه دادههای JSON رو بهصورت داخلی مدیریت کنه، که برای برنامههای مدرن که با دادههای غیرساختاریافته کار میکنن خیلی کاربردیه.
موتورهای ذخیرهسازی متنوع: مثل Aria و ColumnStore که برای کاربردهای خاص (مثل تحلیل دادههای بزرگ) طراحی شدن.
امنیت پیشرفته: MariaDB یه سری ابزارهای امنیتی مثل رمزنگاری دادهها و مدیریت دسترسی بهتر داره که تو MySQL به این شکل نیست.
فشردهسازی دادهها: این قابلیت باعث میشه بتونی دادههای بیشتری رو تو فضای کمتری ذخیره کنی، که برای صرفهجویی تو هزینههای ذخیرهسازی عالیه.
این ویژگیها باعث شد MariaDB نهتنها یه جایگزین برای MySQL باشه، بلکه برای خیلی از پروژهها گزینه بهتری هم باشه.
یه دلیل دیگه که MariaDB رو محبوب کرد، جامعه فعال و پرشورشه. چون متنبازه، توسعهدهندهها از سراسر دنیا میتونن باهاش همکاری کنن، باگهاش رو فیکس کنن و ویژگیهای جدید بهش اضافه کنن. MariaDB Foundation، یه سازمان غیرانتفاعی که سال ۲۰۱۲ تأسیس شد، هم حسابی به رشد این پروژه کمک کرده.
این بنیاد مطمئن میشه که MariaDB همیشه آزاد و متنباز بمونه و از یه طرف با جمعآوری کمکهای مالی، پروژه رو حمایت میکنه. اگه یه روز تو کار با MariaDB گیر کنی، کلی مستندات، فروم و گروههای آنلاین هست که میتونی ازشون کمک بگیری. این حس پشتیبانی و همراهی باعث شده خیلیها به MariaDB اعتماد کنن.
وقتی غولهای فناوری مثل گوگل، ویکیپدیا و ردیت شروع کردن به استفاده از MariaDB، بقیه هم بهش توجه کردن. این که شرکتهای به این بزرگی به یه پروژه اعتماد کنن، خودش یه مهر تأییده. مثلاً:
ویکیپدیا: یکی از بزرگترین سایتهای دنیا برای مدیریت محتواش از MariaDB استفاده میکنه.
گوگل: بخشهایی از زیرساختش رو به MariaDB منتقل کرد.
ردیت: این شبکه اجتماعی هم MariaDB رو برای مدیریت دادههاش انتخاب کرد.
این اعتماد باعث شد خیلی از شرکتهای دیگه هم به MariaDB رو بیارن، چون دیدن که این پایگاه داده میتونه حتی برای پروژههای عظیم هم جواب بده.
برای کسانی که در حوزه شبکه فعالیت دارند، درک تفاوت Active Directory و Domain بسیار مهم است. اگر به مفاهیم آیندهنگرانه فناوری علاقهمند هستید، پیشنهاد میکنیم مقاله متاورس (Metaverse) را بخوانید.
تازهواردهای برنامهنویسی میتوانند با راهنمای جامع آغاز برنامهنویسی برای مبتدیان شروعی ساده و کاربردی داشته باشند. همچنین اگر به بهبود عملکرد سایت خود فکر میکنید، مقاله کلودفلر (Cloudflare) بسیار مفید خواهد بود.
در حوزه شبکه و امنیت، دانستن اینکه Port Rule چیست؟ یا ابزار HPE OneView چگونه کار میکند، دانش فنی شما را ارتقاء میدهد. برای مدیران پروژه، استفاده از زمانبندی گانت در پراجکت سرور کمک شایانی به مدیریت بهتر پروژهها خواهد کرد.
برای متخصصان دیتابیس، مطالعه آموزش اتصال از راه دور به SQL Server و مقایسه انواع دیتابیس بسیار کاربردی است. در نهایت، اگر به بهینهسازی کد اهمیت میدهید، مقاله رفکتورینگ چیست؟ را از دست ندهید.
پایگاه داده متن باز MariaDB یه سیستم پیچیدهست، ولی اگه بخوام ساده بگم، مثل یه ماشین خوب تنظیمشدهست که چند تا بخش اصلی داره:
موتورهای ذخیرهسازی (Storage Engines): اینا تعیین میکنن که دادهها چطور ذخیره و مدیریت بشن.
هسته اصلی (Core): این بخش مغز MariaDBه که دستورات SQL رو میفهمه و اجرا میکنه.
کلاینتها و ابزارها: اینا راههای ارتباط با MariaDBن، مثل خط فرمان یا رابطهای گرافیکی.
لایههای امنیتی و مدیریت دسترسی: برای این که دادههات امن بمونن و فقط کسایی که اجازه دارن بهشون دسترسی داشته باشن.
بیایم هر کدوم از این بخشها رو یه کم باز کنیم.
یکی از باحالترین چیزای MariaDB اینه که میتونی برای ذخیره دادههات از موتورهای مختلف استفاده کنی. فکر کن داری یه کمد برای لباسات انتخاب میکنی. یه کمد برای لباسهای روزمره میخوای، یه کمد برای لباسهای مهمونی. MariaDB هم چند تا کمد (یا موتور ذخیرهسازی) داره که هر کدوم برای یه کار خاص بهینه شدن.
چند تا از مهمترین موتورهای MariaDB اینا هستن:
InnoDB: این موتور پیشفرض MariaDBه و برای اکثر کارها عالیه. از تراکنشها (Transactions) پشتیبانی میکنه، یعنی اگه یه عملیات نصفهکاره بمونه (مثلاً پول از حساب یکی کم بشه ولی به حساب یکی دیگه نرسه)، میتونه همهچیز رو برگردونه به حالت قبل. برای وباپلیکیشنها و سیستمهایی که نیاز به پایداری دارن، حرف نداره.
Aria: این یه موتور اختصاصی برای MariaDBه که برای کارایی مثل تحلیل دادهها و سرعت بالا طراحی شده. مثلاً اگه بخوای یه عالمه داده رو سریع بخونی، Aria خیلی به کار میاد.
MyISAM: این موتور قدیمیتره و بیشتر برای کارایی مناسبه که نیاز به خوندن سریع دارن، ولی از تراکنشها پشتیبانی نمیکنه. برای پروژههای سادهتر خوبه.
ColumnStore: این یکی برای تحلیل دادههای بزرگ (مثل دیتابیسهای تحلیلی) طراحی شده. اگه با دادههای عظیم سروکار داری، این موتور مثل یه قهرمان عمل میکنه.
هر کدوم از این موتورها یه جور خاص دادهها رو ذخیره و مدیریت میکنن. مثلاً InnoDB دادهها رو با یه ساختار پیچیدهتر ذخیره میکنه که برای عملیات پیچیده مناسبه، ولی MyISAM سادهتره و برای خوندن سریع بهتره. تو MariaDB میتونی برای هر جدول یه موتور انتخاب کنی، که این انعطافپذیری خیلی باحاله.
هسته MariaDB جاییه که همه دستورات SQL پردازش میشن. وقتی یه دستور SQL مینویسی (مثلاً “همه مشتریهای بالای ۳۰ سال رو نشون بده”)، این هستهست که میفهمه چی میخوای و میره سراغ دادهها. این بخش شامل چند تا جزء مهمه:
پارسکننده (Parser): دستور SQL رو میخونه و چک میکنه که درست نوشته شده باشه.
بهینهساز کوئری (Query Optimizer): این بخش باهوشه! نگاه میکنه که بهترین راه برای اجرای دستور چیه. مثلاً اگه بخوای دادهها رو از چند جدول بگیری، تصمیم میگیره که از کدوم جدول اول شروع کنه که سریعتر باشه.
اجراکننده (Execution Engine): این بخش دستور رو اجرا میکنه و نتیجه رو برمیگردونه.
یکی از چیزایی که MariaDB رو خاص میکنه، بهینهساز کوئری قویشه. این بخش باعث میشه کوئریهای پیچیده سریعتر اجرا بشن، که برای پروژههای بزرگ خیلی مهمه.
برای کار با MariaDB، نیاز داری باهاش “حرف بزنی”. این کار از طریق کلاینتها انجام میشه. سادهترین راهش استفاده از خط فرمان (Command Line)ه. مثلاً با دستور زیر میتونی وارد MariaDB بشی:
mysql -u root -p
بعد رمزت رو وارد میکنی و میری تو محیطی که میتونی دستورات SQL بنویسی. مثلاً:
SELECT * FROM users WHERE age > 30;
این دستور همه کاربرایی که بالای ۳۰ سال دارن رو از جدول users نشون میده.
علاوه بر خط فرمان، یه سری ابزار گرافیکی هم هست که کار رو راحتتر میکنن، مثل:
phpMyAdmin: یه رابط وب برای مدیریت پایگاه داده.
HeidiSQL: یه ابزار ویندوزی که خیلی ساده و کاربردیه.
DBeaver: یه ابزار چندپلتفرمی که برای حرفهایها عالیه.
این ابزارها بهت کمک میکنن بدون نیاز به نوشتن کدهای پیچیده، دادههات رو مدیریت کنی.
MariaDB خیلی روی امنیت حساسه. فکر کن داری یه گاوصندوق پر از اطلاعات مهم داری. MariaDB ابزارهایی داره که مطمئن میشه فقط آدمای درست به این اطلاعات دسترسی دارن. چند تا از این ابزارها اینا هستن:
مدیریت کاربرها: میتونی برای هر کاربر دسترسیهای خاص تعریف کنی. مثلاً یکی فقط بتونه دادهها رو بخونه، یکی دیگه بتونه ویرایش کنه.
رمزنگاری دادهها: MariaDB میتونه دادهها رو موقع ذخیرهسازی یا انتقال رمزنگاری کنه که کسی نتونه دزدکی بهشون نگاه کنه.
لاگهای امنیتی: میتونی ببینی کی چه کارایی با پایگاه داده کرده.
مثلاً میتونی یه کاربر جدید درست کنی و فقط بهش اجازه بدی یه جدول خاص رو ببینه:
CREATE USER 'ali'@'localhost' IDENTIFIED BY 'password123';
GRANT SELECT ON mydb.users TO 'ali'@'localhost';
این دستور یه کاربر به اسم ali درست میکنه و فقط بهش اجازه میده جدول users تو دیتابیس mydb رو بخونه.
MariaDB از زبان SQL برای مدیریت دادهها استفاده میکنه. SQL یه زبان استاندارد برای کار با پایگاه دادههای رابطهایه و خیلی سادهست. چند تا دستور پرکاربردش اینا هستن:
ایجاد جدول:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
age INT
);
اضافه کردن داده:
INSERT INTO users (name, email, age) VALUES ('سارا', 'sara@example.com', 25);
خوندن داده:
SELECT * FROM users WHERE age > 20;
بهروزرسانی داده:
UPDATE users SET age = 26 WHERE name = 'سارا';
حذف داده:
DELETE FROM users WHERE email = 'sara@example.com';
این دستورات خیلی سادهن، ولی وقتی با هم ترکیب بشن، میتونی کارای خیلی پیچیدهای بکنی.
حالا که فهمیدیم پایگاه داده متن باز MariaDB چطور کار میکنه، بیایم چند تا از ویژگیهای باحالش رو ببینیم که باعث شدن از بقیه پایگاه دادهها متمایز بشه:
MariaDB میتونه دادههای JSON رو بهصورت داخلی مدیریت کنه. این برای برنامههای مدرنی که با دادههای غیرساختاریافته کار میکنن خیلی کاربردیه. مثلاً میتونی یه ستون JSON تو جدولت داشته باشی:
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
details JSON
);
INSERT INTO products (name, details) VALUES ('لپتاپ', '{"brand": "Dell", "price": 1000}');
MariaDB طوری طراحی شده که بتونه با پروژههای بزرگ کنار بیاد. مثلاً با قابلیتهایی مثل Replication (کپی کردن دادهها رو چند سرور) و Sharding (تقسیم دادهها بین سرورها)، میتونی پایگاه دادهات رو برای میلیونها کاربر مقیاسپذیر کنی.
بهینهساز کوئری MariaDB خیلی قویه. این یعنی حتی اگه یه کوئری پیچیده بنویسی، MariaDB بهترین راه رو برای اجراش پیدا میکنه. مثلاً اگه بخوای دادهها رو از چند جدول با هم ترکیب کنی، MariaDB خودش تصمیم میگیره که از کجا شروع کنه که سریعتر باشه.
موتور ColumnStore تو MariaDB برای تحلیل دادههای بزرگ عالیه. مثلاً اگه بخوای گزارشهای پیچیده از فروش یه فروشگاه بگیری، این موتور میتونه خیلی سریع دادهها رو پردازش کنه.
قبل از نصب MariaDB، باید مطمئن بشی سیستمات آمادهست. MariaDB روی سیستمعاملهای مختلف مثل لینوکس، ویندوز و مک کار میکنه، ولی هر کدوم یه سری پیشنیاز دارن. بیایم یه نگاهی بندازیم:
سیستم بهروز: مطمئن شو که سیستمعاملت بهروزه. تو اوبونتو میتونی این دستور رو بزنی:
sudo apt update && sudo apt upgrade
فضای دیسک: حداقل ۱ گیگابایت فضای خالی برای نصب و یه کم فضای اضافی برای دادهها.
دسترسی روت: برای نصب، نیاز به دسترسی مدیر (sudo) داری.
نسخه ویندوز: MariaDB روی ویندوز ۷ به بالا کار میکنه، ولی بهتره از ویندوز ۱۰ یا ۱۱ استفاده کنی.
فضای دیسک: مثل لینوکس، حداقل ۱ گیگابایت فضای خالی لازمه.
نرمافزار اضافی: معمولاً نیازی به نرمافزار اضافی نیست، چون پکیج نصب MariaDB همهچیز رو خودش داره.
نسخه macOS: MariaDB روی macOS 10.10 به بالا کار میکنه.
Homebrew: برای نصب سادهتر، بهتره Homebrew (یه مدیر بسته برای مک) رو نصب کنی.
فضای دیسک: بازم همون ۱ گیگابایت کافیه.
قبل از شروع، یه چک کن که پورت ۳۳۰۶ (پورت پیشفرض MariaDB) روی سیستمات باز باشه و توسط برنامه دیگهای استفاده نشه. اگه از فایروال استفاده میکنی، باید این پورت رو باز کنی.
حالا که سیستم آمادهست، بریم MariaDB رو نصب کنیم. بسته به سیستمعاملت، مراحل فرق میکنه. من برای هر سیستمعامل جداگانه توضیح میدم.
اوبونتو یکی از محبوبترین توزیعهای لینوکسه، پس با این شروع میکنیم:
مخزن MariaDB رو اضافه کن (اختیاری، برای نسخههای جدیدتر): برای این که آخرین نسخه MariaDB رو داشته باشی، میتونی مخزن رسمی MariaDB رو اضافه کنی. برو به سایت رسمی MariaDB و ابزار مخزن رو پیدا کن. یه نمونه دستور برای اوبونتو ۲۰.۰۴:
sudo apt-get install software-properties-common
sudo apt-key adv --fetch-keys 'https://mariadb.org/mariadb_release_signing_key.asc'
sudo add-apt-repository 'deb [arch=amd64] http://mariadb.mirror.rafal.ca/repo/10.11/ubuntu focal main'
نصب MariaDB: حالا بسته MariaDB رو نصب کن:
sudo apt update
sudo apt install mariadb-server
چک کردن سرویس: بعد از نصب، مطمئن شو که سرویس MariaDB در حال اجراست:
sudo systemctl status mariadb
اگه اجرا نبود، میتونی با این دستور راهاندازیش کنی:
sudo systemctl start mariadb
برای این که MariaDB موقع بوت سیستم خودکار شروع بشه:
sudo systemctl enable mariadb
نصب روی ویندوز خیلی سادهست:
دانلود پکیج: برو به سایت رسمی MariaDB (mariadb.org) و آخرین نسخه رو برای ویندوز دانلود کن. معمولاً یه فایل MSI میگیری.
اجرای نصبکننده: فایل MSI رو اجرا کن و مراحل رو دنبال کن. چند تا نکته:
یه رمز برای کاربر root انتخاب کن.
پورت پیشفرض (۳۳۰۶) رو نگه دار، مگر این که دلیل خاصی برای تغییر داشته باشی.
میتونی تیک گزینههای اضافی مثل نصب HeidiSQL (یه ابزار گرافیکی) رو بزنی.
چک کردن نصب: بعد از نصب، میتونی با باز کردن Command Prompt و زدن دستور زیر چک کنی که MariaDB درست کار میکنه:
mysql -u root -p
رمزت رو وارد کن و باید وارد محیط MariaDB بشی.
برای مک، استفاده از Homebrew سادهترین راهه:
نصب Homebrew (اگه نداری):
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
نصب MariaDB:
brew install mariadb
راهاندازی سرویس:
brew services start mariadb
برای چک کردن وضعیت:
brew services list
بعد از نصب، MariaDB یه حالت پیشفرض داره که خیلی امن نیست. برای همین باید یه سری تنظیمات اولیه انجام بدی:
sudo mysql_secure_installation
این اسکریپت چند تا سوال ازت میپرسه:
رمز کاربر root: اگه قبلاً رمز نذاشتی، حالا یه رمز قوی انتخاب کن.
حذف کاربرهای ناشناس: بهتره گزینه Y رو بزنی تا کاربرهای ناشناخته حذف بشن.
غیرفعال کردن ورود root از راه دور: برای امنیت بیشتر، این رو هم غیرفعال کن (Y).
حذف دیتابیس تستی: یه دیتابیس تستی به اسم test هست که بهتره حذفش کنی (Y).
بارگذاری دوباره جداول دسترسی: این رو هم تأیید کن (Y).
این تنظیمات باعث میشه MariaDBت از همون اول امن باشه.
حالا که MariaDB نصب و امن شده، بیایم واردش بشیم:
mysql -u root -p
رمز root رو وارد کن. اگه همهچیز درست باشه، باید یه چیزی مثل این ببینی:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 10.11.4-MariaDB-1:10.11.4+maria~focal mariadb.org binary distribution
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
برای تست، میتونی یه دستور ساده بزنی:
SHOW DATABASES;
این دستور همه دیتابیسهای موجود رو نشون میده. به صورت پیشفرض، چند تا دیتابیس سیستمی مثل information_schema و mysql میبینی.
حالا بیایم یه دیتابیس واقعی بسازیم. فرض کن میخوای یه وبلاگ راه بندازی و نیاز به یه دیتابیس برای ذخیره پستها داری.
ایجاد دیتابیس:
CREATE DATABASE myblog;
استفاده از دیتابیس:
USE myblog;
ساخت جدول: یه جدول برای پستها میسازیم:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200),
content TEXT,
author VARCHAR(100),
created_at DATETIME
);
اضافه کردن داده:
INSERT INTO posts (title, content, author, created_at)
VALUES ('اولین پست من', 'این یه پست تستی برای وبلاگه!', 'علی', NOW());
چک کردن دادهها:
SELECT * FROM posts;
اگه همهچیز درست باشه، باید یه چیزی مثل این ببینی:
+----+--------------+-----------------------------+--------+---------------------+
| id | title | content | author | created_at |
+----+--------------+-----------------------------+--------+---------------------+
| 1 | اولین پست من | این یه پست تستی برای وبلاگه! | علی | 2025-05-27 12:05:00 |
+----+--------------+-----------------------------+--------+---------------------+
برای این که MariaDBت امن باشه، بهتره کاربرهای جداگونه با دسترسیهای محدود درست کنی. مثلاً فرض کن میخوای یه کاربر برای وبلاگت بسازی که فقط بتونه پستها رو بخونه:
ایجاد کاربر:
CREATE USER 'blog_user'@'localhost' IDENTIFIED BY 'securepassword123';
دادن دسترسی:
GRANT SELECT ON myblog.posts TO 'blog_user'@'localhost';
اعمال تغییرات:
FLUSH PRIVILEGES;
حالا میتونی با این کاربر وارد بشی و تست کنی:
mysql -u blog_user -p
اگه از خط فرمان خوشت نمیاد، میتونی از ابزارهای گرافیکی استفاده کنی. چند تا ابزار محبوب:
phpMyAdmin: یه رابط وب که خیلی سادهست. میتونی از مخزن اوبونتو نصبش کنی یا روی سرور وب (مثل Apache) راهاندازیش کنی.
HeidiSQL: برای ویندوز عالیه و خیلی سبک و کاربردیه.
DBeaver: یه ابزار چندپلتفرمی که برای حرفهایها هم مناسبه.
مثلاً برای نصب phpMyAdmin تو اوبونتو:
sudo apt install phpmyadmin
بعد میتونی از طریق مرورگر بهش دسترسی داشته باشی (معمولاً روی http://localhost/phpmyadmin).
حالا که MariaDB رو راه انداختی، بیایم یه کم حرفهایتر بشیم. یه سری تنظیمات میتونی انجام بدی که کارایی MariaDB رو بهتر کنه:
MariaDB چند تا موتور ذخیرهسازی داره که میتونی برای جدولهات انتخاب کنی. مثلاً:
InnoDB: پیشفرضه و برای اکثر کارها خوبه. از تراکنشها پشتیبانی میکنه.
Aria: برای کارایی که نیاز به سرعت بالا دارن، مثل تحلیل داده.
ColumnStore: برای تحلیل دادههای بزرگ.
مثلاً اگه بخوای جدولت با Aria ساخته بشه:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(200)
) ENGINE=Aria;
فایل تنظیمات MariaDB (معمولاً /etc/mysql/mariadb.conf.d/50-server.cnf تو لینوکس) رو میتونی ویرایش کنی تا کارایی رو بهتر کنی. مثلاً:
افزایش حافظه کش:
[mysqld]
query_cache_size = 64M
innodb_buffer_pool_size = 512M
فعال کردن لاگ کوئریها:
general_log = 1
general_log_file = /var/log/mysql/mariadb.log
بعد از تغییر، سرویس رو ریاستارت کن:
sudo systemctl restart mariadb
برای این که دادههات امن بمونن، باید مرتب از دیتابیست بکاپ بگیری. یه دستور ساده برای بکاپ:
mysqldump -u root -p myblog > myblog_backup.sql
برای ریاستور کردن:
mysql -u root -p myblog < myblog_backup.sql
حالا که MariaDB رو راه انداختی، میتونی به برنامههای مختلف وصلش کنی. مثلاً:
اگه با PHP کار میکنی، میتونی با PDO یا MySQLi به MariaDB وصل بشی. یه نمونه کد با PDO:
<?php
$dsn = 'mysql:host=localhost;dbname=myblog';
$username = 'blog_user';
$password = 'securepassword123';
try {
$pdo = new PDO($dsn, $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "اتصال برقرار شد!";
} catch (PDOException $e) {
echo "اتصال ناموفق: " . $e->getMessage();
}
?>
با کتابخونه mysql-connector-python میتونی به MariaDB وصل بشی:
import mysql.connector
connection = mysql.connector.connect(
host="localhost",
user="blog_user",
password="securepassword123",
database="myblog"
)
cursor = connection.cursor()
cursor.execute("SELECT * FROM posts")
results = cursor.fetchall()
for row in results:
print(row)
cursor.close()
connection.close()
ممکنه تو راهاندازی MariaDB به یه سری مشکل بربخوری. چند تا مشکل رایج و راهحلشون:
سرویس شروع نمیشه: چک کن که پورت ۳۳۰۶ آزاد باشه:
sudo netstat -tuln | grep 3306
اگه پورت استفاده میشه، یا MariaDB رو روی یه پورت دیگه تنظیم کن یا برنامه دیگه رو غیرفعال کن.
ارور دسترسی: اگه نمیتونی وارد بشی، چک کن که کاربر و رمز درست باشه. میتونی رمز root رو ریست کنی:
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
بعد تو محیط SQL:
UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root';
FLUSH PRIVILEGES;
عملکرد کند: اگه MariaDB کند کار میکنه، تنظیمات حافظه رو چک کن و مطمئن شو که ایندکسها رو درست روی جدولهات تعریف کردی:
CREATE INDEX idx_author ON posts(author);
اگه یه کم حرفهایتر شدی، میتونی این کارا رو امتحان کنی:
برای پروژههای بزرگ، میتونی از Replication استفاده کنی که دادهها رو روی چند سرور کپی کنه. این برای افزایش دسترسیپذیری و تحمل خطا خوبه.
CHANGE MASTER TO
MASTER_HOST='master_server_ip',
MASTER_USER='replication_user',
MASTER_PASSWORD='replication_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;
START SLAVE;
Galera Cluster یه راهحل برای مقیاسپذیریه که چند سرور MariaDB رو با هم سینک میکنه. برای نصب:
sudo apt install mariadb-galera-server galera
ابزارهایی مثل mysqladmin یا Prometheus میتونن عملکرد MariaDB رو مانیتور کنن:
mysqladmin -u root -p status
MariaDB برای یه عالمه کار مختلف استفاده میشه. چند تا مثال بزنم:
وبسایتها: خیلی از سایتهای معروف مثل ویکیپدیا از MariaDB برای ذخیره محتواشون استفاده میکنن.
برنامههای تجاری: شرکتهایی که نیاز به پایگاه داده برای مدیریت مشتریهاشون دارن، از MariaDB استفاده میکنن.
تحلیل داده: با موتورهایی مثل ColumnStore، MariaDB برای تحلیل دادههای بزرگ هم عالیه.
اینترنت اشیا (IoT): برای ذخیره دادههای حسگرها و دستگاههای IoT هم میتونه استفاده بشه.
هیچ سیستمی کامل نیست، MariaDB هم یه سری چالش داره:
جامعه کوچکتر نسبت به MySQL: هرچند جامعه MariaDB در حال رشده، ولی هنوز به پای MySQL نمیرسه.
مهاجرت برای پروژههای قدیمی: اگه یه پروژه قدیمی با MySQL داری، ممکنه مهاجرت به MariaDB یه کم پیچیده بشه، بهخصوص اگه از قابلیتهای خاص MySQL استفاده کرده باشی.
نیاز به دانش فنی: برای استفاده بهینه، باید یه کم با مفاهیم پایگاه داده آشنا باشی.
پایگاه داده متن باز MariaDB داره با سرعت زیادی پیشرفت میکنه. تیم توسعهدهندهش مرتب دارن ویژگیهای جدید اضافه میکنن و عملکردش رو بهتر میکنن. با توجه به این که خیلی از شرکتها دارن از MySQL به پایگاه داده متن باز MariaDB مهاجرت میکنن، به نظر میرسه آینده روشنی در انتظارش باشه. تازه، چون متنبازه، همیشه میتونه با نیازهای جدید سازگار بشه.
خب، حالا که حسابی با پایگاه داده متن باز MariaDB آشنا شدیم، وقتشه یه جمعبندی کنیم. MariaDB یه پایگاه داده متنباز، سریع و قابل اعتماده که میتونه برای هر نوع پروژهای، از یه وبلاگ ساده گرفته تا یه سیستم سازمانی پیچیده، استفاده بشه. سازگاریش با MySQL، عملکرد قوی و ویژگیهای جدیدش باعث شده که خیلی از توسعهدهندهها و شرکتها عاشقش بشن.
اگه تازه میخوای وارد دنیای پایگاه دادهها بشی، پایگاه داده متن باز MariaDB یه انتخاب عالیه. نصبش راحته، مستنداتش پر و پیمونه و جامعهاش همیشه آماده کمک کردنه. حالا که این همه دربارهش خوندیم، نظرت چیه؟ میخوای بری یه امتحانش کنی؟
بیشتر بخوانید: “آسیبپذیری XSS و راههای مقابله با آن“
در خبرنامه ما مشترک شوید و آخرین اخبار و به روزرسانی های را در صندوق ورودی خود مستقیماً دریافت کنید.
دیدگاه بگذارید