درباره MySQL بیشتر بدانیم:

وقتی نوبت به جمع آوری و ذخیره داده‌ها از دستگاه‌های تلفن همراه و برنامه های وب می‌رسد، MySQL بستر انتخابی بسیاری از مشاغل است. MySQL محبوب ترین سیستم مدیریت پایگاه داده رابطه‌ای متن باز (RDBMS) در سطح سازمانی است که در فیس بوک، گوگل ،Adobe، Alcatel Lucent و Zappos و بسیاری از وب سایت ها / برنامه‌های آنلاین استفاده می‌شود. RDBMS یک نرم افزار یا سرویس است که برای ایجاد و مدیریت پایگاه داده بر اساس یک مدل رابطه‌ای مورد استفاده قرار می‌گیرد.

این پایگاه داده توسط شرکت Oracle توسعه، توزیع و پشتیبانی می‌شود و یک پایگاه داده رابطه‌ای بین پلتفرمی، قدرتمند، انعطاف پذیر و قابل توسعه است که مبتنی بر زبان استاندارد SQL (Structured Query Language) است که بصورت خلاصه برای ایجاد و دستکاری پایگاه داده استفاده می‌شود.MySQL بر روی همه سیستم عامل‌های اصلی از جمله ویندوز، لینوکس و سولاریس در دسترس است. استفاده از آن برای افراد و محیط های غیر تولیدی تحت لایسنس GPL رایگان است. با این حال، در صورت استفاده نسخه تجاری، لایسنس تجاری لازم است.تسلط بر MySQL در مقایسه با سایر نرم افزارهای پایگاه داده مانند Oracle Database یا Microsoft SQL Server بسیار آسان است. MySQL مانند سایر پایگاه های داده رابطه‌ای، داده‌ها را در جداول، ستون ها و ردیف ها ذخیره می‌کند. هر ورودی با یک شناسه منحصر به فرد تعریف می‌شود. دلیل وجودی آن همیشه عملکرد و قابلیت اطمینان پایگاه داده بوده است. MySQL برای عرصه توسعه وب طراحی و بهینه سازی شده است. مسلماً متداول ترین پایگاه داده‌ای است که در استقرار وب سرور استفاده می‌شود. MySQL با Apache و PHP بسیار خوب کار می‌کند و اغلب بهترین گزینه پایگاه داده برای استقرار پشته‌های LAMP می‌باشد. MySQL امروزه از هر 10 سایت 9 عدد را قدرت می‌دهد و پایگاه داده‌ای است که توسط فیس بوک، توییتر و ویکی پدیا انتخاب شده است. حال، بیایید هر اصطلاح را از نزدیک بررسی کنیم. MySQL برای اهداف گسترده ای از جمله پایگاه داده وب (متداول ترین کاربرد)، ذخیره سازی داده ها، تجارت الکترونیکی و برنامه های ورود به سیستم استفاده می‌شود. MySQL یکی از نرم افزار های معمول نصب شده برای راه اندازی پشته LAMP (Linux + Apache + MySQL + PHP) یا LEMP (Linux + Engine-X + MySQL + PHP) است که برای توسعه وب و میزبانی سیستم های مدیریت محتوای آنلاین مانند WordPress، مگنتو، جوملا، دروپال و بسیاری دیگر. به غیر از PHP، از بسیاری از زبانهای دیگر از جمله Perl ، Node.js ، Python و ... از آن نیز پشتیبانی می‌کنند. اگر بخواهیم بصورت خلاصه و کلی تعریفی از MySQL را داشه باشیم، می توان موارد زیر را در نظر داشت:

  • MySQL یک سیستم پایگاه داده است که برای توسعه برنامه های نرم افزاری تحت وب استفاده می‌شود.
  • MySQL هم برای برنامه های کوچک و هم بزرگ استفاده می‌شود.
  • MySQL یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) است.
  • MySQL سریع، قابل اعتماد، انعطاف پذیر و آسان برای استفاده است.
  • MySQL از SQL استاندارد (زبان جستجوی ساختار یافته) پشتیبانی می‌کند.
  • MySQL برای دانلود و استفاده رایگان است.
  • MySQL در حال حاضر توسط شرکت Oracle توسعه، توزیع و پشتیبانی می‌شود.
  • MySQL به زبان های C ، C ++ نوشته شده است.

 

پایگاه داده چیست ؟

پایگاه داده به زبان ساده مجموعه ای از داده های ساختار یافته است. به سلفی گرفتن فکر کنید: یک دکمه را فشار می‌دهید و تصویری از خود ثبت می‌کنید. عکس شما داده است و گالری تلفن شما پایگاه داده است. پایگاه داده مکانی است که در آن داده ها ذخیره و سازماندهی می‌شوند. کلمه "رابطه‌ای" به این معنی است که داده های ذخیره شده در مجموعه داده به صورت جداول سازمان یافته است. هر جدول به نوعی با هم مرتبط است.

 

منظور از متن باز بودن چیست ؟

متن باز به این معنی است که شما در استفاده و اصلاح آن آزاد هستید. هرکسی می‌تواند نرم افزار را نصب کند. همچنین می‌توانید کد منبع را بیاموزید و برای رفع نیازهای خود سفارشی سازی کنید. با این حال، GPL (مجوز عمومی GNU) بسته به شرایط تعیین می‌کند که چه کاری می‌توانید انجام دهید. در صورت نیاز به مالکیت انعطاف پذیرتر و پشتیبانی پیشرفته، نسخه دارای مجوز تجاری در دسترس است.

 

SQL واقعا چیست ؟

MySQL و SQL یکسان نیستند. توجه داشته باشید که MySQL یکی از محبوب ترین نام های تجاری نرم افزار RDBMS است که مدل کلاینت سرور را پیاده سازی می‌کند. بنابراین، سرویس گیرنده و سرور چگونه در یک محیط RDBMS ارتباط برقرار می‌کنند؟ آنها از یک زبان خاص دامنه استفاده می‌کنند - زبان جستجوی ساختار یافته (SQL). نرم افزار RDBMS اغلب به زبانهای برنامه نویسی دیگر نوشته می‌شود، اما همیشه از SQL به عنوان زبان اصلی خود برای تعامل با پایگاه داده استفاده می‌شود. MySQL خود به زبان C و C ++ نوشته شده است.

SQL محبوب ترین زبان برای افزودن، دسترسی و مدیریت محتوا در یک پایگاه داده است. این مورد بیشتر به دلیل پردازش سریع، قابلیت اطمینان اثبات شده، سهولت و انعطاف پذیری در استفاده مورد توجه قرار گرفته است. MySQL تقریباً در هر برنامه PHP منبع باز بخشی اساسی است. مثال های خوب برای اسکریپتهای مبتنی بر MySQL می‌توان در PHP و وردپرس، جوملا! و دروپال پیدا کرد.

 

منظور از مدل Client-Server چیست ؟

ماشین هایی که نرم افزار RDBMS را نصب و اجرا می‌کنند، کلاینت نامیده می‌شوند. هر زمان که نیاز به دسترسی به داده ها داشته باشند، به سرور RDBMS متصل می‌شوند. این قسمت "سرویس گیرنده-مشتری" است.

MySQL یکی از بسیار گزینه های نرم افزار RDBMS است. معمولاً تصور می‌شود که RDBMS و MySQL به دلیل محبوبیت MySQL یکسان هستند. چند برنامه وب بزرگ مانند Facebook ، Twitter ، YouTube ، Google و Yahoo! همه از MySQL برای اهداف ذخیره داده استفاده می‌کنند. حتی اگر در ابتدا برای استفاده محدود ایجاد شده باشد، اکنون با بسیاری از سیستم عامل های مهم محاسباتی مانند لینوکس، macOS، مایکروسافت ویندوز و اوبونتو سازگار است.

 

MySQL چگونه کار می‌کند؟

مانند اکثر سیستم های مدیریت پایگاه داده موجود، MySQL دارای معماری کلاینت - سرور است و می‌تواند در یک محیط شبکه‌ مورد استفاده قرار گیرد. برنامه سرور در همان سیستم فیزیکی یا مجازی قرار دارد که فایل های پایگاه داده در آن ذخیره شده ‌است و مسئولیت کلیه تعاملات با پایگاه های داده را بر عهده دارد.

برنامه های مختلف کلاینت مانند ابزار MySQL برای مدیریت پایگاه داده یا برنامه هایی که به زبان های برنامه نویسی دیگر نوشته شده‌اند، می‌توانند به سرور متصل شوند و درخواست داده کنند. سرور درخواست های کلاینت را پردازش می‌کند و نتایج را به مشتری برمی‌گرداند.

یک کلاینت می‌تواند در همان سیستم سرور یا یک میزبان از راه دور ساکن باشد و درخواست های پایگاه داده را از طریق شبکه یا اتصال اینترنت به سرور ارسال کند. مهم این است که سرور MySQL باید در حال اجرا باشد تا کلاینت ها بتوانند به آن وصل شوند.

بدون اینکه خیلی فنی شویم، فرایندهای اصلی رخ داده در یک محیط MySQL به ترتیب زیر می‌باشند:

  1. MySQL با تعریف رابطه هر جدول، یک پایگاه داده برای ذخیره و دستکاری داده ها ایجاد می‌کند.
  2. کلاینت ها می‎توانند با تایپ عبارات خاص SQL به MySQL درخواست دهند.
  3. برنامه سرور با اطلاعات درخواستی پاسخ می‌دهد و در سمت کلاینت نشان داده می‌شود.

تقریباً همین است. از طرف کلاینت، آنها معمولاً تأکید می‌کنند که از کدام رابط کاربری MySQL استفاده شود. هرچه رابط کاربری گرافیکی سبک تر و کاربرپسندتر باشد، فعالیت های مدیریت داده آنها سریعتر و راحت تر خواهد بود. برخی از محبوب ترین رابط های گرافیکی MySQL WorkBench ، SequelPro ، DBVisualizer و Navicat DB Admin Tool هستند. برخی از آنها رایگان هستند، در حالی که برخی تجاری هستند، برخی منحصراً در macOS اجرا می‌شوند و برخی دیگر با سیستم عامل های دیگر سازگار هستند. کلاینت ها باید بسته به نیاز خود رابط کاربری گرافیکی (GUI) را انتخاب کنند. برای مدیریت پایگاه داده مبتنی بر وب، phpMyAdmin ابزاری نرم افزاری رایگان است که به زبان PHP نوشته شده و برای مدیریت MySQL در وب نوشته شده است.

 

ویژگی های اصلی MySQL

MySQL از یک معماری سرور چند لایه با ماژول های مستقل استفاده می‌کند. سرور چند نخی، چند کاربره، مقیاس پذیر و قدرتمند برای سیستم های تولید بار سنگین که دارای مأموریت مهم هستند طراحی شده است. MySQL هر دو موتور ذخیره سازی معامله‌ای و غیر معامله‌ای را فراهم می‌کند و از افزودن موتورهای ذخیره سازی دیگر پشتیبانی می‌کند.

  • MySQL از جداول بسیار سریع درخت B با فشرده سازی شاخص، یک سیستم تخصیص حافظه بسیار سریع مبتنی بر نخ ( Thread ) استفاده می‌کند و پیوندهای بسیار سریع را با استفاده از بهینه سازی حلقه تو در تو انجام می‌دهد.
  • MySQL از بسیاری از انواع داده ها مانند عدد صحیح signed/unsigned، انواع اعداد اعشاری (float و double)، char و varchar، باینری و varbinary، blob و text، Date، DateTime و timestamp، year، set، enum و انواع OpenGIS پشتیبانی می‌کند.
  • MySQL همچنین از طریق افزونه master-slave، خوشه بندی چند گره، پشتیبان گیری و بازیابی از افزونگی داده ها (data redundancy) و در دسترس بودن بالا (HA) پشتیبانی می‌کند. MySQL طیف گسترده ای از انواع پشتیبان و استراتژی ها را ارائه می‌دهد که از طریق آن ها می‌توانید روش هایی را انتخاب کنید که برای نیازهای شما مناسب تر باشد.
  • از ویژگی های امنیتی MySQL می‌توان به مدیریت حساب کاربر و کنترل دسترسی، تأیید مبتنی بر میزبان، اتصالات رمزگذاری شده، چندین کامپوننت و پلاگین (مانند پلاگین های تأیید اعتبار، پلاگین های کنترل اتصال، کامپوننت تأیید رمز ورود و بسیاری موارد دیگر) اشاره کرد که امنیت و همچنین FIPS را اجرا می‌کنند.
  • طراحی سرور MySQL چند لایه با ماژول های مستقل است.
  • MySQL با استفاده از نخ های هسته کاملاً چند رشته ای (multithreaded) است.
  • MySQL دارای سیستم تخصیص حافظه مبتنی بر Thread با سرعت بالا است.
  • MySQL از جدول in-memory heap پشتیبانی می‌کند.
  • MySQL پایگاه داده های بزرگ را نیز می‌تواند مدیریت کند.
  • MySQL بر روی سیستم عامل های مختلف کار می‌کند.

 

چرا MySQL اینقدر محبوب است؟

در قسمت قبل راجب ویژگی های اصلی این نرم افزار صحبت شد و بخصوص سه ویژگی زیر می توانند از دلایل استفاده زیاد آن در صنایع باشد.

MySQL در واقع تنها (R)DBMS موجود در بازار نیست، اما با استفاده از پارامترهای مهم مانند تعداد موارد ذکر شده در نتایج جستجو، پروفایل های حرفه ای در LinkedIn و بحث های فنی در انجمن های اینترنتی، یکی از محبوب ترین ها و دومین پایگاه داده شرکت Oracle است. این واقعیت که بسیاری از غول های بزرگ فناوری به آن اعتماد می‌کنند، شایستگی این محصول را بیشتر می‌کند. چرا؟ در اینجا دلایل ذکر می شوند:

  • انعطاف پذیر و آسان برای استفاده

برای تأمین انتظارات خود می‌توانید کد منبع را اصلاح کنید و نیازی به پرداخت هزینه ای برای این سطح از آزادی ندارید، همچنین گزینه های ارتقا به نسخه پیشرفته تجاری نیز در دسترس است. مراحل نصب آن نسبتاً ساده است و نباید بیش از 30 دقیقه طول بکشد.

 

  • عملکرد بالا

مجموعه گسترده‌ای از سرورهای کلاستر از MySQL پشتیبانی می‌کنند. چه در حال ذخیره سازی مقادیر گسترده ای از داده های تجارت الکترونیکی بزرگ باشید و چه در انجام فعالیت های سنگین هوش تجاری، MySQL می‌تواند با سرعت مطلوب به شما کمک کند.

 

  • امنیت

هنگام انتخاب نرم افزار مناسب RDBMS، داده های شما باید مهمترین نگرانی شما باشد. MySQL با سیستم تعیین سطح دسترسی و مدیریت حساب کاربر، از لایه امنیتی مناسبی استفاده می کند. تأیید مبتنی بر میزبان و رمزگذاری رمز عبور هر دو در دسترس هستند.

 

نتیجه گیری

امیدواریم با مطالبی که در حوزه MySQL ارائه گردید، اولین قدم را برای آشنایی و یادگیری MySQL برداشته باشید. MySQL مجموعه گسترده‌ای از ویژگی ها و مکانیزم های ذخیره سازی قدرتمند داده را پشتیبانی می‌کند که آن را به جایگاه بالایی در دنیای RDBMS رسانده است. با غول های صنعتی بزرگی مانند فیس بوک و یوتیوب که از آن پشتیبانی می‌کنند و آن را به عنوان DB خود استفاده می‌کنند، MySQL مانده و همچنان آماده جنگ برای پیشرفت است. جالب است بدانید اگر علاقمند به یادگیری حرفه ای و آموزش MySQL هستید، در بهترین جا قرار دارید!


Basic MySQL Tutorial

Getting started with MySQL

  • Installing MySQL database server
  • Loading the sample database into your own MySQL database server


Querying data

  • SELECT
  • SELECT DISTINCT 


Sorting data

  • ORDER BY


Filtering data

  • WHERE
  • AND
  • OR
  • IN
  • BETWEEN
  • LIKE
  • LIMIT
  • IS NULL


Joining tables

  • Table & Column Aliases
  • Joins 
  • INNER JOIN
  • LEFT JOIN
  • RIGHT JOIN
  • CROSS JOIN
  • Self-join


Grouping data

  • GROUP BY
  • HAVING
  • ROLLUP


Subqueries

  • Subquery
  • Derived table
  • EXISTS


Common Table Expressions

  • Common Table Expression or CTE
  • Recursive CTE


Set operators

  • UNION and UNION ALL
  • INTERSECT
  • MINUS


Modifying data in MySQL

  • INSERT
  • INSERT INTO SELECT
  • INSERT IGNORE 
  • UPDATE
  • UPDATE JOIN
  • DELETE
  • ON DELETE CASCADE
  • DELETE JOIN
  • REPLACE
  • Prepared Statement


MySQL transaction

  • Transaction
  • Table locking


Managing MySQL databases and tables

  • Selecting a MySQL database
  • Managing databases
  • CREATE DATABASE
  • DROP DATABASE
  • MySQL storage engines
  • CREATE TABLE
  • MySQL sequence
  • ALTER TABLE
  • Renaming table
  • Removing a column from a table
  • Adding a new column to a table
  • DROP TABLE
  • Temporary tables
  • TRUNCATE TABLE


MySQL data types

  • INT
  • DECIMAL
  • BIT
  • BOOLEAN
  • CHAR
  • VARCHAR
  • TEXT
  • DATE
  • TIME
  • DATETIME
  • TIMESTAMP
  • JSON
  • ENUM


MySQL constraints

  • NOT NULL constraint
  • Primary key constraint
  • Foreign key constraint 
  • UNIQUE constraint
  • CHECK constraint emulation 


MySQL globalization

  • MySQL character Set
  • MySQL collation


MySQL import & export

  • Import CSV File Into MySQL Table
  • MySQL Export Table to CSV


Advanced techniques

Natural sorting



Advanced MySQL Tutorial

MySQL Stored Procedure

  • Introduction to MySQL Stored Procedures
  • Getting Started with MySQL Stored Procedures
  • MySQL Stored Procedure Variables
  • MySQL Stored Procedure Parameters
  • MySQL Stored Procedures That Return Multiple Values
  • MySQL IF Statement
  • MySQL CASE Statement
  • Hints for Choosing Between IF and CASE Statements
  • MySQL Loop in Stored Procedures
  • MySQL Cursor
  • Listing Stored Procedures in a MySQL Database
  • MySQL Error Handling in Stored Procedures
  • Raising Error Conditions with MySQL SIGNAL / RESIGNAL Statements
  • MySQL Stored Function


MySQL Views

  • Introduction to Database View
  • Views in MySQL
  • Creating Views in MySQL
  • Creating MySQL Updatable Views
  • Ensuring Views Consistency Using WITH CHECK OPTION Clause
  • Understanding LOCAL & CASCADED in WITH CHECK OPTION Clause
  • Managing Views in MySQL


MySQL Triggers and Event

  • Introduction to SQL Trigger
  • MySQL Triggers Implementation
  • Create Trigger in MySQL
  • Create Multiple Triggers For The Same Trigger Event And Action Time
  • Managing Triggers in MySQL
  • Working with MySQL Scheduled Event
  • Modifying MySQL Events


MySQL Index

  • Creating indexes
  • Removing indexes
  • Listing table indexes
  • Unique indexes
  • Prefix indexes
  • Invisible indexes
  • Descending indexes
  • Composite indexes
  • Clustered indexes
  • Index cardinality
  • USE INDEX hint
  • FORCE INDEX hint


MySQL Full-Text Search

  • Introduction to MySQL Full-Text Search
  • Defining FULLTEXT Indexes for MySQL Full-Text Searching
  • MySQL Natural Language Full-Text Searches
  • MySQL Boolean Full-Text Searches
  • Using MySQL Query Expansion
  • MySQL ngram Full-Text Parser


MySQL Administration

  • Getting Started with MySQL Access Control System
  • How To Create User Accounts Using MySQL CREATE USER Statement
  • 3 Best Ways to Change MySQL User Password By Examples
  • How To Use MySQL GRANT Statement To Grant Privileges To a User
  • Revoking Privileges From Users Using MySQL REVOKE
  • The Ultimate Guide To MySQL Roles By Examples
  • How To Remove User Accounts Using MySQL DROP USER Statement
  • Maintaining MySQL Database Tables
  • How To Backup Databases Using mysqldump Tool
  • MySQL SHOW DATABASES: List All Databases in MySQL
  • MySQL SHOW TABLES: List Tables In a MySQL Database
  • MySQL SHOW COLUMNS and DESCRIBE: List All Columns in a Table
  • MySQL SHOW USERS: List All Users in a MySQL Database Server


MySQL Functions

  • MySQL aggregate functions
  • MySQL aggregate functions
  • AVG
  • COUNT
  • INSTR
  • SUM
  • MIN
  • MAX
  • GROUP_CONCAT
  • MySQL standard deviation functions


MySQL string functions

  • CONCAT
  • LENGTH & CHAR_LENGTH
  • LEFT
  • REPLACE
  • SUBSTRING
  • TRIM
  • FIND_IN_SET
  • FORMAT


MySQL control flow functions

  • CASE
  • IF
  • IFNULL
  • NULLIF


MySQL date and time functions

  • CURDATE
  • DATEDIFF
  • DAY
  • DATE_ADD
  • DATE_SUB
  • DAYOFWEEK
  • EXTRACT
  • NOW
  • MONTH
  • STR_TO_DATE
  • SYSDATE
  • TIMEDIFF
  • TIMESTAMPDIFF
  • WEEK
  • WEEKDAY
  • YEAR


MySQL comparison functions

  • COALESCE
  • GREATEST & LEAST
  • ISNULL


MySQL Math functions

  • ABS
  • CEIL
  • FLOOR
  • MOD
  • ROUND
  • TRUNCATE


MySQL partitioning

  • Overview of Partitioning in MySQL
  • Partitioning Types
  • Partition Management
  • Partition Pruning
  • Partition Selection
  • Restrictions and Limitations on Partitioning


Other MySQL functions

  • LAST_INSERT_ID
  • CAST


MySQL Tips

  • An Introduction to MySQL CTE
  • A Definitive Guide To MySQL Recursive CTE
  • Managing Hierarchical Data in MySQL Using the Adjacency List Model
  • MySQL Row Count: How to Get Row Count in MySQL
  • MySQL Compare Two Tables
  • How To Find Duplicate Values in MySQL
  • How To Delete Duplicate Rows in MySQL
  • MySQL UUID Smackdown: UUID vs. INT for Primary Key
  • MySQL Copy Table With Examples
  • How To Copy a MySQL Database
  • MySQL Variables
  • MySQL SELECT INTO Variable
  • How To Use The MySQL Generated Columns
  • How To Compare Successive Rows Within The Same Table in MySQL
  • How To Change MySQL Storage Engine
  • MySQL REGEXP: Search Based On Regular Expressions
  • MySQL ROW_NUMBER, This is How You Emulate It
  • MySQL Select Random Records
  • How To Select The nth Highest Record In MySQL
  • MySQL Reset Auto Increment Values
  • MariaDB vs. MySQL
  • MySQL Interval
  • MySQL NULL: The Beginner's Guide
  • How to Get MySQL Today's Date
  • How To Map NULL Values To Other Meaningful Values
  • MySQL Comment In Depth


درباره MySQL بیشتر بدانیم:

وقتی نوبت به جمع آوری و ذخیره داده‌ها از دستگاه‌های تلفن همراه و برنامه های وب می‌رسد، MySQL بستر انتخابی بسیاری از مشاغل است. MySQL محبوب ترین سیستم مدیریت پایگاه داده رابطه‌ای متن باز (RDBMS) در سطح سازمانی است که در فیس بوک، گوگل ،Adobe، Alcatel Lucent و Zappos و بسیاری از وب سایت ها / برنامه‌های آنلاین استفاده می‌شود. RDBMS یک نرم افزار یا سرویس است که برای ایجاد و مدیریت پایگاه داده بر اساس یک مدل رابطه‌ای مورد استفاده قرار می‌گیرد.

این پایگاه داده توسط شرکت Oracle توسعه، توزیع و پشتیبانی می‌شود و یک پایگاه داده رابطه‌ای بین پلتفرمی، قدرتمند، انعطاف پذیر و قابل توسعه است که مبتنی بر زبان استاندارد SQL (Structured Query Language) است که بصورت خلاصه برای ایجاد و دستکاری پایگاه داده استفاده می‌شود.MySQL بر روی همه سیستم عامل‌های اصلی از جمله ویندوز، لینوکس و سولاریس در دسترس است. استفاده از آن برای افراد و محیط های غیر تولیدی تحت لایسنس GPL رایگان است. با این حال، در صورت استفاده نسخه تجاری، لایسنس تجاری لازم است.تسلط بر MySQL در مقایسه با سایر نرم افزارهای پایگاه داده مانند Oracle Database یا Microsoft SQL Server بسیار آسان است. MySQL مانند سایر پایگاه های داده رابطه‌ای، داده‌ها را در جداول، ستون ها و ردیف ها ذخیره می‌کند. هر ورودی با یک شناسه منحصر به فرد تعریف می‌شود. دلیل وجودی آن همیشه عملکرد و قابلیت اطمینان پایگاه داده بوده است. MySQL برای عرصه توسعه وب طراحی و بهینه سازی شده است. مسلماً متداول ترین پایگاه داده‌ای است که در استقرار وب سرور استفاده می‌شود. MySQL با Apache و PHP بسیار خوب کار می‌کند و اغلب بهترین گزینه پایگاه داده برای استقرار پشته‌های LAMP می‌باشد. MySQL امروزه از هر 10 سایت 9 عدد را قدرت می‌دهد و پایگاه داده‌ای است که توسط فیس بوک، توییتر و ویکی پدیا انتخاب شده است. حال، بیایید هر اصطلاح را از نزدیک بررسی کنیم. MySQL برای اهداف گسترده ای از جمله پایگاه داده وب (متداول ترین کاربرد)، ذخیره سازی داده ها، تجارت الکترونیکی و برنامه های ورود به سیستم استفاده می‌شود. MySQL یکی از نرم افزار های معمول نصب شده برای راه اندازی پشته LAMP (Linux + Apache + MySQL + PHP) یا LEMP (Linux + Engine-X + MySQL + PHP) است که برای توسعه وب و میزبانی سیستم های مدیریت محتوای آنلاین مانند WordPress، مگنتو، جوملا، دروپال و بسیاری دیگر. به غیر از PHP، از بسیاری از زبانهای دیگر از جمله Perl ، Node.js ، Python و ... از آن نیز پشتیبانی می‌کنند. اگر بخواهیم بصورت خلاصه و کلی تعریفی از MySQL را داشه باشیم، می توان موارد زیر را در نظر داشت:

  • MySQL یک سیستم پایگاه داده است که برای توسعه برنامه های نرم افزاری تحت وب استفاده می‌شود.
  • MySQL هم برای برنامه های کوچک و هم بزرگ استفاده می‌شود.
  • MySQL یک سیستم مدیریت پایگاه داده رابطه‌ای (RDBMS) است.
  • MySQL سریع، قابل اعتماد، انعطاف پذیر و آسان برای استفاده است.
  • MySQL از SQL استاندارد (زبان جستجوی ساختار یافته) پشتیبانی می‌کند.
  • MySQL برای دانلود و استفاده رایگان است.
  • MySQL در حال حاضر توسط شرکت Oracle توسعه، توزیع و پشتیبانی می‌شود.
  • MySQL به زبان های C ، C ++ نوشته شده است.

 

پایگاه داده چیست ؟

پایگاه داده به زبان ساده مجموعه ای از داده های ساختار یافته است. به سلفی گرفتن فکر کنید: یک دکمه را فشار می‌دهید و تصویری از خود ثبت می‌کنید. عکس شما داده است و گالری تلفن شما پایگاه داده است. پایگاه داده مکانی است که در آن داده ها ذخیره و سازماندهی می‌شوند. کلمه "رابطه‌ای" به این معنی است که داده های ذخیره شده در مجموعه داده به صورت جداول سازمان یافته است. هر جدول به نوعی با هم مرتبط است.

 

منظور از متن باز بودن چیست ؟

متن باز به این معنی است که شما در استفاده و اصلاح آن آزاد هستید. هرکسی می‌تواند نرم افزار را نصب کند. همچنین می‌توانید کد منبع را بیاموزید و برای رفع نیازهای خود سفارشی سازی کنید. با این حال، GPL (مجوز عمومی GNU) بسته به شرایط تعیین می‌کند که چه کاری می‌توانید انجام دهید. در صورت نیاز به مالکیت انعطاف پذیرتر و پشتیبانی پیشرفته، نسخه دارای مجوز تجاری در دسترس است.

 

SQL واقعا چیست ؟

MySQL و SQL یکسان نیستند. توجه داشته باشید که MySQL یکی از محبوب ترین نام های تجاری نرم افزار RDBMS است که مدل کلاینت سرور را پیاده سازی می‌کند. بنابراین، سرویس گیرنده و سرور چگونه در یک محیط RDBMS ارتباط برقرار می‌کنند؟ آنها از یک زبان خاص دامنه استفاده می‌کنند - زبان جستجوی ساختار یافته (SQL). نرم افزار RDBMS اغلب به زبانهای برنامه نویسی دیگر نوشته می‌شود، اما همیشه از SQL به عنوان زبان اصلی خود برای تعامل با پایگاه داده استفاده می‌شود. MySQL خود به زبان C و C ++ نوشته شده است.

SQL محبوب ترین زبان برای افزودن، دسترسی و مدیریت محتوا در یک پایگاه داده است. این مورد بیشتر به دلیل پردازش سریع، قابلیت اطمینان اثبات شده، سهولت و انعطاف پذیری در استفاده مورد توجه قرار گرفته است. MySQL تقریباً در هر برنامه PHP منبع باز بخشی اساسی است. مثال های خوب برای اسکریپتهای مبتنی بر MySQL می‌توان در PHP و وردپرس، جوملا! و دروپال پیدا کرد.

 

منظور از مدل Client-Server چیست ؟

ماشین هایی که نرم افزار RDBMS را نصب و اجرا می‌کنند، کلاینت نامیده می‌شوند. هر زمان که نیاز به دسترسی به داده ها داشته باشند، به سرور RDBMS متصل می‌شوند. این قسمت "سرویس گیرنده-مشتری" است.

MySQL یکی از بسیار گزینه های نرم افزار RDBMS است. معمولاً تصور می‌شود که RDBMS و MySQL به دلیل محبوبیت MySQL یکسان هستند. چند برنامه وب بزرگ مانند Facebook ، Twitter ، YouTube ، Google و Yahoo! همه از MySQL برای اهداف ذخیره داده استفاده می‌کنند. حتی اگر در ابتدا برای استفاده محدود ایجاد شده باشد، اکنون با بسیاری از سیستم عامل های مهم محاسباتی مانند لینوکس، macOS، مایکروسافت ویندوز و اوبونتو سازگار است.

 

MySQL چگونه کار می‌کند؟

مانند اکثر سیستم های مدیریت پایگاه داده موجود، MySQL دارای معماری کلاینت - سرور است و می‌تواند در یک محیط شبکه‌ مورد استفاده قرار گیرد. برنامه سرور در همان سیستم فیزیکی یا مجازی قرار دارد که فایل های پایگاه داده در آن ذخیره شده ‌است و مسئولیت کلیه تعاملات با پایگاه های داده را بر عهده دارد.

برنامه های مختلف کلاینت مانند ابزار MySQL برای مدیریت پایگاه داده یا برنامه هایی که به زبان های برنامه نویسی دیگر نوشته شده‌اند، می‌توانند به سرور متصل شوند و درخواست داده کنند. سرور درخواست های کلاینت را پردازش می‌کند و نتایج را به مشتری برمی‌گرداند.

یک کلاینت می‌تواند در همان سیستم سرور یا یک میزبان از راه دور ساکن باشد و درخواست های پایگاه داده را از طریق شبکه یا اتصال اینترنت به سرور ارسال کند. مهم این است که سرور MySQL باید در حال اجرا باشد تا کلاینت ها بتوانند به آن وصل شوند.

بدون اینکه خیلی فنی شویم، فرایندهای اصلی رخ داده در یک محیط MySQL به ترتیب زیر می‌باشند:

  1. MySQL با تعریف رابطه هر جدول، یک پایگاه داده برای ذخیره و دستکاری داده ها ایجاد می‌کند.
  2. کلاینت ها می‎توانند با تایپ عبارات خاص SQL به MySQL درخواست دهند.
  3. برنامه سرور با اطلاعات درخواستی پاسخ می‌دهد و در سمت کلاینت نشان داده می‌شود.

تقریباً همین است. از طرف کلاینت، آنها معمولاً تأکید می‌کنند که از کدام رابط کاربری MySQL استفاده شود. هرچه رابط کاربری گرافیکی سبک تر و کاربرپسندتر باشد، فعالیت های مدیریت داده آنها سریعتر و راحت تر خواهد بود. برخی از محبوب ترین رابط های گرافیکی MySQL WorkBench ، SequelPro ، DBVisualizer و Navicat DB Admin Tool هستند. برخی از آنها رایگان هستند، در حالی که برخی تجاری هستند، برخی منحصراً در macOS اجرا می‌شوند و برخی دیگر با سیستم عامل های دیگر سازگار هستند. کلاینت ها باید بسته به نیاز خود رابط کاربری گرافیکی (GUI) را انتخاب کنند. برای مدیریت پایگاه داده مبتنی بر وب، phpMyAdmin ابزاری نرم افزاری رایگان است که به زبان PHP نوشته شده و برای مدیریت MySQL در وب نوشته شده است.

 

ویژگی های اصلی MySQL

MySQL از یک معماری سرور چند لایه با ماژول های مستقل استفاده می‌کند. سرور چند نخی، چند کاربره، مقیاس پذیر و قدرتمند برای سیستم های تولید بار سنگین که دارای مأموریت مهم هستند طراحی شده است. MySQL هر دو موتور ذخیره سازی معامله‌ای و غیر معامله‌ای را فراهم می‌کند و از افزودن موتورهای ذخیره سازی دیگر پشتیبانی می‌کند.

  • MySQL از جداول بسیار سریع درخت B با فشرده سازی شاخص، یک سیستم تخصیص حافظه بسیار سریع مبتنی بر نخ ( Thread ) استفاده می‌کند و پیوندهای بسیار سریع را با استفاده از بهینه سازی حلقه تو در تو انجام می‌دهد.
  • MySQL از بسیاری از انواع داده ها مانند عدد صحیح signed/unsigned، انواع اعداد اعشاری (float و double)، char و varchar، باینری و varbinary، blob و text، Date، DateTime و timestamp، year، set، enum و انواع OpenGIS پشتیبانی می‌کند.
  • MySQL همچنین از طریق افزونه master-slave، خوشه بندی چند گره، پشتیبان گیری و بازیابی از افزونگی داده ها (data redundancy) و در دسترس بودن بالا (HA) پشتیبانی می‌کند. MySQL طیف گسترده ای از انواع پشتیبان و استراتژی ها را ارائه می‌دهد که از طریق آن ها می‌توانید روش هایی را انتخاب کنید که برای نیازهای شما مناسب تر باشد.
  • از ویژگی های امنیتی MySQL می‌توان به مدیریت حساب کاربر و کنترل دسترسی، تأیید مبتنی بر میزبان، اتصالات رمزگذاری شده، چندین کامپوننت و پلاگین (مانند پلاگین های تأیید اعتبار، پلاگین های کنترل اتصال، کامپوننت تأیید رمز ورود و بسیاری موارد دیگر) اشاره کرد که امنیت و همچنین FIPS را اجرا می‌کنند.
  • طراحی سرور MySQL چند لایه با ماژول های مستقل است.
  • MySQL با استفاده از نخ های هسته کاملاً چند رشته ای (multithreaded) است.
  • MySQL دارای سیستم تخصیص حافظه مبتنی بر Thread با سرعت بالا است.
  • MySQL از جدول in-memory heap پشتیبانی می‌کند.
  • MySQL پایگاه داده های بزرگ را نیز می‌تواند مدیریت کند.
  • MySQL بر روی سیستم عامل های مختلف کار می‌کند.

 

چرا MySQL اینقدر محبوب است؟

در قسمت قبل راجب ویژگی های اصلی این نرم افزار صحبت شد و بخصوص سه ویژگی زیر می توانند از دلایل استفاده زیاد آن در صنایع باشد.

MySQL در واقع تنها (R)DBMS موجود در بازار نیست، اما با استفاده از پارامترهای مهم مانند تعداد موارد ذکر شده در نتایج جستجو، پروفایل های حرفه ای در LinkedIn و بحث های فنی در انجمن های اینترنتی، یکی از محبوب ترین ها و دومین پایگاه داده شرکت Oracle است. این واقعیت که بسیاری از غول های بزرگ فناوری به آن اعتماد می‌کنند، شایستگی این محصول را بیشتر می‌کند. چرا؟ در اینجا دلایل ذکر می شوند:

  • انعطاف پذیر و آسان برای استفاده

برای تأمین انتظارات خود می‌توانید کد منبع را اصلاح کنید و نیازی به پرداخت هزینه ای برای این سطح از آزادی ندارید، همچنین گزینه های ارتقا به نسخه پیشرفته تجاری نیز در دسترس است. مراحل نصب آن نسبتاً ساده است و نباید بیش از 30 دقیقه طول بکشد.

 

  • عملکرد بالا

مجموعه گسترده‌ای از سرورهای کلاستر از MySQL پشتیبانی می‌کنند. چه در حال ذخیره سازی مقادیر گسترده ای از داده های تجارت الکترونیکی بزرگ باشید و چه در انجام فعالیت های سنگین هوش تجاری، MySQL می‌تواند با سرعت مطلوب به شما کمک کند.

 

  • امنیت

هنگام انتخاب نرم افزار مناسب RDBMS، داده های شما باید مهمترین نگرانی شما باشد. MySQL با سیستم تعیین سطح دسترسی و مدیریت حساب کاربر، از لایه امنیتی مناسبی استفاده می کند. تأیید مبتنی بر میزبان و رمزگذاری رمز عبور هر دو در دسترس هستند.

 

نتیجه گیری

امیدواریم با مطالبی که در حوزه MySQL ارائه گردید، اولین قدم را برای آشنایی و یادگیری MySQL برداشته باشید. MySQL مجموعه گسترده‌ای از ویژگی ها و مکانیزم های ذخیره سازی قدرتمند داده را پشتیبانی می‌کند که آن را به جایگاه بالایی در دنیای RDBMS رسانده است. با غول های صنعتی بزرگی مانند فیس بوک و یوتیوب که از آن پشتیبانی می‌کنند و آن را به عنوان DB خود استفاده می‌کنند، MySQL مانده و همچنان آماده جنگ برای پیشرفت است. جالب است بدانید اگر علاقمند به یادگیری حرفه ای و آموزش MySQL هستید، در بهترین جا قرار دارید!