@magary4

Если ли смысл в ОРМ для моего случая?

Есть ли порог когда использование ОРМ становится неоправданым/оправданым? Где он?

У меня в приложении есть модуль который работает с бд Solr. Структура довольно простая. Каждый документ содержит около 30 полей. Каждый документ может имеет поле parent в котором сохранен ид-родителя, дальше ид-прародителя, дальше прапрародителя итд.
Т.е. иногда достается только один документ, а в другом случае еще и все предки.
Данные в бд импортируются через терминал и не изменяются никогда. Т.е. приложение работает с бд в режиме read-only
В данный момент работает так:
$doc->title= $result[title]
$doc->inStock= $result[in_stock]

Итд. Иногда какая-то дополнительная трансформация.

Есть ли смысл в ОРМ?
  • Вопрос задан
  • 636 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Есть ли порог когда использование ОРМ становится неоправданым/оправданым? Где он?


ORM-ки нужня для одного конкретного типа систем - OLTP (On-line Transaction Processing)

У меня в приложении есть модуль который работает с бд Solr


У вас есть документы, в документно ориентированных базах данных нет связей. Потому вам нужен Object Document Manager а не Object Relational Mapper.

Каждый документ может имеет поле parent в котором сохранен ид-родителя, дальше ид-прародителя, дальше прапрародителя итд.


Вот тут у меня есть сомнения, поскольку это связи, а связи это не ок. Тем более что вам иногда нужно забирать больше одного документа.

бд в режиме read-only


Тогда точно не нужна ORM/ODM.

Итд. Иногда какая-то дополнительная трансформация.


Но это же трансформация на уровне формирования результата выборки, так? Если так - то это опять же не та проблема.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
index0h
@index0h
PHP, Golang. https://github.com/index0h
Есть ли порог когда использование ОРМ становится неоправданым/оправданым? Где он?

Чаще всего он становится неоправданным из-за слишком высоких накладных расходов.
Пример:
User MANY_TO_MANY Group
User MANY_TO_MANY Category

Нужно найти все категории, по заданному списку групп пользователей. В случае Doctrine ORM вам придется загрузить список груп, дальше циклом пройтись по всем пользователям (если загрузка ленивая - это куча запросов), дальше уже по всем пользователям пробежаться и вытянуть все категории, плюс убрать дубликаты. Тут лучше plain sql, или query builder, как вам больше нравится.

В случае же когда, накладные расходы не высоки И ORM будет более удобной - стоит юзать ORM. Например: у вас уже есть загруженный пользователь, хотите достать все его группы. В случае Doctrine ORM это может выглядеть как: $user->getGroups().
Ответ написан
Ваш ответ на вопрос

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

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