Проблема с производительностью при запросе корня aggreage с большим графиком - PullRequest
1 голос
/ 23 мая 2019

Я разрабатываю новую версию старого веб-приложения и пытаюсь создать подходящую модель домена для веб-приложения.

У меня есть устаревшая база данных, и это точно не изменится. я созданы отдельные сервисы для чтения и запроса на стороне. Сторона запросов использует простые SQL-запросы с множеством объединений для возврата моделей чтения, которые в основном представляют собой простые DTO с полями из многих таблиц. И это работает хорошо, эти порции данных используются для заполнения некоторых таблиц и форм на UI. Проблема возникает, когда мне нужно сделать транзакции и использовать сторону записи приложения. Я не могу описать конкретные случаи использования, но скажем, что я имеет 3 уровня отношения один ко многим, и мой ORM не поддерживает отложенную загрузку.

Пример: У меня есть Модель A, Модель B, Модель C. Одна транзакция включает в себя начало и окончание A (и это включает в себя изменение состояния B) и одну транзакцию, удаляющую C (на самом деле просто изменение флага состояния, но это не важно). Удаление C имеет некоторые ограничения, и я должен проверить состояние всех как.

Чтобы сделать это, особенно последнюю транзакцию, мне нужно построить весь график C. Это не проблема, если кто-то хочет удалить только на Экземпляр C, но что, если он хочет удалить много экземпляров C? Мне нужно запросить n C по списку идентификаторов, и если n становится большим, производительность падает. Могу я сделать что-нибудь, чтобы сохранить мою концепцию? Я что-то не так понимаю, потому что я представьте совокупные корни как концептуальные целые и trasactional единицу, которая проходит «тест удаления» для сущностей?

Пример модели в Java:

Пример модели в java:

public class A {
    private Long id;
    ....many fields....
}

public class B {
    private Long id;
    private Set<A> as;
    ....many fields....
}

public class C {
    private Long id;
    private Set<B> bs;
    ....many fields....
}

Могу ли я сделать лучшее моделирование. Может быть, обратные отношения и модели A и C как совокупные корни? Но это создаст проблемы с ORM. Буду признателен за любую помощь, я становлюсь невежественным.

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