1

我们得到了一个应用程序,其中通过为每个租户拥有一个唯一的数据库 (MYSQL) 来实现多租户。表结构相同。我需要列出每个租户的所有过期产品,我想知道如何将所有这些产品合并到 WSO2 中的一个数据 Web 服务中?我知道我可以使用为表添加前缀的数据库创建查询:例如。从 DB1.products 中选择 DB1.products.id、DB1.products.name

是否需要为每个数据库(100+租户)定义一个数据源,是否可以在数据服务操作中指定数据库名称作为输入变量?IE。从 ?.products 中选择 ?.products.id、?.products.name

谢谢您的帮助。干杯,欧文

4

1 回答 1

0

如果您的意图是拥有一个通用数据服务,该服务将从专用于每个租户的那些数据库中检索这些租户特定信息,如我所见,实现这一目标的最简洁方法是生成 SQL 查询并使使用的数据源动态可发现.

由于您正在使用 100 多个租户(哇,这是一个巨大的数字 :))显然您可能也为这些租户创建了 100 多个数据库。因此,您需要在每个租户(比如说“testDS”)中创建一个具有相同名称的 carbon 数据源,包装租户特定的数据库配置,例如 JDBC URL、凭据等。接下来,如果您想出了您的数据服务将使用的数据源配置为上述数据源,在运行时,它将正确选择适当的租户特定数据源,因为数据源功能完全支持多租户。这将阻止您将数据库名称等传递给 SQL 查询,并使您的数据服务配置更干净、更通用,从而使其更易于维护。

于 2013-02-23T19:12:23.493 回答