【问题标题】:Mapping Multi Tenant Database映射多租户数据库
【发布时间】:2012-04-23 04:43:24
【问题描述】:

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

【问题讨论】:

  • 请格式化以便文本可读。
  • 也许是一个带有表的数据库,该表将用户 ID 链接到各个数据库?
  • 我们尝试了那个但我们无法检索到第一个数据库用户 ID

标签: c# mysql database


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 2015-07-19
    • 2012-09-24
    • 2018-10-01
    相关资源
    最近更新 更多