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

Sistema Multi-Usuarios

Boa tarde, minha empresa esta desenvolvendo um software web, cujo objetivo e comercializar assinaturas, então surgiu a duvida quando a arquitetura, deveriamos desenvolver um unico banco, e identificar o acesso bem como os registros pelo Id da empresa, (onde uma pesquisa retornaria valores onde o filtro seria o where id_empresa = id) ou deveriamos criar um banco para cada conta de assinante, onde no momento do login, o sistema encaminharia para o banco de acordo com cliente?

7 respostas

Olá Douglas!

Acredito que a melhor forma seja a primeira!

Não acho uma boa opção criar um banco para cada conta de assinante criada.

O melhor é você ter uma tabela dos assinantes em um unico banco mesmo.

Isso pode ser considerado até mesmo como um caso de abstração (como em orientação a objetos) onde não criamos classes "Violino", "Violao", "Piano", "Trompete" e sim uma classe que engloba todas elas: "InstrumentoMusical"; pois elas possuem atributos em comum, assim como os assinantes.

sim, mais eu ja penso que um unico banco, digamos para 100 clientes, onde cada cliente produz centenas de registros por hora, fazer uma query para varrer esses milhoes de dados filtrando por id de usuario, creio eu que seria muito pesada consulta, ja um banco para cada cliente, a query dele seria bem mais leve, e quando a questão da abstração, ainda continuaria sendo "InstrumentoMusical" porem seria como se cada um guardasse seu instrumento em seu proprio endereço, ao inves de guardar em um mesmo local, e ter todo trabalho de procurar cada um o seu.

Concordo com o Guilherme.Porque agora imagina você com milhares de assinaturas, e precisa fazer uma alteração grande na base de dados, você teria que alterar cada base individualmente. E com relação ao desempenho das consultas, acredito que definindo bem os índices de cada tabela, e otimizando as consultas, o desempenho não seria prejudicado.

Isso!

Como o Cauê disse, a manutenção irá acabar ficando muito complicada dessa forma!

Olá Douglas!

Conseguiu sanar sua dúvida?

Poderia fechar o tópico por favor?

em um forum eu defendi essa proposta de que um banco para cada cliente geraria um trabalho enorme de manutenção, e o pessoal me respondeu o texto abaixo, o problema e que desconheço a tecnologia citada, alguem pode me falar alguma coisa sobre?

 1) CI/CD não é limitado apenas a aplicação, serve pro banco também (serio que em 2019 alguém ainda faz isso na mão ?)
2) cada db tem um schema, por isso seriam dbs separados, cada schema com as personalizações do cliente.
solução!

1) CI/CD não é limitado apenas a aplicação, serve pro banco também (serio que em 2019 alguém ainda faz isso na mão ?) 2) cada db tem um schema, por isso seriam dbs separados, cada schema com as personalizações do cliente.