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

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

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

45 ответов

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

Логическая

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

так то понятно, что без референсов хочешь, но если тебе нужен будет 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, я же это называю 'приведение к типу'

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

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

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

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

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

#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Карта сайта