跳转到内容

DS 垂直分库功能概述

随着项目的运行,数据库中的数据可能会逐渐增加,为了提高数据库的读写性能,降低业务模块因数据库异常导致服务不可用的概率,DS提供了垂直分库功能, 用户可以根据实际情况按模块进行垂直分库。

下面以单库单表架构到垂直分库单表架构为例图示:

单库架构 ----------------->>> 垂直分库

1.如何开启垂直分库?

目前开启垂直分库有两种方案,一种是项目开发时能提前预知项目数据量,防患于未然,在新建项目时开启垂直分库功能,另一种是在项目开发时为了节约 开发成本或者不能预知上线后的数据量,在项目正式上线一段时间后发现数据量暴增后开启垂直分库。理想情况下,我们推荐项目在开发阶段就能预知项目上线后 的数据量,在开发阶段就开启垂直分库功能,一些问题就可以在开发阶段暴露,并及时解决。但是在单库架构下上线一段时间后发现需要垂直分库架构的需求 是客观存在的,由于涉及到垂直分库数据库创建,数据迁移等复杂操作,目前阶段MS和DS无法完全自动完成该操作,所以我们提供了一套解决方案,用来解决该问题。

下面来简单概述下这两种方案,详细步骤请参见:DS 垂直分库用户使用手册

1.1 新建项目时开启垂直分库

交付控制台新建环境时,打开垂直分库按钮

切换为运行环境管理 —> 新增

新增环境开启垂直分库

1.2 从单库模式切换到垂直分库模式

从单库模式切换到垂直分库模式需要手动修改元信息以及迁移数据,详细流程在垂直分库用户使用手册中介绍

2.垂直分库使用须知

上面介绍了如果开启垂直分库,但是相对于单库来说,0.16之前的版本在垂直分库场景下存在一些使用限制

2.1 跨库写

  • 0.16版本DS引入了Seata依赖,支持分布式事务,所以可以进行跨库写,前提是需要部署Seata服务,对于业务开发人员来说,和单库开发体验一致,加上DS事务注解即可,不用关心是否跨库。
  • 0.16之前的版本不支持跨库写功能,所以垂直分库前需要结合分库方案检查当前项目中是否存在跨库写逻辑,否则分库后如果存在跨库写DS会抛出相关不支持异常。

2.2 跨库读

0.16版本和0.16之前的版本均支持跨库读,比如业务模块A直接查询业务模块B的模型数据。

2.3 垂直分库开启后不可关闭

垂直分库开启后不可关闭,之所以要开启垂直分库,是为了缓解单库压力,提高业务性能,理论上没有关闭垂直分库的需求,并且关闭垂直分库需要大量的数据迁移。