【发布时间】:2012-02-23 10:19:24
【问题描述】:
我的团队正在构建一个应用程序,在一次头脑风暴会议上出现了一个我不确定的问题,所以我想我应该联系 Stack Overflow 社区以获得更多意见。这是它的要点:
- 我们的应用程序为拥有多个用户的组织创建了一个帐户。这些用户有帖子和 cmets。
- 最初的数据库设计是为组织提供一个表,然后每个用户将通过组织的
id关联。
其中一位开发人员建议我们为每个组织的帐户使用单独的数据库,以便在组织之间分离数据并提高性能。我从未见过任何 Rails 应用程序以这种方式使用多个数据库,我什至不知道如何在 Rails 中做到这一点。
那么我的问题是:
我们是否会从使用单独的数据库中获得任何好处,或者这是否会给应用程序增加不必要的复杂性?
示例
假设有 100 个组织。每个组织有 100 个用户。每个用户有 100 个帖子和 100 个 cmets。
通过这些表进行查询是否会消耗大量性能,或者拥有 100 个单独的数据库会变得笨拙并导致比其价值更多的问题吗?这会导致迁移问题吗?组织之间的架构是相同的。
我不确定这是否是一个足够清楚的问题,所以如果您需要更多信息,请在回答之前告诉我。
我确实阅读了以下 Stack Overflow 文章,但它们确实没有帮助我做出这个决定。
【问题讨论】:
-
您可以考虑为您的每个客户运行您的整个应用的唯一实例,包括数据库。但是您绝对不应该出于“组织”目的将一个应用程序的数据拆分到多个数据库中。
-
这是个好主意。由于这是我们在 Rails 中的第一个主要应用程序开发人员,我们仍在学习设置这种东西的最佳方法。我不完全确定如何运行单独的应用程序实例,但我会研究一下。谢谢!
-
如果您应该将每个组织的数据与其他组织隔离,请查看标记为“多租户”的 SO 问题。另见this SO answer。
标签: ruby-on-rails database-design