2010-02-08 73 views
4

我开发了一个全功能的ruby-on-rails应用程序,它使用了大量的mysql表格。我想变成一个基于订阅服务,但我有一些通用的,可能是基本的,概念性的问题:如何实现基于订阅的数据库,如basecamp

  1. 在设置,如大本营是否每个用户可以访问他/她自己(作为唯一)数据库表或与数百万用户共享的表和由某些变量识别?

  2. 如果这种情况如何,它的规模?什么是最好的数据库使用(MySQL,甲骨文等)?

  3. 如果每个用户都被赋予了他/她自己的唯一db表;这是如何完成的?它是通过耙子任务吗?

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

谢谢!

回答

2

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

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

有可能是较新的写作,但我猜他们会是一个很好的地方开始。

祝你好运!

+0

这通常是如何完成的,以及SaaS Rails Kit(http://railskits.com/saas/)如何提供现成的循环计费解决方案。 :) – 2010-11-22 15:25:21

0
  1. 这些表使用外键值共享并标识为“父”。让每个用户分开桌子将是一场噩梦。良好的数据库规范化更有可能修复大部分这些问题。待办事项与项目有关,项目与帐户相关,然后每个帐户都有许多用户。
  2. 最好的db使用完全取决于你。如果您正在使用rails和db迁移,则仅限于该界面可以使用的功能。首先,使用MySQL或PostgreSQL(我的偏好)。他们是免费的,有丰富的知识可用于爱好项目。
  3. 我个人不会对database normalisation为每个用户创建
  4. 读百科词条单独的表和database design将是一个良好的开端。在此之后,您应该尽可能多地阅读好数据库设计,甚至可以从common mistakes developers make开始进行数据库设计。