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