CREATE TABLE
Синтаксис CREATE TABLE
Вызов CREATE TABLE
создает таблицу с указанной схемой данных и ключевыми колонками (PRIMARY KEY
). Позволяет определить вторичные индексы на создаваемой таблице.
CREATE [TEMP | TEMPORARY] TABLE table_name (
column1 type1,
column2 type2 NOT NULL,
...
columnN typeN,
INDEX index1_name GLOBAL ON ( column ),
INDEX index2_name GLOBAL ON ( column1, column2, ... ),
PRIMARY KEY ( column, ... ),
FAMILY column_family ( family_options, ... )
)
WITH ( key = value, ... )
YDB поддерживает два типа таблиц:
Тип таблицы при создании задается параметром STORE
в блоке WITH
, где ROW
означает строковую таблицу, а COLUMN
— колоночную:
CREATE <table_name> (
columns
...
)
WITH (
STORE = COLUMN -- Default value ROW
)
По умолчанию, если параметр STORE
не указан, создается строковая таблица.
Примеры создания таблиц
CREATE TABLE <table_name> (
a Uint64,
b Uint64,
c Float,
PRIMARY KEY (a, b)
);
Для ключевых колонок допускаются только примитивные и серийные типы данных, для неключевых колонок допускаются только примитивные.
Без дополнительных модификаторов колонка приобретает опциональный тип, и допускает запись NULL
в качестве значений. Для получения неопционального типа необходимо использовать NOT NULL
.
Обязательно указание PRIMARY KEY
с непустым списком колонок. Эти колонки становятся частью ключа в порядке перечисления.
Пример создания строковой таблицы с использованием опций партиционирования:
CREATE TABLE <table_name> (
a Uint64,
b Uint64,
c Float,
PRIMARY KEY (a, b)
)
WITH (
AUTO_PARTITIONING_BY_SIZE = ENABLED,
AUTO_PARTITIONING_PARTITION_SIZE_MB = 512
);
Такой код создаст строковую таблицу с включенным автоматическим партиционированием по размеру партиции (AUTO_PARTITIONING_BY_SIZE
) и предпочитаемым размером каждой партиции (AUTO_PARTITIONING_PARTITION_SIZE_MB
) в 512 мегабайт. Полный список опций партиционирования строковой таблицы находится в разделе Партиционирование строковой таблицы статьи Таблица.
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
);
При создании колоночных таблиц обязательно нужно использовать конструкцию PARTITION BY HASH
с указанием первичных ключей, которые имеют высококардинальный тип данных (например, Timestamp
), так как колоночные таблицы партиционируют данные не по первичным ключам, а по специально выделенным ключам — ключам партицирования. Подробно про ключи партиционирования колоночных таблиц изложено в статье Выбор ключей для максимальной производительности колоночных таблиц.
В настоящий момент колоночные таблицы не поддерживают автоматического репартицирования, поэтому важно указывать правильное число партиций при создании таблицы с помощью параметра AUTO_PARTITIONING_MIN_PARTITIONS_COUNT
:
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,
AUTO_PARTITIONING_MIN_PARTITIONS_COUNT = 10
);
Такой код создаст колоночную таблицу с 10-ю партициями. С полным списком опций партиционирования колоночных таблиц можно ознакомиться в разделе Партицирование колоночной таблицы статьи Таблица.
При создании строковых таблиц возможно задать:
Для колоночных таблиц при их создании возможно задать только дополнительные параметры.