【发布时间】:2014-05-14 21:19:05
【问题描述】:
先介绍一下背景:
我们正在尝试创建一个多租户应用程序,我们考虑先使用mean stack 并为每个租户创建多个集合(例如 order_tenant1、order_tenant2 等),然后我们浏览了一些反对此的博客方法,其次我们觉得事务的需要是我们数据库的核心要求,因此我们向 RDBMS lke mysql 和 mariaDB 开放了我们自己,我们偶然发现了一个blog,它详细解释了该方法,它说创建视图以获得,更新和插入与租户和视图参数相关的数据将通过连接字符串定义,因为我们使用的是 node.js 我发现 ORM for mysql sequelizejs 非常好。
实际问题:
根据我对平均堆栈的经验,我们在 server.js 文件中定义了 mongo 连接,应用程序在应用程序启动时建立这些连接并保持它们处于活动状态, 我怎样才能让多个 sequelizejs(或就此而言和数据库连接)对象根据属于特定租户的用户连接到数据库,并为应用程序提供正确的对象以继续执行业务逻辑
1)我应该在应用程序收到的每个请求上创建一个新的连接对象,然后在处理请求后关闭它吗?
2) 或者有没有更好的方法在 node、express 或 sequelizejs 中处理这个问题!?
编辑: 我们已决定使用包含tenant_id 作为列的基于行的方法,如blog above 中所述,但我正在努力解决如何通过sequelizejs 对象维护与数据库的直接连接对象,即id 属于租户id 的用户: 1向应用程序发送一个请求,他需要使用一个对象说“db”,该对象是一个sequelize对象,用于与使用租户ID 1在其连接字符串中的详细信息创建的数据库进行通信,对于属于租户ID的用户也是如此: 2 它需要使用相同的对象(即“db”)提供服务,但必须使用其连接字符串中的租户 ID 2 的详细信息创建它,因为我想为我必须服务的每个租户维护不同的连接字符串(数据库连接对象)。
【问题讨论】:
标签: mysql express mongoose sequelize.js mean-stack