
В Tarantool 2.10 добавили новые инструменты как для Enterprise версии, так и для Community Edition. А еще мы запустили Tarantool по модели DBaaS в облаке VK Cloud Solutions. Далее подробно расскажем про главные обновления: шифрование соединений между репликами и клиентом, сжатие данных в памяти, расширенные возможности аудита и поделимся ссылкой на полный список изменений.
Сжатие
Tarantool всегда умел сжимать данные на диске. Теперь Tarantool Enterprise позволяет сжимать данные, которые хранятся в оперативной памяти. Это позволяет экономить место в памяти, что снижает потребность в закупке дополнительного железа. Особенно это актуально, если вы храните в памяти длинные строчки и/или JSON объекты. На некоторых датасетах можно снизить объем хранимых данных в оперативной памяти до 60%.
Сжатие можно запустить прямо на работающем кластере. При этом продолжать обслуживать запросы как обычно. Это уменьшит размер хранимых данных и позволит сократить количество используемых серверов или продлить время возможного ожидания закупок.
Поддерживаются алгоритмы ZSTD, LZ4. Первый сжимает лучше, но тратит чуть больше времени на процесс ком��рессии. Второй сжимает менее эффективно, но и работает быстрее.
Для использования сжатия не нужно пересоздавать спейс с данными. Просто укажите, какие поля необходимо сжимать в функции space:format(). Потом запустите фоновую миграцию через space:upgrade({ background = true }). Дальше все работает прозрачно: при записи данные сами сжимаются, при чтении разжимаются.
Сжимать данные можно в том числе в уже существующих хранилищах.
Шифрование
Как правило, Tarantool находится во внутреннем контуре, и у него нет доступа в интернет. За счет этого достигается безопасность хранения данных.
Раньше у Tarantool не было встроенных инструментов для безопасного общения с сервисами внутри компании. Были кастомные решения, которые делались под клиента. Теперь такой инструмент появился в продукте — в новой версии Tarantool Enterprise весь трафик шифруется.
Шифрование позволит:
защитить взаимодействие сервисов с Tarantool;
защитить взаимодействие инстансов Tarantool между собой;
выставлять доступ к Tarantool напрямую в интернет.
Злоумышленник не сможет прочитать данные, даже если он смог перехватить ваш трафик.
Настроить шифрование просто: нужно указать порт, ключ, сертификат и необходимый алгоритм. Дальше — все работает.
В новой версии поддерживается протокол TLS. Работает это с помощью алгоритма ГОСТ 34.10-2018ГОСТ, а также популярных зарубежных алгоритмов. Это позволяет использовать Tarantool в стеке и удовлетворить требованиям информационной безопасности любой компании.
Аудит
Неправомерное использование данных сотрудниками, попытки хакерских атак и другие инциденты — это то, от чего не защищена ни одна компания. В новом релизе мы расширили возможности аудит-лога в Tarantool Enterprise. Теперь расследовать инциденты будет проще.
Система аудита позволит быстро понять:
что происходило в тот или иной момент времени в системе;
какие запросы и изменения выполнялись конкретными пользователями.
Логи теперь можно писать в JSON, CSV. Сами записи конфигурируются. Работает по тому же принципу, что и в других распространенных базах данных. Типы событий, которые необходимо логировать, можно фильтровать. Также можно создавать собственные типы событий через API Tarantool.
Аудит-лог по-прежнему включается через опцию audit_log в box.cfg{}. Ничего не поменялось.
А что еще?
Tarantool в облаке
Community-версия Tarantool теперь доступна как управляемая база данных на облачной платформе VK Cloud Solutions. Tarantool в облаке уже настроен и полностью готов к загрузке данных. Облачная версия снижает порог входа: для работы с Tarantool в облаке не нужно программировать на Lua, разбираться в шардировании и самостоятельно администрировать решение.
Для Community и Enterprise версии
Добавили поддержку ограничений на значения полей. Это позволит проверять записываемое значение перед вставкой с помощью:
любой пользовательской Lua-функции;
внешнего ключа.
Эти механизмы называются Constraints и Foreign keys соответственно.
Пример API для constraints:
box.schema.func.create('check_day_of_year',
{ language = 'LUA',
is_deterministic = true,
body = 'function(x, c) return x >= 1 and x <= 366 end'})space:format({.., { name = 'day_of_year', constraint = 'check_day_of_year'}, ..})Пример API для Foreign keys:
space:format({.., { name = 'country_id',
foreign_key = {
country = { space = 'countries', field = 'id'}
}
}, ..
})Ускорили шардинг: вызовы удаленных хранимых процедуры с vshard ускорились до 70%. Если используется модуль
crud, то вы также заметите прирост производительности.Сэкономили место: маленькие строчки теперь хранятся оптимальнее — на одну строчку в памяти нужно на 4 байта меньше. За счет этого можно сэкономить до нескольких сотен МБ на некоторых датасетах. Доступно после обновления. Дополнительно настраивать ничего не нужно.
Расширили поддержку транзакций в протоколе для коннекторов: теперь можно держать транзакции открытыми и при этом выполнять другие операции.
Только в Tarantool Enterprise:
⚡️ Научились менять схему данных в фоновом режиме. Теперь не нужно вручную мигрировать данные в новый спейс и тратить время на написание, обкатку и запись миграционного скрипта.
Как это работает? Всё это будет работать через функцию
space:upgrade().выполнение команды
space:upgrade()приводит к моментальной смене формата спейса (так что вставка новых данных и выборка должна соответствовать новому формату);спейс не блокируется на чтение/запись, вместо этого выборка отдает кортежи в новом формате (вне зависимости сконвертированы они уже или нет);
команда запускает фоновую задачу, которая обходит все кортежи спейса и приводит их к новому формату согласно
upgrage_function.
⚡️ Реализовали поддержку LDAP. Все привычно и есть то, что ожидается. Почитать документацию можно тут.
⚡️ Начали записывать внутреннюю информацию и статистику Tarantool на диск. Назвали это Flightrec. Это позволит быстрее понимать нашей технической поддержке — что случилось и как решать проблему.
Полный список изменений на github.
Скачать Tarantool можно на официальном сайте.
Получить помощь можно в Telegram-чате.
Познакомиться с базовыми возможностями платформы можно прямо в браузере с помощью сервиса Try Tarantool.
