Ruby on rails 在Rails应用程序中使用单独的数据库而不是单个数据库是否更好?

Ruby on rails 在Rails应用程序中使用单独的数据库而不是单个数据库是否更好?,ruby-on-rails,database-design,Ruby On Rails,Database Design,我的团队正在构建一个应用程序,在一次头脑风暴会议上提出了一个我不确定的问题,因此我想我应该联系堆栈溢出社区以获得更多的意见。以下是它的要点: 我们的应用程序为具有多个用户的组织创建一个帐户。这些用户有帖子和评论 最初的数据库设计是为组织创建一个表,然后通过组织的id将每个用户关联起来 一位开发人员建议,我们为每个组织的帐户使用一个单独的数据库,以分离组织之间的数据并提高性能。我从未见过任何Rails应用程序以这种方式使用多个数据库,我甚至不知道如何在Rails中做到这一点 我的问题是: 使用

我的团队正在构建一个应用程序,在一次头脑风暴会议上提出了一个我不确定的问题,因此我想我应该联系堆栈溢出社区以获得更多的意见。以下是它的要点:

  • 我们的应用程序为具有多个用户的组织创建一个帐户。这些用户有帖子和评论
  • 最初的数据库设计是为组织创建一个表,然后通过组织的
    id
    将每个用户关联起来
一位开发人员建议,我们为每个组织的帐户使用一个单独的数据库,以分离组织之间的数据并提高性能。我从未见过任何Rails应用程序以这种方式使用多个数据库,我甚至不知道如何在Rails中做到这一点

我的问题是:

使用单独的数据库会给我们带来什么好处,还是会给应用程序增加不必要的复杂性?

例子 假设有100个组织。每个组织有100个用户。每个用户有100篇帖子和100条评论

通过这些表进行查询是一个主要的性能消耗,还是拥有100个单独的数据库会很难处理,并且会导致更多的问题?这是否会导致迁移问题?组织之间的模式是相同的

我不确定这是否是一个足够清楚的问题,所以如果您需要更多信息,请在回答之前告诉我

我确实读了下面的堆栈溢出文章,但它们确实没有帮助我做出这个决定


你可以共享数据库也可以使用各种gem,但根据我的观点,没有必要为你的应用程序创建单独的数据库,但这取决于你,你可以通过各种方式提高数据库性能

不要这样做。这只会增加不必要的复杂性

不要在问题变成问题之前对其进行优化。如果您的应用程序达到了数据库性能是一个巨大瓶颈的地步,那么就解决这个问题。现在,专注于编写好的、快速的查询


37个信号只是关于如何用好的硬件来避免共享和关联的系统管理开销。

您可以考虑为每个客户机运行整个应用程序的唯一实例,包括数据库。但你绝对不应该为了“组织”的目的将一个应用程序的数据分割成多个数据库,这是个好主意。由于这是我们在Rails上的第一个主要应用程序开发人员,我们仍在学习设置这类东西的最佳方法。我不完全确定如何运行单独的应用程序实例,但我会研究一下。谢谢如果您希望将每个组织的数据与其他组织隔离,请查看标记为“多租户”的SO问题。还有,这是我的看法。我认为,当你甚至没有可以测试的应用程序时,考虑edge case的性能问题是有点出格的。我很欣赏这些输入,并且可能会坚持使用单个数据库,当(如果)我们使用它时,我会跨越性能桥梁。这对我来说是一个新概念,我需要做更多的研发来确定这是否对我们有用。