venho do desenvolvimento Java Desktop e agora quero fazer uma aplicação web, onde vou ter uma aplicaçao acessando varios BD em mysql
por exemplo tenho um BD só de clientes com as informacoes de acesso ao BD correspondente no mesmo servidor, ae entao o usuario acessa se loga e dependendo do seu login a aplicação faz conexao com o banco do cliente.
Estou utilizando JPA + Spring 3 + Spring Security + JSF 2 + TomCat + MySql, e a maior duvida é como cria outro PersistenceFactory e fazer a conexao com o outro BD?
Pq vc não cria perfis?? Tipo, em seu sistema teria dois tipos de usuarios com perfis distintos, um com perfil de cliente e outro com perfil de administrador. Dependendo do perfil de seu usuario, ele teria acesso ou não a certas informações, não faz isso em bancos duplicados pois dificulta a manutenção do sistema no futuro, além de dar trabalho para implementar! Imagina só se for preciso fazer backups periodicos de seus dados que estão no banco, seria feito 2 backups, um pra cada banco!
entao mas por exemplo os clientes sao dinamicois podendo existir 1…100…200, por exemplo as vendas do cliente x ficam no banco do cliente x as vendas do y no y e etc, pensei em fazer tudo em um banco só mas ficaria muito coisa, nao é melhor separar por por bd?
Eu acho que não, justamente para essas informações não ficarem separadas, pra manutenção não ficar dificil, vc tem que fazer uns relacionamentos de tabelas e modelar direitinho! Mas confesso que ainda não intendi bem o que vc quer fazer! Poderia explicar, qua assim agente pensa numa solução juntos?!
por exemplo tenho uma aplicação generica vamos supor uma loja virtual, entao tenho um unico codigo fonte no servidor.
quando vendo essa loja o meu cliente fica cadastrado num banco de dados de cliente com os dados de acesso do banco dele, esse banco é igual pra todos o q muda é que nesse banco vai ficar apenas as informacoes da loja dele, entao pensei em fazer assim, o cliente vai acessar a sua area administrativa ele loga e de acordo com usuario e senha a aplicação faz a conexao com o banco de dados dele e ele altera os cadastro preços etc, entao imagina que eu tenho 200 clientes e todos usam um unico banco eu teria que vincular por exemplo produto com cliente, pedido com cliente para saber os produtos e pedidos de um determinado cliente, agora se eu tenho bancos separados nao tenho esse problema, sem contar se algum cliente romper o contrato eu apenas dropo o banco dele, e outra coisa cada loja roda em um subdominio
Sim…Mas imagina só, se vc tiver 200 clientes, vc vai ter 200 bancos distintos?? O tamanho disso é muito grande, sem contar que usando varios bancos diferentes vc não garante a integridade das informações, pois pode ser que um dos serviços caia e vc não consiga o rollback em todas as entidades! é melhor manter tudo em um banco e relacionar, fica mais dificil de implementar, mas mais facil de manter a meu ver! Faz os relacionamentos ou joins de tabela, que resolve teu problema, sem contar que deixa o sistema mais elegante e melhor para manter ou adicionar novos módulos!
[quote=furacao123]Aew galera estou com uma duvida…
venho do desenvolvimento Java Desktop e agora quero fazer uma aplicação web, onde vou ter uma aplicaçao acessando varios BD em mysql
por exemplo tenho um BD só de clientes com as informacoes de acesso ao BD correspondente no mesmo servidor, ae entao o usuario acessa se loga e dependendo do seu login a aplicação faz conexao com o banco do cliente.
Estou utilizando JPA + Spring 3 + Spring Security + JSF 2 + TomCat + MySql, e a maior duvida é como cria outro PersistenceFactory e fazer a conexao com o outro BD?
Obrigado.[/quote]
Não li todo seu tópico. Mas procure por multi-tenant que há boas discussões disso na internet. (Uma discussão no Tectura e um link da Microsoft são as melhores na minha opinião). Existem diferentes abordagens para esse problemas. Leia os materias e escolha qual se encaixa melhor no seu problema.
entendi ja o conceito e vou ter realmente que separar em varios db para cada cliente, agora a duvida é como fazer isso com Spring criar varios EntityManager