Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
Кирилл Сухов
10 лет, с 1995 года, нас критиковали за отсутствие возможностей, присущих «настоящим» СУБД
Пятой версией мы ответили на все вопросы сразу.
Дэвид Аксмарк, один из основателей MySQL
На лето запланирован выход новой, пятой версии популярнейшего сервера баз данных – MySQL. Как правило, смена первой цифры в номере версии означает довольно радикальные перемены. Это удивительно – возможности четвёртой ветки, появившейся чуть более года назад, освоены и приняты ещё далеко не всеми разработчиками. И тем не менее уже сейчас MySQL 5 доступна для тестирования в виде бета-версии. Что действительно нового предлагают её создатели?
«Просто набор индексированных файлов!», «недо-база данных» – такие слова в адрес СУБД MySQL нередко можно найти на форумах разработчиков. И приходится признать – они имели под собой основание. MySQL при всех её достоинствах (нетребовательность к ресурсам, быстродействие, высокая производительность, на простых запросах, низкая стоимость владения) имела очевидные недостатки. Отсутствовали элементарные средства контроля целостности данных, не было механизма транзакций, да что там, не было даже вложенных запросов, а о хранимых процедурах и триггерах приходилось только мечтать.
Положение изменилось с выходом версий 4.0 и 4.1. Помимо вышеупомянутых вложенных запросов и транзакций было осуществлено ещё множество нововведений. Появилась возможность задания кодировок на уровне базы данных, таблиц и столбцов, поддержка Unicode (utf8 и ucs2), включён геометрический тип данных – GIS, введёно понятие «подготовленных выражений» (prepared statements).
С выходом MySQL 5 нас ждут ещё более радикальные изменения. Разработчики из MySQL AB установили довольно высокую планку – вплотную приблизиться к стандарту SQL:2003. Большая часть новых возможностей уже доступна в бета-версии пятой ветки, и основные из них мы с вами рассмотрим.
Хранимые процедуры
Данной функциональности, пожалуй, больше всего не хватало разработчикам. Смысл применения хранимых процедур (stored procedures) и функций – сохранять на сервере скомпилированные блоки SQL-кода. После единожды написанной, отлаженной и скомпилированной процедуры или функции, её можно вызывать из вашего приложения, передавая на сервер вместо обычного запроса, только вызов процедуры и аргументы. При этом не только снижаются затраты на трафик и повышается производительность. Главное преимущество состоит в том, что бизнес-логика приложения, возложенная на базу данных, становится прозрачней и переносимей.
Как процедуры, так и функции могут возвращать значения (в виде набора записей). Различие состоит в том, что функция вызывается из запроса, а процедура из отдельной команды.
На настоящий момент реализация хранимых процедур не поддерживает никаких внешних языков, но (по крайней мере, так заявляется) соответствует стандарту SQL:2003, позволяющему применять условные конструкции, итерации и обработку ошибок.
Пример создания хранимой процедуры в MySQL 5:
CREATE PROCEDURE p ()
LANGUAGE SQL
NOT DETERMINISTIC
SQL SECURITY DEFINER
COMMENT 'A Procedure' <--
SELECT CURRENT_DATE, RAND() FROM t
В данном случае мы создали процедуру с именем p, которая возвращает текущую дату и псевдослучайное число из таблицы t. Пример ее вызова и возвращаемого результата:
mysql> call p2()
+--------------+-----------------+
| CURRENT_DATE | RAND() |
+--------------+-----------------+
| 2005-06-27 | 0.7822275075896 |
+--------------+-----------------+
1 row in set (0.26 sec)
Query OK, 0 rows affected (0.26 sec)
Чуть более сложный пример создания и использования функции:
CREATE FUNCTION factorial (n DECIMAL(3,0))
RETURNS DECIMAL(20,0)
DETERMINISTIC