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

 

Содержание номера за Июнь 2009 год

SQL Server

Июнь 2009
№ 6 (102)

 Editorial

Что если бы еду лицензировали, как ПО? 

Programming

Джефф Моден

Таблица «чисел» или «счетная» таблица: что это такое и как она заменяет цикл 

Скрытый RBAR: треугольные соединения 

Майкл Коулс

Значения NULL: четыре правила 

DB Design & Warehousing

Сюзан Конвей

ГИС и SQL Server 2008: создание карт с вашими данными. Часть 1 

Other

Младен Прайдич

Проведение централизованного асинхронного аудита между
экземплярами и серверами с использованием компонента Service Broker

 

Что если бы еду лицензировали, как ПО?

Смогли бы вы прокормить семью, если бы еду лицензировали, как ПО?

В этот раз мы собираемся просто пошутить.

Вчера мы пошли с приятелем в ресторан и тут вдруг посетила мысль: а что было бы, если бы еду лицензировали, как ПО?

Вы подходите к кассе с корзиной покупок и должны отвечать на вопросы вроде таких:

•    Сколько людей будут есть эту пачку гречки?

•    Собираетесь ли вы готовить их в одной кастрюле или разложите на несколько?

•    Не собираетесь ли вы одновременно получить лицензию на масло и лук, так как они лицензируются отдельно?

•    Мне нужен список проживающих в вашей квартире, так как курица поставляется только по персональной лицензии.

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

 

Таблица «чисел» или «счетная» таблица: что это такое и как она заменяет цикл

Джефф Моден (Jeff Moden)

Введение

На самом деле я начал писать статью о том, как передать в хранимые процедуры в качестве параметров 1­, 2­ и 3­мерные «массивы». Внезапно до меня дошло, что очень многие до сих пор не знают о том, что такое таблицы «чисел» («numbers» table) или «счетные» таблицы («tally» table), не говоря уже о принципах их функционирования.

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

Итак, учитывая сказанное, мы собираемся изучить, что собой представляет счетная таблица, и как она функционирует в качестве замены цикла. Мы начнем с простого примера и выстроим классический пример с «разбором» параметров. Дополнительно будет предоставлена информация о том, как нормализовать всю таблицу за счет использования столбца в формате CSV (значения, разделяемые запятой): без каких­либо курсоров, без циклов, без функций и без проблем с производительностью.

Скрытый RBAR: треугольные соединения

Джефф Моден (Jeff Moden)

Введение

Если вы активно посещаете форумы на SQLServer­Cent­ral.com, вы, возможно, видели, что я использую термин «RBAR». «RBAR» произносится как «ри­бар» («ree­bar») и является «неологизмом имени Модена» для обозначения «Row­By­Agonizing­Row» (букв. «мучительно строка за строкой»). Я применяю термин «RBAR» для всего, что не основано на множествах. Некоторым другим он приглянулся, поскольку его легко запомнить как разновидность «смерти от SQL», «Death By SQL».

Многие считают, что программирование «над множествами» означает одну из двух вещей:

•    Все в нем делается в один запрос либо…

•    В нем просто нет курсора или цикла while.

И оба эти пункта являются очень неправильным пониманием того, что же такое программирование, основанное на множествах.

Что такое программирование «над множествами»? Оно, очевидно, предполагает «избежание циклов», но не настолько просто. Для меня это также означает, что вы, если можете, затрагиваете каждую строку данных только один раз и минимальное количество раз, если не можете. Знаю… звучит, как цикл. И цикл, в действительности, затрагивает сроку лишь единожды… но цикл работает в мучениях построчно, не принимает во внимание врожденные способности оптимизатора, и производит операции над отдельно взятой строкой, а не над набором строк. Явные циклы — это не программирование на основе множеств, и они лишь подавляют производительность.

Значения NULL: четыре правила

Майкл Коулс (Michael Coles)

Введение

Как мы знаем,
Существуют известные известные.
Есть вещи, о которых мы знаем, что их знаем.
Мы также знаем,
Что есть известные неизвестные.
Иначе говоря,
Мы знаем, что существуют некоторые вещи,
Которые мы не знаем.

Дональд Рамсфелд

В недавней статье Джеймса Трэвиса (James Travis) исследовались способы обращения со значениями NULL в SQL Server (http://www.sqlservercentral.com/articles/Basic+Querying/understandingthedifferencebet­weenisnull/871/). Я обнаружил в этой статье кое­какие неточности; некоторые из них явились результатом ошибок в электронной документации по SQL Server, другие коренились в применении типовой двоичной (двузначной) логики языков программирования третьего и четвертого поколений к троичной (трехзначной) логике, используемой ANSI SQL.

Данная статья была написана с целью объяснить троичную логику ANSI SQL и исправить обнаруженные неточности.

ГИС и SQL Server 2008: создание карт с вашими данными. Часть 1

Сюзан Конвей (Susan Conway)

Когда фирма Microsoft в версии SQL Server 2008 представила геоинформационные системы (ГИС), она тем самым позволила создание целого класса новых приложений, которые до этого невозможно было создавать средствами SQL Server. Итак, что же именно можно делать с ГИС-данными? Мы спросили об этом у эксперта!

Людей в их повседневной жизни окружают технологии, основанные на использовании геоинформационных систем (Geographic Information Systems, GIS): начиная с просмотра изображений в приложении Google Earth и заканчивая уточнением маршрута в автомобильных поездках с помощью системы глобального позиционирования (Global Positioning System, GPS) — ГИС реального времени.

В каждом из этих примеров при выборе пользователем того или иного местоположения неявно выполняется запрос пространственных данных. Где находится ближайшая ко мне заправочная станция? Где расположен ближайший город? Способность выполнить запрос пространственных данных и наглядно отобразить эти данные на экране — вот суть и мощь ГИС.

Версия SQL Server 2008 принесла с собой два новых типа данных, которые позволяют хранить пространственные данные в таблицах реляционных баз данных, запрашивать и графически отображать их. Эти два новых типа данных открывают дверь, ведущую к разработке приложений сервера SQL Server с возможностями ГИС.

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

Я рассмотрю, какие возможности предлагает версия SQL Server 2008 для обработки пространственных данных, а также расскажу о специфических особенностях их конкретного применения и о том, с чего можно начать создание карты с вашими данными, используя версию SQL 2008; кроме того, будут предоставлены сведения о доступных источниках ГИС­данных и программном обеспечении независимых поставщиков.

Проведение централизованного асинхронного аудита между экземплярами и серверами с использованием компонента Service Broker

Младен Прайдич (Mladen Prajdi)

DOWNLOAD

 

Эта статья объясняет, каким образом проводить асинхронный аудит данных с применением нескольких серверов или экземпляров SQL Server. Это означает, что один сервер хранит проверенные данные со всех других серверов. Это классический сценарий многие-к-одному (один-ко-многим). Обратите внимание, что данный прием также работает, если вам нужно отправлять данные с главного сервера на многочисленные дочерние сервера.

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

Hosted by uCoz