多租户SaaS架构的数据隔离方案:共享表、独立Schema还是独立数据库?
技术领域:SaaS架构|多租户设计
Taocarts作为SaaS平台,需要服务数千个独立店铺。每个店铺的数据必须严格隔离,不能互相泄露,这是SaaS系统的生命线。
SaaS多租户数据隔离有经典的三条路可选。独立数据库:隔离级别最高,但成本也最高,适合企业级大租户。独立Schema:同一数据库不同Schema,隔离级别较高,备份恢复粒度适中,适合中型租户。共享表租户ID:在同一张表中用租户ID区分数据,成本最低,但隔离级别相对较低,适合免费版或小租户。
Taocarts采用混合方案,按租户规模和付费等级分层隔离。免费版使用共享表租户ID,降低入门门槛;付费版分配独立Schema,提供更好的性能和隔离;企业级租户分配独立数据库实例,满足高安全性要求。
技术上,共享表方案中需要在每个数据库查询中自动注入租户ID作为过滤条件。Taocarts通过请求拦截器从域名或请求头中解析租户ID,存入ThreadLocal,然后在数据访问层自动拼接tenant_id条件。跨租户操作(如平台管理员查看所有店铺数据)通过独立的超级管理员角色和专用接口绕过常规租户隔离,但操作全程记录日志以备审计。