SaaS厂商数据库设计(3)-租户元数据管理&数据管理

本文涉及的产品
数据管理 DMS,安全协同 3个实例 3个月
推荐场景:
学生管理系统数据库
简介: SaaS厂商设计中元数据管理以及逻辑视图方式下数据管理

前面提到SaaS作租户之间处于对等状态,租户分配通过租户路由实现租户之间的数据逻辑隔离,而单个租户之间的数据在逻辑上是相同的,所以在实际开发和运维管理上,一般使用统一的脚本重复执行,例如对所有租户执行运维脚本,通过工具自动化登陆到每一个实例上逐一执行相关脚本,最后实现数据库整体变更,当然也会存在灰度升级场景。

 

元数据模版(MetaData Template)

当一个新的租户创建的时,需要从一个指定的数据库获取关于租户的一套元数据,一般这套元数据与应用程序一般需要一一对应,而保存元数据的数据库一般称为模版库(Template DB),模版库中的脚本和SQL一般会带有租户ID信息,在模版实例化带上租户ID信息,实例后的表结构等与租户强绑定,租户之间实际数据形成了命名隔离从而实现逻辑隔离,这样不仅可以避免当前库内命名冲突,还可以为防止数据库合库后的名称冲突。

image.png

租户创建

当一个新的租户创建时,通过模版库获取对应的版本的数据库结构,执行相应的脚本和SQL,即完成租户模版对应数据的实例化,在不同的租户隔离模式下,对应的执行方式也不完全一样:

1、库隔离模式:在目标实例上完整执行模版SQL和脚本执行,一般在数据库DB名称上带上租户ID信息;

2、表隔离模式:在表隔离模式下部分表存在共用,存在共用的部分需要防止错误的初始化;在非共用的部分,按照模版创建表即可,一般表名上会带上租户信息;

3、行隔离模式:按照前文描述,如果需要改变基表个数,则需要创建新的表,否则一般不需要创建新的表;

租户迁移和租户创建的过程一般类似,在实际过程中,在模版数据实例化后进行对应的数据迁移即可,当然为了保证服务的持续性,需要进行数据实时同步。

数据库变更

随着业务发展,应用和数据库会进行同步修改,数据库和应用不同步的方案,可以参见DDIA向后兼容 (backward compatibility)和向前兼容 (forward compatibility)的介绍和处理方式。

在处理变更时,在SaaS场景下配合应用会进行灰度发布,数据库方面一般使用一个新的变更脚本,在目标租户所在的实例上进行运行,同时会将变更脚本在template DB中进行管理。在数据库版本管理上,开源的有flyway、Bytebase等,同时阿里云数据库也提供DMS版本管理工具,但是工具仍是偏向DBA管理,在SaaS场景下需要结合业务进行一定的二次开发。

数据分布

在SaaS场景下,业务流水表会存在大表的情况,尤其是存在超大租户情况下,例如在电商SaaS场景下,头部主播在双十一日单量可能达到上千万规模,在这种场景下,大表带来的各种问题, 例如DCL、DDL,会影响对于客户的SLA,而且一定程度上存在资源的浪费,所以一般会对数据进行二次分表。

二次分表

在行隔离模式下一般通过增加基表的数目来扩充防止大表情况,在DB隔离和表隔离情况下,一般通过增加租户所属的表来扩充业务流水类数据的存储上限,通常情况下,会根据时间字段来进行切分表,通常切分表模式包含年、月、周、日,切表的依据一般根据业务租户的业务数据量预估和对应的软件服务等级等预先知识。

二次分表模式,通过也可以在模版库中定义,通过合适的切表模式可以很大程度来解决大表的问题,但会带来相应的数据查询问题以及数据查询问题,数据查询需要多个数据表的union all,而对应的数据管理需要在多个表上重复执行。

冷热数据分离

冷热数据和二次分表在减少大表上面存在一定意义上相同的作用,但是冷热数据分离一般更多是从数据时间时间价值和存储成本方面去考虑,通过设置合理的分级存储来降低存储成本的同时,保证数据访问的性能。

在冷热数据分离场景下,会根据不同的业务设置冷热数据的阈值,这部分一般也可以在模版库中定义。从当前实践来看,采用不同的存储模型或引擎,带来的问题是可能是采用不同的访问地址,或不同的访问语言,这部分对于开发来说可能需要学习一套新的技术栈或开发语言或框架。

逻辑视图(表)/库(Logic View(table)/DataBase)

SaaS租户之间建模模型一般是一致,部署一般也是对等的,通过统一的逻辑视图(表)/库可以降低运维成本,减少运维复杂度,减少误操作可能,通过建立以租户为中心的管理方式,主要包含以下几个方面:

1、新增租户:在模版库中寻找相应的模版进行实例化,自动加入到统一视图管理;

2、二次分表:自动合并成逻辑业务表,尤其是新增新的分表时,自动加入到数据管理中;

3、冷热数据分离:自动管理新的分表,在切表模型不变的情况下,归档逻辑不用修改;

4、数据库变更:在数据变更时,减少漏操作的可能;

5、租户迁移:租户迁移时以租户为中心的数据实时同步;

6、监控:建立租户使用画像;

7、...

逻辑视图库/表可以建立为租户为核心的运维和开发模式,需要以租户之间不同业务表之间逻辑对齐,后续新增同一类逻辑表,需要维护新的逻辑表,这部分成本需要SaaS厂商根据自己实际情况来评估。

以租户为中心的数据管理(Data Mangament base on Tenant)

image.png

在SaaS应用中,除了交易型的业务,同时也存在越来越多的数据分析业务,例如一个月店铺的GMV? 此类查询更多的是OLAP查询,从 OLTP 数据库中提取数据(使用定期的数据转储或连续的更新流),转换成适合分析的模式,清理并加载到数据仓库中。将数据存入仓库的过程称为 “抽取 - 转换 - 加载(ETL)”,如上图所示。

以上面的例子为例,在SaaS场景下,需要针对同类租户实施相同的ETL过程,通常的做法,以具体的表\视图作为数据抽取源,然后根据具体的抽取&转化过程(后成为处理流程)。在SaaS场景下,DBA更关心以租户视角去管理流程,例如某个租户的处理流程是否成功,以物理资源(表、视图)为对象构建的处理流程对比,主要有如下几个问题:

1、新增租户:需要将已有处理流程模版复制一份,对该新增租户应用;

2、单个租户新增切表:已应用的流程中进行修改,加入对新增切表的处理;

3、禁用某些处理流程:需要对每一个租户逐一进行禁止操作;

4、...

在这个情况下,可以看到前文中的逻辑视图(表)/库可以构建统一的逻辑视图,在此基础上,建立以租户为中心的数据管理流程,同时由于模版库以及租户路由会自动关联具体的物理实体,在构建处理流程时,更多的以业务逻辑为核心,减少复制粘贴流程带来的重复工作,降低数据管理复杂度。

相关实践学习
MySQL基础-学生管理系统数据库设计
本场景介绍如何使用DMS工具连接RDS,并使用DMS图形化工具创建数据库表。
目录
相关文章
|
4月前
|
Oracle 关系型数据库 数据库
OceanBase数据库常见问题之租户创建后想要改字符集如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
4月前
|
SQL 数据管理 数据库
Python数据库访问与ORM框架:探索高效数据管理的奥秘
在当今信息爆炸的时代,高效地管理和处理海量数据成为了企业和开发者的迫切需求。本文将介绍Python中的数据库访问技术以及ORM框架(如SQLAlchemy),探索其在数据管理方面的重要作用。通过使用Python数据库访问和ORM框架,开发者可以更轻松地操作数据库、提高代码可读性和维护性,并实现高效的数据持久化和查询。
144 0
|
4月前
|
SQL 关系型数据库 数据库
OceanBase数据库常见问题之录入租户管理员密码时,提示密码检验失败如何解决
OceanBase 是一款由阿里巴巴集团研发的企业级分布式关系型数据库,它具有高可用、高性能、可水平扩展等特点。以下是OceanBase 数据库使用过程中可能遇到的一些常见问题及其解答的汇总,以帮助用户更好地理解和使用这款数据库产品。
|
17天前
|
运维 Cloud Native 数据管理
云原生数据库:下一代数据管理的趋势与挑战
【9月更文挑战第4天】云原生数据库作为下一代数据管理的趋势,正以其独特的优势引领着数据管理领域的变革。然而,在快速发展的同时,云原生数据库也面临着诸多挑战。未来,随着技术的不断进步和市场的不断成熟,云原生数据库将不断优化和完善,为企业数字化转型提供更加高效、安全、灵活的数据管理服务。同时,我们也需要关注并解决其面临的挑战,推动云原生数据库技术的健康发展。
|
26天前
|
Oracle 数据管理 关系型数据库
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
云数据库问题之云计算的普及化对中国数据库厂商的全球化发展有什么影响
|
21天前
|
SQL 数据管理 关系型数据库
SQL与云计算:利用云数据库服务实现高效数据管理——探索云端SQL应用、性能优化、安全性与成本效益,为企业数字化转型提供全方位支持
【8月更文挑战第31天】在数字化转型中,企业对高效数据管理的需求日益增长。传统本地数据库存在局限,而云数据库服务凭借自动扩展、高可用性和按需付费等优势,成为现代数据管理的新选择。本文探讨如何利用SQL和云数据库服务(如Amazon RDS、Google Cloud SQL和Azure SQL Database)实现高效的数据管理。通过示例和最佳实践,展示SQL在云端的应用、性能优化、安全性及成本效益,助力企业提升竞争力。
38 0
|
2月前
|
存储 安全 数据管理
云数据库:解锁数据管理的新篇章
云数据库凭借其独特的优点正在改变着数据管理的方式。随着技术的进步和市场需求的增长,云数据库将继续进化和发展,为企业提供更加强大、灵活和安全的数据存储解决方案。通过深入了解云数据库的技术特性和应用场景,企业可以更好地利用这项技术来支持业务创新和发展。
|
3月前
|
弹性计算 安全 数据库
云上攻防-云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
云上攻防-云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
|
4月前
|
Cloud Native 数据管理 关系型数据库
【阿里云云原生专栏】云原生数据管理:阿里云数据库服务的分布式实践
【5月更文挑战第21天】阿里云数据库服务在云原生时代展现优势,应对分布式数据管理挑战。PolarDB等服务保证高可用和弹性,通过多副本机制和分布式事务确保数据一致性和可靠性。示例代码展示了在阿里云数据库上进行分布式事务操作。此外,丰富的监控工具协助用户管理数据库性能,支持企业的数字化转型和业务增长。
216 1
|
3月前
|
存储 边缘计算 数据管理
数据库技术的革新与变革:塑造未来数据管理的新趋势
一、引言 随着信息技术的飞速发展,数据库技术作为数据管理的基础,也在不断革新与变革