[SP-pm] DBIx::Class

Alceu R. de Freitas Jr. glasswalk3r at yahoo.com.br
Sun Sep 15 18:49:04 PDT 2013



----- Mensagem original -----
> De: Eden Cardim <eden at insoli.de>
  
>>>>>>  "Alceu" == Alceu R de Freitas 
> <glasswalk3r at 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.

Como por exemplo...? 

> 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.

Posto o que o Solli queria fazer, acho que posso deixar a questão de otimização prematura a critério dele.

Eu DUVIDO que o DBIx::Class consiga ser mais rápido (executando um SELECT antes do INSERT) do que uma stored procedure que faça a mesma coisa ou use tratamento de exceções.
 
>     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.

Não se houver tratamento para exceções. Se estamos falando de cadastro/descadastramento de contas em um sistema, quantas vezes é provável isso ocorrer?

>     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?

Eu não lembro de ter escrito que isto seria mais rápido do que usar um SELECT antes do INSERT, apenas seria uma opção se ele quisesse trabalhar com tratamento de exceções.

[]'s

Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r at yahoo.com.br
---
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1



More information about the SaoPaulo-pm mailing list