Size: a a a

Software Design/Architecture/Zen

2021 July 19

ГС

Господин Случай... in Software Design/Architecture/Zen
А агрегат контролирует инварианты и тех сущностей которые включает в себя или только совокупные? Получается нужно все методы сущностей переместить в агрегат а сами они станут value-object, в первом случае? У меня вопросы по реализации больше наверное...смотрел примеры на гите но остались вопросы без ответа
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
То есть, "связываются"? В бд это две таблицы один ко многим
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Я бы посоветовал вообще представлять что это прсото объекты\процессы
И что они тоько в памяти хранятся.
Так будетп роще отойти от проектирвания схемы базы данных а не аггрегатов.
На крайнем слуяай что они в условных файдах в виду сереализованых обектов хранятся
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Нет. Каждая сущность контролирует сама себя. Агрегат контролирует только их, пардон, агрегацию.
источник

HH

Human Human in Software Design/Architecture/Zen
Ну вот зачем ты положил какие данные в Customer? Почему Order не может быть агрегатом отдельным?
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Может
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Я так и делаю, но реализовать так не получится
источник

HH

Human Human in Software Design/Architecture/Zen
Почему?)
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Ограничения по памяти
источник

HH

Human Human in Software Design/Architecture/Zen
Имелось ввиду только представить. Не мыслить таблицами бд. Потом конечно можно будет все это замапить на таблицы если нужно
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Ну напрммер, у меня есть Customer у которого 25.000 покупок. Мне нужно взять все которые куплены на прошлой неделе и применить скидку.
Из за ограничений на память я не могу размещать логику скидок в Order агрегате. Где она должна быть?
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Ну, не скидку, а какую то модификацию свойства покупки
источник

V

Viktor in Software Design/Architecture/Zen
Добавить модификацию, ну допустим это столбик какой-нибудь переключить с 0 до 1. Почему нельзя это сделать ВНЕ агрегата допустим?
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
Скорее для видоса нужно сосредоточиться, а не как с статейками, я например всегда смотрю х2 или х4 чтобы максимально включиться в тему, хотя это все ещё медленнее чем читать.
источник

ГС

Господин Случай... in Software Design/Architecture/Zen
Можно, вопрос где и как правильно это сделать
источник

SS

Serega Safonov in Software Design/Architecture/Zen
Возможно нужно при этом какое то событие кидать. Если просто через sql апдейтнуть столбик, то события не будет
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
Условный агрегат скидка
Который знает айди кастомера и количество покупок за прошлую неделю.
Все ничего и никаких изврашений не надо больше
источник

SS

Serega Safonov in Software Design/Architecture/Zen
я бы выбрал id этих покупок за прошлую неделю и каждой асинхронно применил скидку
источник

NF

Nikita Fedorov in Software Design/Architecture/Zen
Почему не можешь, делаешь поле get orders () => query.forLastWeekOrder() и окей, потом просто допишешь метод applyDisc (disc) => orders.all(x => x.disc(disc))
источник

SB

Sergei Baikin in Software Design/Architecture/Zen
выборка всгда отстает от реальных данных
осебнно если чтения с реплики например
поидее нельзя выбирать несколько аггрегатов
Тогда надо будет их всех лочить раз надо над ними всеми операцию произвести так чтобы консистентно.
А локи это уже плохо. Мы и делали агррегаты ради того чтобы границу транзакции только на них применять
А тут нате вам раздвигаем транзакуию на кучу аггрегатов
Ибо пока вот все жто происходит может и новое добавится и старое удалится и время пройти
Вообщем кучу херни произвести
источник