likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 80

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

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

Bytebase

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

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

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

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

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

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

Liquibase

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

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

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

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

Flyway

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

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

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

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

Reshape

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

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

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

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

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

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

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 将最新提交从已提交的迁移文件夹中移到当前迁移(假设当前迁移为空),并从本地数据库中删除迁移跟踪条目。

总结

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


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

转载自:https://juejin.cn/post/7327467832831655962
评论
请登录