(Возврат на основную страницу)

Содержание номера за Январь 2005 год

Editorial

Ключи к базе данных

Джо Селко (Joe Celko)

Microsoft вовсю рекламирует применение CLR в следующей версии SQL Server 2005. Например: «Используя интеграцию с common language runtime (CLR), вы сможете программировать ваши хранимые процедуры, функции и триггеры на любом из языков, поддерживающих .Net Framework» (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sql_ovyukondev.asp).

Я выбираю COBOL, так как 78% программ во всем мире написано на этом языке. Для него нет версии CLR? Хорошо, попробуем старый PL/I­код, который все еще кое­где используется. Нечестно? Будь по­вашему: я выбираю ADA и стану работать по военным контрактам. Я хочу подчеркнуть следующее: «на любом из языков» подразумевает, что вы будете писать на одном из языков Microsoft. А что делать, если вы любите Java, а не C#?

Продолжим цитирование. «Многие задачи, которые было неудобно или затруднительно программировать на Transact­SQL, лучше реализовать средствами управляемого кода...» С этим я согласен. Но это не те задачи, которые следует программировать в рамках базы данных. Мы в свое время шутили, что SQL можно расшифровать как «Scarcely Qualifies as a Language» (Вряд ли Можно Назвать Языком), так как он не поддерживает прямые операции ввода­вывода и не способен форматировать результаты выполнения. Его математика ограничена в силу того, что он не предназначен для вычислений. Он не выполняет текстовый поиск, обработку списков, графика ему также недоступна. Единственная задача SQL — извлечение данных и манипулирование ими. Точка.

Добавляя новую и новую функциональность, вы получаете неудобоваримую кашу, которая хорошо не делает ничего. Как сказал Антуан де Сент­Экзюпери, «совершенство достигается не тогда, когда нечего добавить, а когда нечего отнять».

Меняем плохое на ужасное!

Следующая цитата от Microsoft поистине интересна: «Вы сможете лучше применить знания и опыт, ранее приобретенные при написании кода».

Вот вам и профессиональный рост в версии Microsoft. «Огг не любит лук и стрелы. Огг не будет учиться стрелять. Огг прибьет добычу камнем. Как всегда!» Неважно, что на старый опыт не всегда можно положиться в новой ситуации. Вернемся к моему неандертальцу: «Огг прибьет ящерицу камнем, Огг шарахнет саблезубого тигра булыжником и съест кошку на обед». Видите потенциальную проблему? Для неандертальца с булыжником все выглядит, как ящерица.

Вас приглашают превратить СУБД в файловую систему и по­прежнему писать код на языке третьего поколения, вместо того чтобы обратиться к декларативному программированию. Если у вас проблемы с декларативным программированием, например, при написании кода ограничений в DDL, возможно, вам стоит попросить о помощи и все­таки научиться. Подобные средства доступа к структуре БД в руках программиста, не имеющего надлежащей подготовки, — не очень хорошая идея.

Есть еще один способ использования CLR для приведения организации к коллапсу — смешение нескольких языков в рамках СУБД.

Вам приходилось сравнивать реализацию функции MOD() в разных языках программирования? Порядок предпочтений операторов? Когда поднимается флаг EOF? При достижении последней строки файла или при выходе за границы последней строки? (Кстати, вы знаете, как это делает стандартный курсор, реализованный на SQL?) Вы строите циклы с проверкой в начале или в конце? Как ваш язык обрабатывает трехзначную логику в конструкциях IF­THEN­ELSE или SWITCH?

Справедливости ради отметим, что по ссылке http://msdn.microsoft.com/sql/default.aspx?pull=/library/en­us/dnsql90/html/sqlclrguidance.asp вы сможете найти большую статью «Using CLR Integration in SQL Server 2005», в которой представлена позиция Microsoft в отношении использования CLR в рамках SQL Server 2005.

Говорите на Microsoft?

Когда языки располагались за рамками СУБД, у нас были стандарты, определенные ANSI/ISO, которые определяли интерфейсы. Но языки были вне СУБД и не вызывали срабатывания триггеров или исполнения хранимых процедур, написанных на множестве разных языков. Теперь все это в прошлом. Код представляет собой такую смесь, что вы никогда не выйдете из-под опеки Microsoft и не сможете взаимодействовать с иным источником данных.

Этот подход — повторение старых ошибок. Уничтожение послойной архитектуры — фундаментально неверный подход. Он угрожает целостности данных и возвращает нас в худшие времена файловых операций при обработке данных.

Несомненно, маленький Джонни, получивший сертификат администратора БД, считает себя профессионалом и способен пролезть внутрь СУБД, но может ли кто-то ответить мне, что за преимущества получит его фирма?

DB Design & Warehousing

Применение MDX в Analysis Services: измерение происходящих изменений

Уильям Пирсон (William Pearson)

Эта статья посвящена изучению применения реализующих концепцию времени функций MDX в аналитических продуктах, которые мы собираемся создать в контексте проектирования выражений. Мы на практике обеспечим поддержку анализа зависимости показателей от времени, такого как количественное представление изменений значений величин со временем, с помощью специально предназначенных для этого функций MDX. Более того, мы выполним упражнения по реализации этих концепций в рамках наших источников данных OLAP. Рисунки к данной статье находятся на прилагаемой к журналу дискете, а также по адресу htpp://newsletter.narod.ru.

Мы обратимся к тем аспектам, в которых MDX помогает удовлетворить нужды потребителей информации в анализе зависимости показателей от времени. Кроме того, мы углубим понимание применения MDX в Analysis Services путем:

·        встраивания концепции времени в проектируемые выражения;

·        обеспечения поддержки анализа происходящих со временем изменений при помощи функций MDX;

·        дополнительной практики создания вычисляемых членов «с нуля»;

·        отработки в вычисляемых членах сценариев «деление на ноль»;

·        генерации выражений для расчета отклонений.

Измерение происходящих изменений при помощи выражений MDX

Мы исследуем измерение времени Time, которое входит в подавляющее большинство создаваемых кубов. Потребности составления финансовых и прочих деловых отчетов практически всегда включают элемент времени. Это делается в целях отнесения результатов к определенному периоду отчетности, в целях создания базиса для сравнения результатов текущего периода с результатами только что закончившегося периода (будь то год, квартал, месяц или что угодно) или же для сравнения параллельных периодов (так в терминологии Analysis Services называется, например, текущий месяц предыдущего года). Это позволяет учесть в ведении бизнеса сезонные факторы, а также проверить эффективность новых инициатив (таких как маркетинговые кампании), внедренных в текущем квартале, по сравнению с прошлым кварталом и т. д.

 

Применение множеств в MDX­запросах

Уильям Пирсон (William Pearson)

Эту статью мы посвятим исследованию множеств MDX. Для этого нам потребуется твердый фундамент знаний основ запросов MDX, поэтому в качестве подготовительного шага мы разберем строение и действие запросов MDX. Затем мы перейдем к анализу множеств MDX.

Нам предстоит:

·        обсудить различия между выражениями MDX и операторами запросов MDX;

·        создать простейшие запросы MDX, чтобы получить представление об их компонентах и использовании;

·        изучить множества MDX, их функциональное применение и шаги, необходимые для их создания;

·        попрактиковаться в использовании функций множеств, являющихся составной частью множеств MDX.

Представляем запросы MDX

Наша первостепенная задача — дать читателям хорошее знание операторов запросов MDX и понимание их отличий от многомерных выражений. Как мы заметили в предыдущих статьях, выражение вычисляет одиночное значение. Выражения могут применяться для извлечения информации из источников данных OLAP в различных приложениях, среди которых Excel PivotTable Reports и Office PivotTable List. В отличие от них запрос используется для извлечения множества значений из куба. Запросы лежат в основе составления отчетов с помощью компонентов PivotTable, зачастую мы не видим их, когда визуально формируем отчеты, используя эти или иные инструментальные средства.

Часто мы соединяем несколько выражений и значений, которые они извлекают, чтобы получить многомерную величину для анализа. Основываясь на материале этой статьи, вы научитесь создавать все более хитроумные запросы MDX и сможете понять компоненты запросов, которые генерируются на заднем плане, когда мы создаем выражения MDX с помощью визуальных средств. Умение создавать запросы позволит нам извлекать значения для незамедлительного удовлетворения нужд потребителей информации в нашей организации, равно как и обеспечивать соответствие этих запросов меняющимся требованиям. И все это достигается точным заданием многомерных критериев.

Other

Улучшение откатов с помощью использования виртуальных машин

Джон Пол Кук (John Paul Cook)

Каждый администратор и разработчик БД уже предохранен транзакционным откатом в некоторой точке. Возможно, это был оператор DELETE без конструкции WHERE или с некорректно определенной конструкцией WHERE. Несмотря на всю эффективность оператора ROLLBACK иногда его просто недостаточно, и даже восстановление БД из резервной копии не всегда решает проблему.

Разрешение некоторых проблем может потребовать переустановки всей машины. Виртуальные машины (virtual machine) позволяют соединить полноту переинсталляции с простотой оператора ROLLBACK.

Виртуальные машины являются идеальной средой для тестирования сценариев развертываний или изменения конфигурации. Порой не имеет значения, насколько тщательно выполнялось планирование: совершенствование сценария развертывания может потребовать повторяющегося тестирования и улучшения. Если при проверке сценария что­то идет не так, изменения виртуальной машины можно просто отменить, что приведет к ее возврату в исходное состояние. Изменяйте сценарий, пробуйте снова и снова и в зависимости от результата либо сохраняйте, либо отменяйте изменения виртуальной машины.

Проверка бета­версий программного обеспечения (далее ПО), несомненно, является наиболее очевидной причиной использования виртуальных машин. На самом деле установка бета­версии ПО на компьютер — не лучшая идея, если только он не выделен специально для этой цели. А ведь многие администраторы и разработчики БД хотели бы поэкспериментировать, например, с Yukon (SQL Server 2005) и Visual Studio.NET (известную ранее как Whidbey). При установке бета­версий этих продуктов на виртуальную машину компьютер, на котором она размещена, абсолютно не подвергается воздействию бета­версий. То, что происходит на виртуальной машине, остается только на ней.

Многие компании виртуализируют (virtualizing) старые компьютеры, поддерживающие традиционные приложения; все в большей степени становится привычным видеть перемещенными на виртуальные машины серверы NT 4, на которых запущены SQL Server 6.x. При этом несколько старых физических серверов может быть перенесено на один сервер, поддерживающий несколько виртуальных машин (существуют коммерческие продукты от компаний Leostream (http://www.leostream.com/), PlateSpin (http://www.platespin.com/) и VMware (http://www.vmware.com/products/vtools/p2v_features.html), предназначенные облегчить преобразование физических машин в виртуальные).

Microsoft и VMware предлагают продукты для создания виртуальных машин. Продукт Virtual PC 2004 компании Microsoft включен в подписку ПО Web­сайта MSDN. Продукт Virtual Server компании Microsoft в настоящее время находится на стадии бета­тестирования. Бесплатную пробную версию Virtual PC 2004 можно загрузить по следующей ссылке: http://www.microsoft.com/windowsxp/virtualpc/. Официальные требования для систем, размещающих Virtual PC 2004, можно найти по адресу http://www.microsoft.com/windowsxp/virtualpc/eva­lu­ati­on/sysreqs.asp, но в них не включена такая операционная система (далее ОС), как Windows Server 2003. Однако многие люди (включая меня) получают замечательные результаты, запуская Virtual PC 2004 на ОС Windows Server 2003. Использование подобной неподдерживаемой конфигурации полностью является вашим собственным риском и не должно выполняться на производственном ПО и системах1.

 

(Возврат на основную страницу)

Hosted by uCoz