写点什么

简单理解 TiDB Serverless branching

  • 2023-08-18
    北京
  • 本文字数:1790 字

    阅读完需:约 6 分钟

作者: shiyuhang0 原文来源:https://tidb.net/blog/22f5d0c8


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

什么是 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 有哪些优点与不足呢?我们先来看一下他们的简单对比:


基础对比:



特性对比:



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。


发布于: 刚刚阅读数: 2
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
简单理解 TiDB Serverless branching_数据库前沿趋势_TiDB 社区干货传送门_InfoQ写作社区