[Moscow.pm] Размышления на тему ORM и вообще работы с БД

Andrei andrei.protasovitski на gmail.com
Чт Окт 27 14:17:12 PDT 2011


27 октября 2011 г. 22:14 пользователь Ivan Petrov
<i.petro.77.00 на gmail.com>написал:

>
> > Это неправда. Нормальный ORM возвращает итератор, а объекты создаёт
> только
> > когда они действительно нужны.
>
> это кстати несложно реализовать и в случае, если запросы человек
> писать будет.
>
>
> а насчет "нормальный ORM" покажите таковой, интересно.
> ну бог с ними с запросами которые он криво составляет. покажите хотя
> бы тот который будет скажем все варианты типов столбиков Pg
> использовать. хотя-бы hstore в нем. ну а дальше поговорим про место
> между клавиатурой и спикой кресла ;)
>

Ваши "типы столбиков Pg" работают только в Pg. ORM призван абстрагировать
разработчика от всех этих тонкостей. Тем более что в больнитстве задач оно
нахрен не нужно.

> ORM -- это Object-relational mapping, а не конструктор запросов.
>
> дык я с того и начал. основная моя идея такая:
> 1. выкидываем нафиг конструктор запросов
>

Его не надо выкидывать, его просто можно не использовать.

2. даем возможность человеку их удобно конструировать самому (потому
> что при пользовании ORM для человека это крайне труднодоступно)
>

Вполне можно.


> 3. даем возможность делать выборки в объекты, relational между
> которыми и в случае DBIC и в любом другом случае делаются вручную,
> посему автоматизация тут тоже нахрен не нужна.
>

В ORM связи описываются вручную, это да. Но не "делаются вручную".


> на выходе получаем профит.
>

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


> PS: собственно я зачем сюда писал, я пытался выяснить может кто делал
> что подобное, а я велики тут городить взялся.
> вопрос я свой выяснил.
>

Я собственно, почему вопросы задаю. Я так и не понял, какую проблему решает
этот велосипед.

Я не зря написал, что после приведённого примера запроса дальнейший разговор
не имеет смысла. Тот запрос практически никогда не нужен. Более того, даже
если его разбить на несколько (сначала вынуть user'а, потом его роли, потом
что-то там ещё), потери в производительности практически не будет.


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



Ещё один немаловажный момент.

Написание собственного велосипеда это не только прикольно и интересно, но
ещё и грустно и скучно. Грустно, потому что его нужно поддерживать самому, а
это время и деньги. Скучно, потому что никто, кроме тебя о нём не знает,
коммьюнити никакое.

-- 
Andrei Protasovitski
< andrei[dot]protasovitski[at]gmail[dot]com >
Diemen, Netherlands
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20111027/f810bb06/attachment.html>


Подробная информация о списке рассылки Moscow-pm