如何实现基于订阅的数据库,例如basecamp

时间:2010-02-08 14:05:09

标签: ruby-on-rails database subscription basecamp

我开发了一个功能齐全的ruby-on-rails应用程序,它使用了许多mysql表。我想把它变成一个基于订阅的服务,但我有一些一般的,可能是基本的概念性问题:

  1. 在诸如Basecamp之类的设置中,每个用户是否都可以访问她/他自己的(如在唯一的)db表中,或者是与数百万用户共享并由某个变量识别的表?

  2. 如果是这样,它的规模有多大?什么是最好的数据库使用(mysql,oracle等)?

  3. 如果为每个用户提供他/她自己唯一的数据库表;这是如何完成的?是通过佣金任务吗?

  4. 您是否有任何资源(书籍,媒体等)可以解释如何完成这些方法?

  5. 谢谢!

2 个答案:

答案 0 :(得分:2)

我相信这是通过整体帐户实现的。因此,当前系统中的资源将由该帐户确定范围。即在您的索引操作中,例如@projects = @ account.projects。看看大本营,我会说它很好!如果你遇到这个问题,那么你有一个很好的问题需要解决,在此之前不要太担心。我应该想象数据库是一个集群,但非常怀疑每个用户都有自己的一组表,这将成为管理的噩梦!

快速谷歌,我发现了这个:http://www.robbyonrails.com/articles/2009/01/11/subdomain-accounts-with-ruby-on-rails-explained也链接到DHH的帖子,看起来它解释了他们是如何做到的。

可能有更新的写作,但我猜他们将是一个伟大的地方开始。

祝你好运!

答案 1 :(得分:0)

  1. 使用外键值共享表并将其标识为“父”。每个用户拥有单独的表将是一场噩梦。良好的数据库规范化更有可能解决了大部分问题。待办事项与项目相关,项目与帐户相关,然后每个帐户都有许多用户。
  2. 使用的最佳数据库完全取决于您。如果您正在使用rails和db迁移,那么您只能使用该接口可以使用的内容。首先,使用MySQL或PostgreSQL(我的偏好)。他们是免费的,并且有丰富的知识可用于爱好项目。
  3. 我个人不会为每个用户创建单独的表
  4. 阅读database normalisationdatabase design上的维基百科条目将是一个良好的开端。接下来,您应该尽可能多地阅读良好的数据库设计,甚至可能从数据库设计的common mistakes developers make开始。