<HTML><BODY>Вообще есть 2 школы решения проблемы "Как работать с базой":<br>1) Все в СУБД<br>2) Все в Программе.<br><br>Суть проблемы (Зачем вообще появились ORM монстры типа DBIx::Class, я не говорю об основной причине появления ORM, которая в названии кроется):<br>СУБД существует много. Если вы пишете код, который вы будете выкладывать в паблик, то он должен мочь работать с несколькими СУБД. Сейчас это PostgreSQL, MySQL, для мажоров - Oracle и более нестандартные СУБД типа MSSQL.<br>Если перекладывать бизнес логику на СУБД, то для многобазия будет много различного кода для каждой СУБД. Решение - перенести логику в ORM.<br>Отсюда появляется необходимость иметь возможность писать "триггеры" в объектах ORM.<br>При всем том, что, казалось-бы, эта возможность - не причина появления ORM, она одна из основных.<br><br>Фактически, при всех минусах DBiX::Class (один из которых вы неявно упомянули), она позволяет писать 1 код на много СУБД (с ограничениями, конечно) и переносить бизнес-логику в приложение. Ведь далеко не все СУБД могут из коробки горизонтально масштабироваться. Для MySQL - это, платный, насколько я помню, MySQL Cluster. Для PostgreSQL - это PostgreSQL-XC, который появился очень недавно и пока страшновато его использовать. Для платных СУБД - это "много денег за то что вы это будете использовать". Отсюда - перенос бизнес логики в приложение разгружает СУБД и, если мы говорим о ХайЛоаде, то перенос логики в приложение, позволяет решить проблему хайлоада "докидыванием серверов в стойку", до следующего боттлнека, который опять будет в СУБД, скорее всего, но на других нагрузках. А как известно, при увеличении нагрузки можно найти нестандартное решение, которое опять-таки снимет проблемы боттлнека.<br><br>Мои разглагольствования сводятся к двум мыслям:<br>Голый SQL это плохо, если вы не умеете сахар на приложении.<br> "ORM должен уметь триггеры и много чего еще, чтобы им пользовались не только вы". У вас оно есть?.. А стоит-ли начинать?<br><br>Простите, если вбросил.<br><br>Wed, 14 Jan 2015 19:37:29 +0100 от PEF Secure <pef-secure@yandex.ru>:<br>
<blockquote style="border-left:1px solid #0857A6; margin:10px; padding:0 0 0 10px;">
        <div id="">
        



    









        
        


        
        
        

        

        
        

        
        

        
        



<div class="js-helper js-readmsg-msg">
        <style type="text/css"></style>
        <div>
                <base target="_self" href="https://e.mail.ru/">
                
                        <div id="style_14212608620000000920_BODY">Приветствую!<br>
<br>
Есть желание опубликовать на CPAN свой модуль, этакий вариант недо-ORM. Моё <br>
мнение, что все навороты ORM полезны, пока они упрощают код или дают ещё какие <br>
плюсы, но если пользование ORM превращается в спорт, то это уже как-то не <br>
здорово. Прочтение статьи <a href="http://pragmaticperl.com/issues/22/pragmaticperl-22-dbixclass.-%D1%81%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA-%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%D0%BE%D0%B2.html" target="_blank">http://pragmaticperl.com/issues/22/pragmaticperl-22-dbixclass.-%D1%81%D0%B1%D0%BE%D1%80%D0%BD%D0%B8%D0%BA-%D1%80%D0%B5%D1%86%D0%B5%D0%BF%D1%82%D0%BE%D0%B2.html</a><br>
убеждает лично меня в том, что чистый SQL часто сильно проще понимать и <br>
использовать. Тем не менее, чистый SQL часто не настолько уж "чист": код <br>
приходится собирать по каким-то внешним условиям, иногда условия становятся <br>
уже сложно подчинённые, тогда на помощь приходит SQL::Abstract. Постепенно с <br>
использованием этого модуля у меня родился свой: <a href="https://github.com/pef-secure/dbix-struct" target="_blank">https://github.com/pef-secure/dbix-struct</a> -- ревью его кода, а так же любым комментариям буду <br>
признателен. <br>
<br>
Существует _демонстрационный_ проект, в котором этот модуль использован в <br>
основе операций CRUD: <br>
<a href="https://github.com/pef-secure/pef-front-demo/blob/master/app/Demo/Local/Article.pm" target="_blank">https://github.com/pef-secure/pef-front-demo/blob/master/app/Demo/Local/Article.pm</a> . В остальных модулях тоже <br>
встречается использование, этот самый показательный. Структура демо приложения <br>
тут: <a href="https://github.com/pef-secure/pef-front-demo/blob/master/demo.sql" target="_blank">https://github.com/pef-secure/pef-front-demo/blob/master/demo.sql</a><br>
<br>
-- <br>
PEF Developer<br>
-- <br>
Moscow.pm mailing list<br>
<a href="/compose?To=moscow%2dpm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
</div>
                        
                
                <base target="_self" href="https://e.mail.ru/">
        </div>

        
</div>


</div>
</blockquote>
<br></BODY></HTML>