Дополнительные параметры (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-выражения. Допустимые значения:DELETE
— удалить строку;TO EXTERNAL DATA SOURCE <path>
— вытеснить строку во внешнее хранилище, заданное внешним источником данных по пути<path>
.
<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
);