В 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.