我们得到了一个应用程序,其中通过为每个租户拥有一个唯一的数据库 (MYSQL) 来实现 Multi-Tenancy 。表结构相同。我需要列出每个租户的所有过期产品,我想知道如何将所有这些合并到 WSO2 的一个数据 Web 服务中?我知道我可以创建一个带有表前缀的数据库的查询: 例如。从 DB1.products 中选择 DB1.products.id, DB1.products.name
是否需要为每个数据库(100+ 租户)定义一个数据源,是否可以在数据服务操作中将数据库名称指定为输入变量? IE。从 ?.products 中选择 ?.products.id, ?.products.name
感谢您的帮助。 干杯, 欧文
最佳答案
如果您打算拥有一个通用数据服务,该服务将从专用于每个租户的数据库中检索那些租户特定信息,正如我所见,实现此目的最简洁的方法是生成您的 SQL 查询并使用数据源动态可发现。
由于您使用了 100 多个租户(哇,这是一个巨大的数字 :))显然您可能也为这些租户创建了 100 多个数据库。因此,您需要在每个租户中创建一个具有相同名称的碳数据源(假设为“testDS”),包装租户特定的数据库配置,例如 JDBC URL、凭据等。接下来,如果您提出了数据服务将使用的数据源配置为上述数据源,在运行时,它会正确选择适当的租户特定数据源,因为数据源功能完全支持 Multi-Tenancy 。这将阻止您将数据库名称等传递给 SQL 查询,并使您的数据服务配置更干净、通用,从而使其更易于维护。
关于mysql - 使用 WS02 从多个 MySQL 数据库中读取相似的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14453364/