Pergunta

Eu desenvolvi uma aplicação ruby-on-rails totalmente funcional que utiliza inúmeras tabelas MySQL. Eu gostaria de transformar isso em um serviço baseado em assinatura, mas eu tenho alguns, questões conceituais provavelmente básicas gerais:

  1. Em uma configuração como Basecamp faz cada usuário tem acesso a seu / sua própria (como em originais) tabelas db ou são as tabelas compartilhadas com milhões de usuários e identificado por alguns variável?

  2. Se este for o caso, como bem ele escala? Qual seria o melhor db para uso (MySQL, Oracle etc)?

  3. Se cada usuário recebe seu / sua própria tabelas db únicas; como isso é feito? É através de uma tarefa rake?

  4. Existem recursos que você sugeriria (livros, media, etc) que explicam como realizar um desses métodos?

Obrigado!

Foi útil?

Solução

Eu acredito que é conseguido usando uma conta geral. Em que os recursos do seu sistema atual será escopo por essa conta. ou seja em suas ações índice algo como @projects = @ account.projects. Olhando para basecamp eu diria que dimensiona muito bem! Se você acertar esse problema, então você tem um bom problema para resolver, não se preocupe muito sobre isso até então. I deve imagem do banco de dados é um cluster, mas duvido muito que cada usuário tem seu próprio conjunto de tabelas, que se tornaria um pesadelo para gerir!

A rápida no Google e eu encontrei um presente: http://www.robbyonrails.com/articles/2009/01/11/subdomain-accounts-with-ruby-on-rails-explained que também links para um posto de DHH que parece que explica como eles fizeram isso.

Há provavelmente mais recentes escrever ups mas eu estou supondo que seria um grande começo lugar.

Boa sorte!

Outras dicas

  1. As mesas são compartilhados e identificado a um "pai" usando um valor de chave estrangeira. Tendo mesas separadas por usuário seria um pesadelo. É mais provável que correções de normalização de banco de dados boa maioria destas questões. To-dos são relacionados a projetos, projetos estão relacionados com uma conta e, em seguida, cada conta tem muitos usuários.
  2. A melhor db para uso seria inteiramente até você. Se você estiver usando trilhos e migrações db, você está limitado apenas ao que essa interface pode utilizar. Para começar, vá com MySQL ou PostgreSQL (minha preferência). Eles estão livres e há uma riqueza de conhecimento disponível para projetos de hobby.
  3. Eu, pessoalmente, não iria criar tabelas separadas por usuário
  4. Lendo as entradas da Wikipedia sobre banco de dados normalização e banco de dados projeto seria um bom começo. Depois disso você deve ler-se, tanto quanto você pode em um bom design de banco de dados, talvez até mesmo começando com o erros comuns desenvolvedores fazem quando se trata de design de banco de dados.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top