[quote=asaudate]Nunca precisei desenvolver usando multi-tenancy, mas já ouvi vários relatos de prós e contras (nesse mesmo tópico, inclusive).
Acho que tudo é questão de desenvolver orientado a evolução. O pessoal do twitter desenvolveu a coisa toda usando MySQL. Quando precisou, eles mudaram, escalaram, enfim… tudo é questão de como você desenvolve. Se você souber que existe uma chance de ter que modificar sua infra-estrutura, não seja dependente dela![/quote]
É verdade, separando as camadas e usando um ORM, na hora de uma migração muita coisa é aproveitado.
Concordo com o asaudate
Se necessário mais para frente, mude !!!
E é o que eu falei antes… não tem certo ou errado… melhor ou pior…
Tem o que melhor se adequa às suas nececidades no momento.
Por exemplo a minha:
:arrow: Não quero que um cliente concorra com as transações dos demais clientes;
:arrow: Minha aplicação, depois de estabilizada, não tende a ter muitas atualizações;
:arrow: Alguns clientes poderão solicitar que o banco de dados fique em seu servidor e não no da aplicação;
:arrow: Entre outros.
Por esses motivos vou planejar o meu sistema tendo um banco de dados intermediário que fará a autenticação do usuário (relação de cliente x usuário) e depois de autenticado vou direcionar cada cliente para o seu bando de dados.
Futuramente, se o sistema der certo no mercado, posso pensar em um banco só se esta for a necessidade.
Mudar sempre vai, o problema é prestar uma qualidade minima no serviço, e que essa mudança seja a longo prazo.
Também creio que não tem certo ou errado, só não posso aceitar métodos/soluções sem argumentos realmente válidos.
Minha dúvida sobre performance, por exemplo, quando o banco é centralizado não foi respondida!
Simplesmente pq é um problema, e fica dependendo do servidor para disponibilizar um bom serviço.
Mas o tópico foi muito bom, agradeço a todos pelas respostas e contribuições.
Vou estudar mais antes de propor algo para a empresa.
A performance, obviamente, fica abaixo do que em bancos separados. O ponto central continua sendo sua necessidade. Se fosse ótimo ficar no mesmo banco, essa discussão não teria motivo para existir.
Essa questão sobre compartilhamento de transações num banco único me alertou, vou pesquisar mais sobre isso.
Pq estou prestes a iniciar uma app SAAS, e essas discussões são muito valiosas.
[quote=j0nny]Mas a discussão não pode parar.
Por exemplo, quais seriam as soluções para evitar esse problema de performanace com um banco compartilhado?[/quote]
Solução mega-ultra-master-power-final não existe. O que sempre dá pra fazer é tunar o banco (aumentar número de transações disponíveis, máquina dedicada, etc.). Mas isso, dá pra fazer em qualquer tipo de aplicação =)
[quote=asaudate][quote=negovei]
Minha dúvida sobre performance, por exemplo, quando o banco é centralizado não foi respondida!
[/quote]
A performance, obviamente, fica abaixo do que em bancos separados. O ponto central continua sendo sua necessidade. Se fosse ótimo ficar no mesmo banco, essa discussão não teria motivo para existir.
[]'s[/quote]
Estou em busca de informação, por isso a discussão existe! Podia ser ótimo ficar no mesmo banco, e eu estar querendo saber disso!
O interessante é que em nenhum outro post ninguém falou sobre. E se estamos comparando temos que ver os dois lados da moeda.
[quote=asaudate][quote=negovei]
Minha dúvida sobre performance, por exemplo, quando o banco é centralizado não foi respondida!
[/quote]
A performance, obviamente, fica abaixo do que em bancos separados. O ponto central continua sendo sua necessidade. Se fosse ótimo ficar no mesmo banco, essa discussão não teria motivo para existir.
[]'s[/quote]
Aí discordo.
Facebook, Twitter (como vc mesmo disse), Salesforce, Gmail, etc trabalham num único banco e a performance é semelhante (ou até melhor!!!) à de uma aplicação equivalente rodando em um servidor dedicado.
Perfomance de banco depende mais de escolher a ferramenta certa para o problema e de contruir um bom modelo do que uma simples decisão SQL/NoSQL.
Performance mede-se em tempo de resposta (latência) do app e não em tempo de acesso a banco.
Não há contradição no que eu disse, foram afirmações feitas em contextos diferentes e sobre “coisas” diferentes.
Na primeira eu estava comparando duas soluções que possibilitam Multitenancy (Hibernate e GAE).
Na segunda (mais genérica) eu disse que a performance depende mais da ferramenta e de uma implementação adequada do modelo de dados do que o banco ser NoSQL/SQL. Ou seja, vc pode ter uma implementação “porca” de modelo (e isso é bem comum por aí) no GAE (NOSQL) que apanha de uma boa implementação em MYSQL.
Na maior parte das vezes tb acaba acontecendo do caboclo só arranhar a superfície da ferramenta e, quando a coisa degrada em produção, colocar a culpa nela.
[quote=negovei][quote=andre_salvati]
Não entendi sua dúvida.
[/quote]
Ficou confuso em alguns momentos, pois foi citado exemplos de aplicativos que usam NOSQL, comparando performance (relacional/multitenancy/hibernate).
Então, o que ficou em dúvida foi isso: é possível duas aplicações bem desenvolvidas, o banco relacional dar o mesma performance do NOSQL?
Não vejo sentido nisso. Como você mesmo citou “Hibernate é passado, meus dados não precisam de colunas…”.
Mas, entendi melhor seu ponto de vista.
Obrigado.[/quote]
Cuidado com o modismo.
NoSQL nem sempre vai ser a melhor solução, e sendo uma aplicação comercial, tenho grandes dúvidas se NoSQL é a melhor solução. Nesse caso acho que ainda se aplica melhor o relacional.
Leia mais sobre NoSQL.
[quote=j0nny]
Cuidado com o modismo.
NoSQL nem sempre vai ser a melhor solução, e sendo uma aplicação comercial, tenho grandes dúvidas se NoSQL é a melhor solução. Nesse caso acho que ainda se aplica melhor o relacional.
Leia mais sobre NoSQL.[/quote]
Ainda não define nada, vou estudar mais e fazer muitos testes. Tenho tempo para desenvolver o projeto.
já decidiu sobre a estrutura do seu banco de dados? quais foram suas conclusões :?:
já decidiu sobre o serviço de cloud :?:
este link pode ajudar:
:arrow: andre_salvati
pelo que percebi vc utiliza e recomenda o Google App Engine, certo ?!
Se eu compreendi certo, existem algumas limitações e vai depender muito da aplicação para sua utilização.
Creio que não roda uma aplicação JBoss Seam (por exemplo) no GAE. Correto?
Quais são as características da app, o framework e as bibliotecas que vc utilizou :?:
Na verdade apenas apresentei as opções para desenvolvimento do projeto, e a necessidade de uma consultoria.
Atualmente estamos trabalhando na documentação da regra de negócio e correções no sistema.