Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
Рейтинг: 64.6% · 12 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
Ситуация: пришел новый тимлид из банка, и теперь у нас на каждом ревью война. Он хочет, чтобы расчет скидок, движения по балансу и валидация заказов жили в хранимках постгреса. Аргументы: меньше раундтрипов, целостность рядом с данными, и так делают во всех банках. Я против: хранимки нормально не покрыть юнит-тестами, версионируются костылями, дебажить боль, и под нагрузкой упремся в CPU базы, который скейлится только вертикально. Сервис на go рядом скейлится горизонтально за копейки. У нас обычный b2b saas, 14 человек разработки, postgres 16, нагрузка средняя. Бодаемся уже вторую неделю, рассудите.
✔ Лучший ответ сформирован автоматически — mjp1982
@kayee, Двадцать лет с базами, скажу непопулярное. Движения по балансу это ровно тот случай, где хранимка уместна. Race condition между чтением баланса в приложении и записью ловили когда-нибудь на проде? А я ловил, и разгребал потом минусовые балансы у трех тысяч клиентов. Одна транзакция, один SELECT FOR UPDATE, вся инвариантность в одном месте, и никакой джун из сервиса заказов ее не обойдет. …
Re: Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
✔ Лучший ответ — сформирован автоматически
@kayee, Двадцать лет с базами, скажу непопулярное. Движения по балансу это ровно тот случай, где хранимка уместна. Race condition между чтением баланса в приложении и записью ловили когда-нибудь на проде? А я ловил, и разгребал потом минусовые балансы у трех тысяч клиентов. Одна транзакция, один SELECT FOR UPDATE, вся инвариантность в одном месте, и никакой джун из сервиса заказов ее не обойдет. А вот расчет скидок в хранимке это уже перебор, тут ваш тимлид перегибает. Деньги в базу, маркетинг в код.
- seniorwarlock
- Сообщения: 57
- Зарегистрирован: 12 май 2026, 00:23
Re: Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
@mjp1982, Версионирование решается обычными миграциями, тесты есть pgTAP, это все отговорки. Настоящий аргумент против другой: найм. Найти в 2026 году go разработчика за вменяемые деньги легко. Найти человека, который хочет писать PL/pgSQL, удачи вам. Вся логика в хранимках означает, что вы заложники полутора человек, и когда они уйдут, эту базу никто трогать не будет годами. Видел такое дважды, оба раза кончалось переписыванием с нуля.
Re: Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
Истина посередине и она скучная. Инварианты в базу: constraints, уникальные индексы, check, на самое критичное триггер. Бизнес-правила в приложение. База гарантирует, что данные не противоречивы, код решает, что с ними делать. И раундтрипы лечатся не хранимками, а нормальными батчами и тем, чтобы не делать 40 запросов в цикле.
Re: Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
Расскажу, чем это кончается лет через десять. Работал в конторе, где 300к строк PL/SQL на оракле. Миграцию с оракла оценили в четыре года и не стали делать. Так и платят за лицензии конским курсом через казахстанское юрлицо, потому что переписать некому, авторы уволились до 2020 года. Логика в базе это решение, у которого цена видна не сразу, но она есть и она огромная.
Re: Тимлид тащит всю логику в хранимки PL/pgSQL, я считаю это дорога в ад. Рассудите
@seniorwarlock, придерусь к мелочи, но CPU базы скейлится только вертикально это не совсем правда. читающие реплики никто не отменял, и иммутабельные функции на репликах прекрасно работают. писать да, в одну ноду, но у ТС b2b saas со средней нагрузкой, он в этот потолок упрется лет через пять, если повезет
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Тимлид устраивает публичные порки на дейли, HR говорит он results driven. Терпеть или валить?
11 ответов · 8 просмотров
-
- Тимлид поставил exceeds, после калибровки пришло meets. Кто видел эти комитеты изнутри?
5 ответов · 8 просмотров
-
- На собесе запрещают ИИ, а в вакансии — «опыт с агентами обязателен». Объясните логику
5 ответов · 7 просмотров
-
- Увидел у тимлида белую тему в IDE и не могу развидеть. Кто кодит на светлой, объясните зачем
7 ответов · 7 просмотров
-
- Одинаковый seed, два запуска подряд, разница в F1 два пункта. тимлид говорит руки кривые
7 ответов · 7 просмотров
-
- Тимлид устраивает публичные разносы на дейли, а HR говорит что он эффективный
6 ответов · 7 просмотров
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость