Дополнительные параметры (WITH)

Для таблицы может быть указан ряд специфичных для YDB параметров. При создании таблицы такие параметры перечисляются в блоке WITH:

CREATE TABLE table_name (...)
WITH (
    key1 = value1,
    key2 = value2,
    ...
)

Здесь key — это название параметра, а value — его значение.

Перечень допустимых имен параметров и их значений приведен на странице описания таблицы YDB.

Например, такой запрос создаст строковую таблицу с включенным автоматическим партиционированием по размеру партиции и предпочитаемым размером каждой партиции 512 мегабайт:

CREATE TABLE my_table (
    id Uint64,
    title Utf8,
    PRIMARY KEY (id)
)
WITH (
    AUTO_PARTITIONING_BY_SIZE = ENABLED,
    AUTO_PARTITIONING_PARTITION_SIZE_MB = 512
);

Колоночная таблица создаётся путём указанием параметра STORE = COLUMN в блоке WITH:

 CREATE TABLE table_name (
    a Uint64 NOT NULL,
    b Timestamp NOT NULL,
    c Float,
    PRIMARY KEY (a, b)
  )
  PARTITION BY HASH(b)
  WITH (
    STORE = COLUMN
  );

Свойства и возможности колоночных таблиц описаны в статье Таблица, а специфика их создания через YQL описана на странице CREATE TABLE.

Time to Live (TTL) и вытеснение данных во внешнее хранилище

В блоке WITH можно задать TTL (Time to Live) — время жизни строки для строковых и колоночных таблиц. TTL автоматически удаляет или вытесняет во внешнее хранилище строки, когда проходит указанное количество секунд от времени, записанного в TTL-колонку. TTL можно задать при создании строковой и колоночной таблицы или добавить позже командой ALTER TABLE только в строковую таблицу.

Краткая форма значения TTL для задания времени удаления строк:

Interval("<literal>") ON column [AS <unit>]

Общий вид значения TTL:

Interval("<literal1>") action1, Interval("<literal1>") action2, ..., Interval("<literal1>") actionN ON column [AS <unit>]
  • action — действие, которое выполняется при срабатывании TTL-выражения. Допустимые значения:
  • <unit> — единица измерения, указывается только для колонок с числовым типом:
    • SECONDS;
    • MILLISECONDS;
    • MICROSECONDS;
    • NANOSECONDS.

Пример создания строковой и колоночной таблицы с TTL:

CREATE TABLE my_table (
    id Uint64,
    title Utf8,
    expire_at Timestamp,
    PRIMARY KEY (id)
)
WITH (
    TTL = Interval("PT0S") ON expire_at
);
CREATE TABLE table_name (
    a Uint64 NOT NULL,
    b Timestamp NOT NULL,
    c Float,
    PRIMARY KEY (a, b)
)
PARTITION BY HASH(b)
WITH (
    STORE = COLUMN,
    TTL = Interval("PT0S") ON b
);

Пример создания колоночной таблицы с вытеснением строк во внешнее хранилище:

Внимание

Поддерживается только для колоночных таблиц. Поддержка функциональности для строковых таблиц находится в разработке.

CREATE TABLE table_name (
    a Uint64 NOT NULL,
    b Timestamp NOT NULL,
    c Float,
    PRIMARY KEY (a, b)
)
PARTITION BY HASH(b)
WITH (
    STORE = COLUMN,
    TTL =
        Interval("PT1D") TO EXTERNAL DATA SOURCE `/Root/s3`,
        Interval("P2D") DELETE
    ON b
);
Предыдущая
Следующая