Статья только в электронной версии журнала

Статья только в электронной версии журнала

Поддержка транзакций и полнотекстовой поиск расширяют область применения популярной СУБД

Широко применяемая СУБД с открытым исходным кодом, MySQL фирмы MySQL AB, сделала крупный шаг на пути в корпоративную среду благодаря появлению поддержки транзакций.

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

MySQL по-прежнему является хорошим выбором для корпоративных Web-дизайнеров и Web-разработчиков, которым необходимо надежное средство хранения информации каталогов, пользовательских имен, паролей и HTML-кода. eWeek уже пять месяцев использует ее для хранения данных Web-сервера проекта eXcellence Awards.

В конце января, спустя два года после появления предыдущей версии 3.22, была выпущена MySQL версии 3.23 (полный номер - 3.23.33, это первый стабильный выпуск серии 3.23). Обновленная СУБД бесплатна, действует в Windows- и Unix-системах и доступна для копирования с сайта www.mysql.com.

Самым крупным усовершенствованием новой версии является поддержка транзакций. Другие СУБД с открытым исходным кодом, например PostgreSQL или InterBase корпорации Borland Software, уже давно поддерживают эту функцию (к тому же они куда основательнее в поддержке языка SQL).

Графическое средство администрирования MySQL предоставляет функции управления сервером

Используя появившийся в MySQL новый тип таблиц Berkeley Database, мы смогли создать транзакционно-безопасную таблицу БД, позволившую начать транзакцию, внести изменения в данные, а потом осуществить откат в исходное состояние, аннулировавший сделанные изменения.

В MySQL действует блокировка на уровне страниц, что может вызвать проблемы с производительностью при локальном “перегреве” базы данных (он возникает, если в каком-то участке БД производится множество операций вставки и удаления). Однако уже в очередной промежуточной версии MySQL должна появиться, как планируется, блокировка на уровне строк.

ODBC-драйвер (Open Database Connectivity) MySQL все еще не поддерживает API для ведения транзакций (хотя такую возможность имеет драйвер Java Database Connectivity), поэтому при тестировании мы адресовали SQL-команды непосредственно к MySQL.

Кроме того, мы обнаружили, что на обоих наших тестовых серверах под управлением Red Hat Linux 7.0 фирмы Red Hat поддержка транзакций не действовала, хотя на сервере Red Hat Linux 6.2 все было в порядке.

Чего пока не хватает

MySQL по-прежнему отстает от PostgreSQL и InterBase в поддержке языка SQL, поскольку не поддерживает такие важные SQL-функции, как внешние ключи, разрезы данных и подоператоры SELECT (внутри SQL-условия WHERE). Все эти вещи очень полезны, и без них трудно генерировать отчеты или выполнять задания по анализу данных.

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

Вместе с тем версия 3.23 пополнилась функцией полнотекстового индексирования и поддержкой виртуальных таблиц, что очень полезно для поиска и обработки данных в традиционной сфере применения MySQL, т. е. в Интернете. Новые тип индексов FULLTEXT и SQL-оператор MATCH упрощают поиск в текстовых колонках наиболее подходящих строк, содержащих заданный набор ключевых слов.

К сожалению, функция поиска не поддерживает выделение основы слова (это дает возможность находить нужные слова при отличии их грамматической формы от поискового термина), что умеют делать более мощные СУБД, выпускаемые IBM, Microsoft и Oracle. Поисковая система также не позволяет использовать логические операторы OR или NOT, к которым уже привыкли многие пользователи Web. По планам компании, эти операторы появятся в версии 4.0.

Полнотекстовое индексирование применимо только к “родному” типу MySQL-таблиц - MyISAM, который не поддерживает транзакции.

С помощью нового типа таблиц HEAP мы смогли создать в памяти быстродействующие виртуальные таблицы, пригодные для кэширования имеющихся данных или использования в качестве временных таблиц. При выключении сервера их содержимое автоматически стерлось.

Хорошо, что MySQL поддерживает одностороннее (оригинал - копия) дублирование данных, что полезно для создания резервных серверов. Серверы-дублеры можно использовать только в запросах на чтение, однако разработчики MySQL создают для будущих версий механизм автоматического распределения запросов по группе подчиненных серверов для балансировки нагрузки.

С техническим директором PC Week Labs по западу США Тимоти Диком можно связаться по адресу: timothy_dyck@ziffdavis.com.        

Резюме ДЛЯ РУКОВОДИТЕЛЕЙ

MySQL 3.23.33

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

КРАТКОСРОЧНЫЙ ПРОГНОЗ. Встроенные функции дублирования данных значительно упрощают создание готовой резервной системы на случай отказа сервера.

ДОЛГОСРОЧНЫЙ ПРОГНОЗ. Появление поддержки транзакций позволит компаниям использовать MySQL уже не только для менее ответственных задач, но и для более важных транзакционных приложений.         

+ Компактный и быстрый механизм СУБД; поддержка транзакций с блокировкой на уровне страниц; полнотекстовое индексирование; одностороннее дублирование; открытый код; бесплатный продукт.

- Отсутствие ряда стандартных функций SQL, например внешних ключей, подоператоров SELECT и разрезов данных; отсутствие хранимых процедур, триггеров и серверных курсоров; полнотекстовое индексирование не поддерживает выделение основы словоформ и поиск с логическими операторами.

MySQL AB, Стокгольм, Швеция, info@mysql.com.

Версия для печати