MySQL: все гениальное - просто!

MySQL - самая популярная среди баз данных, используемых для веб-разработок. Главная отличительная особенность MySQL - ее простота. Разработчики сознательно отказались от реализации ряда считающихся обязательными для любой СУБД функций, возложив эти заботы на разработчиков прикладного программного обеспечения (в результате стали даже возникать вопросы: а можно ли вообще считать MySQL реляционной базой данных). Это и главное достоинство MySQL, и главный недостаток.

MySQL не поддерживает подзапросы (вложенные команды SELECT). MySQL не позволяет создавать хранимые процедуры и триггеры. MySQL не поддерживает внешние ключи (Foreign Key). Как следствие - в MySQL отсутствует возможность каскадного обновления / удаления записей средствами базы данных.

Отказ от многих традиционных для СУБД функций, обеспечивающих целостность и непротиворечивость данных, позволил сделать MySQL самой быстрой базой данных, что очень важно - зачастую критически важно! - для веб-приложений. Вместе с тем это прибавляет работы программистам, вынужденным на уровне сервера приложений реализовывать ограничения ссылочной целостности, что является потенциальным источником ошибок и снижает надежность программного обеспечения.

Еще одна интересная особенность MySQL - то, как в ней реализован механизм транзакций. Возможность применения транзакций зависит от типа таблицы (который задается при ее создании), при этом таблицы типа MyISAM, создаваемые по умолчанию, механизм транзакций не поддерживают. Что опять же ускоряет работу базы, но снижает надежность, является потенциальным источником появления противоречивых, нестыкующихся данных.

И в завершение отметим то обстоятельство, что практически во всех популярных языках веб-программирования реализован очень простой и мощный интерфейс работы с базой MySQL. Пожалуй, ни одна другая база данных не имеет столь мощной поддержки со стороны разработчиков языков веб-программирования.

Все это вместе взятое и обусловило популярность MySQL среди веб-разработчиков. Я не видел еще ни одного хостера (narod.ru etc. не в счет:), у которого поддержка MySQL не была бы включена в большинство тарифных планов, в том числе и недорогих. И сейчас количество сайтов, сделанных с использованием MySQL (и особенно - реализованных на связке PHP - MySQL), растет не по дням, а по часам.