در ابتدا با پایگاه داده آشنا می شویم و سپس به این سوال پاسخ خواهیم داد: مای اس کیو ال (MySQL) چیست؟ این سوالی است که هر برنامه نویسی از خود می پرسد و یا در طی کار با زبان های برنامه نویسی مختلف با آن رو به رو می شود. پس در ادامه به تعریف پایگاه داده و توضیح این کلمه و کاربرد آن می پردازیم.
پایگاه داده یا دیتابیس (Database) چیست؟
پایگاه داده بهسادگی مجموعهای از دادههای ساختیافته است. به گرفتن عکس سلفی فکر کنید. یک دکمه را فشار میدهید و تصویری از خود میگیرید. عکس شما داده است و گالری تلفن شما پایگاه داده است. پایگاه داده مکانی است که دادهها در آن ذخیره و سازماندهی میشوند. دیتابیس، وظیفه ذخیره دادهها بهصورت منظم و ساختاردهی شده را بر عهده دارد. اجازه دهید با یک مثال خیلی ساده این مفهوم را توضیح دهیم:
فرض کنید شما برای خرید محصول به وبسایت روکسو اقدام میکنید و پس از افزودن به سبد خرید و پرداخت، منتظر دریافت کالا میشوید. در ظاهر کاری که انجام میدهید کاملا ساده و بدون دردسر است اما در عمل و برنامهنویسی موضوع اینقدر هم ساده نیست. تمام این فرآیند، از ورود به سایت گرفته تا نهایی کردن خرید یک محصول، در پایگاه داده (Database) ذخیرهشده و در صورت نیاز فراخوانی میشود. حتی مشاهده هر یک از این محصولات نیز به پایگاه داده مرتبط است. پس تا به اینجای کار متوجه شدید که منظور از پایگاه داده یک فضا برای ذخیره اطلاعات مرتبط با وبسایت هست.
پایگاه دادهها به دودسته رابطهای و بدون رابطه تقسیمبندی میشوند؛ در پایگاه داده رابطهای همانطور که در بالا ذکر شد، دادههای یک جدول با دادههای سایر جداول در ارتباط هستند و این عمل باعث هوشمند شدن پروژهها میشود و این در حالی است که در پایگاه داده بدون رابطه هیچگونه وابستگی بین جداول وجود ندارد.
سیستم مدیریت پایگاه داده MySQL بهصورت رابطهای عمل میکند. این مورد هم با ذکر مثال، بهتر درک میشود. به تصویر زیر دقت کنید:
فرض کنید یک فروشگاه اینترنتی از سه جدول به نام های products و orders و customers تشکیل شده است. در جدول products اطلاعات محصولات ذخیره میشود. در جدول order تمام سفارشهای یک کاربر قرار میگیرد و درنهایت در جدول customers اطلاعات مشتریان درج میشود. حالا هر مشتری (customer) میتواند یک یا چندین سفارش (order) داشته باشد و هر سفارش (order) شامل یک یا چندین محصول (product) هست. با بررسی تصویر و توضیحات فوق بهصورت کامل مبحث ارتباط بین جداول را درک میکنید.
اما یک سوال دیگر که وجود دارد این است: پایگاه دادهها با چه زبانی کار میکنند؟ در پاسخ باید گفت برای نوشتن دستورهای پایگاه داده معمولا از زبان SQL استفاده میشود.
SQL چیست؟
MySQL و SQL یکی نیستند. توجه داشته باشید که MySQL یکی از محبوبترین نام های تجاری نرمافزار RDBMS است که مدل کلاینت-سرور را پیادهسازی میکند. بنابراین، چگونه کلاینت و سرور در یک محیط RDBMS باهم ارتباط برقرار میکنند؟ آنها از یک زبان خاص دامنه به نام زبان پرسوجو ساختاریافته (SQL) استفاده میکنند. PostgreSQL و Microsoft SQL Server بهاحتمالزیاد از SQL نیز استفاده میکنند. نرمافزار RDBMS اغلب به زبانهای برنامهنویسی دیگر نوشته میشود، اما همیشه از SQL بهعنوان زباناصلی خود برای تعامل با پایگاه داده استفاده میکنند. خود MySQL به زبان C و C++ نوشته شده است.
«تد کاد»، دانشمند کامپیوتر، SQL را در اوایل دهه 1970 با یک مدل رابطهای مبتنی بر IBM توسعه داد. این زبان در سال 1974 بیشتر مورداستفاده قرار گرفت و بهسرعت جایگزین زبانهای مشابه و قدیمی، ISAM و VISAM شد. گذشته از تاریخچه، SQL به سرور میگوید که با دادهها چهکاری انجام دهد. شبیه رمز یا کد وردپرس شماست. شما آن را وارد سیستم میکنید تا به قسمت داشبورد دسترسی پیدا کنید.
اس کیو ال یا سی کو ال (SQL or SEQUEL) مخفف عبارت Structured Query Language بوده و هدف از آموزش و یادگیری آن، کسب مهارت جهت انجام عملیات مختلف روی پایگاه داده است. یعنی شما با استفاده از این زبان میتوانید با هر سیستم RDBMS کار کرده و دادههای خود را استخراج یا ذخیره کنید. این زبان در سال ۱۹۷۰ توسط IBM ایجاد شد. در ادامه یک سری از ویژگیهای برجسته این زبان را شرح میدهیم:
کوئری دادهها: با SQL میتوانید به پایگاه داده درخواست داده تا اطلاعات موردنظر را در اختیار کاربر قرار دهد.
نگهداری دادهها: افزودن، حذف، تغییر، ترتیب بندی و سایر عملیات مثل بهروزرسانی داده و ... با زبان SQL امکانپذیر است.
نوع دادهها: در SQL میتوانید مشخص کنید که نوع یک داده چه چیزی باشد. مثلا در یک ردیف از جدول میتوانید تعیین کنید که ستون نام و نام خانوادگی از نوع رشته یا string باشد.
سطح دسترسی به داده: با SQL میتوانید مشخص کنید که سطح دسترسی به یک داده در چه اندازهای باشد. مثلا یک کاربر ادمین بتواند به تمام مشخصات دسترسی داشته باشد و یک کاربر عادی قسمتهای محدودتری را ببیند. ارائه تکنیکهای امنیتی برای محافظت از دادهها، شامل تصمیمگیری در مورد اینکه چه کسی میتواند اطلاعات ذخیرهشده در پایگاه داده را مشاهده یا استفاده کند.
دستکاری دادهها: افزودن، حذف، تغییر، مرتبسازی و سایر عملیات برای اصلاح دادهها، مقادیر یا تصاویر.
MYSQL چیست؟
MySQL یک سیستم مدیریت پایگاه داده رابطهای منبع باز (RDBMS) است. نام آن ترکیبی از «My»، نام دختر یکی از بنیانگذاران آن مایکل ویدنیوس است، و«SQL»، مخفف Structured Query Language است. یک پایگاه داده رابطهای، دادهها را در یک یا چند جدول داده سازماندهی میکند که در آن انواع دادهها ممکن است به یکدیگر مرتبط باشند. این روابط به ساختمان دادهها کمک میکند. SQL زبانی است که برنامه نویسان برای ساخت، ویرایش و واکشی دادهها از پایگاه داده رابطهای و همچنین کنترل دسترسی کاربر به پایگاه داده استفاده میکنند. علاوه بر پایگاههای داده رابطهای و SQL، یک RDBMS مانند MySQL همراه با یک سیستمعامل برای پیادهسازی یک پایگاه داده رابطهای در سیستم ذخیرهسازی رایانه کار میکند، کاربران را مدیریت میکند، امکان دسترسی به شبکه را فراهم میکند و آزمایش یکپارچگی پایگاه داده و ایجاد نسخههای پشتیبان را آسان میکند.
MySQL یک نرمافزار رایگان و منبع باز است که تحت شرایط مجوز عمومی گنو و همچنین تحت انواع مجوزهای اختصاصی قرار دارد. MySQL تحت مالکیت و حمایت مالی شرکت سوئدی MySQL AB بود که توسط شرکت Sun Microsystems خریداری شد. هماکنون شرکت Oracle آن را در اختیار دارد. در سال 2010، زمانی که Oracle شرکت Sun را تصاحب کرد، ویدنیوس (یکی از سازندگان MYSQL) پروژه منبع باز MySQL را برای ایجاد MariaDB ایجاد کرد. MySQL دارای کلاینتهای مستقلی است که به کاربران اجازه میدهد با استفاده از SQL مستقیما با پایگاه داده MySQL تعامل داشته باشند، اما بیشتر اوقات، MySQL با سایر برنامههایی که برای پیادهسازی به قابلیت پایگاه داده رابطهای نیاز دارند، استفاده میشود. MySQL جزئی از stack (پشته) نرمافزاری برای برنامههای کاربردی وب به نام LAMP است. LAMP سرنام Linux و Apache، MySQL، Perl / PHP / Python است.
MySQL توسط بسیاری از اپلیکیشن های وب مبتنی بر پایگاه داده ازجمله دروپال، جوملا، phpBB و وردپرس استفاده میشود. همچنین توسط بسیاری از وبسایتهای محبوب، ازجمله فیسبوک، Flickr، MediaWiki، Twitter و YouTube استفاده میشود.
MySQL یک سیستم پایگاه داده است که در وب استفاده میشود، روی سرور اجرا میشود و برای برنامههای کوچک و بزرگ ایدئال است. MySQL از SQL استاندارد استفاده میکند و بسیار سریع، قابلاعتماد و آسان برای استفاده است. MySQL برای دانلود و استفاده رایگان است و توسط Oracle Corporation توسعه، توزیع و پشتیبانی میشود.
دادهها در پایگاه داده MySQL در جداول ذخیره میشوند. جدول مجموعهای از دادههای مرتبط است و از ستونها و ردیفها تشکیل شده است. پایگاههای داده برای ذخیره اطلاعات بهصورت طبقهای مفید هستند.
MySQL به زبان C و C++ نوشته شده است. parser (تجزیهکننده) SQL به زبان yacc نوشته شده است، اما از یک تحلیلگر واژگانی استفاده میکند. MySQL روی بسیاری از پلتفرمها کار میکند، ازجمله AIX، BSDi، FreeBSD، HP-UX، ArcaOS، eComStation، IBM i، IRIX، Linux، macOS، Microsoft Windows، NetBSD، Novell NetWare، OpenBSD، OpenSolaris، OS / 2 Warp، QNX، Oracle Solaris، Symbian، SunOS، SCO OpenServer، SCO UnixWare، Sanos و Tru64. یک پورت MySQL به OpenVMS نیز وجود دارد.
خود نرمافزار سرور MySQL و کتابخانههای سرویسگیرنده از «توزیع دارای مجوز دوگانه» (dual-licensing distribution) استفاده میکنند. آنها تحت GPL نسخه 2 یا یک مجوز اختصاصی ارائه میشوند. پشتیبانی را میتوان از راهنمای رسمی دریافت کرد. پشتیبانی رایگان علاوه بر این در کانالها و انجمنهای مختلف IRC در دسترس است. اوراکل از طریق محصولات MySQL Enterprise پشتیبانی پولی ارائه میدهد. آنها در خدمات و قیمت متفاوت هستند. علاوه بر این، تعدادی سازمان شخص ثالث برای ارائه پشتیبانی و خدمات نیز وجود دارد.
MySQL چگونه کار می کند؟
تصویر بالا ساختار اصلی ساختار کلاینت-سرور را توضیح میدهد. یک یا چند دستگاه (کلاینت) از طریق یک شبکه خاص به یک سرور متصل میشوند. هر کلاینت میتواند از رابط گرافیکی کاربری (GUI) روی صفحهنمایش خود درخواست بدهد و سرور خروجی موردنظر را تولید میکند، تا زمانی که هر دو طرف دستورالعمل را درک کنند.
به مثال فروشگاه اینترنتی برمیگردیم. تصور کنید صفحه یک محصول را در وبسایت روکسو باز میکنید. بهمحض اینکه شما آدرس یا URL صفحه محصول را وارد و دکمه Enter را میزنید، یک درخواست به سمت سرور ارسال میشود (که در تصویر با کلمه Request مشخصشده است. سرور به پایگاه داده (Database) رفته و برای دستیابی به محصول موردنظر با استفاده از زبان SQL یک کوئری مشخص را اجرا میکند. پس از پیدا کردن محصول، آن را به سمت سرور فرستاده و نتیجه نهایی توسط سرور به کاربر (Client) بازگردانده میشود.
فرآیندهای اصلی که در یک محیط MySQL اتفاق میافتد، بدون اینکه خیلی فنی باشیم، یکسان هستند که عبارتاند از:
- MySQL یک پایگاه داده برای ذخیره و دستکاری دادهها ایجاد میکند و رابطه هر جدول را تعریف میکند.
- کلاینتها میتوانند با تایپ عبارات SQL خاص در MySQL درخواست داشته باشند.
- برنامه سرور با اطلاعات درخواستی پاسخ میدهد و در سمت کلاینتها ظاهر میشود.
از سمت کلاینتها، آنها معمولا تاکید میکنند که از کدام رابط کاربری گرافیکی MySQL استفاده کنند. هرچه رابط کاربری گرافیکی سبکتر و کاربرپسندتر باشد، فعالیتهای مدیریت داده آنها سریعتر و آسانتر خواهد بود. برخی از محبوبترین رابط کاربری گرافیکی MySQL عبارتاند از MySQL WorkBench، SequelPro، DBVisualizer، و Navicat DB Admin Tool. برخی از آنها رایگان هستند، درحالیکه برخی تجاری هستند، برخی منحصرا برای macOS اجرا میشوند و برخی با سیستمعاملهای اصلی سازگار هستند. کلاینتها باید بسته به نیاز خود رابط کاربری گرافیکی را انتخاب کنند. برای مدیریت پایگاه داده وب، ازجمله یک سایت وردپرس، واضحترین راهحل phpMyAdmin است.
ویژگیهای MySQL
MySQL تحت دو نسخه مختلف ارائه میشود: MySQL Community Server منبع باز و Enterprise Server اختصاصی. MySQL Enterprise Server با یک سری افزونههای اختصاصی متمایز میشود که بهعنوان افزونههای سرور نصب میشوند.
ویژگیهای اصلی موجود در MySQL عبارتند از:
- دارای زیرمجموعه وسیعی از ANSI SQL 99 و همچنین برنامههای افزودنی است
- پشتیبانی از پلتفرمهای مختلف
- رویههای ذخیرهشده، با استفاده از زبان رویهای که کاملا به SQL/PSM پایبند هستند
- محرکها (triggers)
- نشانگرها (cursors)
- نماهای (viewهای) قابل بهروزرسانی
- زبان تعریف آنلاین داده (DDL) هنگام استفاده از موتور ذخیرهسازی InnoDB
- طرحواره (schema) برای اطلاعات
- یک schema برای کارکرد پایگاه داده دارد که آمار مربوط به اجرای سرور و عملکرد کوئری را جمعآوری میکند.
- مجموعهای از گزینههای SQL Mode برای کنترل رفتار زمان اجرا، ازجمله یک حالت strict برای رعایت بهتر استانداردهای SQL
- پشتیبانی از (DTP) پردازش تراکنش توزیعشده .X/Open XA با استفاده از موتور ذخیرهسازی پیشفرض InnoDB میتواند دو فاز commit کردن داشته باشد
- تراکنش با نقاط ذخیره هنگام استفاده از موتور ذخیرهسازی پیشفرض InnoDB موتور ذخیرهسازی خوشه NDB از تراکنشها نیز پشتیبانی میکند
- انطباق با ACID هنگام استفاده از موتورهای ذخیرهسازی کلاستر InnoDB و NDB
- پشتیبانی از SSL
- ذخیره کوئری
- Sub-SELECTs (یعنی SELECT های تودرتو)
- پشتیبانی از replication داخلی
- همانندسازی (replication) ناهمزمان: master-slave از یک master به چند slave یا برعکس یعنی از چند master به یک slave
- همانندسازی (replication) نیمه همزمان: همانندسازی Master به Slave که در آن Master منتظر replication است.
- همانندسازی (replication) همزمان: همانندسازی چند master در MySQL Cluster ارائه شده است.
- همزمان مجازی (Virtual Synchronous) : گروههای خود مدیریتی از سرورهای MySQL را میتوان با استفاده از Galera Cluster یا افزونه Group Replication داخلی انجام داد.
- اندیس سازی و جستجوی کامل متن
- دارای کتابخانه پایگاه دادهای جاسازیشده است
- پشتیبانی از یونیکد
- جداول پارتیشنبندی شده با آراستن پارتیشنها در بهینهساز
- خوشهبندی اشتراکی هیچ (Shared-nothing) از طریق cluster (خوشه) MySQL
- موتورهای ذخیرهسازی چندگانه که به فرد امکان میدهد یکی از آنها را با توجه به نیاز خود انتخاب کند
- موتورهای ذخیرهسازی بومی InnoDB، MyISAM، Merge، Memory (heap)، Federated، Archive، CSV، Blackhole و NDB Cluster
- گروهبندی، جمعآوری چندین تراکنش از چندین اتصال بهصورت همزمان برای افزایش تعداد commit ها در هر ثانیه
توسعهدهندگان تقریبا هر دو ماه یکبار بهروزرسانیهای جزئی MySQL Server را منتشر میکنند. منابع را میتوان از وبسایت MySQL یا از GitHub MySQL، هر دو تحت مجوز GPL دریافت کرد.
برای اطلاع از جدیدترین نسخه MySQL به نشانی سر بزنید. رفتن از MySQL 8.0 به MySQL 5.7 یا از نسخه MySQL 8.0 به سایر نسخه ها پشتیبانی نمی شود. تنها جایگزین پشتیبانی شده، نسخه پشتیبانی گرفته شده پیش از ارتقا است. بنابراین ضروری است که پیش از شروع فرآیند ارتقا از اطلاعات خود نسخه پشتیبان تهیه کنید. پشتیبانی از پلت فرم MySQL در طول زمان تکامل می یابد. لطفا برای آخرین به روز رسانی ها به این نشانی مراجعه کنید.
هر نسخه اصلی جدید MySQL به زمان و تلاش قابل توجهی برای انتقال بار کاری ما نیاز دارد. چالش ها عبارتند از:
- انتقال ویژگی های سفارشی ما به نسخه جدید
- اطمینان از سازگاری replication بین نسخه های اصلی
- به حداقل رساندن تغییرات مورد نیاز برای کوئری های برنامه موجود
- رفع رگرسیون های عملکردی که مانع از پشتیبانی سرور از بار کاری ما می شود
ویژگی های جدیدی که به MySQL 8 افزوده شده اند عبارتند از:
- نوع داده dictionary
- عبارات تعریف داده اتمی (Atomic DDL)
- رویه ارتقا (Upgrade procedure)
- امنیت و مدیریت حساب
- مدیریت منابع
- مدیریت رمزگذاری جدول
- پیشرفت های InnoDB
- پشتیبانی از مجموعه کاراکتر (Character set)
- پیشرفت های JSON
- پشتیبانی از نوع داده
- بهینه ساز
لیست کامل این ویژگی های جدید را می توانید در این نشانی ببینید.
پیاده سازی معمولی و ابری
پیاده سازی معمولی
MySQL را میتوان بهصورت دستی از کد منبع ساخته و نصب کرد، اما معمولا از یک بسته باینری نصب میشود مگر اینکه سفارشیسازیهای خاصی موردنیاز باشد. در بیشتر توزیعهای لینوکس، سیستم مدیریت بسته میتواند MySQL را با کمترین تلاش بارگیری و نصب کند، اگرچه برای تنظیمات امنیتی و بهینهسازی اغلب به پیکربندی بیشتری نیاز است.اگرچه MySQL بهعنوان یک جایگزین سطح پایین برای پایگاههای داده اختصاصی قویتر آغاز به کار کرد، اما بهتدریج برای پشتیبانی از نیازهای پیشرفتهتر تکامل پیدا کرد.
هنوز هم در سرورهای معمولی در مقیاس کوچک تا متوسط استفاده میشود، چه بهعنوان یک مولفه در یک برنامه وب مبتنی بر LAMP یا بهعنوان یک سرور پایگاه داده مستقل. بسیاری از جذابیتهای MySQL از سادگی نسبی و سهولت استفاده از آن ناشی میشود که توسط اکوسیستمی از ابزارهای منبع باز مانند phpMyAdmin فعال شده است.
بهطور متوسط، MySQL را میتوان با استقرار آن بر روی سختافزارهای قدرتمندتر، مانند سرور چند پردازنده با چندین گیگابایت حافظه، مقیاسپذیر کرد. بااینحال، محدودیتهایی برای مقیاسپذیری عملکردی در یک سرور یکتا وجود دارد، بنابراین در مقیاسهای بزرگتر، پیاده سازی MySQL دارای چند سرور برای ارائه عملکرد بهتر و قابلیت اطمینان بهبودیافته موردنیاز است. یک پیکربندی معمولی سطح بالا میتواند شامل یک پایگاه داده اصلی قدرتمند باشد که عملیات نوشتن دادهها را مدیریت میکند و به چندین Slave که همه عملیات خواندن را مدیریت میکنند، کپی میشود.
سرور اصلی بهطور مداوم رویدادهای binlog را در Slave های متصل قرار میدهد، بنابراین در صورت خرابی میتوان یک Slave را برای تبدیلشدن به Master جدید ارتقا داد و زمان خرابی را به حداقل رساند. بهبودهای بیشتر در عملکرد را میتوان با ذخیره کردن نتایج از کوئری های پایگاه داده در حافظه با استفاده از memcached، یا شکستن پایگاه داده به قطعات کوچکتر به نام shards که میتواند در تعدادی از خوشههای سرور توزیعشده پخش شود، به دست آورد.
پیاده سازی ابری
MySQL همچنین میتواند بر روی پلتفرمهای رایانش ابری مانند Microsoft Azure، Amazon EC2، Oracle Cloud Infrastructure اجرا شود. برخی از مدلهای رایج پیاده سازی MySQL در فضای ابری عبارتاند از:
تصویر ماشین مجازی (Virtual machine image)
در این پیادهسازی، کاربران ابری میتوانند با نصب MySQL تصویر ماشین خود را آپلود کنند یا از یک تصویر ماشین آماده با نصب بهینه MySQL روی آن استفاده کنند، مانند آنچه توسط Amazon EC2 ارائه شده است.
MySQL بهعنوان یک سرویس
برخی از پلتفرمهای ابری MySQL را «بهعنوان یک سرویس» ارائه میدهند. در این پیکربندی، صاحبان برنامه نیازی به نصب و نگهداری پایگاه داده MySQL بهتنهایی ندارند. در عوض، ارائهدهنده خدمات پایگاه داده مسئولیت نصب و نگهداری پایگاه داده را بر عهده میگیرد و صاحبان برنامهها بر اساس میزان استفاده خود هزینه پرداخت میکنند. خدمات قابلتوجه MySQL که مبتنی بر ابر هستند عبارتاند از:
- Amazon Relational Database Service
- Oracle MySQL Cloud Service
- Azure Database for MySQL
- Rackspace
- HP Converged Cloud
- Heroku
- Jelastic
در این مدل، ارائهدهنده خدمات پایگاه داده مسئولیت نگهداری هاست و پایگاه داده را بر عهده میگیرد.
رابطهای کاربری
رابط کاربری گرافیکی GUI نوعی رابط است که به کاربران اجازه میدهد تا با دستگاهها یا برنامههای الکترونیکی از طریق نمادهای گرافیکی و نشانگرهای دیداری همکنش داشته باشند، برخلاف رابطهای مبتنی بر متن، برچسبهای فرمان تایپشده یا ناوبری متن. برنامههای مدیریت گرافیکی اختصاصی و رایگان در دسترس هستند که با MySQL یکپارچه میشوند و کاربران را قادر میسازند تا با ساختار پایگاه داده و دادهها بهصورت بصری کار کنند.
MySQL Workbench
MySQL Workbench یک محیط یکپارچه برای MySQL است. این نرمافزار توسطMySQL AB توسعهیافته است و به کاربران این امکان را می دهد تا پایگاه دادههای MySQL را بهصورت گرافیکی مدیریت و ساختارهای پایگاه داده را بهصورت بصری طراحی کنند.
MySQL Workbench در دو نسخه موجود است، نسخه معمولی رایگان و منبع باز Community Edition که ممکن است از وبسایت MySQL دانلود شود، و نسخه استاندارد اختصاصی که مجموعه ویژگیهای نسخه Community را گسترش داده و بهبود میبخشد.
سایر نرمافزارهای گرافیکی برای کار با MYSQL را میتوانید در زیر ببینید:
- Adminer
- Database Workbench
- DBeaver
- DBEdit
- HeidiSQL
- LibreOffice Base
- Navicat
- orgBase
- phpMyAdmin
- SQLBuddy
- SQLyog
- Toad for MySQL
- Webmin
رابطهای خط فرمان
رابط خط فرمان وسیلهای برای تعامل با یک برنامه کامپیوتری است که در آن کاربر با تایپ خطوط متوالی متن (خطوط فرمان) دستورات را به برنامه صادر میکند. MySQL با بسیاری از ابزارهای خط فرمان عرضه میشود، که رابط اصلی آن کلاینت mysql است. MySQL Utilities مجموعهای از ابزارهای کمکی است که برای انجام کارهای معمول تعمیر و نگهداری و اداری طراحیشدهاند. این ابزارها که در اصل بهعنوان بخشی از Workbench MySQL گنجاندهشده بودند، یک بارگیری مستقل از Oracle هستند. Percona Toolkit یک ابزار چند پلتفرمی برای MySQL است که در Perl توسعهیافته است.
از Percona Toolkit میتوان برای اثبات درست کار کردن تکرار، تعمیر دادههای خراب، خودکارسازی کارهای تکراری و افزایش سرعت سرورها استفاده کرد. Percona Toolkit با چندین توزیع لینوکس مانند CentOS و Debian همراه است و بستههایی برای فدورا و اوبونتو نیز موجود است. Percona Toolkit در ابتدا بهعنوان Maatkit توسعه داده شد، اما از اواخر سال 2011، Maatkit دیگر توسعهنیافته است.پوسته MySQL ابزاری برای استفاده تعاملی و مدیریت پایگاه داده MySQL است. از حالتهای جاوا اسکریپت، پایتون یا SQL پشتیبانی میکند و میتوان از آن برای اهداف مدیریت و دسترسی استفاده کرد.
رابطهای اپلیکیشن
بسیاری از زبانهای برنامهنویسی با API های خاص زبان شامل کتابخانههایی برای دسترسی به پایگاههای داده MySQL هستند که عبارتاند از MySQL Connector/Net برای زبانهای NET/CLI، و درایور JDBC برای جاوا.علاوه بر این، یک رابط ODBC به نام MySQL Connector/ODBC به زبانهای برنامهنویسی اضافی که از رابط ODBC پشتیبانی میکنند اجازه میدهد تا با پایگاه داده MySQL ارتباط برقرار کنند، مانند ASP یا ColdFusion .روش جستجوی مبتنی بر URL HTSQL همچنین با یک آداپتور MySQL ارسال میشود، که امکان تعامل مستقیم بین پایگاه داده MySQL و هر مشتری وب از طریق URL های ساختاریافته را فراهم میکند. درایورهای دیگری برای زبانهایی مانند Python یا Node.js وجود دارد.
مدل کلاینت-سرور
کامپیوترهایی که نرمافزار RDBMS را نصب و اجرا میکنند کلاینت نامیده میشوند. هر زمان که نیاز به دسترسی به دادهها داشته باشند، به سرور RDBMS متصل میشوند. این همان بخش کلاینت-سروراست. MySQL یکی از گزینههای نرمافزار RDBMS است. به دلیل محبوبیت MySQL اغلب تصور میشود RDBMS و MySQL یکسان هستند. چند برنامه وب بزرگ مانند فیسبوک، توییتر، یوتیوب، گوگل و یاهو! همه از MySQL برای اهداف ذخیرهسازی داده استفاده میکنند. اگرچه در ابتدا برای استفاده محدود ایجاد شد، اما اکنون با بسیاری از پلتفرمهای محاسباتی مهم مانند لینوکس، macOS، مایکروسافت ویندوز و اوبونتو سازگار است.
مزیتهای MySQL
یکی از چالشهایی که اکثر کاربران با آن مواجه هستند، انتخاب سیستم مدیریت پایگاه داده است. همه ما میدانیم که دستگاههای مدیریت پایگاه داده گسترده بوده و معروفترین آنها MySQL و Oracle و Microsoft SQL Server هستند. اما چرا باید آموزش MySQL را در اولویت قرار دهیم؟
منحنی یادگیری با شیب بسیار کم
MySQL به دلیل کاربری بسیار ساده و لذتبخش، طرفداران زیادی دارد و برای آموزش و یادگیری آن نیازی نیست که وقت زیادی بگذارید.
عملکرد عالی
به دلیل شیوهی طبقهبندی داده در این سیستم، کنترل و مدیریت دادههای حجیم با عملکرد بالایی صورت میگیرد. در حال حاضر وبسایتهای بسیار بزرگی مانند فیسبوک، توییتر، نت فلیکس و ... از MySQL استفاده میکنند.
امنیت بالا
MySQL بهعنوان یک سیستم با ضریب امنیتی بسیار بالا شناخته میشود و به دلیل بهروزرسانی عالی، بهمحض مشاهده یک حفره، سریعاً نسخه جدیدی ارائهشده و میتوان آن را جایگزین کرد. هنگام انتخاب نرمافزار RDBMS مناسب، دادههای شما باید دغدغه اصلی شما باشد. MySQL با سیستم امتیاز دسترسی و مدیریت حساب کاربری خود، نوار امنیتی را بالا میگذارد. تائید مبتنی بر میزبان و رمزگذاری رمز عبور هر دو در دسترس هستند.
رایگان بودن
MySQL علیرغم تواناییهای خارقالعادهای که دارد، کاملا رایگان بوده و برای استفاده از آن نیازی به پرداخت هیچ هزینهای نیست.
پشتیبانی مناسب
وقتی شما در حال استفاده از یک محصول هستید که کمپانی Oracle پشتیبانی آن را به عهده دارد، شک نکنید که آن محصول بینظیر خواهد بود. پشتیبانیهای مداوم و بهروزرسانیهای MySQL باعث شده تا کاربران لذت بیشتری از این سیستم مدیریت پایگاه داده ببرند.
کاربرد در صنایع مختلف
به دلیل اینکه MySQL بهسادگی روی دستگاههای لینوکسی و ویندوز نصبشده و فضا، رم و CPU بسیار کمی را مصرف میکند، بهعنوان اولین سیستم برای موارد مختلف صنعتی از آن استفاده میشود.
انعطافپذیری و آسان بودن برای استفاده
شما میتوانید کد منبع را تغییر دهید تا انتظارات خود را برآورده کند و نیازی به پرداخت هیچ هزینهای برای این سطح از آزادی ندارید، ازجمله گزینههای ارتقا به نسخه تجاری پیشرفته. فرآیند نصب نسبتا ساده است و نباید بیش از 30 دقیقه طول بکشد.
محدودیتهای MySQL
هنگام استفاده از برخی موتورهای ذخیرهسازی غیر از موتور پیشفرض InnoDB ،MySQL با استاندارد کامل SQL برای برخی از عملکردها، مانند مرجعهای (refrenceهای) کلید خارجی، مطابقت ندارد. محدودیتها توسط همه موتورهای ذخیرهسازی که نسخه MySQL آنها کمتر از 8.0.15 است نادیده گرفته میشوند. تا پیش از trigger ها یا محرکها MySQL 5.7 به یک کار در هر زمان (action / timing) محدود میشد، به این معنی که حداکثر میتوان یک trigger را برای اجرا پس از عملیات INSERT، و یکی پیش از INSERT در همان جدول تعریف کرد. هیچ محرکی را نمیتوان روی view ها (نماها) تعریف کرد.