[SP-pm] DBIx::Class

Wallace Reis wallace at reis.me
Mon Sep 16 13:22:35 PDT 2013


On Sep 16, 2013, at 3:51 PM, Eden Cardim <eden em insoli.de> wrote:
> Consultar antes do insert:
> 
> 1 - é trivial
> 2 - é rápido (tanto a implementação quanto a execução, assumindo o uso
> de um banco de dados razoável)
> 3 - é portável
> 4 - é simples de ler (select email from tabela where email = 'foo em bar.com'
> é a primeira coisa que se aprende em qualquer curso vagabundo de SQL)

- Não é portável, pois depende do nível de isolamento de transações escolhido - nem todos SGBD implementam todos os níveis do padrão SQL (e por vezes nem de forma semelhante).
- Se escolhido um nível de isolamento que não seja o serializável, as chances de colisão por condição de corrida aumentam e então faz-se necessário o tratamento de excessão em relação a restrição de unicidade, e assim terá as mesmas desvantagens da outra solução.

Desta forma, a minha conclusão é de que não são soluções mutuamente exclusivas; neste caso de email, a frequência de colisões é baixa (comparada a de nomes de usuários) para requerer uma consulta prévia - uma vez que pode-se ter ferramentas para evitar spam-bots e script-kiddies, sendo útil/necessário para outros formulários em geral; e mesmo optando-se por uma consulta prévia o custo em performance é irrelevante, e assim é boa prática, válida e importante medida.

--
Wallace Reis | wreis
wallace em reis.me
http://wallace.reis.me


More information about the SaoPaulo-pm mailing list