Как работать с коллекцией агрегата, если она становится объемной?

Приветствую.
Есть агрегат, в нем есть коллекция каких-то связей (hasMany). Допустим это Диалог и Сообщения. Ну или к примеру Пост и комментарии к нему.

Конечно представить себе тысячи комментов сложно, но вот тысячи сообщений в чате легко. Ну или еще какой любой пример. Мы сейчас не касаемся каких-то моментов, бизнес логики и т.д.. Просто есть корень агрегат - Диалог и сущность Сообщения в нем. Код - ПРИМЕР :

class Dialog {

    //ArrayCollection
    private $messages;

    public function add(Message $message)  {
        $this->messages->add($message);
    }

    public function get(int $id)  {
        $this->messages->get($id);
    } 

    ...тут может быть и дальше еще удаление, редактирование и т.д.
}


На сколько я знаю, сам агрегат выбирается из базы с уже заполненными связями. И как это будет выглядеть если сообщений там тысячи непонятно. Конечно, можно сказать что можно использовать ленивую загрузку и дергать сообщения только когда происходит какая-то логика с сообщениями ($this->messages->....)

Но такой подход все равно к примеру, при добавлении или поиске сообщения - загрузит все сообщения в коллекцию $message из базы. И получается все равно ты выгружаешь всю пачку. Что скажется на производительности.

Как обычно такие вещи решаются?
  • Вопрос задан
  • 20 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы