lenec ru

← все теги

#postgres

27 постов

Drizzle: relation does not exist — типичные причины

Запускаешь приложение, делаешь первый запрос, и Postgres отвечает:error: relation "users" does not existНа стороне Drizzle никаких компиляционных ошибок нет: схема валидная, типы есть, IDE…

82 17K
Зоя Хомякова

Postgres FATAL: too many connections — как лечить

Postgres падает не от количества SQL-запросов и не от размера базы. Чаще всего у людей в проде он начинает выдавать вот это:FATAL: sorry, too many clients alreadyСообщение прямое: достигнут лимит…

310 11K
Зоя Хомякова

RAG на Postgres и pgvector: пошагово, без танцев с Pinecone

Когда я первый раз делал RAG для рабочей задачи, я честно повёлся на хайп: завёл Pinecone, написал склейки с OpenAI, прикрутил LangChain. Через две недели полез отлаживать, понял, что половину кода…

165 14K
Эмиль Тигров

Миграции БД без даунтайма: рабочие паттерны

Раскатывать схему БД без остановки сервиса — это не магия и не специальный фреймворк. Это набор правил: сначала добавляем, потом начинаем читать и писать обратно совместимо, и только потом удаляем…

233 11K
Игнат Хорьков

Drizzle relations API: подводные камни, которые ловят на проде

Relations API в Drizzle я потрогал ещё на бете и долго относился к нему с прохладцей: казалось, удобнее писать select с join руками, чем учить новый dsl. Спустя год работы с ним на двух проектах могу…

153 10K
Степан Грачёв

Индексы Postgres на пальцах: B-tree, GIN, BRIN и когда что брать

Индексы в Postgres — это та тема, по которой каждые полгода кто-то на работе подходит и спрашивает: «вот тут тормозит, какой индекс воткнуть?». Я решила собрать свой ответ в одном месте, чтобы можно…

242 19K
Вероника Соловьёва

Database per service: критерии, компромиссы и где это правда работает

«У каждого сервиса своя база» — одно из тех правил, которые звучат настолько разумно, что хочется применить везде сразу. На бумаге всё аккуратно: сервисы независимы, релизятся отдельно, схему меняет…

293 10K
Алексей Морозов

ECONNREFUSED 127.0.0.1:5432 — Postgres не отвечает, что делать

Сообщение Error: connect ECONNREFUSED 127.0.0.1:5432 я ловил столько раз, что уже автоматически запускаю чек-лист, не задумываясь. Объясню, что значит ошибка, и пройдусь по всем причинам, которые…

399 10K
Руслан Енотов

Инкрементальные модели в dbt: как настроить, чтобы они не ломались

Первый раз я переключила тяжёлую таблицу фактов с materialized='table' на materialized='incremental' — и через неделю мне в Slack постучался аналитик: «У нас в дашборде дубли». Оказалось, я…

253 13K
Наталья Журавлёва

Postgres 16 → 17: чек-лист апгрейда без сюрпризов

Апгрейд мажорной версии Postgres — отдельный жанр работы. Никакого «pg_upgrade и пошёл», как в туториалах: всегда есть нюансы по расширениям, плану запросов и привычкам приложения. Я в этом году…

407 10K
Вероника Соловьёва

EXPLAIN ANALYZE в Postgres: как читать план запроса

EXPLAIN ANALYZE для меня — главный инструмент, чтобы превратить «запрос медленный» в «вот тут планнер не знает про индекс, добавим». Расскажу свой подход: что я смотрю в плане в первую очередь, какие…

310 10K
Вероника Соловьёва

Drizzle vs Prisma в 2026: бенчмарки, DX и где какой выбирать

Сравнения Drizzle и Prisma я для себя делал дважды: в 2024-м, когда переводил один проект, и в 2026-м, когда переводил второй. За эти полтора года Prisma подтянулась, Drizzle тоже подрос, и…

84 19K
Степан Грачёв

Alembic в реальной команде: миграции без конфликтов merge

Alembic в одиночной разработке — простая штука: alembic revision --autogenerate, alembic upgrade head, поехали. Но как только в репозитории появляются ещё трое разработчиков, начинается боль: две…

248 13K
Дарья Перепёлкина

Бэкап Postgres в Kubernetes: pgBackRest в Helm-чарте, который реально работает

Бэкап Postgres в k8s — это та тема, где много туториалов, но мало кто проверял restore. Я три раза попадал на ситуацию, когда бэкап был, скрипт pg_dump отрабатывал по cron, файлы лежали в S3, а…

99 17K
Дмитрий Орлов

Postgres JSONB vs JSON: когда что выбирать на практике

JSON-типы в Postgres — это история про «выбирай между удобством сейчас и проблемами потом». Я несколько раз ловила и одно, и второе, поэтому хочу разложить, чем JSON и JSONB отличаются на самом деле…

109 18K
Вероника Соловьёва

Миграции БД без даунтайма: рабочие паттерны

«Просто накатим миграцию ночью» — в боевом сервисе так себе план, особенно если у тебя пользователи в нескольких часовых поясах. Я набил несколько шишек с миграциями на горячих таблицах и хочу…

114 13K
Игнат Хорьков

Outbox pattern: как не потерять сообщения при записи в БД

Сценарий, который я разбирал в трёх разных компаниях: сервис принимает заказ, пишет его в Postgres и шлёт событие OrderCreated в Kafka. Логика понятная, код в одном методе, тесты зелёные. На проде…

366 12K
Алексей Морозов

Better Auth с Drizzle и Postgres: настройка с нуля

Этот сетап у меня сейчас стоит на трёх сервисах в проде, поэтому опишу его конкретно: какие файлы, какие команды, какие подводные. Цель — за час получить работающий вход через email/пароль и Google…

117 12K
Тимур Беркутов

Drizzle ORM с Postgres в TypeScript: настройка проекта с нуля

Drizzle я подсадил у себя на проде примерно полтора года назад, когда устал бороться с Prisma на длинных миграциях. С тех пор перевёл на него три сервиса разной величины и, кажется, нащупал…

181 16K
Степан Грачёв

Идемпотентность в HTTP API: ключи, хранение и ретраи на практике

POST на /payments вернул 504. Клиент не знает, прошёл платёж или нет, и нажимает кнопку ещё раз. Через минуту в базе два списания на одного пользователя. Классика, которую я разбирал в трёх компаниях…

223 16K
Алексей Морозов

Бэкап Postgres на S3: Selectel и Yandex Object Storage

База данных без бэкапа — это база, которую вот-вот потеряешь. Я делаю бэкапы Postgres на S3-совместимое хранилище уже несколько лет, и за это время восстанавливалась с них раза три-четыре. Расскажу…

230 16K
Эльвира Соболева

Когортный анализ удержания в SQL: рабочая формула и защита от пересчётов

Когортный retention — одна из тех метрик, которую все считают по-разному, и каждый раз получается «свой» график. Если ты приходишь в компанию и видишь дашборду «retention D7 = 42%», первый вопрос —…

330 15K
Ирина Лисицына

pgvector для семантического поиска: рабочая настройка в Postgres

pgvector прижился у меня в нескольких проектах в этом году: от поиска по базе знаний внутри компании до разметки похожих карточек товара. Расскажу, как я его собираю, какие индексы выбираю и куда…

195 13K
Вероника Соловьёва

Connection pool в asyncpg и SQLAlchemy: как не положить базу

Connection pool — одна из тех вещей, которые работают, пока всё хорошо, и взрываются разом, когда плохо. Сервис тихо обслуживает 200 RPS, а потом приходит пик в 800, и Postgres начинает отдавать…

341 10K
Андрей Крылов

Alembic в реальной команде: миграции без конфликтов

Команда из пяти бэкендеров, две ветки уже неделю в ревью, и кто-то наконец мерджит свою. Через час прилетает второй мердж — и Alembic ругается на multiple heads. CI красный, продовая миграция стоит,…

231 13K
Андрей Крылов

Database per service: критерии, компромиссы и где это правда работает

«У каждого сервиса своя база» — одно из тех правил, которые звучат настолько разумно, что хочется применить везде сразу. На бумаге всё аккуратно: сервисы независимы, релизятся отдельно, схему меняет…

370 13K
Ирина Лисицына

SQLAlchemy 2.0 async: типичные ошибки и как их обойти

За последние два года я переписал три проекта на SQLAlchemy 2.0 в async-режиме и собрал почти полный набор граблей. Самое неприятное — поведение, которое в синхронной версии работало по умолчанию, а…

262 10K
Андрей Крылов