Концепции
Движок хранения — это набор низкоуровневых процедур, обеспечивающих сохранение и извлечение значений. В Tarantool доступно два движка хранения:
- memtx — движок хранения в оперативной памяти, используется по умолчанию.
- vinyl — дисковый движок хранения. Подробнее см. в разделе Движки базы данных.
Tarantool — это NoSQL база данных. Данные хранятся в спейсах, которые можно рассматривать как таблицы в реляционной базе данных, и кортежах, аналогичных строкам. В Tarantool предусмотрено шесть базовых операций с данными.
В платформе поддерживается описание схемы данных, но оно не является обязательным.
Tarantool поддерживает гибко настраиваемые индексы различных типов.
Для обеспечения сохранности данных и быстрого восстановления при сбоях в Tarantool используются такие механизмы, как журнал предзаписи (WAL) и снимки.
Подробнее см. на странице Модель данных.
Tarantool выполняет код в файберах, управление которыми осуществляется посредством кооперативной многозадачности. Подробнее о модели потоков Tarantool.
Подробнее см. на странице Файберы, yield и кооперативная многозадачность.
В соответствующей ACID модели транзакций Tarantool можно выбрать один из двух режимов транзакций.
Режим по умолчанию обеспечивает быстрые монопольные атомарные транзакции. Он не поддерживает интерактивные транзакции, а в случае ошибки все изменения в рамках транзакции откатываются.
Режим MVCC основан на механизме управления конкурентным доступом (MVCC), в котором можно выполнять yield внутри более длительной транзакции. Этот режим работает только с движком хранения в оперативной памяти memtx, используемым по умолчанию.
Подробнее см. на странице Транзакции.
Репликация обеспечивает хранение данных в копиях одной и той же базы данных для повышения надежности.
Несколько экземпляров Tarantool могут быть объединены в набор реплик. Они обмениваются данными через бинарный протокол iproto. Подробнее об архитектуре репликации Tarantool.
По умолчанию репликация в Tarantool асинхронная. Транзакция, зафиксированная локально на мастер-узле, может не успеть реплицироваться на другие экземпляры до того, как клиент получит ответ об успешном выполнении. Таким образом, если мастер-узел возвращает успешный ответ, а затем выходит из строя, клиент может не увидеть результат транзакции.
При синхронной репликации транзакции на мастер-узле не считаются зафиксированными или успешными до тех пор, пока они не будут реплицированы на определенное количество экземпляров. Это медленнее, но надежнее. Синхронная репликация в Tarantool основана на реализации алгоритма RAFT.
Подробнее см. в разделе Репликация.
Шардирование базы данных в Tarantool реализовано через модуль vshard.
Подробнее см. на странице Шардирование.
В Tarantool можно задавать функции обратного вызова, которые выполняются при определенных событиях базы данных. Они могут быть полезны для разрешения конфликтов репликации. Подробнее см. на странице Триггеры.
Используя Tarantool в качестве сервера приложений, можно писать приложения на Lua, C или C++. Также можно создавать переиспользуемые модули.
Для повышения скорости выполнения кода в Tarantool встроен Lua-компилятор Just-In-Time (LuaJIT). LuaJIT компилирует горячие участки кода — участки, которые выполняются многократно — тем самым ускоряя работу приложения. Для работы с LuaJIT в Tarantool предусмотрены такие инструменты, как профайлер памяти и модуль getmetrics.
О том, как использовать Tarantool в качестве сервера приложений, см. в руководствах.