简介TiDB Serverless branching功能及应用场景

网友投稿 528 2024-03-10



TiDB Serverless 作为 TiDB 的云上产品。提供了一种完全托管的、自动扩缩容的 TiDB 部署方式,可以让用户无需关心底层节点,即可快速使用 TiDB 数据库,并根据应用负载自动扩缩容。TiDB Serverless 在 2023.07.10 正式 GA,同时带来了 TiDB Serverless branching.

简介TiDB Serverless branching功能及应用场景

Serverless branching 也称 database branching(数据库分支),随着 Serverless 数据库的不断发展逐渐进入我们的视野中。

如同 Git 分支,数据库分支允许你像代码分支一样为数据库创建分支。原始数据库将被称为新分支的 parent,新分支与父分支相互隔离,这使得你可以自由地使用新分支而不必担心对父分支产生影响。根据数据是否被克隆,数据库分支可以分为 schema branching 与 data branching。前者仅克隆 schema 而后者同时克隆 schema 与 data。

在 TiDB Serverless branching 中,以 cluster 为 parent,基于写时复制(copy-on-write)技术提供分钟级别的 data branching 特性。详情可以参考官方文档

如何使用 branching

Branching 仍处于发展状态,最佳实践还在摸索阶段。目前 branching 一般用于以下场景:

容灾备份:朴素的说,branching 可以被视为一次手动的备份。

开发:branching 可以为每个开发者提供一个可随意修改,与线上数据一致的数据库,提高开发效率。

测试:branching 完全克隆线上数据,非常适合作为 bug fix 或者新 feature 上线前的测试数据库。

部署:部署基于 branching 的 staging/dev 环境,更好的模拟线上环境。甚至我们还可以基于 branching 构建每位开发人员的 personal dev 环境,减少开发人员本地构建部署的压力。

此外,如果你的代码托管于 GitHub,还可以使用 TiDB Serverless branching 提供的GitHub integration。该集成通过关联 GitHub 仓库和 TiDB Serverless 来帮助您在该仓库构建一套基于 branching 的 CI/CD workflow。在关联之后,branching bot 会被启用,为每个 PR 创建一个 branch,同时创建一个 GitHub comment 和 check run 跟踪 branch 的状态。

创建完 branch 之后呢?为了让整个 workflow 更顺畅,你可以使用 wait-for-tidbcloud-branch。它是一个与该集成配套使用的 action,会在 Github action 中等待 branch 完成并生成该 branch 的连接信息。这样你就可以基于该连接信息用新创建的 branch 进行 PR 的测试。tidbcloud-branch-gorm-example 是一个 gorm 框架的例子。相信未来会有更多语言与框架的 example。

TiDB Serverless branching 的优缺点

除了 TiDB Serverless branching,一些知名 Serverless 数据库厂商同样提供了 branching 能力。相比于他们, TiDB Serverless branching 有哪些优点与不足呢?我们先来看一下他们的简单对比:

基础对比:

vendor数量限制data branch 创建时间PlanetScalefree: 1 schema branch $29: 5 schema branches $39: 2 data branches/不清楚Neonfree:10 data branches pro plan:unlimited data branchesfree: 3GB storage + 共享的 vCPU pro plan: 按使用付费秒级Xatafree:15 data branches 付费:每 $8 增加 5 data branchesdata branch 只能 copy 10,000 行2 分钟TiDB Serverlessfree:5 data branches 付费:由于是 beta 还没有相关计费free: 5GB storage + unlimited RU1-5 分钟,视数据大小而定。 (36GB 3.5min)

特性对比:

vendorcreate branch from branchcreate from specify timepromote integrationPlanetScale内建 workflowNeonVercel, Cloudflare workerXataGithub, Vercel, NetlifyTiDB ServerlessGithub

TiDB Serverless branching 能支持 create branch from branch 与 create from specify time,只是因为处于 beta 状态所以还未暴露相关能力。由于 TiDB Serverless 以 cluster 为 main 数据库,因此提升 branch 为 main (root branch) 的操作并不适用于 TiDB Serverless。

总结

TiDB Serverless branching 总结:

数据复制:TiDB Serverless branching 基于内部 native fork 实现 cow,拥有较快的数据复制速度(数据量越大速度提升越明显)。而 PlanetScale 与 Xata 有明显的限制:前者太贵,后者复制的数据量有限制。

特性:TiDB Serverless branching 具有支持各种特性的能力,相信在 beta 后会陆续暴露出来。

workflow:TiDB Serverless branching 基于 Github integration 建立了一套 CI/CD workflow。Neon 虽有一些 blog 介绍 workflow,但没有相关集成。PlanetScale 内建一套更改 schema 的 workflow,TiDB Serverless 支持 online DDL,没有必要做相关的 workflow。

生态:TiDB Serverless branching 推出未多久,但自公布就有与 Github 的集成。相信后续也会推出与 Vercel, Netlify, Cloudflare worker 等平台的集成。

价格:TiDB Serverless branching 还没有相关计费策略。但预估会比 PlanetScale 更便宜,且比 Neon 更 Serverless。如果要使用 neon branching 需要分配 endpoint。endpoint 需独占一定的 cpu 与内存,粒度较粗。而 TiDB Serverless 则是完全的 pay as you go,相信 TiDB Serverless branching 也会延续这样的计费策略。

限制:Branch 从属于 cluster,无法 promote branch 为 main。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:等保三级测评 TiDB加密通信实践分享
下一篇:索引加速功能提升10倍性能 TiDB V6.1.0-V7.1.0建索引速度对比
相关文章