当前位置: 首页 > 知识库问答 >
问题:

在多租户应用程序中使用多个数据库模式

秦锐
2023-03-14

我正在将当前的应用程序迁移到多租户体系结构。由于只有一个代码库,我需要解决多个租户的问题。我使用的是单数据库、多模式的方法。每个租户将被分配一个单独的模式,其中元数据保存在默认模式中。

应用程序是用ASP构建的。NET MVC。我使用Dapper连接到我的SQL Server。我有50个函数,使用直接查询和存储过程调用数据库。当为每个租户初始化dapper时,是否有任何方法可以在不改变函数的情况下设置模式。

共有2个答案

韩善
2023-03-14

我会尝试一个简单的方法。

为了便于维护,我使用Dapper将查询存储在外部XML文件中。因此,您可以为每个客户提供一个外部XML文件。另一种解决方案,但我以前没有尝试过,我认为可以在查询中添加一个参数,即模式名。因此,在每个查询中,您总是需要指定模式

扈阳辉
2023-03-14

在SQL服务器中,模式与用户相关联。每个用户至少有一个默认模式。您可以将租户与模式相关联,这意味着您将拥有

房客-

动态构造SQL连接字符串,并传递对应于该租户的SQL用户。这样,默认模式就会自动指出,您不必更改简洁的查询,也不必编写动态查询。

注意:不要忘记检查连接池含义。

 类似资料:
  • 我有一个支持多租户的Spring Boot应用程序(请参阅https://medium.com/swlh/multi-tenancy-implementation-using-spring-boot-hibernate-6a8e3ecb251a)每个数据库都有一堆jpa实体。不过,我有一个实体表租户,它应该只存在于默认数据库中,并存储关于各种租户的信息(例如数据库名称)。如何在租户/数据库设置中修

  • 我正在学习多租户应用程序,以及如何使用PostgreSQL的模式来实现这一点。 在研究这个主题时,我发现了一篇文章,作者描述了在多租户应用程序中使用PostgreSQL模式时的糟糕体验。主要问题是迁移性能差和数据库资源使用率高。 似乎只有一个模式(在租户之间共享表)会比每个租户有一个单独的模式带来更好的性能。但我觉得很奇怪。我的想法正好相反,因为较小表上的索引往往比较大表上的索引轻。 为什么在许多

  • 我们正在开发一个多租户应用程序。在体系结构方面,我们为业务逻辑设计了共享中间层,为数据持久性设计了每个租户一个数据库。也就是说,业务层将与每个租户的数据库服务器建立一组连接(连接池)。这意味着应用程序为每个租户维护单独的连接池。如果我们预计约有5000个租户,那么这个解决方案需要高资源利用率(每个租户的应用服务器和数据库服务器之间的连接),这会导致性能问题。 我们已经通过保持公共连接池解决了这个问

  • 我想知道如何为每个租户提供定制。我想提供在租户想要的每种形式中添加新字段的设施,包括字段名、数据类型等。现在我的问题是如何为这种类型的场景设计数据库表?正如我所想的那样,我们必须给每个表单赋予表单id,每当租户在表单中创建新字段时,应该在数据库表中创建一个新的行,该行应该具有租户id、表单id、字段名称、数据类型等... 现在请给我真正的解决方案的朋友......我需要这个数据库表设计解决方案立即

  • 我必须在j2ee中开发一个多租户SaaS应用程序,从Iaas和PaaS开始实现三种云模型,我选择了openstack和openshift origin。SaaS应用程序的第一个标准是多租户,我知道有三种方法来实现它——单独的数据库——共享数据库,单独的模式——共享数据库,共享模式。我在这里迷失了方向,因为许多框架,比如ATHENA,ORM,比如hibernate,还有TOPLINK。我需要帮助了解

  • 我已经安装了keycloak-angular包,我使用它的方式如下:https://www.npmjs.com/package/keycloak-angular 问题是,在我的应用程序中,我希望有多租户。这意味着在应用程序加载期间不知道领域名。 在说明中,它说“KeycloakService应该在应用程序加载期间使用APP_INITIALIZER标记初始化”,问题是该领域是由用户给定的,在应用程序