[SP-pm] Quero substituir meus Class::DBI

Eden Cardim edencardim em gmail.com
Segunda Julho 16 14:28:16 PDT 2007


On 7/16/07, Luis Motta Campos <luismottacampos em yahoo.co.uk> wrote:
> Eden Cardim wrote:
> > Reforço a recomendação do Nelson: DBIx::Class
>
>    Eu não quero encarapitar meus scripts com mais um monte de lixo... eu
> estava pensando em ter uma camada de código minimalista para colocar no
> lugar do Class::DBI.
>
>    Tenho problemas sérios de performance.

Bem, é pouco provável que você consiga alguma biblioteca com mais
desempenho que o DBIx::Class que tenha a mesma manutenibilidade. Se
tiver precisando de otimizações específicas, você pode implementar um
backend próprio ou pagar alguém pra fazer por você. :)

>    Isso é muito interessante.
>    E eu presumo que os rollbacks podem ser "enganchados" nos DESTROY()
> locais de cada classe, certo? Assim, quando acontecerem exceções, a
> camada de acesso aos dados se vira para fazer os rollbacks necessários,
> e eu vou dormir tranquilo.

Você pode controlar o início e fim das transações como quiser.
A abordagem do DBIC para aninhamento de transações é receber uma
referência pruma subrotina, se alguma excessão for lançada durante a
execução da subrotina, acontece um rollback, caso contrário, um
commit. Claro que dentro desta subrotina, você pode executar
subrotinas recursivamente, qualquer excessão será propagada na pilha e
o rollback executado de acordo.

>    Alguém pode me falar alguma coisa sobre declaração de constraints ? A
> Minha base de dados atual tem apenas chaves primárias e índices únicos,
> nada de integridade referencial - a minha maior dor-de-cabeça neste momento.

O DBIC tem declaração de constraints a nível de software, chaves
primárias, estrangeiras, etc.

>    Eu gostaria muito de conseguir direcionar SELECTs para um DBI
> diferente... automaticamente, se possível. Assim, eu poderia mudar de
> conexão sem notar para ler (dos slaves) permitindo ao meu master mais
> sossego para escrever.

http://search.cpan.org/~mstrout/DBIx-Class-0.08003/lib/DBIx/Class/Storage/DBI/Replication.pm

-- 
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática


Mais detalhes sobre a lista de discussão SaoPaulo-pm