Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Tarantool 3.7

Дата выпуска: 2026-04-12

Релизы на GitHub: 3.7.0

В релизе Tarantool 3.7 добавлены следующие основные функциональные возможности и улучшения для редакций Community и Enterprise:

  • Community Edition (CE)
  • Множество мелких улучшений и исправлений ошибок.
  • Enterprise Edition (EE)
  • Координатор аварийного переключения: безопасная конфигурация SSL.
  • MemCS: словарное кодирование и сжатие lz4.

[EE] Координатор аварийного переключения: безопасная конфигурация SSL

Координатор аварийного переключения Tarantool теперь безопасно поддерживает соединения, зашифрованные по TLS, и аутентификацию mTLS. SSL-сертификаты и удостоверяющий центр можно настроить через выделенный раздел конфигурации аварийного переключения.

Ранее координатор использовал SSL-параметры, взятые из URI экземпляров. В случае SSL + CA (mTLS) такой подход мог потребовать доступа хоста координатора к приватным ключам и сертификатам экземпляров, к которым он подключался.

Теперь раздел конфигурации failover.iproto.ssl является источником клиентских SSL-параметров для исходящих соединений net.box, инициируемых координатором. Параметры внедряются в параметры URI, передаваемые в net.box.connect(), только для URI с params.transport: ssl и не затрагивают соединения без SSL.

Пример:

failover:  mode: stateful  iproto:    listen:      uri: '127.0.0.1:3302'        params:          transport: ssl    ssl:      ca_file: './certs/rootCA.pem'      ssl_cert: './certs/coordinator.crt'      ssl_key: './certs/coordinator.key'      # Optional:      # ssl_ciphers: 'ECDHE-RSA-AES256-GCM-SHA384:...'      # ssl_password: 'secret'      # ssl_password_file: './certs/key_passwords.txt'

[EE] MemCS: словарное кодирование и сжатие lz4

В этом релизе добавлены два крупных улучшения по использованию памяти в движке MemCS:

  • Словарное кодирование для строковых колонок (формат словарного кодирования Arrow).
  • Сжатие на уровне колонок с помощью кодека lz4.

При типичных нагрузках совместное использование этих возможностей обеспечивает 8–13-кратное снижение объёма занимаемой памяти по сравнению с хранением без сжатия.

Словарное кодирование для строковых колонок

MemCS может хранить строковые значения в словарно-кодированном виде: уникальные строки хранятся в общем словаре, а в строках таблицы сохраняются целочисленные идентификаторы, ссылающиеся на записи словаря. Это наиболее эффективно для колонок с большим количеством повторяющихся значений (например, статусы, категории, типы событий).

Словарное кодирование включается с помощью опции layout:

local s = box.schema.create_space('test', {    engine = 'memcs', format = format, field_count = field_count,})local pk = s:create_index('pk', {layout = 'dict'})

Ограничения и особенности

  • Словарное кодирование доступно только для строковых колонок, не входящих в ключи. Для остальных колонок опция layout = 'dict' игнорируется без уведомления.

  • Идентификаторы в словаре хранятся как uint16 (2 байта на строку).

  • Максимальное количество уникальных значений в колонке со словарным кодированием –- UINT16_MAX (65536). При переполнении словаря вставка нового уникального значения завершается с ошибкой.

  • Приблизительное потребление памяти для такой колонки составляет 2 * space_size + dict_size байт.

  • Память словаря включается в статистику space:bsize().

  • Реализация соответствует формату словарного кодирования Apache Arrow, так как Arrow является стандартным форматом обмена данными для MemCS.

    В настоящее время опцию layout можно задать только при создании спейса. Изменить её для существующего спейса нельзя.

При чтении через ArrowStream MemCS всегда возвращает словарно-кодированные колонки в формате словарного кодирования Arrow:

  • словарь возвращается как string-view
  • индексы имеют тип uint16

Дополнительные замечания:

  • Если новые уникальные значения не добавляются, все пакеты записей используют один и тот же словарь.
  • Словари возвращаются по ссылке (без копирования), поэтому экспорт ArrowArray имеет низкие накладные расходы.
  • Словари только увеличиваются (значения не удаляются), поэтому после обновления словаря он остаётся совместимым с пакетами, созданными с предыдущей версией словаря.

Сжатие колонок LZ4

В MemCS добавлена поддержка сжатия на уровне колонок с помощью lz4.

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

Сжатие настраивается для каждой колонки в формате спейса с помощью атрибута compression и может быть включено только при создании спейса:

local format = {    {'c1', 'uint64'},    {'c2', 'string', is_nullable = true, compression = 'lz4'},    {'c3', 'int32', compression = {type = 'lz4', acceleration = 1000}},}box.schema.create_space('test', {    engine = 'memcs', field_count = #format, format = format,})

Параметры сжатия:

  • Алгоритм: lz4
  • acceleration –- специфичный параметр конфигурации LZ4:
  • допустимый диапазон: 1...65537
  • рекомендуемые значения: 10...1000
  • более высокие значения повышают скорость сжатия и распаковки, но снижают коэффициент сжатия

Ограничения

  • Сжатию могут подвергаться только неколонки, не входящие в индексы.

  • Сжатие поддерживается для колонок любого типа, однако «внешние» строковые значения (строки длиннее 12 символов) в настоящее время сжатию не подвергаются.

    В настоящее время атрибут compression можно задать только при создании спейса. Изменить его для существующего спейса нельзя.