В Tarantool 2.10 добавлены новые инструменты как для версии Enterprise, так и для Community Edition. Также мы запустили DBaaS с Tarantool в VK Cloud Solutions. Здесь мы подробно расскажем об основных обновлениях: шифровании соединений между репликами и клиентом, сжатии данных в памяти и расширенных возможностях аудита. Мы также поделимся ссылкой на полный список изменений.
Сжатие
В Tarantool всегда была возможность сжимать данные на диске. Теперь Tarantool Enterprise позволяет сжимать данные в оперативной памяти. Это экономит объем используемой памяти, что снижает потребность в покупке дополнительного оборудования. Это особенно полезно, если вы храните в памяти длинные строки или объекты JSON. В некоторых наборах данных объем данных, хранящихся в ОЗУ, может быть уменьшен до 60%.
Сжатие может выполняться прямо на работающем кластере, а запросы продолжают обрабатываться в обычном режиме. Это уменьшает объем хранимых данных, что в свою очередь позволяет уменьшить количество используемых серверов или увеличить время ожидания покупки.
Tarantool поддерживает алгоритмы ZSTD и LZ4. Первый лучше сжимает данные, но процесс сжатия занимает больше времени. Второй сжимает данные менее эффективно, но работает быстрее.
Чтобы использовать сжатие данных, вам не нужно пересоздавать пространство с данными. Просто укажите, какие поля необходимо сжать, в функции space:format(). Затем запустите фоновую миграцию через space:upgrade({ background = true }). После этого все работает прозрачно: данные сжимаются при записи и распаковываются при чтении.
Данные могут быть сжаты и в уже существующих хранилищах.
Шифрование
Обычно Tarantool используется внутри компании и не имеет доступа к интернету. Он обеспечивает безопасное хранение данных.
Ранее в Tarantool не было встроенных инструментов для безопасного взаимодействия с внутренними сервисами компаний. Были индивидуальные решения, созданные для каждого клиента индивидуально. Теперь у нас есть такой инструмент, встроенный в продукт. В новой версии Tarantool Enterprise весь трафик шифруется.
Шифрование позволяет:
- защита связи внешних сервисов с Tarantool;
- защита соединений между экземплярами Tarantool;
- предоставление Tarantool доступа напрямую в интернет.
Злоумышленник не сможет прочитать ваши данные, даже если перехватит ваш трафик.
Настроить шифрование просто: достаточно указать порт, ключ, сертификат и алгоритм шифрования. Тогда все готово к работе.
Новая версия поддерживает протокол TLS, который реализован на основе нескольких популярных алгоритмов. Это позволяет использовать Tarantool в стеке и удовлетворить требования любой компании по информационной безопасности.
Журнал аудита
Ни одна компания не защищена полностью от нежелательного использования данных, хакерских атак и других инцидентов. В новом релизе мы расширили возможности журнала аудита в Tarantool Enterprise. Теперь расследование инцидентов станет проще.
Система аудита помогает быстро выяснить:
- что происходило в системе в определенный момент;
- какие запросы и изменения были сделаны и кем.
Логи теперь можно записывать в JSON и CSV. Записи могут быть дополнительно настроены. Он работает аналогично другим популярным базам данных. Вы можете фильтровать типы событий, которые хотите регистрировать, и создавать собственные типы событий с помощью Tarantool API.
Журнал аудита можно включить с помощью параметра audit_log в box.cfg{}, как и раньше.
Что еще нового?
Tarantool в облаке
Комьюнити-версия Tarantool теперь доступна как сервис на облачной платформе VK Cloud Solutions. Tarantool в облаке настроен и полностью готов к загрузке данных. Облачная версия снижает порог входа: для работы с Tarantool в облаке не нужно программировать на Lua, изучать шардинг или администрировать решение самостоятельно.
Обновления версии Community и Enterprise
Добавлена поддержка ограничений значений полей. Это позволяет проверять значения перед записью с помощью:
- любая пользовательская функция Lua;
- внешний ключ.
Эти инструменты называются ограничениями и внешними ключами.
Пример API для ограничений:
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 для внешних ключей:
space:format({.., { name = 'country_id', foreign_key = { country = { space = 'countries', field = 'id'} } }, .. })
- Шардинг ускорился: вызов удаленных хранимых процедур с помощью vshard стал быстрее на 70%. Если используется модуль crud, вы также увидите повышение производительности.
- Экономия места: небольшие строки теперь хранятся более оптимально — для хранения одной строки в памяти требуется на 4 байта меньше. Это может сэкономить до сотен МБ на некоторых наборах данных. Эта функция доступна после обновления. Вам не нужно ничего настраивать.
- Улучшена поддержка транзакций в протоколе коннектора: теперь вы можете держать транзакции открытыми при выполнении других операций.
Только в Tarantool Enterprise:
Настройте диаграмму данных в фоновом режиме. Теперь вам не нужно вручную переносить данные в новое пространство и тратить время на написание, тестирование и реализацию скрипта миграции.
Как это работает? За все это отвечает функция space:upgrade().
- Выполнение команды space:upgrade() приводит к мгновенному изменению формата пробела (поэтому вставка новых данных и выделение должны соответствовать новому формату).
- Пространство не блокируется для чтения/записи, вместо этого выборка возвращает кортежи в новом формате (независимо от того, были они уже преобразованы или нет).
- Команда запускает фоновую задачу, которая выполняет итерацию по всем кортежам в пространстве и преобразует их в новый формат в соответствии с upgage_function.
Поддержка LDAP. Все, что вы ожидаете, и в знакомом формате. Документацию можно прочитать здесь.
Внутренняя информация и статистика Tarantool теперь записываются на диск. Мы называем эту функцию Flightrec. Это помогает нашей технической поддержке разобраться, что произошло и как решить проблему.
Полный список изменений смотрите на GitHub.
Скачайте Tarantool с официального сайта.
Получите помощь в нашем Telegram чате.
Вы можете ознакомиться с основными возможностями платформы прямо в браузере с помощью сервиса Попробовать Tarantool.