Мы рады сообщить о выходе 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— проверка проблем репликации во всём кластере. По умолчаниюtruesql_log— вывод журнала SQL-операций в общий журнал Picodata. По умолчаниюfalsesql_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:
- RHEL 8-9 и совместимые с ним дистрибутивы, например Rocky Linux
- Fedora 42-43
- РЕД ОС 7.x и 8.х
- Astra Linux 1.7 и 1.8 SE
- Debian 11 “Bullseye”, 12 “Bookworm” и 13 “Trixie”
- Ubuntu 22.04 (Jammy Jellyfish), 24.04 (Noble Numbat) и совместимые дистрибутивы
- Семейство Alt Linux на основе платформы p10
- ROSA Chrome (платформа 2021.1)
Инструкции и руководства по установке, использованию и администрированию Picodata размещены на портале документации Picodata.
Вопросы и пожелания направляйте в наш Telegram-чат @picodataru.