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

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

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

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

  4. 您是否有建议的资源(书籍、媒体等)来解释如何实现这两种方法?

谢谢!

有帮助吗?

解决方案

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

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

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

祝你好运!

其他提示

  1. 这些表使用外键值共享并标识给“父级”。每个用户拥有单独的表将是一场噩梦。良好的数据库规范化更有可能解决大部分问题。待办事项与项目相关,项目与帐户相关,然后每个帐户有许多用户。
  2. 使用最好的数据库完全取决于您。如果您使用 Rails 和数据库迁移,则您仅局限于该接口可以利用的内容。首先,选择 MySQL 或 PostgreSQL(我的偏好)。它们是免费的,并且有丰富的知识可用于业余爱好项目。
  3. 我个人不会为每个用户创建单独的表
  4. 阅读维基百科条目 数据库规范化数据库设计 将是一个好的开始。接下来,您应该尽可能多地阅读有关良好数据库设计的内容,甚至可以从 开发人员常犯的错误 当涉及到数据库设计时。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top