mysql - 使用 WS02 从多个 MySQL 数据库中读取相似的表

标签 mysql wso2 wso2-data-services-server

我们得到了一个应用程序,其中通过为每个租户拥有一个唯一的数据库 (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/

相关文章:

用户自己的 Java API 的 WSO2 Api Manager 示例代码

mysql - Vb.net MYSQL 外键约束

php - 在每个页面 View 上插入数据库行

具有序列 1,2,3 的 MySQL 更新值,

ssl - 如何在 AXIS2 客户端中忽略主机名验证或设置验证程序

laravel - ballerina 中的 Composer 和 laravel 安装中使用的 Composer 有什么区别?

wso2 - 从 DSS 服务器 : "Error while writing to the output stream using JsonWriter" ,"detail" :"" 获取 json 响应时出错

sql - 使用数组一次将3个表中的数据插入Postgresql数据库

wso2 - 如何从 ESB 调用 DSS 服务 - 我觉得我已经很接近了,我只需要一点点

Mysql查询顺序