Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

dúvida - vários clientes usando o mesmo banco

Boa tarde,

Estou desenvolvendo um sistema web e gostaria de diminuir tempo de atualização e manutenção de servidor. Com isso gostaria de desenvolver um sistema totalmente na nuvem que o cliente não precisasse instalar nada. Nunca desenvolvi dessa forma, então não sei a melhor forma de fazer isso.

Minha principal dúvida no momento é: "O banco de dados nesse caso é único? Se sim, como seria isso? Teria tabelas por exemplo com o código do cliente na frente? ".

Poderiam me dar um exemplo ou alguma forma de fazer o tratamento dos dados para diferentes clientes nesse caso de um sistema totalmente na nuvem?

9 respostas

Oi Roger, tudo bem? Desculpa mas eu não entendi direito. Sistema Web onde o cliente não precisa instalar nada? Como assim? Poderia me dar um exemplo mais perto do real pra ver se eu entendo melhor pra poder te ajudar?

solução!

Creio que entendi a pergunta.

Imagine a seguinte situação, eu tenho um sistema de cadastro, bem simples, com 3 tabelas, cadastro, endereço e telefones.

Eu vou pegar esse sistema e deixar que meus clientes se cadastrem, e que ele possam usar esse sistema para cadastrar e listar seus próprios clientes.

Eu resolveria o problema desta forma, criaria um campo de controle na tabela de cadastro chamado "origem".

Quando eu cadastrar o cliente (para usar o sistema), esse campo seria marcado como zero. Então quando eu puxar a tabela de cadastro para os registros com o campo "origem" igual a zero, esses seriam os clientes que contrataram o sistema.

Agora, imagine que esse cliente que contratou acesse a plataforma, e comece a gravar seus próprios cadastros. Neste caso, o campo origem de tudo o que ele gravar seria o id dele no sistema.

Seguindo o exemplo, nas tabelas de endereço e telefone não precisaria fazer nada.

Desta forma, não tenho problema de misturar cadastros, já que cada cliente vai ver apenas os cadastros que tem como origem o seu id.

Boa tarde ,

@AndersonMacedo, o exemplo do @Daniel explica bem qual o cenário que eu tenho aqui :).

Obrigado desde já @Daniel, mas na sua solução me surgiu uma dúvida que é o meu maior medo quando eu postei a dúvida aqui. Quando minha base começasse a crescer pq cada cliente poderia inserir N registros. As minhas querys não começariam a ficar muito lentas? Essa seria a melhor solução mesmo para esse meu problema? Como estou na fase de análise e detalhamento estou tentando definir a melhor maneira para tratar os dados para não haver retrabalhos no futuro.

Boa tarde,

Para que as query não fiquem lentas, você pode limitar a consulta com filtros. Eu por exemplo não deixo o cliente filtrar a vida dele inteira senão derruba o banco de dados.

@Fernando,

Vc trabalha com sistema na estrutura que o @Daniel disse ali? Gravando nos registros o id do cliente para saber de qual cliente é um determinado registro?

Uma outra alternativa que você pode considerar é essa aqui: http://blog.caelum.com.br/um-produto-para-muitos-clientes-implementando-multitenancy/

Sim Roger !

Mas no meu caso é com código da Empresa, exemplo:

Empresa 01, tem vários registro para ela. Empresa 02, tem vários registro para ela também, então em cada tabela da base de dados eu tenho um campo chamado company_id que é preenchido de acordo com o empresa que foi logado no sistema e trazendo toda sua informação.

Conseguiu entender ?

Entendi sim @fernando..

Obrigado a todos, vou analisar as soluções propostas e verificar qual a melhor solução para a minha aplicação.

Nossa, não deu tempo nem eu voltar pra pensar em algo! Boa gente, fico muito feliz em ver a participação de vocês! :)