映射多租户数据库

时间:2012-04-23 04:43:25

标签: c# mysql database

  

我们正在开发一个具有独立性的多租户应用程序   数据库。所有模式都具有相同的N分离结构   数据库。我们正在使用MySql和aspx来构建Web应用程序。   现在会出现可能有相同用户的情况   N个独立的数据库我们需要一种方法来连接这些数据库   用户拥有他/她的数据并在下拉列表中显示的位置。   在用户登录后链接数据库他/她将能够   查看他/她所在的下拉列表中的所有可用数据库   数据驻留。当用户更改下拉列表值时他/她   应该能够立即更改数据库并查看他/她   数据形成链接的数据库。我们建立了多租户   申请,一切都很好。问题是如何   从特定的主数据库映射所有这些数据库   用户。每个用户在单独的数据库中都有一个单独的唯一ID。   因此,用户在多租户数据库中没有任何常见内容   除了数据结构。我们尝试存储所有用户的唯一ID   在master数据库中并将其与其他唯一ID链接在一起   用户居住,但解决方案没有给出富有成效的结果。任何   其他选择是最受欢迎的。

1 个答案:

答案 0 :(得分: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;

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

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