Релиз Picodata 26.1

Александр Толстой

Мы рады сообщить о выходе Picodata 26.1 — новой версии распределённой СУБД от команды разработчиков Picodata. В этом релизе мы гарантируем полную обратную совместимость с предыдущей версией и представляем множество новых функций. Среди них поддержка транзакционного исполнения запросов, новые возможности SQL, новые параметры конфигурации, поддержка TLS/mTLS для плагинов, улучшения в движке Vinyl, многочисленные оптимизации для более эффективного исполнения распределённых запросов, новые возможности ALTER SYSTEM и многое другое! Читайте подробности о новых функциях ниже.

Поддержка транзакционного исполнения запросов

В Picodata 26.1 мы реализовали поддержку транзакций, в рамках которых пользователи могут исполнять наборы команд атомарно. Транзакция представляет собой процедуру без имени, в теле которой допускается размещение DQL- и DML-запросов. Пример:

DO $$ BEGIN
  RETURN QUERY SELECT a FROM t WHERE pk = 1;
  UPDATE t SET a = a + 1 WHERE pk = 1;
END $$;

Подробности и ограничения текущей реализации описаны на нашем сайте документации.

Улучшения в SQL

Основные новинки и улучшения языка SQL в Picodata 26.1:

  • При создании таблицы теперь можно использовать служебную колонку bucket_id в составе индекса первичного ключа (и тогда отдельный индекс по bucket_id не будет создан). Используйте для этого синтаксис CREATE TABLE ... "PRIMARY KEY (bucket_id, …)".
  • Новые системные параметры СУБД, доступные для изменения через ALTER SYSTEM:
    • governor_check_replication_error — проверка проблем репликации во всём кластере. По умолчанию true
    • sql_log — вывод журнала SQL-операций в общий журнал Picodata. По умолчанию false
    • sql_ddl_timeout— задаёт таймаут для всех DDL-операций и команд управления плагинами. Значение по умолчанию — 1 день
  • Поддержка нежурналируемых таблиц для движка memtx. Такие таблицы не персистентны, но зато работают быстрее с DML-запросами. Для создания используйте синтаксис CREATE UNLOGGED TABLE...
  • Для команды EXPLAIN теперь поддерживается вывод низкоуровневого плана запроса через синтаксис EXPLAIN (RAW) или EXPLAIN (RAW, FMT) (с форматированием). В таком виде команда покажет части плана отдельно для узлов с ролью хранения (storage) и ролью маршрутизации (router)
  • Производительность при выполнении распределённых запросов стала выше благодаря новым оптимизациям планировщика SQL

Улучшения в работе движка Vinyl

Движок хранения Vinyl был значительно доработан. Новый планировщик слияний учитывает больше факторов для принятия решений о слиянии run-файлов:

  • слияние диапазонов, которые не пересекаются по ключу, не выполняется
  • для диапазонов, содержащих мусор после разбиения, выполняется автоматическая сборка мусора
  • для диапазонов, чтение из которых происходит более интенсивно, слияние выполняется чаще, что снижает стоимость чтения

В результате, прирост производительности Vinyl составил до 80%, а занимаемое место на диске сократилось в отдельных случаях вдвое. Подробности.

Поддержка сокетов и TLS/mTLS для плагинов

В конфигурационном файле инстанса Picodata поддерживаются блоки настроек для подключаемых плагинов и их сервисов. Помимо специфичных для плагина параметров, в них можно настроить адреса и порты слушающего сокета, а также параметры шифрования TLS/mTLS. Фрагмент конфигурации инстанса в части плагина представлен в примере ниже:

plugin:
  radix:
    service:
      radix:
        listener:
          enabled: bool # опциональное свойство, значение по умолчанию - true.
          advertise: <URI>
          listen: <URI>
          tls:
            enabled: bool
            cert_file: tls_2/server.crt
            key_file: tls_2/server.key
            ca_file: tls_2/ca.crt
            password_file: tls_2/pass.txt

Изменения в конфигурации Picodata

Мы навели порядок в файле конфигурации и теперь блоки, связанные с настройкой протоколов HTTP, IPROTO и PGPROTO, имеют стандартную структуру и консистентные названия параметров. Это касается как настройки адресов для сокетов, так и конфигурации защищённого режима (TLS/mTLS).

Прежние параметры HTTP, IPROTO и PGPROTO всё ещё поддерживаются (поэтому существующие конфигурации продолжат работать), но одновременное использование старого и нового формата конфигурации не допускается. Описание файла конфигурации содержит уведомления о новых параметрах, которые пришли на смену устаревшим.

Улучшение пользовательского опыта

Несмотря на то, что мы уже давно предоставляем пошаговую инструкцию по запуску кластера Picodata, теперь это стало ещё проще благодаря встроенной команде picodata demo. Это способ быстрой интерактивной демонстрации Picodata без какой-либо настройки. Команда запускает демонстрационный кластер, состоящий из 4-х инстансов, распределённых по 2-м репликасетам, на локальном узле. В консоль выводятся основные сведения об инстансах и способы подключения к ним.

Пример:

Instance 'default_1_1':
- pid: `244053`
- dir: `/home/user/picodata/picodata_demo/cluster/i1`
- logs: `/home/user/picodata/picodata_demo/cluster/i1/picodata.log`
- http: `http://127.0.0.1:8001`
- iproto: `3001`
- pgproto: `postgres://admin:T0psecret@127.0.0.1:5433`

В веб-интерфейсе Picodata оптимизировано отображение сведений о кластере, проведена работа по улучшению удобства использования страницы. Для пользователей теперь доступен такой параметр как версия кластера, позволяющий отслеживать успешность обновления кластера на новую версию Picodata (версия кластера обновится когда все инстансы перейдут на новую версию ПО).

Прочие изменения

  • Новые параметры для таблиц и индексов, созданных на движке хранения Vinyl (bloom_fpr, page_size, range_size, run_count_per_level, run_size_ratio, compression_level)
  • Более стабильная работа кластера при ошибках репликации

Полный список нововведений и исправленных ошибок в Picodata 26.1 доступен в документе CHANGELOG.

Обновление с предыдущей версии

Для бесшовного обновления до версии 26.1 убедитесь, что текущая версия кластера соответствует 25.5.9 — последнему релизу линейки 25.5.

Роль Picodata для Ansible

Выпущена новая версия роли Picodata для Ansible, которая совместима с Picodata 26.1. Изменения в роли:

  • имена директорий и unit-файлов для Systemd теперь соответствуют бинарным портам инстансов (совместимость с предыдущими версиями сохранена)
  • в файле report.yml поддерживаются настройки плагина Simurg для аггрегации метрик 
  • исправлены ошибки

    Попробуйте Picodata в деле!

    Для установки Picodata 26.1 следуйте инструкциям на сайте. Готовые пакеты доступны для следующих дистрибутивов Linux:

    Инструкции и руководства по установке, использованию и администрированию Picodata размещены на портале документации Picodata.

    Вопросы и пожелания направляйте в наш Telegram-чат @picodataru.

    Мы готовы предложить оптимальное решение для ваших задач!

    Свяжитесь с нами, заполнив эту форму


      Нажимая кнопку «Отправить», вы даете согласие на обработку персональных данных