RES: [firebase-br] Concorrência de acesso
Alexandre Bittencourt
alexandre.bittencour em terra.com.br
Qua Mar 21 10:51:26 -03 2007
É o seguinte, tenho um sistema para Casas noturnas, tenho a seguinte
situação em um cliente:
1- Entrada da casa são 10 estações rodando minha aplicação cliente. Nestas
estações são abertas/fechadas todas as vendas (comandas). E em algumas
situações tbm são lançados e removidos produtos de algumas comandas quando
necessário. Nas estações não pará, é a noite inteira pauleira...abre venda
de um cliente fecha venda de outro...vem o administrador para remover algo
ou efetuar algum lançamento....e ai vai
2- Há 18 Microterminais espalhados pela casa ( e meu amigo aqui sim é mais
pauleira ainda...não pará, é o tempo todo vendendo produtos para os
clientes os microterminais funcionam que funcionam a todo vapor, vc sabe
como é né, casa noturna a galera quer beber.
3- Existe um servidor dedicado onde roda minha aplicação Servidor (é la quem
gerencia tudo).
4- Para cada venda efetuada, acontece uma baixa no estoque (e como eu te
disse, a parada é pauleira....) Os microterminais trabalham simultaneamente,
e sempre acontece de alguns terminais estarem vendendo o mesmo produto,
então eles precisam dar a baixa no estoque juntos, só que como um amigo
disse é quase impossível de acontecer um erro de concorrência...pois é
fração de segundos....
Outro detalhe é que não utilizo generator, durante a venda ou inserção de
registros pego o maior Id para gerar o próximo....
Conclusão, diante de tudo que acabei de dizer aqui, só falo o seguinte:
Nunca tive problema algum, roda tudo perfeitamente... no começo pensei em
travar o registro para o caso de outro usuário estar usando....mas
desisti....e hoje vi que não era necessário!!!
Obs: Utilizo D7, Firebird 2.0 e (2 camadas Cliente/Servidor)
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Ronaldo
Enviada em: quarta-feira, 21 de março de 2007 10:10
Para: renan em safetech.inf.br; FireBase
Assunto: Re: [firebase-br] Concorrência de acesso
se vc efetuar o cálculo com base no valor (pedido - pagamento) isso jamais
irá acontecer.
Ronaldo.
----- Original Message -----
From: "Renan de Oliveira" <renan em safetech.inf.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, March 21, 2007 9:08 AM
Subject: Re: [firebase-br] Concorrência de acesso
Vamos supor o seguinte exemplo.
Dois fulanos estao com a mesma tela de pagamento a ser efetuado de um
determinado cliente, com saldo a pagar de 500,00
fulano1 - pega o saldo a pagar 500 e desconta um pagamento de 200 reais,
saldo fica de 300,00
fulano 2 - pega o saldo a pagar 500 e desconta um pagamento de 100 reais,
saldo fica de 400,00
e isso nao pode acontecer, pois o saldo deveria de ser 500 - 200 - 100 =
200,00
Renan
----- Original Message -----
From: "Davi Eduardo Borges Wall" <davi.wall em mult.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Wednesday, March 21, 2007 9:03 AM
Subject: RES: [firebase-br] Concorrência de acesso
Como assim ?
As chances disto acontecer são enormes se você iniciar a transação por
exemplo no Onshow do form e commitar depois do post.
Lock, é quase impossível de acontecer iniciando a transação antes do post e
comitando após o post. É uma fração de segundo. Uma das maiores empresas
De ERP do Brasil tem sua tecnolgia baseada nesta regra.
-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Rubem Nascimento da Rocha
Enviada em: quarta-feira, 21 de março de 2007 08:49
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] Concorrência de acesso
Prioridade: Alta
Concordo com o Renan. Ele pode não querer saber qual o usuário que pegou o
bloqueio primeiro, mas se um deles abrir uma transação e efetuar uma
atualização no determinado registro, a outra pessoa que tentar atualizar o
mesmo registro pode receber uma exceção de deadlock. Sds.
>From: "Renan de Oliveira" <renan em safetech.inf.br>
>Reply-To: renan em safetech.inf.br, FireBase <lista em firebase.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Subject: Re: [firebase-br] Concorrência de acesso
>Date: Wed, 21 Mar 2007 08:43:22 -0300
>
>Davi,
>
>Nao creio que essa forma de pensar esteja correta...
>em inúmeras situacoes eh necessario fazer lock do registro...
>
>Renan
>----- Original Message -----
>From: "Davi Eduardo Borges Wall" <davi.wall em mult.com.br>
>To: "FireBase" <lista em firebase.com.br>
>Sent: Wednesday, March 21, 2007 8:36 AM
>Subject: RES: [firebase-br] Concorrência de acesso
>
>
>Você não precisa saber se dois usuários estarão utilizando o mesmo
>registro.
>
>Isto é natural. Aquele que salvar o registro primeiro é o beneficiado.
>
>
>-----Mensagem original-----
>De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
>nome de Gleiber
>Enviada em: quarta-feira, 21 de março de 2007 07:59
>Para: Lista Firebird
>Assunto: [firebase-br] Concorrência de acesso
>
>Ola lista!
>tenho uma aplicação delphi+dbexpress+firebird..q roda blz em desktop..estou
>migrando pra rede...tenho uma duvida..
>Como tratar as concorrências qdo 2 usuarios acessam o mesmo registro..por
>exemplo:
>vou baixar um titulo em conta receber..pra trazer o cliente. filtro com
>clientdataset..entaum ele fica na memoria....até que eu confirme a baixa do
>titulo, se um 2º usuario for fazer essa baixa pra esse mesmo registro...com
>o mesmo procedimento..como vou saber q está sendo utilizado mesmo registro?
>Não uso applyupdate....ao salvar eu inicio e finalizo as transações....
>
>Tem como utilizar with lock no firebird..como ficaria a sintaxe pra essa
>situação..?
>
>Obrigado
>Gleiber/MG
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
>
>______________________________________________
>FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>Para editar sua configuração na lista, use o endereço
>http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
>Para consultar mensagens antigas: http://firebase.com.br/pesquisa
_________________________________________________________________
MSN Busca: fácil, rápido, direto ao ponto. http://search.msn.com.br
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa
Mais detalhes sobre a lista de discussão lista