TDB Documentation portal logo
Помощь
Обновлена 22 октября 2026 г. в 11:37

О продукте

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

Tarantool Database позволяет решать следующие задачи:

  • Создание и изменение объектов базы данных (например, спейсы, индексы, хранимые функции);
  • Создание и изменение локальных функций (например, триггеры и вспомогательные функции);
  • Использование функционала встроенных модулей.

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

Решения на Tarantool Database не требуют привлечения инженеров, обладающих экспертизой одновременно в области развёртывания, настройки и написания решений на Tarantool. Установить продукт может отдельная команда эксплуатации, которая занимается развёртыванием других баз данных. Команда разработки пишет бизнес-логику в клиентском приложении на своём языке и работает с Tarantool Database через скрипты миграций или коннектор. Код самого Tarantool Database при этом остаётся неизменным.

Документация Tarantool Database включает следующие разделы:

Ограничения в Tarantool Database

Tarantool DB не поддерживает:

Tarantool DB поддерживает:

  • кросс-движковые транзакции только с включенным MVCC;
  • прямое обращение к модулю crud в миграциях.

Схема репликации мастер-мастер

Репликация мастер-мастер (или мультимастер) — это архитектура баз данных, где два или более экземпляров репликационной группы выступают в роли мастер-узлов, то есть любой из этих узлов доступен как для чтения данных, так и для их записи. Все изменения, происходящие на любом из мастер-узлов, синхронизируются на другом мастер-экземпляре, и наоборот.

Если набор реплик работает в режиме мастер-мастер, одновременная запись по одному и тому же первичному ключу с разных экземпляров кластера приводит к конфликту репликации. Это означает, что в наборе реплик у кортежа с этим первичным ключом возникают две версии текущего значения. Репликация при этом останавливается с ошибкой вида Duplicate key exists. Длительность окна, в течение которого запись в два узла считается одновременной, определяется скоростью репликации между этими узлами и зависит от сетевых задержек. В общем случае речь идёт о нескольких миллисекундах.

Подробнее о конфликте репликации и триггере на его разрешение читайте в запускаемом примере из GitHub-репозитория tarantool/tarantooldb-examples: trigger.

Кросс-движковые транзакции с включенным MVCC

Кросс-движковая транзакция означает выполнение внутри одной транзакции операций и со спейсами memtx, и со спейсами vinyl.

Транзакционный менеджер MVCC — это режим поведения транзакции, позволяющий выполнять передачу управления (yield) транзакции внутри движка memtx. При работе со спейсом vinyl также может произойти передача управления, например во время чтения данных с диска, поэтому для использования кросс-движковых транзакций необходимо включить MVCC в memtx. При выключенном MVCC транзакции с memtx не поддерживают передачу управления, поэтому корректно выполнить такую транзакцию невозможно. Такая транзакция завершится ошибкой, а изменения из транзакции откатятся.

Использование метода require() в миграциях

Tarantool DB не поддерживает использование метода require() в миграциях для любых сторонних библиотек, которые не входят в поставку, а также для следующих модулей Tarantool:

  • experimental.connpool
  • fiber
  • http.server
  • jit
  • net.box
  • socket
  • swim
  • ffi
  • vshard
Была ли статья полезна?