ruby-on-rails - Heroku 上的多模式 Postgres

标签 ruby-on-rails postgresql heroku ruby-on-rails-4

我正在扩展一个现有的 Rails 应用程序,我必须向它添加 Multi-Tenancy 支持。我读了一些书,看到这个应用程序将如何托管在 Heroku 上,我想我可以利用 Postgres 的多模式功能。

我了解到,当使用多个模式时,备份似乎存在一些性能问题。我觉得这个信息有点过时了。有谁知道现在是否仍然如此?

此外,是否还有任何其他性能问题或我应该考虑的注意事项?

我已经考虑过向每个表添加一个字段,这样我就可以使用单个模式,并让该字段引用租户表,但考虑到时间窗口,多个模式似乎是最好的解决方案。

最佳答案

我根据 Ryan Bigg 和 Apartment gem 的一些工作,将 postgres 模式用于 Multi-Tenancy 站点。


https://leanpub.com/multi-tenancy-rails

https://github.com/influitive/apartment


我发现为每个客户端提供单独的模式是一种优雅的解决方案,可以提供更高程度的数据隔离。就我个人而言,我发现性能有所提高,因为 Postgres 可以简单地返回表中的所有结果,而无需过滤为“owner_id”。

我还认为它可以简化迁移,并允许您在不进行全局更改的情况下调整单个客户数据。例如,您可以将列添加到特定客户模式并使用功能标志来启用自定义功能。

我与性能相关的主要论点是,备份是一个周期性过程,而客户表的范围将针对每次访问。在此基础上,我认为备份的任何性能影响都会降低客户体验。

关于ruby-on-rails - Heroku 上的多模式 Postgres,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19800691/

相关文章:

javascript - Turbolinks 消灭了 jQuery Mobile 类

ruby-on-rails - 正在尝试安装 libv8, "failed to build gem native extension"

python - Heroku 应用程序成功部署,但在加载站点时收到应用程序错误

ruby-on-rails - Rails5 ActionCable Chat with Conversations

ruby-on-rails - 尝试从外部 URL 检索数据时出现错误消息

android - 如何在同一查询响应中返回的字段上过滤 GraphQL 嵌套数组?或者如何在多个字段上创建 GraphQL 关系?

json - 何时在 postgres 中对数十亿行的键/值表使用 Json

php - symfony2 + doctrine2@postgresql 设置模式

heroku - 是否可以在 Heroku 上运行 xvfb?

heroku - 自定义 Heroku 构建包中的配置变量何时何地在环境中可用?