@MadridianFox
Web-программист, многостаночник

Как подружить объектый подход взаимодействия с БД и ресурсоёмкую аналитику?

Читая М. Фаулера, начал думать что DataMapper это некий эталон взаимодействия с БД в объектно-ориентированных языках. И всё в нём хорошо, но, например, в одном из моих проектов, есть множество отчётов, и сейчас почти для каждого отчёта делаются запросы с JOIN.
Проект переписывается на ООП и скоро дело дойдёт до этих самых отчётов. Скорость их генерации и так оставляла желать лучшего, а теперь вообще должна упасть.
Оставлять эти запросы как есть нельзя - отчёты используют логику предметной области, которая пишется в моделях и не сможет быть применена к сырым данным.

Пока думаю, что для отчётов необходимо применить другой подход - рассчитывать значения отчётов всё теми же моделями, но результат записывать в отдельные таблицы. Соответственно расчёты вести по крону раз в N часов, а отчёт отдавать из таблицы.

Может быть есть другие пути?
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
Flaker
@Flaker
На самом деле, имхо, что бы достичь максимальной скорости генерации отчетов при запросе, нужно просто перестать их генерировать при запросе.
Генерируйте заранее.

По поводу DataMapper: Производительности проседает обычно при селекте большого кол-ва записей. Конечно, этот паттерн, добавляет +1 уровень абстракции, позволяя вам не работать с SQL напрямую. Вы всегда можете обойтись без него.
Ответ написан
Комментировать
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
CQRS, DataMapper на запись (легко поддерживать, относительно медленно на запись и чтение, очень медленно со сложными запросами), агрегации данных на чтение (легко поддерживать, быстро на чтение)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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