TDB Documentation portal logo
Помощь
Обновлена 30 июля 2026 г. в 16:49

Tarantool DataBase 3.2

Дата релиза: 30.07.26.

Tarantool DataBase 3.2 (Tarantool DB или TDB) — это мультипротокольная NoSQL CУБД, разработанная на основе Tarantool Enterprise Edition версии 3.x.

В релизе Tarantool DataBase 3.2 добавлен ряд новых возможностей и обновлений. В документе приведен краткий обзор наиболее заметных изменений и новой функциональности Tarantool DataBase, а также добавлена информация по процедуре обновления разных версий Tarantool DB 3.x.

Ключевые изменения:

Подробная информация о продукте приведена в документации Tarantool DataBase.

Обновление Tarantool DB

При обновлении Tarantool DB не рекомендуется пропускать версии TDB (например, обновляться с 3.0.0 сразу на 3.1.1). В TDB при обновлении без простоя проверяются только последовательное обновление с версии на версию, а также совместимость компонентов разных версий. Посмотреть актуальные версии можно в разделе Журнал изменений. Несмотря на общую рекомендацию, при обновлении с версии 3.0.0 рекомендуется обновлять TDB сразу до версии 3.2.0, пропустив версии 3.1.0 и 3.1.1.

Процедура обновления продукта отличается для разных версий 3.x:

  • Чтобы обновить Tarantool DataBase 3.0.0 или 3.1.1 до версии 3.2.0, выполните штатное обновление продукта до версии 3.2.0. При обновлении с простоем после завершения обновления необходимо вызвать команду tt replicaset upgrade для обновления системных спейсов.

    При обновлении Tarantool DB до версии 3.2.0 веб-интерфейс Tarantool Cluster Manager (TCM) обновляется до версии 1.10.0. В TCM 1.10.0 изменён формат хранения подписи объектов TCM. Если TCM 1.10.0 запускается на уже существующем хранилище конфигурации (etcd или хранилище на основе Tarantool), например при обновлении с TCM 1.9.1 или более ранней версии, после завершения сценария обновления TDB до 3.2.0 необходимо однократно выполнить переподписание данных (resign-data) в хранилище новым ключом. Без этого шага TCM не запустится из-за ошибки верификации подписи. При установке TCM 1.10.0 с нуля на новом хранилище выполнять resign-data не требуется.

    Подробное описание процедуры для TCM 1.10.0 приведена в разделе Обновление до версии 3.2.0 и выше.

  • Если же вы обновляетесь без простоя до версий 3.1.0 или 3.1.1, используйте инструкцию по обновлению из раздела Обновление до версий 3.1.x. Процедура такого обновления отличается от стандартного обновления без простоя.

Для понижения версии Tarantool DataBase с 3.2.0 до 3.1.0 нужно сначала вызвать метод box.schema.downgrade('<номер_версии>'), а затем выполнить понижение версии до версии 3.1.0. Инструкция приведена в разделе Понижение версии схемы данных через box.schema.downgrade().

Охлаждение и нагрев данных в vinyl

Tarantool DB поддерживает два движка базы данных: in-memory движок memtx и дисковый движок vinyl. В отличие от memtx, который хранит данные в оперативной памяти, vinyl хранит данные на диске, используя LSM-деревья. Движок vinyl предназначен для работы с объёмами данных, превышающими доступный объём оперативной памяти, и позволяет использовать механизм охлаждения и нагрева данных. Механизм автоматически управляет размещением данных: часто запрашиваемые (горячие) данные хранятся в кэше в оперативной памяти и читаются быстро, а редко запрашиваемые (холодные) — размещаются на диске.

В Tarantool DataBase 3.2.0 добавлен раздел документации с информацией о принципах работы механизма нагрева и охлаждения и рекомендациями по его настройке. В разделе приведена базовая информация об устройстве движка vinyl: принцип работы LSM-дерева, порядок чтения данных (LRU-кэш → уровень L0 → диск), описание механизма нагрева и охлаждения через кэш, а также описание сжатия данных.

Кроме того, раздел содержит методические рекомендации по настройке vinyl:

  • рекомендованные параметры для типовых сценариев работы — OLTP, витрины данных, архивация данных через модуль cooler;
  • методику оценки допустимого объёма данных на один экземпляр хранилища;
  • рекомендации по масштабированию при превышении порогов.

Также в GitHub-репозиторий tarantool/tarantooldb-examples добавлен новый запускаемый пример Нагрев и охлаждение данных: использование кэша кортежей vinyl, который демонстрирует работу кэша кортежей vinyl и его влияние на производительность чтения. Как и все готовые примеры в Tarantool DB, этот пример сделан на основе Docker Compose, что позволяет быстро запустить и попробовать ту или иную функциональность.

В примере рассмотрены следующие сценарии:

  • чтение горячих данных из уровня L0 в памяти и холодных данных с диска после выгрузки;
  • кэширование горячего набора данных и оценка эффективности кэша (cache hit ratio);
  • случайные чтения при объёме данных, превышающем размер кэша.

Улучшения в модуле cooler

Модуль cooler позволяет задавать архивацию данных в миграциях, а также отвечает за DDL-операции по созданию спейса vinyl и просмотр состояния и статистики архивации. В Tarantool DataBase 3.2.0 модуль дополнен следующими возможностями:

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

Определение местоположения данных по ключу

Добавлен новый метод cooler.locate(), который позволяет определить по первичному ключу, в каком движке базы данных (memtx или vinyl) сейчас находятся данные. Метод поддерживает составные первичные ключи, а также поиск в шардированных спейсах (с обязательным указанием bucket_id).

Пример использования:

local cooler = require('cooler')-- Данные в памятиlocal res = cooler.locate('sessions', 100500)-- Результат: 'memtx'-- Данные на дискеlocal res = cooler.locate('sessions', {100501, 'web'})-- Результат: 'vinyl'

Подробная информация о методе приведена в справочнике по API.

Агрегированные метрики спейсов

В Tarantool DataBase 3.2.0 добавлены новые агрегированные метрики, которые отображают общий объём и количество данных в разрезе движков memtx и vinyl для спейсов, участвующих в архивации. Метрики рассчитываются с разбивкой по ключу space:

  • cooler_memtx_bytes_total — общий размер данных спейса в движке memtx в байтах;
  • cooler_vinyl_bytes_total — общий размер данных спейса в движке vinyl в байтах, включая индексы;
  • cooler_memtx_tuples_total — общее количество кортежей спейса в движке memtx;
  • cooler_vinyl_tuples_total — общее количество кортежей спейса в движке vinyl.

Подробная информация о метриках модуля cooler приведена в разделе Архивация данных.

Рекомендации по настройке архивации и оповещений

В раздел Настройка и запуск архивации устаревших данных добавлены рекомендации по конфигурации параметров архивации:

Кроме того, в документации выделен отдельный раздел Статистика и метрики архивации, где собрана информация о просмотре статистики архивации данных, анализе показателей и просмотре метрик.

Также в документацию добавлен новый раздел Рекомендации по настройке оповещений для модуля cooler, в котором приведены типовые проблемы, требующие настройки оповещений при работе с модулем cooler:

  • выполнение задачи по охлаждению замедлилось;
  • большое количество ошибок при перемещении данных;
  • большое количество несовпадений версий;
  • неэффективное сканирование;
  • критический рост размера архива.

Для каждой ситуации приведено описание, пример триггера в формате PromQL и варианты решения проблемы.

Справочник методов для модуля CRUD

CRUD‑операции (методы crud.*) — это основной способ работы с данными кластера в Tarantool DB. CRUD предоставляет единый интерфейс чтения и записи данных в шардированном кластере Tarantool DB (clusterwide) и берёт на себя маршрутизацию запросов. В Tarantool DataBase 3.2.0 добавлен раздел со справочником методов модуля CRUD. Помимо описания методов, в справочнике приведена общая информация о модуле: формат возвращаемых результатов, принципы шардирования, параметры маршрутизации и ограничения.

Доступные методы:

  • crud.get(), crud.insert(), crud.insert_object() — прочитать или вставить данные;

  • crud.replace(), crud.replace_object() — заменить кортеж;

  • crud.update(), crud.upsert(), crud.upsert_object() — обновить данные;

  • crud.delete() — удалить кортеж;

  • crud.select(), crud.pairs() — сделать выборку данных по заданному условию;

  • crud.min(), crud.max() — получить минимальное и максимальное значения;

  • crud.count(), crud.len() — посчитать количество кортежей в спейсе или кластере;

  • crud.truncate() — очистить спейс;

  • crud.storage_info() — получить информацию об экземплярах хранилища;

  • crud.cut_rows(), crud.cut_objects(), crud.unflatten_rows() — работа с полями и форматом результата;

  • crud.locate() — определить движок базы данных (memtx или vinyl), на котором в данный момент находится кортеж. Метод доступен с версии Tarantool DB 3.2.0.

Подробная информация об этих методах приведена в соответствующем справочнике по API.

Модель безопасности Tarantool DataBase

В Tarantool DataBase 3.2.0 добавлен раздел о модели безопасности TDB, упрощающий настройку Tarantool DB. В разделе описано, как в Tarantool DB организован доступ к данным и функциональности кластера:

  • информация о пользователях в Tarantool DB (в том числе служебных);
  • существующие типы ролей;
  • используемые системные спейсы.

Кроме того, в документацию добавлен набор минимальных разрешений для типовых сценариев работы с продуктом: чтение и запись данных через CRUD, а также ребалансировка сегментов.

Рекомендации и ограничения в Tarantool DataBase

В Tarantool DataBase 3.2.0 в отдельные разделы документации собраны существующие рекомендации и требования, связанные с настройкой и установкой Tarantool DB 3.x, а также добавлен раздел с известными ограничениями продукта.

В разделе с рекомендациями описаны:

  • рекомендованная топология для Tarantool DB;
  • требования к ресурсам, в частности для одного роутера, узла хранилища, а также экземпляров TCM и координаторов отказоустойчивости;
  • расчет дисковой емкости.

В разделе с ограничениями приведены следующие ограничения:

  • не поддерживается схема репликации мастер-мастер;
  • кросс-движковые транзакции поддерживаются только с включенным MVCC. Кросс-движковая транзакция означает выполнение внутри одной транзакции операций и со спейсами memtx, и со спейсами vinyl;
  • не поддерживается использование метода require() в миграциях для любых сторонних библиотек, которые не входят в поставку, а также для некоторых модулей Tarantool (experimental.connpool, fiber, http.server, jit, net.box, socket, swim, ffi, vshard);
  • не поддерживается подключение технологических ролей (модулей), которые не входят в поставку Tarantool DB;
  • не поддерживается прямое обращение к модулю vshard в миграциях (через метод require()).