Skip to content

Recipe:Multiple Data Sources

  • 官方来源:examples/recipes/multiple-data-sources
  • 核对日期:2026-05-22

这个示例解决什么问题

如何根据不同租户,把同一套查询路由到不同数据库连接。

官方示例的核心做法

示例在 cube.js 中定义:

  • contextToAppId:按租户生成独立缓存键;
  • driverFactory:根据 securityContext.tenant 返回不同 PostgresDriver。

示例中:

  • Avocado Inc → 本地 Postgres
  • Mango Inc → 另一个远端 Postgres

这说明了什么

1. 多租户不只是行级过滤,还可能是物理数据源隔离

很多 SaaS 场景中,不同客户根本不在同一个数据库里。

2. Cube 可以把“路由到哪个数据库”变成运行时决策

而不是让上游应用自己维护一大堆分支。

3. 缓存隔离必须和数据源路由一起考虑

示例里 contextToAppId 很关键,否则不同租户缓存可能串味。

适合迁移的业务场景

  • 大客户单独数据库;
  • 海外 / 国内分区库;
  • 按环境或业务线拆库;
  • 新旧系统并存阶段的兼容访问。

实战建议

  • 先确定租户标识如何进入 securityContext
  • 设计好 driverFactory 的错误处理;
  • 同时考虑缓存键、刷新任务、监控维度;
  • 不要把“多数据源”与“多 schema”混为一谈。

和教程哪章搭配最好

一句话总结

这个 recipe 的核心价值是:展示 Cube 如何把“按租户切换数据库连接”纳入统一语义层运行时,而不是把路由逻辑散落到应用代码中。

本站基于官方文档与官方代码仓库整理,为第三方非官方中文教程,与 Cube Dev, Inc. 无隶属、授权或背书关系;Cube、Cube Core 及相关标识归其各自权利人所有。