Вытеснение данных¶
«Вытеснение данных» подразумевает удаление данных из БД, либо перемещение данных из оперативной памяти на диск с целью охлаждения данных.
Вытеснение данных из TCS выполняется автоматически по мере заполнения хранилища, либо по истечении времени хранения данных.
Вытеснение данных по количеству записей¶
При добавлении новых записей сверх лимита одновременно хранимых записей наиболее старые записи удаляются.
Примечание
Вытеснение по количеству записей для охлаждения данных в текущей версии TCS не поддерживается.
Вытеснение данных по количеству записей организовано потаблично: для каждой таблицы может быть определен свой лимит количества одновременно хранимых записей.
Лимит задается с помощью параметра MAX_ROWS и указания максимального количества записей в таблице:
при создании таблицы, например:
CREATE TABLE t MAX_ROWS 10000при изменении таблицы, например:
ALTER TABLE t MAX_ROWS 100000
В результате, самые старые записи, которые выходят за указанный лимит, будут удалены из таблицы.
По умолчанию, лимит для таблиц не установлен: без явного указания лимита MAX_ROWS при создании таблицы вытеснение данных из нее не производится.
При необходимости можно в дальнейшем отключить вытеснение, задав значение лимита равное 0, например:
ALTER TABLE t MAX_ROWS 0.
Вытеснение записей из таблиц производится только перед операциями вставки, чтобы не превысить установленный лимит.
Вытеснение данных по времени¶
При обнаружении данных, которые хранятся сверх указанного срока, все устаревшие данные удаляются или перемещаются на внешний том. Вытеснение (удаление или перемещение) происходит по расписанию, в фоновом режиме.
Вытеснение данных по времени организовано потаблично: для каждой таблицы могут быть определены свои условия.
Настройка вытеснения для новых таблиц¶
Чтобы настроить вытеснение по времени для новой таблицы, нужно сделать вызов CREATE TABLE следующего вида:
CREATE TABLE table_name (
id u64,
created_at ts
)
[TTL expr
DELETE | INTO VOLUME 'volume_name'
SCHEDULE 'cron_expr'
]
где:
(Обязательно) Столбец типа
ts(например,created_at ts). По этому столбцу TCS создает вторичный индекс для быстрого поиска данных, подлежащих вытеснению.(Обязательно)
TTL expr– выражение, определяющее момент устаревания данных (например,created_at + INTERVAL 7 DAYS). Выражениеexprдолжно возвращать значение типаtsи имеет следующий формат:<timestamp_column> + INTERVAL <time_interval> <interval_type>
где:
(Обязательно)
<timestamp_column>– указанный выше столбец типаtsс временными метками;(Oбязательно)
INTERVAL– длительность хранения относительно временной метки, состоящая из целочисленного значения<time_interval>и типа интервала<interval_type>(например, DAYS, MONTHS, YEARS, HOURS).
(Обязательно) Действие по истечении TTL:
DELETE– удаление данныхINTO VOLUME 'volume'– перемещение данных на указанный внешний том
(Обязательно)
SCHEDULE– частота проверки и вытеснения данных. Задается с использованием синтаксиса планировщикаcrontab, например:'@hourly'(каждый час)'30 * * * *'(раз в 30 минут)
Настройка ежедневной проверки с помощью сокращений
'@daily'и@midnightне поддерживается. Вместо этого можно использовать выражение(0 0 * * *)(ежедневная проверка в полночь).
Пример 1: создание таблицы с вытеснением (удалением) данных старше 7 дней, с ежедневной проверкой.
CREATE TABLE my_table (
id u64,
created_at ts
)
TTL created_at + INTERVAL 7 DAYS
DELETE
SCHEDULE '(0 0 * * *)'
Пример 2: создание таблицы с вытеснением (охлаждением) данных старше 7 дней на внешний том, с ежедневной проверкой.
CREATE TABLE my_table (
id u64,
created_at ts
)
TTL created_at + INTERVAL 7 DAYS
INTO VOLUME 'my_volume'
SCHEDULE '(0 0 * * *)'
Настройка вытеснения для существующих таблиц¶
В текущей версии TCS данная возможность не поддерживается.