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