О продукте
Tarantool Database (Tarantool DB или TDB) — это мультипротокольная NoSQL СУБД, разработанная на основе Tarantool Enterprise Edition.
Tarantool Database позволяет решать следующие задачи:
- Создание и изменение объектов базы данных (например, спейсы, индексы, хранимые функции);
- Создание и изменение локальных функций (например, триггеры и вспомогательные функции);
- Использование функционала встроенных модулей.
Если архитектура вашего приложения конфликтует с концепцией применения выше, рекомендуется проконсультироваться с вендором.
Решения на Tarantool Database не требуют привлечения инженеров, обладающих экспертизой одновременно в области развёртывания, настройки и написания решений на Tarantool. Установить продукт может отдельная команда эксплуатации, которая занимается развёртыванием других баз данных. Команда разработки пишет бизнес-логику в клиентском приложении на своём языке и работает с Tarantool Database через скрипты миграций или коннектор. Код самого Tarantool Database при этом остаётся неизменным.
Документация Tarantool Database включает следующие разделы:
- Руководство для начинающих
- Руководство по установке
- Руководство пользователя
- Руководство администратора
- Справочники
- Примечания к релизам
Tarantool DB не поддерживает:
- схему репликации мастер-мастер;
- подключение технологических ролей, которые не входят в поставку Tarantool DB;
- прямое обращение к модулю шардирования
vshardв миграциях; - использование в миграциях метода require() для некоторых библиотек Tarantool, а также для любых сторонних библиотек, которые не входят в поставку.
Tarantool DB поддерживает:
- кросс-движковые транзакции только с включенным MVCC;
- прямое обращение к модулю
crudв миграциях.
Репликация мастер-мастер (или мультимастер) — это архитектура баз данных, где два или более экземпляров репликационной группы выступают в роли мастер-узлов, то есть любой из этих узлов доступен как для чтения данных, так и для их записи. Все изменения, происходящие на любом из мастер-узлов, синхронизируются на другом мастер-экземпляре, и наоборот.
Если набор реплик работает в режиме мастер-мастер, одновременная запись по одному и тому же первичному ключу с
разных экземпляров кластера приводит к конфликту репликации.
Это означает, что в наборе реплик у кортежа с этим первичным ключом возникают две версии текущего значения.
Репликация при этом останавливается с ошибкой вида Duplicate key exists.
Длительность окна, в течение которого запись в два узла считается одновременной, определяется скоростью репликации между
этими узлами и зависит от сетевых задержек. В общем случае речь идёт о нескольких миллисекундах.
Подробнее о конфликте репликации и триггере на его разрешение читайте в запускаемом
примере из GitHub-репозитория tarantool/tarantooldb-examples: trigger.
Кросс-движковая транзакция означает выполнение внутри одной транзакции операций и со спейсами memtx, и со спейсами vinyl.
Транзакционный менеджер MVCC — это режим поведения транзакции, позволяющий выполнять передачу управления (yield) транзакции внутри движка memtx. При работе со спейсом vinyl также может произойти передача управления, например во время чтения данных с диска, поэтому для использования кросс-движковых транзакций необходимо включить MVCC в memtx. При выключенном MVCC транзакции с memtx не поддерживают передачу управления, поэтому корректно выполнить такую транзакцию невозможно. Такая транзакция завершится ошибкой, а изменения из транзакции откатятся.
Tarantool DB не поддерживает использование метода require() в миграциях для любых сторонних библиотек, которые не
входят в поставку, а также для следующих модулей Tarantool:
experimental.connpoolfiberhttp.serverjitnet.boxsocketswimffivshard