
Sergey
15.02.2018
19:54:09
первое - для твоего агрегата, второе - для операций которые вовлекают несколько агрегатов из разных контекстов
(по сути процесс)

Serge
15.02.2018
19:58:38
Про агрегаты надо курить сильно. А то я пока додумался только до того, что агрегатов у меня чуть ли не всего два-три, но что делать с остальной сотней структур я, как старый дбшник, ума не приложу. Придётся почитать Вернона повнимательнее и порисовать на бумажках.
Ивенты сейчас использую вообще не из aggregate root, а из хэндлеров команд (юз-кейсов), они больше знают о контексте. И по сути, ивенты — механизм декаплинга подсистем.

Google

Sergey
15.02.2018
20:04:20
и тот факт что у тебя сервисы-хэндлеры больше знают о контекстах явно следствие того что ты пока можешь выделить только парочку агрегатов из сотни структур)
вообще по поводу майнд шифта
для меня самым большим потрясением стало осознание факта того, что если данные логично сгруппировать в одной сущности, сущность не является от этого одной
ну то есть раньше я как делал - есть скажем продукт. Это одна какая-то структура данных которая хранит все что связано с этим продуктом. Стоимость, описание, кто продает и т.д.
теперь я представляю себе продукт как совокупность сущностей, каждая из которых может быть в разных контекстах и все что их связаывает - общий ID
то есть ProductPrice, ProductAvailability, ProductDetails, Configuration и т.д.
то есть сущностей становится больше, но сами они становятся намного проще


Bohdan
15.02.2018
20:08:32
VO?

Sergey
15.02.2018
20:08:39
внутри могут быть VO

Bohdan
15.02.2018
20:09:19
да, сорри, чуть мимо
неиммутабельные VO получаются :D но это оффтопик, сейчас мне интнереснее почитать

Sergey
15.02.2018
20:09:34

Google

Sergey
15.02.2018
20:09:57
идея в том что это все "продукт" в разных контекстах

Bohdan
15.02.2018
20:10:15
забей на те комменты, у меня вечерний тупняк в процессе

Sergey
15.02.2018
20:10:21
в контексте резервации товаров, в контексте продукт плэйсмента, в контексте формирования цены и т.д.

Bohdan
15.02.2018
20:10:25

Sergey
15.02.2018
20:10:42
да да, он хорошо мысль которая у меня год вертелась в голове сформулировал

Bohdan
15.02.2018
20:11:15
а на уровне кода как это организовать?
embeddable?

Sergey
15.02.2018
20:11:29
классы, файлы)) как еще?)

Bohdan
15.02.2018
20:11:32
не совсем то
доктрина

Sergey
15.02.2018
20:11:36
нет, полноценные сущности
разные таблички

Bohdan
15.02.2018
20:11:48
uuid спасет, да... хм.

Sergey
15.02.2018
20:11:52
вообще полностью разрезано все
да, и все на uuid, но можно и на секвенсах - просто будет одна последовательность для всех табличек

Bohdan
15.02.2018
20:12:13
да, тут первая мысль отношения one to one
ну для сиквенсов нужна постгря, а я в нее пока не умею

Sergey
15.02.2018
20:12:26

Bohdan
15.02.2018
20:12:39
привычка - страшная сила

Google

Maksim
15.02.2018
20:12:50

Serge
15.02.2018
20:12:57
что-то во всём этом определённо есть.

Bohdan
15.02.2018
20:13:37

Sergey
15.02.2018
20:13:49

Maksim
15.02.2018
20:13:57

Bohdan
15.02.2018
20:13:59
меня смущает только количество запросов на это в теории

Sergey
15.02.2018
20:14:43
и в целом весьма удобненько
просто много where in запросов
+ удобно делать кэширование)
а треть всех сущностей вообще выходили read only

Sergey
15.02.2018
20:15:54
например у меня была сущность юзера из которой можно выдрать сущность "реферал" с одним полем по сути, и сделать ее полностью read only и хранить в том же secondary level кэше

Bohdan
15.02.2018
20:16:04
даже на примере того же продукта в рамках отображения каталога в зависмости от степени декомпозиции может быть 3-6 запросов на продукт

Sergey
15.02.2018
20:16:19
ну вот у меня 5-6 было на список заказов
но там у меня еще продукты были как одна сущность

Bohdan
15.02.2018
20:16:29
кеширование да, но его тоже на практике не делал, потому плаваю в теме

Sergey
15.02.2018
20:16:31
ну было бы 10 запросов
мега примитивных

Bohdan
15.02.2018
20:16:49
where in разве примитивные?

Google

Sergey
15.02.2018
20:16:59

Bohdan
15.02.2018
20:17:03
насколько помню, они довольно весомые

Sergey
15.02.2018
20:17:17
с чего бы им быть тяжелыми?
короч меня 10 запросов на "достать список заказов" более чем устраивает)

Serge
15.02.2018
20:17:54

Sergey
15.02.2018
20:17:59
ну и опять же, в моей любимой постгре я всегда могу сделать вьюшку)

Maksim
15.02.2018
20:18:06
сказка с мускуля древней версии.

Bohdan
15.02.2018
20:18:08

Sergey
15.02.2018
20:18:28

Admin
ERROR: S client not available

Bohdan
15.02.2018
20:18:30
по PK - ну да, индексы, это не по контент полям все же

Serge
15.02.2018
20:18:57

Sergey
15.02.2018
20:19:18
да, мэппер запросов в DTO, вьюшки, кэш

Bohdan
15.02.2018
20:19:21
опять-таки
как вьюшки дружат с доктриной?
та же фигня - теоретически понимаю, что это, но на практике не делал

Sergey
15.02.2018
20:19:23
куча вариантов как это можно сделать

Bohdan
15.02.2018
20:19:44
чистые запросы?

Sergey
15.02.2018
20:19:44
с вьюшками через SQL работай типа
да, это не так страшно как ты думаешь

Google

Serge
15.02.2018
20:20:51
ээ, почему через SQL? С точки зрения любого ORM пофигу абсолютно.
ибо пофигу даже с точки зрения селекта

Sergey
15.02.2018
20:21:30

Serge
15.02.2018
20:21:31
если вы про вьюшки дб

Sergey
15.02.2018
20:21:43
та ORM о которой мы говорим заточена под write операции, там встроенный UoW, Data mapper и все такое.
на read они предлагают юзать sql + dto

Serge
15.02.2018
20:23:09
хм, на выходных почитаю. Доктрину я так по большому счёту не использовал в бою. Под капотом у меня обычно оракл или постгре.

Bohdan
15.02.2018
20:23:24
у них там свой маппер есть на дто? или самому писать?
насчет оракла не уверен правда

Sergey
15.02.2018
20:23:45

Bohdan
15.02.2018
20:23:51
dql?

Sergey
15.02.2018
20:23:55

Bohdan
15.02.2018
20:24:02
блин, где-то на днях такую штуку видел

Sergey
15.02.2018
20:24:05
dql?
или query builder - это не столь важно

Serge
15.02.2018
20:24:06
тогда вот ей не пофиг, что во FROM стоит?..

Sergey
15.02.2018
20:24:22
НО! ты можешь мэппинг подсунуть под любой запрос, просто это больше работы
и мало кто так делает, а потому инстументарий не развит

Maksim
15.02.2018
20:25:08
PDO::FETCH_CLASS , как вариант

Sergey
15.02.2018
20:25:25
а что если тебе надо иерархию какую?)