繁体   English   中英

映射多租户数据库

[英]Mapping Multi Tenant Database

好吧,我们正在开发带有单独数据库的多租户应用程序。 对于N个独立的数据库,所有模式都具有相同的结构。 我们使用带有aspx的MySql来构建Web应用程序。 现在将出现一种情况,即可能有相同的用户位于N个独立的数据库中。 我们需要一种方法来链接用户拥有其数据的那些数据库,并将其显示在下拉列表中。 在用户登录时链接数据库后,他/她将能够在其数据所在的下拉列表中查看所有可用的数据库。 当用户更改下拉列表值时,他/她应该能够立即更改数据库并从链接的数据库查看他/她的数据。 我们已经构建了多租户应用程序,并且一切正常。 问题是如何从特定用户的主数据库映射所有这些数据库。 每个用户在单独的数据库中都有单独的唯一ID。 因此,除了数据结构之外,用户在Multi Tenant Database中没有其他共同之处。 我们尝试将所有用户的唯一ID存储在主数据库中,并将其与用户所在的其他唯一ID关联,但解决方案未获得丰硕的结果。 任何其他替代方案都非常受欢迎。

我用于多租户mysql的方法是:

  • 主数据库包含所有数据的所有租户,但是每个表都有一个tenantID列,该列按租户将数据分隔开
  • 为每个租户创建多个数据库,但是该数据库充满了引用回主数据库的mysql视图。 例如:

 # ie. main database has tables: users, and invoices
 # if you have a new tenant named "acme", then:
 create database acme;
 create view acme.users as select * from maindb.users where entityID=2;
 create view acme.invoices as select * from maindb.invoices where entityID=2;

在我的情况下,这使我不必更改以前的任何查询(这些查询是在我知道要使用多租户之前构建的)。 我要做的就是选择合适的数据库,所有数据都会自动分离。

但是将实际数据全部保存在同一数据库中,简化了维护。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM