Skip to content

ADR-003: PostgreSQL как единственное хранилище

Status: Accepted · Date: 2026-07-03

Системе нужны: реляционные данные, фоновые задачи с расписанием и ретраями, распределённые блокировки. Целевой масштаб — до ~100 нод и ~100 тыс. клиентов на инсталляцию; типовой оператор — self-hosted.

Всё — в PostgreSQL: данные, очередь задач (River), блокировки (advisory locks). Redis и отдельные брокеры не используются.

Отклонённые альтернативы

Section titled “Отклонённые альтернативы”

Redis + Asynq (предыдущий стек): второй stateful-компонент, который нужно разворачивать, мониторить, бэкапить и объяснять пользователю self-hosted-инсталляции. На целевом масштабе очередь в PostgreSQL держит нагрузку с запасом; транзакционность задач с данными (enqueue в той же транзакции, что и изменение) — бонус, которого Redis-очередь не даёт без outbox.

  • (+) Один компонент для бэкапа и восстановления; меньше страница «Требования».
  • (+) Задача ставится атомарно с изменением данных.
  • (−) При росте нагрузки на очередь на порядки решение пересматривается — это будет новый ADR с измеренными цифрами, а не преждевременный брокер.