ALTER TABLE ADD RETENTION
Содержание раздела
Поддерживается в версиях: 7.0 / 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 ('source_datasource', retention_period[, 'archive_datasource'])
Параметры:
db_name
-
Имя логической базы данных, в которой находится логическая таблица. Опционально, если выбрана логическая БД, используемая по умолчанию.
table_name
-
Имя логической таблицы, для которой задается retention-правило.
source_datasource
-
Имя датасорса-источника, из которого перемещаются или удаляются неактуальные версии данных. Имя должно быть указано в соответствии с конфигурацией.
retention_period
-
Срок хранения неактуальных версий данных (в секундах) в датасорсе-источнике.
Если значение равно 0, в датасорсе-источнике хранятся только актуальные версии данных, а все неактуальные версии данных перемещаются в хранилище холодных данных или удаляются при каждой проверке retention-правила.
archive_datasource
-
Имя датасорса-приемника, куда перемещаются неактуальные версии данных по истечении срока их хранения. Имя должно быть указано в соответствии с конфигурацией.
Если значение не указано, неактуальные версии данных по истечении срока хранения удаляются, а не перемещаются в хранилище холодных данных.
Варианты ответа
В ответе возвращается:
- пустой объект 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)