Что такое PostgreSQL

Коротко

PostgreSQL (или просто Postgres) — open-source реляционная БД. Самая популярная в мире для production-систем.

Используется в:

  • Стартапы и средний бизнес — стандарт.
  • Большинство SaaS-продуктов.
  • Госуслуги, банки, e-commerce.

Конкуренты: MySQL, SQL Server, Oracle.

Главные особенности

1. ACID-compliance

Полная поддержка транзакций. Можно полагаться, что данные не потеряются.

2. SQL-стандарт

PostgreSQL — самый ANSI SQL совместимый. Многие фичи появились здесь раньше других.

3. Расширения

  • PostGIS — geo-данные.
  • pg_cron — schedule задач.
  • timescaledb — time-series.
  • citus — распределённое хранение.

4. JSON / JSONB

Хранение неструктурированных данных в JSON-формате с поддержкой индексов.

5. Оконные функции, CTE, рекурсия

Полная поддержка с давних версий.

6. Open-source

Бесплатен, можно поднять локально или в cloud.

Версии

  • Postgres 16 (последняя стабильная, 2026).
  • Postgres 15 — ещё много в проде.
  • Postgres 12-14 — legacy.

Каждая версия добавляет performance + features. Обновление — обычно безболезненное.

Типы данных

  • Числа: int2/4/8, numeric, real, double precision.
  • Строки: char, varchar, text.
  • Boolean.
  • Даты: date, time, timestamp, timestamptz, interval.
  • JSON / JSONB.
  • Массивы: int[], text[].
  • Range: int4range, tsrange.
  • UUID.
  • Geometry (через PostGIS).

Больше таких примеров с разборами — в Telegram-тренажёре. Короткие сессии, прогресс по темам, объяснения после каждого ответа.

Зачем аналитику

PostgreSQL — главный OLTP-источник данных в большинстве компаний.

Что аналитик делает в Postgres

  • Read-only queries для отчётов и дашбордов.
  • Извлечение данных для дальнейшего анализа в Python.
  • Создание VIEW для команды.
  • Простые ETL через INSERT INTO ... SELECT.

Что НЕ делает

  • Транзакции в продакшне (это работа backend).
  • DDL (CREATE / DROP TABLE) без согласования.
  • UPDATE / DELETE на production-таблицах.

Postgres vs другие СУБД

Postgres vs MySQL

  • Postgres более ANSI-стандарт, больше фич.
  • MySQL проще, легче администрировать.
  • Postgres лучше для аналитики (CTE, оконные).
  • MySQL быстрее для простых read.

Подробнее.

Postgres vs ClickHouse

  • Postgres — OLTP (транзакции).
  • ClickHouse — OLAP (аналитика).
  • Postgres до 100M строк, ClickHouse от 100M.

Подробнее.

Postgres vs MongoDB

  • Postgres — реляционная.
  • Mongo — документная.
  • Postgres + JSONB закрывает 80% случаев Mongo.

Установка для аналитика

Локально

# Mac
brew install postgresql

# Ubuntu
sudo apt install postgresql

# Windows — скачать с postgresql.org

Запуск: pg_ctl start. Подключение: psql.

GUI клиенты

  • DBeaver — лучший free.
  • DataGrip — JetBrains, платный.
  • TablePlus — Mac/Win/Linux.
  • pgAdmin — официальный, тяжеловат.

Docker (быстрее всего)

docker run -d \
  -e POSTGRES_PASSWORD=mypass \
  -p 5432:5432 \
  postgres:16

Базовые команды для аналитика

Подключение

psql -h localhost -U postgres -d mydb

Информация о таблицах

\dt              -- список таблиц
\d users         -- структура таблицы users
\df              -- функции
\dn              -- схемы

Размер таблицы

SELECT pg_size_pretty(pg_total_relation_size('orders'));

Количество строк

-- Точно (медленно на больших)
SELECT COUNT(*) FROM events;

-- Приближённо (быстро)
SELECT reltuples::bigint FROM pg_class WHERE relname = 'events';

Типичные расширения

pg_stat_statements

Топ медленных запросов:

SELECT query, calls, total_exec_time FROM pg_stat_statements
ORDER BY total_exec_time DESC LIMIT 10;

postgres_fdw

Foreign data wrapper — JOIN из разных Postgres-инстансов.

pgcrypto

Хэширование, шифрование.

Если готовишься к собесу — бот @kariernik_bot закрывает 80% технических вопросов. SQL, Python, A/B, продуктовые метрики — всё в одном месте.

Типичные ошибки начинающих

1. Использовать VARCHAR(N) для всего

В Postgres TEXT и VARCHAR(N) имеют одинаковую performance. Используйте TEXT.

2. Не использовать JSONB

Если данные неструктурированные — JSONB лучше TEXT для JSON.

3. Игнорировать timezone

TIMESTAMPTZ лучше TIMESTAMP для production. Сохраняет TZ.

4. ANSI vs Postgres-specific синтаксис

Postgres-specific: LIMIT, INTERVAL '1 day', ::cast. Они удобнее, но не работают в SQL Server / Oracle.

Производительность

Оптимизация запросов

  • EXPLAIN ANALYZE.
  • Индексы.
  • Vacuum / analyze.
  • Partitioning.

Шпаргалка.

Cloud-варианты

  • AWS RDS Postgres.
  • Google Cloud SQL Postgres.
  • Azure Database for PostgreSQL.
  • Yandex Managed PostgreSQL.
  • Supabase, Neon — современные dev-ориентированные.

Self-hosted — для больших / специфичных. Cloud — для большинства.

Читайте также

FAQ

Postgres бесплатный?

Да, полностью open-source. Платными бывают только managed-сервисы (RDS, GCP).

Надо ли учить администрирование?

Аналитику — не обязательно. SELECT-запросы и базовые CREATE / INSERT хватает.

Postgres подходит для аналитики?

До 100M строк — нормально. Больше — нужен ClickHouse / Snowflake.

Версия Postgres важна?

В целом нет. Но Postgres 13+ имеет улучшенный CTE optimizer (inline вместо forced materialization).