我们得到了一个应用程序,其中通过为每个租户提供唯一数据库(MYSQL)来实现多租户。表结构是相同的。我要求列出每个租户的所有过期产品,我想知道如何将所有这些产品合并到WSO2中的一个数据网络服务中?我知道我可以使用前缀表的数据库创建一个查询: 例如。从DB1.products
中选择DB1.products.id,DB1.products.name我是否需要为每个数据库(100多个租户)定义数据源,是否可以在数据服务操作中将数据库名称指定为输入变量?即。从。.products
中选择?.products.id,?。productcts.name感谢您的帮助。 干杯, 欧文
答案 0 :(得分:0)
如果您的目的是拥有一个通用数据服务,可以从专用于每个租户的数据库中检索这些租户特定信息,正如我所见,实现这一目标的最最干净的方法是通过生成SQL查询并使用数据源可动态发现。
由于您使用的是100多个租户(WOW,这是一个巨大的数字:))显然您可能还为这些租户创建了100多个数据库。因此,您需要在每个租户中创建一个具有相同名称的碳数据源(假设“testDS”),包含租户特定的数据库配置,例如JDBC URL,凭据等。接下来,如果您已经提出了数据服务将使用过的数据源配置为上述数据源,在运行时,它将正确选取适当的特定于租户的数据源,因为数据源功能完全支持多租户。这将阻止您将数据库名称等传递给SQL查询,并使您的数据服务配置更加干净,通用,从而使其更易于维护。