ФорумПрограммированиеPythonDjango → Обсуждение ORM vs SQL

Обсуждение ORM vs SQL

  • mathete

    Сообщения: 435 Репутация: N Группа: Джедаи

    Spritz 26 июня 2012 г. 19:27, спустя 30 минут 33 секунды

    Мне кажется проблемы описываемые, всего-лишь идут от того, что сначала пишутся SQL, а потом загоняются в ORM. Это я даже не знаю с чем сравнить…
    ОРМ даёт профиты, и в том числе по количеству строчек, когда изначально мыслится объектно. И только объектно, в парадигме ОРМ.
    "Так у меня есть объект юзер. Вот его моделька. У меня есть биатлонист. Вот его моделька. У биатлониста есть лыжи. Вот моделька для лыж. Вот FK к биатлонисту."
    И далее вся работа состоит в том, что "По данной форме сохрани мне объект лыжи. Отфильтруй мне биатлонистов с датой рождения в промежутке … и исключи тех, которые без лыж".
    Если же пытаться мыслить селектами с джоинами, юнионами и кучами встроенных функций в БД, то конечно же ничего не получится.

    Тот же запрос с биатлонистами. Сравнение надо начинать с макроуровня. С бизнес задачи. Какие объекты, какие процессы, какая будет обработка. В одной комнате сядет орм-щик, в другой sql-щик. У них получатся разные схемы БД - разные таблицы, с разными полями. Скорее всего в орм-ном варианте будет побольше денормализации. Но задачу решать они будут и будут так, что бизнес устроит. И строчек меньше, в итоге, на проект, будет скорее всего в ОРМ варианте - ну потому что простых выборок всегда в проекте подавляющее большинство, а в орм они как раз пишутся короче и бывает значительно.

    На всякий случай ещё раз - это другая парадигма. Тут надо категорически переключать мышление. Как не надо говорить, что javascript херовый, потому что там нет классов. Или функциональные языки гавно, потому что они не ООП. В какой-то задаче строчек больше, в какой-то меньше. Проблемы появляются только в перехлёсте парадигм.
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 26 июня 2012 г. 19:34, спустя 7 минут 9 секунд

    dynamic object properties

    покажи пример, че это такое?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 26 июня 2012 г. 20:37, спустя 1 час 2 минуты 39 секунд

    Абырвалг, это рантайм объект который типизируется конкретной выборкой - фактически может быть ArrayObject с ARRAY_AS_PROPS. Описываешь сложную выборку sql-запросом, IDE определяет тип возвращаемого результата и автодополняет соответствующие проперти. Получается оптимизация выборки путем сложного запроса с какими-нибудь аггрегатными данными или типа того; и объектная модель, которая на самом деле динамическая как произвольно взятый массив строки результата запроса, но в то же время типизирована на момент разработки средой разработки. Очень круто. Что то такое, но я такого не видел в php.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!