0

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

4

1 回答 1

0

我对多租户 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;

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

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

于 2014-12-06T19:25:31.657 回答