170 похожих чатов

Есть набор операций, который обрабатывает эндпоинт. 1. Создать чат. 2. Создать сообщение. Как

лучше сделать? Двумя отдельными запросами в бд? Или транзакцией, чтобы сделать операцию атомарной? Насколько это будет удар по производительности?

Представим, что мы рассматриваем кейс социальной сети. Спасибо!

20 ответов

33 просмотра

Немного подробнее объясни Зачем тебе создавать сообщение сразу после создания чата?

Gleb- Автор вопроса
Максим
Немного подробнее объясни Зачем тебе создавать со...

ну допустим у меня нет чата между пользователем. я пишу ему сообщение у меня на бэке должно произойти создание чата + к этому чату прикрепляется сообщение

Gleb
ну допустим у меня нет чата между пользователем. я...

В таком случае скорее всего правильнее два отельных запроса сделать 🤔

Gleb- Автор вопроса
Gleb
а почему транзакцией, нет?

Не знаю даже на самом деле

Gleb
ну допустим у меня нет чата между пользователем. я...

У тебя предполагается что 2 пользователя могут создавать 10 разных чатов друг с другом?

эндпоинт, который производит две транзакции из разных доменов - анти паттерн, поэтому сделай атомарные

Gleb
ну допустим у меня нет чата между пользователем. я...

Создаешь чат и дальше все общение идет с чатом а не с пользователями и не надо костыли писать в виде постоянной проверки на чат и долбить сервак

Gleb
ну допустим у меня нет чата между пользователем. я...

POST /startConversation?user_id=...&message=... -> (ChatService delegate) insert into chat ... -> (MessageService delegate) insert into message values ({ chat_id }, ...)

ensi
эндпоинт, который производит две транзакции из раз...

Какой-нибудь post /order под капотом может проводить транзакции в абсолютно разных доменах, от пользователя до оплаты и рассылки уведомлений Почему ты считаешь, что это антипаттерн?

я придерживаюсь религии атомарных эндпоинтов

ensi
я придерживаюсь религии атомарных эндпоинтов

Это бессмысленно, а иногда и практически невозможно в случае сложной структуры проекта. Пример с заказом - не очень хорошо, если клиентское приложение будет последовательно слать запросы на создание заказа, потом на его оплату, потом на рассылку уведомлений

ensi
я придерживаюсь религии атомарных эндпоинтов

А потом приходит заказчик/продукт и говорит что вот эти все изменения надо собрать в большую форму и надо сохранять по одной кнопке

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
Кибер Бомж
8
Карта сайта