27.09.2021

Выпуск СУБД Tarantool 2.8

Доступна новая версия СУБД Tarantool 2.8, обеспечивающей постоянное хранения данных с отдачей информации из оперативной памяти (in-memory database). СУБД сочетает высокую скорость обработки запросов, характерную для NoSQL-систем (например, Memcached и Redis), c надежностью традиционных СУБД (Oracle, MySQL и PostgreSQL). Tarantool написан на языке C и позволяет создавать хранимые процедуры на языке Lua. Код распространяется под лицензией BSD.

СУБД позволяет эффективно работать с большими объёмами данных под высокими нагрузками. Из особенностей Tarantool отмечается возможность создавать обработчики на языке Lua (встроен LuaJIT), применение формата MessagePack при обмене данными с клиентом, наличие двух встроенных движков (хранение в ОЗУ со сбросом на постоянный накопитель и двухуровневое дисковое хранилище на базе LSM-tree), поддержка вторичных ключей, четыре типа индексов (HASH, TREE, RTREE, BITSET), средства для синхронной и асинхронной репликации в режиме master-master, поддержка аутентификации подключений и контроля доступа, возможность обработки SQL-запросов.

Главные изменения:

  • Стабилизация MVCC (Многоверсионное управление конкурентным доступом) в in-memory движке memtx.
  • Поддержка транзакционности в бинарном протоколе IPROTO. Раньше для транзакции необходимо было написать хранимую процедуру на языке Lua.
  • Поддержка синхронной репликации, которая работает в привязке к отдельным таблицам.
  • Механизм автоматического переключения на запасной узел (failover) на базе протокола RAFT. В Tarantool давно была реализована асинхронная WAL-based репликация, теперь можно не следить за мастер-узлом вручную.
  • Автоматическое переключение мастер-узла также доступно в случае топологии с сегментированием (шардингом) данных (используется библиотека vshard, которая распределяет данные по серверам с помощью виртуальных корзин (bucket)).
  • Улучшение фреймворка для построения кластерных приложений Tarantool Cartridge при работе в виртуальных средах. Tarantool Cartridge теперь лучше держит нагрузку.
  • Ускорена работа Ansible-роли для развертывания кластера до 15-20 раз. Таким образом работа с большими кластерами стала проще.
  • Появился инструмент для упрощённой миграции со старых версий >1.6 и < 1.10, который доступен с помощью дополнительной опции при старте. Раньше миграцию необходимо было делать через разворачивание промежуточной версии 1.10.
  • Проведена оптимизация хранения кортежей небольшого размера.
  • В SQL реализована поддержка UUID и улучшено преобразование типов.

Стоит отметить, что начиная с версии 2.10 будет осуществлён переход на новую политику формирования релизов. При значительных выпусках с нарушением обратной совместимости будет меняться первая цифра версии, при промежуточных — вторая, а при корректирующих — третья (после 2.10 будет выпущен релиз 3.0.0).

Источник.