我正在扩展一个现有的 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/