头疼管理 Postgres Schema?开源工具大盘点!

Postgres 前不久荣获了 DB-Engines 2023 年度数据库的桂冠,其生态也在蓬勃发展,不过,迁移 Postgres 数据库 schema 仍旧令人头疼,不是一件好办的事儿。 本文中,我们盘点几个好用的用于 Postgres 的开源数据库 schema 迁移工具。

Bytebase

Bytebase 是一款为研发团队准备的数据库 CI/CD 工具,专为开发者和 DBA 打造,用于协同处理数据库变更。Bytebase 使用 Go 和 TypeScript 编写。

Bytebase 提供了一系列可配置的 SQL 语法检查规则,用于检测 SQL 反模式,例如可以约束 NOT NULL。

除了管理数据库变更,Bytebase 还提供带有数据访问控制、动态数据脱敏和审计日志的 SQL 编辑器,以收口查询路径。

Liquibase

Liquibase 可以说是这个领域中最知名的产品。它基于命令行界面,使用 Java 编写。在 Liquibase 里,schema 迁移基于 Changeset 和 Changelog。可能由于其悠久历史和 Java 根基,最常用的形式是 XML(不过后来添加了 YAML 和 JSON 支持)。

使用适当注释也可支持普通 SQL 语句。

Flyway

Flyway 是另一个具有悠久历史和庞大客户群的开源项目。其核心是 CLI 和 Java 库。

Flyway 已被 Redgate 收购,但仍保持着开发者至上的初心,这一点在它官网也可以看出来。

Liquibase 和 Flyway 在其提供的功能上非常相似。它们之间的关键区别在于目标受众:Liquibase 面向企业客户,而 Flyway 则更注重开发人员友好和易用性。

Reshape

Reshape 采用了一种新颖的方法来实现零停机模式的 schema 迁移。它基于命令行界面,并使用 Rust 编写。Reshape schema 迁移包括 3 个阶段:

  • 开始迁移 reshape migration start:设置视图和触发器,以确保新旧 schema 同时可用。
  • 逐步发布应用:可以无需停机,逐步推出应用。现有部署将继续使用旧 schema,而新部署将使用新 schema。
  • 完成迁移 reshape migration complete:删除旧 schema 和任何中间数据和触发器。

作者目前正在开发 ReshapeDB,一种全新的数据库,旨在使零停机模式下的 schema 和数据迁移尽可能简单且安全。

顺口一提,pgroll 则是受 Reshape 启发的另一个 Postgres schema 迁移工具。pgroll 基于 CLI,用 Go 编写。它是 Xata 构建的,Xata 是基于 Postgres 的 serverless 数据库平台。

graphile-migrate

graphile-migrate 是个基于 SQL 的,有态度的(opinionated) 只允许前向(roll forward) 的 Postgres schema 迁移工具。 graphile-migrate 也基于 CLI,使用 TypeScript 编写。它还可以与 PostGraphile 一起,在变更数据库时生成 GraphQL schema。

  • graphile-migrate 引入了另一个新颖的想法:commit 和 uncommit 命令。它在开发本地数据库时实现了类似 git 的工作流。
  • graphile-migrate commit 将当前迁移提交到 committed/ 文件夹中,并重置当前迁移,并重置影子数据库。
  • graphile-migrate uncommit 将最新提交从已提交的迁移文件夹中移到当前迁移(假设当前迁移为空),并从本地数据库中删除迁移跟踪条目。

总结


💡 更多资讯,请关注 Bytebase 公号:Bytebase

相关推荐
Java识堂17 小时前
MongoDB架构详解
数据库·mongodb·架构
jran-17 小时前
Redis NoSQL&Redis架构&数据结构
数据库·redis·缓存
文青小兵17 小时前
云计算Linux——数据库MySQL主从复制和读写分离(十七)
linux·运维·服务器·数据库·mysql·云计算
码上有光17 小时前
MySQL基础操作——约束(下)——期末快速复习
数据库·sql·mysql·期末快速复习
fengxin_rou17 小时前
【MySQL 事务并发实战】:隔离级别、MVCC 与幻读问题彻底解
数据库·mysql·事务·并发
bqq1986102617 小时前
非关系型数据库概述
数据结构·数据库·非关系型数据库
@insist1231 天前
信息安全工程师-数据库安全全体系解析与最佳实践
数据库·安全·软考·信息安全工程师·软件水平考试
_ku_ku_1 天前
数据库系统原理 · 事务管理与恢复 · 自学总结
数据库·oracle
lifewange1 天前
Redis 集合(Set)运算完全指南
数据库·chrome·redis
TDengine (老段)1 天前
TDengine RAFT共识协议 — 选举、日志复制、快照与仲裁
android·大数据·数据库·物联网·架构·时序数据库·tdengine