【问题标题】:How to implement a subscription based DB, such as basecamp如何实现基于订阅的数据库,例如 basecamp
【发布时间】:2010-02-08 14:05:08
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: ruby-on-rails database subscription basecamp


    【解决方案1】:

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

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

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

    祝你好运!

    【讨论】:

    • 这就是典型的做法,也是提供现成的定期计费解决方案的 SaaS Rails 工具包 (railskits.com/saas) 的做法。 :)
    【解决方案2】:
    1. 这些表是共享的,并使用外键值标识为“父级”。每个用户拥有单独的表将是一场噩梦。好的数据库规范化更有可能解决大多数这些问题。待办事项与项目相关,项目与账户相关,然后每个账户有多个用户。
    2. 最好使用的数据库完全取决于您。如果您正在使用 rails 和 db 迁移,那么您只限于该接口可以使用的内容。首先,使用 MySQL 或 PostgreSQL(我的偏好)。它们是免费的,并且有丰富的知识可用于业余项目。
    3. 我个人不会为每个用户创建单独的表
    4. 阅读database normalisationdatabase design 上的维基百科条目将是一个好的开始。在此之后,您应该尽可能多地阅读有关良好数据库设计的内容,甚至可以从 common mistakes developers make 开始阅读数据库设计。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-22
      • 2018-11-20
      • 2011-10-06
      • 1970-01-01
      • 2016-03-09
      • 1970-01-01
      相关资源
      最近更新 更多