[SP-pm] DBIx::Class

Eden Cardim eden at insoli.de
Sun Sep 15 08:07:35 PDT 2013


>>>>> "Alceu" == Alceu R de Freitas <glasswalk3r em yahoo.com.br> writes:

    Alceu> Solli, Recentemente comecei a fazer alguns testes com
    Alceu> TryCatch e até o momento me pareceu bastante satisfatório,
    Alceu> mas você pode se pegar criando várias classes de exceção.

Um convite pro overengineering.

    Alceu> Se você quiser ser realmente eficiente com o banco, acho
    Alceu> que vai ter que abandonar o DBIx::Class: se você criar uma
    Alceu> stored procedure no banco de dados você pode criar uma
    Alceu> função de "upsert" (atualiza se existe, insere se não) sem
    Alceu> ter que retornar dados para a camada do DBIx::Class e da
    Alceu> sua aplicação e poderá capturar a exceção com precisão no
    Alceu> banco (dependendo do banco que você for utilizar, claro).

Overengineering e otimização prematura ao mesmo tempo. E mesmo pra
otimizar, não precisa largar o DBIx::Class, se (e repito, *se*) você
cair num caso onde você precisar chegar nesse nível de otimização, é
só sobrecarregar as partes certas do código.

    Alceu> Ou então fazer um esquema de cache experto (Memcached?)
    Alceu> para os registros já inseridos no banco, isso tornaria a
    Alceu> coisa toda mais eficiente.

Mais eficiente e mais errada, sujeito a race conditions insolúveis.

    Alceu> De qualquer forma, o DBI tem o método err()
    Alceu> (http://search.cpan.org/~timb/DBI-1.628/DBI.pm#err) para
    Alceu> retornar um código numérico... claro que você teria que
    Alceu> criar de antemão uma tabela com os códigos de cada banco de
    Alceu> dados que você quer que sua aplicação suporte. Como
    Alceu> DBIx::Class usa DBI, talvez você consiga ter esta mesma
    Alceu> informação.

E porque isso é mais fácil ou rápido do que usar algo que é
naturalmente portável entre todos os backends que suportam SQL: uma
consulta antes do insert?

-- 
Eden Cardim -- Insolide Soluções de TI Ltda.
+55 11 9644 8225
http://insoli.de


More information about the SaoPaulo-pm mailing list