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-ю партициями. С полным списком опций партиционирования колоночных таблиц можно ознакомиться в разделе Партицирование колоночной таблицы статьи Таблица.

При создании строковых таблиц возможно задать:

Для колоночных таблиц при их создании возможно задать только дополнительные параметры.

Следующая