PostgreSQL

Спрашивайте свою базу PostgreSQL словами, без SQL

Средний чек считается запросом к вашей базе, а медленный отчёт агент разберёт через EXPLAIN. Только чтение: SELECT, WITH, SHOW и EXPLAIN от отдельной роли.

Примеры: PostgreSQL

PostgreSQL
Реальные чаты: выберите вопрос
Посчитай средний чек за июнь

Средний чек за июнь: 4 380 ₽, на 6% выше мая.

Взял из orders и order_items, оплаченные статусы, 12 940 заказов. Отменённые и тестовые исключил, без них картина ровнее на 200 ₽.

Средний чек · июнь

Документ · DOCX
Открыть в чате

Как агент работает с PostgreSQL

Агент подключается к базе напрямую по параметрам (хост, порт, имя базы, пользователь, пароль и, если нужен, корневой сертификат) и начинает с обзора схемы: список таблиц, их колонки и типы. Дальше SQL он пишет сам: считает выручку, средний чек и конверсию, сопоставляет строки с данными других подключённых сервисов и показывает, из каких таблиц и колонок взята каждая цифра. Тот же запрос можно поставить на расписание и получать результат регулярно.

Особенность именно PostgreSQL, которую агент учитывает: роль с pg_read_all_data не обходит row-level security. Таблица под RLS без политики SELECT вернёт ноль строк, и это не «данных нет», а «доступа нет», о чём агент говорит прямо. Так же он читает и пустой результат обычного запроса: сначала проверяет, есть ли строки вообще, и только потом называет цифру нулём. Схему агент перечитывает перед разбором, поэтому переименованная колонка или новая таблица подхватываются без переподключения.

На запись агент в базу не ходит: коннектор пропускает только SELECT, WITH, SHOW и EXPLAIN, по одному запросу за вызов и с лимитом строк, а INSERT, UPDATE и любые DDL отклоняет до отправки в базу. Это устройство самого коннектора, а не настройка, которую можно снять из чата, поэтому подключение остаётся аналитическим по природе: агент читает, считает и объясняет, из чего сложился результат, но ничего в базе не меняет.

Доступ агент получает не входом через сервис, а логином и паролем отдельной роли, поэтому его границы задаёте вы: агент видит ровно то, что видит эта роль, и расширить их из чата нельзя. Каждый запрос коннектор ограничивает по времени и по числу строк, а слишком тяжёлый обрывает по таймауту, вместо того чтобы висеть на рабочей базе. Если таблицы нет или права не дают её прочитать, агент скажет об этом прямо, а не покажет пустую таблицу.

Сценарии интеграции

Вопрос к базе без SQL

Агент сам разберёт схему (таблицы, колонки и связи) и ответит на вопрос по данным, не требуя от вас ни строчки SQL.

Метрики прямо в базе

Агент посчитает выручку, средний чек и конверсию запросом к вашей базе и покажет, из каких таблиц и колонок взяты цифры.

Регулярная сводка по данным

Агент по расписанию прогонит один и тот же запрос (вчерашние продажи или всплеск отказов) и пришлёт результат.

Сверка с внешними сервисами

Агент сопоставит строки вашей базы с данными подключённых сервисов и покажет расхождения по заказам или платежам.

Что вообще лежит в базе

Агент перечислит таблицы, колонки и типы и объяснит, где какие данные лежат: первое, что нужно на входе в чужую или давно забытую базу.

Разбор тяжёлого запроса

Агент прогонит EXPLAIN по нужному запросу и покажет, где план уходит в полный перебор таблицы, до того, как отчёт снова упрётся в таймаут.

Как подключить

Перед подключением

  • Права владельца базы или суперпользователя для SQL-консоли
  • PostgreSQL 14 или новее, иначе права выдаются вручную
  • Публичный адрес базы и доступ к её TCP-порту с адресов из списка ниже
  • Правила брандмауэра и hostssl в pg_hba.conf для выбранной базы и роли
  • TLS 1.2 или новее с проверкой цепочки и имени сервера (verify-full)
  • IP SAN для подключения по IP; корневой сертификат PEM для своего CA
  • Из облака подключение идёт с адресов 158.160.205.91 и 87.228.27.163. Разрешите им TCP-порт базы в брандмауэре ВМ и hostssl в pg_hba.conf для выбранной базы и роли.
  1. 1

    В SQL Editor или psql создайте роль LOGIN

    В «SQL Editor» Supabase или Neon, иначе в psql под владельцем: CREATE ROLE analytics_ro LOGIN PASSWORD '…'. Пароль роли станет паролем подключения.

  2. 2

    Выдайте роли GRANT pg_read_all_data

    GRANT pg_read_all_data TO analytics_ro (PostgreSQL 14+). Иначе для каждой схемы, не только public: GRANT USAGE ON SCHEMA и GRANT SELECT ON ALL TABLES IN SCHEMA.

  3. 3

    Проверьте row-level security

    pg_read_all_data не обходит row-level security, а в Supabase она включена почти везде: без политики SELECT такие таблицы вернут ноль строк.

  4. 4

    Разрешите доступ к порту базы по TLS

    На ВМ разрешите порт базы в брандмауэре и hostssl в pg_hba.conf для роли, базы и адресов из требований. У облачного провайдера настройте аналогичные правила.

  5. 5

    Укажите хост, порт и корневой сертификат

    Хост должен совпадать с именем в сертификате; для IP нужен IP SAN. Укажите порт базы и её имя. TLS всегда verify-full; для своего CA загрузите корневой сертификат PEM.

Частые вопросы

Параметрами подключения, а не входом через сервис: хост, порт, имя базы, пользователь, пароль и, если провайдер подписывает базу своим CA, его корневой сертификат. Заведите роль только на чтение (CREATE ROLE analytics_ro LOGIN PASSWORD и GRANT pg_read_all_data), её логин и пароль и вводятся в форме.

Список таблиц, колонки и типы и результаты SELECT в пределах прав роли. Роль pg_read_all_data не обходит row-level security: таблицы под RLS без политики SELECT вернут ноль строк.

Нет. Разрешены только SELECT, WITH, SHOW и EXPLAIN, по одному запросу за вызов и с лимитом строк; INSERT, UPDATE и любые DDL коннектор отклоняет.

Поддерживается и PostgreSQL на своей ВМ с публичным адресом. Укажите настроенный TCP-порт базы, в том числе нестандартный. В брандмауэре ВМ разрешите этот порт с постоянных адресов Сам Решу из требований на этой странице, а в pg_hba.conf добавьте hostssl для этих адресов, выбранной базы и роли только на чтение. У облачного провайдера настройте аналогичные правила. Успешное чтение из DataLens или проверка с самой ВМ не подтверждают доступ с этих адресов.

Категория
Базы данных
Подключение
По API-ключу
Документация
PostgreSQL

Подключите PostgreSQL

Подключение занимает пару минут, данные остаются в ваших системах.

Подключить