MySQL давно известна как платформа баз данных веб-разработчиков. Фактически, в течение многих лет он считался пасынком «настоящих» систем реляционных баз данных, таких как IBM DB2, Oracle и Microsoft SQL Server. Тем не менее, в последние годы MySQL стремительно росла как со стороны разработки, так и с точки зрения разработчиков и корпоративного ИТ-персонала во всем мире.
Разработанный частично в 1980-х годах, с частью SQL, созданной в 1995 году, его основной разработчик Майкл Видениус (вместе с Дэвидом Аксмарком и Алланом Ларссоном) также основал MySQL AB. Текущий стабильный выпуск — версия 4.01.
MySQL — это, конечно же, решение с открытым исходным кодом. По словам Арьена Ленца из MySQL AB, модель со свободным и открытым исходным кодом является лучшей — она включает в себя публичный контроль кода, сторонние проверки безопасности, обратную связь на протяжении всего процесса разработки и боевые испытания во многих различных средах.
Проникновение MySQL на международный рынок огромно, включая более 20 миллионов загрузок, 4 миллиона активных установок и почти 35 000 загрузок в день. В эту пользовательскую базу входят такие имена, как Yahoo !, Google, Cisco, NASA, Dunn & Bradstreet, Lufthansa, Hyperion и Sabre Holdings.
Лицензирование также уникально, его можно загрузить бесплатно по лицензии GPL с открытым исходным кодом, а также получить коммерческую лицензию для тех, кто нуждается в поддержке и хочет получить гарантии.
Где мы находимся сейчас? Версия 4.0x (Производство)
Некоторое время MySQL идеально подходил для сред веб-разработки на Java, Perl и PHP. На уровне отдельных сайтов и на уровне предприятия мощные веб-приложения успешно работают на ядре базы данных MySQL. Его возможности были еще более усилены благодаря недавним публичным тестам, которые сравнивали производительность MySQL с такими тяжеловесами отрасли, как IBM, Microsoft и Oracle.
Для многих тех, кто не принимал базу данных с открытым исходным кодом, было неожиданно то, что с точки зрения производительности MySQL отлично справлялся с Oracle и превосходил других в неустанных тестах, проводимых eWeek Test Labs.
В текущей стабильной версии есть некоторые ограничения, два из которых наиболее важны: подзапросы и хранимые процедуры. По мере того как веб-приложения становятся все более изощренными, эти проблемы стали барьерами для более широкого принятия платформы. Некоторые фирмы, такие как NASA, обходили ограничения, используя внешние скрипты, такие как Perl.
Тем не менее, есть и дополнения к производственной версии 4.0x, которые помогли позиционировать MySQL как серьезного игрока на рынке ядра СУБД. Существенным среди этих изменений было включение InnoDB для транзакционной базы данных и, как отметил eWeek, возможность использовать как InnoDB, так и ISAM для нетранзакционных потребностей в одной и той же базе данных — преимущество, уникальное для MySQL. В сочетании с возможностью кэширования запросов эта последняя возможность была движущей силой впечатляющей производительности MySQL. Эта функция кэширования позволяет сохранять результаты больших запросов в памяти, что позволяет последующим запросам возвращать результаты практически мгновенно.
Дополнительные функции, такие как репликация базы данных, завершают набор функций, которые делают MySQL основным выбором для разработки веб-приложений.
Обратите внимание, что онлайн-руководство MySQL содержит всю документацию, необходимую для настройки и использования функций, обсуждаемых в этой статье. Кроме того, если вы планируете экспериментировать с версией 4.1 или более поздней, обязательно используйте среду разработки, поскольку некоторые изменения не могут быть понижены после завершения установки и предоставления обновлений.
Почему InnoDB?
InnoDB обеспечивает среду хранения транзакций, включая фиксацию, откат и восстановление после сбоя. Это чрезвычайно полезно в веб-приложениях, которые используются несколькими пользователями одновременно, таких как решения для управления заказами или решения CRM. Создание таблиц InnoDB является простым, что иллюстрируется добавлением к оператору create table, представленному ниже.
CREATE TABLE prospects (a INT, b CHAR (20), INDEX (a)) ENGINE=InnoDB;
InnoDB также создает свой собственный словарь в соответствии с документацией MySQL, так что вы можете иметь множество таблиц с одинаковыми именами (например, клиенты, клиенты, заказы и т. Д.) В базах данных, которые используют InnoDB.
Наконец, InnoDB позволяет смешивать запросы к таблицам InnoDB и не-InnoDB в одном и том же sql, и, конечно, производительность оптимизируется при использовании вместе с кешем запросов.
Кеш запросов
Кеш запросов наиболее полезен в веб-среде. Управляемые базой данных сайты — это, в основном, динамические страницы, созданные из содержимого базы данных Кэш может значительно улучшить производительность этих сред.
Если у вас не включен кеш запросов, вы можете сделать это в качестве теста, просто используя mysqld --query_cache_size=10m
Вы можете настроить это для запуска при загрузке MySQL, используя команду set:
mysql> SET query_cache_size = 10240;
Репликация баз данных
Используя новый администратор MySQL, теперь можно управлять репликацией через графический интерфейс пользователя, а также через командную строку mysql. Репликация может использоваться как средство резервного копирования, как средство балансировки нагрузки или как средство миграции при переходе на новое оборудование (и, возможно, новую среду размещения, где меняются IP-адреса).
Учитывая многочисленные опции и изменения в привилегиях репликации по мере выпуска новых версий, обсуждение этой темы выходит за рамки данной статьи. См. Документацию по репликации на сайте MySQL для получения дополнительной информации.
Следующий шаг — версия 4.1 (альфа)
Основным идентифицирующим дополнением к этому выпуску являются подзапросы. Подзапросы — это просто операторы выбора, вложенные в существующие операторы выбора. К сожалению, в версиях до 4.1 подзапросы либо нужно было избегать, либо требовали разработки несколько сложных объединений и / или объединений. Просто подзапросы легче писать и читать при просмотре SQL.
Простой, но мощный пример подзапроса, который не может быть выполнен с помощью объединения, показан ниже:
SELECT partner_name, number_clients_referred
FROM partners
WHERE number_clients_referred = (SELECT MAX(number_clients_referred) FROM employees);
Это если курс находит все значения в таблице «партнеры», которые равны максимальному значению в таблице «сотрудники».
«Золотое яйцо» — версия 5.0
Версия 5.0 в настоящее время находится в стадии разработки, но в предварительном просмотре одной существенной функцией, присутствующей в известных системах реляционных баз данных, являются хранимые процедуры. Хранимая процедура (sp) позволяет хранить набор SQL-операторов в одной команде и вызывать их. Эти команды выполняются только на стороне сервера и могут быть полезны, так как не требуют взаимодействия на стороне клиента после их вызова. Кроме того, sps могут повысить безопасность и целостность данных.
Sps можно использовать для таких простых действий, как проверка данных при множественном необработанном импорте внешних данных, обрабатываемых и загружаемых в базу данных. Они также полезны для создания сложных отчетов, возвращая результаты на стороне клиента, которые не могут быть обработаны в одном выражении SQL.
Проверка данных
Например, представьте, что вы разрабатываете веб-приложение для «желтых страниц» и получаете бизнес-данные из многочисленных источников, которые затем объединяются и загружаются в одну базу данных. В этом случае вы можете использовать sp для проверки того, что все адреса веб-сайтов и электронной почты соответствуют вашему правильному формату, а все номера телефонов отображаются в правильном формате, с черточками для разделения кода страны, кода города, префикса и т. Д.
Генерация отчетов
Предположим, вы внедряете решение для составления отчетов, которое составляет отчеты для инвестиционных консультантов, которые хотят видеть счета и транзакции своих клиентов, а также данные, рассчитанные для отображения комиссий и нормы прибыли на инвестиции. Хранимая процедура позволит вам обернуть эти различные операторы SQL в один объект, что может привести к полному онлайн-заявлению для просмотра и распространения.
MySQL Cluster
Только что анонсированный на MySQL Users Conference во Флориде, MySQL выпустил предварительный просмотр MySQL Cluster. Система заявляет о доступности на 99,999% времени безотказной работы и стремится выйти на рынок, который в настоящее время принадлежит преимущественно таким компаниям, как Oracle, IBM и SQL-серверы Microsoft.
Как я отмечал в Open Sourcery в день объявления , одним из ключевых факторов для веб-разработчиков является двойное лицензирование (GPL с открытым исходным кодом и коммерчески поддерживаемая лицензия). Это позволяет веб-разработчику загружать и создавать тестовую среду MySQL Cluster без каких-либо затрат на лицензирование (что невозможно для других поставщиков!) В качестве доказательства концепции для текущих и потенциальных клиентов.
Хотя система позиционируется как единая для крупных установок, таких как нынешние клиенты MySQL, NASA, Sabre Holdings и другие, способность предоставлять высокоуровневую кластеризацию любой фирме, которой требуется критическое время безотказной работы для торговли или экстрасетей, является существенной.
Хотя текущая загрузка предлагает только режим предварительного просмотра, MySQL негласно работает над созданием пользовательских кластеров для многих из существующих корпоративных клиентов. Представив продукт для предварительного просмотра, сообщество разработчиков ПО с открытым исходным кодом сможет просматривать, комментировать и рекомендовать функции эволюции этого нового продукта.
Две статьи теперь доступны из MySQL. Один служит вводным техническим документом; другая предоставляет технический обзор новой архитектуры MySQL Cluster.
- Вводный технический документ — http://www.practicalapplications.net/kb/mysql-cluster-whitepaper.pdf
- Обзор архитектуры — http://www.practicalapplications.net/kb/mysql_cluster_architecture.pdf
Завершение
MySQL, безусловно, зарекомендовал себя как наиболее существенная база данных для веб-разработки. Кроме того, это восходящая звезда в корпоративных средах, где размеры данных в терабайтах являются общими. Было показано, что MySQL обрабатывает 50 миллионов записей на таблицу и только улучшит его масштабируемость в выпуске 5.
Если вы еще не экспериментировали с MySQL, начните с серии руководств Кевина Янка по использованию MySQL и PHP в разработке динамических веб-сайтов.