Перейти к содержимому

Управляемый PostgreSQL

Управляемый PostgreSQL на платформе ONREZA. Полноценный PostgreSQL с автомасштабированием, ветвлением баз данных и автоматическим засыпанием при бездействии.

  • Serverless compute — выбор и автоматическое масштабирование вычислительных ресурсов
  • Auto-suspend — сервер засыпает при отсутствии запросов, экономя ресурсы
  • Ветвление (branching) — создание изолированных веток БД для preview-деплоев и тестирования
  • Совместимость с PostgreSQL — стандартный протокол и привычные клиенты; доступные расширения зависят от конфигурации сервиса
  • Compute Units — гибкий выбор размера вычислительных ресурсов по плану
  • Pay-as-you-go — PRO-план с включёнными кредитами и оплатой превышения
  1. Выберите workspace и откройте самостоятельный раздел PostgreSQL.
  2. Нажмите Создать базу данных — для Hobby достаточно ввести имя.
  3. Получите строку подключения — пароль всегда доступен через панель управления.
  4. Подключайтесь стандартным PostgreSQL-клиентом либо добавьте базу как интеграцию приложения.

База данных не обязана принадлежать конкретному приложению: её можно использовать как самостоятельный workspace-ресурс и позже подключить к одному или нескольким deployment workflows.

Используйте стандартную строку подключения PostgreSQL:

postgresql://user:password@endpoint.kaiki.onreza.ru:5432/dbname?sslmode=require

При наличии серверного пулинга доступны два режима:

Режим Описание Когда использовать
Pooled Через PgBouncer — пул соединений на стороне сервера Основные запросы, API, фоновые задачи
Direct Прямое подключение к PostgreSQL Администрирование, миграции, LISTEN/NOTIFY

Рекомендуемый режим определяется автоматически. Переключатель доступен в карточке подключения в панели управления — если для вашей БД доступен пулинг, он будет включён по умолчанию.

Пароль базы данных хранится в зашифрованном виде и всегда доступен через кнопку «Показать» в панели управления. Вы не потеряете доступ к БД, даже если не сохранили пароль при создании.

При необходимости пароль можно сбросить — это сгенерирует новый пароль и перезапустит серверы.

В панели доступны готовые примеры подключения для:

  • .env — переменная DATABASE_URL
  • Prisma — конфигурация datasource
  • Drizzle — конфигурация подключения
  • Node.js / Bun — прямое подключение через pg

Добавьте базу как PostgreSQL-интеграцию приложения — DATABASE_URL будет материализован для его deployment environments. Самостоятельная база при этом остаётся workspace-ресурсом. Для preview workflows можно включить создание отдельных веток БД.

Стандартная учётная запись управляемого PostgreSQL имеет права владельца на данные и схему БД. Она не является суперпользователем и не имеет права создания SQL-ролей. Создание отдельных SQL-логинов с ограниченными правами в панели управления не предусмотрено.

ONREZA Functions выполняет SQL с правами сохранённой учётной записи подключённой БД. Авторизация посетителей приложения относится к серверной логике приложения и не меняет SQL-роль подключения. Учётные данные БД предназначены для серверного использования. Интерфейс запросов описан в Runtime SDK.

Владелец таблицы по умолчанию обходит её политики RLS. Режим FORCE ROW LEVEL SECURITY применяет политики к владельцу, но сохраняет его право менять таблицу и политики. Поэтому RLS и отсутствие привилегии BYPASSRLS не превращают учётную запись владельца в ограниченный SQL-логин.

Compute Unit — единица вычислительных ресурсов. 1 CU = 1 vCPU + 4 ГБ RAM.

Размеры вычислительных ресурсов и доступность автомасштабирования определяются лимитами управляемого PostgreSQL. Панель управления показывает поддерживаемые сервисом варианты для текущего тарифа.

Compute тарифицируется в CU-часах. CU-час = 1 час работы сервера при CU size = 1.0. Стоимость пропорциональна размеру: 1 час на 2.0 CU = 2 CU-часа, 1 час на 0.25 CU = 0.25 CU-часа.

Автоматическое вертикальное масштабирование — ресурсы изменяются без рестарта PostgreSQL.

  1. Каждые 15 секунд проверяется потребление памяти сервера
  2. Если использование памяти > 80% — размер увеличивается на следующий шаг
  3. Если использование памяти < 20% — размер уменьшается
  4. Масштабирование ограничено заданным диапазоном минимального и максимального CU

Доступные шаги масштабирования: 0.25 → 0.5 → 1.0 → 2.0 → 3.0 → 4.0 → 5.0 → 6.0 → 7.0 → 8.0. В диапазон входят только поддерживаемые сервисом размеры.

Границы и значения по умолчанию приведены в лимитах управляемого PostgreSQL. Действующий диапазон автомасштабирования задаётся в настройках базы.

Сервер БД автоматически засыпает при отсутствии запросов, экономя compute-ресурсы. При новом подключении сервер пробуждается за 2–3 секунды.

Значение Поведение
По умолчанию Платформа выбирает оптимальный таймаут (~5 минут)
Отключено Сервер не засыпает (consume compute постоянно)
5 минут Засыпание через 5 мин бездействия
15 минут Засыпание через 15 мин бездействия
1 час Засыпание через 1 час бездействия
1 день Засыпание через 24 часа бездействия

Таймаут настраивается в разделе Настройки базы данных. Доступные значения: от 1 минуты до 30 дней.

Ветки (branches) — отдельные состояния базы данных для:

  • Preview-окружений — каждый PR получает свою копию БД
  • Миграций — тестирование миграций на ветке до применения в production
  • Экспериментов — безопасное тестирование с реальными данными

Ветка создаётся мгновенно (copy-on-write) и не занимает дополнительного места до момента изменения данных.

Количество баз данных и дополнительных веток определяется лимитами управляемого PostgreSQL. Учёт расхода баз и веток описан в методике расчёта.

Восстановление на момент времени (PITR) создаёт новую ветку из состояния исходной ветки на выбранный момент. Исходная ветка сохраняется. Доступное окно восстановления отображается в настройках базы данных.

PITR доступен на Hobby, Pro и Enterprise. Восстановление требует прав на изменение БД, доступного бюджета ресурсов и свободного слота дополнительной ветки. Работа восстановленной ветки учитывается в расходе workspace.

Ветки используют общую историю хранения. Независимая резервная копия хранится отдельно от рабочей БД и её веток; ветвление и PITR такую копию не заменяют.

Тарифные ограничения, включённый кредит и дополнительный бюджет описаны в разделе Лимиты и квоты. Действующая конфигурация workspace отображается в панели управления.

Метрика При превышении
Storage БД переводится в режим read-only
Compute Все серверы приостанавливаются
Data Transfer Все серверы приостанавливаются
Ветки Создание новых веток заблокировано

Ограничения снимаются автоматически при:

  • Увеличении плана — переход на PRO/Enterprise (применяется автоматически)
  • Начале нового расчётного периода — usage credit и лимиты расхода обновляются по периоду вашего workspace; его границы показаны в биллинге
  • Очистке данных — для storage: удаление данных или веток
  • Connection pooling — используйте режим Pooled для пулинга соединений на стороне сервера
  • Auto-suspend — сервер засыпает при бездействии, пробуждение при подключении (~2-3 сек). Настройте таймаут в разделе «Настройки»
  • Батчинг запросов — группируйте мелкие запросы, чтобы уменьшить количество пробуждений
  • Меньший CU size — если нагрузка позволяет, используйте 0.25 CU
  • VACUUM — регулярная очистка мёртвых строк
  • Партиционирование — архивирование старых данных
  • Удаление неиспользуемых веток — ветки с изменениями занимают дополнительное место
  • Пагинация — ограничивайте размер выборок (LIMIT/OFFSET или cursor-based)
  • Проекция колонок — запрашивайте только нужные поля вместо SELECT *
  • Кэширование — кэшируйте часто запрашиваемые данные на стороне приложения

Метрики отображаются в разделе PostgreSQL проекта:

  • Использование ресурсов — CU-часы, storage, data transfer с прогнозом стоимости (PRO)
  • Лимиты и использование — прогресс-бары для всех метрик
  • Использование по веткам — разбивка хранилища по каждой ветке
  • Серверы — статус и последняя активность каждого сервера БД
  • Количество баз данных, веток и размеры CU определяются лимитами тарифа
  • Auto-suspend имеет минимальный порог бездействия (1 минута), настраивается в «Настройках» БД
  • Расход ресурсов и применение кредита описаны в методике расчёта

Все операции с управляемым PostgreSQL доступны через nrz db:

Окно терминала
# Создать БД и дождаться готовности
nrz db create --name my-db --wait
# Получить строку подключения
nrz db connection
# Выполнить SQL
nrz db query "SELECT * FROM users LIMIT 10"
# Посмотреть структуру таблиц
nrz db schema
# Управление ветками
nrz db branches
nrz db branches create staging
nrz db branches connection staging
# Настроить auto-inject для деплоев
nrz db config --auto-inject true --preview-branches true

При запуске nrz dev переменная DATABASE_URL автоматически подтягивается из управляемого PostgreSQL и передаётся процессу. Это работает, когда:

  • Проект привязан к платформе (nrz link)
  • У БД включён auto-inject

Для подключения к конкретной ветке:

Окно терминала
nrz dev --db-branch staging

Или укажите ветку в onreza.toml:

[db]
branch = "dev"