Size: a a a

pgsql – PostgreSQL

2021 January 12

A

Alexander in pgsql – PostgreSQL
Dmitriy
3 - точно нет.  Как вы себе представляете объединить это с коверейджем от кода приложения?
Просто воспринимай в таком случае бд как отдельный микросервис, а хранимки - как api этого микросервиса.
источник

A

Alexander in pgsql – PostgreSQL
У тебя же не возникает вопросов, как мокать для тестирования своего кода другой микросервис?
источник

ДТ

Дмитрий Тремасов... in pgsql – PostgreSQL
Stts stss
Помогите
execute 'insert into status(user_name, day, count) values($1,0,0)' using row.user_name;
источник

D

Dmitriy in pgsql – PostgreSQL
Alexander
У тебя же не возникает вопросов, как мокать для тестирования своего кода другой микросервис?
Нет. Но как в хранимке делать и мокать потом в тесте обращение к другим сервисам - возникает
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Stts stss
кто знает как исправить?
Создай это нещастное поле в таблице, и всё будет ок
источник

W

Warstone in pgsql – PostgreSQL
Dmitriy
Нет. Но как в хранимке делать и мокать потом в тесте обращение к другим сервисам - возникает
А дай пример того как хранимка обращается к внешнему сервису. Конкретно у тебя.
источник

A

Alexander in pgsql – PostgreSQL
Dmitriy
Нет. Но как в хранимке делать и мокать потом в тесте обращение к другим сервисам - возникает
А у тебя ещё и хранимка в другой сервис ходит, а не только в базу?
источник

IZ

Ilia Zviagin in pgsql – PostgreSQL
Alexander
А у тебя ещё и хранимка в другой сервис ходит, а не только в базу?
Вот хранимка, ходящая в другой сервис - это криминал уже...
источник

D

Dmitriy in pgsql – PostgreSQL
Alexander
А у тебя ещё и хранимка в другой сервис ходит, а не только в базу?
У меня вообще хранимок нет. Но если бизнес-логику делать на хранимках, то это вполне себе реальный кейс
источник

W

Warstone in pgsql – PostgreSQL
Dmitriy
У меня вообще хранимок нет. Но если бизнес-логику делать на хранимках, то это вполне себе реальный кейс
Ну тогда функция подключения к внешнему сервису в отдельный пакет и махинации с search_path. Чем тебе не мок?
источник

W

Warstone in pgsql – PostgreSQL
Ilia Zviagin
Вот хранимка, ходящая в другой сервис - это криминал уже...
pl/perlu ^_^
источник

A

Alexander in pgsql – PostgreSQL
Dmitriy
У меня вообще хранимок нет. Но если бизнес-логику делать на хранимках, то это вполне себе реальный кейс
В хранимках надо делать ту бизнес-логику, которая, максимум, касается только данных в базе. Все остальное - это уже однозначно работа для бэкенда на нормальном языке
источник

D

Dmitriy in pgsql – PostgreSQL
Alexander
В хранимках надо делать ту бизнес-логику, которая, максимум, касается только данных в базе. Все остальное - это уже однозначно работа для бэкенда на нормальном языке
Тогда какой смысл бизнес-логику так размазывать? Часть будет в коде, часть в базе...
источник

Ss

Stts stss in pgsql – PostgreSQL
Дмитрий Тремасов
execute 'insert into status(user_name, day, count) values($1,0,0)' using row.user_name;
спасибо
источник

D

Dmitriy in pgsql – PostgreSQL
Warstone
Ну тогда функция подключения к внешнему сервису в отдельный пакет и махинации с search_path. Чем тебе не мок?
Геморрой же полный
источник

A

Alexander in pgsql – PostgreSQL
Dmitriy
Тогда какой смысл бизнес-логику так размазывать? Часть будет в коде, часть в базе...
Потому что в некоторых случаях имеет смысл представить БД другим микросервисам не кишками наружу, а в виде микросервиса-хранилища. Например, когда тебе надо, чтобы доступ к данным получали несколько сервисов. Можно оформить интерфейс к данным в виде сервиса-обертки на полноценном языке, а можно в виде хранимок, и пустить другие сервисы прям базе (разрешив работать только через интерфейс хранимок, разумеется).
источник

A

Alexander in pgsql – PostgreSQL
И будет у тебя не
GET /api/v1/user/i.ivanov
а
select v1_getuser('i.ivanov');
источник

D

Dmitriy in pgsql – PostgreSQL
Alexander
Потому что в некоторых случаях имеет смысл представить БД другим микросервисам не кишками наружу, а в виде микросервиса-хранилища. Например, когда тебе надо, чтобы доступ к данным получали несколько сервисов. Можно оформить интерфейс к данным в виде сервиса-обертки на полноценном языке, а можно в виде хранимок, и пустить другие сервисы прям базе (разрешив работать только через интерфейс хранимок, разумеется).
Если так, то да. Но, опять-таки, если учитывать, что в хранимке нельзя делать обращение к внешним сервисам, то это всё годится лишь для совсем каких-то простейших случаев, где запросы строго в одну БД и больше ничего нет.
источник

A

Alexander in pgsql – PostgreSQL
Dmitriy
Если так, то да. Но, опять-таки, если учитывать, что в хранимке нельзя делать обращение к внешним сервисам, то это всё годится лишь для совсем каких-то простейших случаев, где запросы строго в одну БД и больше ничего нет.
Ясное дело, что это не универсальный рецепт, и он применим только при определенной архитектуре, спроектированной под определенные требования.
Но бывают такие ситуации, когда тебе нужно сделать микросервис-хранилище, чтобы в нем держать весь стейт, не размазывая его по куче микросервисов, у каждого из которых по своей базе, имея при этом головняк с консистентностью данных и связей между ними.
источник

D

Dmitriy in pgsql – PostgreSQL
Alexander
Ясное дело, что это не универсальный рецепт, и он применим только при определенной архитектуре, спроектированной под определенные требования.
Но бывают такие ситуации, когда тебе нужно сделать микросервис-хранилище, чтобы в нем держать весь стейт, не размазывая его по куче микросервисов, у каждого из которых по своей базе, имея при этом головняк с консистентностью данных и связей между ними.
Тогда ясно
источник