Fórum Como funciona Sockets #298726
07/10/2005
0
nas 8 filiais da empresa, criei um soft, que envia dados para a matriz, por meio de sockets.
quando os dados chegam, são processados para que possam ser armazenados em interbase SQL via programacao no delphi,nos campos da minha tabela no interbase, (insert into ... ..)
alguns dados foram misturados, entao peço a ajuda com estas perguntas.
Quando mais de uma pessoa envia dados para a matriz, o socket servidor espera um chegar e depois recebe o outro ?
Caso eu esteja percorrendo o registro deste modo:
query1.first
(while not query1.eof then ........)
muuuuito obrigado.
Geisonc
Curtir tópico
+ 0Posts
07/10/2005
Massuda
Normalmente, cada pessoa conectada é tratada em paralelo pelo servidor. O protocolo de comunicação garante que os dados de uma pessoa não se misturam com o dados da outra.
Com relação ao BD em si, se seu servidor for multithread, é melhor que cada thread possua sua própria conexão com o BD ao invés de compartilhar a mesma conexão entre as threads.
Gostei + 0
07/10/2005
Firekiller
Outra pergunta seria, fazendo da forma como você disse, não haveria a necessidade de uma compra de outra licença do banco (no caso de ser oracle, db2, etc)??
Gostei + 0
07/10/2005
Massuda
Uma alternativa é limitar o número de conexões em uso (por exemplo, use um pool de conexões) ou use uma única conexão e controle o acesso das threads a essa conexão usando um semáforo.
Gostei + 0
08/10/2005
Ipc$
Gostei + 0
08/10/2005
Firekiller
Gostei + 0
08/10/2005
Massuda
Já o mecanismo de acesso pode não ser thread safe. Por exemplo, o dbExpress é feito para ser thread safe se cada thread tiver seu próprio TSQLConnection e todos os DataSets da thread usarem essa mesma conexão. (Não saberia dizer onde isso está escrito ou dito)
O que pode ocorrer é você ter diversas threads compartilhando uma conexão de modo sincronizado (direta ou indiretamente) ou você não ter acesso concorrente/paralelo ao BD devido às condições de trabalho do seu programa (sorte?).
Gostei + 0
09/10/2005
Ipc$
Utilizo o IB6 com BDE ou IBX e ele sempre respondeu todas as queries Select, Insert, Update e Delete rodando em threads paralelas com a mesma conexão. O que pode estar acontecendo é o Banco de Dados serializar as solicitações; ou seja; quando duas threads solicitam ao Banco, ele processa a primeira para depois processar a segunda; ao passo que se houverem duas conexões, a resposta seria mais rápida. Mas isso já seria uma questão de performance, contudo o IB6 com esses meios de acesso está respondendo satisfatoriamente.
Gostei + 0
10/10/2005
Massuda
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)