Size: a a a

Software Design/Architecture/Zen

2021 June 04

SP

Sergey Protko in Software Design/Architecture/Zen
еще я не люблю глобальный UoW - это удобно что бы по быстрому накидать и не заботиться о границах транзакций. Для маленьких простых проектов вообще топ. Но практика показывает что потом хер проссышь как и чего где меняется
источник

SP

Sergey Protko in Software Design/Architecture/Zen
какие-то отдельные маленькие сервисы для выборок. которые плюются уже готовыми DTO
источник

SP

Sergey Protko in Software Design/Architecture/Zen
в которых родной SQL
источник

R

Roman in Software Design/Architecture/Zen
Но ведь тогда размазываются знания о том, как и где мы храним данные по проекту. Понятно, что переехать с базы на базу — это скорее миф. Но если меняется схема, нужно будет исправить тысячу мест
источник

ST

Serguei Tarassov in Software Design/Architecture/Zen
Если система хранения на уровне файловой, то да. А если это СУБД с моделью данных по уровню, близкому к модели ПрОбл - нужно ей пользоваться
источник

SP

Sergey Protko in Software Design/Architecture/Zen
1. схема меняется не так часто и не так координально
2. зависит от того как ты делаешь мэппинги и т.д. Где-то что-то менять в любом случае нужно будет. Куда интереснее когда изменения схемы влияют не на resultset а на саму логику фильтрации - тут твои ORM-ы тебе не помогут и количество изменений будет таким же. А для резалтсэтов все попроще и опять же их не миллион.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть условно. Решили мы добавить новое поле - посчитай количество изменений. Нужно переименовать поле - в любом случае будем делать добавление/миграцию/удаление в несколько этапов что бы обратная совместимость.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
вот эта штука про "абстракция от СУБД" была полезна во времена когда все пытались продукты коробочными делать что бы мол "ой запускайте хоть на postgresql хоть на mysql" и т.д. Сейчас все движется в сторону cloud  или более жестких требований для on-premise.
источник

SP

Sergey Protko in Software Design/Architecture/Zen
можно конечно как Убер раз в 2-3 года переезжать с mysql на postgresql и обратно, но у них "спефицика". могут себе позволить
источник

MT

Max Trifonov in Software Design/Architecture/Zen
А в чем, собственно, минус репозитория как ответственного сборщика (не важно read/write)? С делегированием именно ему (репозитарию) схемы мапинга (опять же, что из одного, что из нескольких хранилищ через  storages). Без сомнения, кода может быть больше (но сделать 2 read/write, а-ля cqrs, как вариант)
А уже и сервисы и агрегаты все-же через репозиторий  гонять...
источник

MT

Max Trifonov in Software Design/Architecture/Zen
И изменений, при смены мапинга, будет меньше
источник

МФ

Максим Федоров... in Software Design/Architecture/Zen
не размазываются — не смешиваются изначально

домен — про бизнеси данные, необхожимые для бизнесухи
UI — отдельные знания, условн оговоря название на бирке и название бренда или описание товара никак не участвует в логике самого товара (неожиданно) условно
источник

SP

Sergey Protko in Software Design/Architecture/Zen
предположим что у тебя есть некий сводный отчет по продажам разбиты поквартально скажем. тебе там и заказы нужны, и покупатели, и поставщики, и категории товаров... в какой репозиторий ты это будешь складировать?
источник

MT

Max Trifonov in Software Design/Architecture/Zen
Я разделю это контекстами
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть достать кучу данных из кучи хранилищь и "переизобретать sql на уровне приложения"?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
и давай не будем пока усложнять пример распределенными приложениями
источник

SP

Sergey Protko in Software Design/Architecture/Zen
ну то есть, есть кейсы когда структуры данных на запись и на чтение если не 1:1 то "достаточно похожи". В этом случае все упирается только в ISP из SOLID
источник

SP

Sergey Protko in Software Design/Architecture/Zen
опять же тебе никто не мешает складировать все это в одном классе и разделять интерфейсами
источник

MT

Max Trifonov in Software Design/Architecture/Zen
Согласен
Просто везде нужен компромисс
источник

MT

Max Trifonov in Software Design/Architecture/Zen
+
источник