Релиз Picodata 25.2

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

Команда разработчиков Picodata рада сообщить о выпуске новой версии нашего основного программного продукта — Picodata 25.2. В этой версии добавлены новые команды SQL, внедрена система определения типов данных, улучшена поддержка протокола PostgreSQL, добавлены новые метрики, улучшена работа в консоли и сделано множество небольших, но важных доработок.

Расширение возможностей SQL

В Picodata 25.2 мы расширили возможности языка SQL в Picodata, добавив поддержку новых команд:

Также добавлена новая скалярная функция instance_uuid.

Новая система типов

Другое крупное улучшение — новая система типов, которая также расширяет возможности SQL и важна с точки зрения совместимости с PostgreSQL. Раньше, в параметризованных запросах было необходимо указывать типы явно. Сделать это можно было явно с помощью клиентской библиотеки, но не все клиенты это поддерживали. В подобных случаях типы параметров приходилось указывать в SQL через CAST параметра к нужному типу. С новой системой для большинства запросов в этом пропадает необходимость, но сохраняется возможность указать типы явно через CAST. Кроме того, новая система типов позволяет выводить более осмысленные сообщения об ошибках для неверных запросов, а также использует более удобные для пользователя умолчания.

Примеры обработки ошибок:

SELECT int_col + text_col;
--
-- error: could not resolve operator overload for +(int, text)
SELECT COALESCE(int_col, text_col);
--
-- error: COALESCE types int and text cannot be matched
VALUES (1, 2), (2, false);
--
-- error: VALUES types unsigned and bool cannot be matched
SELECT CASE WHEN true THEN 1 ELSE false END;
--
-- error: CASE/THEN types unsigned and bool cannot be matched
UPDATE t SET numeric_col = false;
--
-- error: column "numeric_col" is of type numeric, but expression is of type bool
INSERT INTO t (int_col, numeric_col) VALUES (false, 1);
--
-- error: INSERT column at position 1 is of type int, but expression is of type bool

В ряде случаев теперь нужно указывать тип явно. Так, вместо

SELECT 1 + (SELECT $1);

следует использовать

SELECT 1 + (SELECT $1)::int;

Система типов теперь пытается автоматически определить тип данных из контекста. Это позволяет не указывать тип явно в таких случаях как:

SELECT * FROM t WHERE a = $1

(тип $1 будет взят из колонки a), или:

INSERT INTO t (int_col) VALUES ($1)
UPDATE t SET int_col = $1

(в обоих случаях тип $1 будет взят из колонки int_col).

При отсутствии контекста (например, SELECT $1), система типов по умолчанию считает переданный параметр текстом.

Совместимость c PostgreSQL

В Picodata 25.2 мы отказались от устаревшей встроенной консоли (picodata connect) и сосредоточились на поддержке подключения по протоколу PostgreSQL. Рекомендуемый способ взаимодействия с Picodata — использовать клиентское приложение PostgreSQL, такое как psql. Для готовых пакетов Picodata мы добавили psql в качестве зависимости, а в остальных случаях его можно легко установить в Linux отдельно (без необходимости устанавливать сам сервер БД PostgreSQL). Также, при подключении по протоколу PostgreSQL теперь по умолчанию включен безопасный режим (SSL).

Улучшенный мониторинг

В Picodata 25.2 доработан дашбоард для мониторинга кластера через Grafana. Также добавлены новые метрики в формате Prometheus. Мониторинг кластера стал более информативным:

…и многое другое!

Другие заметные новинки и изменения в Picodata 25.2:

  • Пользователи с ролью public теперь по умолчанию могут читать системные таблицы _pico_instance и _pico_peer_address
  • Привилегия DROP не позволяет удалять системные таблицы
  • В административной консоли (picodata admin) в Lua-режиме (\lua) больше не требуется разделитель команд
  • В командной строке теперь допускается указывать только полную комбинацию HOST:PORT
  • Для команды picodata expel больше не требуется указывать имя кластера (параметр --cluster-name будет удален в следующем мажорном релизе Picodata)
  • Команда picodata status теперь показывает больше полезной информации и использует компактное форматирование вывода
  • Задание/изменение пароля для пользователя с типом аутентификации LDAP запрещено в SQL
  • RPC-запросы со стороны плагинов теперь исполняются локально во всех случаях, когда это возможно

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

Роль Picodata для Ansible

Дополнительно, мы развиваем роль Picodata для Ansible, что позволяет удобно управлять распределенным кластером. С picodata-ansible доступны все возможности, включая работу с тирами, развертывание плагинов, а также многие дополнительные функции (например, возможность использования системы управления процессами supervisord взамен systemd для управления кластером).

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

Для установки Picodata 25.2 следуйте инструкциям на сайте. Кстати, мы обновили список поддерживаемых ОС и теперь предоставляем пакеты для следующих дистрибутивов Linux:

  • Astra 1.8
  • Debian 12 (bookworm)
  • RHEL/Rocky 9
  • Fedora 41–42

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

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