Skip to content

Recipe:Using Different Schemas for Tenants

  • 官方来源:examples/recipes/using-different-schemas-for-tenants
  • 核对日期:2026-05-22

这个示例解决什么问题

如何让不同租户不仅使用不同数据,还使用不同的数据模型目录。

官方示例的核心做法

示例在 cube.js 中定义:

  • contextToAppId:按租户隔离缓存
  • repositoryFactory:根据 securityContext.tenant 选择不同 schema 目录
  • scheduledRefreshContexts:分别为不同租户声明刷新上下文

这说明不同租户不仅可能:

  • 数据源不同;
  • 连语义模型本身也可能不同。

这说明了什么

1. 多租户不仅有“同模型不同数据”,也有“不同模型不同数据”

某些大客户场景里,字段、表、甚至业务定义都可能存在差异。

2. 模型仓库本身也可以按租户动态切换

这对复杂 B2B SaaS 很重要。

3. 刷新任务也必须租户化

示例里的 scheduledRefreshContexts 很关键,否则不同租户的预聚合不会被独立刷新。

适合迁移的业务场景

  • 大客户专属 schema;
  • 不同地区产品版本差异较大;
  • 平台型产品允许客户扩展专有字段;
  • 兼容历史租户模型与新租户模型并存。

实战建议

  • 不要在一个超大统一模型里硬编码所有租户特例;
  • 评估“共享模型 + 局部差异”与“完全分目录”的维护成本;
  • 刷新、缓存、部署、测试都要按租户考虑;
  • 这种模式很强,但复杂度也明显更高。

和教程哪章搭配最好

一句话总结

这个 recipe 的核心价值是:展示 Cube 不仅能按租户切换数据源,还能按租户切换语义模型本身,从而支撑更复杂的多租户分析平台。

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