Size: a a a

Software Design/Architecture/Zen

2021 June 29

СМ

Сергей Моисеев... in Software Design/Architecture/Zen
Выбрать сообщения за сегодня и обновить их состояние.
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
каждый агрегат меняется отдельно, каждое отдельное обновление может зафейлится по разным причинам(например кто-то поменял этот же агрегат в момент обновления).
источник

СМ

Сергей Моисеев... in Software Design/Architecture/Zen
Я смотрю люди делают метод например "todayPosts" в репозитори и там внутри уже выборку. И таких методов можно наплодить довольно много.
источник

СМ

Сергей Моисеев... in Software Design/Architecture/Zen
@mkusher Я понял мысль. Возвращаем идентификаторы и по ним уже ищем в репозитории сущности.
источник

V

Viktor in Software Design/Architecture/Zen
А зачем методы выборок в репозитории?
источник

СМ

Сергей Моисеев... in Software Design/Architecture/Zen
Для скорости наверное, когда 1000 сущностей надо вернуть
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
Кстати, я правильно понимаю, что если агрегатом является хранимый в БД достаточно сложный документ, то "дерганье по ID" повлечет за собой 100500 запросов?
источник

СМ

Сергей Моисеев... in Software Design/Architecture/Zen
Ну если реляционная база, наверное
источник

V

Viktor in Software Design/Architecture/Zen
Я про то, что выборка внутри репозитория вообще смысла особо и не имеет
источник

V

Viktor in Software Design/Architecture/Zen
Это же для юишки нужно, скорее всего
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
А шо, есть другие варианты для OLTP?
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
смотря что понимается под достаточно сложным документом. Агрегат должен содержать только ту информацию, которая необходима для принятия решений о совершении операции, если нужен для этого какой-то весь большой-большой документ, то видимо весь придется доставать
источник

DE

Dmitry Eliseev in Software Design/Architecture/Zen
Если нужен отдельный контроль выполнения, то можно выбрать сотню id-ников фетчером в контроллере и уже в шину для каждого отправить сто одиночных команд по обновлению по id.
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
все так, но многие write model юзают для вьюх, потому в репозиториях куча методов для выборок
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
Например спецификация товара. Под ней легко могут оказаться десятки таблиц. Вспоминаю кейс 15-летней давности, ребята вытягивали спек по ID через NHibernate. Насчитал в профпайлере примерно 10К коротких запросов. Общее время загрузки документа из БД в уэб-форму на экране - около 30 секунд. Зато концептуально чисто.
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
а что тут концепутально чистого? А почему это одним запросом достать нельзя? Разные хранилища?
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
В смысле, "одним запросом"? Выбрать 25 таблиц на клиента и там их сканировать?
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
а where в запросе нельзя написать? Я чет совем не понимаю проблему
источник

AK

Aleh Kashnikau in Software Design/Architecture/Zen
или таблицы джойнить нельзя?
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
Вы с маппингом знакомы? Представьте, что вытягивается агрегат, внутри которого сотня разных классов
источник