Git 风格数据库工作流

像分支代码一样分支你的数据库

借助写时复制存储,在几秒内创建隔离的 PostgreSQL 副本。每位开发者、每个 PR 和每次测试都可以拥有自己的数据库。

什么是数据库分支?

数据库分支可以在不复制全部存储的情况下创建一个包含真实数据的隔离副本。

Vela 使用写时复制,因此源库与分支库共享未变化的数据块。

这让数据库分支比 dump/restore 工作流更快、更省成本。

数据库分支能做什么

用安全、接近生产的环境替代慢速克隆和共享 staging。

开发者隔离

让每位开发者都拥有独立的完整数据库副本,不再争用共享开发库。

  • 几秒内创建
  • 使用类生产数据
  • 写入彼此隔离

每个 PR 一个分支

为每个 Pull Request 创建数据库分支,让 QA 同时验证代码和数据变更。

  • 在 CI 中自动创建
  • 合并后自动删除
  • 不再共享 staging

迁移测试

先在生产克隆上执行架构变更,提前发现完整性和性能问题。

  • 安全测试 ALTER TABLE
  • 验证数据完整性
  • 删除分支即可回滚

故障验证

从指定快照分支,复现问题,并在真实数据上验证修复。

  • 按时间点复现
  • 更安全的热修复
  • 更快的响应

分支与传统工作流对比

为什么存储层分支改变了数据库工作流的成本结构。

特性 传统复制 Vela 分支
创建时间 数分钟到数小时 数秒
额外存储 完整额外副本 修改前几乎为零
CI 适用性 慢且脆弱 快速且可 API 驱动
数据真实性 通常过期或合成 接近当前生产数据

常见问题

什么是数据库分支?

数据库分支可以在不复制全部存储的情况下,瞬间创建一个完全隔离的数据库副本,就像 PostgreSQL 数据的 Git branch。

它和 pg_dump / pg_restore 有什么不同?

pg_dump 需要导出再导入完整数据文件。数据库分支借助写时复制直接生成可写副本,速度更快、存储成本更低。

可以在 CI/CD 中使用吗?

可以。分支通过 API 控制,因此流水线可以在任务开始时创建分支,在测试结束后删除。

大数据库也适用吗?

适用。由于分支发生在存储层,大数据库的创建时间也几乎与小数据库相同。

在 Vela 中体验数据库分支

启动一个 Postgres 数据库,创建分支,并在 Sandbox 中直接体验写时复制。