【发布时间】:2018-10-14 20:18:42
【问题描述】:
我正在尝试构建一个多租户 API 应用程序,并希望将租户数据分离到 postgres 中的模式中,但是,我找不到任何具有明确支持 postgres 中模式的 ORM 的 nodejs 框架。我发现最接近它的是 Bookshelf ORM,它支持传入 SQL 查询构造的选项,但这似乎有点 hacky。有什么建议吗?
【问题讨论】:
-
如果您不打算分离数据库,我是否建议也分离应用程序实例?要正确执行此操作,无论 ORM 是什么,您都需要为每个数据库单独连接。这会产生很多开销,具体取决于您打算以何种规模运营。但是,如果您担心安全性,为什么不拆分您的 API,以便为每个应用程序实例提供单独的应用程序实例呢?您可以在前面使用代理在它们之间切换,例如 Nginx。
-
出于安全考虑,我想将其拆分出来,并担心表可能有多大,所以这听起来不错。您将如何准确地分离应用程序实例?
-
具体情况取决于您的应用程序。一般来说,您需要编写某种主管流程,为每个客户生成流程,自动启动它们,处理新版本的重新启动等。您需要某种集中式配置管理,这可能是就像磁盘上的 JSON 文件一样简单,但很可能是您的主管与之交谈的 API。您将需要某种边缘路由,它很容易实现为指向每个实例的应用程序服务器的代理。
-
@LewisVatcky 如果您直接执行查询,而不使用任何 ORM,您可以自己支持 SQL 模式。查看pg-promise。
-
@vitaly-t,我认为这是现在最好的方法。不幸的是我不得不放弃 ORM,但这意味着我对它有更多的控制权。
标签: node.js postgresql multi-tenant