Вытеснение данных | Tcs

Версия:

1.x
Руководство пользователя Вытеснение данных

Вытеснение данных

«Вытеснение данных» подразумевает удаление данных из БД, либо перемещение данных из оперативной памяти на диск с целью охлаждения данных.

Вытеснение данных из 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 данная возможность не поддерживается.

Нашли ответ на свой вопрос?
Обратная связь