Азбука MySQL: практика, особенности, принципы функционирования
MySQL — одна из самых распространенных систем управления базами данных. Своей необычайной популярностью она обязана множеству факторов, решающими из которых можно назвать бесплатность и дату выхода — это одно из самых ранних массовых решений для управления базами данных, первый выпуск которого датируется серединой 90-х годов прошлого века.
MySQL появилась в результате необходимости адаптации mSQL для работы с таблицами, разработанными под более ранние способы хранения и управления, потерявшие актуальность в связи с ростом объемов данных и повышением скорости работы компьютеров.
Что касается названия, то точной информации о его возникновении нет: английская Википедия утверждает, что My (Мю) — это имя дочери Микаэля Видениуса, в русскоязычной Википедии дополнительно упоминается, что это простая приставка «мой». Как, например, «МойОфис». Однако, чуть ниже будут факты, которые говорят в пользу теории с именем дочери.
Возникновение MySQL
С 1995 г., в котором был первый выпуск, и до наших дней — последняя версия вышла 26 апреля этого года — СУБД прошла долгий и извилистый путь развития. Сама разработка стартовала в 1994 г. и велась компаниями Axmark и Widenius: в то время еще не было планов на широкое использование, и продукт разрабатывался сугубо для личного применения.
В качестве базы разработчики взяли mSQL и создали свой интерфейс, при этом сохранив совместимость API с mSQL — это позволило сторонним программистам быстро осваивать СУБД и переводить на нее свои проекты. Причиной для перевода служила GNU General Public License, по которой распространялось это новое программное обеспечение, в отличие от самой mSQL, которая была платной.
Вначале СУБД принадлежала компании MySQL AB, но в 2008 г. была приобретена Sun Microsystem, которую в свою очередь затем поглотил Oracle — ему все это обошлось в почти $7,5 млрд. На фоне этой покупки от MySQL отделился известный продукт, поддерживаемый первоначальными разработчиками MySQL.
MariaDB — это форк MySQL от одного из ее главных создателей. Она изначально начала разрабатываться Микаэлем Видениусом из-за опасений, вызванных покупкой Sun Microsystem компанией Oracle. Практически точная копия MySQL в самом начале, теперь это по-настоящему отдельный проект со своими особенностями и функционалом, но высокой совместимостью с MySQL. Maria — имя второй дочери Микаэля Видениуса, так что, скорее всего, MySQL тоже названа в честь дочери.
Лицензирование MySQL
MySQL распространяется под лицензией GNU GPL, которая подразумевает передачу всего программного кода в общественную собственность. Таким образом, получается, что компании, выполнившие внедрение MySQL и сделавшие улучшения или добавившие нужные им возможности, обязаны предоставить все свои доработки в качестве открытого исходного кода общественности.
Такая лицензия хороша для небольших предприятий, но не подходит крупным поставщикам ПО, которые не хотят раскрывать исходные коды своего программного обеспечения — для них существует специальная проприетарная лицензия. Как правило, она включает техническую поддержку, но самое главное — коммерческая лицензия не предусматривает соблюдения GPL, и все наработки могут оставаться в самой компании.
Поддерживаемые операционные системы
С этой точки зрения MySQL есть чем похвастаться. Будет сложнее найти операционную систему, на которой она не поддерживается, чем перечислять все поддерживаемые. Отчасти это связано с популярностью, а отчасти — с почтенным возрастом. Поддерживаются даже неактуальные ОС, которые можно встретить только в музее или коллекциях, среди них есть и мобильные (Symbian), и совершенно раритетные (OS/2 или NetWare)
Поддержка Windows впервые появилась в 1998 г.: тогда это были современные Windows NT и 95. Сегодня СУБД можно установить на все актуальные версии Windows, а также огромное количество других операционных систем: eComStation, Linux, macOS, AIX, OpenVMS, UnixWare и другие. Процесс портирования продолжается и в настоящее время, поэтому шансы найти платформу, на которой бы еще не было порта этой СУБД, с каждым днем снижаются.
Немного технических деталей
Популярность и распространение под лицензией GNU GPL способствовали непрерывному и активному развитию и совершенствованию системы управления базами данных: обрастая значительным функционалом, она осталась одной из самых простых и понятных СУБД такого масштаба.
В MySQL нет ограничений на размер таблиц — он ограничен только ее типом. В целом, несмотря на то, что в настоящее время она позиционируется как решение для web-ресурсов или online-транзакций, при беглом сравнении с PostgreSQL — СУБД для серьезных аналитических решений — она практически ничем не уступает, если только вам не нужна узкоспециализированная аналитика. К примеру, есть и там, и там:
- полнотекстовый поиск;
- поддержка JSON;
- обобщенные табличные выражения (Common Table Expression);
- логическая репликация;
- декларативное секционирование;
- оконные функции;
- полусинхронная репликация.
Список можно продолжать бесконечно, потому что постепенно происходит унификация.
В прошлом, когда вычислительные мощности были небольшими, всегда приходилось выбирать что-то одно, жертвуя противоположным: надежность — скорость, функционал — доступность и так далее. Сегодня, когда технические ограничения постепенно уходят, функционал самых разных СУБД начинает сближаться друг с другом. Хотя, несомненно, на данном этапе различия все еще есть и могут оказаться критичными для некоторых решений.
MySQL может работать с разными типами таблиц:
- InnoDB;
- CSV;
- MyISAM;
- Archive;
- Memory;
- Blackhole;
- Federated;
- NDB/NDBCLUSTER;
- Example;
- Merge.
У каждого из этих движков есть свои плюсы и минусы, но для СУБД очевидное преимущество заключается в самой возможности их использовать. Рассказывать отдельно о каждой подсистеме в рамках этого материала нет смысла — при желании вы сможете найти информацию самостоятельно.
Распространение MySQL
Как мы уже отмечали ранее, функционал MySQL достаточно обширен и подойдет для решения множества задач, но все же есть отрасли, где эта СУБД используется наиболее часто — это web-решения и проекты, где приоритет отдается скорости и простоте, а большинство операций предполагают чтение, а не запись.
MySQL проста в установке и настройке, имеет большое количество инструментов, обеспечивающих работу с СУБД посредством графического интерфейса, что позволяет полноценно ее использовать, не изучая консольные команды. Среди популярных: MySQL Workbench, Database Workbench, Adminer, phpMyAdmin, DBeaver, SQLBuddy и другие.
Кроме этого, она включена в популярные сборки серверного программного обеспечения LAMP/WAMP/XAMPP и прочих. Ее используют системы управления контентом (CMS) phpBB, Joomla, Drupal, WordPress. Крупные корпорации, такие как Twitter, Flickr, YouTube, MediaWiki, задействуют ее в своих проектах.
В общем, СУБД востребована, а что самое главное — с каждым новым выпуском она обрастает недостающими ранее возможностями.
Преимущества MySQL
Традиционно к достоинствам MySQL относят скорость, которая достигается не в ущерб надежности. Максимального эффекта от использования можно добиться на высокопараллельных операциях, направленных на чтение.
Популярность — в любой момент вы можете зайти на один из множества форумов и задать вопрос. В 99% случаев не придется делать даже этого: все вопросы уже разобраны, решения найдены, ответы получены. Большое русскоязычное сообщество не оставит в беде начинающего пользователя.
Из популярности вытекает и еще один плюс, если вы не разработчик, а владелец сайта — вам будет легко найти квалифицированного специалиста именно для вашей категории. Не придется нанимать единственного и очень высокооплачиваемого, который откликнулся. Высокая конкуренция требует непрерывно совершенствоваться и повышать опыт.
Графический интерфейс и простота настройки и обслуживания — для тех, кто хочет всем управлять самостоятельно. Все максимально легко: за несколько дней можно в достаточной степени изучить базовые возможности. Это лишь некоторые преимущества этой СУБД, на самом деле их значительно больше.
Итоги
MySQL — шустрая и легкая СУБД, которая пользуется большой популярностью. Она проста в установке и настройке, позволяет использовать графический интерфейс вместо командной строки и подойдет для большинства проектов, за исключением очень сложных, где требуется выполнять большое количество операций чтения/записи.
К преимуществам можно отнести поддержку множества ОС и непрерывное развитие, в ходе которого постоянно добавляются новые возможности.