[firebase-br] Controle Transacional

Douglas Tosi douglasht em gmail.com
Sex Ago 21 19:31:41 -03 2009


2009/8/21 Marco Antonio Abreu <mabreu.ti em gmail.com>:
> Você deve estar falando de transações dirty-read? certo? Porque em
> Read-commited não é necessário, visto que só vai ser lido o que já foi
> commitado. É isso?

Depende de como a transação é usada. Se o seu componente de
conectividade executa uma transação para cada select, então não
importa o tipo de transação. Não dá pra garantir consistência entre os
selects executandos em transações diferentes.
Mas mesmo que você controle a transação, read-commited pode ser um
problema. Basta um usuário comitar alterações e todas as transações
ativas (inclusive aquela que você criou para ler o relatório) vão
começar a ver as alterações. Existe a mesma possibilidade de
inconsistência descrita antes.

Isso tudo é teoria e precisa ser conhecido e entendido. Agora, se vai
ou não afetar a sua aplicação, depende de um monte de fatores. Mas de
uma maneira geral, é melhor prever estes casos.

A transação do tipo Consistency, também chamada de snapshot, é a ideal
para impedir estas inconsistências. Mas ela tem os seus poréns: é um
pouco mais caro para o banco de dados criar estas transações e pode
aumentar a possibilidade de deadlocks na aplicação.

O site da firebase deve ter artigo sobre isto. E no FDD este ano o
Cantu dedicou uma palestra inteira sobre transações. Vale pesquisar.

hth,
-- 
Douglas Tosi
www.sinatica.com




Mais detalhes sobre a lista de discussão lista