4

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

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

  2. 如果是这种情况,它的扩展性如何?最好使用什么数据库(mysql、oracle 等)?

  3. 如果每个用户都有他/她自己独特的数据库表;这是如何实现的?是通过 rake 任务吗?

  4. 您是否会建议任何资源(书籍、媒体等)来解释如何完成这些方法中的任何一种?

谢谢!

4

2 回答 2

2

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

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

可能有更新的文章,但我猜它们将是一个很好的开始。

祝你好运!

于 2010-02-08T14:23:54.437 回答
0
  1. 使用外键值将表共享并标识给“父级”。每个用户拥有单独的表将是一场噩梦。好的数据库规范化更有可能解决大多数这些问题。待办事项与项目相关,项目与帐户相关,然后每个帐户有很多用户。
  2. 最好使用的数据库完全取决于您。如果您正在使用 rails 和 db 迁移,那么您只限于该接口可以使用的内容。首先,使用 MySQL 或 PostgreSQL(我的偏好)。它们是免费的,并且有丰富的知识可用于业余项目。
  3. 我个人不会为每个用户创建单独的表
  4. 阅读有关数据库规范化数据库设计的维基百科条目将是一个好的开始。在此之后,您应该尽可能多地阅读有关良好数据库设计的内容,甚至可以从开发人员在数据库设计中常犯的错误开始。
于 2010-02-08T14:23:30.070 回答