Тихо и без лишнего шума вышла версия 1.6.6 отечественной СУБД Tarantool, разрабатываемой компанией Mail.Ru Group и сообществом энтузиастов. Tarantool сочетает в себе асинхронный неблокирующий сервер приложений на Lua и NoSQL базу данных с поддержкой хранения слабоструктурированных данных.
Релиз 1.6.6 ознаменует переход ветки 1.6.x в стабильное и готовое к использованию в «боевых» условиях состояние. Опытная эксплуатация с марта 2015 года не зафиксировала существенных сбоев и утечек памяти
Из ключевых изменений релиза 1.6 следует отметить:
- Полная совместимость с Lua 5.1. Tarantool может быть использован как drop-in replacement к Lua с сохранением поддержки всех модулей. Достаточно лишь добавить #!/usr/bin/env tarantool в свои скрипты для получения всей мощи асинхронной обработки событий с использованием легковесных потоков (fibers).
- Новый внутренний формат представления данных MsgPack, по сути являющийся бинарным представлением JSON, оптимизированной для снижения утилизации памяти.
- Полноценная поддержка хранения данных на диске с использованием движка Sophia наряду с in-memory. Теперь возможно указать {engine = 'sophia'} при создании спейса (коллекции), и данные будут храниться на диске с полным сохранением совместимости с API in-memory движка.
- Асинхронная мастер-мастер репликации, заменяющая классическую master-slave схему и обеспечивающая большую гибкость для высоконагруженных веб-приложений.
- Упрощение конфигурационных файлов и обеспечения динамического управления базой данных непосредственно из Lua. Поддерживается задание и изменение настроек непосредственно из скриптов, а также создание и модификация спейсов (таблиц) на лету.
- Обновленные реализации HASH и TREE индексов, использующие более современные и оптимизированные для web-задач алгоритмы. Производительность на типовых задачах увеличилась в несколько раз, при этом потребление памяти стало более предсказуемым.
- Новый пространственный индекс (R*TREE), позволяющий использовать Tarantool для работы с гео-данными. Tarantool умеет искать объекты в определенном радиусе от заданной точки (kNN).
- Поддержка хранимых процедур на C/C++. Хранимые процедуры на C/C++ дают существенный прирост производительности на операциях распаковки/запаковки и преобразования исходных данных, а возможность выполнения C/C++ кода в адресном пространстве СУБД обеспечивает практически неограниченную расширяемость.
- Реализован модуль http-сервера и клиента непосредственно на Lua и API Tarantool. Также добавлен upstream-модуль для nginx для пересылки REST-запросов в Tarantool.
- Добавлена аутентификация и авторизация пользователей и проверка прав доступа на все объекты СУБД.
- Улучшены средства для диагностики и отладки. Обновлена документация и примеры. Добавлена поддержка новых платформ и дистрибутивов.
Пакеты доступны для всех популярных систем на странице http://tarantool.org/download.html. Также запущен сайт http://try.tarantool.org, позволяющий попробовать облачный Tarantool в веб-браузере (сервис реализован непосредственно на самом Tarantool + http-модуле).
Среди пользователей Tarantool следует отметить такие серьезные компании, как Mail.Ru, Badoo, Avito и др. Разработка ведется с 2009 года. Исходный код доступен под 2-пунктовой лицензией BSD.
>>> Подробности