Рецензии на книгу
"Функции SQL. Справочник программиста"
12.03.2007
Oracle Magazine RE (портал)
http://www.oracle.com/global/ru/oramag/march2007/book_williams_sql_fun.html
Предуведомление: Сообщаем нашим читателям, что одновременно с "Функциями SQL. Справочник программиста" Эйри Джоунса, Райана К. Стивенза, Рональда Р. Плю, Роберта Ф. Гарретта и Алекса Кригеля в издательстве Издательский дом "Вильямс" вышла книга-учебник нового поколения "Введение в Oracle 10g" Джеймса Перри и Джеральда Поста, наша рецензия на которую публикуется в этом же выпуске журнала. Пожалуйста, обратите внимание на рецензию и, естественно, на книгу, порекомендовав ее знакомым, которым хочется и/или необходимо начинать изучение технологий Oracle.
Функцией (function) называют законченный фрагмент программного кода, к выполнению которого может перейти программа по окончании выполнения другого фрагмента либо в результате ветвления при наступлении определенных условий. По окончании работы функции программа возвращается к тому месту в программном коде, которое следует непосредственно за точкой ветвления. В общем случае функция принимает один или несколько аргументов и возвращает единственное значение.
"Функции SQL" стр.49 В этой книге, как в одном флаконе из известного рекламного ролика, оказались все встроенные SQL-функции, реализуемые в стандарте ANSI SQL (глава 5), и шести реляционных СУРБД - Oracle (глава 6), IBM DB2 (глава 7), MicroSoft SQL Server (глава 8), Sybase (глава 9), MySQL (глава 10) и PostgreSQL (глава 11). И поскольку из песни (книги, флакона,..) слова не выкинешь, придется в рецензии убежденных и закоренелых oracle-листов, которыми являемся мы с Виктором, обсуждать и упоминать непосредственных конкурентов СУБД Oracle. Но даже авторы этого справочника при всем их обязательном профессиональном беспристрастии констатируют, что: "Сегодня Oracle занимает лидирующую позицию на рынке коммерческих СУРБД." Поэтому мы будем говорить о функциях Oracle, упоминаемых в книге, а пользователи других реляционных СУРБД могут про-себя подставить другое имя, и в большинстве случаев все будет правильно.
Рецензия на справочник - довольно странная и не очень благодарная работа. Любой рецензент не может гарантировать, что проверил все, знает когда и умеет как - применять в данном случае любые SQL-функции. Перечислить же их или хотя бы классы рассмотренных функций - тоже не самое благодарное дело, поскольку высококвалифицированный читатель предпочтет обратиться к файлу полного содержания, опубликованного на сайте издательства, нежели получить эти же сведения из рецензии. И, тем не менее, укажем наиболее важные, с нашей точки зрения, разделы этой книги, которые выходят за рамки начального курса по SQL, к которым можно отнести агрегатные, символьные, числовые, даты и времени, скалярные и прочие сравнительно простые функции. С нашей точки зрения, продвинутым материалом является изложение о: определяемых пользователем функции в стандарте ANSI SQL (глава 12), содержащая общетеоретическую основу построения и использования подобных функций. Эта глава - общая для всех реляционных СУБД, поэтому она содержит всего шесть неполных страничек; определяемых пользователем функции в Oracle (глава 13, примерно 30 стр.), в которой рассматриваются уже не самые тривиальные вопросы, как-то: "Оптимизация кода в Oracle 10g", "Получение прав доступа", "Создание определяемых пользователем функций: рекурсивных, агрегатных, конвейерных табличных функций", "Отладка, изменение и удаление определяемых пользователем функций и обработка ошибок в функциях PL/SQL ", "Пакеты DBMS_OUTPUT и DBMS_DEBUG", "Использование функций PL/SQL в транзакциях" - то есть, вся глава от начала и до конца; расширении возможностей запросов с помощью функций и представлений (глава 25), где рассматриваются вопросы "Расширения возможностей запросов с помощью представлений" и "Использования SQL-функций в представлениях"; влияния SQL-функций на производительность запросов и базы данных (глава 26), где рассматриваются "Транзакции и производительность запросов", вопросы архитектуры транзакционных и аналитических баз данных, оценивается влияние на производительность запросов, базы данных и на другие ресурсы, а также "Негативное влияние функций на производительность", проводится сравнение встроенных и определяемых пользователем функций, ищется компромисс между безопасностью и производительностью.
Эти вопросы уже как бы выходят за пределы простого справочника по программным функциям и немного затрагивают область методологии построения больших взаимоувязанных, интегрированных и интегрируемых программных систем пользовательских приложений. Что ж, взгляд с определенной высоты на поле общего действия очень часто бывает весьма полезен и никогда не бывает избыточным.
Представляя (http://www.williamspublishing.com/Books/5-8459-1113-3.html) эту книгу на своем сайте, издательский дом "Вильямс" не поскупился сопроводить ее анонс выкладкой нескольких pdf-файлов: Сведения об авторах этой книги; "Содержание", которое значительно полнее и информационно богаче, чем "Оглавление", поскольку содержит перечень подглавок, а это - именно названия функций, которые рассмотрены в книге. Более шикарной справочной информации на таком уровне придумать невозможно; "Введение", которое содержит описание структуры этой книги: "Знакомство с функциями" (главы 1 - 4); "Встроенные функции в разных СУРБД" (главы 5 - 11); "Создание определяемых пользователем функций в разных СУРБД" (главы 12 - 18); "Практическое применение функций" (главы 19 - 27); а также "Рекомендации по использованию книги" В качестве справочника и для изучения SQL.
"Функции: концепция и структура" - полный текст второй главы книги с такими обще познавательными подглавками, как " Создание, компиляция и выполнение SQL-функций", "Передача параметров с помощью значения либо ссылки", "Область видимости функции", "Повышенная безопасность" и др.
Знакомство с этими материалами еще больше должно убедить потенциальных пользователей этой книги, что перед нами прекрасный справочник для разработчиков приложений, работающих с самыми популярными реляционными СУРБД. И такой справочник, по нашему мнению, обязательно должен стать общим разделяемым ресурсом любого коллектива разработчиков приложений для названных выше систем баз данных.
Виктор Абрамов,
научный редактор "Oracle Magazine/Русское Издание"
Анатолий Бачин,
главный редактор “Oracle Magazine/Русское Издание”