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

Содержание номера за Сентябрь 2002 

Editorial

SQL больше не стандарт?

Шелли Долл (Shelley Doll)

Если соответствие стандарту SQL — важный момент, на который обращают внимание многие компании, выбирая реляционную СУБД, то почему производители БД не должны
строго придерживаться этого стандарта?

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

Для чего нужен стандарт?

Технологические стандарты важны по ряду причин, важнейшая из которых в том, что покупатель уверен в работоспособности продукта. Не правда ли, здорово, когда вы точно знаете, что ваша СУБД и СУБД ваших партнеров по бизнесу совместимы и не подведут в нужный момент? А как вам такая роскошь, когда можно выбрать РСУБД из-за ее стабильности, скорости и эффективности использования системных ресурсов, а не потому, что она поддерживает представления и транзакции, а ее конкурент — нет?

Использование стандарта дает и другие преимущества. Например, он позволяет сторонним производителям создавать инструменты и утилиты, совместимые с любым продуктом на рынке, а не с одной-единственной платформой. Аналогично, сертификация на соответствие стандарту существенно расширяет объем ресурсов, доступных производителю. Сертификация продукта гарантирует качество его функциональности, в отличие от совместимых, но не сертифицированных решений, в которых создана лишь видимость соответствия требованиям стандарта.

Все эти преимущества смогла бы обеспечить программа сертификации, но, к сожалению, нет соответствующего административного органа, следящего за соответствием стандарту SQL.

Кто здесь главный?

Более 10 лет Национальный институт стандартов и технологий США (National Institute of Standards and Technology, NIST), находящийся в ведении министерства торговли, предлагал тестировать РСУБД на соответствие стандарту. Однако 6 лет назад NIST прекратил следить за соответствием стандарту ANSI/SQL, поскольку эту деятельность сочли неэффективной и, по большей части, игнорируемой из-за отсутствия соответствующих механизмов отчетности.

По сей день большинство производителей заявляют о совместимости своих продуктов со стандартом SQL-92, названного по году выпуска — 1992. Однако на самом деле текущим стандартом является SQL-99. За прекращением контроля со стороны NIST последовал выход спецификации стандарта, которая была слишком широкой, и, как следствие, жутко дорогой, поэтому только ведущие производители СУБД могли выпускать совместимые с ней продукты. Два указанных фактора сильнее всего стимулировали отклонения от стандарта, все дальше уводившие потребителей по пути управления данными с помощью нестандартных решений, то есть случилось именно то, от чего был призван защитить стандарт ANSI.

Возникает вопрос: можно ли продолжать называть стандартом то, что от него осталось?

Единообразие — мать заурядности?

Разные производители БД в различной степени во-площали в своих продуктах требования ANSI/SQL, чтобы повысить их конкурентоспособность и удо-влетворить желания потребителей. Однако эти продукты все же могут считаться совместимыми с ANSI/SQL. В сущности, продукт является совместимым, если он удовлетворяет трем условиям:

Для примера я приведу ниже ряд отклонений из PL/SQL — диалекта SQL, используемого в Oracle, которые были приняты большинством.

Вот расширения языка PL/SQL, помеченные флагами:

Я надеялась привести аналогичный список и для Transact-SQL, языка запросов MS SQL Server, но так и не смогла найти никакой документации, касающейся специфических вопросов совместимости с ANSI/SQL (что неудивительно). Чтобы узнать, совместима ли со стандартом функция, которую вы применяете в своей БД, включите вывод предупреждающих сообщений при помощи параметра «set fipsflagger».

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

Итак, стандарт потерял свой смысл; некому следить за соответствием, стало быть, нет истинной совместимости. Характеристика «ANSI/SQL-совместимый» теперь производит впечатление лишь на дилетантов и пригодна только для рекламы, она по-настоящему не связана ни с использованием БД, ни с разработкой приложений.

Что делать?

После того как в 1996 г. NIST закрыл программу по стандартизации управления данными, не осталось ни агентств по сертификации, ни каких-либо других механизмов, проверяющий производителей БД на совместимость со стандартом ANSI/SQL. Требования сообщества и престиж — вот все, что осталось на защите интересов платежеспособного клиента, а производители предпочитают функциональность совместимости, как будто никакого стандарта нет и в помине.

Необходимо ввести систему, следящую за соответствием стандарту прежде, чем миф о «стандарте SQL» опустится до уровня рекомендации и неполная совместимость станет стандартом de facto.

DB Design & Warehousing

Подводные камни разработки кубов OLAP

Дэниел Гэллахер (Daniel Gallagher)

При создании даже простейших кубов разработчика подстерегают подводные камни. Я обнаружил, что основная проблема — это качество исходных данных. Если они «чистые», то создать куб — пара пустяков. Вторая по величине проблема — не что иное как нерациональная конструкция кубов.

Вот список некоторых подводных камней, подстерегающих вас при создании кубов OLAP:

 

Programming

Как заменить динамический SQL статическим

Роберт Марда (Robert Marda)

В этой статье рассмотрено несколько способов управления результирующим набором статического запроса SQL при помощи переменных, которым присваивают различные значения.

Описанные здесь методики помогут избежать использования динамического SQL, в то же время обеспечивая возможность изменения результирующего набора путем присваивания значений различным переменным. Некоторые из показанных здесь запросов менее оптимизированы по сравнению с обработкой каждого значения переменной или каждого необходимого изменения при помощи отдельных запросов. Зато они помогают избежать проблем с безопасностью, с которыми вы непременно столкнетесь при использовании динамического SQL, и отказаться от создания множества хранимых процедур. Кое-что из показанного здесь, например использование оператора CASE после ключевого слова ON в конструкции JOIN, не имеет большого практического значения и приводится лишь для демонстрации гибкости статического SQL.

Большей частью своей гибкости статический SQL обязан оператору CASE. Я не собираюсь рассказывать про все способы использования этого оператора, поскольку в большинстве своем они освещены в статье Нила Бойла (Neil Boyle) «Полезные приемы с использованием оператора CASE» (см. стр. 9), а здесь будет показано, как модифицировать результирующий набор, не прибегая к динамическому SQL.

Полезные приемы с использованием оператора Case

Нил Бойл (Neil Boyle)

Оператор CASE — очень гибкий инструмент. Здесь описана лишь малая часть приемов с его использованием.

Недокументированные системные таблицы SQL Server 2000

Александр Чигрик (Alexander Chigrik)

о недокументированных системных таблицах SQL Server 2000.

Эти таблицы, большинство из которых хранится в БД master (исключением являются только системные таблицы sysfiles1, sysproperties и sysfulltextnotify, которые есть в каждой БД), используются некоторыми системными хранимыми процедурами.

Other

Аудит среды SQL Server. Часть 2: изучаем состав ролей

Рэнди Дайесс (Randy Dyess)

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

О таинственной пропаже 11 Гб данных, или не было бы счастья, да несчастье помогло

Брэд МакГехи (Brad M. McGehee)

Однажды мне пришлось провести большую часть выходных за работой, обновляя кластер под управлением SQL Server 7.0 до SQL Server 2000.

К счастью, довольно сложная операция обновления прошла без сучка и задоринки. А сложной эту операцию делала база с данными в 31 Гб для планирования и управления ресурсами предприятия, которую обслуживал кластер. Эта база использовалась круглосуточно, и незапланированный простой был попросту неприемлем. Поэтому после завершения преобразования и проверки БД я вздохнул с облегчением.

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

Или нет? Итак, в понедельник я возвращаюсь на работу, свежий и отдохнувший. Один из моих ежедневных ритуалов, которые я выполняю, как только зайду в комнату, — проверка кластера: как он работает, успешно ли функционировали задания по обслуживанию и т. д. в течение выходных. Прежде всего я проверил, успешно ли завершилось полное резервное копирование, которое выполняется еженощно. На первый взгляд, все было в порядке, но одна деталь бросилась мне в глаза: размер файла резервной копии был 20 Гб вместо обычных 31.

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

Hosted by uCoz