----- Mensagem original -----
> De: Eden Cardim <[email protected]>
  
>>>>>>  "Alceu" == Alceu R de Freitas 
> <[email protected]> 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
--------------------------------------
[email protected]
---
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

=begin disclaimer
   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
 SaoPaulo-pm mailing list: [email protected]
 L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a