2015-07-10 5 views
0

Где-то далеко, далеко в доменном галактике есть упоминание оПравильная конструкция совокупных корней

    «значений измерений»
  • и «Места»
  • Каждый «Измеренное значение» происходит от/принадлежит конкретный «Place»
  • Каждый «Измеренное значение» зарегистрирован на данной дате & времени и данного, определенного типа (например, расход воды, ветра и т.д.)
  • Каждый «Place» имеет имя и коллекция " Измеряемые значения ", которые регистрируются

Учитывая мою текущая модель, где «место» являются совокупным корнем, который содержит «значение измерения» У меня есть дилемма:

Пользователи хотят посмотреть один тип значений измерений в то время, и есть довольно много измеренных значений. Для загрузки всех значений измерений, когда нужны только некоторые из них, кажется, что это не является необходимым.

Например. Im зациклился на том, как организовать/моделировать необходимость «Покажите мне, что потоки воды (значения измерения) в реке X (место) между временем A и B»

Разрешено создавать экземплярный корень реки X, только частично загруженный типом измеренные значения в данном случае использования? Существуют ли другие способы моделирования значений измерений и их происхождения?

Пожалуйста, дайте меду знать ваши мысли ...

+1

Возможно [мое сообщение] (http://blog.sapiensworks.com/post/2014/10/31/DDD-Identifying-Bounded-Contexts-and-Aggregates-Entities-and-Value-Objects.aspx/) Вам поможет . Также CQRS - это почти золотой молот для DDD. О загрузке частичных агрегатов это нет, это побеждает цель совокупного корня. – MikeSW

+0

Спасибо за отзыв MikeSW :-) Я размышляю над идеей создания объекта value, который содержит каждое значение измерения. – oakman

+0

@oakman Это только проблема на стороне чтения, а также когда вы хотите что-то изменить? У вас много параллелизма в агрегате «Место»? – guillaume31

ответ

0

Поправьте меня, если я ошибаюсь, но это звучит очень похоже на модель и хранение данных, которые влияют на дизайн вашей системы? Если это так, это может стать причиной вашей дилеммы. Ключевая часть моделирования преимуществ с использованием агрегатов заключается в отсутствии зависимостей. Зависимости, такие как базы данных и модели данных. Прямого «представления» совокупности нет, поэтому он не формируется по виду. Это упрощает проектирование агрегатов. Они гораздо более сосредоточены на решении проблемы. И поэтому являются отличными кандидатами на создание сложных вещей.

Если вам не нужны агрегаты для моделирования вашего домена. Затем вы можете сосредоточиться на эффективном механизме хранения и поиска.

Другими словами ...

Не привязывайте себя в узлах делать DDD, если вам не нужно.

Если это помогает, я создал инфографику при обычных ошибках DDD. Вы можете найти это полезным. Вы можете найти его here.

Кстати, я думаю, что DDD - отличный способ пойти, но только если ваш домен гарантирует это. Признания, если я вас неправильно понял.

+0

Спасибо за ваши отзывы Codescribler :-) – oakman

1

Я думаю, что ваш агрегат согласован, как есть. Ваша дилемма не имеет ничего общего с моделью домена, а не с моделью презентации.

Я рассмотрю возможность десериализации каждого измерения в экземпляре NoSQL, таким образом ваш уровень представления может фильтровать и делать любые запросы, не влияя на согласованность уровня домена.

+0

спасибо за отзыв marianoc84, вы имеете в виду, что я должен отобразить событие «SaveValue4Presentation», когда оно будет получено? – oakman

+0

Нет, вы должны поднять событие для любых событий, связанных с бизнесом. 'SaveValue4Presentation' - это не бизнес (но технический вопрос). Вы должны поднять «NewMeasurementAddedEvent». В другом месте у вас есть обработчик событий для вышеупомянутого события. На этом этапе вы можете deserialize в том, как вы вещи присвоены. Надеюсь, это поможет. –

0

Я не вижу реальной проблемы.Вы сказали, что каждый Measurement привязан к определенному Place, тогда вам не нужно загружать все Measurements.

Используя правильную конфигурацию слоя данных, вы можете загрузить нужный Measurement, выбрав/по-своему/только создавая экземпляр только его родителя (Place).

Смежные вопросы