SaaS厂商数据库设计(2)-租户路由

简介: 介绍SaaS厂商数据库设计中的租户如何路由

image.png

租户路由(SaaS Tenant Catalog)

在SaaS多租户场景下,需要将不同租户路由到不同数据库instance以及具体的DB上,上层的APP应用根据租户ID获取到相应的的数据库地址,然后进行后续业务CRUD。一般而言,SaaS厂商将这部分映射关系维护在一个单独的数据库中,这部分数据库称为公共配置库,研发和DBA共同使用和维护,租户路由一般包含以下信息:

1、租户基本信息:租户名称、租户ID、等级、服务状态;

2、地址信息:租户所在的数据库instance ID以及对应的数据库DBName;

公共配置库的作用和书的目录相似,让应用找到正确的数据库,实现租户逻辑隔离和权限基本手段之一。

上层应用在获取到相应的数据库instance ID以及对应的数据库DBName后,需要进行一步定位具体表或者行,针对不同隔离模式下的租户路由,表隔离一般在表上会在表名上带有租户ID,通过业务动态拼接其他信息即可找到相应的业务表。在行隔离模式下,业务上会根据订单+租户ID来计算出相应表名,在业务操作时将tenantID作为过滤条件进行CRUD操作。

对于DBA来说,日常运维操作第一步,一般事通过关键字搜索找到租户ID以及对应的数据库地址,然后连上数据库的数据库进行具体运维操作。

新租户路由

当创建一个新的SaaS租户时,一般会同时结合客户的等级,可能选择创建新的实例或者从当前实例池中寻找最合适的空闲实例进行分配,并且在catalog表中添加新的记录。

租户转移

当租户转移前,将添加相应catalog记录,并置为不生效状态,等正式切换后启用,同时将旧的catalog记录进行删除或者逻辑删除。

统一访问(Uniform Access)

多实例的地址管理,看上去是很简单的问题,但是实际情况下,很多SaaS由于在地址管理方面缺少经验,部分情况更换地址甚至要停止业务,在对接客户过程中发现,客户希望产品提供迁移数据库实例带原实例地址迁移功能,这个方面来说,提供统一地址会是对运维更便捷的解决方案。

数据层统一路由

数据层提供统一访问代理,可以降低地址管理成本,对外屏蔽底层数据结构,尤其在多租户架构设计不同隔离模式下提供了一致性能力。在统一访问方面,业界有开源的MariaDB MaxScale,MariaDB MaxScale是一种数据库代理,具有可伸缩性和安全性,同时通过将其与基础数据库基础架构分离来简化应用程序开发,提供的Schema-based sharding路由为数据访问提供了DB隔离级别的访问代理。

数据库层统一路由需要感知业务,在DB隔离模式下,由于只需要具体的Instance和DB即可定位到具体租户,但是在表隔离和行隔离模式下,需要配置相对复杂的路由规则,这部分需要根据业务进行定制开发。

在SaaS多租户场景如何确定一个租户所在的数据源,作为SaaS数据存储和CRUD的基础,对后期开发和运维具有较大的影响。

目录
相关文章
|
5月前
|
Oracle 关系型数据库 数据库
OceanBase数据库常见问题之租户创建后想要改字符集如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
5月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
2月前
|
Oracle 数据管理 关系型数据库
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
|
4月前
|
DataWorks 监控 关系型数据库
DataWorks产品使用合集之在 DataWorks 中删除了 la_saas_rds 数据库,为什么其他数据库的同步任务无法打开或添加新表同步
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
搜索推荐 Java 数据库
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(3) -oauth2 登陆源码分析以及扩展添加tenantId属性
|
5月前
|
Java 数据库 Nacos
spring-gateway基于数据库 + nacos 的动态路由
spring-gateway基于数据库 + nacos 的动态路由
170 0
|
5月前
|
JavaScript 前端开发 中间件
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
189 0
|
11月前
|
人工智能 语音技术
|
存储 安全 数据挖掘
数据库厂商智臾科技加入龙蜥社区,打造多样化的数据底座
智臾科技与龙蜥社区携手实现更高级别的互操作性和协同效应,为用户创造卓越价值和体验。
|
搜索推荐 前端开发 Java
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(八)saas平台篇-解决不同租户针定制化开发问题(2) -挂载自定义登陆以及业务端完整代码
下一篇
无影云桌面