Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

dataset

Um sistema... vários clientes

Recommended Posts

Prezados, boa tarde;

 

Eu tenho um sistema usado por 2 clientes.

Tenho dois bancos, cada cliente com o seu. Uso o PostgreSQL

 

Para acessar os clientes usam o link:

www.solibras.com.br/?strSistem=cliente1

ou

www.solibras.com.br/?strSistem=cliente2

 

Eu uso o valor do parâmetro strSistem na string de conexão. Quando um acessa usa o seu banco, quando o outro acessa usa o outro banco

 

Mas o sistema é o mesmo... entende ?

 

Eu pensei em hospedar em outro servidor, pra não ter riscos, mas não sei se necessário.

 

Agora vou ter meu 3º cliente... quais os riscos que corro deixando todos usarem o mesmo sistema apenas usando bancos diferentes ?

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho muito ruim esse modo de verificar qual cliente é usando parâmetro da URL...o ideal mesmo seria mudar sua estrutura para os clientes usarem o mesmo banco, entende? OU ainda melhor criar subdomínios diferentes para cada cliente e cada um com seu banco. Na minha opinião seria a melhor saída. Aproveite agora para arrumar essa estrutura já que você tem somente 3 clientes vai ficar mais "fácil" depois começam a vir mais clientes ai o processo vai ser muito mais complicado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concordo com iRRC, passar por querystring esse tipo de informação é muito frágil, e com isso você tem uma brecha na segurança muito grande.

 

Eu faço a autenticação por formulário e uso sessão para manter o usuário.

 

Quanto ao banco de dados, para manter a integridade dos dados de cada cliente, eu prefiro sempre criar bancos de dados separados, um para cada cliente.

Assim, caso ocorra algum problema, será isolado a um ou outro cliente, e fica mais fácil de resolver.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pois é... eu também acho que bancos separados é o ideal.

 

Minha dúvida está na utilização do mesmo código para os 2 clientes. você sabe se tem algum problema ?

 

Por exemplo minha string de conexão:

conSTR.connectionstring = "DRIVER={PostGreSQL Ansi};SERVER=servidor.banco.dados.net;UID="&strBancoPG&";PWD="&strSenha&";DATABASE="&strBancoPG&";OPTION=3"

 

Veja as variáveis:

strBancoPG;

strSenha;

 

Eu faço um IF de acordo com a session:

IF session("strCliente") = "cliente1" THEN
   strBancoPG = "banco1"
   strSenha = "cliente1"
ELSEIF session("strCliente") = "cliente2" THEN
   strBancoPG = "banco2"
   strSenha = "cliente2"
END IF

 

Daí na string de conexão uso os valores.

 

Neste caso, pode haver vários clientes acessado o sistema, dependendo da url:

www.solibras.com.br/?strSistem=cliente1

ou

www.solibras.com.br/?strSistem=cliente2

 

eu gravo o valor do strSistem na session.

 

Dai posso ter varios clientes usando o mesmo código, apenas faço a separação pra cada um usar uma base diferente.

 

Minha dúvida é se isso tem problema, por exemplo:

 

Na execução de um while, ou enquanto o sistema faz um processo, se ambos os clientes acessaram ao mesmo tempo. Se estão em redes diferentes...

 

Não entendo disso.... se tiver problemas vou ter que hospedar em domínios diferentes... sei lá. Terei mais despesas e etc...

 

O que você acha ?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideal mesmo seria cada cliente ter sua base de dados.

Quanto a parte de acessar os mesmo fontes, se entendi o que você quis dizer, não vai ter problema...o cliente1 e cliente2 podem acessar o mesmo código sem problemas já que o servidor trata as requisições de cada cliente de forma separada.

 

Não sei se entendi mtu bem o que você disse mas acho que é isso.

 

Mas continuo dizendo que o ideal é: Cada cliente com sua base de dados, assim se der problema é mais fácil de tratar como disse o Vinicius Ianni

Compartilhar este post


Link para o post
Compartilhar em outros sites

pensando em segurança e acesso as informações rápida aos clientes, aconselho também a ter bancos separados, até mesmo para um melhor gerenciamento a solução para sub-domínios é uma boa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim ... os clientes acessam bancos separados. Mas usam o mesmo código.

 

Apenas separo os bancos pelo parâmetro na URL.

 

Fiquei na dúvida, achei que o servidor ia se perder, imagina que o cliente1 está gravando um usuário novo no sistema e por coincidência o cliente2 também está gravando um novo usuário, cada qual e sua base de dados, mas ambos usando o mesmo código.

 

Pensei que o servidor ia se perder na gravação, mas se ele separa as requisições então fico mais trânquilo.

 

O que pode acontecer se um dia eu tiver uns 20 clientes ? Todos gravando e consultando ao mesmo tempo ? O Servidor vai saber separar cada um pro seu devido banco sem misturar as chaves primárias ?

 

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O sistema não vai se confundir justamente pelo fato de ser em banco separados.

O problema disso tudo é justamente passar qual banco o cliente se conecta pela URL....alguém pode ir lá e mudar o parametro.

Novamente... com 2 clientes ou 20 clientes se cada um se conecta em um banco diferente não vai ter problema em confundir chaves, registros ou qualquer outra coisa pois o banco é separada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então...

 

Naquele meu IF eu tenho um ELSE, se não for nenhum dois dois eu dou um redirect para uma tela dizendo que o parâmetro errado não é válido.

 

Você pode fazer um teste usando o link: www.solibras.com.br/?strSistem=cliente1

 

Se for aceito, então eu gravo numa session o uso o valor na string de conexão. Nas variáveis.

 

Daí cada um usa o seu banco isolado. Porém, como ambos os clientes usam o mesmo link, apenas parâmetros diferentes, eles naturalmente acessam o mesmo código.

 

Que bom que não tem problemas.

 

Agradeço a equipe por me tirar essa dúvida, estou implantando agora o 3º cliente e o volume de dados é grande, daí pensei que o servidor ia se perder nas tarefas de cada um.

 

Valeu amigos.

Compartilhar este post


Link para o post
Compartilhar em outros sites
O que pode acontecer se um dia eu tiver uns 20 clientes ? Todos gravando e consultando ao mesmo tempo ? O Servidor vai saber separar cada um pro seu devido banco sem misturar as chaves primárias ?

 

na hora de fazer a inserção você pode fazer um bloqueio otmista, usando o cursosr type e lock type do recordset

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.