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

Приветствую ) Вопросик: Пытаемся развязать между собой сущности с помощью

общения через Id а не связи и подконтесты/контексты. В базе нет FK. Плюс Модули разных контекстов не должны знать друг о друге. Ну в общем как тут рассказывают и в книжках :)
Как архитектурно реализовать минимальную целостность ids? Т.е. проверить наличие сущности в другом контексте.
Делать какой-то Common/Gateways и в нем интерфейс с exist методом ?

45 ответов

45 просмотров
Павел-Г. Автор вопроса

Логическая

Павел Г.
Логическая

так то понятно, что без референсов хочешь, но если тебе нужен будет join какой нить, то по чем будет поиск в бд?

Павел Г.
А как join зависит от FK?

ну так сделай их FK, или у тебя нет уникальности их?

Павел-Г. Автор вопроса
Павел-Г. Автор вопроса
Michel Angelo
странно...

Ну смотри, есть два контекста например. Ведут рахные разрабы их. При FK есть зависимость их работы. Должны быть созданы таблицы,заведены данные. Сложности одни. + FK лишняя нагрузка на базу.

повышать достоверность входящих айдишников, понижать возможность прихода ошибочного айдишника в даунстрим сервисе. Сделать все, чтобы если пришел новый айдишник, то он 100% есть. Так же можно предусмотреть компенсационные действия если апстрим сервис отрапортует об ошибочности ранее высланного айди

Павел-Г. Автор вопроса
Дмитрий Ткаченко
повышать достоверность входящих айдишников, понижа...

Это понятно , я банально могу сходить в другой сервис, репу и т.д. Как сделать это красиво :)

Павел Г.
Это понятно , я банально могу сходить в другой сер...

зачем тебе ходить? если у тебя есть айди, значит он существует в соседнем сервисе, иначе сделать так, чтобы айдишника у тебя не было в случае ошибки/удаления

а зачем тебе метод exists? в какой момент ты его хочешь вызывать?

Павел-Г. Автор вопроса
Павел-Г. Автор вопроса
Valentin Gerbey
а зачем тебе метод exists? в какой момент ты его х...

В каком нить бизнес процессе, или в контроллере прям

Павел Г.
Прилетел с формы, хрен знает что за id

а как так получается что у тебя raw данные, которые тебе не принадлежат приходят и тебе нужно делать ассампшоны насчет этих данных?

Павел-Г. Автор вопроса
Дмитрий Ткаченко
а как так получается что у тебя raw данные, которы...

Сложно написано... не все понял. Прилетели данные с фронта. Фронт ошибся, или кто то спамит невалидными данными

Павел Г.
Прилетел с формы, хрен знает что за id

вот чтобы ни абы какой, то приведи id к vo, и читаемость улучшит, ну и кое как будет фильтровать

Павел Г.
Сложно написано... не все понял. Прилетели данные ...

в целевом модуле ничего не делаешь и ничего не вызываешь, сначала пропускаешь данные с фронта через тот модуль, который может подтвердить или опровергнуть данные.

Павел-Г. Автор вопроса

Этот вариант нравится вполне :) Поэтому совета и просил)

Павел Г.
Ну смотри, есть два контекста например. Ведут рахн...

+FK лишняя нагрузка на базу? 🥺 а чем отличается нагрузка на бд FK от обычного кей?

Павел-Г. Автор вопроса
Павел Г.
То что проверка целостности и дедлоки

проверка целостности чего? Дедлоки? у тебя что там, конкурентные запросы?

Павел-Г. Автор вопроса
Michel Angelo
проверка целостности чего? Дедлоки? у тебя что та...

Целостости что FK есть в другой таблице, каждый раз чекать. Дедлоки - к слову сказал, но проблема такая у FK есть

Павел Г.
Этот вариант нравится вполне :) Поэтому совета и п...

мне кажется тебе надо больше задумыватьяс когда ты что то делаешь, а не просто делать потому что где то написано, как с этитим фк, ты удалил FK, что бы "развязать модули" и сразу решил добавить Gateway с методом exits что бы их быстреньке связать назад только уже своими костылями

Павел-Г. Автор вопроса
Valentin Gerbey
мне кажется тебе надо больше задумыватьяс когда ты...

Согласен, поэтому и спрашиваю. Без ФК я получаю видимые плюхи в виде более простой разработки и меньше зависимостей между разрабами. Более простое заполнение базы и тестов

Павел-Г. Автор вопроса

Например мы с напарником сейчас пилим паралельно сущности, у них есть связи (логичские через id). Без ФК мы не ждем друг друга и прекрасно справляемся :) С ФК было бы сложнее.

А зачем это проверять? Ну добавишь ты проверку на existing. А потом эта сущность пропадет из другого контекста. И что тогда

Павел Г.
Например мы с напарником сейчас пилим паралельно с...

и все таки если связи в одном модуле (контектсе), не вижу ничего плохого в fk, ты больше получишь оверхеда, чем профита от 'развязал сущности'

Павел-Г. Автор вопроса
Alexander
А зачем это проверять? Ну добавишь ты проверку на...

Это уже другой вопрос. Некоторые вещи softdelete, некоторые удалять ивентами и как то уже решать по бизнесу. Для чего: 1) чтобы прям откровенный шлак не лежал 2) фронт был консистентный а не проверял везде на null

Павел-Г. Автор вопроса
Павел Г.
Это уже другой вопрос. Некоторые вещи softdelete, ...

Может эти две модели должны быть вместе тогда?

Павел-Г. Автор вопроса

Так а что плохого случится если не будет айди в другом контексте или целостности? Весь прикол изготовления от связей fk или ссылочных это в том что пофиг есть в данном месте или нет. За это отвечает тот процесс которому надо обе эти штуки и знает что делать если они есть или нету.

Павел-Г. Автор вопроса
Sergei Baikin
Так а что плохого случится если не будет айди в др...

Ну пример - кривой фронт. Или нарушится какой-либо процес, и это надо компенсировать.

Павел Г.
Ну пример - кривой фронт. Или нарушится какой-либо...

Исправить фронт? Или процесс? И все. Ну и а что меняется если кривой fk также надо компенсировать. Обсолютно тоже самое вроде

Sergei Baikin
Так а что плохого случится если не будет айди в др...

согласен, всегда есть корень, который ссылается на другую сущность, в редких кейсах требуется ссылаться и в обратную сторону

Michel Angelo
согласен, всегда есть корень, который ссылается на...

Не понял но ладно. Вообще айди это обычно всё что обьедняет. Корень это про агрегаты. А не про независимые процессы.

Павел-Г. Автор вопроса
Sergei Baikin
Исправить фронт? Или процесс? И все. Ну и а что ме...

Как исправить фронт ? Вот допустим есть связь. Я присылаю какую нить структуру json фронту, ну не знаю order а в нем профиль заказчика краткий. По какой то причине там лежит некорректный userId в БД у order. Выходит я пришлю пустого юзера. Фронту надо это тоже как то обрабатывать, мне как то обрабатыват чтобы сделать nullable, зачем?

Павел Г.
Как исправить фронт ? Вот допустим есть связь. Я ...

Так джоин в этом случае просто ничего не вернёт и всё

Павел-Г. Автор вопроса
Sergei Baikin
Так джоин в этом случае просто ничего не вернёт и ...

Да, но мне надо сделать обработку чтобы прислать или null или profile и тоже самое сделать фронту. Вопрос зачем?

Разве у VO могут быть id?

Алексей
Разве у VO могут быть id?

большинство понимает это как vo, я же это называю 'приведение к типу'

сори, ваш ответ в контексте корректный, а вопрос на который вы отвечали — нет у меня произошел мисматч ответа и вопроса

Максим Федоров
сори, ваш ответ в контексте корректный, а вопрос н...

Ну да. Если отдельно взять вопрос и ответ, то фигня какая-то)

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта