MySQL
محتویات
MySql چیست؟
MySQL یک سیستم مدیریت پایگاه داده رابطهای (RDBMS) است که امکان ذخیره سازی، جستجو، مرتب کردن و بازیابی دادهها را فراهم میکند.
سرور MySQL به چندین کاربر اجازه استفاده همزمان از دادهها را میدهد و دسترسی افراد معتبر به دادهها را تسریع میکند. بنابراین MySQL یک سرور چند کاربره و چند ریسمانه است. اگرچه تاریخچه پیدایش MySQL به سال1979 بر میگردد اما عرضه عمومی آن از سال 1996 آغاز شده است.
این سیستم مدیریتی پایگاه داده، رایج ترین پایگاه داده کد باز (open Source) محسوب میشود.
هدف از ایجاد MySQL
نسخههای اولیه MySQL را به هیچ عنوان نمیتوان با نسخههای جدید آن مقایسه نمود. نسخههای قدیمی بهدلیل ماهیت عمومی سیستم عاملی که برای آن درنظر گرفته شده بودند (یعنی یونیکس و لینوکسهای اولیه) دارای واسط کاربر چندان جالبی نبودند و تمام فرامین مربوط به طراحی و مدیریت بانک اطلاعاتی در آنها از طریق دستورات خط فرمان انجام میگرفت.
اما بهتدریج و با پیدایش محیطهای گرافیکی توانمند و زیبا برای لینوکس، MySQL نیز همانند سایر نرمافزارهای اپنسورس تحت لینوکس مراحل تکامل و بهینه شدن هسته و ابزارهای جانبی خود را پیمود تا به جایی رسید که اکنون به عنوان یکی از سریعترین، کاراترین و مقرون به صرفهترین برنامههای بانک اطلاعاتی جهان شناخته میشود.
غیر از توانمندیهای مربوط به واسط کاربر و امکانات جانبی، در نسخههای جدید MySQL سعی شدهاست نقاط ضعف همیشگی این موتور بانک اطلاعاتی، یعنی نبود سه عنصر مهمِ دید (View)، روالهای ذخیره شده و تریگرها، تا حدود زیادی رفع شود و اکنون دیگر MySQL به دلیل نداشتن این سه عنصر مهم، در رقابت با سایر بانکهای اطلاعاتی مورد سرزنش و بیمهری برنامهنویسان و مدیران بانکهای اطلاعاتی قرار نمیگیرد.
تاریخچه و مراحل تکامل MySQL
بهطورکلی وقتی به تاریخچه و مراحل تکامل MySQL مینگریم، سه ویژگی آن، یعنی قابلیت اطمینان، کارایی مناسب و آسانی استفاده را از نکات مورد توجه سازندگان آن در تولید این اثر مییابیم.
- قابلیت اطمینان، از این جهت که یک بانک اطلاعاتی اپنسورس و با حمایت یک شبکه توانمند و در همهجا حاضری به نام MySQL Network در هرلحظه آماده ارائه خدمت به استفاده کنندگان آن و پشتیبانی از آنها است و به راحتی میتواند دربسیاری از کاربردهای تجاری جایگزینی مناسب برای همتایان گرانقیمت خود باشد.
- کارایی مناسب، از این لحاظ که با ارائه نسخههای متعدد تحت سیستم عاملهای مختلف و تحت معماریهای سخت افزاری گوناگون قادر است تا هم در کاربردهای مبتنی برتعداد فرایندهای فراوان (OLTP) و هم در کاربردهای دارای پردازشها و محاسبات سنگین (OLAP) مورد استفاده قرار گیرد.
- آسانی استفاده هم از اینجهت است که کلیه مراحل استفاده از آن، از دستیابی به فایلهای مخصوص نصب که بهطور رایگان قابل دریافت است و هم از این بابت که مراحل نصب و پیکربندی که حداکثر در ده دقیقه در سیستمعاملهای مختلف صورت میگیرد. همچنین در زمان بهرهبرداری به شیوهای بسیار آسان و گویا، ابزارهای خود را در اختیار توسعهدهندگان و مدیران سیستم قرار میدهد.
معماری MySQL
ویژگی اپنسورس بودن MySQL باعث شده است معماری داخلی آن، بهصورت گویا و واضح و در قالب ماجولهای اساسی یا جانبی آن برای کاربرانش شناخته شده باشد.
تصویر بالا بهطور خلاصه ماجولهای مختلف موجود درMySQL را با نامگذاری براساس وظایفشان، نشان میدهد.
همانطور که مشاهده میکنید ساختار این بانک اطلاعاتی شامل ماجولهای مختلفی برای انجامدادن وظایف مختلف و استاندارد یک موتور پایگاه دادهای همه منظوره است. برخی از قسمتهای اصلی و شیوه عملکرد آنها در MySQL عبارتند از:
مدیریت اتصال
کنترل و ایجاد محدودیت در تعداد اتصالات قابل انجام بین کلاینتها و سرور بانک اطلاعاتی یکی از ماجولها و وظایف اصلی MySQL است.
درواقع موتور بانک اطلاعاتی با مدیریت خودکار و ایجاد اشتراک بین کلاینتها در استفاده بهینه از اتصالات موجود نقش مهمی را ایفا میکند. در واقع این ماجول سعی میکند با ایجاد فضای مشترک، از به وجود آمدن تعداد زیادی اتصالات بیکار و بلااستفاده به بانک اطلاعاتی جلوگیری کند و در استفاده کمتر از فضای حافظه و پردازش پردازنده موثر واقع شود.
دستورات و عناصر اصلی
وظایف ماجولهای مستقر در این قسمت، ایجاد امکان ساخت جداول بانک اطلاعاتی ایندکسها، دیدها، روالهای ذخیره شده، توابع، تریگرها، و پشتیبانی از دستورات SQL ویژه ساخت این عناصر یا خواندن، درج، حذف و تغییر دادهها در آنان است.
مدیریت حافظه
یکی از مهمترین کارهایی که یک موتور پایگاه دادهای باید انجام دهد، تخصیص و مدیریت حافظه مورد استفاده بانک اطلاعاتی و پردازشهای مربوط به آنها و همچنین فضای موردنیاز جهت عملیات بافرینگ ورودی و خروجی بهعلاوه عملیات caching برای افزایش سرعت خواندن اطلاعات است. این کار بهخوبی در MySQL انجام میگیرد. ضمن اینکه در زمان ایجاد و نگهداری یک بانک اطلاعاتی نیز پارامترهای مختلفی در این زمینه توسط مدیر سیستم و استفاده از ابزارهای مختص MySQL قابل تنظیم است.
موتور ذخیرهسازی اطلاعات
MySQL دارای ابزارهای متعددی برای ذخیرهسازی اطلاعات به شیوههای گوناگون است. برایناساس و درزمان ایجاد یک پایگاه داده، MySQL پرسشهای خاصی درمورد انتخاب نوع کاربرد بانک اطلاعاتی و انتخاب موتور ذخیرهسازی مطرح میگردد.
در پرسش اول که اختصاص به نوع کاربرد دارد، مدیر سیستم میتواند از بین دو نوع پیش فرض یعنی یک پایگاه داده با تعداد زیادی فرایندهای همزمان (OLTP) یا یک پایگاه داده با تعداد زیادی دستورات ویژه خواندن و آنالیز اطلاعات (OLAP) یکی را انتخاب کند یا اقدام به تنظیم دستی نماید.
با این کار و طبق انتخاب وی، سیستم، تعداد اتصالات همزمان پایگاه دادهای را که در بحث <مدیریت اتصال> به آن اشاره کردیم تنظیم میکند. براین اساس اولویت به کاربرد OLPA داده میشود چون اصولاً کاربرد OLTP نیاز به استفاده زمانی کمتری از یک اتصال دارد و بدین سبب میتواند تعداد اتصال همزمان بیشتری را مدیریت نماید.
اما درمورد سؤال دوم همانطور که گفتیم، MySQL امکان انتخاب نوع ابزار و موتور ذخیرهسازی را به مدیرسیستم میدهد.
به عنوان مثال موتور InnoDB بهطور پیشفرض برای کاربردهای OLTP و موتوری به نام MyISAM برای کاربردهای OLAP و نگهداری انبوه اطلاعات پر حجم مثل Data Warhousing یا وب سایتها مورد استفاده MySQL قرار میگیرد.
در ضمن همانطور که در شکل 1 نیز مشاهده میکنید، MySQL نیز همانند سایر بانکهای اطلاعاتی مشهور، علاوه بر دو موتور مختص به خودش که بر شمردیم، راهحلهایی برای ذخیرهسازی اطلاعات بهصورت آرشیو (Archive)، تجمعی (Federated Servers)، توزیع شده یا خوشهای (Cluster) یا حتی بانکهای اطلاعاتی سریع حافظهای (In Memory) و چند نوع دیگر را دارد.
ویژگیهای برتر
در MySQL معمولاً اکثر روشهای ساخت و بهرهبرداری از یک بانک اطلاعاتی به دو کاربرد OLTP و OLAP ختم میشود که موتور بانک اطلاعاتی برای پشتیبانی و کارایی بهینه از هردو کاربرد مذکور، به خوبی ساخته و پرداخته شده است.
به عنوان نمونه، در کاربردهای OLTP، وجود ساز و کارها و استانداردهای یک بانک اطلاعاتی برای تضمین صحت اطلاعات مثل پشتیبانی کامل از انواع فرایندها (Transaction) و حتی فرایندهای توزیع شده، روابط اطلاعاتی (کلید اولیه، کلیدهای خارجی) و وجود ایندکسهای منحصر بهفرد (UNIQE INDEX) را میتوان گواهی براین مسئله دانست. ضمن اینکه موتور ذخیرهسازی InnODB نیز به نوبه خود با مدیریت فضا و صفحات حاوی اطلاعات (Pages)درحال ایجاد نظم و ترتیب در اطلاعات و حذف فضاهای خالی برای افزایش سرعت جستجو است.
این موتور ذخیرهسازی همچنین قادر است با یک تصویر حایل از اطلاعات چندین جدول یک بانک اطلاعاتی، از تداخل عملیات خواندن با فرایندها (تغییر، درج، حذف) و بروز مشکلات مربوط به قفل شدن رکوردها (Blocking) جلوگیری نماید. اما درمورد کاربردهای OLAP، موتور MyISAM با فراهم نمودن یک فضای اطلاعاتی ترابایتی، محیط بسیار وسیعی را برای انباشت اطلاعات و دسترسی سریع به آنها در مواقع موردنظر را پدید آورده است.
تجربه نشان داده است که بسیاری از شرکتهای معتبر و سایتهای اینترنتی مشهور که با مشکل ذخیرهسازی و آنالیز انبوه اطلاعات مواجه بودهاند و سعی داشتند با استفاده از روشهای توسعه طولی (Scale UP) مثل استفاده از سرورهایی با حافظه و هارددیسکهای پرظرفیتتر و سریعتر یا پردازندههای قدرتمندتر، ظرفیت سیستم خود را بالا ببرند، موفق شدند با روی آوردن به MySQL و استفاده از موتور ذخیرهسازی MyISAM به نوعی دست به توسعه عرضی (Scale Out) بسیار مقرون به صرفهای بزنند و تا هشتاددرصد هزینههای مربوط به توسعه طولی یا همان ارتقای سختافزاری را کاهش دهند.
ابزارهای مدیریتی
اپنسورس بودن MySQL باعث شدهاست بسیاری از شرکتها بتوانند برای هرچه آسانتر کردن و پیشرفتهتر نمودن ابزارها و محیطهای گرافیکی مبتنی بر MySQL وارد کار شوند و به سرعت کمبود واسط کاربرهای ویژه مدیریت درMySQL را جبران نمایند. یکی از معتبرترین واسطهای کاربرهای گرافیکی در زمینه مدیریت، برنامه Query Browser است که شرکت MySQL آنرا ساخته و رسمیترین برنامه مدیریت در MySQL است.
این برنامه نیز به صورت رایگان از سایت MySQL.Com قابل دانلود و نصب است. با استفاده از این برنامه قادر خواهید بود جداول، دیدها، توابع و هرچه که در یک بانک اطلاعاتی با دستورات SQL باید ساخته شود را طراحی و پیادهسازی نمایید.
درهمین رده از برنامهها میتوان به ابزارهای دیگری چون ویزارد پیکربندی (Configuration Wizard) و یا ویزارد مخصوص ارتقا یا مهاجرت به MySQL یعنی Migration Wizard و بسیاری برنامههای دیگر برای برپایی سرورهای MySQL، عملیات بکآپگیری، کلاسترینگ و امثال آن، نیز اشاره نمود.
شایان ذکر است که برخی از سایر توزیعکنندگان MySQL نیز ابزارهای مدیریتی خاص خود را تهیه و ارائه نمودهاند که مشهورترین آنها محصول شرکت اروپایی SAP موسوم به MAXDB است که نسخهای براساس MySQL میباشد و ابزارهای مدیریتی متنوعی مثل DBManager یا SQL Studio را به همراه خود دارد. در شمارههای آینده سعی میکنیم به محیط MySQL و ابزارهای کار با آن، بیشتر بپردازیم.
منبع: ماهنامه شبکه
![]() |