ALTER TABLE ADD DATASOURCE
Содержание раздела
Поддерживается в версиях: 7.6 / 7.5 / 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.12 / 6.11 / 6.10.
Запрос расширяет таблицу на новый для нее датасорс:
- Добавляет датасорс в список датасорсов таблицы в логической схеме данных.
- Если в таблице есть данные, копирует их в новый датасорс из наиболее оптимального источника (датасорса-донора).
Запрос доступен для таблиц:
Какие датасорсы можно добавить
Для таблицы можно добавить датасорсы следующих типов, перечисленных в таблице ниже.
| Таблица | Распределение данных таблицы | Какие датасорсы можно добавить |
|---|---|---|
| Обычная логическая таблица | Нет данных | Любые |
| Включает ADB и (или) ADP | ADB, ADP | |
| Только ADQM и (или) ADG | Никакие | |
| Партиционированная таблица | — (неприменимо, так как не содержит данные) | ADP |
| Партиция, снапшот-таблица | Нет данных или ADP | ADP |
Партиции, партиционированные таблицы и снапшот-таблицы могут размещаться только в ADP.
Как выбирается датасорс-источник
Наиболее оптимальный источник (датасорс-донор), откуда копируются данные в новый датасорс, выбирается из датасорсов:
- указанных в USING — если ключевое слово указано в запросе;
- сконфигурированных — иначе.
Наиболее оптимальным считается включенный датасорс с данными сущности и наивысшим приоритетом согласно таблице ниже. Из нескольких одинаково подходящих выбирается случайный.
| Тип добавляемого датасорса | Порядок выбора типа датасорса-источника |
|---|---|
| ADP | 1. ADP, 2. ADB. Предпочтение отдается датасорсу без retention-правил для целевой таблицы |
| ADB | 1. ADB, 2. ADP. Предпочтение отдается датасорсу без retention-правил для целевой таблицы |
Как работает запрос
Регистрация запроса
Каждое изменение таблицы записывается в журнал, который доступен с помощью запроса GET_CHANGES.
Обработка запроса
Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь.
Успешный результат
При успешном выполнении запроса система:
- обновляет список датасорсов таблицы в логической схеме данных;
- создает в новом датасорсе необходимые физические таблицы;
- [кроме партиционированных таблиц] наполняет физические таблицы данными из выбранного датасорса-источника.
Неуспешный результат
При ошибке исполнения корректного запроса система блокирует все последующие DDL-запросы в логической БД. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.
Синтаксис
ALTER TABLE [db_name.]table_name
ADD DATASOURCE [IF NOT EXISTS] 'destination_datasource'
[USING ('source_datasource'[, ... ])]
[LOGICAL_ONLY]
Параметры:
db_name-
Имя логической базы данных, которой принадлежит расширяемая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
table_name-
Имя расширяемой таблицы.
destination_datasource-
Имя датасорса, добавляемого для таблицы. Должно соответствовать конфигурации.
Ключевое слово IF NOT EXISTS
Включает проверку наличия сущности с таким именем до попытки его добавления для таблицы датасорса. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном добавлении датасорса, иначе — только при успешном добавлении датасорса.
Ключевое слово USING ('source_datasource'[, ... ])
Задает имена датасорсов-источников (доноров), из которых копируются данные для наполнения таблицы в добавляемом датасорсе. Имена должны соответствовать конфигурации.
Если ключевое слово не указано, система выбирает наиболее оптимальный датасорс в качестве источника.
Ключевое слово LOGICAL_ONLY
Позволяет добавить датасорс только на логическом уровне (в логическую схему данных), не обновляя физическую схему в хранилище данных.
Если ключевое слово не указано, датасорс добавляется на логическом и физическом уровнях.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
- Выполнение запроса недоступно в следующих случаях:
- таблица участвует в незавершенной операции записи;
- в логической БД открыта дельта;
- в логической БД установлен запрет на изменение сущностей.
- Параллельное выполнение
ALTER TABLE ADD DATASOURCEи ERASE DELTA может привести к неконсистентности данных. - Можно добавить датасорсы:
- любого типа — для обычной логической таблицы без данных;
- ADB, ADP — для обычной логической таблицы с данными в другом датасорсе ADB/ADP;
- ADP — для партиционированной таблицы, партиции и снапшот-таблицы.
- Информационная схема обновляется асинхронно, поэтому датасорс таблицы может не сразу добавиться в информационную схему.
Примеры
Добавление датасорса без ключевых слов
Добавление датасорса для логической таблицы указанной логической БД:
ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'
Добавление датасорса для снапшот-таблицы логической БД, выбранной по умолчанию:
USE marketing;
ALTER TABLE sales_snapshot
ADD DATASOURCE 'adp3';
Добавление датасорса с ключевым словом USING
ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'
USING ('adp')
Добавление датасорса с ключевым словом IF NOT EXISTS
ALTER TABLE marketing.clients
ADD DATASOURCE IF NOT EXISTS 'adp2'
Добавление датасорса с ключевым словом LOGICAL_ONLY
ALTER TABLE marketing_new.sales
ADD DATASOURCE 'adb2'
LOGICAL_ONLY