ALTER TABLE ADD RETENTION
Содержание раздела
Поддерживается в версиях: 6.12 / 6.11 / 6.10 / 6.9 / 6.8 / 6.7 / 6.6 / 6.5 / 6.4 / 6.3.
Запрос добавляет retention-правило для логической таблицы.
Изменение текущих retention-правил недоступно, но можно удалить текущее правило и добавить новое. Обратите внимание, что при удалении retention-правила также удаляются все холодные данные логической таблицы в соответствующем датасорсе.
Добавить retention-правила можно также при создании логической таблицы.
Текущие retention-правила таблицы можно посмотреть с помощью GET_ENTITY_DDL.
Поддерживаемые датасорсы
Retention-правила поддерживаются для датасорсов типа ADB и ADP.
Каждый датасорс, где размещаются данные логической таблицы, может иметь свое retention-правило. Остужение данных согласно retention-правилам возможно в пределах одного датасорса (например, adp1
→ adp1
) или между разными датасорсами одного типа (например, adp1
→ adp2
).
Результат выполнения
При успешном выполнении запроса система сохраняет информацию о логической таблице и датасорсе-источнике, задействованных в retention-правиле, для последующего применения retention-правил. Также, если правило предназначено для остужения данных, в датасорсе-приемнике, указанном в правиле, создается физическая таблица для хранения холодных данных логической таблицы.
Как работает запрос
Запрос попадает в очередь операций и обрабатывается в порядке его поступления в очередь. Каждое добавление retention-правила записывается в журнал, который можно посмотреть с помощью запроса GET_CHANGES.
Если при исполнении корректного запроса возникла ошибка, система блокирует все последующие DDL-запросы в логической базе данных. О снятии такой блокировки см. в разделе Снятие блокировки DDL-запросов.
Синтаксис
ALTER TABLE [db_name.]table_name
ADD RETENTION (origin_datasource_alias, retention_period[, archive_datasource_alias])
Параметры:
db_name
-
Имя логической базы данных, в которой находится логическая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
table_name
-
Имя логической таблицы, для которой задается retention-правило.
origin_datasource_alias
-
Имя датасорса-источника, из которого перемещаются или удаляются неактуальные версии данных. Имя указывается в одинарных кавычках (например,
'adb'
). retention_period
-
Срок хранения неактуальных версий данных (в секундах) в датасорсе
origin_datasource_alias
.Если значение равно 0, в датасорсе
origin_datasource_alias
хранятся только актуальные версии данных, а все неактуальные версии данных перемещаются в хранилище холодных данных или удаляются при каждой проверке retention-правила. archive_datasource_alias
-
Имя датасорса-приемника, куда перемещаются неактуальные версии данных по истечении срока их хранения. Имя указывается в одинарных кавычках (например,
'adb2'
).Если значение не указано, неактуальные версии данных по истечении срока хранения удаляются, а не перемещаются в хранилище холодных данных.
Варианты ответа
В ответе возвращается:
- пустой объект ResultSet при успешном выполнении запроса;
- исключение при неуспешном выполнении запроса.
Ограничения
Ограничения выполнения
- Запрос доступен для СУБД ADB и ADP.
- Выполнение запроса к логической таблице недоступно, если она участвует в незавершенной операции записи.
- Выполнение запроса недоступно, если установлен запрет на изменение сущностей.
Ограничения партиционирования
- Retention-правила недоступны для партиционированных таблиц.
Другие ограничения
- Датасорс-источник и датасорс-приемник в retention-правиле не могут быть разных типов.
Примеры
Retention-правило для остужения данных
Запрос на добавление retention-правила, согласно которому неактуальные версии данных будут храниться в adp1
не меньше недели, а затем будут перемещаться в adp_archive
:
ALTER TABLE marketing.sales
ADD RETENTION ('adp1', 604800, 'adp_archive')
Retention-правило для удаления данных
Запрос на добавление retention-правила, согласно которому неактуальные версии данных будут храниться в adp2
не меньше месяца, а затем будут удаляться:
ALTER TABLE marketing.clients_adp2
ADD RETENTION ('adp2', 2678400)