Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for YDB
  • Начало работы
  • Управление доступом
  • Метрики Monitoring
  • Аудитные логи Audit Trails
    • Введение в работу с YDB через Terraform
    • Получение данных для аутентификации
    • Установка и настройка Terraform и провайдера для подключения к YDB
    • Создание конфигурационных файлов и подключение к YDB
    • Создание и изменение параметров бессерверной базы данных
    • Создание и изменение параметров выделенной базы данных
    • Создание строковых и колоночных таблиц в базе данных
    • Создание документных таблиц в базе данных
    • Создание потока изменений таблицы
    • Создание вторичных индексов строковых таблиц
    • Управление конфигурацией топиков YDB
  • Вопросы и ответы
  • Публичные материалы
  • Обучающие курсы

В этой статье:

  • Описание ресурса yandex_ydb_table
  • Партиционирование строковых таблиц
  • Описание значений полей блока partitioning_settings
  • Партиционирование колоночных таблиц
  1. Работа с YDB через Terraform
  2. Создание строковых и колоночных таблиц в базе данных

Создание строковых и колоночных таблиц в базе данных

Статья создана
Yandex Cloud
Обновлена 29 сентября 2025 г.
  • Описание ресурса yandex_ydb_table
  • Партиционирование строковых таблиц
    • Описание значений полей блока partitioning_settings
  • Партиционирование колоночных таблиц

Таблица в концепциях Terraform — это тоже ресурс, поэтому таблицы баз данных описываются отдельными блоками (resource "yandex_ydb_table") с указанием внутренней ссылки на созданную ранее базу данных.

Описание ресурса yandex_ydb_tableОписание ресурса yandex_ydb_table

Пример создания тестовой таблицы из 4 колонок в уже существующей базе данных:

Строковая таблица
Колоночная таблица
resource "yandex_ydb_table" "test_table" {
  path = "test_dir/test_table_4_col"
  connection_string = yandex_ydb_database_serverless.database1.ydb_full_endpoint

  column {
    name = "a"
    type = "Utf8"
    not_null = true
  }
  column {
    name = "b"
    type = "Uint32"
    not_null = true
  }
  column {
    name = "c"
    type = "Int32"
    not_null = false
  }
  column {
    name = "d"
    type = "Timestamp"
  }

  primary_key = ["a","b"]

}
resource "yandex_ydb_table" "test_table" {
  path              = "test_dir/test_table_4_col"
  connection_string = yandex_ydb_database_serverless.database1.ydb_full_endpoint

  column {
    name     = "a"
    type     = "Utf8"
    not_null = true
  }
  column {
    name     = "b"
    type     = "Uint32"
    not_null = true
  }
  column {
    name     = "c"
    type     = "Int32"
    not_null = false
  }
  column {
    name = "d"
    type = "Timestamp"
  }

  primary_key = ["a", "b"]

  store = "column"

  partitioning_settings {
    partition_by = ["b", "a"]
  }
}

Свойства полей ресурса yandex_ydb_table:

  1. path — путь в базе данных, где будет создана таблица. Название таблицы указывается без закрывающего слеша /. Если директория, где следует создать таблицу отсутствует — она будет создана;
  2. connection_string — путь для подключения к базе данных. Используется совместно с параметром ydb_full_endpoint, который содержит полный путь до базы: grpcs://ydb.serverless.yandexcloud.net:2135/?database=/kz1/b1gv7kfcttio********/etn66ecf1qbt********. Для краткости и простоты записи можно использовать ссылку на ресурс "yandex_ydb_database_serverless" с указанием идентификатора и параметра ydb_full_endpoint. Например, yandex_ydb_database_serverless.database1.ydb_full_endpoint ;
  3. primary_key — первичный ключ таблицы. Может быть составным.

Полный перечень полей ресурса yandex_ydb_table:

Название поля Тип Значение Описание
path string required Путь до таблицы
connection_string string required Строка соединения
column array[column] required Тип данных column
family array[family] optional Группа колонок
store string optional Тип таблицы. Для создания колоночной таблицы укажите значение column. Для создания строковой таблицы, не указывайте поле store
primary_key array[string] required Первичный ключ таблицы
ttl ttl optional Настройки TTL
attributes map[string]string optional Атрибуты таблицы
partitioning_settings partitioning_settings optional Настройки партиционирования
key_bloom_filter boolean optional Использование фильтра Блума для первичного ключа
read_replicas_settings string optional Настройки репликаций для чтения

Внутри блока yandex_ydb_table заключены вложенные блоки column, которые описывают индивидуальные свойства колонок, такие как:

Название поля Тип Описание
name string
required
Имя колонки
type string
required
Тип данных колонки. Используются YQL типы данных
family string
optional
Группа колонки
not_null boolean
optional
По умолчанию: false
Колонка не может быть NULL

Пример полного описания колонки:

column {
  name     = "column_name"
  type     = "Utf8"
  family   = "some_family"
  not_null = true
}

Важно

На данный момент нельзя удалить колонку при помощи Terraform, ее можно только добавить. Для удаления колонки необходимо сначала удалить колонку из базы напрямую (например, при помощи YQL запроса), после чего удалить колонку из конфигурационного файла.

Колонки могут быть объединены в группы (семейства/family), для того чтобы задать им общие поля, такие как:

  • DATA — тип устройства хранения для данных колонок этой группы (допустимые значения: ssd, rot (от rotation — вращение шпинделя HDD));
  • COMPRESSION — кодек сжатия данных (допустимые значения: off, lz4).

Для объединения колонок в группу используется блок family на одном уровне с блоком column:

family {
  name        = "my_family"
  data        = "ssd"
  compression = "lz4"
}

Описание полей блока family:

Название поля Тип Описание
name string
required
Имя группы колонок
data string
required
Тип устройства хранения для данных колонок этой группы
compression string
required
Кодек сжатия данных

Пример группировки двух столбцов в одну группу может выглядеть так:

resource "yandex_ydb_table" "test_table" {
    path = "test_dir/test_table"
    connection_string = yandex_ydb_database_serverless.database1.ydb_full_endpoint
    column {
        name = "a"
        type = "Uint16"
        family = "test_family_group"
        not_null = true
    }
    column {
        name = "b"
        type = "Uint32"
        family = "test_family_group"
        not_null = true
    }
    family {
      name  = "test_family_group"
      data  = "ssd"
      compression = "lz4"
    }
}

YDB позволяет создавать специальный вид колонок — TTL-колонки, значения которой используются для определения времени жизни строк. TTL автоматически удаляет из таблицы строки, когда проходит указанное количество секунд от времени, записанного в TTL-колонку. Задать можно не более одной TTL-колонки. TTL-колонка может быть одного из следующих типов: Date, Datetime, Timestamp, Uint32, Uint64, DyNumber.

Задается TTL-колонка следующим блоком:

ttl {
  column_name     = "d"
  expire_interval = "PT1H" # 1 час
  unit            = "seconds" # для числовых типов колонок (non ISO 8601)
}

Описание значений полей ttl:

Название поля Тип Описание
column_name string
required
Имя колонки для TTL
expire_interval string
required
Интервал в формате ISO 8601
unit string
optional
Задается, если колонка с TTL имеет числовой тип. Поддерживаемые значения: seconds, milliseconds, microseconds, nanoseconds

Партиционирование строковых таблицПартиционирование строковых таблиц

Партиционирование — это разделение данных таблицы на части для улучшения производительности запросов и оптимизации управления данными. В Terraform для партиционирования строковых таблиц YDB используется параметр partitioning_settings ресурса yandex_ydb_table.

Описание значений полей блока partitioning_settingsОписание значений полей блока partitioning_settings

Пример:

resource "yandex_ydb_table" "test_table" {
  path = "/test_dir/test_table_4_col"
  connection_string = yandex_ydb_database_serverless.database1.ydb_full_endpoint

  partitioning_settings {
    auto_partitioning_min_partitions_count = 5
    auto_partitioning_max_partitions_count = 8
    auto_partitioning_partition_size_mb    = 256
    auto_partitioning_by_load              = true
    ...
  }
 ...
}

Полное описание полей partitioning_settings для строковых таблиц:

Название поля Тип Описание
uniform_partitions number
optional
Количество заранее аллоцированных партиций
partition_at_keys string
optional
Партицирование по первичному ключу
auto_partitioning_min_partitions_count number
optional
Минимально возможное количество партиций при автопартицировании
auto_partitioning_max_partitions_count number
optional
Максимально возможное количество партиций при автопартицировании
auto_partitioning_partition_size_mb number
optional
Задание значения автопартицирования по размеру в мегабайтах
auto_partitioning_by_size_enabled bool
optional
Включение автопартиционирования по размеру (bool), по умолчанию — включено (true)
auto_partitioning_by_load bool
optional
Включение автопартицирования по нагрузке (bool), по умолчанию — выключено (false)

Партиционирование колоночных таблицПартиционирование колоночных таблиц

Партиционирование — это разделение данных таблицы на части для улучшения производительности запросов и оптимизации управления данными. В отличие от строковых таблиц YDB, колоночные таблицы партицируют данные не по первичным ключам, а по специально выделенным ключам — ключам партицирования. Ключи партицирования являются подмножеством первичных ключей таблицы.

В Terraform для партиционирования колоночных таблиц YDB используются параметры в разделе partitioning_settings ресурса yandex_ydb_table.

Пример:

resource "yandex_ydb_table" "test_table" {
    path              = "test_dir/test_table_4_col"
    connection_string = yandex_ydb_database_serverless.database1.ydb_full_endpoint

    ...

    partitioning_settings {
        partition_by = ["b", "a"]
    }
}

Описание полей partitioning_settings для колоночных таблиц:

Название поля Тип Описание
partition_by string
optional
Партиционирование по указанным ключам партиционирования
auto_partitioning_min_partitions_count number
optional
Количество партиций для хранения данных. Значение по умолчанию: 64

Была ли статья полезна?

Предыдущая
Создание и изменение параметров выделенной базы данных
Следующая
Создание документных таблиц в базе данных
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»