关于Rails中多租户与多数据库应用程序的任何想法

Dom*_*Dom 11 web-applications ruby-on-rails

我们的应用程序当前为每个客户端生成一个新数据库.我们开始怀疑是否应该考虑将其重构为多租户系统.

我们应该考虑哪些利益/权衡?在Rails中实现多租户应用程序的最佳实践是什么?

小智 8

我一直在研究同样的事情,只是发现这个演示文稿提供了一个有趣的解决方案:使用Postgre的模式(有点像名称空间)来分离数据库级别的数据,同时保持所有租户在同一个数据库中并保持(大部分)透明轨道.

在Rails中编写多租户应用程序 - Guy Naor


Ste*_*eet 6

多租户系统将为您介绍一系列问题.我的快速想法如下

  • 必须检查并重构所有SQL以包含ClientId值.

  • 必须检查所有索引以确定是否需要包含ClientId

  • 生产中的开发人员/系统管理员在SQL语句中的错误将影响您的所有客户.

  • 数据库损坏/问题将影响您的所有客户

  • 您有一些数据隐私问题,因此糟糕的代码/实现可能允许customerA查看属于CustomerB的数据

  • 以沉重/激进的方式使用您的系统的客户可能会影响其他客户对性能的感知

  • 根据个人客户偏好调整静态数据变得更加复杂.

我确信还有其他一些问题,但这些是我最初的想法.

  • 嗯.多数据库方法也有许多缺点.如果我正在设计一个系统,它往往会与特定的大客户进行多租户合并,可能会拆分成一个单独的系统.多租户系统确实有一些好处.数量庞大的数据库成为行政上的头痛问题.它也是对多个数据库等的脚本更新的痛苦. (2认同)