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.
Ключевые изменения:
- Охлаждение и нагрев данных в vinyl;
- Улучшения в модуле cooler;
- Справочник методов для модуля CRUD;
- Модель безопасности Tarantool DataBase;
- Рекомендации и ограничения в Tarantool DataBase.
Подробная информация о продукте приведена в документации Tarantool DataBase.
При обновлении 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().
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 позволяет задавать архивацию данных в миграциях, а также отвечает за
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 приведена в разделе Архивация данных.
В раздел Настройка и запуск архивации устаревших данных добавлены рекомендации по конфигурации параметров архивации:
- Выбор индекса для обхода — описание поведения в зависимости от того, какой индекс указан в конфигурации, и рекомендации по выбору между первичным и вторичным индексом;
- Параметры full_scan_time и tuples_per_iteration — рекомендации по подбору значений;
- Параметр start_key — настройка точки старта обхода индекса, в том числе через Lua-функцию с динамическим значением;
- Совместная настройка нескольких индексов — пример конфигурации для обхода по двум индексам одновременно.
Кроме того, в документации выделен отдельный раздел Статистика и метрики архивации, где собрана информация о просмотре статистики архивации данных, анализе показателей и просмотре метрик.
Также в документацию добавлен новый раздел Рекомендации по настройке оповещений для модуля cooler,
в котором приведены типовые проблемы, требующие настройки оповещений при работе с модулем cooler:
- выполнение задачи по охлаждению замедлилось;
- большое количество ошибок при перемещении данных;
- большое количество несовпадений версий;
- неэффективное сканирование;
- критический рост размера архива.
Для каждой ситуации приведено описание, пример триггера в формате PromQL и варианты решения проблемы.
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 3.2.0 добавлен раздел о модели безопасности TDB, упрощающий настройку Tarantool DB. В разделе описано, как в Tarantool DB организован доступ к данным и функциональности кластера:
- информация о пользователях в Tarantool DB (в том числе служебных);
- существующие типы ролей;
- используемые системные спейсы.
Кроме того, в документацию добавлен набор минимальных разрешений для типовых сценариев работы с продуктом: чтение и запись данных через CRUD, а также ребалансировка сегментов.
В 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()).