我想实现一个多租户解决方案,其中我有一个网络服务器和一个在所有租户之间共享的数据库。关于 AWS 的这篇博客文章,它是“池化多租户模型”。
我正在使用nest.js 和sequelize。如果sequelize不适合这个,我也可以在必要时切换到另一个库,例如typeORM。
如何实施?我完全不知道如何为每个 HTTP 请求使用不同的连接(不同的数据库用户),而且我也不知道如何以一种好的方式为连接设置运行时上下文变量。
我目前得到的是每个 HTTP 请求都包含一个标头
tenant-id
。这应该用于所有查询。
sequelize 中还有scopes 的概念。但这是在客户端实现的,而不是直接在数据库上实现的。另外,这是续集特有的东西。我更喜欢一个独立于sequelize并且可能更具体于PostgreSQL的解决方案。
有没有办法用sequelize来实现这个?一个提示或一个基本方法就足够了。
https://learn.microsoft.com/en-us/microsoft-365/education/deploy/design-multi-tenant-architecture。 我正在研究创建一个类似的架构,但我将使用“筒仓”模型或“物理数据库”。我认为首先您需要创建一个名为“catalog”的内部数据库,其中包含用户的信息(该用户已经登录?如果为 true,请选择此信息),其中必须包含以前的凭据,租户 ID 是如何的。关于 Sequelize,我想有必要使用 RAW 查询来创建 ROLE|GRANT|DATA BASE 等,并使用 MIGRATIONS 为每个新客户端创建相同的数据库。