Программирование >>  Реализация баз данных 

1 ... 102 103 104 [ 105 ] 106 107 108 ... 162


представление должно создаваться с параметров INDING, который привязывает представление к схеме базовых

пользовательские функции, на которые сс1лается представление, также необходимо

создавать с параметром SCHEMABINDING;

в ссылках ницы и пользовательские ии и следует указывать ихдвухкомпо-нентные имена понентные имена не допускаются;

все функции, на которые ссылаются выражения лении, должны бытьдегер-минированными. Чтобы выяснить, является ли пользовательская книи детерминированной, используют свойства IsDeterministic функции OBJECTPROPERTY;

если конструкция GROUP BY отсутствует, то в списке выбора представления не должно быть выражений с агрегированием;

если конструкция GROUP BY задана, то в список выбора представления необходимо включить выражение а в определении представления недопустимы конструкции HAVING, CUBE или ROLLUP;

если при расчете вычисляемого столбца получается значение с плавающей точкой или

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

быть ключом индекса в индексированном представлении или таблице.

Кроме того, оператор SELECT в представлении не может содержать следующие синтаксические элементы языка символ звездочки (*), задающий столбцы в списке выбора;

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

производную таблицу;

функции, работающие с наборами строк; оператор UNION;

подзапросы;

внешние соединения или самосоединения; конструкцию ТОР;

конструкцию ORDER BY;

ключевое слово DISTINCT;

COUNTf*) (hoCOUNT B1G(*) допускается);

агрегирующие<1)ункции AVG, МАХ, МIN, STDEV, STDEVP, VAR и VARP;

функцию SUMщyюcя на выражение, результатом которого может быть пустое значение;

полнотекстовые предикаты CONTAINS и FREETEXT;

конструкции COMPUTE и COMPUTE BY

Создание индекса

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

Кроме того, к оператору CREATE INDEX предъявляются следующие требования:

пользователь, исполняющий оператор CREATE INDEX, должен быть владельцем представления;

параметр NUMERICROUNDABORT необходимо отключить(ОРР);

в представление! должно быть столбцов типа text м или image (даже если оператор CREATE INDEX на них не ссылается);



* если в операторе SELECT (яющем представление, задана конструкция GROUP BY, то ключ уникального кластерного индекса может сс1латься только на столбцы, заданные в этой конструкции;

при исполнении оператора CREATE INDEX следует установитЮN) следующие параметры:

ANSLNULLS:

ANSLPADDJNG;

ANSIWARNINGS;

ARITHABORTi

CONCAT NULL YlELDS NlfLL: . oiOTPn inrNTIFirPS.

Более подробно индексы обсуждаются в главе Создание секционированных представлений

Секционированное представление набор горизонтальных фрагментов

из по одному или нескольким серверам, что позво-

ляет представить их в виде единой таблицы. В SQL Server 2000 заданы два вида секционированных представлений; локальные и распределенные. В локальном секционированном представлении все базовые представления расположены в одном и том же эк-

земпляре SQL Server. В секционированном представлении по крайней

мере одна из таблиц-участников находится на другом (удаленном) сервере. Кроме того, в SQL Server 2000 определены секционированные представления и представ-

ления, которые являются неизменяемыми копиями базовых таблиц.

Распределенные секционированные представления позволяют создать объединение серверов БД. Объединение - это группа серверов, которые совместно выполняют обработку

разделяя нагрузку, но их администрирование выполняется независи-

мо. Объединение серверов БД секционирования данных - это

позволяющий расширять набор в соответствии с вычислительными потребно-

стями крупных, многоуровневых Web-узлов.

Прежде чем представление, необходимо разделить таб-

лицу на горизонтальные фрагменты. таблица заменяется несколькими меньши-

ми по размеру таблицтника и. Число столбцов частника равно числу столбцов исхолно1[ таблицы; каждый се столбец имеет те же самые атрибуты (тип данных,

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

создании распределенного секционированного представления каждая таблица-участник размещается на отдельном сервере рый называется сервер-участник. Более понятно, когда имена БД-участников одинаковы на каждом из серверов-участников, хотя это и не обязательно (например, имена мотут быть такими: ServerI.CustomerDB, Server2.Customer DB и Server3.CustomerDBj.

Таблицы-участники следует сконструировать таким образом, чтобы в каждой из них размещался горизонтальный фрагмент исходной таблицы, определяемый интервалом значений ключа. Интервалы вычисляют-! на основе значений столбцов секционирования. Интервал значений каждой таблицы-участника реализуется с помощью ограничения CHECK, определенного для столбца Шраиаиия. Эти интервалы не должны перекрываться. нельзя определить одну таблицу с интервалом значений от 1 до 200 000, а другую - с интервалом о50 00о 300 000, поскольку в этом случае неясно, какой из таблиц принадлежат значения из интервала 150 000-200 ООО.

Предположим, что при секционировании таблицы Customer получилось три таблицы. Ограничение CHECK для них определяется так:



-- На сервере Serverl: CREATE TABLE Customer 33 (CustonrrTn INTEGER PRIMARY KEY

CHECK (CustomerlD BETWEEN AND 32999),

. .. -- Дополнительные определения столбцов)

-- На сервере 3erver2; CREATE TABLE ciistomer J6 (CustomerlD INTEGER PRIMARY KEY

CHECK (CustomerlD BETWEEN 33000 AND 65999),

... -- Дополнительные определения столбцов)

-- На сервере Servers: CREATE TABLE ;iJStoiiier 9n (CustomerlD INTEGER PRIMARY KEY

CHECK (CustomerlD BETWEEN 66000 ANO 99999),

. - Дополнительные определения столбцов)

После таблиц-участников следует определить на каждом сервере

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

Распределенное секционированное представление создается дающем порядке:

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

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

3. на каждом из серверов-участников создается распределенное секционированное представление. Для доступа к данным со связанных серверов-участников и объединения строк удаленных и локальной ков представления должны использовать распределенные операторы SELECT.

Чтобы создать распределенные секционированные представления для предыдущего примера, выполните следующие действия:

1. добавьте определение связанного сервера под названием со сведениями о соеди-

нении с сервером и определение связанного севера под названием для

доступа к серверу

создайте следующее распределенное секционированное представление:

CREATE VIEW Customers AS SELECT *

EROM CompanyDatabase.Table0wner.Customer3 33



1 ... 102 103 104 [ 105 ] 106 107 108 ... 162

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика