Ir para conteúdo

Arquivado

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

jmlavoier

M.E.R. de um SaaS

Recommended Posts

Estou com dúvida, tenho pesquisado e não encontrei nenhum material que me explique a modelagem de entidade relacionamento de um sistema SaaS.

 

Hoje existem vários sistemas na internet, ou nas nuvens se preferir, para vários tipos de ramos. Onde não é preciso solicitar a implantação do sistema para cada empresa, pois é só o cliente fazer o cadastro para ter seu usuário e senha do sistema, e assim começar a alimentar a base de dados para controlar e organizar sua empresa. Não é necessário implantação do sistema e para cada cliente. Mas como é o raciocínio usado para criar a base de dados ?

 

A minha dúvida é o seguinte: - Quando o usuário confirma seu cadastro, como o banco relaciona os registros por usuário. Tipo, por exemplo, vamos supor um sistema com uma tabela (vendas). Essa tabela terá os registros relacionados aos usuários do sistema, pois cada usuário do sistema terá as suas vendas registradas então. Mas eu fico "encucado" pelo fato de empresas(usuários) diferentes ter todos os registros gravados na mesma tabela. Ficaria assim.

 

Ex.

--------------------------------------------------------------

|...................... Vendas...............................|

--------------------------------------------------------------

usuario | cod_venda | produto | qnt | valor_un |

01........|...01...........|....02.....|.15..|....1.00...|

01........|...02...........|....03.....|.10..|....2.15...|

01........|...03...........|....01.....|.08..|....4.50...|

01........|...04...........|....02.....|.15..|....1.99...|

02........|...01...........|....08.....|.04..|....0.99...|

02........|...02...........|....07.....|.18..|....4.00...|

--------------------------------------------------------------

 

Sinto que existe algo de errado em tratar estes tipos de registros que são tão confidenciais e de extrema importância para o usuário. Eu sei que eles não vão ver os registros uns dos outros, mas e a performance ? os riscos na seleção de registro errado ?

 

Com isso eu acabei pensando na possibilidade de criar uma base de dados para cada usuário. Quando o usuário confirmar seu cadastro, é executado um script para criar a base de dados para ele. O sistema executa o create database, e os create tables da vida. E assim não tendo nenhum contato com registros de outros usuários. Galera, não sei se minha dúvida é muito besta, caso voces acham, pelo menos me indiquem alguns materiais que podem me esclarecer esta minha dúvida.

 

Desde já agradeço, obrigado. Deus abençoe a vida de vocês !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso o volume de dados seja extremo para muitos usuários com certeza eu escolheria a opção:

- Uma base para cada usuário.

 

Não sei também se seria a melhor opção.

Tenho minhas dúvidas quanto a manter várias bases no mesmo servidor com muitas bases abertas ao mesmo tempo por exemplo.

O que acham?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Galera eu ainda não esclareci esta dúvida, se alguém souber me responder este assunto. Eu agradeço muito mesmo !

 

Pelo menos, alguém conhece um livro específico de modelagem de base de dados para SaaS ou Web 2.0.

 

Abraço !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por questões como segurança, e escalabilidade, uso sempre uma base para cada cliente.

 

Após a contratação do sistema, é gerado o banco de dados e as respectivas tabelas necessárias para o funcionamento do sistema de acordo com o que foi contratado.

Se contratar novos serviços, novas tabelas serão geradas.

 

Fica assim mais fácil a manutenção, mais seguro, e caso precise mudar um dos clientes de servidor, só os dados desse cliente são movidos.

Sem falar no backup, se o cliente x tiver problemas no seu sistema, não tenho que restaurar o backup de todos os clientes ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Por questões como segurança, e escalabilidade, uso sempre uma base para cada cliente.

 

Após a contratação do sistema, é gerado o banco de dados e as respectivas tabelas necessárias para o funcionamento do sistema de acordo com o que foi contratado.

Se contratar novos serviços, novas tabelas serão geradas.

 

Fica assim mais fácil a manutenção, mais seguro, e caso precise mudar um dos clientes de servidor, só os dados desse cliente são movidos.

Sem falar no backup, se o cliente x tiver problemas no seu sistema, não tenho que restaurar o backup de todos os clientes ;)

 

Obrigado Vinicius ! Realmente faz sentido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se houver certeza de que o SaaS consegue se manter numa base só, prefira uma base. Algumas razões:

 

Atualização: Se há uma base para cada cliente, então na hora de atualizar a base, todas terão que ser atualizadas, ao invés de atualizar apenas num lugar só. Se você tem milhares de clientes, serão milhares de bases.

 

Análise: Na hora de analisar dados, tendo um DB para cada cliente, você terá que reunir isso tudo. Numa base só, a análise é mais simples.

 

Claro que usando um banco de dados para cada, você terá que lidar com problemas de performance.

 

Ou seja, no fim das contas, tudo depende do número de clientes, número de GB e do modelo de negócios, porque na verdade, existem discussões infinitas sobre qual é o melhor modelo, mas no fim, creio que depende.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se houver certeza de que o SaaS consegue se manter numa base só, prefira uma base. Algumas razões:

 

Atualização: Se há uma base para cada cliente, então na hora de atualizar a base, todas terão que ser atualizadas, ao invés de atualizar apenas num lugar só. Se você tem milhares de clientes, serão milhares de bases.

 

Análise: Na hora de analisar dados, tendo um DB para cada cliente, você terá que reunir isso tudo. Numa base só, a análise é mais simples.

 

Claro que usando um banco de dados para cada, você terá que lidar com problemas de performance.

 

Ou seja, no fim das contas, tudo depende do número de clientes, número de GB e do modelo de negócios, porque na verdade, existem discussões infinitas sobre qual é o melhor modelo, mas no fim, creio que depende.

 

Legal ! obrigado por este ponto de vista Eudes. Agora percebo que esta discussão não algo com resposta definida, mas sim para ser discutido de acordo com a visão do projeto. Se quero ter inúmeros clientes, para facilitar a manutenção seria melhor criar uma base de dados para todos os clientes. Mas para isso, preciso aprender a estruturar uma base de dados desta maneira. Pois tentando fazer algo bom, posso fazer algo muito ruim. A Base de dados precisa ser muito bem modelada, pensando em cada detalhe antes de começar. Eu queria fazer algo assim, mas não sei como iniciar, e até agora não encontrei material que me possa fornecer este conhecimento.

 

Obrigado às opiniões, são pontos de vista que me ajudaram a entender um pouco do pensamento sobre o assunto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal ! obrigado por este ponto de vista Eudes. Agora percebo que esta discussão não algo com resposta definida, mas sim para ser discutido de acordo com a visão do projeto. Se quero ter inúmeros clientes, para facilitar a manutenção seria melhor criar uma base de dados para todos os clientes. Mas para isso, preciso aprender a estruturar uma base de dados desta maneira. Pois tentando fazer algo bom, posso fazer algo muito ruim. A Base de dados precisa ser muito bem modelada, pensando em cada detalhe antes de começar. Eu queria fazer algo assim, mas não sei como iniciar, e até agora não encontrei material que me possa fornecer este conhecimento.

 

Obrigado às opiniões, são pontos de vista que me ajudaram a entender um pouco do pensamento sobre o assunto.

 

Alguma novidade pessoal?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alguma novidade pessoal?

 

Atualmente utilizo para sistema menores a mesma base de dados.

 

 

Comece fazendo uma boa análise da sua estrutura de banco de dados, definindo o maior nível a chave de compartilhamento. Crie triggers e funções do banco que facilitem a velocidade de consulta para que na aplicação reduza sua necessidade de código.

 

Mantenha bem documentado sua análize de sistemas, para alterações futuras.

 

Eu também estou procurando referencias de modelo de bd, quem souber de um bom livro favor indicar. Vou pesquisar e posto aqui se achar um.

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.