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

Tarantool DataBase 1.0.0

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

Tarantool DB — это in-memory NoSQL СУБД, разработанная на основе Tarantool Enterprise Edition. В релизе Tarantool DB 1.0.0 упрощена установка и настройка кластера для горячего хранения данных за счет интеграции с инструментами CI/CD.

Основная функциональность:

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

Обновление клиентского кода хранилища данных без повторного развертывания кластера

Начиная с версии Tarantool DB 1.0.0, новый клиентский код можно применять без необходимости повторного развертывания всего кластера. Теперь обновить клиентский код хранилища данных можно через веб-интерфейс Tarantool DB или с помощью API-команды.

Поддержка словарей в кластере

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

Задать настройки словарей можно в секции dictionary YAML-конфигурации:

dictionary:  batch_size: 200  worker_sleep_in_second: 3600  logging: false

Метод dictionary_router.set() записывает в указанный словарь элементы с соответствующими им ключами:

dictionary_router.set('categories', '1', 'Shops')dictionary_router.set('categories', '2', 'Food delivery')

Получить данные словаря можно с помощью метода dictionary_router.get():

dictionary_router.get('categories', '1')

Узнать больше о работе со словарями можно в разделах Словари и Запись и получение данных в словаре.

Управление временем жизни данных

В Tarantool DB 1.0.0 вы можете контролировать время жизни кортежей в спейсе, включив модуль expirationd на хранилищах. Модуль позволяет обходить кортежи в спейсе по индексу с заданным интервалом и проверять срок жизни каждого кортежа, а затем обрабатывать кортежи с истекшим сроком жизни.

Пример YAML-конфигурации для expirationd может выглядеть так:

messages_expiration:    space: messages    is_expired: messages_is_tuple_expired    is_master_only: true    options:        tuples_per_iteration: 100        iterate_with: messages_iterate_with        process_expired_tuple: messages_process_expired_tuple        args:            seconds: 5

Здесь:

  • идет обход кортежей по спейсу messages;
  • функция is_expired проверяет срок жизни кортежа;
  • функция messages_process_expired_tuple обрабатывает кортежи с истекшим сроком жизни.

Узнать больше о настройке expirationd можно в разделе Устаревание данных.

Совместимость с Tarantool Clusters Federations

В Tarantool DB 1.0.0 поддерживается работа с модулем Tarantool Clusters Federation (TCF). Совместное использование этих двух продуктов позволяет построить отказоустойчивую систему из двух независимых кластеров Tarantool DB. В такой системе:

  • активный кластер принимает все запросы от приложения;
  • пассивный кластер содержит копию данных активного кластера.

Tarantool Clusters Federation позволяет управлять переключением трафика между активным и пассивным кластерами.

Пример запуска кластеров Tarantool DB с TCF и настройки репликатора приведен в разделе Запуск кластеров Tarantool DataBase с TCF и настройка репликатора.

Обновленный Java-коннектор

В Tarantool DB 1.0.0 вы можете работать с СУБД, используя новый Java-коннектор. Ключевая функциональность Java-коннектора:

Расширенная поддержка Spring Data

В новом Java-коннекторе доступна расширенная поддержка Spring Data. Spring Data упрощает создание приложений на базе Spring, использующих Tarantool в качестве хранилища данных.

Расширенная функциональность включает:

  • Гибкую настройку клиента через Java-объекты и файлы конфигурации (.properties / .yaml).

    Пример

    spring:data:    tarantool:        host: localhost        port: 3301        user-name: user        password: password        graceful-shutdown-enabled: true        balancer-mode: distributing_round_robin        connect-timeout: 5000        reconnect-after: 1000        connection-groups:            - auth-type: pap_sha256              host: localhost              port: 3301              user-name: "user"              password: secret              connection-group-size: 4              tag: first-router              flush-consolidation-handler:                  explicit-flush-after-flushes: 256                  consolidate-when-no-read-in-progress: false            - host: localhost              port: 3302              user-name: "user"              password: secret              connection-group-size: 2              tag: second-router        event-loop-threads-count: 10        heartbeat:            death-threshold: 4            invalidation-threshold: 2            ping-interval: 56            window-size: 12
  • Производные запросы (derived queries). Для работы с такими запросами доступны методы findBy, deleteBy, existsBy и countBy.

    Поддерживаются следующие ключевые слова: True, False, Equal, LessThan, LessThanEqual, GreaterThan, GreaterThanEqual, Between, IsNull, Distinct, IsEmpty, ExistsBy, First, Top, After, Before.

    Пример

    public interface PersonRepository extends CrudRepository<Person, Integer> {  List<T> deleteByName(String name);  List<Person> findAllByIdIsLessThan(int id);  boolean existsByIsMarried(boolean isMarried);  long countByNameBefore(String name);}
  • Планируется поддержка модуля Spring Data версий 3.1 и 3.2.

Упрощенный API

В новом Java-коннекторе упрощен API по сравнению с cartridge-java. Теперь все методы и опции полностью соответствуют модулю tarantool/crud. Кроме того, обеспечена прямая совместимость с будущими опциями.

Пример

TarantoolCrudClient client = TarantoolFactory.crud().build();client.call(someFunctionName).join();client.eval(someEvalString).join();var space = client.space("person");space.insert(Arrays.asList(51, false, "luke skywalker")).join();space.select(Condition.create("==", "pk", 51)).join();

Полная поддержка протокола IPROTO

В новом Java-коннекторе доступна полная поддержка протокола IPROTO, в том числе функциональности Tarantool 3.x. Ключевая поддерживаемая функциональность:

  • авторизация (CHAP-SHA1, PAP-SHA256);
  • TLS/mTLS;
  • корректное завершение работы (graceful shutdown);
  • автоматическое обновление схемы данных;
  • (2.11) пагинация массивов данных;
  • интерактивные транзакции;
  • подписка на события Tarantool;
  • все типы данных, в том числе работа с datetime для JSR-310 (ZonedDateTime, Instant, OffsetDateTime) и interval (TemporalAmount);
  • работа с форматом записи без получения схемы в отдельном запросе (tuple extension);
  • (3.x) работа с именами спейсов и индексов в IPROTO-запросах без получения схемы в отдельном запросе (space and index names).