Базы данных

Что такое PostgreSQL

Что это

Надёжная реляционная база данных — хранит данные строгими связанными таблицами.

Как используем

Основной выбор для продакшена, где важна целостность данных: заказы, клиенты, платежи.

Где база данных нужна бизнесу

  • Заказы, платежи и подписки должны храниться надёжно, а не в чате и не в таблице, которую кто-то случайно отсортировал.
  • Несколько сотрудников или администраторов работают с одними записями одновременно.
  • Бот и сайт должны видеть одни и те же данные.
  • Нужны отчёты по истории: месяц, год, по людям и категориям.

Какие бывают и когда какую

  • SQLite — база в одном файле, без отдельного сервера. Для небольших ботов: карта лояльности клуба, бот дней рождений, кэш расшифровок. Резервная копия — копия файла.
  • MariaDB / MySQL — база WordPress и проектов, где заказчик уже на ней. В биллинге Tech Poly VPN транзакции и блокировка строк в MariaDB не дают засчитать платёж дважды.
  • PostgreSQL — наш выбор для новых проектов с деньгами, историей и аналитикой: финансовый учёт, сервисы с тарифами и ролями, очереди.

Как мы это используем

  • Финансовый ассистент — PostgreSQL 17 в Docker: операции, счета, правила, долги, бюджеты. Ежедневный дамп проверяется на целостность и ротируется, а восстановление можно проверить на отдельной базе, не трогая боевую.
  • UNLOCK — PostgreSQL 17 для открыток, ответов, тарифов и сессий. Отметки времени хранятся как TIMESTAMPTZ, база не публикует порт наружу и видна только сервису.
  • Электронная очередь — PostgreSQL 15 через SQLAlchemy в асинхронном режиме, часовой пояс контейнеров задан явно, чтобы время в чекинах совпадало с московским.

Базу под задачу проектируем в разделе Боты для Telegram и ВКонтакте и Сайты.

Типичные проблемы

  • Бэкап, который не проверяли. Копия, из которой ни разу не восстанавливались, может оказаться пустой. Поэтому восстановление проверяем на отдельной базе.
  • Схема без миграций. В финансовом ассистенте миграций нет, и откат версии делается только из копии базы. Где данных много и схема меняется, нужны миграции.
  • Время без часового пояса. В карте лояльности клуба время в базе хранится в UTC, и это записано в ограничения. В новых проектах храним TIMESTAMPTZ и задаём часовой пояс контейнера.
  • База торчит наружу. Порт базы не публикуется: её видит только свой сервис во внутренней docker-сети.

Когда это не нужно

Небольшому боту на один клуб или одну семью отдельный сервер базы не нужен: SQLite в одном файле проще развернуть и проще сохранить. А сайту с текстами и кейсами база не нужна вовсе: сайт студии живёт на файлах в git.

Ещё в разделе «Базы данных»
← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.