首页 > 其他分享 >简单理解 TiDB Serverless branching

简单理解 TiDB Serverless branching

时间:2023-08-23 12:37:37浏览次数:41  
标签:Serverless branching 数据库 branch TiDB data

作者: shiyuhang0

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 的状态。

简单理解 TiDB Serverless branching_数据库

简单理解 TiDB Serverless branching_数据_02

创建完 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 创建时间

PlanetScale

free: 1 schema branch $29: 5 schema branches $39: 2 data branches

/

不清楚

Neon

free:10 data branches pro plan:unlimited data branches

free: 3GB storage + 共享的 vCPU pro plan: 按使用付费

秒级

Xata

free:15 data branches 付费:每 $8 增加 5 data branches

data branch 只能 copy 10,000 行

2 分钟

TiDB Serverless

free:5 data branches 付费:由于是 beta 还没有相关计费

free: 5GB storage + unlimited RU

1-5 分钟,视数据大小而定。 (36GB 3.5min)

特性对比:

vendor

create branch from branch

create from specify time

promote

integration

PlanetScale




内建 workflow

Neon




Vercel, Cloudflare worker

Xata




Github, Vercel, Netlify

TiDB Serverless




Github

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。

标签:Serverless,branching,数据库,branch,TiDB,data
From: https://blog.51cto.com/u_15550868/7201160

相关文章

  • Oracle-TiDB迁移-生僻字乱码问题
    作者:longzhuquan背景某去O场景业务上线测试,再执行某张表缩字段时报错。现象执行缩字段语句ALTERTABLEschemaname.tablenameMODIFYCOLUMNlicensenovarchar(50)CHARACTERSETutf8mb4COLLATEutf8mb4_binNULLCOMMENT'发动机号';报错信息"incorrectstringvalu......
  • TiDB 源码编译之 TiFlash 篇
    作者:ShawnYan导言TiFlash从去年四月一日开源至今已经过去将近一年半,这段时间里TiFlash从v6.0.0-DMR升级到了v7.3.0-DMR,并增加了若干新特性,比如支持MPP实现窗口函数框架,新增支持若干算子和函数下推,支持AWSS3算存分离等。先来回顾一下TiFlash资源精华帖,【重磅消息】......
  • 基于 Vercel & TiDB Serverless 的 chatbot
    作者:shiyuhang0#前言TiDBServerless去年就有和Vercel的集成了,同时还有一个bookstoretemplate方便大家体验。但个人感觉bookstore不够炫酷,借2023TiDBhackthon的机会,我搞了个maskchatbot,你可以在maskchatbot上选定角色,基于此生成prompt来更好的使用ChatGPT......
  • 我和 TiDB 的故事 | 远近高低各不同
    作者:ShawnYanHi,TiDB,Again!书接上回,《我和TiDB的故事|横看成岭侧成峰》,一年时光如白驹过隙,这一年我好似在TiDB上投入的时间总量不是很多,但是断断续续也一直有在关注使用。当然,数据是造不了假的,看热力图就知道我一直都在,只是每逢周末就忘记登录,所以直到现在也还没达到......
  • TiDB 多集群告警监控-中章-融合多集群 Grafana
    作者:longzhuquan背景随着公司XC改造步伐的前进,越来越多的业务选择TiDB,由于各个业务之间需要物理隔离,避免不了的TiDB集群数量越来越多。虽然每套TiDB集群均有两个详细的监控Dashboard、Grafana,但对于运维来说几十套集群的监控、告警、巡检均需消耗巨大的精力。上篇介绍了......
  • tidb快照备份并发送企业微信机器人通知
    tidb备份使用的是br进行快照备份+日志备份具体代码如下#qiyewx.pyimportjsonfromdatetimeimportdatetimeimportrequestsfromconfigimport*#可以把机器人的配置信息写到一个单独的config里面也可以直接填到脚本里classQiyewx():def__init__(self):......
  • 关于Serverless服务的几点建议
    通过迅速灵活以及容量巨大的弹性伸缩,无服务器架构能很好地解决关键功能的性能瓶颈,但它并不是完美的:不仅需要修改设计去适应它,对熟悉的编程模型进行调整,还要解决诸如规划预算、安全等等问题。但总的来说,它为云上的应用提供了另一种选择——并且具有难以抵挡的诱惑:极大地简化应用......
  • TiDB的连接&目录结构
    TiDB完全兼容MySQL5.7链接协议,所以可以使用mysql客户端来连接,默认端口是4000[root@svr101~]#mysql-uroot-h192.168.31.102-P4000-pEnterpassword:WelcometotheMySQLmonitor.Commandsendwith;or\g.YourMySQLconnectionidis419Serverversion:5.7.25-......
  • TiDB介绍和安装
    首先TiDB是开源分布式关系型数据库,据官方说法它是一款同时支持在线事务处理与在线分析处理(HybridTransactionalandAnalyticalProcessing,HTAP)的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时HTAP、云原生的分布式数据库。很重要的一点是TiDB兼容......
  • TiDB dumpling 导出MySQL 数据遇异常
    最近在学习研究TiDB数据库运维,据介绍逻辑导出工具dumpling是可以兼容MySQL数据库的,于是进行了测试数据库版本信息如下: 新建了两张表t1,t2: 利用存储过程批量插入500000行记录:dropPROCEDUREp_load2;delimiter$$createPROCEDUREp_load2(INtbnamevarchar(64),IN......