MySQL یک سیستم مدیریت پایگاه داده ی رابطه ای یا Relational Database Management System متن باز (Open Source)اوپن سورس یا متن باز چیست؟ اوپن سورس به چه معناست؟اوپن سورس یا متن باز چیست؟ این صفحه عالی به بررسی این موارد و همچنین تاریخچه نرم افزار متن باز و نحوه به کارگیری متن باز در توسعه نرم افزار پرداخته است است که بر پایهی زبان SQL یا Structured Query Language ساخته شده است. MySQL تقریبا بر روی تمامی پلتفرمها از جمله لینوکس، ویندوز و یونیکس اجرا میشود. با اینکه این سیستم تقریبا برای کاربردهای مختلفی قابل استفاده است، اما بیشتر برای برنامههای تحت وب و آنلاین مورد استفاده قرار میگیرد.
MySQL یکی از اجزای مهم بسته یا پشتهی سازمانی اپن سورس LAMP است. LAMP یک پلتفرم برای توسعه ی وب است که از لینوکس به عنوان سیستم عامل، از آپاچی به عنوان وب سرور، از MySQL به عنوان سیستم پایگاه داده ی رابطه ای و از زبان PHP به عنوان زبان برنامه نویسی شی گرا استفاده میکند. در واقع LAMP اول حرف این 4 مورد ذکر شده است (ناگفته نماند که بعضی اوقات از زبان Perl یا Python به جای PHP استفاده میشود).
MySQL در ابتدا توسط یک شرکت سوئدی به نام MySQL AB بوجود آمد. سپس امورات مربوط به آن را شرکت Sun Microsystems در سال 2008 بدست گرفت. بعد از آن نیز شرکت Oracle در سال 2010 با خریدن شرکت Sun، صاحب اصلی MySQL شد. توسعه دهندگان میتوانند تحت مجوز عمومی گنو یا GNU General Public License (GPL) از MySQL استفاده کنند. البته شرکتها میبایست از شرکت اوراکل، لایسنس یا مجوز تجاری دریافت کنند.
امروزه MySQL به عنوان سیستم پایگاه دادهی بسیاری از وبسایتهای معتبر مورد استفاده قرار میگیرد. بسیاری از برنامههایی که کاربران به صورت روزانه با آنها سرو کار دارند نیز از MySQL استفاده میکنند (مانند فیس بوک، تویتر و یا یوتیوب).
MySQL چگونه کار می کند؟
MySQL بر اساس مدل ارائه دهنده – مشتری یا همان Client-Server کار میکند. هستهی اصلی MySQL در واقع MySQL Server میباشد که تمامی دستورالعملها را مدیریت میکند. MySQL به دو صورت ارائه میشود، یکی برای محیط های تحت شبکه که در قالب MySQL Server عرضه میشود (معمولا مورد استفادهی ادمینهای سایت و یا مدیران شرکت قرار میگیرد) و دیگری در قالب کتابخانه که به یک نرم افزار و برنامه اضافه میشود (مورد استفادهی برنامه نویسان نرم افزاری که میخواهند با MySQL Server ارتباط برقرار کنند واقع میشود).
MySQL به همراه چندین برنامهی کاربردی که توسط ادمینهای پایگاه دادهی MySQL پشتیبانی میشود، کار میکند. دستورات به وسیلهی MySQL Client که بر روی یک کامپیوتر نصب شده است به MySQL Server ارسال میشود.
MySQL ساخته شده است تا بتواند پایگاه دادههای بزرگ را مدیریت کند. اگرچه MySQL به طور متداول تنها روی یک ماشین نصب میشود، اما میتواند پایگاه داده را به مکانهای مختلف ارسال کند. کاربران (Clients) بوسیلهی برنامههای مختلفی میتوانند با MySQL ارتباط برقرار کنند. تمامی این برنامهها درخواستهای خود را در قالب SQL به سرور ارسال میکنند و سپس نتیجه را دریافت میکنند و نمایش میدهند. برنامه ممکن است یک نرم افزار موبایل باشد یا یک نرم افزار ویندوز و غیره.
ویژگی های اصلی MySQL
MySQL قادر است تا دادهها را در موتورهای ذخیره سازی مختلفی ذخیره کند و به آنها دسترسی داشته باشد (در MySQL اصطلاحا به آن Storage Engines میگویند) از مهمترین آنها InnoDB، CSV و NDB میباشد. همچنین MySQL میتواند دادهها را دسته بندی کند تا کارایی آن افزایش یابد. کاربران MySQL نیازی به یادگیری دستورات جدیدی برای انجام این کارها ندارند. بلکه تنها نیاز است تا دستورات استاندارد SQL را بدانند و از آنها برای ذخیره و خواندن دادهها استفاده کنند. مابقی کارها به صورت خودکار توسط MySQL انجام میشود.
MySQL توسط زبانهای C و سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده ساخته شده است و همچنین قابل استفاده در بیش از 20 پلتفرم مختلف میباشد. از جمله این پلتفرمها میتوان به مک، ویندوز، لینوکس و یونیکس اشاره کرد. RDBMSها توانایی پشتیبانی از پایگاه دادههایی با میلیونها رکورد را دارند. همچنین انواع دادههای مختلف مانند اعداد صحیح، رشتهها، زمان و... را نیز پشتیبانی میکند. در جدول زیر، لیستی از انواع داده هایی که توسط MySQL پشتیبانی می شود آورده شده است.
Char | Double | Float | Long | Integers | Blob |
Text | VarBinary | Binary | VarChar | Year | Timestamp |
DateTime | Time | Date | OpenGIS | Enum | Set |
برای امنیت، MySQL از سیستم رمزنگاری مبتنی بر تایید میزبان یا Host-based Verification استفاده میکند. کاربران MySQL میتوانند از طریق پروتکلهای مختلفی به MySQL Server متصل شوند. به عنوان مثال استفاده از سوکت TCP/IP در پلتفرمهای مختلف برای اتصال به MySQL. همچنین MySQL از ابزارها و برنامه های متعددی پشتیبانی میکند. برای نمونه میتوان به برنامههای ترمینالی (Command-Line Programs) اشاره نمود و یا میتوان از ابزارهای مدیریتی مانند MySQL Workbench استفاده کرد و کلی ابزار دیگر.
انشعابهای مختلفی از MySQL وجود دارد که تحت عنوان fork شناخته میشود مانند:
- Drizzle که یک ابزار سبک برای مدیریت پایگاه داده است و بر اساس MySQL ورژن 6.0 ساخته شده است.
- MariaDB که یک انشعابی است که بهینه سازیهایی در آن صورت گرفته و باعث شده که برخی از کارها با دردسر کمتری نسبت به MySQL انجام شود.
- Percona Server به همراه XtraDB که یک نسخهی توسعه یافته از MySQL است و با عنوان مقیاس پذیری افقی یا Horizontal Scalability شناخته میشود.
تفاوت MySQL با SQL
تا قبل از سال 2016، تفاوت عمدهی بین MySQL و SQL این بود که MySQL در پلتفرمهای مختلفی قابل استفاده بود. در حالی که SQL تنها قابل استفاده بر روی ویندوز بود. بعد از 2016، مایکروسافت SQL را گسترش داد و در سال 2017، بر روی لینوکس نیز قابل استفاده شد. ناگفته نماند که وقتی MySQL بر روی لینوکس نصب میشود، سیستم مدیریت پکیجها یا Package Management System، میبایست به صورت دستی جهت برقراری امنیت و بهینه سازی تنظیم گردد.
MySQL به کاربران این اجازه را میدهد تا از بهترین موتور ذخیره سازی برای جدولها (Table) استفاده کنند. همچنین کاربران میتوانند از موتورهای ذخیره سازی مختلفی برای یک جدول نیز استفاده کنند. یکی از موتورهای ذخیره سازی مطرح MySQL موتور InnoDB میباشد. هدف از طراحی InnoDB دسترسی پذیری بالا یا High Availability بود. به همین خاطر این موتور ذخیره سازی، مانند بقیه از سرعت بالایی برخوردار نیست. SQL از سیستم ذخیره سازی خودش استفاده میکند. همچنین از چندین فرایند (Safeguard) برای جلوگیری از از دست رفتن دادهها استفاده کرده است. هر دوی MySQL و SQL میتوانند در خوشه یا Cluster برای افزایش دسترسی پذیری اجرا شوند.
سازگاری با بقیه ی سرویس ها
طراحی MySQL طوری صورت گرفته تا با بقیهی سیستمها سازگار باشد. MySQL از محیطهای مجازی نیز پشتیبانی میکند. مانند Amazon RDS برای MySQL و برای MariaDB و یا Amazon Aurona. کاربران میتوانند دادهها را به SQL Server (سیستم پایگاه دادهی مایکروسافت) منتقل کنند. این کار توسط ابزارهای جابجایی پایگاه داده یا Migration Tools انجام میشود. مانند AWS Schema Conversion Tool و AWS Database Migration Service.
مفاهیم مربوط به پایگاه داده ی SQL Server و MySQL مشابه همدیگر هستند اما دقیقا یکی نیستند. تفاوتهایی در ساختار این دو سیستم وجود دارد. بنابراین اگر قصد انتقال دیتا از SQL Server به MySQL را دارید، باید این تفاوتها را در نظر بگیرید. به عنوان مثال در MySQL بین یک پایگاه داده و یک الگو یا Schema هیچ تفاوتی وجود ندارد. اما همین دو مورد در SQL Server دو مفهوم و موجودیت جداگانه است.
چه شرکت هایی از MySQL استفاده میکنند؟
پایگاه داده MySQL توسط خیلی از وب اپلیکیشنهایی که بر پایه ی دیتابیس هستند (Database-Driven) مورد استفاده قرار گرفته است. از جمله نرم افزار های معروفی که میتوان به آنها اشاره کرد، Joomla، phpBB، Drupal، و WordPress است. همچنین شرکت های مختلفی از این دیتابیس در وبسایت های خود استفاده میکنند، وبسایت هایی مانند Facebook، Flickr، MediaWiki، Youtube و Twitter از MySQL به عنوان پایگاه دادهی خود استفاده کرده اند.
جایگزین های اصلی MySQL کدامند؟
هرچند که MySQL به طور گستردهای در صنعتهای مختلف مورد استفاده قرار گرفته است، اما رقیب ها و جایگزینهای متعددی برای این پایگاه دادهی قدرتمند وجود دارد که در زیر لیست برخی از مهم ترین های آنها را مشاهده میکنید:
- Microsoft SQL Server
- IMB Db2
- G2 Deals
- Amazon Relational Database Service (RDS)
- PostgreSQL
- Sap HANA Cloud
- SQLite
- MariaDB
- Azure SQL Database
- IBM Informix
- Firebird
MySQL چیست؟
یک سیستم مدیریت پایگاه داده ی رابطه ای یا RDBM است که میتوان انواع دادهها را از یک عدد و رشته گرفته تا رکوردهایی مانند تصاویر و کدهای باینری را در آن ذخیره کرد.
تفاوت SQL و MySQL چیست؟
SQL به طور خاص یک زبان ساختار یافته برای ارتباط با یک سیستم پایگاه دادهای است. یعنی ارتباط با پایگاه دادهی MySQL و پایگاه دادههای مشابه آن، به وسیلهی دستورات SQL صورت میگیرد. اما بعضی افراد به SQL Server که یک سیستم پایگاه دادهای است که توسط مایکروسافت توسعه داده شده، به اختصار SQL میگویند.
MySQL در کجا استفاده می شود؟
از MySQL در اکثر برنامهها و پلتفرم ها میشود استفاده کرد. اما بیشتر به عنوان پایگاه دادهی وب سایتها مورد استفاده قرار میگیرد. اطلاعات و فعالیت کاربران در وبسایتهایی مانند فیسبوک، یوتیوب و توییتر، و خیلی از سایتهای بزرگ دیگر، در این پایگاه داده ذخیره میشود.