ALTER TABLE ADD DATASOURCE
Содержание раздела
Поддерживается в версиях: 6.12 / 6.11 / 6.10.
Запрос расширяет логическую таблицу на указанный датасорс — размещает данные таблицы в этом датасорсе и обновляет список датасорсов таблицы в логической схеме данных. Запрос доступен для обычных логических таблиц и партиций.
Данные для наполнения таблицы в новом датасорсе выбираются из наиболее оптимального датасорса-источника среди указанных в запросе или доступных в окружении.
Поддерживаемые СУБД
Запрос позволяет расширить логическую таблицу на следующие СУБД (типы датасорсов):
- любые СУБД — если в таблице нет данных;
- ADB и (или) ADP — если в таблице есть данные и они размещены хотя бы в одном датасорсе типа ADB или ADP. При этом возможны любые комбинации этих типов датасорсов в качестве источников и приемников данных: ADB → ADB, ADB → ADP, ADP → ADP, ADP → ADB.
Расширение таблицы с данными на новый датасорс невозможно, если ее данные размещены только в ADQM и (или) ADG.
Как работает запрос
Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь. Каждое изменение таблицы записывается в журнал, который можно посмотреть с помощью запроса GET_CHANGES.
Если при исполнении корректного запроса возникла ошибка, система блокирует все последующие DDL-запросы в логической базе данных. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.
Порядок выбора датасорса-источника
Перед добавлением данных таблицы в новый датасорс система выбирает наиболее оптимальный датасорс-источник данных. Источник выбирается:
- из датасорсов, указанных в команде, — если в команде указано ключевое слово USING со списком датасорсов-источников;
- из датасорсов, заданных в конфигурации, — иначе.
Наиболее оптимальным считается активный датасорс, который содержит данные логической таблицы и имеет тип с наибольшим приоритетом из перечисленных в таблице ниже. Если для таблицы найдено несколько подходящих датасорсов одного типа, система выбирает один из них случайным образом.
Тип добавляемого датасорса | Порядок выбора типа датасорса-источника |
---|---|
ADP | 1. ADP без retention-правил для целевой таблицы, 2. ADB без retention-правил для целевой таблицы, 3. ADP с retention-правилами для целевой таблицы, 4. ADB с retention-правилами для целевой таблицы |
ADB | 1. ADB без retention-правил для целевой таблицы, 2. ADP без retention-правил для целевой таблицы, 3. ADB с retention-правилами для целевой таблицы, 4. ADP с retention-правилами для целевой таблицы |
Результат выполнения
При успешном выполнении запроса система обновляет список датасорсов таблицы в логической схеме данных, создает в целевом датасорсе необходимые физические таблицы и наполняет их данными в полном соответствии с датасорсом-источником.
Синтаксис
ALTER TABLE [db_name.]table_name
ADD DATASOURCE [IF NOT EXISTS] new_datasource
[USING (source_datasource_list)]
[LOGICAL_ONLY]
Параметры:
db_name
-
Имя логической базы данных, которой принадлежит расширяемая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию
table_name
-
Имя расширяемой логической таблицы. Возможные значения:
- имя обычной логической таблицы,
- имя партиции.
new_datasource
-
Имя датасорса, добавляемого для таблицы. Имя указывается в соответствии с конфигурацией, в одинарных кавычках (например,
'adp2'
).
Ключевое слово IF NOT EXISTS
Ключевое слово IF NOT EXISTS
включает проверку наличия датасорса до попытки его добавления для таблицы. Если ключевое слово указано в запросе, успешный ответ возвращается при наличии или успешном добавлении датасорса, иначе — только при успешном добавлении датасорса.
Ключевое слово USING
Ключевое слово USING
задает имена датасорсов-источников source_datasource_list
, из которых выбираются данные для наполнения таблицы в добавляемом датасорсе new_datasource
. Имена указываются в соответствии с конфигурацией и перечисляются через запятую, каждое имя указывается в одинарных кавычках — например, 'adp', 'adp2'
.
Если ключевое слово не указано, система выбирает наиболее оптимальный датасорс в качестве источника данных.
Ключевое слово LOGICAL_ONLY
Ключевое слово LOGICAL_ONLY
позволяет добавить для таблицы датасорс только в логической схеме данных, без обновления физической схемы данных.
Если ключевое слово не указано, датасорс добавляется на логическом и физическом уровнях.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
- Выполнение запроса недоступно, если таблица участвует в незавершенной операции записи или в логической БД есть открытая дельта, или в логической БД установлен запрет на изменение сущностей.
- Добавление датасорса для таблицы доступно, если в таблице нет данных или данные таблицы размещены хотя бы в одном датасорсе типа ADB или ADP и добавляемый датасорс также имеет тип ADB или ADP.
- Информационная схема обновляется асинхронно, поэтому датасорс таблицы может не сразу добавиться в информационную схему.
Примеры
Добавление датасорса без ключевых слов
Добавление датасорса для логической таблицы указанной логической БД:
ALTER TABLE marketing.clients
ADD DATASOURCE 'adp2'
Добавление датасорса для логической таблицы логической БД, выбранной по умолчанию:
USE marketing_new;
ALTER TABLE sales
ADD DATASOURCE 'adb';
Добавление датасорса с ключевым словом 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