Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу ИСиТ.docx
Скачиваний:
6
Добавлен:
07.02.2024
Размер:
1.07 Mб
Скачать

Создание таблиц-элементов

Таблицы-элементы конструируются так, чтобы в каждой таблице хранился горизонтальный фрагмент исходной таблицы, основанный на интервале значений ключа. Интервалы основаны на значениях данных в столбце секционирования. Диапазон значений в каждой таблице-элементе определяется проверочным ограничением на столбце секционирования, и интервалы не пересекаются. Например, нельзя, чтобы в одной таблице был интервал от 1 до 200000, а в другой – от 15000 до 300000, иначе будет неясно, какая таблица содержит значения от 15000 до 200000.

Например, таблица Customer расположенная на Server1 секционируется на три таблицы Customers_33, Customers_66 и Customers_99, расположенные на Server1, Server2 и Server3 соответственно. Для этих таблиц будет задано следующее проверочное ограничение:

-- На Server1:

CREATE TABLE Customers_33

(CustomerID INTEGER PRIMARY KEY

CHECK (CustomerID BETWEEN 1 AND 32999),

... -- прочие колонки)

-- На Server2:

CREATE TABLE Customers_66

(CustomerID INTEGER PRIMARY KEY

CHECK (CustomerID BETWEEN 33000 AND 65999),

... -- прочие колонки)

-- На Server3:

CREATE TABLE Customers_99

(CustomerID INTEGER PRIMARY KEY

CHECK (CustomerID BETWEEN 66000 AND 99999),

... -- прочие колонки)

Определение распределенных секционированных представлений

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

Для предыдущего примера на Server1 определяется распределенное секционированное представление Customers. Это позволяет запросам, которые ранее использовали таблицу Customers, продолжать работать без каких-либо изменений. Распределенное секционированное представление поможет распределить нагрузку между тремя серверами при доступе к данным представления.

-- для Server1

CREATE VIEW Customers AS

SELECT * FROM CompanyDatabase.TableOwner.Customers_33

UNION ALL

SELECT * FROM Server2.CompanyDatabase.TableOwner.Customers_66

UNION ALL

SELECT * FROM Server3.CompanyDatabase.TableOwner.Customers_99

Правила таблиц

Таблицы-элементы определяются в предложении FROM в каждой инструкции SELECT в определении представления. Каждая таблица-элемент должна соответствовать следующим правилам:

  • На таблицы-элементы нельзя ссылаться в представлении больше одного раза.

  • У таблиц-элементов не может быть индексов, созданных на любых вычисляемых столбцах.

  • Все ограничения первичного ключа таблиц-элементов должны быть на одинаковом количестве столбцов.

  • У таблиц-элементов должна быть одна и та же настройка ANSI_PADDING.

Правила столбцов

Столбцы определяются в списке выборки каждой инструкции SELECT в определении представления. Каждый столбец должен соответствовать следующим правилам.

  • Все столбцы в каждой таблице-элементе должны быть включены в список выборки. Допустимый синтаксис: SELECT * FROM <таблица-элемент>.

  • На столбцы нельзя ссылаться в списке выборки больше одного раза.

  • В списке выборки у столбцов должен быть одинаковый порядок следования.

  • Тип столбцов в списке выборки каждой инструкции SELECT должен совпадать. Это относится к типам данных, точности, масштабу и параметрам сортировки. Например, следующее определение представления будет ошибочным, поскольку первый столбец в обоих выражениях SELECT имеет разный тип данных:

CREATE VIEW NonUpdatable

AS

SELECT IntPrimaryKey, IntPartNmbr

FROM FirstTable

UNION ALL

SELECT NumericPrimaryKey, IntPartNmbr

FROM SecondTable

Соседние файлы в предмете Информатика